All pastes #1807066 Raw Edit

clueless

public text v1 · immutable
#1807066 ·published 2010-02-23 17:47 UTC
rendered paste body
void AdminManager::AwardToTarget(int gmClientNum, Client* target, RewardData& data){    if (!target || !target->GetCharacterData())    {        psserver->SendSystemError(gmClientNum, "Invalid target to award");        return;    }    psCharacter * pchar = target->GetCharacterData();    if(pchar->IsNPC())    {        psserver->SendSystemError(gmClientNum, "You can't use this command on npcs!");        return;    }    if (data.expDelta) // award exp    {        AwardExperienceToTarget(gmClientNum, target, data.player, data.expDelta);    }    if (data.itemName && data.stackCount) // award item    {        csString text;        psItemStats* stats = CacheManager::GetSingleton().GetBasicItemStatsByName(data.itemName);        if (!stats)        {            psserver->SendSystemError(gmClientNum, "You have to specify a valid item name");        }        else if (stats->IsMoney())        {            psserver->SendSystemError(gmClientNum, "Use the 'money' award to award money, not the 'item' one.");        }        else if (stats->GetBuyPersonalise())        {            psserver->SendSystemError(gmClientNum, "You cannot award personalized items.");        }        else if (data.stackCount > MAX_STACK_COUNT)        {            text.Format("The value for the stackCount has to be between 0 and %u", MAX_STACK_COUNT);            psserver->SendSystemError(gmClientNum, text);        }        else // create item        {            psItem* item = stats->InstantiateBasicItem(true);            item->SetStackCount(data.stackCount);            item->SetItemQuality(stats->GetQuality());            item->SetLoaded();            pchar->Inventory().AddOrDrop(item);            psserver->GetCharManager()->UpdateItemViews(target->GetClientNum());            text.Format("You have been awarded %d %s.", data.stackCount, data.itemName.GetDataSafe());            psserver->SendSystemInfo(gmClientNum, text);            text.Format("%s has been awarded %d %s.", target->GetName(), data.stackCount, data.itemName.GetDataSafe());            psserver->SendSystemInfo(gmClientNum, text);            Debug4(LOG_ADMIN, client->GetClientNum(), "Created %d %s for %s\n", data.stackCount, data.itemName.GetDataSafe(), target->GetName());        }    }    if (data.factionName && data.factionDelta) // award faction    {        AdjustFactionStandingOfTarget(gmClientNum, target, data.factionName, data.factionDelta);    }    if (data.skillName) // award skill    {        psSkillInfo * skill = CacheManager::GetSingleton().GetSkillByName(data.skillName);        if(ApplySkill(gmClientNum, target->GetActor(), skill, data.skillDelta, data.relativeSkill, data.skillCap) && target)        {            psserver->GetProgressionManager()->SendSkillList(target, false);        }    }    if (data.type) // award money    {        bool valid = true;        Money_Slots type;        if(data.moneyType == "trias")            type = MONEY_TRIAS;        else if(data.moneyType == "hexas")            type = MONEY_HEXAS;        else if(data.moneyType == "octas")            type = MONEY_OCTAS;        else if(data.moneyType == "circles")            type = MONEY_CIRCLES;        else            valid = false;                if (valid)        {            int value;            if (data.moneyCount)                value = data.moneyCount;            else                value = psserver->rng->Get(INT_MAX-1)+1;            psMoney money;            money.Set(type, value);            pchar->AdjustMoney(money, false);            psserver->GetCharManager()->SendPlayerMoney(target);                        Debug4(LOG_ADMIN, gmClientNum, "Created %d %s for %s\n", value, data.moneyType.GetDataSafe(), pchar->GetCharName());        }        else        {            psserver->SendSystemError(gmClientNum, "Invalid money type");        }    }}