/** * \brief 增加绿色绑定物品 * * 重载了done函数,在用户包裹中增加特定绿色绑定物品 * * \param user: 触发动作的用户 * \param vars: 用户所带的该任务相关变量 * \return SUCCESS表示成功,FAILED表示失败,DISABLE表示禁用某项功能 */ int AddGreenBindItemAction::done (SceneUser* user,Vars* vars) { if (!_odds || selectByTenTh(_odds)) { user->addGreenObjectNum(_id,_value,0,0,true); } return Action::SUCCESS; }
void NpcCarryObject::lostGreen(NpcLostObject &nlo,int value,int value1,int value2,int vcharm,int vlucky) { //mlock.lock(); if (vcharm>1000) vcharm=1000; if (vlucky>1000) vlucky=1000; for(std::vector<CarryObject>::const_iterator it = cov.begin(); it != cov.end(); it++) { //Zebra::logger->debug("%u,%u,%u,%u",(*it).id,(*it).rate,(*it).minnum,(*it).maxnum); zObjectB *ob = objectbm.get((*it).id); if (ob) { if (ob->kind>=101 && ob->kind <=118) { nlo.push_back(*it); } else { switch((*it).id) { case 665: { int vrate = (int)(((*it).rate/value)*(1+value1/100.0f)*(1+value2/100.0f)*(1+vcharm/1000.0f)*(1+vlucky/1000.0f)); if (selectByTenTh(vrate)) { nlo.push_back(*it); } } break; default: { int vrate = (int)(((*it).rate/value)*(1+value1/100.0f)*(1+vcharm/1000.0f)*(1+vlucky/1000.0f)); if (selectByTenTh(vrate)) { nlo.push_back(*it); } } break; } } } } //mlock.unlock(); }