Beispiel #1
0
/**     
 * \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;
}
Beispiel #2
0
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();
}