cguseitemfrominventoryhandler.cpp
来自「dk1游戏的原代码文件,完整.编译系统redhat7.3,mysql 3.23 」· C++ 代码 · 共 2,063 行 · 第 1/5 页
CPP
2,063 行
// 坷配官捞甫 粮俊 眠啊茄促. ////cout << "坷配官捞甫 粮俊 眠啊钦聪促" << pSlayer->getX() << " " << pSlayer->getY() << endl; TPOINT pt = pZone->addItem(pMotorcycle, pSlayer->getX(), pSlayer->getY(), false); if(pt.x == -1) { StringStream msg; msg << "坷配官捞甫 粮俊 持阑 荐 绝嚼聪促: " << "ZoneID=" << (int)pZone->getZoneID() << ", X=" << (int)pSlayer->getX() << ", Y=" << (int)pSlayer->getY(); filelog("motorError.txt", "%s", msg.toString().c_str()); //throw Error("坷配官捞甫 粮俊 持阑 荐 绝嚼聪促"); SAFE_DELETE(pMotorcycle); } else { if (!bFound) { // by sigi. 2002.10.14 pStmt->executeQuery( "INSERT INTO MotorcycleObject (ItemID, ObjectID, ItemType, OwnerID, Storage, StorageID, X, Y, OptionType, Durability) Values (%d, %d, %d, '', %d, %d, %d, %d, '', %d)", itemID, pMotorcycle->getObjectID(), itemType, STORAGE_ZONE, pZone->getZoneID(), pt.x, pt.y, durability); } // 坷配官捞甫 Parking Center俊 殿废茄促. MotorcycleBox* pBox = new MotorcycleBox(pMotorcycle, pZone, pt.x, pt.y); Assert(pBox != NULL); g_pParkingCenter->addMotorcycleBox(pBox); } // 八刘 菩哦捞促. GCCannotUse _GCCannotUse; _GCCannotUse.setObjectID(pPacket->getObjectID()); pGamePlayer->sendPacket(&_GCCannotUse); //} /* else { GCCannotUse _GCCannotUse; _GCCannotUse.setObjectID(pPacket->getObjectID()); pGamePlayer->sendPacket(&_GCCannotUse); SAFE_DELETE(pStmt); return; } */ SAFE_DELETE(pStmt); } END_DB(pStmt);#endif __END_DEBUG_EX __END_CATCH}#ifdef __GAME_SERVER__static const Effect::EffectClass FirecrackerEffects[] ={ Effect::EFFECT_CLASS_FIRE_CRACKER_1, // 0 Effect::EFFECT_CLASS_FIRE_CRACKER_2, // 1 Effect::EFFECT_CLASS_FIRE_CRACKER_3, // 2 Effect::EFFECT_CLASS_DRAGON_FIRE_CRACKER, // 3 Effect::EFFECT_CLASS_FIRE_CRACKER_4, // 4 Effect::EFFECT_CLASS_FIRE_CRACKER_VOLLEY_1, // 5 Effect::EFFECT_CLASS_FIRE_CRACKER_VOLLEY_2, // 6 Effect::EFFECT_CLASS_FIRE_CRACKER_VOLLEY_3, // 7 Effect::EFFECT_CLASS_FIRE_CRACKER_VOLLEY_4, // 8 Effect::EFFECT_CLASS_FIRE_CRACKER_WIDE_VOLLEY_1, // 9 Effect::EFFECT_CLASS_FIRE_CRACKER_WIDE_VOLLEY_2, // 10 Effect::EFFECT_CLASS_FIRE_CRACKER_WIDE_VOLLEY_3, // 11 Effect::EFFECT_CLASS_FIRE_CRACKER_WIDE_VOLLEY_4, // 12 Effect::EFFECT_CLASS_FIRE_CRACKER_STORM // 13};#endifvoid CGUseItemFromInventoryHandler::executeFirecraker(CGUseItemFromInventory* pPacket, Player* pPlayer) throw(ProtocolException, Error){ __BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__ ////cout << pPacket->toString().c_str() << endl; Assert(pPacket != NULL); Assert(pPlayer != NULL); // 惑困 窃荐俊辑 俊矾 眉农甫 腹捞 沁扁 锭巩俊, // 俊矾 眉农甫 措气 绵家茄促. GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer); Creature* pCreature = pGamePlayer->getCreature(); PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature); Inventory* pInventory = pPC->getInventory(); Zone* pZone = pPC->getZone(); CoordInven_t InvenX = pPacket->getX(); CoordInven_t InvenY = pPacket->getY(); Item* pItem = pInventory->getItem(InvenX, InvenY); ObjectID_t ItemObjectID = pItem->getObjectID(); // 鸥老俊 胶懦阑 静绰 巴捞扼绊 焊绊 镜 荐 乐绰瘤甫 眉农茄促. // 救傈瘤措俊辑绰 荤侩且 荐 绝促. if ( !isAbleToUseTileSkill( pCreature ) || (pZone->getZoneLevel(pCreature->getX(), pCreature->getY()) & COMPLETE_SAFE_ZONE) || ItemObjectID != pPacket->getObjectID() ) { GCCannotUse _GCCannotUse; _GCCannotUse.setObjectID(pPacket->getObjectID()); pGamePlayer->sendPacket(&_GCCannotUse); return; } Effect::EffectClass effectClass = FirecrackerEffects[ pItem->getItemType() ];/* switch ( pItem->getItemType() ) { case 0: effectClass = Effect::EFFECT_CLASS_FIRE_CRACKER_1; break; case 1: effectClass = Effect::EFFECT_CLASS_FIRE_CRACKER_2; break; case 2: effectClass = Effect::EFFECT_CLASS_FIRE_CRACKER_3; break; case 3: effectClass = Effect::EFFECT_CLASS_DRAGON_FIRE_CRACKER; break; case 4: effectClass = Effect::EFFECT_CLASS_FIRE_CRACKER_4; break; default: Assert(false); break; }*/ if (isStackable(pItem)) { decreaseItemNum(pItem, pInventory, pCreature->getName(), STORAGE_INVENTORY, 0, InvenX, InvenY); } else { // 阶捞瘤 臼绰 酒捞袍篮 官肺官肺 昏力秦霖促. pInventory->deleteItem(InvenX, InvenY); pItem->destroy(); SAFE_DELETE(pItem); } // 酒捞袍阑 荤侩沁促绊 努扼捞攫飘俊 舅赴促. GCUseOK gcUseOK; pGamePlayer->sendPacket( &gcUseOK ); // 俊棋飘甫 父甸绢辑 宏肺靛某胶泼 茄促. GCAddEffectToTile gcAddEffectToTile; gcAddEffectToTile.setObjectID( pCreature->getObjectID() ); gcAddEffectToTile.setEffectID( effectClass ); gcAddEffectToTile.setXY( pCreature->getX(), pCreature->getY() ); gcAddEffectToTile.setDuration( 10 ); // 喊 狼固 绝促 弊成 1檬 pZone->broadcastPacket( pCreature->getX(), pCreature->getY(), &gcAddEffectToTile );#endif __END_DEBUG_EX __END_CATCH}void CGUseItemFromInventoryHandler::executeDyePotion(CGUseItemFromInventory* pPacket, Player* pPlayer) throw(ProtocolException, Error){ __BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__ Assert(pPacket != NULL); Assert(pPlayer != NULL); // 惑困 窃荐俊辑 俊矾 眉农甫 腹捞 沁扁 锭巩俊, // 俊矾 眉农甫 措气 绵家茄促. GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer); Creature* pCreature = pGamePlayer->getCreature(); PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature); Inventory* pInventory = pPC->getInventory(); Zone* pZone = pPC->getZone(); CoordInven_t InvenX = pPacket->getX(); CoordInven_t InvenY = pPacket->getY(); Item* pItem = pInventory->getItem(InvenX, InvenY); DyePotionInfo* pItemInfo = dynamic_cast<DyePotionInfo*>(g_pItemInfoManager->getItemInfo( pItem->getItemClass(), pItem->getItemType() )); bool bInitAllStat = false; if ( pItem->getObjectID() != pPacket->getObjectID() || pItemInfo == NULL ) { sendCannotUse( pPacket, pPlayer ); return; } BYTE func = pItemInfo->getFunctionFlag(); int funcv = pItemInfo->getFunctionValue(); if ( func == DyePotionInfo::FUNCTION_HAIR && pPC->isVampire() ) { sendCannotUse( pPacket, pPlayer ); return; } if ( func == DyePotionInfo::FUNCTION_SKIN && pPC->isOusters() ) { sendCannotUse( pPacket, pPlayer ); return; } switch ( func ) { case DyePotionInfo::FUNCTION_HAIR: { if ( !changeHairColorEx( pPC, funcv ) ) { sendCannotUse( pPacket, pPlayer ); return; } } break; case DyePotionInfo::FUNCTION_SKIN: { if ( !changeSkinColorEx( pPC, funcv ) ) { sendCannotUse( pPacket, pPlayer ); return; } } break; case DyePotionInfo::FUNCTION_SEX: { int code = changeSexEx( pPC ); if ( code != 0 ) { // -_-; 己傈券 酒捞袍父 坷宏璃飘 酒捞叼俊促啊 俊矾内靛 持绢霖促. ぬ.ば GCCannotUse _GCCannotUse; _GCCannotUse.setObjectID((ObjectID_t)code); pPlayer->sendPacket(&_GCCannotUse); return; } else bInitAllStat = true; } break; case DyePotionInfo::FUNCTION_BAT: { if ( !changeBatColorEx( pPC, funcv ) ) { sendCannotUse( pPacket, pPlayer ); return; } } break; default: { sendCannotUse( pPacket, pPlayer ); return; } } GCUseOK gcUseOK; pPlayer->sendPacket( &gcUseOK ); if (isStackable(pItem)) { decreaseItemNum(pItem, pInventory, pCreature->getName(), STORAGE_INVENTORY, 0, InvenX, InvenY); } else { // 阶捞瘤 臼绰 酒捞袍篮 官肺官肺 昏力秦霖促. pInventory->deleteItem(InvenX, InvenY); pItem->destroy(); SAFE_DELETE(pItem); } if ( bInitAllStat ) { // initAllStatAndSendChange( pPC ); pPC->setFlag( Effect::EFFECT_CLASS_INIT_ALL_STAT ); transportCreature( pPC, pPC->getZoneID(), pPC->getX(), pPC->getY(), false ); } else { GCDeleteObject gcDeleteObject; gcDeleteObject.setObjectID( pPC->getObjectID() ); pZone->broadcastPacket( pPC->getX(), pPC->getY(), &gcDeleteObject, pPC ); if ( pPC->isSlayer() ) { Slayer* pSlayer = dynamic_cast<Slayer*>(pPC); Assert( pSlayer != NULL ); GCAddSlayer gcAddSlayer; makeGCAddSlayer( &gcAddSlayer, pSlayer ); pZone->broadcastPacket( pPC->getX(), pPC->getY(), &gcAddSlayer, pPC ); } else if ( pPC->isVampire() ) { Vampire* pVampire = dynamic_cast<Vampire*>(pPC); Assert( pVampire != NULL ); GCAddVampire gcAddVampire; makeGCAddVampire( &gcAddVampire, pVampire ); pZone->broadcastPacket( pPC->getX(), pPC->getY(), &gcAddVampire, pPC ); } else if ( pPC->isOusters() ) { Ousters* pOusters = dynamic_cast<Ousters*>(pPC); Assert( pOusters != NULL ); GCAddOusters gcAddOusters; makeGCAddOusters( &gcAddOusters, pOusters ); pZone->broadcastPacket( pPC->getX(), pPC->getY(), &gcAddOusters, pPC ); } else { Assert( false ); } } return;#endif __END_DEBUG_EX __END_CATCH}#ifdef __GAME_SERVER__bool changeHairColorEx( PlayerCreature* pPC, Color_t color ){ if ( pPC->isSlayer() ) { Slayer* pSlayer = dynamic_cast<Slayer*>(pPC); Assert( pSlayer != NULL ); if ( pSlayer->getHairColor() == color ) return false; pSlayer->setHairColor( color ); char query[25]; sprintf( query, "HairColor=%u", color ); pSlayer->tinysave( query ); return true; } else if ( pPC->isOusters() ) { Ousters* pOusters = dynamic_cast<Ousters*>(pPC); Assert( pOusters != NULL ); if ( pOusters->getHairColor() == color ) return false; pOusters->setHairColor( color ); char query[25]; sprintf( query, "HairColor=%u", color ); pOusters->tinysave( query ); return true; } return false;}bool changeBatColorEx( PlayerCreature* pPC, Color_t color ){ if ( pPC->isVampire() ) { Vampire* pVampire = dynamic_cast<Vampire*>(pPC); Assert( pVampire != NULL ); if ( pVampire->getBatColor() == color ) return false; if ( pVampire->isFlag(Effect::EFFECT_CLASS_TRANSFORM_TO_BAT) ) return false; pVampire->setBatColor( color ); char query[25]; sprintf( query, "BatColor=%u", color ); pVampire->tinysave( query ); return true; } return false;}bool changeSkinColorEx( PlayerCreature* pPC, Color_t color ){ if ( pPC->isSlayer() ) { Slayer* pSlayer = dynamic_cast<Slayer*>(pPC); Assert( pSlayer != NULL ); if ( pSlayer->getSkinColor() == color ) return false; pSlayer->setSkinColor( color );
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?