📄 actionshowguilddialog.cpp
字号:
////////////////////////////////////////////////////////////////////////////////// Filename : ActionShowGuildDialog.cpp// Written By : // Description :////////////////////////////////////////////////////////////////////////////////#include "ActionShowGuildDialog.h"#include "DB.h"#include "Creature.h"#include "NPC.h"#include "GamePlayer.h"#include "Slayer.h"#include "Vampire.h"#include "Ousters.h"#include "Guild.h"#include "GuildManager.h"#include "GuildInfo.h"#include "SharedServerManager.h"#include "Gpackets/GCNPCResponse.h"#include "Gpackets/GCWaitGuildList.h"#include "Gpackets/GCActiveGuildList.h"#include "Gpackets/GSQuitGuild.h"#include "SystemAvailabilitiesManager.h"////////////////////////////////////////////////////////////////////////////////// read from property buffer////////////////////////////////////////////////////////////////////////////////void ActionShowGuildDialog::read (PropertyBuffer & propertyBuffer) throw (Error){ __BEGIN_TRY try { // 促捞倔肺弊狼 辆幅 m_Type = (GuildDialog_t)propertyBuffer.getPropertyInt("Type"); } catch (NoSuchElementException & nsee) { throw Error(nsee.toString()); } __END_CATCH}////////////////////////////////////////////////////////////////////////////////// 咀记阑 角青茄促.////////////////////////////////////////////////////////////////////////////////void ActionShowGuildDialog::execute (Creature * pCreature1, Creature * pCreature2) throw (Error){ __BEGIN_TRY Assert(pCreature1 != NULL); Assert(pCreature2 != NULL); Assert(pCreature1->isNPC()); Assert(pCreature2->isPC()); SYSTEM_RETURN_IF_NOT(SYSTEM_GUILD); Player* pPlayer = pCreature2->getPlayer(); Assert(pPlayer != NULL); GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer); Assert( pGamePlayer != NULL ); Creature* pCreature = pGamePlayer->getCreature(); Assert( pCreature != NULL ); if ( m_Type == GUILD_DIALOG_REGIST ) { //cout << "辨靛 殿废" << endl; //////////////////////////////////////////////////////////////////////////////// // 辨靛 殿废阑 急琶沁阑 版快 //////////////////////////////////////////////////////////////////////////////// Statement* pStmt; Result* pResult; BEGIN_DB { // 促弗 辨靛 家加牢瘤 眉农 pStmt = g_pDatabaseManager->getConnection( "DARKEDEN" )->createStatement(); pResult = pStmt->executeQuery( "SELECT Rank, ExpireDate FROM GuildMember WHERE Name = '%s'", pCreature->getName().c_str() ); if ( pResult->next() ) { // 辨靛 殿废 沥焊啊 乐促. expire date甫 焊绊 搬沥茄促. int Rank = pResult->getInt(1); string ExpireDate = pResult->getString(2); if ( ExpireDate.size() == 7 ) { // 促弗 辨靛俊辑 呕硼茄 版快俊绰 老林老 悼救 辨靛甫 父甸 荐 绝促. if (Rank==GuildMember::GUILDMEMBER_RANK_LEAVE) { // 泅犁绰 辨靛 家加 惑怕啊 酒聪促. 窍瘤父 expire date 俊辑 7老捞 瘤唱具 茄促. time_t daytime = time(0); tm Time; Time.tm_year = atoi( ExpireDate.substr(0,3).c_str() ); Time.tm_mon = atoi( ExpireDate.substr(3,2).c_str() ); Time.tm_mday = atoi( ExpireDate.substr(5,2).c_str() ); if ( difftime( daytime, mktime(&Time) ) < 604800 ) // 角矫埃 7老捞 瘤车绰啊? { SAFE_DELETE( pStmt ); // 矫埃捞 老林老 ...绢录绊 if ( pCreature->isSlayer() ) { GCNPCResponse response; response.setCode( NPC_RESPONSE_TEAM_REGIST_FAIL_QUIT_TIMEOUT ); pPlayer->sendPacket( &response ); } else if ( pCreature->isVampire() ) { GCNPCResponse response; response.setCode( NPC_RESPONSE_CLAN_REGIST_FAIL_QUIT_TIMEOUT ); pPlayer->sendPacket( &response ); } else if ( pCreature->isOusters() ) { GCNPCResponse response; response.setCode( NPC_RESPONSE_GUILD_REGIST_FAIL_QUIT_TIMEOUT ); pPlayer->sendPacket( &response ); } return; } } } else { SAFE_DELETE( pStmt ); // 促弗 辨靛俊 啊涝登绢乐绰 版快 if ( pCreature->isSlayer() ) { GCNPCResponse response; response.setCode( NPC_RESPONSE_TEAM_REGIST_FAIL_ALREADY_JOIN ); pPlayer->sendPacket( &response ); } else if ( pCreature->isVampire() ) { GCNPCResponse response; response.setCode( NPC_RESPONSE_CLAN_REGIST_FAIL_ALREADY_JOIN ); pPlayer->sendPacket( &response ); } else if ( pCreature->isOusters() ) { GCNPCResponse response; response.setCode( NPC_RESPONSE_GUILD_REGIST_FAIL_ALREADY_JOIN ); pPlayer->sendPacket( &response ); } return; } } } END_DB(pStmt) if ( pCreature->isSlayer() ) { Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature); Assert( pSlayer != NULL ); SkillDomainType_t highest = pSlayer->getHighestSkillDomain(); if ( pSlayer->getSkillDomainLevel(highest) < REQUIRE_SLAYER_MASTER_SKILL_DOMAIN_LEVEL ) // 饭骇 50 捞惑 { // 饭骇捞 撤澜 GCNPCResponse response; response.setCode( NPC_RESPONSE_TEAM_REGIST_FAIL_LEVEL ); pPlayer->sendPacket( &response ); return; } if ( pSlayer->getGold() < REQUIRE_SLAYER_MASTER_GOLD ) // 殿废厚 1撅 { // 殿废厚啊 葛磊恩 GCNPCResponse response; response.setCode( NPC_RESPONSE_TEAM_REGIST_FAIL_MONEY ); pPlayer->sendPacket( &response ); return; } if ( pSlayer->getFame() < REQUIRE_SLAYER_MASTER_FAME[highest] ) // 疙己 { // 疙己捞 葛磊恩 GCNPCResponse response; response.setCode( NPC_RESPONSE_TEAM_REGIST_FAIL_FAME ); pPlayer->sendPacket( &response ); return; } // 辨靛 殿废 芒阑 剁快档废 皋矫瘤甫 焊辰促. GCNPCResponse response; response.setCode( NPC_RESPONSE_GUILD_SHOW_REGIST ); response.setParameter( REQUIRE_SLAYER_MASTER_GOLD ); pPlayer->sendPacket( &response ); } else if ( pCreature->isVampire() ) { Vampire* pVampire = dynamic_cast<Vampire*>(pCreature); Assert( pVampire != NULL ); // 殿废 啊瓷 咯何 眉农 if ( pVampire->getLevel() < REQUIRE_VAMPIRE_MASTER_LEVEL ) // 饭骇 50捞惑 { // 饭骇捞 撤澜 GCNPCResponse response; response.setCode( NPC_RESPONSE_CLAN_REGIST_FAIL_LEVEL ); pPlayer->sendPacket( &response ); return; } if ( pVampire->getGold() < REQUIRE_VAMPIRE_MASTER_GOLD ) // 殿废厚 1撅 { // 殿废厚啊 葛磊恩 GCNPCResponse response; response.setCode( NPC_RESPONSE_CLAN_REGIST_FAIL_MONEY ); pPlayer->sendPacket( &response ); return; }// if ( pVampire->getFame() < 500000 ) // 疙己 50父// {// // 疙己捞 葛磊恩// GCNPCResponse response;// response.setCode( NPC_RESPONSE_CLAN_REGIST_FAIL_FAME );// pPlayer->sendPacket( &response );//// return;// } // 辨靛 殿废 芒阑 剁快档废 皋矫瘤甫 焊辰促. GCNPCResponse response; response.setCode( NPC_RESPONSE_GUILD_SHOW_REGIST ); //cout << "辨靛啊涝厚 : " << REQUIRE_VAMPIRE_MASTER_GOLD << endl; response.setParameter( REQUIRE_VAMPIRE_MASTER_GOLD ); //cout << "辨靛啊涝厚(param) : " << response.getParameter() << endl; pPlayer->sendPacket( &response ); } else if ( pCreature->isOusters() ) { Ousters* pOusters = dynamic_cast<Ousters*>(pCreature); Assert( pOusters != NULL ); // 殿废 啊瓷 咯何 眉农 if ( pOusters->getLevel() < REQUIRE_OUSTERS_MASTER_LEVEL ) // 饭骇 50捞惑 { // 饭骇捞 撤澜 GCNPCResponse response; response.setCode( NPC_RESPONSE_GUILD_REGIST_FAIL_LEVEL ); pPlayer->sendPacket( &response ); return; } if ( pOusters->getGold() < REQUIRE_OUSTERS_MASTER_GOLD ) // 殿废厚 1撅 { // 殿废厚啊 葛磊恩 GCNPCResponse response; response.setCode( NPC_RESPONSE_GUILD_REGIST_FAIL_MONEY ); pPlayer->sendPacket( &response ); return; } // 辨靛 殿废 芒阑 剁快档废 皋矫瘤甫 焊辰促. GCNPCResponse response; response.setCode( NPC_RESPONSE_GUILD_SHOW_REGIST ); //cout << "辨靛啊涝厚 : " << REQUIRE_VAMPIRE_MASTER_GOLD << endl; response.setParameter( REQUIRE_OUSTERS_MASTER_GOLD ); //cout << "辨靛啊涝厚(param) : " << response.getParameter() << endl; pPlayer->sendPacket( &response ); } } else if ( m_Type == GUILD_DIALOG_WAIT_LIST ) { //cout << "辨靛 措扁 府胶飘" << endl; GCWaitGuildList gcWaitGuildList;// const HashMapGuild& Guilds = g_pGuildManager->getGuilds_const();// HashMapGuildConstItor itr = Guilds.begin(); GuildRace_t race; if ( pCreature->isSlayer() ) race = Guild::GUILD_RACE_SLAYER; else if ( pCreature->isVampire() ) race = Guild::GUILD_RACE_VAMPIRE; else if ( pCreature->isOusters() ) race = Guild::GUILD_RACE_OUSTERS; else return; g_pGuildManager->makeWaitGuildList( gcWaitGuildList, race ); pPlayer->sendPacket( &gcWaitGuildList ); } else if ( m_Type == GUILD_DIALOG_LIST ) { //cout << "辨靛 府胶飘" << endl; GCActiveGuildList gcActiveGuildList; GuildRace_t race; if ( pCreature->isSlayer() ) race = Guild::GUILD_RACE_SLAYER; else if ( pCreature->isVampire() ) race = Guild::GUILD_RACE_VAMPIRE; else if ( pCreature->isOusters() ) race = Guild::GUILD_RACE_OUSTERS; else return; g_pGuildManager->makeActiveGuildList( gcActiveGuildList, race ); pPlayer->sendPacket( &gcActiveGuildList ); } else if ( m_Type == GUILD_DIALOG_QUIT ) { // 辨靛 呕硼 芒阑 剁快瘤 臼绊 辨靛 呕硼甫 犬沥茄 巴栏肺 埃林茄促. Guild* pGuild = NULL; Statement* pStmt = NULL; Result* pResult = NULL; BEGIN_DB { pStmt = g_pDatabaseManager->getConnection( "DARKEDEN" )->createStatement(); pResult = pStmt->executeQuery( "SELECT GuildID FROM GuildMember WHERE Name = '%s'", pCreature->getName().c_str() ); if ( pResult->next() ) { pGuild = g_pGuildManager->getGuild( pResult->getInt(1) ); } SAFE_DELETE( pStmt ); } END_DB(pStmt) // 辨靛 惑怕啊 劝悼吝捞芭唱 措扁吝捞绢具 茄促. if ( pGuild == NULL || ( pGuild->getState() != Guild::GUILD_STATE_ACTIVE && pGuild->getState() != Guild::GUILD_STATE_WAIT ) ) { GCNPCResponse response; response.setCode( NPC_RESPONSE_QUIT_DIALOGUE ); pPlayer->sendPacket( &response ); return; } // 敲饭捞绢啊 辨靛狼 糕滚牢瘤 犬牢茄促. GuildMember* pGuildMember = pGuild->getMember( pCreature->getName() ); if ( pGuildMember == NULL ) { GCNPCResponse response; response.setCode( NPC_RESPONSE_QUIT_DIALOGUE ); pPlayer->sendPacket( &response ); return; } // 劝悼 吝牢 辨靛狼 付胶磐扼搁 呕硼甫 公矫茄促. if ( pGuildMember->getRank() == GuildMember::GUILDMEMBER_RANK_MASTER && pGuild->getState() == Guild::GUILD_STATE_ACTIVE ) { GCNPCResponse response; response.setCode( NPC_RESPONSE_QUIT_DIALOGUE ); pPlayer->sendPacket( &response ); return; } GSQuitGuild gsQuitGuild; gsQuitGuild.setGuildID( pGuild->getID() ); gsQuitGuild.setName( pCreature->getName() ); g_pSharedServerManager->sendPacket( &gsQuitGuild ); GCNPCResponse response; response.setCode( NPC_RESPONSE_QUIT_DIALOGUE ); pPlayer->sendPacket( &response ); } __END_CATCH}////////////////////////////////////////////////////////////////////////////////// get debug string////////////////////////////////////////////////////////////////////////////////string ActionShowGuildDialog::toString () const throw (){ __BEGIN_TRY string str = "ActionShowGuildDialog"; return str; __END_CATCH}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -