ACMD(do_war) { enum eSettingsWar { GUILD_MINIMUM_SCORE = 100, GUILD_MAXIMUM_SCORE = 9000, GUILD_WAR_MEMBER_LIMIT = 1000, }; CGuild * g = ch->GetGuild(); if (!g) return; if (g->UnderAnyWar()) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<±æµå> ÀÌ¹Ì ´Ù¸¥ ÀüÀï¿¡ ÂüÀü Áß ÀÔ´Ï´Ù.")); return; } // Arg1 => Guild Name // Arg2 => War Type // Arg3 => Guild Score // Arg4 => Member Count // Arg5 => Race // Arg6 => Mount // Arg7 => Pet // Arg8 => Costume // Arg9 => GuildWarEnter char arg1[256], arg2[256], arg3[256], arg4[256], arg5[256], arg6[256], arg7[256], arg8[256], arg9[256]; int iType = GUILD_WAR_TYPE_FIELD; nine_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2), arg3, sizeof(arg3), arg4, sizeof(arg4), arg5, sizeof(arg5), arg6, sizeof(arg6), arg7, sizeof(arg7), arg8, sizeof(arg8), arg9, sizeof(arg9)); if (!*arg1 || !*arg2 || !*arg3 || !*arg4 || !*arg5 || !isnhdigit(*arg3) || !isnhdigit(*arg4) || !isnhdigit(*arg5) || !isnhdigit(*arg6) || !isnhdigit(*arg7)) return; str_to_number(iType, arg2); if (iType >= GUILD_WAR_TYPE_MAX_NUM || iType < GUILD_WAR_TYPE_FIELD) iType = GUILD_WAR_TYPE_FIELD; int iGuildScore = 0; int iGuildMemberCount = 0; str_to_number(iGuildScore, arg3); str_to_number(iGuildMemberCount, arg4); if (iGuildMemberCount < 0) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The guild member count must be greater than zero.")); return; } else if (iGuildMemberCount > GUILD_WAR_MEMBER_LIMIT) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The guild member count mustn't be bigger than 1000")); return; } if (iGuildScore > GUILD_MAXIMUM_SCORE) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The war score maximum could be 9000.")); return; } else if(iGuildScore < GUILD_MINIMUM_SCORE) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The war score minimum could be 200.")); return; } // Race control. BYTE bRace = 0; str_to_number(bRace, arg5); if (!bRace || bRace > JOB_MAX_NUM) { ch->ChatPacket(CHAT_TYPE_INFO, "Karakter seçimi geçersiz."); return; } // Mount control. BYTE bIsMountRiding = 0; str_to_number(bIsMountRiding, arg6); // Pet Control BYTE bSummonPet = 0; str_to_number(bSummonPet, arg7); // Costume BYTE bCostumeEquipment = 0; str_to_number(bCostumeEquipment, arg8); // GuildWarEnter BYTE bGuildWarEnter = 0; str_to_number(bGuildWarEnter, arg9); DWORD dwMasterPID = g->GetMasterPID(); if (dwMasterPID != ch->GetPlayerID()) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<±æµå> ±æµåÀü¿¡ ´ëÇÑ ±ÇÇÑÀÌ ¾ø½À´Ï´Ù.")); return; } CGuild * opp_g = CGuildManager::Instance().FindGuildByName(arg1); if (!opp_g) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<±æµå> ±×·± ±æµå°¡ ¾ø½À´Ï´Ù.")); return; } switch (g->GetGuildWarState(opp_g->GetID())) { case GUILD_WAR_NONE: { if (opp_g->UnderAnyWar()) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<±æµå> »ó´ë¹æ ±æµå°¡ ÀÌ¹Ì ÀüÀï Áß ÀÔ´Ï´Ù.")); return; } int iWarPrice = KOR_aGuildWarInfo[iType].iWarPrice; if (g->GetGuildMoney() < iWarPrice) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<±æµå> Àüºñ°¡ ºÎÁ·ÇÏ¿© ±æµåÀüÀ» ÇÒ ¼ö ¾ø½À´Ï´Ù.")); return; } if (opp_g->GetGuildMoney() < iWarPrice) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<±æµå> »ó´ë¹æ ±æµåÀÇ Àüºñ°¡ ºÎÁ·ÇÏ¿© ±æµåÀüÀ» ÇÒ ¼ö ¾ø½À´Ï´Ù.")); return; } } break; case GUILD_WAR_SEND_DECLARE: { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ÀÌ¹Ì ¼±ÀüÆ÷°í ÁßÀÎ ±æµåÀÔ´Ï´Ù.")); return; } break; case GUILD_WAR_RECV_DECLARE: { if (opp_g->UnderAnyWar()) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<±æµå> »ó´ë¹æ ±æµå°¡ ÀÌ¹Ì ÀüÀï Áß ÀÔ´Ï´Ù.")); g->RequestRefuseWar(opp_g->GetID()); return; } } break; case GUILD_WAR_RESERVE: { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<±æµå> ÀÌ¹Ì ÀüÀïÀÌ ¿¹¾àµÈ ±æµå ÀÔ´Ï´Ù.")); return; } break; case GUILD_WAR_END: return; default: ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<±æµå> ÀÌ¹Ì ÀüÀï ÁßÀÎ ±æµåÀÔ´Ï´Ù.")); g->RequestRefuseWar(opp_g->GetID()); return; } if (!g->CanStartWar(iType)) { if (g->GetLadderPoint() == 0) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<±æµå> ·¹´õ Á¡¼ö°¡ ¸ğÀÚ¶ó¼­ ±æµåÀüÀ» ÇÒ ¼ö ¾ø½À´Ï´Ù.")); sys_log(0, "GuildWar.StartError.NEED_LADDER_POINT"); } else if (g->GetMemberCount() < GUILD_WAR_MIN_MEMBER_COUNT) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<±æµå> ±æµåÀüÀ» Çϱâ À§Çؼ± ÃÖ¼ÒÇÑ %d¸íÀÌ ÀÖ¾î¾ß ÇÕ´Ï´Ù."), GUILD_WAR_MIN_MEMBER_COUNT); sys_log(0, "GuildWar.StartError.NEED_MINIMUM_MEMBER[%d]", GUILD_WAR_MIN_MEMBER_COUNT); } else sys_log(0, "GuildWar.StartError.UNKNOWN_ERROR"); return; } do { if (g->GetMasterCharacter() != NULL) break; CCI *pCCI = P2P_MANAGER::instance().FindByPID(g->GetMasterPID()); if (pCCI != NULL) break; ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<±æµå> »ó´ë¹æ ±æµåÀÇ ±æµåÀåÀÌ Á¢¼ÓÁßÀÌ ¾Æ´Õ´Ï´Ù.")); g->RequestRefuseWar(opp_g->GetID()); return; } while (false); do { if (opp_g->GetMasterCharacter() != NULL) break; CCI *pCCI = P2P_MANAGER::instance().FindByPID(opp_g->GetMasterPID()); if (pCCI != NULL) break; ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<±æµå> »ó´ë¹æ ±æµåÀÇ ±æµåÀåÀÌ Á¢¼ÓÁßÀÌ ¾Æ´Õ´Ï´Ù.")); g->RequestRefuseWar(opp_g->GetID()); return; } while (false); g->RequestDeclareWar(opp_g->GetID(), iType, iGuildScore, iGuildMemberCount, bRace, (bIsMountRiding == 0) ? true : false, (bSummonPet == 0) ? true : false, (bCostumeEquipment == 0) ? true : false, (bGuildWarEnter == 0) ? true : false); }