void QuestTeleport(int aIndex, int Type) { if(gObj[aIndex].Money < 20000) { LogAdd("[%s][%s] [QUEST] short of zen for teleport quest map.\n", gObj[aIndex].AccountID, gObj[aIndex].Name); return; } if(Type == 0) { gObjTeleport(aIndex, 41, 36, 90); LogAdd("[%s][%s] [QUEST] Teleport to Barracks.\n", gObj[aIndex].AccountID, gObj[aIndex].Name); } if(Type == 1) { gObjTeleport(aIndex, 42, 96, 187); LogAdd("[%s][%s] [QUEST] Teleport to Refuge.\n", gObj[aIndex].AccountID, gObj[aIndex].Name); } #if (WL_PROTECT==1) VM_START_WITHLEVEL(3) g_CashShop.SystemProcessesScan(); VM_END #endif gObj[aIndex].Money -= 20000; GCMoneySend(aIndex, gObj[aIndex].Money); }
void CHatcheryEvent::Npc(int aIndex,int Monster) { if(!(this->m_HatcheryEvent.m_EventState == STATE_OPEN)) { if(this->m_HatcheryEvent.m_EventState == STATE_CLOSED) { ChatTargetSend(&gObj[Monster], "Hatchery is closed now, try again later.", aIndex); } else { ChatTargetSend(&gObj[Monster], "Hatchery is running now, try again later.", aIndex); } } else { for (int i = 0; i < this->m_HatcheryEvent.m_UserCount; i++) { if(this->m_HatcheryEvent.m_UserIndex[i] == aIndex) { gObjTeleport(aIndex,5,160,25); return; } } if(this->m_HatcheryEvent.m_UserCount >= MAX_PLAYERCOUNT) { ChatTargetSend(&gObj[Monster], "Hatchery is already full!", aIndex); return; } if(AddTab[aIndex].m_Resets < MIN_RESET) { ChatTargetSend(&gObj[Monster], "You need minimum 1 reset to join!", aIndex); return; } if(this->CheckTicket(aIndex) == 0) { ChatTargetSend(&gObj[Monster],"You don't have Hatchery Key.",aIndex); return; } this->m_HatcheryEvent.m_UserIndex[this->m_HatcheryEvent.m_UserCount] = aIndex; this->m_HatcheryEvent.m_UserLevel[this->m_HatcheryEvent.m_UserCount] = gObj[aIndex].Level; this->m_HatcheryEvent.m_UserDefense[this->m_HatcheryEvent.m_UserCount] = gObj[aIndex].m_Defense; this->m_HatcheryEvent.m_UserDamageMin[this->m_HatcheryEvent.m_UserCount] = (gObj[aIndex].Dexterity + gObj[aIndex].Strength + gObj[aIndex].Vitality + gObj[aIndex].Energy) / 25; // NEW this->m_HatcheryEvent.m_UserDamageMax[this->m_HatcheryEvent.m_UserCount] = (gObj[aIndex].Dexterity + gObj[aIndex].Strength + gObj[aIndex].Vitality + gObj[aIndex].Energy) / 20; // NEW this->m_HatcheryEvent.m_UserCount++; gObjTeleport(aIndex,5,160,25); gObj[aIndex].MapNumber = 3; Log.Info("[HatcheryEvent] (%s)(%s) Registred User", gObj[aIndex].AccountID, gObj[aIndex].Name); } }
void CPlayer::Teleport(int Map,int X, int Y) { char Nickn[11]; gObjTeleport(this->aIndex,Map,X,Y); this->GetName(Nickn); Console.Write("[Teleport][Index: %d][Nick: %s] Map %d, X %d, Y %d",this->aIndex,Nickn,Map,X,Y); }
void cTvTEvent::DivisionTeam() { int iTeam = 1; int Index = 0; for(int i=0;i<this->TotalPlayer;i++) { Index = this->ReturnMaxReset(); this->Player[Index].Team = iTeam; if(iTeam == 1) iTeam = 2; else iTeam = 1; } for(int n=OBJ_STARTUSERINDEX;n<OBJMAX;n++) { LPOBJ sObj = &gObj[n]; if(sObj->Connected != PLAYER_PLAYING) continue; if(this->Player[n].tEvent == false) continue; if(this->Player[n].Team == 1) { gObjTeleport(n,this->WaitingMap,this->BluTeamX,this->BluTeamY); if(this->DisplayCommands == 1) { gObj[n].m_Change = 405; //"MU Allies" Blue gObjViewportListProtocolCreate(&gObj[n]); } MsgNormal(n,"[BlueTeam]: %d Vs [RedTeam]: %d",this->ScoreBlue,this->ScoreRed); } else if(this->Player[n].Team == 2) { gObjTeleport(n,this->WaitingMap,this->RedTeamX,this->RedTeamY); if(this->DisplayCommands == 1) { gObj[n].m_Change = 404; //"MU Allies" Red gObjViewportListProtocolCreate(&gObj[n]); } MsgNormal(n,"[RedTeam]: %d Vs [BlueTeam]: %d",this->ScoreRed,this->ScoreBlue); } } }
bool cChat::SummonCommand(LPOBJ gObj, int Index) { if(CheckCommand(gObj, 1, GmSystem.cTrace, 0, 0, 0, Index, "Track", "[Name] /track", "")) return true; OBJECTSTRUCT *tObj = (OBJECTSTRUCT*)OBJECT_POINTER(Index); gObjTeleport(tObj->m_Index, gObj->MapNumber, (int)gObj->X, (int)gObj->Y); TNotice.SendNotice(Index,1,"[Track] You successfully summoned %s",tObj->Name); if(GmSystem.IsAdmin(gObj->Name) == 1) TNotice.SendNotice(Index,1,"[Track] You was summoned to [Admin] %s", gObj->Name); else if(GmSystem.IsAdmin(gObj->Name) == 2) TNotice.SendNotice(Index,1,"[Track] You was summoned to [GM] %s", gObj->Name); return true; }
void cTvTEvent::NPCClick(LPOBJ lpNpc, LPOBJ lpObj) { if(!this->Enable)return; if(lpNpc->Class == this->NPC) { if(!this->Waiting) { MsgNormal(lpObj->m_Index,"[TvT Event] Closed"); return; } this->Player[lpObj->m_Index].tEvent = true; this->Player[lpObj->m_Index].Available = true; this->TotalPlayer++; gObjTeleport(lpObj->m_Index,this->WaitingMap,this->WaitingX,this->WaitingY); } }
int CGMMng::ManagementProc(LPOBJ lpObj, char* szCmd, int aIndex) { char * szCmdToken; char string[256]={0}; char szId[20]={0}; char * pId = szId; int len = strlen(szCmd); int command_number; if ( len < 1 || len > 250 ) { return 0; } strcpy_s(string, sizeof(string), szCmd); szCmdToken = InitTokenString(string); command_number = this->GetCmd(szCmdToken); switch ( command_number ) { case 331: { pId = this->GetTokenString(); if (pId == NULL) return 0; g_CastleSiege.OperateGmCommand(lpObj->m_Index, 0, pId); } break; case 332: { pId = this->GetTokenString(); if (pId == NULL) return 0; g_CastleSiege.OperateGmCommand(lpObj->m_Index, 1, pId); } break; case 333: { pId = this->GetTokenString(); if (pId == NULL) return 0; g_CastleSiege.OperateGmCommand(lpObj->m_Index, 2, pId); } break; case 334: { pId = this->GetTokenString(); if (pId == NULL) return 0; g_CastleSiege.OperateGmCommand(lpObj->m_Index, 3, pId); } break; case 335: { pId = this->GetTokenString(); if (pId == NULL) return 0; g_CastleSiege.OperateGmCommand(lpObj->m_Index, 4, pId); } break; case 336: { pId = this->GetTokenString(); if (pId == NULL) return 0; g_CastleSiege.OperateGmCommand(lpObj->m_Index, 5, pId); } break; case 337: { pId = this->GetTokenString(); if (pId == NULL) return 0; g_CastleSiege.OperateGmCommand(lpObj->m_Index, 6, pId); } break; case 338: { pId = this->GetTokenString(); if (pId == NULL) return 0; g_CastleSiege.OperateGmCommand(lpObj->m_Index, 7, pId); } break; case 340: { pId = this->GetTokenString(); if (pId == NULL) return 0; g_CastleSiege.OperateGmCommand(lpObj->m_Index, 8, pId); } break; case 217: //116: { if ( (lpObj->Authority & 2) != 2 && (lpObj->Authority & 0x20) != 0x20 ) { return 0; } LogAdd("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "FIRECRACK."); int x = lpObj->X; int y = lpObj->Y; PMSG_SERVERCMD pMsg; PHeadSubSetB((LPBYTE)&pMsg,0xF3,0x40, sizeof(pMsg)); pMsg.CmdType = 0; for ( int i=0;i<15;i++) { pMsg.X = x+Random(0,4)*2 - 4; pMsg.Y = y+Random(0,4)*2 - 4; MsgSendV2(lpObj,(UCHAR*)&pMsg, sizeof(pMsg)); ::DataSend(lpObj->m_Index ,(UCHAR*)&pMsg, sizeof(pMsg)); } } break; case 216: //115: { if ( (lpObj->Authority & 2) != 2 && (lpObj->Authority & 0x20) != 0x20 ) { return 0; } pId = this->GetTokenString(); if ( pId == NULL ) { return 0; } LPOBJ lpTargetObj = gObjFind(pId); if ( lpTargetObj == NULL ) { return 0; } LogAdd("Use GM Command -> [ %s ] [ %s ] [ %s ] / Target : [%s][%s] : %s ", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, lpTargetObj->AccountID, lpTargetObj->Name, "User Watching"); char szTemp[256]; if ( this->WatchTargetIndex == lpTargetObj->m_Index ) { this->WatchTargetIndex = -1; wsprintf(szTemp, "%s : Off guard", lpTargetObj->Name); GCServerMsgStringSend(szTemp, lpObj->m_Index, 1); } else { wsprintf(szTemp, "%s : Start monitoring", lpTargetObj->Name); GCServerMsgStringSend(szTemp, lpObj->m_Index, 1); this->WatchTargetIndex = lpTargetObj->m_Index; } } break; case 215: //114: { if ( (lpObj->Authority & 2) != 2 && (lpObj->Authority & 0x20) != 0x20 ) { return 0; } pId = this->GetTokenString(); if ( pId == NULL ) { return 0; } int map; int iX; int iY; LPOBJ lpTargetObj = gObjFind(pId); int iIndex; if ( lpTargetObj == NULL ) { return 0; } LogAdd("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] / Target : [%s][%s] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, lpTargetObj->AccountID, lpTargetObj->Name, "User Tracking"); map = lpTargetObj->MapNumber; iX = lpTargetObj->X; iY = lpTargetObj->Y; iIndex = lpObj->m_Index; if ( iIndex >= 0 ) { gObjTeleport(iIndex, map, iX, iY); } } break; case 214: //113: { if ( (lpObj->Authority & 2) != 2 ) { return 0; } LogAdd("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "User Stat (connection)"); int lc151 = 0; int lc152 = 400; int iTokenNumber = this->GetTokenNumber(); if ( iTokenNumber > 0 ) { lc151 = iTokenNumber; } int iTokenNumber2 = this->GetTokenNumber(); if ( iTokenNumber2 > 0 ) { lc152 = iTokenNumber2; } gObjSendUserStatistic(lpObj->m_Index, lc151, lc152); } break; case 100: //100: { if ( (lpObj->AuthorityCode &4) != 4 ) { return 0; } pId = this->GetTokenString(); if ( pId == NULL ) { return 0; } int iTargetIndex = gObjGetIndex(pId); if ( iTargetIndex == -1) iTargetIndex=0; if ( iTargetIndex >= 0 ) { LPOBJ lpTargetObj = gObjFind(pId); if ( lpTargetObj == NULL ) { return 0; } LogAdd("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] / Target : [%s][%s] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, lpTargetObj->AccountID, lpTargetObj->Name, "User Disconnect"); LogAdd("%s is forced to disconnect.", pId); CloseClient(iTargetIndex); } } break; case 112: //108: { if ( (lpObj->AuthorityCode &4) != 4 ) { return 0; } LogAdd("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "Guild Disconnect"); pId = this->GetTokenString(); if ( pId == NULL ) { return 0; } _GUILD_INFO_STRUCT * lpGuild = Guild.SearchGuild(pId); int iIndex; if ( lpGuild != NULL ) { for ( int i=0;i<MAX_USER_GUILD ; i++ ) { if ( lpGuild->Index[i] >= 0 ) { iIndex = lpGuild->Index[i]; if ( iIndex >= 0 ) { LogAdd("%s is forced to disconnect.", pId); CloseClient(iIndex); } } } } } break; case 101: //101: /move { char* map_name=this->GetTokenString(); if (map_name == NULL) return 0; int iTokenNumber1 = this->GetTokenNumber(); if ( (lpObj->AuthorityCode &8) == 8 && iTokenNumber1 != -1) { int iTokenNumber2 = this->GetTokenNumber(); int iTokenNumber3 = this->GetTokenNumber(); if (iTokenNumber2 == -1) iTokenNumber2 = 0; if (iTokenNumber3 == -1) iTokenNumber3 = 0; int iIndex = gObjGetIndex(map_name); if ( iIndex >= 0 ) { LPOBJ lpTargetObj = gObjFind(map_name); if ( lpTargetObj == NULL ) { return 0; } LogAdd("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] / Target : [%s][%s] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, lpTargetObj->AccountID, lpTargetObj->Name, "User SetPosition"); gObjTeleport(iIndex, iTokenNumber1, iTokenNumber2, iTokenNumber3); } } else { int lc165 = -1; int lc166 = 0; int lc167 = 0; if ( lpObj->Teleport != 0 ) { GCServerMsgStringSend("You are currently not able to warp.", lpObj->m_Index, 1); return 0; } if ( (lpObj->m_IfState.use) != 0 ) { if ( lpObj->m_IfState.type == 3 ) { lpObj->TargetShopNumber = -1; lpObj->m_IfState.type = 0; lpObj->m_IfState.use = 0; } } if ( lpObj->m_IfState.use > 0 ) { GCServerMsgStringSend("You are currently not able to warp.", lpObj->m_Index, 1); return 0; } if ( gObj[aIndex].IsInBattleGround != false ) { GCServerMsgStringSend("You are currently not able to warp.", lpObj->m_Index, 1); return 0; } if ( lpObj->m_PK_Level >= gPKLvlToCantWarp ) { GCServerMsgStringSend("An outlaw cannot use the /warp command. ", lpObj->m_Index, 1); return 0; } gMoveCommand.Move(lpObj, map_name); } } break; case 108: //104: { if ( (lpObj->AuthorityCode &8)!= 8 ) { return 0; } LogAdd("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "Guild SetPosition"); pId = this->GetTokenString(); if ( pId == NULL ) { return 0; } int iTokenNumber1 = this->GetTokenNumber(); int iTokenNumber2 = this->GetTokenNumber(); int iTokenNumber3 = this->GetTokenNumber(); if (iTokenNumber1 == -1) iTokenNumber1 = 0; if (iTokenNumber2 == -1) iTokenNumber2 = 0; if (iTokenNumber3 == -1) iTokenNumber3 = 0; _GUILD_INFO_STRUCT* lpGuild = Guild.SearchGuild(pId); int iIndex; if ( lpGuild != NULL ) { for ( int i=0;i<MAX_USER_GUILD;i++) { if (lpGuild->Index[i] >= 0 ) { iIndex = lpGuild->Index[i]; gObjTeleport(iIndex, iTokenNumber1, iTokenNumber2++, iTokenNumber3); } } } } break; case 109: //105: { if ( (lpObj->Authority &2)== 2 ) { LogAdd("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "Start BattleSoccer"); BattleSoccerGoalStart(0); } } break; case 110: //106: { if ( (lpObj->Authority &2) == 2 ) { LogAdd("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "Stop BattleSoccer"); BattleSoccerGoalEnd(0); } else { if ( gObj[aIndex].lpGuild != NULL ) { if (gObj[aIndex].lpGuild->WarType == 1 ) { strcmp(gObj[aIndex].Name, gObj[aIndex].lpGuild->Names[0] ); } } } } break; case 111: //107: { if ( (lpObj->Authority & 2) == 2 ) { LogAdd("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "End GuildWar"); char * szGuild = this->GetTokenString(); if ( szGuild != NULL ) { GCManagerGuildWarEnd(szGuild); } } else { if ( gObj[aIndex].lpGuild != NULL && gObj[aIndex].lpGuild->lpTargetGuildNode != NULL) { if ( strcmp( gObj[aIndex].Name, gObj[aIndex].lpGuild->Names[0] ) == 0) { if ( gObj[aIndex].lpGuild->BattleGroundIndex >= 0 && gObj[aIndex].lpGuild->WarType == 1 ) { ::gObjAddMsgSendDelay(&gObj[aIndex], 7, aIndex, 10000, 0); char szTemp[100]; wsprintf(szTemp, "Because of %s's request, the match will end automatically in 10 seconds", gObj[aIndex].lpGuild->Names[0] ); ::GCServerMsgStringSendGuild(gObj[aIndex].lpGuild, szTemp, 1); ::GCServerMsgStringSendGuild(gObj[aIndex].lpGuild->lpTargetGuildNode, szTemp, 1); } } } } } break; case 104: //102: { if ( (lpObj->AuthorityCode&0x20 ) != 0x20 ) { return FALSE; } LogAdd("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "Ban Chatting"); pId = this->GetTokenString(); if ( pId == NULL ) { return FALSE; } int Index = ::gObjGetIndex(pId); if ( Index >= 0 ) { gObj[Index].Penalty |= 2; } } break; case 106: //103: { if ( (lpObj->AuthorityCode & 32 ) != 32 ) { return FALSE; } LogAdd("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "Free Ban-Chatting"); pId = this->GetTokenString(); if ( pId == NULL ) { return FALSE; } int Index = ::gObjGetIndex(pId); if ( Index >= 0 ) { gObj[Index].Penalty &= ~2; } } break; case 200: //109: { pId = this->GetTokenString(); if ( pId != NULL ) { if ( strlen(pId) >= 1 ) { ::GCGuildWarRequestResult(pId, aIndex, 0); } } } break; case 202: //111: { if ( (lpObj->Authority & 2 ) == 2 ) { LogAdd("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "Set GuildWar"); pId = this->GetTokenString(); if ( pId != NULL ) { char * Rival = this->GetTokenString(); if ( Rival != NULL ) { if ( strlen(pId) >= 1 ) { if ( strlen(Rival) >= 1 ) { ::GCManagerGuildWarSet(pId, Rival, 1); } } } } } else { if ( gEnableBattleSoccer != FALSE ) { pId = this->GetTokenString(); if ( pId != NULL ) { if ( strlen(pId) >= 1 ) { ::GCGuildWarRequestResult(pId, aIndex, 1); } } } } } break; case 201: //110: { gObjBillRequest(&gObj[aIndex]); } break; case 203: //112: { pId = this->GetTokenString(); if ( pId != NULL ) { BOOL bState; if ( strcmp(pId, "on" ) == 0 ) { bState = TRUE; } else if ( strcmp(pId, "off") == 0 ) { bState = FALSE; } if ( bState >= FALSE && bState <= TRUE ) { ::gObjSetTradeOption(aIndex, bState); ::gObjSetDuelOption(aIndex, bState); } } } break; case 320: //117: { if ( (lpObj->Authority &2) != 2 ) { return FALSE; } LogAdd("[KUNDUN] Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "View the status of kundun"); KUNDUN_GM_LOG.Output("[KUNDUN] Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "View the status of kundun"); for ( int n=0;n<MAX_VIEWPORT;n++) { if ( lpObj->VpPlayer[n].state != 0 ) { if ( lpObj->VpPlayer[n].type == OBJ_MONSTER ) { if ( lpObj->VpPlayer[n].number >= 0 ) { LPOBJ lpTarget = &gObj[lpObj->VpPlayer[n].number]; if ( lpTarget->Class == 275 ) { TNotice pNotice(1); pNotice.SendToUser(lpObj->m_Index, "Kundun HP = %7.0f / %7.0f", lpTarget->Life, lpTarget->MaxLife); pNotice.SendToUser(lpObj->m_Index, "Kundun RefillHP/Sec = %d RefillHP = %d RefillHPTime = %d", giKundunRefillHPSec, giKundunRefillHP, giKundunRefillHPTime); // Require Translation } } } } } } break; case 321: //118: { if ( (lpObj->Authority &2 ) != 2 ) { return FALSE; } LogAdd("[KUNDUN] Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "쿤둔HP설정"); // Require Translation KUNDUN_GM_LOG.Output("[KUNDUN] Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "쿤둔HP설정"); // Require Translation int iLife = this->GetTokenNumber(); if (iLife == -1) iLife = 0; for ( int n=0;n<MAX_VIEWPORT;n++) { if ( lpObj->VpPlayer[n].state != FALSE ) { if ( lpObj->VpPlayer[n].type == OBJ_MONSTER ) { if ( lpObj->VpPlayer[n].number >= 0 ) { LPOBJ lpTarget = &gObj[lpObj->VpPlayer[n].number]; if ( lpTarget->Class == 275 ) { if ( iLife <= 5000 ) { iLife = 5000 ; } if ( iLife > lpTarget->MaxLife ) { iLife = (int)lpTarget->MaxLife; } lpTarget->Life = iLife; TNotice pNotice(1); pNotice.SendToUser(lpObj->m_Index, "쿤둔 HP = %7.0f / %7.0f", lpTarget->Life, lpTarget->MaxLife); //Require Translation } } } } } } break; case 322: //119: { if ( (lpObj->Authority &2 ) != 2 ) { return FALSE; } LogAdd("[KUNDUN] Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "쿤둔HP회복량설정"); // Require Translation KUNDUN_GM_LOG.Output("[KUNDUN] Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "쿤둔HP회복량설정"); // Require Translation int RefillHP = this->GetTokenNumber(); if ( RefillHP <= 0 || RefillHP > 5000000 ) { return 0; } giKundunRefillHP = RefillHP; TNotice pNotice(0); pNotice.SendToUser(lpObj->m_Index, "쿤둔 HP 초당회복량 = %d 회복량 = %d 회복시간 = %d", giKundunRefillHPSec, giKundunRefillHP, giKundunRefillHPTime); // Require Translation } break; case 323: //120: { if ( (lpObj->Authority &2 ) != 2 ) { return FALSE; } LogAdd("[KUNDUN] Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "쿤둔HP초당회복량설정"); // Require Translation KUNDUN_GM_LOG.Output("[KUNDUN] Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "쿤둔HP초당회복량설정"); // Require Translation int RefillHPSec = this->GetTokenNumber(); if ( RefillHPSec <= 0 || RefillHPSec > 10000 ) { return 0; } giKundunRefillHPSec = RefillHPSec; TNotice pNotice(0); pNotice.SendToUser(lpObj->m_Index, "쿤둔 HP 초당회복량 = %d 회복량 = %d 회복시간 = %d", giKundunRefillHPSec, giKundunRefillHP, giKundunRefillHPTime); // Require Translation } break; case 324: //121: { if ( (lpObj->Authority &2 ) != 2 ) { return FALSE; } LogAdd("[KUNDUN] Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "쿤둔HP회복시간설정"); // Require Translation KUNDUN_GM_LOG.Output("[KUNDUN] Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "쿤둔HP회복시간설정"); // Require Translation int RefillHPTime = this->GetTokenNumber(); if ( RefillHPTime < 0 || RefillHPTime > 60000 ) { return 0; } giKundunRefillHPTime = RefillHPTime; TNotice pNotice(0); pNotice.SendToUser(lpObj->m_Index, "쿤둔 HP 초당회복량 = %d 회복량 = %d 회복시간 = %d", giKundunRefillHPSec, giKundunRefillHP, giKundunRefillHPTime); // Require Translation } break; case 345: g_Crywolf.OperateGmCommand(lpObj->m_Index, 1); break; case 346: g_Crywolf.OperateGmCommand(lpObj->m_Index, 2); break; case 347: g_Crywolf.OperateGmCommand(lpObj->m_Index, 3); break; case 348: g_Crywolf.OperateGmCommand(lpObj->m_Index, 0); break; case 369: g_Kanturu.OperateGmCommand(lpObj->m_Index, 0); break; case 370: g_Kanturu.OperateGmCommand(lpObj->m_Index, 1); break; case 371: g_Kanturu.OperateGmCommand(lpObj->m_Index, 2); break; case 372: g_Kanturu.OperateGmCommand(lpObj->m_Index, 3); break; case 373: g_Kanturu.OperateGmCommand(lpObj->m_Index, 4); break; case 374: g_Kanturu.OperateGmCommand(lpObj->m_Index, 5); break; case 375: g_Kanturu.OperateGmCommand(lpObj->m_Index, 6); break; case 376: g_Kanturu.OperateGmCommand(lpObj->m_Index, 7); break; case 377: g_Kanturu.OperateGmCommand(lpObj->m_Index, 8); break; case 378: g_Kanturu.OperateGmCommand(lpObj->m_Index, 9); break; case 379: g_Kanturu.OperateGmCommand(lpObj->m_Index, 10); break; case 380: g_Kanturu.OperateGmCommand(lpObj->m_Index, 11); break; case 381: g_Kanturu.OperateGmCommand(lpObj->m_Index, 12); break; case 382: g_Kanturu.OperateGmCommand(lpObj->m_Index, 13); break; case 383: g_Kanturu.OperateGmCommand(lpObj->m_Index, 14); break; case 384: g_Kanturu.OperateGmCommand(lpObj->m_Index, 15); break; case 385: g_Kanturu.OperateGmCommand(lpObj->m_Index, 16); break; case 386: g_Kanturu.OperateGmCommand(lpObj->m_Index, 17); break; case 387: g_Kanturu.OperateGmCommand(lpObj->m_Index, 18); break; case 388: g_Kanturu.OperateGmCommand(lpObj->m_Index, 19); break; case 389: g_Kanturu.OperateGmCommand(lpObj->m_Index, 20); break; case 390: { if ( (lpObj->Authority &2 ) != 2 ) { return FALSE; } int type, index,ItemLevel,ItemSkill,ItemLuck,ItemOpt,ItemExc,ItemAncient; type = GetTokenNumber(); index = GetTokenNumber(); ItemLevel = GetTokenNumber(); ItemSkill = GetTokenNumber(); ItemLuck = GetTokenNumber(); ItemOpt = GetTokenNumber(); ItemExc = GetTokenNumber(); ItemAncient = GetTokenNumber(); if (type == -1) type = 0; if (index == -1) index = 0; if (ItemLevel == -1) ItemLevel = 0; if (ItemSkill == -1) ItemSkill = 0; if (ItemLuck == -1) ItemLuck = 0; if (ItemOpt == -1) ItemOpt = 0; if (ItemExc == -1) ItemExc = 0; if (ItemAncient == -1) ItemAncient = 0; if( (type >= 0 && type <= 15) ) { int Item = ItemGetNumberMake( type, index); ItemSerialCreateSend(aIndex, gObj[aIndex].MapNumber, (BYTE)gObj[aIndex].X, (BYTE)gObj[aIndex].Y, Item,ItemLevel,0,ItemSkill,ItemLuck,ItemOpt,-1,ItemExc,ItemAncient); } break; } case 391: { int value = GetTokenNumber(); if (value == -1) value = 0; g_Crywolf.OperateGmCommand(lpObj->m_Index,value); } break; } return 0; }
bool cChat::GmoveCommand(LPOBJ gObj, char *Msg, int Index) { if(CheckCommand(gObj, Configs.Commands.IsGmove, GmSystem.cGmove, 0, 0, 3, Index, "Gmove", "[Name] /gmove <map> <x> <y>", Msg)) return true; char Map[250]; int x,y; sscanf(Msg,"%s %d %d", &Map, &x, &y); LPOBJ tObj = (OBJECTSTRUCT*)OBJECT_POINTER(Index); int aIndex = User.GetPlayerIndex(gObj->Name); int RMap; if(_strcmpi(Map, "0") == 0 || _strcmpi(Map, "Lorencia") == 0) RMap = MAP_INDEX_RORENCIA; else if (_strcmpi(Map, "1") == 0 || _strcmpi(Map, "Dungeon") == 0) RMap = MAP_INDEX_DUNGEON; else if (_strcmpi(Map, "2") == 0 || _strcmpi(Map, "Devias") == 0) RMap = MAP_INDEX_DEVIAS; else if (_strcmpi(Map, "3") == 0 || _strcmpi(Map, "Noria") == 0) RMap = MAP_INDEX_NORIA; else if (_strcmpi(Map, "4") == 0 || _strcmpi(Map, "Losttower") == 0) RMap = MAP_INDEX_LOSTTOWER; else if (_strcmpi(Map, "6") == 0 || _strcmpi(Map, "Stadium") == 0 || _strcmpi(Map, "Arena") == 0) RMap = MAP_INDEX_BATTLESOCCER; else if (_strcmpi(Map, "7") == 0 || _strcmpi(Map, "Atlans") == 0) RMap = MAP_INDEX_ATHLANSE; else if (_strcmpi(Map, "8") == 0 || _strcmpi(Map, "Tarkan") == 0) RMap = MAP_INDEX_TARKAN; else if (_strcmpi(Map, "10") == 0 || _strcmpi(Map, "Icarus") == 0) RMap = 10; else if (_strcmpi(Map, "24") == 0 || _strcmpi(Map, "kalima1") == 0) RMap = 24; else if (_strcmpi(Map, "25") == 0 || _strcmpi(Map, "kalima2") == 0) RMap = 25; else if (_strcmpi(Map, "26") == 0 || _strcmpi(Map, "kalima3") == 0) RMap = 26; else if (_strcmpi(Map, "27") == 0 || _strcmpi(Map, "kalima4") == 0) RMap = 27; else if (_strcmpi(Map, "28") == 0 || _strcmpi(Map, "kalima5") == 0) RMap = 28; else if (_strcmpi(Map, "29") == 0 || _strcmpi(Map, "kalima6") == 0) RMap = 29; else if (_strcmpi(Map, "30") == 0 || _strcmpi(Map, "valleyofloren") == 0) RMap = 30; else if (_strcmpi(Map, "31") == 0 || _strcmpi(Map, "landoftrial") == 0 || _strcmpi(Map, "landsoftrial") == 0) RMap = 31; else if (_strcmpi(Map, "11") == 0 || _strcmpi(Map, "bc1") == 0) RMap = 11; else if (_strcmpi(Map, "12") == 0 || _strcmpi(Map, "bc2") == 0) RMap = 12; else if (_strcmpi(Map, "13") == 0 || _strcmpi(Map, "bc3") == 0) RMap = 13; else if (_strcmpi(Map, "14") == 0 || _strcmpi(Map, "bc4") == 0) RMap = 14; else if (_strcmpi(Map, "15") == 0 || _strcmpi(Map, "bc5") == 0) RMap = 15; else if (_strcmpi(Map, "16") == 0 || _strcmpi(Map, "bc6") == 0) RMap = 16; else if (_strcmpi(Map, "17") == 0 || _strcmpi(Map, "bc7") == 0) RMap = 17; else if (_strcmpi(Map, "52") == 0 || _strcmpi(Map, "bc8") == 0) RMap = 52; else if (_strcmpi(Map, "18") == 0 || _strcmpi(Map, "cc1") == 0) RMap = 18; else if (_strcmpi(Map, "19") == 0 || _strcmpi(Map, "cc2") == 0) RMap = 19; else if (_strcmpi(Map, "20") == 0 || _strcmpi(Map, "cc3") == 0) RMap = 20; else if (_strcmpi(Map, "21") == 0 || _strcmpi(Map, "cc4") == 0) RMap = 21; else if (_strcmpi(Map, "22") == 0 || _strcmpi(Map, "cc5") == 0) RMap = 22; else if (_strcmpi(Map, "23") == 0 || _strcmpi(Map, "cc6") == 0) RMap = 23; else if (_strcmpi(Map, "53") == 0 || _strcmpi(Map, "cc7") == 0) RMap = 53; else if (_strcmpi(Map, "33") == 0 || _strcmpi(Map, "aida") == 0) RMap = 33; else if (_strcmpi(Map, "34") == 0 || _strcmpi(Map, "crywolf") == 0) RMap = 34; else if (_strcmpi(Map, "36") == 0 || _strcmpi(Map, "kalima7") == 0) RMap = 36; else if (_strcmpi(Map, "37") == 0 || _strcmpi(Map, "kanturu") == 0) RMap = 37; else if (_strcmpi(Map, "38") == 0 || _strcmpi(Map, "kanturutruins") == 0 || _strcmpi(Map, "kantrutruins") == 0) RMap = 38; else if (_strcmpi(Map, "39") == 0 || _strcmpi(Map, "kantrutower") == 0 || _strcmpi(Map, "kanturutower") == 0) RMap = 39; else if (_strcmpi(Map, "40") == 0 || _strcmpi(Map, "silent") == 0) RMap = 40; else if (_strcmpi(Map, "41") == 0 || _strcmpi(Map, "balgasbarrack") == 0) RMap = 41; else if (_strcmpi(Map, "42") == 0 || _strcmpi(Map, "balgasrefuge") == 0) RMap = 42; else if (_strcmpi(Map, "51") == 0 || _strcmpi(Map, "elbeland") == 0) RMap = 51; else if (_strcmpi(Map, "56") == 0 || _strcmpi(Map, "swampofcalmness") == 0 || _strcmpi(Map, "calmness") == 0) RMap = 56; else if (_strcmpi(Map, "57") == 0 || _strcmpi(Map, "raklion") == 0) RMap = 57; else if (_strcmpi(Map, "58") == 0 || _strcmpi(Map, "raklionboss") == 0) RMap = 58; else if (_strcmpi(Map, "62") == 0 || _strcmpi(Map, "santatown") == 0 || _strcmpi(Map, "santa") == 0) RMap = 62; else if (_strcmpi(Map, "63") == 0 || _strcmpi(Map, "vulcanus") == 0) RMap = 63; else if (_strcmpi(Map, "64") == 0 || _strcmpi(Map, "doppel1") == 0) RMap = MAP_INDEX_DOPPELGANGER_1; else if (_strcmpi(Map, "65") == 0 || _strcmpi(Map, "doppel2") == 0) RMap = MAP_INDEX_DOPPELGANGER_2; else if (_strcmpi(Map, "66") == 0 || _strcmpi(Map, "doppel3") == 0) RMap = MAP_INDEX_DOPPELGANGER_3; else if (_strcmpi(Map, "67") == 0 || _strcmpi(Map, "doppel4") == 0) RMap = MAP_INDEX_DOPPELGANGER_4; else if (_strcmpi(Map, "69") == 0 || _strcmpi(Map, "imperialfort1") == 0) RMap = MAP_INDEX_PARTYDUNGEON_DAYOFWEEK1; else if (_strcmpi(Map, "70") == 0 || _strcmpi(Map, "imperialfort2") == 0) RMap = MAP_INDEX_PARTYDUNGEON_DAYOFWEEK2; else if (_strcmpi(Map, "71") == 0 || _strcmpi(Map, "imperialfort3") == 0) RMap = MAP_INDEX_PARTYDUNGEON_DAYOFWEEK3; else if (_strcmpi(Map, "79") == 0 || _strcmpi(Map, "lorem market") == 0) RMap = MAP_INDEX_ROREN_MARKET; else if (_strcmpi(Map, "80") == 0 || _strcmpi(Map, "karutan1") == 0) RMap = MAP_INDEX_KARUTAN_1; else if (_strcmpi(Map, "81") == 0 || _strcmpi(Map, "karutan2") == 0) RMap = MAP_INDEX_KARUTAN_2; else if (_strcmpi(Map, "91") == 0 || _strcmpi(Map, "acheron") == 0) RMap = MAP_INDEX_ACHERON; else if (_strcmpi(Map, "92") == 0 || _strcmpi(Map, "arca") == 0) RMap = MAP_INDEX_ARCABATTLE; else if (_strcmpi(Map, "95") == 0 || _strcmpi(Map, "deventer") == 0) RMap = MAP_INDEX_DEVENTER; else if (_strcmpi(Map, "96") == 0 || _strcmpi(Map, "arcadeventer") == 0) RMap = MAP_INDEX_ARCABATTLE_DEVENTER; else if (_strcmpi(Map, "72") == 0 || _strcmpi(Map, "ccf") == 0) RMap = MAP_INDEX_CCF; else if (_strcmpi(Map, "98") == 0 || _strcmpi(Map, "itl1") == 0) RMap = MAP_INDEX_ITL1; else if (_strcmpi(Map, "99") == 0 || _strcmpi(Map, "itl2") == 0) RMap = MAP_INDEX_ITL2; else if (_strcmpi(Map, "100") == 0 || _strcmpi(Map, "uruk1") == 0) RMap = MAP_INDEX_URUK_MOUNTAIN; else if (_strcmpi(Map, "101") == 0 || _strcmpi(Map, "uruk2") == 0) RMap = MAP_INDEX_URUK_MOUNTAIN2; else if (_strcmpi(Map, "102") == 0 || _strcmpi(Map, "dsf") == 0) RMap = MAP_INDEX_DSF; else { TNotice.MessageLog(1,gObj,"[GMove] Such map doesn't exist!"); return true; } if(x > 255 || y > 255 || x < 0 || y < 0) { TNotice.MessageLog(1,gObj,"[GMove] Such coords doesn't exist!"); return true; } gObjTeleport(tObj->m_Index, RMap, x, y); if(tObj == gObj) TNotice.MessageLog(1,gObj,"[GMove] You successfully moved to %s %d %d!", Map, x, y); else { TNotice.MessageLog(1,gObj,"[GMove] You successfully move %s to %s %d %d!", tObj->Name, Map, x, y); TNotice.MessageLog(1,tObj,"[GMove] You successfully moved to %s %d %d by %s!", Map , x, y, gObj->Name); } return true; }
// ---------------------------------------------------------------------------------------- void CDoubleGoer::Teleport(int aIndex) { LPOBJ lpObj = &gObj[aIndex]; // ---- gDoubleGoer.MapCheck(); // ---- if ( lpObj->PartyNumber == -1 ) { gDoubleGoer.PartyActived = false; gDoubleGoer.UserCount = 1; gDoubleGoer.UserIndex[0] = aIndex; gObjTeleport(aIndex,gDoubleGoer.EventMap,gDoubleGoer.EventX,gDoubleGoer.EventY); SendDoubleGoerEntranceBlock(gDoubleGoer.EventMap,aIndex,1); // ---- SendMsg.MessageOut(aIndex, 0x01, "[DoubleGoer]: Event will start in %d seconds",gDoubleGoer.StandByTimer); } else { for (int i=OBJMIN;i<OBJMAX+1;i++) { // ---- if ( gObj[i].Type != OBJ_USER ) { continue; } if ( gObj[i].PartyNumber == lpObj->PartyNumber ) { gDoubleGoer.UserIndex[gDoubleGoer.UserCount] = i; gDoubleGoer.UserCount++; gObjTeleport(i,gDoubleGoer.EventMap,gDoubleGoer.EventX,gDoubleGoer.EventY); // ---- SendMsg.MessageOut(i, 0x01, "[DoubleGoer]: Event will start in %d seconds",gDoubleGoer.StandByTimer); SendDoubleGoerEntranceBlock(gDoubleGoer.EventMap,i,1); } } gDoubleGoer.PartyActived = true; SendMsg.MessageOut(aIndex, 0x01, "[DoubleGoer]: Total User Count %d",gDoubleGoer.UserCount); } for (int i=0;i<5;i++) { if ( gDoubleGoer.UserIndex[i] != 0 ) { if ( (gObj[gDoubleGoer.UserIndex[i]].Level+gObj[gDoubleGoer.UserIndex[i]].MasterLevel) > gDoubleGoer.EventMaxLevel ) { gDoubleGoer.EventMaxLevel = gObj[gDoubleGoer.UserIndex[i]].Level+gObj[gDoubleGoer.UserIndex[i]].MasterLevel; } } } for (int i=0;i<50;i++) { if ( (gDoubleGoer.EventMaxLevel >= gDoubleGoer.PlayerMinLvl[i]) && (gDoubleGoer.EventMaxLevel <= gDoubleGoer.PlayerMaxLvl[i]) ) { gDoubleGoer.EventLevel = i; break; } } CLog.LogAdd("[DoubleGoer]: Teleport -> User Count: %d, Max Event Level: %d",gDoubleGoer.UserCount, gDoubleGoer.EventMaxLevel); gDoubleGoer.Running = 1; gDoubleGoer.StandBy = 1; _beginthread( StandByStart, 0, NULL ); }
void CHatcheryEvent::SetState(int iState) { this->m_HatcheryEvent.m_EventState = iState; switch(iState) { case STATE_CLOSED: ServerMsgSendAll("The Hatchery Event Closed!"); Log.Info("[HatcheryEvent] SetState -> CLOSED"); break; case STATE_OPEN: this->m_HatcheryEvent.m_RemainTime = m_OpenTime * 60; Log.Info("[HatcheryEvent] SetState -> OPEN"); break; case STATE_PREPARE: this->m_HatcheryEvent.m_RemainTime = m_PrepareTime * 60; this->Calculate(this->m_HatcheryEvent.m_UserCount); Log.Info("[HatcheryEvent] SetState -> PREPARE"); break; case STATE_BATTLE: this->m_HatcheryEvent.m_RemainTime = m_BattleTime * 60; this->SetMonsters(1); Log.Info("[HatcheryEvent] SetState -> BATTLE"); break; case STATE_BATTLE2: this->SetMonsters(2); Log.Info("[HatcheryEvent] SetState -> BATTLE 2"); break; case STATE_BATTLE3: this->SetMonsters(3); Log.Info("[HatcheryEvent] SetState -> BATTLE 3"); break; case STATE_BATTLE4: this->SetMonsters(4); Log.Info("[HatcheryEvent] SetState -> BATTLE 4"); break; case STATE_END: for (int i = 0; i < this->m_HatcheryEvent.m_UserCount; i++) { if (this->m_HatcheryEvent.m_UserIndex[i] != 0) { if (OnlineStatus(gObj[this->m_HatcheryEvent.m_UserIndex[i]].m_Index) == true) { if (gObj[this->m_HatcheryEvent.m_UserIndex[i]].MapNumber == 5) { gObjTeleport(this->m_HatcheryEvent.m_UserIndex[i],3,20,243); } } } this->m_HatcheryEvent.m_UserIndex[i] = 0; } for (int i = 0; i < this->m_MonsterCount; i++) { if (this->m_HatcheryEvent.m_MonsterIndex[i] != -1) { gObjDel(this->m_HatcheryEvent.m_MonsterIndex[i]); this->m_HatcheryEvent.m_MonsterIndex[i] = -1; } } this->m_HatcheryEvent.m_RemainTime = 0; this->m_HatcheryEvent.m_UserCount = 0; this->m_HatcheryEvent.m_SpawnedMonsters = 0; this->m_HatcheryEvent.m_EventState = STATE_CLOSED; Log.Info("[HatcheryEvent] SetState -> END"); this->SetState(STATE_CLOSED); break; } }
// ----------------------------------------------------------------------------------------------------------------------- void CIllusionTemple::UseSkillProc(OBJECTSTRUCT* lpObj, PMSG_ILLUSION_USESKILL* pMsg) { LPOBJ lpTargetObj = &gObj[pMsg->m_TargetIndex]; int TargePosx = lpTargetObj->X; int TargePosy = lpTargetObj->Y; int iangle = gObjUseSkill.GetAngle(lpObj->X,lpObj->Y,TargePosx,TargePosy); if(!(IT_FLOOR_RANGE(lpObj->m_IllusionIndex) && IT_MAP_RANGE(lpObj->MapNumber))) { GCMagicAttackNumberSend(lpObj, (BYTE)pMsg->m_SkillIndex, lpObj->m_Index, 1); return; } int SkillPoint = MagicDamageC.CheckKillCount(pMsg->m_SkillIndex, lpObj->m_IllusionKillCount); if(SkillPoint < 0) { GCMagicAttackNumberSend(lpObj, (BYTE)pMsg->m_SkillIndex, lpObj->m_Index, 1); CLog.LogAddC(2, "[IllusionTemple][%s] Use skill without enough points (%d)(%d)", lpObj->Name, lpObj->m_IllusionKillCount, pMsg->m_SkillIndex); return; } switch(pMsg->m_SkillIndex) { case IT_SKILL_SHIELD: { if(lpObj->m_IllusionShieldSkillTime > 0) { GCMagicAttackNumberSend(lpObj, AT_SKILL_ITSHIELD, lpObj->m_Index, 0); return; } if(lpObj->Mana < MagicDamageC.SkillGetMana(IT_SKILL_SHIELD)) { GCMagicAttackNumberSend(lpObj, AT_SKILL_ITSHIELD, lpObj->m_Index, 0); return; } lpObj->Mana -= MagicDamageC.SkillGetMana(IT_SKILL_SHIELD); GCManaSend(lpObj->m_Index, (short)lpObj->Mana, 0xFF, 0, lpObj->BP); lpObj->m_IllusionShieldSkillTime = MagicDamageC.GetDelayTime(IT_SKILL_SHIELD); GCStateInfoSend(lpObj, 1, eVS_ILLUSION_PROTECTION); gObjSetIllusionKillCount(lpObj->m_Index, KILLCOUNT_DECREASE, MagicDamageC.GetKillCount(IT_SKILL_SHIELD)); GCMagicAttackNumberSend(lpObj, AT_SKILL_ITSHIELD, lpObj->m_Index, 1); }break; case IT_SKILL_RESIST: { if(lpObj->Type != OBJ_USER ) { CLog.LogAddC(2, "[IllusionTemple][%s] can't use Skill (%d) in normal state,only in PVP", lpObj->Name, pMsg->m_SkillIndex ); return; } if(gObjCalDistance(lpObj,lpTargetObj) <= 4) { if(SkillElectricSparkHitBox.HitCheck(iangle,lpObj->X,lpObj->Y,lpObj->X,lpObj->Y)) { lpTargetObj->m_btSkillRestraintOrder = TRUE; lpTargetObj->m_btSkillRestraintOrderTime = 15; //this->GCEffectSkillSend(aIndex,lpTargetObj->m_Index,lpMagic->m_Skill,btType); gObjSetPosition(lpObj->m_Index,lpObj->X,lpObj->Y); } } }break; case IT_SKILL_TRACK: { if(lpObj->m_Index != this->m_IllusionTemple[lpObj->m_IllusionIndex].m_BallOwner) { if(OBJMAX_RANGE(this->m_IllusionTemple[lpObj->m_IllusionIndex].m_BallOwner)) { gObjSetIllusionKillCount(lpObj->m_Index, KILLCOUNT_DECREASE, MagicDamageC.GetKillCount(IT_SKILL_TRACK)); gObjTeleport(lpObj->m_Index, gObj[this->m_IllusionTemple[lpObj->m_IllusionIndex].m_BallOwner].MapNumber, gObj[this->m_IllusionTemple[lpObj->m_IllusionIndex].m_BallOwner].X, gObj[this->m_IllusionTemple[lpObj->m_IllusionIndex].m_BallOwner].Y); } } }break; case IT_SKILL_FREEZE: { if(lpObj->Type != OBJ_USER ) { CLog.LogAddC(2, "[IllusionTemple][%s] can't use Skill (%d) in normal state,only in PVP", lpObj->Name, pMsg->m_SkillIndex ); return; } lpObj->iShield -= (lpObj->iMaxShield / 2); if( lpObj->iShield < 0 ) { lpObj->iShield = 0; } GCReFillSend(lpObj->m_Index,(WORD)lpObj->Life,0xFF,0,lpObj->iShield); GCSendEffectInfo(lpTargetObj->m_Index, 17); }break; } }
void ImperialFort_StartStandBy(void * lpParam) { while(true) { Sleep(1000); if(Imperial.StandByRun == 0) { _endthread(); } if(Imperial.StartStandByTimer < 1) { Imperial.StartStandByTimer = 0; ImperialMain.Status = 1; _beginthread( ImperialFort_StartStage1, 0, NULL ); _endthread(); } Imperial.StartStandByTimer -= 4; PMSG_FORT_EVENT_TIMER pMsg; pMsg.h.c = 0xC1; pMsg.h.size = 0x0D; pMsg.h.headcode = 0xF7; pMsg.h.subcode = 0x04; pMsg.Status = 0x01; pMsg.Unk4 = 0x00; pMsg.TimerL = LOBYTE(Imperial.StartStandByTimer); pMsg.TimerH = HIBYTE(Imperial.StartStandByTimer); pMsg.Unk5 = 0x00; pMsg.Mob = 0; BYTE Packet[13] = {0xC1, 0x0D, 0xF7, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; for(int i=MIN_PLAYERID;i<MAX_PLAYERID;i++) { GOBJSTRUCT *gObj = (GOBJSTRUCT*)OBJECT_POINTER(i); if(gObj->Connected == 3 && gObj->MapNumber == Imperial.EventMap && ImperialMain.UserIsInFort[GET_USER_INDEX(i)] == 1) { DataSend(i, (BYTE*)&pMsg, pMsg.h.size); } else if(gObj->Connected == 3 && gObj->MapNumber != Imperial.EventMap && ImperialMain.UserIsInFort[GET_USER_INDEX(i)] == 1) { DataSend(i, &Packet[0], Packet[1]); Imperial.EventClearIndex(i); _endthread(); } else if(UserCountInMap(Imperial.EventMap) == 0 && ImperialMain.UserIsInFort[GET_USER_INDEX(i)] == 1) { DataSend(i, &Packet[0], Packet[1]); Imperial.EventClear(); _endthread(); } else { if(gObj->Connected == 3 && gObj->MapNumber == Imperial.EventMap && ImperialMain.UserIsInFort[GET_USER_INDEX(i)] != 1) { gObjTeleport(i,0,125,125); } } } } _endthread(); }
int CGMMng::ManagementProc(LPOBJ lpObj, char* szCmd, int aIndex) { char * szCmdToken; char string[256]; char szId[20]; char * pId = szId; int len = strlen(szCmd); int command_number; if ( len < 1 || len > 250 ) { return 0; } memset(szId, 0, sizeof(szId)); strcpy(string, szCmd); szCmdToken = strtok(string, " "); command_number = this->GetCmd(szCmdToken); strcpy(Message, szCmd); if ( stricmp(szCmdToken, "/add0") == 0 ) { int nAddStrength = 100; LevelUpPointAdd(0,nAddStrength,aIndex); GCSendEffectInfo(aIndex, 17); } if ( stricmp(szCmdToken, "/add1") == 0 ) { int nAddStrength = 100; LevelUpPointAdd(1,nAddStrength,aIndex); GCSendEffectInfo(aIndex, 3); } if ( stricmp(szCmdToken, "/add2") == 0 ) { int nAddStrength = 100; LevelUpPointAdd(2,nAddStrength,aIndex); GCSendEffectInfo(aIndex, 17); } if ( stricmp(szCmdToken, "/add3") == 0 ) { int nAddStrength = 100; LevelUpPointAdd(3,nAddStrength,aIndex); GCSendEffectInfo(aIndex, 17); } switch ( command_number ) { #if(GS_CASTLE == 1) case 331: { pId = this->GetTokenString(); g_CastleSiege.OperateGmCommand(lpObj->m_Index, 0, pId); } break; case 332: { pId = this->GetTokenString(); g_CastleSiege.OperateGmCommand(lpObj->m_Index, 1, pId); } break; case 333: { pId = this->GetTokenString(); g_CastleSiege.OperateGmCommand(lpObj->m_Index, 2, pId); } break; case 334: { pId = this->GetTokenString(); g_CastleSiege.OperateGmCommand(lpObj->m_Index, 3, pId); } break; case 335: { pId = this->GetTokenString(); g_CastleSiege.OperateGmCommand(lpObj->m_Index, 4, pId); } break; case 336: { pId = this->GetTokenString(); g_CastleSiege.OperateGmCommand(lpObj->m_Index, 5, pId); } break; case 337: { pId = this->GetTokenString(); g_CastleSiege.OperateGmCommand(lpObj->m_Index, 6, pId); } break; case 338: { pId = this->GetTokenString(); g_CastleSiege.OperateGmCommand(lpObj->m_Index, 7, pId); } break; case 340: { pId = this->GetTokenString(); g_CastleSiege.OperateGmCommand(lpObj->m_Index, 8, pId); } break; #endif case 502: { MMSG->Msg(lpObj->m_Index,"@@God of MuGlobal is Wolf"); break; } case 501: { int OnlineCount = 0; for (int n=OBJ_STARTUSERINDEX;n<OBJMAX;n++) { if(gObjIsConnected(n)) OnlineCount++; } MMSG->Msg(lpObj->m_Index,"[%d] Online Players",OnlineCount); break; } case 500: { char* szuText = this->GetTokenString(); if(szuText != NULL) { int uTick = GetTickCount(); //if(lpObj->Money < 299999); //{ // MMSG->Msg(lpObj->m_Index,"@[POST] Eww ti co - bisplatnij sir toka v mi6elovki"); // return 0; //} //{ // MMSG->Msg(lpObj->m_Index,"@[POST] Eww ti co - level netu :("); // return 0; //} if(lpObj->Money < 500000) { MMSG->Msg(lpObj->m_Index,"@[POST] You need 500k Zen to POST"); return 0; } if(lpObj->Level < 50) { MMSG->Msg(lpObj->m_Index,"@[POST] You need 50 Level to POST"); return 0; } else { char *Content = (char*) Message; GetLongParam(Message, Content); lpObj->Money -= 500000; GCMoneySend(lpObj->m_Index , lpObj->Money); wsprintf(szuTemp,"[POST] %s: %s",lpObj->Name,Message); MMSG->PMAll(szuTemp); return 0; } } else { MMSG->Msg(lpObj->m_Index,"@[POST] The Correct Syntax is: /post message"); return 0; } break; } case 503: // MakeSet CMD { if ( (lpObj->Authority & 2) != 2 && (lpObj->Authority & 0x20) != 0x20 ) { return 0; } if (!strcmpi(Message, "/MakeSet")) { MMSG->Msg(aIndex, "Useage: /Make <Name> <Index> <Level> <Option> <Skill> <Luck> <Exc> <Ancient> <Amount> <Dur>"); return 0; } //Name Index Level Option Skill Luck Exc Ancient Amount Dur char Name[100]; memset(Name, 0, 100); int Index, Level, Option, Luck, Skill, Exc, Ancient, Amount, Dur; char ParamBuff[100]; memset(ParamBuff, 0, 100); GetParam(1, Message, ParamBuff); strcpy(Name, ParamBuff); memset(ParamBuff, 0, 100); if (!GetParam(2, Message, ParamBuff)) strcpy(ParamBuff, "0"); Index = atoi(ParamBuff); memset(ParamBuff, 0, 100); if (!GetParam(3, Message, ParamBuff)) strcpy(ParamBuff, "13"); Level = atoi(ParamBuff); memset(ParamBuff, 0, 100); if (!GetParam(4, Message, ParamBuff)) strcpy(ParamBuff, "4"); Option = atoi(ParamBuff); memset(ParamBuff, 0, 100); if (!GetParam(5, Message, ParamBuff)) strcpy(ParamBuff, "1"); Luck = atoi(ParamBuff); memset(ParamBuff, 0, 100); if (!GetParam(6, Message, ParamBuff)) strcpy(ParamBuff, "1"); Skill = atoi(ParamBuff); memset(ParamBuff, 0, 100); if (!GetParam(7, Message, ParamBuff)) strcpy(ParamBuff, "127"); Exc = atoi(ParamBuff); memset(ParamBuff, 0, 100); if (!GetParam(8, Message, ParamBuff)) strcpy(ParamBuff, "0"); Ancient = atoi(ParamBuff); memset(ParamBuff, 0, 100); if (!GetParam(9, Message, ParamBuff)) strcpy(ParamBuff, "1"); Amount = atoi(ParamBuff); memset(ParamBuff, 0, 100); if (!GetParam(10, Message, ParamBuff)) strcpy(ParamBuff, "255"); Dur = atoi(ParamBuff); int tIndex = gObjGetIndexByName(Name); if (!tIndex) return 0; for (int i=0; i<Amount; i++) { for (int type=7; type<12; type++) ItemSerialCreateSend(tIndex, lpObj->MapNumber, lpObj->X, lpObj->Y, type*512 + Index, Level, Dur, Skill, Luck, Option, tIndex, Exc, Ancient); } break; } case 218: { AllSendServerMsg("[MU GLOBAL ADMINISTRATORS]"); AllSendServerMsg("Sacred & Wolf"); AllSendServerMsg("www.muglobal.ru"); break; } case 217: //116: { if ( (lpObj->Authority & 2) != 2 && (lpObj->Authority & 0x20) != 0x20 ) { return 0; } LogAddTD("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "FIRECRACK."); int x = lpObj->X; int y = lpObj->Y; PMSG_SERVERCMD pMsg; PHeadSubSetB((LPBYTE)&pMsg,0xF3,0x40, sizeof(pMsg)); pMsg.CmdType = 0; for ( int i=0;i<15;i++) { pMsg.X = x+(rand() % 5)*2 - 4; pMsg.Y = y+(rand() % 5)*2 - 4; MsgSendV2(lpObj,(UCHAR*)&pMsg, sizeof(pMsg)); ::DataSend(lpObj->m_Index ,(UCHAR*)&pMsg, sizeof(pMsg)); } } break; case 216: //115: { if ( (lpObj->Authority & 2) != 2 && (lpObj->Authority & 0x20) != 0x20 ) { return 0; } pId = this->GetTokenString(); if ( pId == NULL ) { return 0; } LPOBJ lpTargetObj = gObjFind(pId); if ( lpTargetObj == NULL ) { return 0; } LogAddTD("Use GM Command -> [ %s ] [ %s ] [ %s ] / Target : [%s][%s] : %s ", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, lpTargetObj->AccountID, lpTargetObj->Name, "User Watching"); char szTemp[256]; if ( this->WatchTargetIndex == lpTargetObj->m_Index ) { this->WatchTargetIndex = -1; wsprintf(szTemp, "%s : °¨½ÃÇØÁ¦", lpTargetObj->Name); // #translation GCServerMsgStringSend(szTemp, lpObj->m_Index, 1); } else { wsprintf(szTemp, "%s : °¨½Ã½ÃÀÛ", lpTargetObj->Name); // #translation GCServerMsgStringSend(szTemp, lpObj->m_Index, 1); this->WatchTargetIndex = lpTargetObj->m_Index; } } break; case 215: //114: { if ( (lpObj->Authority & 2) != 2 && (lpObj->Authority & 0x20) != 0x20 ) { return 0; } pId = this->GetTokenString(); if ( pId == NULL ) { return 0; } int map; int iX; int iY; LPOBJ lpTargetObj = gObjFind(pId); int iIndex; if ( lpTargetObj == NULL ) { return 0; } LogAddTD("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] / Target : [%s][%s] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, lpTargetObj->AccountID, lpTargetObj->Name, "User Tracking"); map = lpTargetObj->MapNumber; iX = lpTargetObj->X; iY = lpTargetObj->Y; iIndex = lpObj->m_Index; if ( iIndex >= 0 ) { gObjTeleport(iIndex, map, iX, iY); } } break; case 214: //113: { if ( (lpObj->Authority & 2) != 2 ) { return 0; } LogAddTD("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "User Stat (connection)"); int lc151 = 0; int lc152 = 400; int iTokenNumber = this->GetTokenNumber(); if ( iTokenNumber > 0 ) { lc151 = iTokenNumber; } int iTokenNumber2 = this->GetTokenNumber(); if ( iTokenNumber2 > 0 ) { lc152 = iTokenNumber2; } gObjSendUserStatistic(lpObj->m_Index, lc151, lc152); } break; case 100: //100: { if ( (lpObj->AuthorityCode &4) != 4 ) { return 0; } pId = this->GetTokenString(); if ( pId == NULL ) { return 0; } int iTargetIndex = gObjGetIndex(pId); if ( iTargetIndex >= 0 ) { LPOBJ lpTargetObj = gObjFind(pId); if ( lpTargetObj == NULL ) { return 0; } LogAddTD("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] / Target : [%s][%s] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, lpTargetObj->AccountID, lpTargetObj->Name, "User Disconnect"); LogAdd(lMsg.Get(MSGGET(1, 191)), pId); CloseClient(iTargetIndex); } } break; case 112: //108: { if ( (lpObj->AuthorityCode &4) != 4 ) { return 0; } LogAddTD("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "Guild Disconnect"); pId = this->GetTokenString(); if ( pId == NULL ) { return 0; } _GUILD_INFO_STRUCT * lpGuild = Guild.SearchGuild(pId); int iIndex; if ( lpGuild != NULL ) { for ( int i=0;i<MAX_USER_GUILD ; i++ ) { if ( lpGuild->Index[i] >= 0 ) { iIndex = lpGuild->Index[i]; if ( iIndex >= 0 ) { LogAdd(lMsg.Get(MSGGET(1, 191)), pId); CloseClient(iIndex); } } } } } break; case 101: //101: { if ( (lpObj->AuthorityCode &8) == 8 ) { pId = this->GetTokenString(); if ( pId == NULL ) { return 0; } int iTokenNumber1 = this->GetTokenNumber(); int iTokenNumber2 = this->GetTokenNumber(); int iTokenNumber3 = this->GetTokenNumber(); int iIndex = gObjGetIndex(pId); LPOBJ lpTargetObj; if ( iIndex >= 0 ) { lpTargetObj = gObjFind(pId); if ( lpTargetObj == NULL ) { return 0; } LogAddTD("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] / Target : [%s][%s] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, lpTargetObj->AccountID, lpTargetObj->Name, "User SetPosition"); gObjTeleport(iIndex, iTokenNumber1, iTokenNumber2, iTokenNumber3); } } else { pId = this->GetTokenString(); if ( pId != NULL ) { int lc165 = -1; int lc166 = 0; int lc167 = 0; if ( lpObj->Teleport != 0 ) { GCServerMsgStringSend(lMsg.Get(MSGGET(6, 68)), lpObj->m_Index, 1); return 0; } if ( (lpObj->m_IfState.use) != 0 ) { if ( lpObj->m_IfState.type == 3 ) { lpObj->TargetShopNumber = -1; lpObj->m_IfState.type = 0; lpObj->m_IfState.use = 0; } } if ( lpObj->m_IfState.use > 0 ) { GCServerMsgStringSend(lMsg.Get(MSGGET(6, 68)), lpObj->m_Index, 1); return 0; } if ( gObj[aIndex].IsInBattleGround != false ) { GCServerMsgStringSend(lMsg.Get(MSGGET(6, 68)), lpObj->m_Index, 1); return 0; } if ( lpObj->m_PK_Level >= 6 ) { GCServerMsgStringSend(lMsg.Get(MSGGET(4, 101)), lpObj->m_Index, 1); return 0; } gMoveCommand.Move(lpObj, pId); } } } break; case 108: //104: { if ( (lpObj->AuthorityCode &8)!= 8 ) { return 0; } LogAddTD("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "Guild SetPosition"); pId = this->GetTokenString(); if ( pId == NULL ) { return 0; } int iTokenNumber1 = this->GetTokenNumber(); int iTokenNumber2 = this->GetTokenNumber(); int iTokenNumber3 = this->GetTokenNumber(); _GUILD_INFO_STRUCT* lpGuild = Guild.SearchGuild(pId); int iIndex; if ( lpGuild != NULL ) { for ( int i=0;i<MAX_USER_GUILD;i++) { if (lpGuild->Index[i] >= 0 ) { iIndex = lpGuild->Index[i]; gObjTeleport(iIndex, iTokenNumber1, iTokenNumber2++, iTokenNumber3); } } } } break; case 109: //105: { if ( (lpObj->Authority &2)== 2 ) { LogAddTD("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "Start BattleSoccer"); BattleSoccerGoalStart(0); } } break; case 110: //106: { if ( (lpObj->Authority &2) == 2 ) { LogAddTD("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "Stop BattleSoccer"); BattleSoccerGoalEnd(0); } else { if ( gObj[aIndex].lpGuild != NULL ) { if (gObj[aIndex].lpGuild->WarType == 1 ) { strcmp(gObj[aIndex].Name, gObj[aIndex].lpGuild->Names[0] ); } } } } break; case 111: //107: { if ( (lpObj->Authority & 2) == 2 ) { LogAddTD("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "End GuildWar"); char * szGuild = this->GetTokenString(); if ( szGuild != NULL ) { GCManagerGuildWarEnd(szGuild); } } else { if ( gObj[aIndex].lpGuild != NULL && gObj[aIndex].lpGuild->lpTargetGuildNode != NULL) { if ( strcmp( gObj[aIndex].Name, gObj[aIndex].lpGuild->Names[0] ) == 0) { if ( gObj[aIndex].lpGuild->BattleGroundIndex >= 0 && gObj[aIndex].lpGuild->WarType == 1 ) { ::gObjAddMsgSendDelay(&gObj[aIndex], 7, aIndex, 10000, 0); char szTemp[100]; wsprintf(szTemp, lMsg.Get(MSGGET(4, 129)), gObj[aIndex].lpGuild->Names[0] ); ::GCServerMsgStringSendGuild(gObj[aIndex].lpGuild, szTemp, 1); ::GCServerMsgStringSendGuild(gObj[aIndex].lpGuild->lpTargetGuildNode, szTemp, 1); } } } } } break; case 104: //102: { if ( (lpObj->AuthorityCode&0x20 ) != 0x20 ) { return FALSE; } LogAddTD("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "Ban Chatting"); pId = this->GetTokenString(); if ( pId == NULL ) { return FALSE; } int Index = ::gObjGetIndex(pId); if ( Index >= 0 ) { gObj[Index].Penalty |= 2; } } break; case 106: //103: { if ( (lpObj->AuthorityCode & 32 ) != 32 ) { return FALSE; } LogAddTD("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "Free Ban-Chatting"); pId = this->GetTokenString(); if ( pId == NULL ) { return FALSE; } int Index = ::gObjGetIndex(pId); if ( Index >= 0 ) { gObj[Index].Penalty &= ~2; } } break; case 200: //109: { pId = this->GetTokenString(); if ( pId != NULL ) { if ( strlen(pId) >= 1 ) { ::GCGuildWarRequestResult(pId, aIndex, 0); } } } break; case 202: //111: { if ( (lpObj->Authority & 2 ) == 2 ) { LogAddTD("Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "Set GuildWar"); pId = this->GetTokenString(); if ( pId != NULL ) { char * Rival = this->GetTokenString(); if ( Rival != NULL ) { if ( strlen(pId) >= 1 ) { if ( strlen(Rival) >= 1 ) { ::GCManagerGuildWarSet(pId, Rival, 1); } } } } } else { if ( gEnableBattleSoccer != FALSE ) { pId = this->GetTokenString(); if ( pId != NULL ) { if ( strlen(pId) >= 1 ) { ::GCGuildWarRequestResult(pId, aIndex, 1); } } } } } break; case 201: //110: { gObjBillRequest(&gObj[aIndex]); } break; case 203: //112: { pId = this->GetTokenString(); if ( pId != NULL ) { BOOL bState; if ( strcmp(pId, "on" ) == 0 ) { bState = TRUE; } else if ( strcmp(pId, "off") == 0 ) { bState = FALSE; } if ( bState >= FALSE && bState <= TRUE ) { ::gObjSetTradeOption(aIndex, bState); ::gObjSetDuelOption(aIndex, bState); } } } break; case 320: //117: { if ( (lpObj->Authority &2) != 2 ) { return FALSE; } LogAddTD("[KUNDUN] Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "ÄïµÐ»óź¸±â"); // #translation Require Translation KUNDUN_GM_LOG.Output("[KUNDUN] Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "ÄïµÐ»óź¸±â"); // #translation Require Translation for ( int n=0;n<MAX_VIEWPORT;n++) { if ( lpObj->VpPlayer[n].state != 0 ) { if ( lpObj->VpPlayer[n].type == OBJ_MONSTER ) { if ( lpObj->VpPlayer[n].number >= 0 ) { LPOBJ lpTarget = &gObj[lpObj->VpPlayer[n].number]; if ( lpTarget->Class == 275 ) { TNotice pNotice(1); pNotice.SendToUser(lpObj->m_Index, "ÄïµÐ HP = %7.0f / %7.0f", lpTarget->Life, lpTarget->MaxLife); //Require Translation pNotice.SendToUser(lpObj->m_Index, "ÄïµÐ HP ÃÊ´çȸº¹·® = %d ȸº¹·® = %d ȸº¹½Ã°£ = %d", giKundunRefillHPSec, giKundunRefillHP, giKundunRefillHPTime); // Require Translation } } } } } } break; case 321: //118: { if ( (lpObj->Authority &2 ) != 2 ) { return FALSE; } LogAddTD("[KUNDUN] Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "ÄïµÐHP¼³Á¤"); // Require Translation KUNDUN_GM_LOG.Output("[KUNDUN] Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "ÄïµÐHP¼³Á¤"); // Require Translation int iLife = this->GetTokenNumber(); for ( int n=0;n<MAX_VIEWPORT;n++) { if ( lpObj->VpPlayer[n].state != FALSE ) { if ( lpObj->VpPlayer[n].type == OBJ_MONSTER ) { if ( lpObj->VpPlayer[n].number >= 0 ) { LPOBJ lpTarget = &gObj[lpObj->VpPlayer[n].number]; if ( lpTarget->Class == 275 ) { if ( iLife <= 5000 ) { iLife = 5000 ; } if ( iLife > lpTarget->MaxLife ) { iLife = lpTarget->MaxLife; } lpTarget->Life = iLife; TNotice pNotice(1); pNotice.SendToUser(lpObj->m_Index, "ÄïµÐ HP = %7.0f / %7.0f", lpTarget->Life, lpTarget->MaxLife); //Require Translation } } } } } } break; case 322: //119: { if ( (lpObj->Authority &2 ) != 2 ) { return FALSE; } LogAddTD("[KUNDUN] Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "ÄïµÐHPȸº¹·®¼³Á¤"); // Require Translation KUNDUN_GM_LOG.Output("[KUNDUN] Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "ÄïµÐHPȸº¹·®¼³Á¤"); // Require Translation int RefillHP = this->GetTokenNumber(); if ( RefillHP <= 0 || RefillHP > 5000000 ) { return 0; } giKundunRefillHP = RefillHP; TNotice pNotice(0); pNotice.SendToUser(lpObj->m_Index, "ÄïµÐ HP ÃÊ´çȸº¹·® = %d ȸº¹·® = %d ȸº¹½Ã°£ = %d", giKundunRefillHPSec, giKundunRefillHP, giKundunRefillHPTime); // Require Translation } break; case 323: //120: { if ( (lpObj->Authority &2 ) != 2 ) { return FALSE; } LogAddTD("[KUNDUN] Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "ÄïµÐHPÃÊ´çȸº¹·®¼³Á¤"); // Require Translation KUNDUN_GM_LOG.Output("[KUNDUN] Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "ÄïµÐHPÃÊ´çȸº¹·®¼³Á¤"); // Require Translation int RefillHPSec = this->GetTokenNumber(); if ( RefillHPSec <= 0 || RefillHPSec > 10000 ) { return 0; } giKundunRefillHPSec = RefillHPSec; TNotice pNotice(0); pNotice.SendToUser(lpObj->m_Index, "ÄïµÐ HP ÃÊ´çȸº¹·® = %d ȸº¹·® = %d ȸº¹½Ã°£ = %d", giKundunRefillHPSec, giKundunRefillHP, giKundunRefillHPTime); // Require Translation } break; case 324: //121: { if ( (lpObj->Authority &2 ) != 2 ) { return FALSE; } LogAddTD("[KUNDUN] Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "ÄïµÐHPȸº¹½Ã°£¼³Á¤"); // Require Translation KUNDUN_GM_LOG.Output("[KUNDUN] Use GM Command -> [ %s ]\t[ %s ]\t[ %s ] : %s", lpObj->Ip_addr, lpObj->AccountID, lpObj->Name, "ÄïµÐHPȸº¹½Ã°£¼³Á¤"); // Require Translation int RefillHPTime = this->GetTokenNumber(); if ( RefillHPTime < 0 || RefillHPTime > 60000 ) { return 0; } giKundunRefillHPTime = RefillHPTime; TNotice pNotice(0); pNotice.SendToUser(lpObj->m_Index, "ÄïµÐ HP ÃÊ´çȸº¹·® = %d ȸº¹·® = %d ȸº¹½Ã°£ = %d", giKundunRefillHPSec, giKundunRefillHP, giKundunRefillHPTime); // Require Translation } break; case 369: g_Kanturu.OperateGmCommand(lpObj->m_Index, 0); break; case 370: g_Kanturu.OperateGmCommand(lpObj->m_Index, 1); break; case 371: g_Kanturu.OperateGmCommand(lpObj->m_Index, 2); break; case 372: g_Kanturu.OperateGmCommand(lpObj->m_Index, 3); break; case 373: g_Kanturu.OperateGmCommand(lpObj->m_Index, 4); break; case 374: g_Kanturu.OperateGmCommand(lpObj->m_Index, 5); break; case 375: g_Kanturu.OperateGmCommand(lpObj->m_Index, 6); break; case 376: g_Kanturu.OperateGmCommand(lpObj->m_Index, 7); break; case 377: g_Kanturu.OperateGmCommand(lpObj->m_Index, 8); break; case 378: g_Kanturu.OperateGmCommand(lpObj->m_Index, 9); break; case 379: g_Kanturu.OperateGmCommand(lpObj->m_Index, 10); break; case 380: g_Kanturu.OperateGmCommand(lpObj->m_Index, 11); break; case 381: g_Kanturu.OperateGmCommand(lpObj->m_Index, 12); break; case 382: g_Kanturu.OperateGmCommand(lpObj->m_Index, 13); break; case 383: g_Kanturu.OperateGmCommand(lpObj->m_Index, 14); break; case 384: g_Kanturu.OperateGmCommand(lpObj->m_Index, 15); break; case 385: g_Kanturu.OperateGmCommand(lpObj->m_Index, 16); break; case 386: g_Kanturu.OperateGmCommand(lpObj->m_Index, 17); break; case 387: g_Kanturu.OperateGmCommand(lpObj->m_Index, 18); break; case 388: g_Kanturu.OperateGmCommand(lpObj->m_Index, 19); break; case 389: g_Kanturu.OperateGmCommand(lpObj->m_Index, 20); break; } return 0; }
void ImperialFort_StartStage2(void * lpParam) { while(true) { BYTE Packet[13] = {0xC1, 0x0D, 0xF7, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; if(ImperialMobCfg.nMonsterOfEvent <= 0) { //Prepare to Stage 3 (kill gates)(move to position) ImperialMain.Status = 3; ImperialMain.Stage = 2; Imperial.CanUseTwisting = 1; PMSG_FORT_EVENT_TIMER pMsg; pMsg.h.c = 0xC1; pMsg.h.size = 0x0D; pMsg.h.headcode = 0xF7; pMsg.h.subcode = 0x04; pMsg.Status = 0x01; pMsg.Unk4 = 0x00; pMsg.TimerL = 0; pMsg.TimerH = 0; pMsg.Unk5 = 0x00; pMsg.Mob = 0; for(int i=MIN_PLAYERID;i<MAX_PLAYERID;i++) { GOBJSTRUCT *gObj = (GOBJSTRUCT*)OBJECT_POINTER(i); if(gObj->Connected == 3 && gObj->MapNumber == Imperial.EventMap && ImperialMain.UserIsInFort[GET_USER_INDEX(i)] == 1 && ImperialMain.Stage == 2 && (ImperialMain.Status == 3 || ImperialMain.Status == 0)) { DataSend(i, (BYTE*)&pMsg, pMsg.h.size); } } Imperial.StandByTimer = 144; _beginthread( ImperialFort_StandBy2, 0, NULL ); _endthread(); } if(Imperial.Stage2Timer <= 0) { for(int i=MIN_PLAYERID;i<MAX_PLAYERID;i++) { GOBJSTRUCT *gObj = (GOBJSTRUCT*)OBJECT_POINTER(i); if(gObj->Connected == 3) { if(ImperialMain.UserIsInFort[GET_USER_INDEX(i)] == 1) { DataSend(i, &Packet[0], Packet[1]); //Send Fail Message gObjTeleport(i,0,125,124); //Clear Event 2 Imperial.EventClearIndex(i); } } } _endthread(); } Imperial.Stage2Timer -= 4; PMSG_FORT_EVENT_TIMER pMsg; pMsg.h.c = 0xC1; pMsg.h.size = 0x0D; pMsg.h.headcode = 0xF7; pMsg.h.subcode = 0x04; pMsg.Status = 0x02; pMsg.Unk4 = 0x00; pMsg.TimerL = LOBYTE(Imperial.Stage2Timer); pMsg.TimerH = HIBYTE(Imperial.Stage2Timer); pMsg.Unk5 = 0x00; pMsg.Mob = ImperialMobCfg.nMonsterOfEvent; for(int i=MIN_PLAYERID;i<MAX_PLAYERID;i++) { GOBJSTRUCT *gObj = (GOBJSTRUCT*)OBJECT_POINTER(i); if(gObj->Connected == 3 && gObj->MapNumber == Imperial.EventMap && ImperialMain.UserIsInFort[GET_USER_INDEX(i)] == 1 && ImperialMain.Stage == 2 && ( ImperialMain.Status == 1 || ImperialMain.Status == 3) ) { DataSend(i, (BYTE*)&pMsg, pMsg.h.size); } else if(gObj->Connected == 3 && gObj->MapNumber != Imperial.EventMap && ImperialMain.UserIsInFort[GET_USER_INDEX(i)] == 1 && ImperialMain.Stage == 2 && ( ImperialMain.Status == 1 || ImperialMain.Status == 3)) { DataSend(i, &Packet[0], Packet[1]); Imperial.EventClear(); _endthread(); } else if(UserCountInMap(Imperial.EventMap) == 0 && ImperialMain.UserIsInFort[GET_USER_INDEX(i)] == 1 && ImperialMain.Stage == 2 && ( ImperialMain.Status == 1 || ImperialMain.Status == 3)) { DataSend(i, &Packet[0], Packet[1]); Imperial.EventClear(); _endthread(); } else { if(gObj->Connected == 3 && gObj->MapNumber == Imperial.EventMap && ImperialMain.UserIsInFort[GET_USER_INDEX(i)] != 1 && ImperialMain.Stage == 2 && ( ImperialMain.Status == 1 || ImperialMain.Status == 3)) { gObjTeleport(i,0,125,125); //Imperial.EventClear(); //_endthread(); } } } Sleep(1000); } _endthread(); }
void ImperialFort_StandBy2(void * lpParam) { while(true) { if(Imperial.StandByTimer < 1) { Imperial.StandByTimer = 0; ImperialMain.Status = 3; ImperialMain.Stage = 3; Imperial.CanUseTwisting = 1; MonstersDelete(); if(Imperial.EventDay == 1) { SetMobs(1,1,"ImperialMobs.dat",2); } else if(Imperial.EventDay == 2) { SetMobs(2,2,"ImperialMobs.dat",2); } else if(Imperial.EventDay == 3) { SetMobs(3,3,"ImperialMobs.dat",2); } else if(Imperial.EventDay == 4) { SetMobs(4,4,"ImperialMobs.dat",2); } _beginthread( ImperialFort_StartStage3, 0, NULL ); _endthread(); } Imperial.StandByTimer -= 4; PMSG_FORT_EVENT_TIMER pMsg; pMsg.h.c = 0xC1; pMsg.h.size = 0x0D; pMsg.h.headcode = 0xF7; pMsg.h.subcode = 0x04; pMsg.Status = 0x01; pMsg.Unk4 = 0x00; pMsg.TimerL = LOBYTE(Imperial.StandByTimer); pMsg.TimerH = HIBYTE(Imperial.StandByTimer); pMsg.Unk5 = 0x00; pMsg.Mob = 0; BYTE Packet[13] = {0xC1, 0x0D, 0xF7, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; for(int i=MIN_PLAYERID;i<MAX_PLAYERID;i++) { GOBJSTRUCT *gObj = (GOBJSTRUCT*)OBJECT_POINTER(i); if(gObj->Connected == 3 && gObj->MapNumber == Imperial.EventMap && ImperialMain.UserIsInFort[GET_USER_INDEX(i)] == 1) { DataSend(i, (BYTE*)&pMsg, pMsg.h.size); } else if(gObj->Connected == 3 && gObj->MapNumber != Imperial.EventMap && ImperialMain.UserIsInFort[GET_USER_INDEX(i)] == 1) { DataSend(i, &Packet[0], Packet[1]); Imperial.EventClear(); _endthread(); } else if(UserCountInMap(Imperial.EventMap) == 0 && ImperialMain.UserIsInFort[GET_USER_INDEX(i)] == 1) { DataSend(i, &Packet[0], Packet[1]); Imperial.EventClear(); _endthread(); } else { if(gObj->Connected == 3 && gObj->MapNumber == Imperial.EventMap && ImperialMain.UserIsInFort[GET_USER_INDEX(i)] != 1) { gObjTeleport(i,0,125,125); //Imperial.EventClear(); //_endthread(); } } } Sleep(1000); } _endthread(); }
void ImperialFort_StartStage4(void * lpParam) { while(true) { BYTE Packet[13] = {0xC1, 0x0D, 0xF7, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; if(ImperialMobCfg.nMonsterOfEvent <= 0) { if(Imperial.EventDay != 4) { //End Event Succes ImperialMain.Status = 0; PMSG_FORT_EVENT_TIMER pMsg; pMsg.h.c = 0xC1; pMsg.h.size = 0x0D; pMsg.h.headcode = 0xF7; pMsg.h.subcode = 0x04; pMsg.Status = 0x01; pMsg.Unk4 = 0x00; pMsg.TimerL = 0; pMsg.TimerH = 0; pMsg.Unk5 = 0x00; pMsg.Mob = 0; for(int i=MIN_PLAYERID;i<MAX_PLAYERID;i++) { GOBJSTRUCT *gObj = (GOBJSTRUCT*)OBJECT_POINTER(i); if(gObj->Connected == 3 && gObj->MapNumber == Imperial.EventMap && ImperialMain.UserIsInFort[GET_USER_INDEX(i)] == 1 && ImperialMain.Stage == 4 && (ImperialMain.Status == 3 || ImperialMain.Status == 0)) { int Experience = 1234567890; PMSG_FOR_END_MESSAGE pMsg; pMsg.h.c = 0xC1; pMsg.h.size = 0x0D; pMsg.h.headcode = 0xF7; pMsg.h.subcode = 0x06; pMsg.Type = 0x02; pMsg.Experience = Experience; DataSend(i, (BYTE*)&pMsg, pMsg.h.size); gObj->Experience += Experience; GCLevelUpMsgSend(i,0); gObjTeleport(i,0,125,124); //Clear Event 2 //Imperial.EventClearIndex(i); ImperialMain.UserIsInFort[GET_USER_INDEX(i)] = 0; _beginthread( ImperialFort_EndEvent, 0, NULL ); } } } else { Imperial.CanUseTwisting = 1; Imperial.StandByTimer = 144; _beginthread( ImperialFort_StandBy3, 0, NULL ); } _endthread(); } if(Imperial.Stage4Timer <= 0) { for(int i=MIN_PLAYERID;i<MAX_PLAYERID;i++) { GOBJSTRUCT *gObj = (GOBJSTRUCT*)OBJECT_POINTER(i); if(gObj->Connected == 3) { if(ImperialMain.UserIsInFort[GET_USER_INDEX(i)] == 1) { DataSend(i, &Packet[0], Packet[1]); //Send Fail Message gObjTeleport(i,0,125,124); //Clear Event 2 Imperial.EventClearIndex(i); } } } _endthread(); } Imperial.Stage4Timer -= 4; PMSG_FORT_EVENT_TIMER pMsg; pMsg.h.c = 0xC1; pMsg.h.size = 0x0D; pMsg.h.headcode = 0xF7; pMsg.h.subcode = 0x04; pMsg.Status = 0x02; pMsg.Unk4 = 0x00; pMsg.TimerL = LOBYTE(Imperial.Stage4Timer); pMsg.TimerH = HIBYTE(Imperial.Stage4Timer); pMsg.Unk5 = 0x00; pMsg.Mob = ImperialMobCfg.nMonsterOfEvent; for(int i=MIN_PLAYERID;i<MAX_PLAYERID;i++) { GOBJSTRUCT *gObj = (GOBJSTRUCT*)OBJECT_POINTER(i); if(gObj->Connected == 3 && gObj->MapNumber == Imperial.EventMap && ImperialMain.UserIsInFort[GET_USER_INDEX(i)] == 1 && ImperialMain.Stage == 4 && ( ImperialMain.Status == 1 || ImperialMain.Status == 3) ) { DataSend(i, (BYTE*)&pMsg, pMsg.h.size); } else if(gObj->Connected == 3 && gObj->MapNumber != Imperial.EventMap && ImperialMain.UserIsInFort[GET_USER_INDEX(i)] == 1 && ImperialMain.Stage == 4 && ( ImperialMain.Status == 1 || ImperialMain.Status == 3)) { DataSend(i, &Packet[0], Packet[1]); Imperial.EventClear(); _endthread(); } else if(UserCountInMap(Imperial.EventMap) == 0 && ImperialMain.UserIsInFort[GET_USER_INDEX(i)] == 1 && ImperialMain.Stage == 4 && ( ImperialMain.Status == 1 || ImperialMain.Status == 3)) { DataSend(i, &Packet[0], Packet[1]); Imperial.EventClear(); _endthread(); } else { if(gObj->Connected == 3 && gObj->MapNumber == Imperial.EventMap && ImperialMain.UserIsInFort[GET_USER_INDEX(i)] != 1 && ImperialMain.Stage == 4 && ( ImperialMain.Status == 1 || ImperialMain.Status == 3)) { gObjTeleport(i,0,125,125); } } } Sleep(1000); } _endthread(); }
void ImperialFort_CheckState(void * lpParam) { while(true) { BYTE Packet[13] = {0xC1, 0x0D, 0xF7, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; for(int i=MIN_PLAYERID;i<MAX_PLAYERID;i++) { GOBJSTRUCT *gObj = (GOBJSTRUCT*)OBJECT_POINTER(i); if(gObj->Connected == 3) { gObjCheckPaperCountInInventory(i); if(gObj->MapNumber == Imperial.EventMap && ImperialMain.UserIsInFort[GET_USER_INDEX(i)] == 0) { gObjTeleport(i,0,125,124); //Imperial.EventClear(); //Messages.outNormal(i,"Map Imperial.EventMap, In Fort 0"); //Clear Event 2 Imperial.EventClearIndex(i); } } if(gObj->Connected == 3) { if(gObj->MapNumber != Imperial.EventMap && ImperialMain.UserIsInFort[GET_USER_INDEX(i)] == 1) { //Imperial.EventClear(); //gObjTeleport(i,0,125,124); DataSend(i, &Packet[0], Packet[1]); //Messages.outNormal(i,"Map != Imperial.EventMap, In Fort 1"); //Clear Event 2 Imperial.EventClearIndex(i); } } if(Imperial.ImperialIsRun == 1) { if(gObj->Connected == 3) { if(gObj->MapNumber == Imperial.EventMap && gObj->PartyNumber == -1 && ImperialMain.UserIsInFort[GET_USER_INDEX(i)] == 1) { DataSend(i, &Packet[0], Packet[1]); //Messages.outNormal(i,"Map = Imperial.EventMap, Party -1, In Fort 1"); Imperial.EventClearIndex(i); } if(gObj->MapNumber == Imperial.EventMap && gObj->PartyNumber == -1 && ImperialMain.UserIsInFort[GET_USER_INDEX(i)] != 1) { Imperial.EventClearIndex(i); //Messages.outNormal(i,"Map = Imperial.EventMap, Party -1, In Fort != 1"); } if(UserCountInMap(Imperial.EventMap) == 0) { Imperial.EventClear(); //Messages.outNormal(i,"Map = Imperial.EventMap users 0"); } } } if(Imperial.ImperialIsRun == 0) { if(gObj->Connected == 3) { if(gObj->MapNumber == Imperial.EventMap && ImperialMain.UserIsInFort[GET_USER_INDEX(i)] == 1) { //Clear Event 2 Imperial.EventClearIndex(i); DataSend(i, &Packet[0], Packet[1]); //Messages.outNormal(i,"Map = Imperial.EventMap, In Fort 1"); } if(gObj->MapNumber == Imperial.EventMap && ImperialMain.UserIsInFort[GET_USER_INDEX(i)] != 1) { Imperial.EventClearIndex(i); //DataSend(i, &Packet[0], Packet[1]); //Messages.outNormal(i,"Map = Imperial.EventMap, In Fort !=1"); } } } } //Log.outError("Imperial Status %d",ImperialMain.Status); Sleep(1000); } _endthread(); }
void ImperialEvent::ImperialEnter(int aIndex) { GOBJSTRUCT *gObj = (GOBJSTRUCT*)OBJECT_POINTER(aIndex); SYSTEMTIME t; GetLocalTime(&t); /*char DayName[10]; if(t.wDayOfWeek == 1){ sprintf_s(DayName,"Monday"); } else if(t.wDayOfWeek == 2){ sprintf_s(DayName,"Tuesday"); } else if(t.wDayOfWeek == 3){ sprintf_s(DayName,"Wednesday"); } else if(t.wDayOfWeek == 4){ sprintf_s(DayName,"Thursday"); } else if(t.wDayOfWeek == 5){ sprintf_s(DayName,"Friday"); } else if(t.wDayOfWeek == 6){ sprintf_s(DayName,"Saturday"); } else if(t.wDayOfWeek == 0){ sprintf_s(DayName,"Sunday"); }*/ if(t.wDayOfWeek == 1 || t.wDayOfWeek == 4){ Imperial.EventDay = 1; } else if(t.wDayOfWeek == 2 || t.wDayOfWeek == 5){ Imperial.EventDay = 2; } else if(t.wDayOfWeek == 3 || t.wDayOfWeek == 6){ Imperial.EventDay = 3; } else if(t.wDayOfWeek == 0){ Imperial.EventDay = 4; } if(gObj->PartyNumber != -1) { EventClear(); if(Imperial.EventDay == 1) { SetMobs(1,1,"ImperialMobs.dat",0); SetGates(1,1,"ImperialGates.dat"); } else if(Imperial.EventDay == 2) { SetMobs(2,2,"ImperialMobs.dat",0); SetGates(2,2,"ImperialGates.dat"); } else if(Imperial.EventDay == 3) { SetMobs(3,3,"ImperialMobs.dat",0); SetGates(3,3,"ImperialGates.dat"); } else if(Imperial.EventDay == 4) { SetMobs(4,4,"ImperialMobs.dat",0); SetGates(4,4,"ImperialGates.dat"); } for(int i=MIN_PLAYERID;i<MAX_PLAYERID;i++) { GOBJSTRUCT *gObjOther = (GOBJSTRUCT*)OBJECT_POINTER(i); if(gObj->Connected == 3 && gObjOther->PartyNumber == gObj->PartyNumber) { if(Imperial.EventDay == 1) { gObjTeleport(i,69,231,14); Imperial.EventMap = 69; } else if(Imperial.EventDay == 2) { gObjTeleport(i,70,86,66); Imperial.EventMap = 70; } else if(Imperial.EventDay == 3) { gObjTeleport(i,71,154,186); Imperial.EventMap = 71; } else if(Imperial.EventDay == 4) { gObjTeleport(i,72,93,68); Imperial.EventMap = 72; } Messages.outNormal(i,"[Imperial Fort] Teleporting to Event Map."); PMSG_FORT_EVENT_TIMER pMsg; //0xC1, 0x0D, 0xF7, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28 pMsg.h.c = 0xC1; pMsg.h.size = 0x0D; pMsg.h.headcode = 0xF7; pMsg.h.subcode = 0x04; pMsg.Status = 0x01; pMsg.Unk4 = 0x00; pMsg.TimerL = LOBYTE(Imperial.StartStandByTimer); pMsg.TimerH = HIBYTE(Imperial.StartStandByTimer); pMsg.Unk5 = 0x00; pMsg.Mob = 0; DataSend(i, (BYTE*)&pMsg, pMsg.h.size); ImperialMain.UserIsInFort[GET_USER_INDEX(i)] = 1; ImperialMain.Status = 0; ImperialMain.Stage = 1; Imperial.ImperialIsRun = 1; ImperialUserCount++; if(Imperial.StandByRun == 0) { Imperial.StandByRun = 1; _beginthread( ImperialFort_StartStandBy, 0, NULL ); } Messages.outNormal(i,"[Imperial Fort] Event will start in 1 minute."); } } } else { Messages.outNormal(aIndex,"[Imperial Fort] Event only for party."); } }