/* $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