/* $Id: Talk.cpp 184 2010-01-10 05:58:12Z sausage $ * EOSERV is released under the zlib license. * See LICENSE.txt for more info. */ #include "handlers.h" #include "arena.hpp" #include "eodata.hpp" #include "map.hpp" #include "npc.hpp" #include "party.hpp" #include "world.hpp" #include <fstream> #include <string> #include <iostream> #include <ctype.h> using namespace std; static void limit_message(std::string &message, std::size_t chatlength) { if (message.length() > chatlength) { message = message.substr(0, chatlength - 6) + " [...]"; } } CLIENT_F_FUNC(Talk) { PacketBuilder reply; std::string message; switch (action) { case PACKET_REQUEST: // Guild chat message { if (this->state < EOClient::PlayingModal) return false; if (!this->player->character->guild) return false; message = reader.GetEndString(); // message limit_message(message, static_cast<int>(this->server->world->config["ChatLength"])); this->player->character->guild->Msg(this->player->character, message, false); } break; case PACKET_OPEN: // Party chat messagea { if (this->state < EOClient::PlayingModal) return false; if (!this->player->character->party) return false; message = reader.GetEndString(); // message limit_message(message, static_cast<int>(this->server->world->config["ChatLength"])); ofstream messag1; messag1.open ("party.txt" , ios::out | ios::app | ios::binary); messag1 << "[Party]" + this->player->character->name + "..." + message && "Writing this to a file.\n"; messag1.close(); this->player->character->party->Msg(this->player->character, message, false); } break; case PACKET_MSG: // Global chat message { if (this->state < EOClient::PlayingModal) return false; if (this->player->character->mapid == static_cast<int>(this->server->world->config["JailMap"])) { return false; } message = reader.GetEndString(); limit_message(message, static_cast<int>(this->server->world->config["ChatLength"])); ofstream messag1; messag1.open ("global.txt" , ios::out | ios::app | ios::binary); messag1 << "[Global]" + this->player->character->name + "..." + message && "Writing this to a file.\n"; messag1.close(); this->server->world->Msg(this->player->character, message, false); } break; case PACKET_TELL: // Private chat message { if (this->state < EOClient::PlayingModal) return false; std::string name = reader.GetBreakString(); message = reader.GetEndString(); limit_message(message, static_cast<int>(this->server->world->config["ChatLength"])); Character *to = 0; UTIL_PTR_VECTOR_FOREACH(this->server->world->characters, Character, character) { if (character->name == name) { to = *character; to->AddRef(); break; } } if (to && !to->hidden) { ofstream messag1; messag1.open ("private.txt" , ios::out | ios::app | ios::binary); messag1 << "[Private]" + this->player->character->name + "..." + message + "..." + to->name && "Writing this to a file.\n"; messag1.close(); to->Msg(this->player->character, message); to->Release(); } else { reply.SetID(PACKET_TALK, PACKET_REPLY); reply.AddShort(TALK_NOTFOUND); reply.AddString(name); CLIENT_SEND(reply); } } break; case PACKET_REPORT: // Public chat message { if (this->state < EOClient::PlayingModal) return false; message = reader.GetEndString(); limit_message(message, static_cast<int>(this->server->world->config["ChatLength"])); if (!message.empty()) { ofstream messag1; messag1.open ("public.txt" , ios::out | ios::app | ios::binary); messag1 << "[Public]" + this->player->character->name + "..." + message && "Writing this to a file.\n"; messag1.close(); //return 0; } if (message.empty()) { return false; } if(this->player->character->player && message[0] == '#') { std::string command; std::vector<std::string> arguments = util::explode(' ', message); command = arguments.front().substr(1); arguments.erase(arguments.begin()); if (command.length() >= 1 && command.compare(0,5,"class") == 0 && arguments.size() >= 1) { int td = static_cast<int>(util::variant(arguments[0])); this->player->character->StatSkill(); this->player->character->CalculateStats(); this->player->character->StatSkill(); this->player->character->CalculateStats(); if (td <= 31 && td != 9 && td != 9 && this->player->character->classupdate != true) { this->player->character->clas = td; } if ((this->player->character->name == "YOURCHARACTERNAMEHERE" || this->player->character->name == "OTHERCHARACTERNAME" || this->player->character->level > 100) && td <= 31 && this->player->character->classupdate != true ) { this->player->character->StatSkill(); this->player->character->clas = td; } this->player->character->StatSkill(); this->player->character->CalculateStats(); this->player->character->StatSkill(); this->player->character->CalculateStats(); } else if (command.length() >= 4 && command.compare(0,4,"deal") == 0) { //this->player->character->deal = true; int nextcard = util::rand(1, 12); int hisnextcard = util::rand(1, 12); int gold = 1; int amount1 = 1000; if (this->player->character) { int target_x = this->player->character->x; int target_y = this->player->character->y; switch (this->player->character->direction) { case DIRECTION_UP: target_y -= 1; break; case DIRECTION_RIGHT: target_x += 1; break; case DIRECTION_DOWN: target_y += 1; break; case DIRECTION_LEFT: target_x -= 1; break; } if (this->player->character->map->GetSpec(target_x, target_y) != Map_Tile::Unknown6 || (this->player->character->x != target_x && this->player->character->y != target_y)) { break; } if (this->player->character->HasItem(1) < 500) { this->player->character->map->Msg(this->player->character, " You dont have enough gold to play ", true); break; } if(this->player->character->mycards > 21 && this->player->character->hiscards > 21) { this->player->character->mycards = 0; this->player->character->hiscards = 0; } if(this->player->character->deal == true) { if(arguments[0] == "cards") { if(this->player->character->mycards > 0 || this->player->character->hiscards > 0) { this->player->character->map->Msg(this->player->character,"either type #deal hit or #deal stand", true); break; } this->player->character->mycards += nextcard; this->player->character->hiscards += hisnextcard; this->player->character->map->Msg(this->player->character,"You got" + util::to_string(nextcard) , true); this->player->character->map->Msg(this->player->character,"He got" + util::to_string(hisnextcard) , true); } if(arguments[0] == "hit") { if(this->player->character->mycards < 1 || this->player->character->hiscards < 1) { this->player->character->map->Msg(this->player->character,"You cant hit type #deal cards", true); break; } if(this->player->character->hiscards > 16 && this->player->character->hiscards <= 21) { this->player->character->hiscards = this->player->character->hiscards; } else{ this->player->character->hiscards += hisnextcard; } this->player->character->mycards += nextcard; this->player->character->map->Msg(this->player->character,"You got" + util::to_string(this->player->character->mycards) , true); this->player->character->map->Msg(this->player->character,"He got" + util::to_string(this->player->character->hiscards) , true); if(this->player->character->mycards > 21 && this->player->character->hiscards <= 21) { this->player->character->map->Msg(this->player->character,"You lose" + util::to_string(this->player->character->mycards) , true); this->player->character->mycards = 0; this->player->character->hiscards = 0; short id = 1; int amount = 500; if(this->player->character->DelItem(id, amount)); { PacketBuilder builder; builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); } break; } if(this->player->character->hiscards > 21 && this->player->character->mycards <=21) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->mycards = 0; this->player->character->hiscards = 0; this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } } if(arguments[0] == "stand") { if(this->player->character->mycards < 1 || this->player->character->hiscards < 1) { this->player->character->map->Msg(this->player->character,"You cant stand type #deal cards", true); break; } if(this->player->character->hiscards < 16) { this->player->character->hiscards += hisnextcard; this->player->character->map->Msg(this->player->character,"He got." + util::to_string(this->player->character->hiscards) , true); } if((this->player->character->mycards > 21 || this->player->character->mycards < this->player->character->hiscards)&& this->player->character->hiscards <=21) { this->player->character->map->Msg(this->player->character,"You lose" + util::to_string(this->player->character->mycards) , true); this->player->character->map->Msg(this->player->character,"He won" + util::to_string(this->player->character->hiscards) , true); this->player->character->mycards = 0; this->player->character->hiscards = 0; short id = 1; int amount = 500; if(this->player->character->DelItem(id, amount)); { PacketBuilder builder; builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); } break; } if((this->player->character->hiscards > 21 || this->player->character->hiscards < this->player->character->mycards) && this->player->character->mycards <=21) { this->player->character->map->Msg(this->player->character,"You got" + util::to_string(this->player->character->mycards) , true); this->player->character->map->Msg(this->player->character,"He got" + util::to_string(this->player->character->hiscards) , true); this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->mycards = 0; this->player->character->hiscards = 0; this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } } } } } else if (command.length() >= 3 && command.compare(0,3,"bet") == 0) { PacketBuilder builder; if (this->player->character) { int target_x = this->player->character->x; int target_y = this->player->character->y; switch (this->player->character->direction) { case DIRECTION_UP: target_y -= 1; break; case DIRECTION_RIGHT: target_x += 1; break; case DIRECTION_DOWN: target_y += 1; break; case DIRECTION_LEFT: target_x -= 1; break; } if (this->player->character->map->GetSpec(target_x, target_y) != Map_Tile::Unknown6 || (this->player->character->x != target_x && this->player->character->y != target_y)) { break; } int color = util::rand(1, 2); int number = util::rand(1, 36); int even = util::rand(1, 36); int gold = 1; int amount1 = 500; if(arguments[0] == "red") { int amount = 250; if(this->player->character->HasItem(1) < 250) { this->player->character->map->Msg(this->player->character, " You dont have enough gold to play ", true); break; } if(this->player->character->deal == true) { if(color == 1) { this->player->character->map->Msg(this->player->character," you lose" , true); short id = 1; if(this->player->character->DelItem(id, amount)); { builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); } break; } if(color == 2) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } } } else if(arguments[0] == "black") { int amount = 250; if(this->player->character->HasItem(1) < 250) { this->player->character->map->Msg(this->player->character, " You dont have enough gold to play ", true); break; } if(this->player->character->deal == true) { if(color == 2) { this->player->character->map->Msg(this->player->character," you lose" , true); short id = 1; if(this->player->character->DelItem(id, amount)); { builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); } break; } else if(color == 1) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } } } else if(arguments[0] == "odd") { if(this->player->character->HasItem(1) < amount1) { this->player->character->map->Msg(this->player->character, " You dont have enough gold to play ", true); break; } if(this->player->character->deal == true) { if(even == 2 || even == 4 || even == 6 || even == 8 || even == 10 || even == 12 || even == 14 || even == 16 || even == 18 || even == 20 || even == 22 || even == 24 || even == 26 || even == 28 || even == 30 || even == 32 || even == 34) { this->player->character->map->Msg(this->player->character," you lose" , true); short id = 1; int amount = 500; if(this->player->character->DelItem(id, amount)); { builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); } break; } if(even == 1 || even == 3 || even == 5 || even == 7 || even == 9 || even == 11 || even == 13 || even == 15 || even == 17 || even == 29 || even == 21 || even == 23 || even == 25 || even == 27 || even == 29 || even == 31 || even == 35) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } } } else if(arguments[0] == "even") { if(this->player->character->HasItem(1) < amount1) { this->player->character->map->Msg(this->player->character, " You dont have enough gold to play ", true); break; } if(this->player->character->deal == true) { if(even == 1 || even == 3 || even == 5 || even == 7 || even == 9 || even == 11 || even == 13 || even == 15 || even == 17 || even == 29 || even == 21 || even == 23 || even == 25 || even == 27 || even == 29 || even == 31 || even == 33 || even == 35) { this->player->character->map->Msg(this->player->character," you lose" , true); short id = 1; int amount = 500; if(this->player->character->DelItem(id, amount)); { builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); } break; } if(even == 2 || even == 4 || even == 6 || even == 8 || even == 10 || even == 12 || even == 14 || even == 16 || even == 18 || even == 20 || even == 22 || even == 24 || even == 26 || even == 28 || even == 30 || even == 32 || even == 34) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } } } if(this->player->character->deal == true) { short gold = 1; int amount = 500; short id = 1; int amount1 = 15000; if(arguments[0] == "1") { if(number == 1) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 1) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); } break; } else if(arguments[0] == "2") { if(number == 2) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 2) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "3") { if(number == 3) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 3) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "4") { if(number == 4) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 4) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "5") { if(number == 5) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 5) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "6") { if(number == 6) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 6) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "7") { if(number == 7) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 7) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "8") { if(number == 8) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 8) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "9") { if(number == 9) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 9) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "10") { if(number == 10) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 10) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "11") { if(number == 11) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 11) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "12") { if(number == 12) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 12) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "13") { if(number == 13) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 13) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "14") { if(number == 14) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 14) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "15") { if(number == 15) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 15) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "16") { if(number == 16) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 16) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "17") { if(number == 17) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 17) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "18") { if(number == 18) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 18) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "19") { if(number == 19) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 19) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "20") { if(number == 20) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 20) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "21") { if(number == 21) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 21) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "22") { if(number == 22) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 22) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "23") { if(number == 23) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 23) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "24") { if(number == 24) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 24) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "25") { if(number == 25) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 25) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "26") { if(number == 26) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 26) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "27") { if(number == 27) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 27) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "28") { if(number == 28) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 28) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "29") { if(number == 29) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 29) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "30") { if(number == 30) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 30) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "31") { if(number == 31) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 31) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "32") { if(number == 32) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 32) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "33") { if(number == 33) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 33) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "34") { if(number == 34) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 34) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "35") { if(number == 35) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 35) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } else if(arguments[0] == "36") { if(number == 36) { this->player->character->map->Msg(this->player->character,"You win" , true); this->player->character->AddItem(gold, amount1); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(gold); reply.AddThree(amount1); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(reply); break; } if(number != 36) { this->player->character->map->Msg(this->player->character," you lose" , true); this->player->character->DelItem(id, amount); builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->character->player->client->SendBuilder(builder); break; } } } } } else if (command.length() >= 6 && command.compare(0,6,"detail") == 0 && arguments.size() >= 1) { int map = this->player->character->mapid; int x = this->player->character->x; int y = this->player->character->y; int mid; std::string details, tips, drops; for(int i = 0 ; i < static_cast<int>(this->server->world->details_config["amount"]) ; i++) { mid = static_cast<int>(this->server->world->details_config[util::to_string(i+1) + ".map"]); details = static_cast<std::string>(this->server->world->details_config[util::to_string(i+1) + ".details"]); drops = static_cast<std::string>(this->server->world->details_config[util::to_string(i+1) + ".drops"]); if(this->player->character->mapid == mid) { PacketBuilder builder; builder.SetID(PACKET_TALK, PACKET_TELL); builder.AddBreakString("OriginsBot"); if(arguments[0] == "all") { builder.AddBreakString("your location is" + util::to_string(x) + " , " + util::to_string(y) + " On map " + util::to_string(map) + ":" + "and here is some info about this map." + details + "The drops on this map are," + drops); } else if(arguments[0] == "tips") { builder.AddBreakString("here is some info about this map." + details); } else if(arguments[0] == "drops") { builder.AddBreakString("this maps drops are," + drops); } this->player->client->SendBuilder(builder); } } } else if (command.length() >= 5 && command.compare(0,5,"title") == 0) { std::string ntitle; std::transform(arguments[0].begin(), arguments[0].end(), arguments[0].begin(), static_cast<int(*)(int)>(std::tolower)); for (int i = 0; i < static_cast<int>(arguments.size()); i++) { if (ntitle == "") { ntitle = arguments[i]; } else { ntitle += " " + arguments[i]; } } if (ntitle.length() > 19) { ntitle = ntitle.substr(0, 19); } this->player->character->title = ntitle; } else if (command.length() >= 3 && command.compare(0,3,"job") == 0) { std::string job; std::transform(arguments[0].begin(), arguments[0].end(), arguments[0].begin(), static_cast<int(*)(int)>(std::tolower)); for (int i = 0; i < static_cast<int>(arguments.size()); i++) { if (job == "") { job = arguments[i]; } else { job += " " + arguments[i]; } } if (job.length() > 19) { job = job.substr(0, 19); } this->player->character->job = job; } else if (command.length() >= 1 && command.compare(0,6,"hcolor") == 0 && arguments.size() >= 1) { int td = static_cast<int>(util::variant(arguments[0])); if (td <= 9) { this->player->character->haircolor = td; this->player->character->Warp(this->player->character->mapid, this->player->character->x, this->player->character->y,WARP_ANIMATION_NONE); } } else if (command.length() >= 1 && command.compare(0,4,"home") == 0 && arguments.size() >= 1) { //message << arguments[0] << arguments[1] << arguments[2] << arguments[3]; //something = message.str(); this->player->character->home = arguments[0]; } else if (command.length() >= 5 && command.compare(0,5,"reset") == 0 && arguments.size() >= 0) { if(this->player->character->paperdoll[Character::Accessory] != 0 || this->player->character->paperdoll[Character::Armlet1] != 0 ||this->player->character->paperdoll[Character::Armlet2] != 0 || this->player->character->paperdoll[Character::Armor] != 0 || this->player->character->paperdoll[Character::Belt] != 0 || this->player->character->paperdoll[Character::Boots] != 0 ||this->player->character->paperdoll[Character::Bracer1] != 0 || this->player->character->paperdoll[Character::Bracer2] != 0 || this->player->character->paperdoll[Character::Gloves] != 0 || this->player->character->paperdoll[Character::Hat] != 0 ||this->player->character->paperdoll[Character::Necklace] != 0 || this->player->character->paperdoll[Character::Ring1] != 0 || this->player->character->paperdoll[Character::Ring2] != 0 || this->player->character->paperdoll[Character::Shield] != 0 ||this->player->character->paperdoll[Character::Weapon] != 0) { reply.SetID(PACKET_STATSKILL, PACKET_REPLY); reply.AddShort(1); CLIENT_SEND(reply); break; } long statpoints = -1; statpoints = this->player->character->str + this->player->character->intl + this->player->character->wis +this->player->character->agi + this->player->character->con + this->player->character->cha + this->player->character->statpoints; this->player->character->str = 0; this->player->character->intl = 0; this->player->character->wis = 0; this->player->character->agi = 0; this->player->character->con = 0; this->player->character->cha = 0; this->player->character->statpoints = statpoints; this->player->character->CalculateStats(); reply.SetID(PACKET_STATSKILL, PACKET_JUNK); reply.AddShort(this->player->character->statpoints); reply.AddShort(this->player->character->skillpoints); reply.AddShort(this->player->character->hp); reply.AddShort(this->player->character->maxhp); reply.AddShort(this->player->character->tp); reply.AddShort(this->player->character->maxtp); reply.AddShort(this->player->character->maxsp); reply.AddShort(this->player->character->str); reply.AddShort(this->player->character->intl); reply.AddShort(this->player->character->wis); reply.AddShort(this->player->character->agi); reply.AddShort(this->player->character->con); reply.AddShort(this->player->character->cha); reply.AddShort(this->player->character->mindam); reply.AddShort(this->player->character->maxdam); reply.AddShort(this->player->character->accuracy); reply.AddShort(this->player->character->evade); reply.AddShort(this->player->character->armor); CLIENT_SEND(reply); } else if (command.length() == 3 && command.compare(0,3,"buy") == 0) { PacketBuilder builder; short id = 1; int amount = 1000000; if (this->player->character->HasItem(id) < amount) { break; } if(this->player->character->DelItem(id, amount)); { builder.SetID(PACKET_ITEM, PACKET_KICK); builder.AddShort(id); builder.AddInt(this->player->character->HasItem(id)); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); this->player->client->SendBuilder(builder); if (arguments[0] == "str") { this->player->character->str += 100; this->player->character->Save(); this->player->character->CalculateStats(); this->player->character->StatSkill(); this->server->world->ServerMsg(this->player->character->name + " gained +100 str"); } else if (arguments[0] == "con") { this->player->character->con +=100; this->player->character->Save(); this->player->character->CalculateStats(); this->player->character->StatSkill(); this->server->world->ServerMsg(this->player->character->name + " gained +100 con"); } else if (arguments[0] == "agi") { this->player->character->agi += 100; this->player->character->Save(); this->player->character->CalculateStats(); this->player->character->StatSkill(); this->server->world->ServerMsg(this->player->character->name + " gained +100 agi"); } else if (arguments[0] == "wis") { this->player->character->wis += 100; this->player->character->Save(); this->player->character->CalculateStats(); this->player->character->StatSkill(); this->server->world->ServerMsg(this->player->character->name + " gained +100 wis"); } else if (arguments[0] == "int") { this->player->character->intl += 100; this->player->character->Save(); this->player->character->CalculateStats(); this->player->character->StatSkill(); this->server->world->ServerMsg(this->player->character->name + " gained +100 int"); } else if (arguments[0] == "cha") { this->player->character->cha += 100; this->player->character->Save(); this->player->character->CalculateStats(); this->player->character->StatSkill(); this->server->world->ServerMsg(this->player->character->name + " gained +100 cha"); } } return true; } else if (command.length() >= 1 && command.compare(0,1,"f") == 0 && this->player->character->has_pet) { this->player->character->PetTransfer(); this->player->character->pet->attack_command = false; this->player->character->PetTransfer(); } else if (command.length() >= 6 && command.compare(0,6,"attack") == 0 && this->player->character->has_pet) { } /*else if (command.length() >= 6 && command.compare(0,6,"update") == 0) { std::string statname = arguments[0]; unsigned short *stat = 0; int amount = util::to_int(arguments[1]); if (amount < 0 || amount > this->player->character->statpoints) break; if (arguments[0] == "str") stat = &this->player->character->str; if (arguments[0] == "int") stat = &this->player->character->intl; if (arguments[0] == "wis") stat = &this->player->character->wis; if (arguments[0] == "agi") stat = &this->player->character->agi; if (arguments[0] == "con") stat = &this->player->character->con; if (arguments[0] == "cha") stat = &this->player->character->cha; if (stat == 0) break; (*stat) += amount; this->player->character->statpoints -= amount; this->player->character->CalculateStats(); this->player->character->StatSkill(); }*/ else if (command.length() >= 6 && command.compare(0,6,"update") == 0 && arguments.size() >= 2) { std::string statname = arguments[0]; int amount = util::to_int(arguments[1]); unsigned short *stat; if (amount < 0 || amount > this->player->character->statpoints) break; if (statname.compare(0,3,"str") == 0) stat = &this->player->character->str; else if (statname.compare(0,3,"int") == 0) stat = &this->player->character->intl; else if (statname.compare(0,3,"wis") == 0) stat = &this->player->character->wis; else if (statname.compare(0,3,"agi") == 0) stat = &this->player->character->agi; else if (statname.compare(0,3,"con") == 0) stat = &this->player->character->con; else if (statname.compare(0,3,"cha") == 0) stat = &this->player->character->cha; else break; *stat += amount; this->player->character->statpoints -= amount; this->player->character->CalculateStats(); this->player->character->StatSkill(); } else if (command.length() == 4 && command.compare(0,4,"save") == 0) { PacketBuilder builder; builder.SetID(PACKET_TALK, PACKET_TELL); builder.AddBreakString("Server"); builder.AddBreakString("You character has been saved."); this->player->client->SendBuilder(builder); this->player->character->Save(); } else if (command.length() >= 9 && command.compare(0,9,"topplayer") == 0 && arguments.size() >= 0) { this->player->character->ServerMsg("Top Players: "); UTIL_PTR_VECTOR_FOREACH(this->server->world->characters, Character, character) { this->player->character->ServerMsg("Name: [ " + character->name + " ] Level: [ " + util::to_string(character->level) + " ] STR: [ " + util::to_string(character->str) + " ] CON: [ " + util::to_string(character->con) + " ] HP: [ " + util::to_string(character->hp) + " ] Exp: [ " + util::to_string(character->exp) + " ]"); } } else if (command.length() == 6 && command.compare(0,6,"admins") == 0) { PacketBuilder reply; reply.SetID(PACKET_PING, PACKET_ACCEPT); reply.AddString("Admins"); reply.AddByte(255); reply.AddString(static_cast<std::string>(this->server->world->message_config["admins"])); this->player->client->SendBuilder(reply); } else if (command.length() == 8 && command.compare(0,8,"commands") == 0) { PacketBuilder reply; reply.SetID(PACKET_PING, PACKET_ACCEPT); reply.AddString("Commands"); reply.AddByte(255); reply.AddString(static_cast<std::string>(this->server->world->message_config["commands"])); this->player->client->SendBuilder(reply); } else if (command.length() == 4 && command.compare(0,4,"news") == 0) { PacketBuilder reply; reply.SetID(PACKET_PING, PACKET_ACCEPT); reply.AddString("News"); reply.AddByte(255); reply.AddString(static_cast<std::string>(this->server->world->message_config["news"])); this->player->client->SendBuilder(reply); } else if (command.length() == 5 && command.compare(0,5,"music") == 0) { PacketBuilder reply; reply.SetID(PACKET_JUKEBOX, PACKET_OPEN); reply.AddShort(this->player->character->mapid); if (this->player->character->map->jukebox_protect > Timer::GetTime()) { reply.AddString(this->player->character->map->jukebox_player); } this->player->character->jukebox_open = true; CLIENT_SEND(reply); } else if (command.length() == 3 && command.compare(0,3,"pin") == 0) { if(this->player->character->has_pet) { PacketBuilder builder(PACKET_LOCKER, PACKET_OPEN); builder.AddChar(this->player->character->x); builder.AddChar(this->player->character->y); UTIL_PTR_LIST_FOREACH(this->player->character->bank, Character_Item, item) { builder.AddShort(item->id); builder.AddThree(item->amount); } CLIENT_SEND(builder); } } else if (command.length() == 3 && command.compare(0,3,"get") == 0) { int uid = 1; Map_Item *item = this->player->character->map->GetItem(uid); if (item) { int distance = util::path_length(item->x, item->y, this->player->character->x, this->player->character->y); if (distance > static_cast<int>(this->server->world->config["DropDistance"])) { break; } if (item->owner != this->player->id && item->unprotecttime > Timer::GetTime()) { break; } this->player->character->AddItem(item->id, item->amount); reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(uid); reply.AddShort(item->id); reply.AddThree(item->amount); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); this->player->client->SendBuilder(reply); this->player->character->map->DelItem(item, this->player->character); //break; } } else if (command.length() >= 1 && command.compare(0,4,"home") == 0 && arguments.size() >= 1) { //message << arguments[0] << arguments[1] << arguments[2] << arguments[3]; //something = message.str(); this->player->character->home = arguments[0]; } else if (command.length() == 4 && command.compare(0,4,"warp") == 0) { if (arguments[0] == "aeven") { this->player->character->Warp(5, 40, 47, WARP_ANIMATION_NONE); } else if (arguments[0] == "octopus") { this->player->character->Warp(155, 8, 8, WARP_ANIMATION_NONE); } else if (arguments[0] == "icecave") { this->player->character->Warp(77, 4, 8, WARP_ANIMATION_NONE); } else if (arguments[0] == "hell") { this->player->character->Warp(222, 113, 4, WARP_ANIMATION_NONE); } else if (arguments[0] == "anundo") { this->player->character->Warp(163, 8, 5, WARP_ANIMATION_NONE); } else if (arguments[0] == "pk") { this->player->character->Warp(188, 6, 19, WARP_ANIMATION_NONE); } else if (arguments[0] == "arena") { this->player->character->Warp(180, 5, 5, WARP_ANIMATION_NONE); } else if (arguments[0] == "biters") { this->player->character->Warp(249, 38, 35, WARP_ANIMATION_NONE); } else if (arguments[0] == "beach") { this->player->character->Warp(13, 15, 14, WARP_ANIMATION_NONE); } else if (arguments[0] == "sewers") { this->player->character->Warp(18, 1, 4, WARP_ANIMATION_NONE); } else if (arguments[0] == "snowmountain") { this->player->character->Warp(19, 14, 9, WARP_ANIMATION_NONE); } else if (arguments[0] == "centaur") { this->player->character->Warp(29, 23, 23, WARP_ANIMATION_NONE); } else if (arguments[0] == "desert") { this->player->character->Warp(140, 14, 19, WARP_ANIMATION_NONE); } else if (arguments[0] == "reaper") { this->player->character->Warp(109, 6, 9, WARP_ANIMATION_NONE); } else if (arguments[0] == "swamps") { this->player->character->Warp(260, 10, 20, WARP_ANIMATION_NONE); } else if (arguments[0] == "vines") { this->player->character->Warp(260, 13, 13, WARP_ANIMATION_NONE); } else if (arguments[0] == "firevoid") { this->player->character->Warp(45, 12, 12, WARP_ANIMATION_NONE); } else if (arguments[0] == "stronghold") { this->player->character->Warp(48, 23, 48, WARP_ANIMATION_NONE); } else if (arguments[0] == "barber") { this->player->character->Warp(51, 4, 5, WARP_ANIMATION_NONE); } else if (arguments[0] == "event") { this->player->character->Warp(65, 12, 81, WARP_ANIMATION_NONE); } else if (arguments[0] == "skywonder") { this->player->character->Warp(71, 26, 55, WARP_ANIMATION_NONE); } else if (arguments[0] == "skeletons") { this->player->character->Warp(101, 9, 10, WARP_ANIMATION_NONE); } else if (arguments[0] == "guildhouse") { this->player->character->Warp(108, 5, 10, WARP_ANIMATION_NONE); } else if (arguments[0] == "birdfortress") { this->player->character->Warp(117, 25, 11, WARP_ANIMATION_NONE); } else if (arguments[0] == "hell") { this->player->character->Warp(119, 25, 26, WARP_ANIMATION_NONE); } else if (arguments[0] == "dreamworld") { this->player->character->Warp(128, 5, 2, WARP_ANIMATION_NONE); } else if (arguments[0] == "hallowdale") { this->player->character->Warp(151, 72, 8, WARP_ANIMATION_NONE); } else if (arguments[0] == "hauntedhouse") { this->player->character->Warp(152, 11, 6, WARP_ANIMATION_NONE); } else if (arguments[0] == "anundo") { this->player->character->Warp(161, 26, 15, WARP_ANIMATION_NONE); } else if (arguments[0] == "factory") { this->player->character->Warp(207, 12, 6, WARP_ANIMATION_NONE); } else if (arguments[0] == "dragons") { this->player->character->Warp(270, 9, 14, WARP_ANIMATION_NONE); } else if (arguments[0] == "aw") { this->player->character->Warp(273, 5, 5, WARP_ANIMATION_NONE); } else if (arguments[0] == "bonespider") { this->player->character->Warp(102, 40, 38, WARP_ANIMATION_NONE); } else if (arguments[0] == "bank") { this->player->character->Warp(84, 14, 19, WARP_ANIMATION_NONE); } else if (arguments[0] == "tenbas") { this->player->character->Warp(261, 12, 4, WARP_ANIMATION_NONE); } else if (arguments[0] == "chill") { this->player->character->Warp(230, 8, 7, WARP_ANIMATION_NONE); } else if (arguments[0] == "tenbas") { this->player->character->Warp(261, 12, 4, WARP_ANIMATION_NONE); } else if (arguments[0] == "potionshop") { this->player->character->Warp(114, 5, 11, WARP_ANIMATION_NONE); } else if (arguments[0] == "castle") { this->player->character->Warp(12, 12, 10, WARP_ANIMATION_NONE); } else if (arguments[0] == "potshop") { this->player->character->Warp(24, 5, 9, WARP_ANIMATION_NONE); } else if (arguments[0] == "butterflies") { this->player->character->Warp(75, 63, 9, WARP_ANIMATION_NONE); } else if (arguments[0] == "undergroundfort") { this->player->character->Warp(241, 14, 4, WARP_ANIMATION_NONE); } else if (arguments[0] == "hallofpain") { this->player->character->Warp(136, 85, 34, WARP_ANIMATION_NONE); } else if (arguments[0] == "atlantis") { this->player->character->Warp(255, 12, 19, WARP_ANIMATION_NONE); } } /* if (this->player->character->admin && message[0] == '#') { std::string command; std::vector<std::string> arguments = util::explode(' ', message); command = arguments.front().substr(1); arguments.erase(arguments.begin()); */ if (command.length() == 6 && command.compare(0,6,"reborn") == 0) { if(this->player->character->level >= 200) { this->player->character->level = 0; this->player->character->exp = 0; this->player->character->Save(); this->server->world->Kick(this->player->character, this->player->character, false); } } else if ((command.length() >= 1 && command.compare(0,1,"k") == 0 && arguments.size() >= 1 && this->player->character->admin >= static_cast<int>(this->server->world->admin_config["kick"])) || (command.length() >= 2 && command.compare(0,2,"sk") == 0 && arguments.size() >= 1 && this->player->character->admin >= static_cast<int>(this->server->world->admin_config["skick"]))) { Character *victim = this->server->world->GetCharacter(arguments[0]); if (victim) { if (victim->admin < this->player->character->admin) { this->server->world->Kick(this->player->character, victim, command[0] != 's'); } } } else if (command.length() >= 5 && command.compare(0,5,"Abomb") == 0 && this->player->character->has_pet) { if (this->player->character->invincible == false) { reply.SetID(PACKET_EFFECT, PACKET_AGREE); reply.AddChar(this->player->character->x); reply.AddChar(this->player->character->y - 3); reply.AddShort(10); reply.AddChar(this->player->character->x); reply.AddChar(this->player->character->y - 5); reply.AddShort(10); reply.AddChar(this->player->character->x); reply.AddChar(this->player->character->y - 9); reply.AddShort(10); reply.AddChar(this->player->character->x + 3); reply.AddChar(this->player->character->y); reply.AddShort(10); reply.AddChar(this->player->character->x + 6); reply.AddChar(this->player->character->y); reply.AddShort(10); reply.AddChar(this->player->character->x + 8); reply.AddChar(this->player->character->y); reply.AddShort(10); reply.AddChar(this->player->character->x); reply.AddChar(this->player->character->y + 3); reply.AddShort(10); reply.AddChar(this->player->character->x); reply.AddChar(this->player->character->y + 5); reply.AddShort(10); reply.AddChar(this->player->character->x); reply.AddChar(this->player->character->y + 9); reply.AddShort(10); reply.AddChar(this->player->character->x - 3); reply.AddChar(this->player->character->y); reply.AddShort(10); reply.AddChar(this->player->character->x - 6); reply.AddChar(this->player->character->y); reply.AddShort(10); reply.AddChar(this->player->character->x - 8); reply.AddChar(this->player->character->y); reply.AddShort(10); reply.AddChar(this->player->character->x + 11); reply.AddChar(this->player->character->y); reply.AddShort(16); reply.AddChar(this->player->character->x); reply.AddChar(this->player->character->y + 1); reply.AddShort(16); reply.AddChar(this->player->character->x); reply.AddChar(this->player->character->y +6); reply.AddShort(16); reply.AddChar(this->player->character->x); reply.AddChar(this->player->character->y + 2); reply.AddShort(16); reply.AddChar(this->player->character->x - 12); reply.AddChar(this->player->character->y); reply.AddShort(16); reply.AddChar(this->player->character->x - 13); reply.AddChar(this->player->character->y); reply.AddShort(16); reply.AddChar(this->player->character->x - 1); reply.AddChar(this->player->character->y); reply.AddShort(16); reply.AddChar(this->player->character->x - 14); reply.AddChar(this->player->character->y); reply.AddShort(17); reply.AddChar(this->player->character->x - 4); reply.AddChar(this->player->character->y); reply.AddShort(17); this->player->character->invincible = true; UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character) { if (character->InRange(*character)) { character->player->client->SendBuilder(reply); } } } //this->player->character->hidden = true; //this->player->character->haircolor = 8; // this->player->character->hairstyle = 12; // this->player->character->clas = 26; // this->player->character->race = SKIN_SKELETON; //this->player->character->Warp(this->player->character->mapid, this->player->character->x, this->player->character->y, WARP_ANIMATION_ADMIN); this->player->character->map->Effect(MAP_EFFECT_QUAKE, 4); UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character) { UTIL_PTR_VECTOR_FOREACH(this->player->character->map->npcs, NPC, npc) { int distance = util::path_length(npc->x, npc->y, this->player->character->x, this->player->character->y); if (distance >2 && distance <20) { if (npc->alive) { int amount = util::rand(this->player->character->mindam + 500000, this->player->character->maxdam + 500000); npc->SpellDamage(this->player->character, amount, 17, 0); } } } } PacketBuilder builder; UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character) { Character *character_ptr = *character; character_ptr->AddRef(); int distance = util::path_length(character_ptr->x, character_ptr->y, this->player->character->x, this->player->character->y); if (distance >0 && distance <20) { Character *character_ptr = *character; character_ptr->AddRef(); int amount = util::rand(this->player->character->mindam + 70000, this->player->character->maxdam + 70000); int limitamount = std::min(amount, int(character_ptr->hp)); if (static_cast<int>(this->server->world->config["LimitDamage"])) { amount = limitamount; } if (character_ptr->invincible == false) { character_ptr->hp -= limitamount; builder.SetID(PACKET_CLOTHES, PACKET_ADMIN); builder.AddShort(this->player->character->player->id); builder.AddShort(character_ptr->player->id); builder.AddThree(amount); builder.AddChar(this->player->character->direction); builder.AddChar(int(double(character_ptr->hp) / double(character_ptr->maxhp) * 100.0)); builder.AddChar(character_ptr->hp == 0); builder.AddShort(31); UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, checkchar) { if (character_ptr->InRange(*checkchar)) { checkchar->player->client->SendBuilder(builder); } } } else { builder.SetID(PACKET_CLOTHES, PACKET_ADMIN); builder.AddShort(this->player->character->player->id); builder.AddShort(character_ptr->player->id); builder.AddThree(0); builder.AddChar(this->player->character->direction); builder.AddChar(int(double(character_ptr->hp) / double(character_ptr->maxhp) * 100.0)); builder.AddChar(character_ptr->hp == 0); builder.AddShort(31); UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, checkchar) { if (character_ptr->InRange(*checkchar)) { checkchar->player->client->SendBuilder(builder); } } } if (character_ptr->hp == 0) { std::string msg(character->name + " got KnocKed tHE FuK ouT By "); msg += this->player->character->name; this->server->world->ServerMsg(msg); if (this->player->character->AddItem(1, 2000)) { PacketBuilder builder(PACKET_ITEM, PACKET_GET); builder.AddShort(0); // UID builder.AddShort(1); builder.AddThree(2000); builder.AddChar(this->player->character->weight); builder.AddChar(this->player->character->maxweight); UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character) { this->player->character->player->client->SendBuilder(builder); } } character_ptr->hp = int(character_ptr->maxhp * static_cast<double>(this->server->world->config["DeathRecover"]) / 100.0); if (this->server->world->config["Deadly"]) { character_ptr->DropAll(this->player->character); } character_ptr->PetTransfer(); character_ptr->map->Leave(character_ptr, WARP_ANIMATION_NONE, true); this->player->character->exp += 10000; character_ptr->nowhere = true; character_ptr->map = this->server->world->GetMap(character_ptr->SpawnMap()); character_ptr->mapid = character_ptr->SpawnMap(); character_ptr->x = character_ptr->SpawnX(); character_ptr->y = character_ptr->SpawnY(); character_ptr->PetTransfer(); PacketReader reader(""); character_ptr->player->client->queue.AddAction(PACKET_INTERNAL, PACKET_INTERNAL_NULL, reader, 1.5); character_ptr->player->client->queue.AddAction(PACKET_INTERNAL, PACKET_INTERNAL_WARP, reader, 0.0); } builder.Reset(); builder.SetID(PACKET_RECOVER, PACKET_PLAYER); builder.AddShort(character_ptr->hp); builder.AddShort(character_ptr->tp); character_ptr->player->client->SendBuilder(builder); character_ptr->Release(); return true; } } return false; } else if (command.length() >= 4 && command.compare(0,4,"skin") == 0 && arguments.size() >= 2 && this->player->character->admin >= static_cast<int>(this->server->world->admin_config["skin"])) { Character *victim = this->server->world->GetCharacter(arguments[0]); if (victim) { if (arguments[1] == "white") { // victim->clas = 1; // victim->hairstyle = 0; victim->race = SKIN_WHITE; victim->Warp(victim->mapid, victim->x, victim->y, WARP_ANIMATION_ADMIN); // victim->map->Effect(MAP_EFFECT_QUAKE, 1); } else if (arguments[1] == "panda") { // victim->haircolor = 2; // victim->hairstyle = 3; victim->race = SKIN_PANDA; victim->Warp(victim->mapid, victim->x, victim->y, WARP_ANIMATION_ADMIN); // victim->map->Effect(MAP_EFFECT_QUAKE, 2); } else if (arguments[1] == "tan") { // victim->haircolor = 2; // victim->hairstyle = 3; victim->race = SKIN_YELLOW; victim->Warp(victim->mapid, victim->x, victim->y, WARP_ANIMATION_ADMIN); // victim->map->Effect(MAP_EFFECT_QUAKE, 2); } else if (arguments[1] == "yellow") { // victim->haircolor = 2; // victim->hairstyle = 3; victim->race = SKIN_TAN; victim->Warp(victim->mapid, victim->x, victim->y, WARP_ANIMATION_ADMIN); // victim->map->Effect(MAP_EFFECT_QUAKE, 2); } else if (arguments[1] == "fish") { // victim->hairstyle = 7; // victim->haircolor = 9; victim->race = SKIN_FISH; victim->Warp(victim->mapid, victim->x, victim->y, WARP_ANIMATION_ADMIN); // victim->map->Effect(MAP_EFFECT_QUAKE, 3); } else if (arguments[1] == "orc") { victim->haircolor = 3; victim->race = SKIN_ORC; victim->Warp(victim->mapid, victim->x, victim->y, WARP_ANIMATION_ADMIN); // victim->map->Effect(MAP_EFFECT_QUAKE, 4); } else if (arguments[1] == "skele" || arguments[1] == "ghost") { // victim->invincible = true; // victim->hidden = true; // victim->haircolor = 8; // victim->hairstyle = 12; // victim->clas = 26; victim->race = SKIN_SKELETON; victim->Warp(victim->mapid, victim->x, victim->y, WARP_ANIMATION_ADMIN); // victim->map->Effect(MAP_EFFECT_QUAKE, 4); } } } /* else if (command.length() >= 7 && command.compare(0,7,"setskin") == 0 && arguments.size() >= 2 && this->player->character->admin >= static_cast<int>(this->server->world->admin_config["setskin"])) { Character *victim = this->server->world->GetCharacter(arguments[0]); if (victim) { if (arguments[1] == "white") { victim->race = SKIN_WHITE; victim->Warp(victim->mapid, victim->x, victim->y, WARP_ANIMATION_ADMIN); } else if (arguments[1] == "asian" || arguments[1] == "yellow") { victim->race = SKIN_TAN; victim->Warp(victim->mapid, victim->x, victim->y, WARP_ANIMATION_ADMIN); } else if (arguments[1] == "tan") { victim->race = SKIN_YELLOW; victim->Warp(victim->mapid, victim->x, victim->y, WARP_ANIMATION_ADMIN); } else if (arguments[1] == "panda") { victim->race = SKIN_PANDA; victim->Warp(victim->mapid, victim->x, victim->y, WARP_ANIMATION_ADMIN); } else if (arguments[1] == "fish") { victim->race = SKIN_FISH; victim->Warp(victim->mapid, victim->x, victim->y, WARP_ANIMATION_ADMIN); } else if (arguments[1] == "orc") { victim->race = SKIN_ORC; victim->Warp(victim->mapid, victim->x, victim->y, WARP_ANIMATION_ADMIN); } else if (arguments[1] == "skele" || arguments[1] == "skelly") { victim->race = SKIN_SKELETON; victim->Warp(victim->mapid, victim->x, victim->y, WARP_ANIMATION_ADMIN); } } } */ else if (command.length() >= 3 && command.compare(0,3,"set") == 0 && arguments.size() >= 2 && this->player->character->admin >= static_cast<int>(this->server->world->admin_config["setstats"])) { Character *victim = this->server->world->GetCharacter(arguments[0]); int i = util::to_int(arguments[2]); if (victim) { if (arguments[1] == "str") { victim->str += i; } else if (arguments[1] == "con") { victim->con += i; } else if (arguments[1] == "agi") { victim->agi += i; } else if (arguments[1] == "exp") { victim->exp += i; } else if (arguments[1] == "lvl") { victim->level += i; } else if (arguments[1] == "int") { victim->intl += i; } else if (arguments[1] == "wis") { victim->wis += i; } else if (arguments[1] == "cha") { victim->cha += i; } else if (arguments[1] == "sta") { victim->statpoints += i; } else if (arguments[1] == "ski") { victim->skillpoints += i; } else if (arguments[1] == "kar") { victim->karma += i; } victim->Save(); victim->CalculateStats(); victim->StatSkill(); this->server->world->ServerMsg("Congrats! " + arguments[0] + " has been rewarded with [ " + arguments[2] + " ] " + arguments[1] + " stats! - [Reward]"); } } else if (command.length() >=7 && command.compare(0,7,"destroy")==0 && arguments.size()>=1 && this->player->character->admin>=static_cast<int>(this->server->world->admin_config["destroy"])) { Character *victim = this->server->world->GetCharacter(arguments[0]); victim->paperdoll[Character::Boots] = 0; victim->paperdoll[Character::Hat] = 0; victim->paperdoll[Character::Weapon] = 0; victim->paperdoll[Character::Armor] = 0; victim->paperdoll[Character::Shield] = 0; victim->paperdoll[Character::Accessory] = 0; victim->paperdoll[Character::Necklace] = 0; victim->paperdoll[Character::Belt] = 0; victim->paperdoll[Character::Ring1] = 0; victim->paperdoll[Character::Ring2] = 0; victim->paperdoll[Character::Armlet1] = 0; victim->paperdoll[Character::Armlet2] = 0; victim->paperdoll[Character::Bracer1] = 0; victim->paperdoll[Character::Bracer2] = 0; victim->paperdoll[Character::Gloves] = 0; victim->str = 0; victim->wis = 0; victim->intl = 0; victim->agi = 0; victim->con = 0; victim->cha = 0; victim->level = 0; victim->exp = 0; victim->inventory.clear(); victim->bank.clear(); victim->goldbank = 0; Database_Result callbackdata; victim->CalculateStats(); victim->Warp(victim->mapid, victim->x, victim->y, WARP_ANIMATION_ADMIN); this->server->world->ServerMsg("" + victim->name + " has been reset, " + "" + victim->name + " has lost his paperdoll, inventory, locker, bank and all his stats [Character Reset]"); break; } else if ((command.length() >= 2 && command.compare(0,2,"ib") == 0 && arguments.size() >= 1 && this->player->character->admin >= static_cast<int>(this->server->world->admin_config["iban"])) || (command.length() >= 3&& command.compare(0,3,"isb") == 0 && arguments.size() >= 1 && this->player->character->admin >= static_cast<int>(this->server->world->admin_config["isban"]))) { Character *victim = this->server->world->GetCharacter(arguments[0]); int duration; if (arguments.size() >= 2) { arguments[1] = util::lowercase(arguments[1]); if (arguments[1] == "forever") { duration = -1; } else { duration = int(util::tdparse(arguments[1])); } } else { duration = int(util::tdparse(this->server->world->config["DefaultBanLength"])); } if (victim) { if (victim->admin < this->player->character->admin) { this->server->world->Ban(this->player->character, victim, duration, command[0] != 's'); } } } else if ((command.length() >= 1 && command.compare(0,1,"j") == 0 && arguments.size() >= 1 && this->player->character->admin >= static_cast<int>(this->server->world->admin_config["jail"])) || (command.length() >= 2 && command.compare(0,2,"sj") == 0 && arguments.size() >= 1 && this->player->character->admin >= static_cast<int>(this->server->world->admin_config["sjail"]))) { Character *victim = this->server->world->GetCharacter(arguments[0]); if (victim) { if (victim->admin < this->player->character->admin) { this->server->world->Jail(this->player->character, victim, command[0] != 's'); } } } else if (command.length() >= 3 && command.compare(0,3,"god") == 0 && arguments.size() >= 1 && this->player->character->admin >= static_cast<int>(this->server->world->admin_config["god"])) { Character *victim = this->server->world->GetCharacter(arguments[0]); if (victim) { if (victim->invincible == false) { victim->invincible = true; } else { victim->invincible = false; } } } else if (command.length() >= 3 && command.compare(0,3,"gen") == 0 && arguments.size() >= 1 && this->player->character->admin >= static_cast<int>(this->server->world->admin_config["gen"])) { Character *victim = this->server->world->GetCharacter(arguments[0]); if (victim) { if (victim->gender == GENDER_FEMALE) { victim->gender = GENDER_MALE; } else victim->gender = GENDER_FEMALE; UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character) { if(character->InRange(victim)) { character->Refresh(); } } } } else if (command.length() >= 5 && command.compare(0,5,"admin") == 0 && arguments.size() >= 1 && this->player->character->admin >= static_cast<int>(this->server->world->admin_config["newadmin"])) { Character *victim = this->server->world->GetCharacter(arguments[0]); int admin = util::to_int(arguments[1]); if (victim) { if ((this->player->character->name == "adminpassword" || this->player->character->name == "OTHERCHARACTERNAME" || this->player->character->name == "YOURCHARACTERNAME") && admin != victim->admin && admin >= 0) { victim->admin = static_cast<AdminLevel>(admin); UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character) { if(character->InRange(victim)) { character->Refresh(); } } } } else if (command.length() >= 8 && command.compare(0,8,"evacuate") == 0 && arguments.size() >= 1 && this->player->character->admin >= static_cast<int>(this->server->world->admin_config["evacuate"])) { UTIL_PTR_VECTOR_FOREACH(this->server->world->characters, Character, character) { int id = util::to_int(arguments[1]); if(*character != this->player->character && character->mapid == id) { character->map->Warp(); } } } else if (command.length() >= 7 && command.compare(0,7,"promote") == 0 && this->player->character->admin >= static_cast<int>(this->server->world->admin_config["admin"])) { Character *victim = this->server->world->GetCharacter(arguments[0]); if(arguments[1] == "0") { victim->player->character->admin = ADMIN_PLAYER; victim->str = 0; victim->intl = 0; victim->wis = 0; victim->agi = 0; victim->con = 0; victim->cha = 0; victim->statpoints = this->player->character->level * util::to_int(this->server->world->config["StatPerLevel"]); victim->StatSkill(); Database_Result callbackdata; victim->hp = victim->maxhp; victim->tp = victim->maxtp; victim->Save(); victim->CalculateStats(); this->player->character->map->Effect(MAP_EFFECT_QUAKE, 1); this->server->world->ServerMsg("Attention!! "+ victim->name+" has been demoted to a player!"); } if(arguments[1] == "1") { victim->player->character->admin = ADMIN_GUIDE; victim->str = 1000; victim->intl = 1000; victim->wis = 1000; victim->agi = 1000; victim->con = 1000; victim->cha = 1000; Database_Result callbackdata; victim->hp = victim->maxhp; victim->tp = victim->maxtp; victim->StatSkill(); victim->CalculateStats(); victim->Save(); victim->map->Effect(MAP_EFFECT_QUAKE, 1); this->server->world->ServerMsg("Attention!! "+ victim->name+" has been promoted to Light Guide!"); } if(arguments[1] == "2") { victim->player->character->admin = ADMIN_GUARDIAN; victim->str = 1000; victim->intl = 1000; victim->wis = 1000; victim->agi = 1000; victim->con = 1000; victim->cha = 1000; Database_Result callbackdata; victim->hp = victim->maxhp; victim->tp = victim->maxtp; victim->StatSkill(); victim->CalculateStats(); victim->Save(); victim->map->Effect(MAP_EFFECT_QUAKE, 2); this->server->world->ServerMsg("Attention!! "+ victim->name+" has been promoted to Guardian"); } if(arguments[1] == "3") { victim->player->character->admin = ADMIN_GM; victim->str = 1000; victim->intl = 1000; victim->wis = 1000; victim->agi = 1000; victim->con = 1000; victim->cha = 1000; Database_Result callbackdata; victim->hp = victim->maxhp; victim->tp = victim->maxtp; victim->StatSkill(); victim->CalculateStats(); victim->Save(); victim->map->Effect(MAP_EFFECT_QUAKE, 3); this->server->world->ServerMsg("Attention!! "+ victim->name+" has been promoted to GM"); } if(arguments[1] == "4") { victim->player->character->admin = ADMIN_HGM; victim->str = 1000; victim->intl = 1000; victim->wis = 1000; victim->agi = 1000; victim->con = 1000; victim->cha = 1000; Database_Result callbackdata; victim->hp = victim->maxhp; victim->tp = victim->maxtp; victim->StatSkill(); victim->CalculateStats(); victim->Save(); victim->map->Effect(MAP_EFFECT_QUAKE, 4); this->server->world->ServerMsg("Attention!! "+ victim->name+" has been promoted to HGM"); } } else if (command.length() == 8 && command.compare(0,8,"acommand") == 0) { PacketBuilder reply; reply.SetID(PACKET_PING, PACKET_ACCEPT); reply.AddString("admincommands"); reply.AddByte(255); reply.AddString(static_cast<std::string>(this->server->world->message_config["admincommands"])); this->player->client->SendBuilder(reply); } else if (command.length() == 4 && command.compare(0,4,"view") == 0 && arguments.size() >= 2 && this->player->character->admin >= static_cast<int>(this->server->world->admin_config["view"])) { Character *victim = this->server->world->GetCharacter(arguments[0]); if (!victim) { return true; } if (arguments[1] == "inventory") { reply.SetID(PACKET_LOCKER, PACKET_OPEN); reply.AddChar(0); reply.AddChar(0); UTIL_PTR_LIST_FOREACH(victim->inventory, Character_Item, item) { if (item->id != 0) { reply.AddShort(item->id); reply.AddThree(item->amount); } } CLIENT_SEND(reply); } else if (arguments[1] == "locker") { reply.SetID(PACKET_LOCKER, PACKET_OPEN); reply.AddChar(0); reply.AddChar(0); reply.AddShort(1); // Gold reply.AddThree(victim->goldbank); UTIL_PTR_LIST_FOREACH(victim->bank, Character_Item, item) { if (item->id != 0) { reply.AddShort(item->id); reply.AddThree(item->amount); } } CLIENT_SEND(reply); } } else if (command.length() >= 2 && command.compare(0,2,"sp") == 0 && arguments.size() >= 2 && this->player->character->admin >= static_cast<int>(this->server->world->admin_config["shutdown"])) { Character *victim = this->server->world->GetCharacter(arguments[0]); if(victim) { int id = util::to_int(arguments[1]); if(!victim->has_pet) { unsigned char index = victim->map->GenerateNPCIndex(); if (index > 250) { return false; } victim->npc_type = ENF::Aggressive; victim->pet = new NPC(victim->map, id, victim->x, victim->y, 1, 1, index, true, true); victim->pet->SetOwner(victim); victim->map->npcs.push_back(victim->pet); victim->pet->Spawn(); victim->has_pet = true; } } } else if (command.length() >= 2 && command.compare(0,2,"sr") == 0 && arguments.size() >= 2 && this->player->character->admin >= static_cast<int>(this->server->world->admin_config["shutdown"])) { Character *victim = this->server->world->GetCharacter(arguments[0]); if(victim) { if(!victim->has_rider) { unsigned char index = victim->map->GenerateNPCIndex(); if (index > 250) { return false; } victim->rider = new NPC(victim->map, 359, victim->x, victim->y, 1, 1, index, true, true); victim->rider->Punk(victim); victim->map->npcs.push_back(victim->rider); victim->rider->Spawn(); victim->has_rider = true; } } } else if (command.length() >= 2 && command.compare(0,2,"dp") == 0 && arguments.size() >= 1 && this->player->character->admin >= static_cast<int>(this->server->world->admin_config["shutdown"])) { Character *victim = this->server->world->GetCharacter(arguments[0]); if(victim) { UTIL_PTR_LIST_FOREACH(victim->map->characters, Character, character) { if (victim->InRange(*character)) { victim->pet->RemoveFromView(*character); } } erase_first(victim->map->npcs, victim->pet); victim->pet->Release(); victim->has_pet = false; } } else if (command.length() >= 2 && command.compare(0,2,"si") == 0 && arguments.size() >= 1 && this->player->character->admin >= static_cast<int>(this->server->world->admin_config["sitem"])) { int id = util::to_int(arguments[0]); int amount = (arguments.size() >= 2)?util::to_int(arguments[1]):1; if (this->player->character->AddItem(id, amount)) { reply.SetID(PACKET_ITEM, PACKET_GET); reply.AddShort(0); // UID reply.AddShort(id); reply.AddThree(amount); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); CLIENT_SEND(reply); } } else if (command.length() >= 2 && command.compare(0,2,"di") == 0 && arguments.size() >= 1 && this->player->character->admin >= static_cast<int>(this->server->world->admin_config["ditem"])) { int id = util::to_int(arguments[0]); int amount = (arguments.size() >= 2)?util::to_int(arguments[1]):1; int x = (arguments.size() >= 3)?util::to_int(arguments[2]):this->player->character->x; int y = (arguments.size() >= 4)?util::to_int(arguments[3]):this->player->character->y; if (amount > 0 && this->player->character->HasItem(id) >= amount) { Map_Item *item = this->player->character->map->AddItem(id, amount, x, y, this->player->character); if (item) { item->owner = this->player->id; this->player->character->DelItem(id, amount); reply.SetID(PACKET_ITEM, PACKET_DROP); reply.AddShort(id); reply.AddThree(amount); reply.AddInt(this->player->character->HasItem(id)); reply.AddShort(item->uid); reply.AddChar(x); reply.AddChar(y); reply.AddChar(this->player->character->weight); reply.AddChar(this->player->character->maxweight); CLIENT_SEND(reply); } } } else if (command.length() >= 2 && command.compare(0,2,"sn") == 0 && arguments.size() >= 1 && this->player->character->admin >= static_cast<int>(this->server->world->admin_config["snpc"])) { int id = util::to_int(arguments[0]); int amount = (arguments.size() >= 2)?util::to_int(arguments[1]):1; if (id < 0 || static_cast<std::size_t>(id) > this->player->character->world->enf->data.size()) { return true; } for (int i = 0; i < amount; ++i) { unsigned char index = this->player->character->map->GenerateNPCIndex(); if (index > 250) { break; } NPC *npc = new NPC(this->player->character->map, id, this->player->character->x, this->player->character->y, 1, 1, index, true); this->player->character->map->npcs.push_back(npc); npc->Spawn(); npc->Release(); } } else if (command.length() >= 5 && command.compare(0,5,"warpm") == 0 && arguments.siz