2 * Copyright (C) 2005,2006 MaNGOS <http://www.mangosproject.org/>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 #include "Database/DatabaseEnv.h"
21 #include "WorldPacket.h"
22 #include "WorldSession.h"
24 #include "ObjectMgr.h"
29 #include "MapManager.h"
30 #include "ObjectAccessor.h"
32 #include "RedZoneDistrict.h"
34 bool ChatHandler::HandleAnnounceCommand(const char* args
)
43 sprintf((char*)pAnnounce
, LANG_BROADCAST
, args
);
44 sWorld
.SendWorldText(pAnnounce
);
49 bool ChatHandler::HandleGMOnCommand(const char* args
)
51 m_session
->GetPlayer()->SetGameMaster(true);
52 m_session
->GetPlayer()->CombatStop();
57 bool ChatHandler::HandleGMOffCommand(const char* args
)
59 m_session
->GetPlayer()->SetGameMaster(false);
64 bool ChatHandler::HandleGPSCommand(const char* args
)
66 Object
*obj
= getSelectedUnit();
70 SendSysMessage(LANG_SELECT_CHAR_OR_CREATURE
);
74 CellPair cell_val
= MaNGOS::ComputeCellPair(obj
->GetPositionX(), obj
->GetPositionY());
75 Cell cell
= RedZone::GetZone(cell_val
);
77 PSendSysMultilineMessage(LANG_MAP_POSITION
,
78 obj
->GetMapId(), obj
->GetZoneId(), obj
->GetPositionX(), obj
->GetPositionY(), obj
->GetPositionZ(),
79 obj
->GetOrientation(),cell
.GridX(), cell
.GridY(), cell
.CellX(), cell
.CellY());
81 sLog
.outDebug("Player %s GPS call unit " I64FMT
" " LANG_MAP_POSITION
, m_session
->GetPlayer()->GetName(), obj
->GetGUID(),
82 obj
->GetMapId(), obj
->GetZoneId(), obj
->GetPositionX(), obj
->GetPositionY(), obj
->GetPositionZ(),
83 obj
->GetOrientation(), cell
.GridX(), cell
.GridY(), cell
.CellX(), cell
.CellY());
88 bool ChatHandler::HandleNamegoCommand(const char* args
)
95 Player
*chr
= objmgr
.GetPlayer(args
);
99 if(chr
->IsBeingTeleported()==true)
101 PSendSysMessage(LANG_IS_TELEPORTED
, chr
->GetName());
104 PSendSysMessage(LANG_SUMMONING
, chr
->GetName());
107 snprintf((char*)buf0
,256,LANG_SUMMONED_BY
, m_session
->GetPlayer()->GetName());
108 FillSystemMessageData(&data
, m_session
, buf0
);
109 chr
->GetSession()->SendPacket( &data
);
111 chr
->TeleportTo(m_session
->GetPlayer()->GetMapId(),
112 m_session
->GetPlayer()->GetPositionX(),
113 m_session
->GetPlayer()->GetPositionY(),
114 m_session
->GetPlayer()->GetPositionZ()
118 PSendSysMessage(LANG_NO_PLAYER
, args
);
123 bool ChatHandler::HandleGonameCommand(const char* args
)
130 Player
*chr
= objmgr
.GetPlayer(args
);
133 if(chr
->IsBeingTeleported()==true)
135 PSendSysMessage(LANG_IS_TELEPORTED
, chr
->GetName());
139 PSendSysMessage(LANG_APPEARING_AT
, chr
->GetName());
142 sprintf((char*)buf0
,LANG_APPEARING_TO
, m_session
->GetPlayer()->GetName());
143 FillSystemMessageData(&data
, m_session
, buf0
);
145 chr
->GetSession()->SendPacket(&data
);
147 m_session
->GetPlayer()->TeleportTo(chr
->GetMapId(), chr
->GetPositionX(), chr
->GetPositionY(), chr
->GetPositionZ(),0.0f
);
150 PSendSysMessage(LANG_NO_PLAYER
, args
);
155 bool ChatHandler::HandleRecallCommand(const char* args
)
160 if (strncmp((char*)args
,"sunr",5)==0)
161 m_session
->GetPlayer()->TeleportTo(1, -180.949f
, -296.467f
, 11.5384f
,0.0f
);
162 else if (strncmp((char*)args
,"thun",5)==0)
163 m_session
->GetPlayer()->TeleportTo(1, -1196.22f
, 29.0941f
, 176.949f
,0.0f
);
164 else if (strncmp((char*)args
,"cross",6)==0)
165 m_session
->GetPlayer()->TeleportTo(1, -443.128f
, -2598.87f
, 96.2114f
,0.0f
);
166 else if (strncmp((char*)args
,"ogri",5)==0)
167 m_session
->GetPlayer()->TeleportTo(1, 1676.21f
, -4315.29f
, 61.5293f
,0.0f
);
168 else if (strncmp((char*)args
,"neth",5)==0)
169 m_session
->GetPlayer()->TeleportTo(0, -10996.9f
, -3427.67f
, 61.996f
,0.0f
);
170 else if (strncmp((char*)args
,"thel",5)==0)
171 m_session
->GetPlayer()->TeleportTo(0, -5395.57f
, -3015.79f
, 327.58f
,0.0f
);
172 else if (strncmp((char*)args
,"storm",6)==0)
173 m_session
->GetPlayer()->TeleportTo(0, -8913.23f
, 554.633f
, 93.7944f
,0.0f
);
174 else if (strncmp((char*)args
,"iron",5)==0)
175 m_session
->GetPlayer()->TeleportTo(0, -4981.25f
, -881.542f
, 501.66f
,0.0f
);
176 else if (strncmp((char*)args
,"under",6)==0)
177 m_session
->GetPlayer()->TeleportTo(0, 1586.48f
, 239.562f
, -52.149f
,0.0f
);
178 else if (strncmp((char*)args
,"darr",5)==0)
179 m_session
->GetPlayer()->TeleportTo(1, 10037.6f
, 2496.8f
, 1318.4f
,0.0f
);
180 else if (strncmp((char*)args
,"gm",5)==0)
181 m_session
->GetPlayer()->TeleportTo(1, 16202.5, 16205, 1,1.15);
188 bool ChatHandler::HandleModifyHPCommand(const char* args
)
192 // char* pHp = strtok((char*)args, " ");
196 // char* pHpMax = strtok(NULL, " ");
200 // int32 hpm = atoi(pHpMax);
201 // int32 hp = atoi(pHp);
203 int32 hp
= atoi((char*)args
);
204 int32 hpm
= atoi((char*)args
);
206 if (hp
<= 0 || hpm
<= 0 || hpm
< hp
)
208 SendSysMessage(LANG_BAD_VALUE
);
212 Player
*chr
= getSelectedPlayer();
215 SendSysMessage(LANG_NO_CHAR_SELECTED
);
219 PSendSysMessage(LANG_YOU_CHANGE_HP
, hp
, hpm
, chr
->GetName());
222 sprintf((char*)buf
,LANG_YOURS_HP_CHANGED
, m_session
->GetPlayer()->GetName(), hp
, hpm
);
223 FillSystemMessageData(&data
, m_session
, buf
);
225 chr
->GetSession()->SendPacket(&data
);
227 chr
->SetMaxHealth( hpm
);
228 chr
->SetHealth( hp
);
233 bool ChatHandler::HandleModifyManaCommand(const char* args
)
237 // char* pmana = strtok((char*)args, " ");
241 // char* pmanaMax = strtok(NULL, " ");
245 // int32 manam = atoi(pmanaMax);
246 // int32 mana = atoi(pmana);
247 int32 mana
= atoi((char*)args
);
248 int32 manam
= atoi((char*)args
);
250 if (mana
<= 0 || manam
<= 0 || manam
< mana
)
252 SendSysMessage(LANG_BAD_VALUE
);
256 Player
*chr
= getSelectedPlayer();
259 SendSysMessage(LANG_NO_CHAR_SELECTED
);
263 PSendSysMessage(LANG_YOU_CHANGE_MANA
, mana
, manam
, chr
->GetName());
266 sprintf((char*)buf
,LANG_YOURS_MANA_CHANGED
, m_session
->GetPlayer()->GetName(), mana
, manam
);
267 FillSystemMessageData(&data
, m_session
, buf
);
269 chr
->GetSession()->SendPacket(&data
);
271 chr
->SetMaxPower(POWER_MANA
,manam
);
272 chr
->SetPower(POWER_MANA
, mana
);
277 bool ChatHandler::HandleModifyEnergyCommand(const char* args
)
281 // char* pmana = strtok((char*)args, " ");
285 // char* pmanaMax = strtok(NULL, " ");
289 // int32 manam = atoi(pmanaMax);
290 // int32 mana = atoi(pmana);
291 int32 mana
= atoi((char*)args
)*10;
292 int32 manam
= atoi((char*)args
)*10;
294 if (mana
<= 0 || manam
<= 0 || manam
< mana
)
296 SendSysMessage(LANG_BAD_VALUE
);
300 Player
*chr
= getSelectedPlayer();
303 PSendSysMessage(LANG_NO_CHAR_SELECTED
);
307 PSendSysMessage(LANG_YOU_CHANGE_ENERGY
, mana
/10, manam
/10, chr
->GetName());
310 sprintf((char*)buf
,LANG_YOURS_ENERGY_CHANGED
, m_session
->GetPlayer()->GetName(), mana
/10, manam
/10);
311 FillSystemMessageData(&data
, m_session
, buf
);
313 chr
->GetSession()->SendPacket(&data
);
315 chr
->SetMaxPower(POWER_ENERGY
,manam
);
316 chr
->SetPower(POWER_ENERGY
, mana
);
318 sLog
.outDetail(LANG_CURRENT_ENERGY
,chr
->GetMaxPower(POWER_ENERGY
));
323 bool ChatHandler::HandleModifyRageCommand(const char* args
)
327 // char* pmana = strtok((char*)args, " ");
331 // char* pmanaMax = strtok(NULL, " ");
335 // int32 manam = atoi(pmanaMax);
336 // int32 mana = atoi(pmana);
337 int32 mana
= atoi((char*)args
)*10;
338 int32 manam
= atoi((char*)args
)*10;
340 if (mana
<= 0 || manam
<= 0 || manam
< mana
)
342 SendSysMessage(LANG_BAD_VALUE
);
346 Player
*chr
= getSelectedPlayer();
349 SendSysMessage(LANG_NO_CHAR_SELECTED
);
353 PSendSysMessage(LANG_YOU_CHANGE_RAGE
, mana
/10, manam
/10, chr
->GetName());
356 sprintf((char*)buf
,LANG_YOURS_RAGE_CHANGED
, m_session
->GetPlayer()->GetName(), mana
/10, manam
/10);
357 FillSystemMessageData(&data
, m_session
, buf
);
359 chr
->GetSession()->SendPacket(&data
);
361 chr
->SetMaxPower(POWER_RAGE
,manam
);
362 chr
->SetPower(POWER_RAGE
, mana
);
367 bool ChatHandler::HandleModifyFactionCommand(const char* args
)
375 char* pfactionid
= strtok((char*)args
, " ");
377 Unit
* chr
= getSelectedCreature();
380 SendSysMessage(LANG_SELECT_CREATURE
);
388 factionid
= chr
->getFaction();
389 flag
= chr
->GetUInt32Value(UNIT_FIELD_FLAGS
);
390 npcflag
= chr
->GetUInt32Value(UNIT_NPC_FLAGS
);
391 dyflag
= chr
->GetUInt32Value(UNIT_DYNAMIC_FLAGS
);
392 PSendSysMessage(LANG_CURRENT_FACTION
,chr
->GetGUIDLow(),factionid
,flag
,npcflag
,dyflag
);
399 SendSysMessage(LANG_NO_CHAR_SELECTED
);
403 factionid
= atoi(pfactionid
);
405 char* pflag
= strtok(NULL
, " ");
407 flag
= chr
->GetUInt32Value(UNIT_FIELD_FLAGS
);
411 char* pnpcflag
= strtok(NULL
, " ");
413 npcflag
= chr
->GetUInt32Value(UNIT_NPC_FLAGS
);
415 npcflag
= atoi(pnpcflag
);
417 char* pdyflag
= strtok(NULL
, " ");
419 dyflag
= chr
->GetUInt32Value(UNIT_DYNAMIC_FLAGS
);
421 dyflag
= atoi(pdyflag
);
423 if(!sFactionTemplateStore
.LookupEntry(factionid
))
425 PSendSysMessage(LANG_WRONG_FACTION
, factionid
);
429 PSendSysMessage(LANG_YOU_CHANGE_FACTION
, chr
->GetGUIDLow(),factionid
,flag
,npcflag
,dyflag
);
431 //sprintf((char*)buf,"%s changed your Faction to %i.", m_session->GetPlayer()->GetName(), factionid);
432 //FillSystemMessageData(&data, m_session, buf);
434 //chr->GetSession()->SendPacket(&data);
436 chr
->setFaction(factionid
);
437 chr
->SetUInt32Value(UNIT_FIELD_FLAGS
,flag
);
438 chr
->SetUInt32Value(UNIT_NPC_FLAGS
,npcflag
);
439 chr
->SetUInt32Value(UNIT_DYNAMIC_FLAGS
,dyflag
);
444 bool ChatHandler::HandleModifySpellCommand(const char* args
)
449 char* pspellflatid
= strtok((char*)args
, " ");
453 char* pop
= strtok(NULL
, " ");
457 char* pval
= strtok(NULL
, " ");
463 char* pmark
= strtok(NULL
, " ");
465 uint8 spellflatid
= atoi(pspellflatid
);
466 uint8 op
= atoi(pop
);
467 uint16 val
= atoi(pval
);
473 Player
*chr
= getSelectedPlayer();
476 SendSysMessage(LANG_NO_CHAR_SELECTED
);
480 PSendSysMessage(LANG_YOU_CHANGE_SPELLFLATID
, spellflatid
, val
, mark
, chr
->GetName());
483 sprintf((char*)buf
,LANG_YOURS_SPELLFLATID_CHANGED
, m_session
->GetPlayer()->GetName(), spellflatid
, val
, mark
);
484 FillSystemMessageData(&data
, m_session
, buf
);
486 chr
->GetSession()->SendPacket(&data
);
488 data
.Initialize(SMSG_SET_FLAT_SPELL_MODIFIER
);
489 data
<< uint8(spellflatid
);
492 data
<< uint16(mark
);
493 chr
->GetSession()->SendPacket(&data
);
498 bool ChatHandler::HandleModifyTalentCommand (const char* args
)
500 int tp
= atoi((char*)args
);
503 Player
* player
= m_session
->GetPlayer();
506 SendSysMessage(LANG_NO_CHAR_SELECTED
);
509 player
->SetUInt32Value(PLAYER_CHARACTER_POINTS1
, tp
);
515 bool ChatHandler::HandleTaxiCheatCommand(const char* args
)
522 int flag
= atoi((char*)args
);
524 Player
*chr
= getSelectedPlayer();
527 SendSysMessage(LANG_NO_CHAR_SELECTED
);
532 PSendSysMessage(LANG_YOU_GIVE_TAXIS
, chr
->GetName());
534 PSendSysMessage(LANG_YOU_REMOVE_TAXIS
, chr
->GetName());
540 chr
->SetTaxiCheater(true);
541 sprintf((char*)buf
,LANG_YOURS_TAXIS_ADDED
,
542 m_session
->GetPlayer()->GetName());
546 chr
->SetTaxiCheater(false);
547 sprintf((char*)buf
,LANG_YOURS_TAXIS_REMOVED
,
548 m_session
->GetPlayer()->GetName());
550 FillSystemMessageData(&data
, m_session
, buf
);
551 chr
->GetSession()->SendPacket(&data
);
556 bool ChatHandler::HandleModifyASpedCommand(const char* args
)
563 float ASpeed
= (float)atof((char*)args
);
565 if (ASpeed
> 50 || ASpeed
<= 0)
567 SendSysMessage(LANG_BAD_VALUE
);
571 Player
*chr
= getSelectedPlayer();
574 SendSysMessage(LANG_NO_CHAR_SELECTED
);
578 PSendSysMessage(LANG_YOU_CHANGE_ASPEED
, ASpeed
, chr
->GetName());
581 sprintf((char*)buf
,LANG_YOURS_ASPEED_CHANGED
, m_session
->GetPlayer()->GetName(), ASpeed
);
582 FillSystemMessageData(&data
, m_session
, buf
);
584 chr
->GetSession()->SendPacket(&data
);
586 data
.Initialize( SMSG_FORCE_RUN_SPEED_CHANGE
);
588 data
<< chr
->GetUInt32Value( OBJECT_FIELD_GUID
);
589 data
<< chr
->GetUInt32Value( OBJECT_FIELD_GUID
+ 1 );
591 data
<< (float)ASpeed
;
592 chr
->SendMessageToSet( &data
, true );
594 data
.Initialize( SMSG_FORCE_SWIM_SPEED_CHANGE
);
596 data
<< chr
->GetUInt32Value( OBJECT_FIELD_GUID
);
597 data
<< chr
->GetUInt32Value( OBJECT_FIELD_GUID
+ 1 );
599 data
<< (float)ASpeed
;
600 chr
->SendMessageToSet( &data
, true );
601 data
.Initialize( SMSG_FORCE_RUN_BACK_SPEED_CHANGE
);
603 data
<< chr
->GetUInt32Value( OBJECT_FIELD_GUID
);
604 data
<< chr
->GetUInt32Value( OBJECT_FIELD_GUID
+ 1 );
606 data
<< (float)ASpeed
;
607 chr
->SendMessageToSet( &data
, true );
611 bool ChatHandler::HandleModifySpeedCommand(const char* args
)
618 float Speed
= (float)atof((char*)args
);
620 if (Speed
> 50 || Speed
<= 0)
622 SendSysMessage(LANG_BAD_VALUE
);
626 Player
*chr
= getSelectedPlayer();
629 SendSysMessage(LANG_NO_CHAR_SELECTED
);
633 PSendSysMessage(LANG_YOU_CHANGE_SPEED
, Speed
, chr
->GetName());
636 sprintf((char*)buf
,LANG_YOURS_SPEED_CHANGED
, m_session
->GetPlayer()->GetName(), Speed
);
637 FillSystemMessageData(&data
, m_session
, buf
);
639 chr
->GetSession()->SendPacket(&data
);
641 data
.Initialize( SMSG_FORCE_RUN_SPEED_CHANGE
);
643 data
<< chr
->GetUInt32Value( OBJECT_FIELD_GUID
); //4
644 data
<< chr
->GetUInt32Value( OBJECT_FIELD_GUID
+ 1 ); //4
646 data
<< (float)Speed
; //4
648 chr
->SendMessageToSet( &data
, true );
653 bool ChatHandler::HandleModifySwimCommand(const char* args
)
660 float Swim
= (float)atof((char*)args
);
662 if (Swim
> 50 || Swim
<= 0)
664 SendSysMessage(LANG_BAD_VALUE
);
668 Player
*chr
= getSelectedPlayer();
671 SendSysMessage(LANG_NO_CHAR_SELECTED
);
675 PSendSysMessage(LANG_YOU_CHANGE_SWIM_SPEED
, Swim
, chr
->GetName());
678 sprintf((char*)buf
,LANG_YOURS_SWIM_SPEED_CHANGED
, m_session
->GetPlayer()->GetName(), Swim
);
679 FillSystemMessageData(&data
, m_session
, buf
);
681 chr
->GetSession()->SendPacket(&data
);
683 data
.Initialize( SMSG_FORCE_SWIM_SPEED_CHANGE
);
685 data
<< chr
->GetUInt32Value( OBJECT_FIELD_GUID
);
686 data
<< chr
->GetUInt32Value( OBJECT_FIELD_GUID
+ 1 );
689 chr
->SendMessageToSet( &data
, true );
694 bool ChatHandler::HandleModifyBWalkCommand(const char* args
)
701 float BSpeed
= (float)atof((char*)args
);
703 if (BSpeed
> 50 || BSpeed
<= 0)
705 SendSysMessage(LANG_BAD_VALUE
);
709 Player
*chr
= getSelectedPlayer();
712 SendSysMessage(LANG_NO_CHAR_SELECTED
);
716 PSendSysMessage(LANG_YOU_CHANGE_BACK_SPEED
, BSpeed
, chr
->GetName());
719 sprintf((char*)buf
,LANG_YOURS_BACK_SPEED_CHANGED
, m_session
->GetPlayer()->GetName(), BSpeed
);
720 FillSystemMessageData(&data
, m_session
, buf
);
722 chr
->GetSession()->SendPacket(&data
);
724 data
.Initialize( SMSG_FORCE_RUN_BACK_SPEED_CHANGE
);
726 data
<< chr
->GetUInt32Value( OBJECT_FIELD_GUID
);
727 data
<< chr
->GetUInt32Value( OBJECT_FIELD_GUID
+ 1 );
729 data
<< (float)BSpeed
;
730 chr
->SendMessageToSet( &data
, true );
735 bool ChatHandler::HandleModifyScaleCommand(const char* args
)
742 float Scale
= (float)atof((char*)args
);
743 if (Scale
> 3 || Scale
<= 0)
745 SendSysMessage(LANG_BAD_VALUE
);
749 Player
*chr
= getSelectedPlayer();
752 SendSysMessage(LANG_NO_CHAR_SELECTED
);
756 PSendSysMessage(LANG_YOU_CHANGE_SIZE
, Scale
, chr
->GetName());
759 sprintf((char*)buf
,LANG_YOURS_SIZE_CHANGED
, m_session
->GetPlayer()->GetName(), Scale
);
760 FillSystemMessageData(&data
, m_session
, buf
);
762 chr
->GetSession()->SendPacket(&data
);
764 chr
->SetFloatValue(OBJECT_FIELD_SCALE_X
, Scale
);
769 bool ChatHandler::HandleModifyMountCommand(const char* args
)
777 float speed
= (float)15;
780 num
= atoi((char*)args
);
991 SendSysMessage(LANG_NO_MOUNT
);
995 Player
*chr
= getSelectedPlayer();
998 SendSysMessage(LANG_NO_CHAR_SELECTED
);
1002 PSendSysMessage(LANG_YOU_GIVE_MOUNT
, chr
->GetName());
1005 sprintf((char*)buf
,LANG_MOUNT_GIVED
, m_session
->GetPlayer()->GetName());
1006 FillSystemMessageData(&data
, m_session
, buf
);
1008 chr
->GetSession()->SendPacket(&data
);
1010 chr
->SetUInt32Value( UNIT_FIELD_FLAGS
, 0x001000 );
1013 data
.Initialize( SMSG_FORCE_RUN_SPEED_CHANGE
);
1014 data
<< uint8(0xFF);
1015 data
<< chr
->GetUInt32Value( OBJECT_FIELD_GUID
);
1016 data
<< chr
->GetUInt32Value( OBJECT_FIELD_GUID
+ 1 );
1018 data
<< float(speed
);
1019 chr
->SendMessageToSet( &data
, true );
1021 data
.Initialize( SMSG_FORCE_SWIM_SPEED_CHANGE
);
1022 data
<< uint8(0xFF);
1023 data
<< chr
->GetUInt32Value( OBJECT_FIELD_GUID
);
1024 data
<< chr
->GetUInt32Value( OBJECT_FIELD_GUID
+ 1 );
1026 data
<< float(speed
);
1027 chr
->SendMessageToSet( &data
, true );
1032 bool ChatHandler::HandleModifyGoldCommand(const char* args
)
1039 int32 gold
= atoi((char*)args
);
1041 Player
*chr
= getSelectedPlayer();
1044 SendSysMessage(LANG_NO_CHAR_SELECTED
);
1048 uint32 moneyuser
= m_session
->GetPlayer()->GetMoney();
1052 int32 newmoney
= moneyuser
+ gold
;
1054 sLog
.outDetail(LANG_CURRENT_MONEY
, moneyuser
, gold
, newmoney
);
1058 PSendSysMessage(LANG_YOU_TAKE_ALL_MONEY
, chr
->GetName());
1061 sprintf((char*)buf
,LANG_YOURS_ALL_MONEY_GONE
, m_session
->GetPlayer()->GetName());
1062 FillSystemMessageData(&data
, m_session
, buf
);
1063 chr
->GetSession()->SendPacket(&data
);
1070 PSendSysMessage(LANG_YOU_TAKE_MONEY
, abs(gold
), chr
->GetName());
1073 sprintf((char*)buf
,LANG_YOURS_MONEY_TAKEN
, m_session
->GetPlayer()->GetName(), abs(gold
));
1074 FillSystemMessageData(&data
, m_session
, buf
);
1075 chr
->GetSession()->SendPacket(&data
);
1077 chr
->SetMoney( newmoney
);
1083 PSendSysMessage(LANG_YOU_GIVE_MONEY
, gold
, chr
->GetName());
1086 sprintf((char*)buf
,LANG_YOURS_MONEY_GIVEN
, m_session
->GetPlayer()->GetName(), gold
);
1087 FillSystemMessageData(&data
, m_session
, buf
);
1088 chr
->GetSession()->SendPacket(&data
);
1090 chr
->ModifyMoney( gold
);
1093 sLog
.outDetail(LANG_NEW_MONEY
, moneyuser
, gold
, chr
->GetMoney() );
1098 bool ChatHandler::HandleModifyBitCommand(const char* args
)
1100 Player
*chr
= getSelectedPlayer();
1103 SendSysMessage(LANG_NO_CHAR_SELECTED
);
1107 char* pField
= strtok((char*)args
, " ");
1111 char* pBit
= strtok(NULL
, " ");
1115 uint16 field
= atoi(pField
);
1116 uint32 bit
= atoi(pBit
);
1118 if (field
< 1 || field
>= PLAYER_END
)
1120 SendSysMessage(LANG_BAD_VALUE
);
1124 if (bit
< 1 || bit
> 32)
1126 SendSysMessage(LANG_BAD_VALUE
);
1130 if ( chr
->HasFlag( field
, (1<<(bit
-1)) ) )
1132 chr
->RemoveFlag( field
, (1<<(bit
-1)) );
1133 PSendSysMessage(LANG_REMOVE_BIT
, bit
, field
);
1137 chr
->SetFlag( field
, (1<<(bit
-1)) );
1138 PSendSysMessage(LANG_SET_BIT
, bit
, field
);
1144 bool ChatHandler::HandleTeleCommand(const char * args
)
1146 QueryResult
*result
;
1149 result
= sDatabase
.Query("SELECT `name` FROM `game_tele`");
1152 SendSysMessage("Teleport location table is empty!");
1155 std::string reply
="Valid locations are:";
1156 for (uint64 i
=0; i
< result
->GetRowCount(); i
++)
1158 Field
*fields
= result
->Fetch();
1160 reply
+= fields
[0].GetCppString();
1163 SendSysMessage(reply
.c_str());
1167 char *name
= (char*)args
;
1168 result
= sDatabase
.PQuery("SELECT `position_x`,`position_y`,`position_z`,`orientation`,`map` FROM `game_tele` WHERE `name` = '%s'",name
);
1171 SendSysMessage("Teleport location not found!");
1174 Field
*fields
= result
->Fetch();
1175 float x
= fields
[0].GetFloat();
1176 float y
= fields
[1].GetFloat();
1177 float z
= fields
[2].GetFloat();
1178 float ort
= fields
[3].GetFloat();
1179 int mapid
= fields
[4].GetUInt16();
1182 if(!MapManager::ExistMAP(mapid
,x
,y
))
1184 PSendSysMessage(".tele target map not exist (X: %f Y: %f MapId:%u)",x
,y
,mapid
);
1188 m_session
->GetPlayer()->TeleportTo(mapid
, x
, y
, z
, ort
);
1192 bool ChatHandler::HandleSearchTeleCommand(const char * args
)
1194 QueryResult
*result
;
1197 SendSysMessage("Requires search parameter.");
1200 char const* str
= strtok((char*)args
, " ");
1201 result
= sDatabase
.PQuery("SELECT `name` FROM `game_tele` WHERE `name` LIKE '%%%s%%'",str
);
1204 SendSysMessage("There are no teleport locations matching your request.");
1208 for (uint64 i
=0; i
< result
->GetRowCount(); i
++)
1210 Field
*fields
= result
->Fetch();
1212 reply
+= fields
[0].GetCppString();
1219 SendSysMessage("None locations found.");
1222 reply
= "Locations found are:\n" + reply
;
1223 SendSysMultilineMessage(reply
.c_str());
1228 bool ChatHandler::HandleWhispersCommand(const char* args
)
1230 char* px
= strtok((char*)args
, " ");
1235 PSendSysMessage("Whispers accepting: %s", m_session
->GetPlayer()->isAcceptWhispers() ? "on" : "off");
1240 if(strncmp(px
,"on",3) == 0)
1242 m_session
->GetPlayer()->SetAcceptWhispers(true);
1243 SendSysMessage("Whispers accepting: on");
1248 if(strncmp(px
,"off",4) == 0)
1250 m_session
->GetPlayer()->SetAcceptWhispers(false);
1251 SendSysMessage("Whispers accepting: off");