cgsayhandler.cpp
来自「天之炼狱1服务器端源文件游戏服务端不完整」· C++ 代码 · 共 1,958 行 · 第 1/5 页
CPP
1,958 行
// message << "摹橇 阁胶磐 扁瓷捞 OFF 登菌嚼聪促."; gcSystemMessage.setMessage(msg); filelog("change.txt", "[%s]%s", (pGamePlayer==NULL?"Nobody":pGamePlayer->getCreature()->getName().c_str()), gcSystemMessage.toString().c_str()); } } else if(set_type == "chief_monster_rare_item_percent") { int ratio = atoi(set_value.c_str()); if (ratio<0 || ratio>100) return; g_pVariableManager->setChiefMonsterRareItemPercent(ratio); char msg[100]; sprintf( msg, g_pStringPool->c_str( STRID_SET_CHIEF_MONSTER_RARE_ITEM_RATIO ), set_value.c_str() );// message << "摹橇 阁胶磐 饭绢 酒捞袍 风泼 犬伏捞 " << set_value << "%肺 荐沥登菌嚼聪促."; gcSystemMessage.setMessage(msg); filelog("change.txt", "[%s]%s", (pGamePlayer==NULL?"Nobody":pGamePlayer->getCreature()->getName().c_str()), gcSystemMessage.toString().c_str()); } else if(set_type == "newbie_transport_to_guild") { if (set_value=="on") { g_pVariableManager->setNewbieTransportToGuild(true); char msg[100]; sprintf( msg, g_pStringPool->c_str( STRID_SET_NEWBIE_TRANSPORT_TO_GUILD ), "ON" );// message << "瓷仿摹 40楼府, 辨靛肺 捞悼矫虐扁 扁瓷捞 ON 登菌嚼聪促."; gcSystemMessage.setMessage(msg); filelog("change.txt", "[%s]%s", (pGamePlayer==NULL?"Nobody":pGamePlayer->getCreature()->getName().c_str()), gcSystemMessage.toString().c_str()); } else if (set_value=="off") { g_pVariableManager->setNewbieTransportToGuild(false); char msg[100]; sprintf( msg, g_pStringPool->c_str( STRID_SET_NEWBIE_TRANSPORT_TO_GUILD ), "OFF" );// message << "瓷仿摹 40楼府, 辨靛肺 捞悼矫虐扁 扁瓷捞 OFF 登菌嚼聪促."; gcSystemMessage.setMessage(msg); filelog("change.txt", "[%s]%s", (pGamePlayer==NULL?"Nobody":pGamePlayer->getCreature()->getName().c_str()), gcSystemMessage.toString().c_str()); } } else if ( set_type == "xmas_2002" ) { uint l = set_value.find_first_of(' ' , 0); uint m = set_value.find_first_of(' ' , l+1); string value_firecracker = set_value.substr( 0, l); string value_treepart = set_value.substr( l+1, m-l-1 ); string value_giftbox = set_value.substr( m+1 ); g_pVariableManager->setVariable(CHRISTMAS_FIRE_CRACKER_RATIO, value_firecracker); const string& msg1 = g_pVariableManager->toString(CHRISTMAS_FIRE_CRACKER_RATIO); filelog("change.txt", "[%s]%s", (pGamePlayer==NULL?"Nobody":pGamePlayer->getCreature()->getName().c_str()), gcSystemMessage.toString().c_str()); gcSystemMessage.setMessage(msg1); if (pGamePlayer!=NULL) pGamePlayer->sendPacket (&gcSystemMessage); g_pVariableManager->setVariable(CHRISTMAS_TREE_PART_RATIO, value_treepart); const string& msg2 = g_pVariableManager->toString(CHRISTMAS_TREE_PART_RATIO); filelog("change.txt", "[%s]%s", (pGamePlayer==NULL?"Nobody":pGamePlayer->getCreature()->getName().c_str()), gcSystemMessage.toString().c_str()); gcSystemMessage.setMessage(msg2); if (pGamePlayer!=NULL) pGamePlayer->sendPacket (&gcSystemMessage); g_pVariableManager->setVariable(CHRISTMAS_GIFT_BOX_RATIO, value_giftbox); const string& msg3 = g_pVariableManager->toString(CHRISTMAS_GIFT_BOX_RATIO); filelog("change.txt", "[%s]%s", (pGamePlayer==NULL?"Nobody":pGamePlayer->getCreature()->getName().c_str()), gcSystemMessage.toString().c_str()); gcSystemMessage.setMessage(msg3); } else if (set_type =="ItemTaxRatio") { if (pGamePlayer != NULL) { Creature* pCreature = pGamePlayer->getCreature(); Zone* pZone = pCreature->getZone(); if (set_value.size() != 0) { int Tax = atoi(set_value.c_str()); g_pCastleInfoManager->setItemTaxRatio( pZone, Tax ); } else { gcSystemMessage.setMessage( g_pStringPool->getString( STRID_WRONG_ITEM_TAX_RATIO ) ); } } } else { // by sigi. 2002.11.19 VariableType vt = g_pVariableManager->getVariableType( set_type ); if (vt!=VARIABLE_MAX) { g_pVariableManager->setVariable(vt, set_value); const string& msg = g_pVariableManager->toString(vt); gcSystemMessage.setMessage(msg); filelog("change.txt", "[%s]%s", (pGamePlayer==NULL?"Nobody":pGamePlayer->getCreature()->getName().c_str()), gcSystemMessage.toString().c_str()); if ( vt == PREMIUM_HALF_EVENT ) { GCNoticeEvent gcNoticeEvent; if (g_pVariableManager->getVariable( vt )) { gcNoticeEvent.setCode( NOTICE_EVENT_PREMIUM_HALF_START ); } else { gcNoticeEvent.setCode( NOTICE_EVENT_PREMIUM_HALF_END ); } // 蜡丰粮俊父 谎赴促. getZoneByZoneID( 61 )->broadcastPacket( &gcNoticeEvent ); // 其肺唱合悼 getZoneByZoneID( 64 )->broadcastPacket( &gcNoticeEvent ); // 其肺唱巢辑 getZoneByZoneID( 1007 )->broadcastPacket( &gcNoticeEvent ); // 扼季己郴何(官配府付阑) } else if ( vt == TODAY_IS_HOLYDAY ) { GCNoticeEvent gcNoticeEvent; gcNoticeEvent.setCode( NOTICE_EVENT_HOLYDAY ); gcNoticeEvent.setParameter( g_pVariableManager->getVariable(vt) ); g_pZoneGroupManager->broadcast( &gcNoticeEvent ); } } else { gcSystemMessage.setMessage( g_pStringPool->getString( STRID_WRONG_VARIABLE_NAME ) ); } } // 磊脚俊霸父 矫胶袍 皋矫瘤 焊郴扁 (荐沥登菌阑矫) if (pGamePlayer!=NULL) { pGamePlayer->sendPacket (&gcSystemMessage); } __END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGSayHandler::opzone( string msg, int i ) throw( ProtocolException, Error ){ __BEGIN_TRY ////////////// // Zone Info ///////////////* ZoneInfo* pZoneInfo = new ZoneInfo(); pZoneInfo->setZoneID( 10001 ); pZoneInfo->setZoneGroupID( 6 ); pZoneInfo->setZoneType( "NORMAL_FIELD" ); pZoneInfo->setZoneLevel( 0 ); pZoneInfo->setZoneAccessMode( "PUBLIC" ); pZoneInfo->setZoneOwnerID( "" ); pZoneInfo->setPayPlay( "" ); pZoneInfo->setSMPFilename( "team_hdqrs.smp" ); pZoneInfo->setSSIFilename( "team_hdqrs.ssi" ); pZoneInfo->setFullName( "team" ); pZoneInfo->setShortName( "team" ); g_pZoneInfoManager->addZoneInfo( pZoneInfo ); ///////// // Zone ///////// Zone* pZone = new Zone( 10001 ); Assert( pZone != NULL ); ZoneGroup* pZoneGroup = g_pZoneGroupManager->getZoneGroup(6); Assert( pZoneGroup != NULL ); pZone->setZoneGroup( pZoneGroup ); pZoneGroup->addZone( pZone ); pZone->init();*/ __END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGSayHandler::opguild( string msg, int i, Creature* pCreature ) throw( ProtocolException, Error ){ __BEGIN_TRY i = i + 7; uint j = msg.find_first_of( ' ', i ); string command = msg.substr( i, j - i ); string variable = trim( msg.substr( j+1 ) ); GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pCreature->getPlayer()); if ( command == "changeGuildMaster" ) { int a = variable.find_first_of( ' ', 0 ); GuildID_t guildID = atoi( variable.substr( 0, a ).c_str() ); string master = trim( variable.substr( a+1 ) ); Guild* pGuild = g_pGuildManager->getGuild( guildID ); if ( pGuild == NULL ) { GCSystemMessage msg; msg.setMessage( "No such Guild" ); pGamePlayer->sendPacket( &msg ); return; } GuildMember* pGuildMember = pGuild->getMember( master ); if ( pGuildMember == NULL ) { GCSystemMessage msg; msg.setMessage( "No such Guild Member" ); pGamePlayer->sendPacket( &msg ); return; } if ( pGuildMember->getRank() != GuildMember::GUILDMEMBER_RANK_NORMAL && pGuildMember->getRank() != GuildMember::GUILDMEMBER_RANK_SUBMASTER ) { GCSystemMessage msg; msg.setMessage( "New Guild Member must be submaster or normal member" ); pGamePlayer->sendPacket( &msg ); return; } Statement* pStmt = NULL; Result* pResult = NULL; BEGIN_DB { pStmt = g_pDatabaseManager->getConnection( "DARKEDEN" )->createStatement(); if ( pGuild->getRace() == Guild::GUILD_RACE_SLAYER ) { pResult = pStmt->executeQuery( "SELECT Fame, BladeLevel, SwordLevel, GunLevel, HealLevel, EnchantLevel FROM Slayer WHERE Name = '%s'", master.c_str() ); int i = 0; if ( !pResult->next() ) { SAFE_DELETE( pStmt ); return; } Fame_t Fame = pResult->getInt( ++i ); SkillLevel_t BladeLevel = pResult->getInt( ++i ); SkillLevel_t SwordLevel = pResult->getInt( ++i ); SkillLevel_t GunLevel = pResult->getInt( ++i ); SkillLevel_t HealLevel = pResult->getInt( ++i ); SkillLevel_t EnchantLevel = pResult->getInt( ++i ); SkillDomainType_t highestDomain; SkillLevel_t maxLevel; if ( BladeLevel > SwordLevel ) { maxLevel = BladeLevel; highestDomain = SKILL_DOMAIN_BLADE; } else { maxLevel = SwordLevel; highestDomain = SKILL_DOMAIN_SWORD; } if ( GunLevel > maxLevel ) { maxLevel = GunLevel; highestDomain = SKILL_DOMAIN_GUN; } if ( HealLevel > maxLevel ) { maxLevel = HealLevel; highestDomain = SKILL_DOMAIN_HEAL; } if ( EnchantLevel > maxLevel ) { maxLevel = EnchantLevel; highestDomain = SKILL_DOMAIN_ENCHANT; } if ( maxLevel < REQUIRE_SLAYER_MASTER_SKILL_DOMAIN_LEVEL ) { SAFE_DELETE( pStmt ); GCSystemMessage msg; msg.setMessage( "Master Level Limit Error" ); pGamePlayer->sendPacket( &msg ); return; } if ( Fame < REQUIRE_SLAYER_MASTER_FAME[highestDomain] ) { SAFE_DELETE( pStmt ); GCSystemMessage msg; msg.setMessage( "Master Fame Limit Error" ); pGamePlayer->sendPacket( &msg ); return; } } else if ( pGuild->getRace() == Guild::GUILD_RACE_VAMPIRE ) { pResult = pStmt->executeQuery( "SELECT Level FROM Vampire WHERE Name = '%s'", master.c_str() ); if ( !pResult->next() ) { SAFE_DELETE( pStmt ); return; } Level_t Level = pResult->getInt( 1 ); if ( Level < REQUIRE_VAMPIRE_MASTER_LEVEL ) { SAFE_DELETE( pStmt ); GCSystemMessage msg; msg.setMessage( "Master Level Limit Error" ); pGamePlayer->sendPacket( &msg ); return; } } else if ( pGuild->getRace() == Guild::GUILD_RACE_OUSTERS ) { pResult = pStmt->executeQuery( "SELECT Level FROM Ousters WHERE Name = '%s'", master.c_str() ); if ( !pResult->next() ) { SAFE_DELETE( pStmt ); return; } Level_t Level = pResult->getInt( 1 ); if ( Level < REQUIRE_OUSTERS_MASTER_LEVEL ) { SAFE_DELETE( pStmt ); GCSystemMessage msg; msg.setMessage( "Master Level Limit Error" ); pGamePlayer->sendPacket( &msg ); return; } } else { SAFE_DELETE( pStmt ); return; } SAFE_DELETE( pStmt ); } END_DB(pStmt) GSModifyGuildMember gsPacket; gsPacket.setGuildID( pGuild->getID() ); gsPacket.setName( master ); gsPacket.setGuildMemberRank( GuildMember::GUILDMEMBER_RANK_MASTER ); gsPacket.setSender( pCreature->getName() ); g_pSharedServerManager->sendPacket( &gsPacket ); } __END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGSayHandler::opsave(GamePlayer* pGamePlayer , string msg, int i) throw(ProtocolException, Error){ __BEGIN_TRY __BEGIN_DEBUG_EX GCSystemMessage gcSystemMessage; gcSystemMessage.s
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?