Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
cs_gobject.cpp
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6/* ScriptData
7Name: gobject_commandscript
8%Complete: 100
9Comment: All gobject related commands
10Category: commandscripts
11EndScriptData */
12
13#include "Chat.h"
14#include "GameEventMgr.h"
15#include "Language.h"
16#include "MapManager.h"
17#include "ObjectMgr.h"
18#include "Opcodes.h"
19#include "Player.h"
20#include "PoolMgr.h"
21#include "ScriptMgr.h"
22
24{
25public:
26 gobject_commandscript() : CommandScript("gobject_commandscript") { }
27
28 std::vector<ChatCommand> GetCommands() const
29 {
30 static std::vector<ChatCommand> gobjectAddCommandTable =
31 {
34 };
35 static std::vector<ChatCommand> gobjectSetCommandTable =
36 {
39 };
40 static std::vector<ChatCommand> gobjectCommandTable =
41 {
49 { "add", rbac::RBAC_PERM_COMMAND_GOBJECT_ADD, false, NULL, "", gobjectAddCommandTable },
50 { "set", rbac::RBAC_PERM_COMMAND_GOBJECT_SET, false, NULL, "", gobjectSetCommandTable },
51 };
52 static std::vector<ChatCommand> commandTable =
53 {
54 { "gobject", rbac::RBAC_PERM_COMMAND_GOBJECT, false, NULL, "", gobjectCommandTable },
55 };
56 return commandTable;
57 }
58
59 static bool HandleGameObjectActivateCommand(ChatHandler* handler, char const* args)
60 {
61 if (!*args)
62 return false;
63
64 char* id = handler->extractKeyFromLink((char*)args, "Hgameobject");
65 if (!id)
66 return false;
67
68 uint32 guidLow = atoi(id);
69 if (!guidLow)
70 return false;
71
72 GameObject* object = NULL;
73
74 // by DB guid
75 if (GameObjectData const* goData = sObjectMgr->GetGOData(guidLow))
76 object = handler->GetObjectGlobalyWithGuidOrNearWithDbGuid(guidLow, goData->id);
77
78 if (!object)
79 {
81 handler->SetSentErrorMessage(true);
82 return false;
83 }
84
85 // Activate
87 object->UseDoorOrButton(10000, false, handler->GetSession()->GetPlayer());
88
89 handler->PSendSysMessage("Object activated!");
90
91 return true;
92 }
93
94 //spawn go
95 static bool HandleGameObjectAddCommand(ChatHandler* handler, char const* args)
96 {
97 if (!*args)
98 return false;
99
100 // number or [name] Shift-click form |color|Hgameobject_entry:go_id|h[name]|h|r
101 char* id = handler->extractKeyFromLink((char*)args, "Hgameobject_entry");
102 if (!id)
103 return false;
104
105 uint32 objectId = atol(id);
106 if (!objectId)
107 return false;
108
109 char* spawntimeSecs = strtok(NULL, " ");
110
111 const GameObjectTemplate* objectInfo = sObjectMgr->GetGameObjectTemplate(objectId);
112
113 if (!objectInfo)
114 {
115 handler->PSendSysMessage(LANG_GAMEOBJECT_NOT_EXIST, objectId);
116 handler->SetSentErrorMessage(true);
117 return false;
118 }
119
120 if (objectInfo->displayId && !sGameObjectDisplayInfoStore.LookupEntry(objectInfo->displayId))
121 {
122 // report to DB errors log as in loading case
123 SF_LOG_ERROR("sql.sql", "Gameobject (Entry %u GoType: %u) have invalid displayId (%u), not spawned.", objectId, objectInfo->type, objectInfo->displayId);
125 handler->SetSentErrorMessage(true);
126 return false;
127 }
128
129 Player* player = handler->GetSession()->GetPlayer();
130 float x = float(player->GetPositionX());
131 float y = float(player->GetPositionY());
132 float z = float(player->GetPositionZ());
133 float o = float(player->GetOrientation());
134 Map* map = player->GetMap();
135
136 GameObject* object = new GameObject;
137 uint32 guidLow = sObjectMgr->GenerateLowGuid(HIGHGUID_GAMEOBJECT);
138
139 if (!object->Create(guidLow, objectInfo->entry, map, x, y, z, o, 0.0f, 0.0f, 0.0f, 0.0f, 0, GOState::GO_STATE_READY))
140 {
141 delete object;
142 return false;
143 }
144
145 for (auto phase : player->GetPhases())
146 object->SetPhased(phase, false, true);
147
148 if (spawntimeSecs)
149 {
150 uint32 value = atoi((char*)spawntimeSecs);
151 object->SetRespawnTime(value);
152 }
153
154 // fill the gameobject data and save to the db
155 object->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()));
156
157 // this will generate a new guid if the object is in an instance
158 if (!object->LoadGameObjectFromDB(guidLow, map))
159 {
160 delete object;
161 return false;
162 }
163
165 sObjectMgr->AddGameobjectToGrid(guidLow, sObjectMgr->GetGOData(guidLow));
166
167 handler->PSendSysMessage(LANG_GAMEOBJECT_ADD, objectId, objectInfo->name.c_str(), guidLow, x, y, z);
168 return true;
169 }
170
171 // add go, temp only
172 static bool HandleGameObjectAddTempCommand(ChatHandler* handler, char const* args)
173 {
174 if (!*args)
175 return false;
176
177 char* id = strtok((char*)args, " ");
178 if (!id)
179 return false;
180
181 Player* player = handler->GetSession()->GetPlayer();
182
183 char* spawntime = strtok(NULL, " ");
184 uint32 spawntm = 300;
185
186 if (spawntime)
187 spawntm = atoi((char*)spawntime);
188
189 float x = player->GetPositionX();
190 float y = player->GetPositionY();
191 float z = player->GetPositionZ();
192 float ang = player->GetOrientation();
193
194 float rot2 = std::sin(ang / 2);
195 float rot3 = std::cos(ang / 2);
196
197 uint32 objectId = atoi(id);
198
199 player->SummonGameObject(objectId, x, y, z, ang, 0, 0, rot2, rot3, spawntm);
200
201 return true;
202 }
203
204 static bool HandleGameObjectTargetCommand(ChatHandler* handler, char const* args)
205 {
206 Player* player = handler->GetSession()->GetPlayer();
207 QueryResult result;
208 GameEventMgr::ActiveEvents const& activeEventsList = sGameEventMgr->GetActiveEventList();
209
210 if (*args)
211 {
212 // number or [name] Shift-click form |color|Hgameobject_entry:go_id|h[name]|h|r
213 char* id = handler->extractKeyFromLink((char*)args, "Hgameobject_entry");
214 if (!id)
215 return false;
216
217 uint32 objectId = atol(id);
218
219 if (objectId)
220 result = WorldDatabase.PQuery("SELECT guid, id, position_x, position_y, position_z, orientation, map, phaseId, (POW(position_x - '%f', 2) + POW(position_y - '%f', 2) + POW(position_z - '%f', 2)) AS order_ FROM gameobject WHERE map = '%i' AND id = '%u' ORDER BY order_ ASC LIMIT 1",
221 player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetMapId(), objectId);
222 else
223 {
224 std::string name = id;
225 WorldDatabase.EscapeString(name);
226 result = WorldDatabase.PQuery(
227 "SELECT guid, id, position_x, position_y, position_z, orientation, map, phaseId, (POW(position_x - %f, 2) + POW(position_y - %f, 2) + POW(position_z - %f, 2)) AS order_ "
228 "FROM gameobject, gameobject_template WHERE gameobject_template.entry = gameobject.id AND map = %i AND name " _LIKE_ " " _CONCAT3_("'%%'", "'%s'", "'%%'")" ORDER BY order_ ASC LIMIT 1",
229 player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetMapId(), name.c_str());
230 }
231 }
232 else
233 {
234 std::ostringstream eventFilter;
235 eventFilter << " AND (eventEntry IS NULL ";
236 bool initString = true;
237
238 for (GameEventMgr::ActiveEvents::const_iterator itr = activeEventsList.begin(); itr != activeEventsList.end(); ++itr)
239 {
240 if (initString)
241 {
242 eventFilter << "OR eventEntry IN (" << *itr;
243 initString = false;
244 }
245 else
246 eventFilter << ',' << *itr;
247 }
248
249 if (!initString)
250 eventFilter << "))";
251 else
252 eventFilter << ')';
253
254 result = WorldDatabase.PQuery("SELECT gameobject.guid, id, position_x, position_y, position_z, orientation, map, phaseId, "
255 "(POW(position_x - %f, 2) + POW(position_y - %f, 2) + POW(position_z - %f, 2)) AS order_ FROM gameobject "
256 "LEFT OUTER JOIN game_event_gameobject on gameobject.guid = game_event_gameobject.guid WHERE map = '%i' %s ORDER BY order_ ASC LIMIT 10",
257 handler->GetSession()->GetPlayer()->GetPositionX(), handler->GetSession()->GetPlayer()->GetPositionY(), handler->GetSession()->GetPlayer()->GetPositionZ(),
258 handler->GetSession()->GetPlayer()->GetMapId(), eventFilter.str().c_str());
259 }
260
261 if (!result)
262 {
264 return true;
265 }
266
267 bool found = false;
268 float x, y, z, o;
269 uint32 guidLow, id, phase;
270 uint16 mapId;
271 uint32 poolId;
272
273 do
274 {
275 Field* fields = result->Fetch();
276 guidLow = fields[0].GetUInt32();
277 id = fields[1].GetUInt32();
278 x = fields[2].GetFloat();
279 y = fields[3].GetFloat();
280 z = fields[4].GetFloat();
281 o = fields[5].GetFloat();
282 mapId = fields[6].GetUInt16();
283 phase = fields[7].GetUInt32();
284 poolId = sPoolMgr->IsPartOfAPool<GameObject>(guidLow);
285 if (!poolId || sPoolMgr->IsSpawnedObject<GameObject>(guidLow))
286 found = true;
287 } while (result->NextRow() && !found);
288
289 if (!found)
290 {
292 return false;
293 }
294
295 GameObjectTemplate const* objectInfo = sObjectMgr->GetGameObjectTemplate(id);
296
297 if (!objectInfo)
298 {
300 return false;
301 }
302
303 GameObject* target = handler->GetSession()->GetPlayer()->GetMap()->GetGameObject(MAKE_NEW_GUID(guidLow, id, HIGHGUID_GAMEOBJECT));
304
305 handler->PSendSysMessage(LANG_GAMEOBJECT_DETAIL, guidLow, objectInfo->name.c_str(), guidLow, id, x, y, z, mapId, o, phase);
306
307 if (target)
308 {
309 int32 curRespawnDelay = int32(target->GetRespawnTimeEx() - time(NULL));
310 if (curRespawnDelay < 0)
311 curRespawnDelay = 0;
312
313 std::string curRespawnDelayStr = secsToTimeString(curRespawnDelay, true);
314 std::string defRespawnDelayStr = secsToTimeString(target->GetRespawnDelay(), true);
315
316 handler->PSendSysMessage(LANG_COMMAND_RAWPAWNTIMES, defRespawnDelayStr.c_str(), curRespawnDelayStr.c_str());
317 }
318 return true;
319 }
320
321 //delete object by selection or guid
322 static bool HandleGameObjectDeleteCommand(ChatHandler* handler, char const* args)
323 {
324 // number or [name] Shift-click form |color|Hgameobject:go_guid|h[name]|h|r
325 char* id = handler->extractKeyFromLink((char*)args, "Hgameobject");
326 if (!id)
327 return false;
328
329 uint32 guidLow = atoi(id);
330 if (!guidLow)
331 return false;
332
333 GameObject* object = NULL;
334
335 // by DB guid
336 if (GameObjectData const* gameObjectData = sObjectMgr->GetGOData(guidLow))
337 object = handler->GetObjectGlobalyWithGuidOrNearWithDbGuid(guidLow, gameObjectData->id);
338
339 if (!object)
340 {
341 handler->PSendSysMessage(LANG_COMMAND_OBJNOTFOUND, guidLow);
342 handler->SetSentErrorMessage(true);
343 return false;
344 }
345
346 uint64 ownerGuid = object->GetOwnerGUID();
347 if (ownerGuid)
348 {
349 Unit* owner = ObjectAccessor::GetUnit(*handler->GetSession()->GetPlayer(), ownerGuid);
350 if (!owner || !IS_PLAYER_GUID(ownerGuid))
351 {
353 handler->SetSentErrorMessage(true);
354 return false;
355 }
356
357 owner->RemoveGameObject(object, false);
358 }
359
360 object->SetRespawnTime(0); // not save respawn time
361 object->Delete();
362 object->DeleteFromDB();
363
365
366 return true;
367 }
368
369 //turn selected object
370 static bool HandleGameObjectTurnCommand(ChatHandler* handler, char const* args)
371 {
372 // number or [name] Shift-click form |color|Hgameobject:go_id|h[name]|h|r
373 char* id = handler->extractKeyFromLink((char*)args, "Hgameobject");
374 if (!id)
375 return false;
376
377 uint32 guidLow = atoi(id);
378 if (!guidLow)
379 return false;
380
381 GameObject* object = NULL;
382
383 // by DB guid
384 if (GameObjectData const* gameObjectData = sObjectMgr->GetGOData(guidLow))
385 object = handler->GetObjectGlobalyWithGuidOrNearWithDbGuid(guidLow, gameObjectData->id);
386
387 if (!object)
388 {
389 handler->PSendSysMessage(LANG_COMMAND_OBJNOTFOUND, guidLow);
390 handler->SetSentErrorMessage(true);
391 return false;
392 }
393
394 char* orientation = strtok(NULL, " ");
395 float o;
396
397 if (orientation)
398 o = (float)atof(orientation);
399 else
400 {
401 Player* player = handler->GetSession()->GetPlayer();
402 o = player->GetOrientation();
403 }
404
405 object->Relocate(object->GetPositionX(), object->GetPositionY(), object->GetPositionZ(), o);
406 object->UpdateRotationFields();
407 object->DestroyForNearbyPlayers();
408 object->UpdateObjectVisibility();
409
410 object->SaveToDB();
411 object->Refresh();
412
413 handler->PSendSysMessage(LANG_COMMAND_TURNOBJMESSAGE, object->GetGUIDLow(), object->GetGOInfo()->name.c_str(), object->GetGUIDLow(), o);
414
415 return true;
416 }
417
418 //move selected object
419 static bool HandleGameObjectMoveCommand(ChatHandler* handler, char const* args)
420 {
421 // number or [name] Shift-click form |color|Hgameobject:go_guid|h[name]|h|r
422 char* id = handler->extractKeyFromLink((char*)args, "Hgameobject");
423 if (!id)
424 return false;
425
426 uint32 guidLow = atoi(id);
427 if (!guidLow)
428 return false;
429
430 GameObject* object = NULL;
431
432 // by DB guid
433 if (GameObjectData const* gameObjectData = sObjectMgr->GetGOData(guidLow))
434 object = handler->GetObjectGlobalyWithGuidOrNearWithDbGuid(guidLow, gameObjectData->id);
435
436 if (!object)
437 {
438 handler->PSendSysMessage(LANG_COMMAND_OBJNOTFOUND, guidLow);
439 handler->SetSentErrorMessage(true);
440 return false;
441 }
442
443 char* toX = strtok(NULL, " ");
444 char* toY = strtok(NULL, " ");
445 char* toZ = strtok(NULL, " ");
446
447 if (!toX)
448 {
449 Player* player = handler->GetSession()->GetPlayer();
450 object->Relocate(player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), object->GetOrientation());
451 object->DestroyForNearbyPlayers();
452 object->UpdateObjectVisibility();
453 }
454 else
455 {
456 if (!toY || !toZ)
457 return false;
458
459 float x = (float)atof(toX);
460 float y = (float)atof(toY);
461 float z = (float)atof(toZ);
462
463 if (!MapManager::IsValidMapCoord(object->GetMapId(), x, y, z))
464 {
465 handler->PSendSysMessage(LANG_INVALID_TARGET_COORD, x, y, object->GetMapId());
466 handler->SetSentErrorMessage(true);
467 return false;
468 }
469
470 object->Relocate(x, y, z, object->GetOrientation());
471 object->DestroyForNearbyPlayers();
472 object->UpdateObjectVisibility();
473 }
474
475 object->SaveToDB();
476 object->Refresh();
477
478 handler->PSendSysMessage(LANG_COMMAND_MOVEOBJMESSAGE, object->GetGUIDLow(), object->GetGOInfo()->name.c_str(), object->GetGUIDLow());
479
480 return true;
481 }
482
483 //set phasemask for selected object
484 static bool HandleGameObjectSetPhaseCommand(ChatHandler* handler, char const* args)
485 {
486 // number or [name] Shift-click form |color|Hgameobject:go_id|h[name]|h|r
487 char* id = handler->extractKeyFromLink((char*)args, "Hgameobject");
488 if (!id)
489 return false;
490
491 uint32 guidLow = atoi(id);
492 if (!guidLow)
493 return false;
494
495 GameObject* object = NULL;
496
497 // by DB guid
498 if (GameObjectData const* gameObjectData = sObjectMgr->GetGOData(guidLow))
499 object = handler->GetObjectGlobalyWithGuidOrNearWithDbGuid(guidLow, gameObjectData->id);
500
501 if (!object)
502 {
503 handler->PSendSysMessage(LANG_COMMAND_OBJNOTFOUND, guidLow);
504 handler->SetSentErrorMessage(true);
505 return false;
506 }
507
508 char* phase = strtok(NULL, " ");
509 uint32 phaseMask = phase ? atoi(phase) : 0;
510 if (phaseMask == 0)
511 {
513 handler->SetSentErrorMessage(true);
514 return false;
515 }
516
517 object->SetPhaseMask(phaseMask, true);
518 object->SaveToDB();
519 return true;
520 }
521
522 static bool HandleGameObjectNearCommand(ChatHandler* handler, char const* args)
523 {
524 float distance = (!*args) ? 10.0f : (float)(atof(args));
525 uint32 count = 0;
526
527 Player* player = handler->GetSession()->GetPlayer();
528
530 stmt->setFloat(0, player->GetPositionX());
531 stmt->setFloat(1, player->GetPositionY());
532 stmt->setFloat(2, player->GetPositionZ());
533 stmt->setUInt32(3, player->GetMapId());
534 stmt->setFloat(4, player->GetPositionX());
535 stmt->setFloat(5, player->GetPositionY());
536 stmt->setFloat(6, player->GetPositionZ());
537 stmt->setFloat(7, distance * distance);
538 PreparedQueryResult result = WorldDatabase.Query(stmt);
539
540 if (result)
541 {
542 do
543 {
544 Field* fields = result->Fetch();
545 uint32 guid = fields[0].GetUInt32();
546 uint32 entry = fields[1].GetUInt32();
547 float x = fields[2].GetFloat();
548 float y = fields[3].GetFloat();
549 float z = fields[4].GetFloat();
550 uint16 mapId = fields[5].GetUInt16();
551
552 GameObjectTemplate const* gameObjectInfo = sObjectMgr->GetGameObjectTemplate(entry);
553
554 if (!gameObjectInfo)
555 continue;
556
557 handler->PSendSysMessage(LANG_GO_LIST_CHAT, guid, entry, guid, gameObjectInfo->name.c_str(), x, y, z, mapId);
558
559 ++count;
560 } while (result->NextRow());
561 }
562
563 handler->PSendSysMessage(LANG_COMMAND_NEAROBJMESSAGE, distance, count);
564 return true;
565 }
566
567 //show info of gameobject
568 static bool HandleGameObjectInfoCommand(ChatHandler* handler, char const* args)
569 {
570 uint32 entry = 0;
571 uint32 type = 0;
572 uint32 displayId = 0;
573 std::string name;
574 uint32 lootId = 0;
575
576 if (!*args)
577 {
578 if (WorldObject* object = handler->getSelectedObject())
579 entry = object->GetEntry();
580 else
581 entry = atoi((char*)args);
582 }
583 else
584 entry = atoi((char*)args);
585
586 GameObjectTemplate const* gameObjectInfo = sObjectMgr->GetGameObjectTemplate(entry);
587
588 if (!gameObjectInfo)
589 return false;
590
591 type = gameObjectInfo->type;
592 displayId = gameObjectInfo->displayId;
593 name = gameObjectInfo->name;
594 if (type == GAMEOBJECT_TYPE_CHEST)
595 lootId = gameObjectInfo->chest.lootId;
596 else if (type == GAMEOBJECT_TYPE_FISHINGHOLE)
597 lootId = gameObjectInfo->fishinghole.lootId;
598
599 handler->PSendSysMessage(LANG_GOINFO_ENTRY, entry);
600 handler->PSendSysMessage(LANG_GOINFO_TYPE, type);
601 handler->PSendSysMessage(LANG_GOINFO_LOOTID, lootId);
602 handler->PSendSysMessage(LANG_GOINFO_DISPLAYID, displayId);
603 handler->PSendSysMessage(LANG_GOINFO_NAME, name.c_str());
604
605 return true;
606 }
607
608 static bool HandleGameObjectSetStateCommand(ChatHandler* handler, char const* args)
609 {
610 // number or [name] Shift-click form |color|Hgameobject:go_id|h[name]|h|r
611 char* id = handler->extractKeyFromLink((char*)args, "Hgameobject");
612 if (!id)
613 return false;
614
615 uint32 guidLow = atoi(id);
616 if (!guidLow)
617 return false;
618
619 GameObject* object = NULL;
620
621 if (GameObjectData const* gameObjectData = sObjectMgr->GetGOData(guidLow))
622 object = handler->GetObjectGlobalyWithGuidOrNearWithDbGuid(guidLow, gameObjectData->id);
623
624 if (!object)
625 {
626 handler->PSendSysMessage(LANG_COMMAND_OBJNOTFOUND, guidLow);
627 handler->SetSentErrorMessage(true);
628 return false;
629 }
630
631 char* type = strtok(NULL, " ");
632 if (!type)
633 return false;
634
635 int32 objectType = atoi(type);
636 if (objectType < 0)
637 {
638 if (objectType == -1)
639 object->SendObjectDeSpawnAnim(object->GetGUID());
640 else if (objectType == -2)
641 return false;
642 return true;
643 }
644
645 char* state = strtok(NULL, " ");
646 if (!state)
647 return false;
648
649 int32 objectState = atoi(state);
650
651 if (objectType < 4)
652 object->SetByteValue(GAMEOBJECT_FIELD_STATE_SPELL_VISUAL_ID, objectType, objectState);
653 else if (objectType == 4)
654 {
656 data << object->GetGUID();
657 data << (uint32)(objectState);
658 object->SendMessageToSet(&data, true);
659 }
660 handler->PSendSysMessage("Set gobject type %d state %d", objectType, objectState);
661 return true;
662 }
663};
664
DBCStorage< GameObjectDisplayInfoEntry > sGameObjectDisplayInfoStore(GameObjectDisplayInfofmt)
#define _LIKE_
Definition DatabaseEnv.h:19
#define _CONCAT3_(A, B, C)
Definition DatabaseEnv.h:21
std::int32_t int32
Definition Define.h:73
std::uint32_t uint32
Definition Define.h:77
std::uint64_t uint64
Definition Define.h:76
std::uint16_t uint16
Definition Define.h:78
#define sGameEventMgr
@ GO_STATE_READY
Definition GameObject.h:577
@ LANG_GAMEOBJECT_DETAIL
Definition Language.h:517
@ LANG_COMMAND_DELOBJMESSAGE
Definition Language.h:282
@ LANG_COMMAND_TURNOBJMESSAGE
Definition Language.h:283
@ LANG_COMMAND_OBJNOTFOUND
Definition Language.h:280
@ LANG_GOINFO_NAME
Definition Language.h:1095
@ LANG_GAMEOBJECT_HAVE_INVALID_DATA
Definition Language.h:355
@ LANG_COMMAND_MOVEOBJMESSAGE
Definition Language.h:284
@ LANG_GAMEOBJECT_NOT_EXIST
Definition Language.h:514
@ LANG_COMMAND_TARGETOBJNOTFOUND
Definition Language.h:273
@ LANG_GO_LIST_CHAT
Definition Language.h:508
@ LANG_GAMEOBJECT_ADD
Definition Language.h:518
@ LANG_COMMAND_NEAROBJMESSAGE
Definition Language.h:585
@ LANG_GOINFO_DISPLAYID
Definition Language.h:1094
@ LANG_INVALID_TARGET_COORD
Definition Language.h:270
@ LANG_GOINFO_ENTRY
Definition Language.h:1092
@ LANG_GOINFO_LOOTID
Definition Language.h:1096
@ LANG_BAD_VALUE
Definition Language.h:117
@ LANG_GOINFO_TYPE
Definition Language.h:1093
@ LANG_COMMAND_RAWPAWNTIMES
Definition Language.h:586
@ LANG_COMMAND_DELOBJREFERCREATURE
Definition Language.h:281
#define SF_LOG_ERROR(filterType__,...)
Definition Log.h:143
uint32 GUID_LOPART(uint64 x)
@ HIGHGUID_GAMEOBJECT
uint64 MAKE_NEW_GUID(uint32 l, uint32 e, uint32 h)
bool IS_PLAYER_GUID(uint64 guid)
#define sObjectMgr
Definition ObjectMgr.h:1617
#define sPoolMgr
Definition PoolMgr.h:154
Skyfire::AutoPtr< PreparedResultSet, Skyfire::Mutex > PreparedQueryResult
Definition QueryResult.h:94
Skyfire::AutoPtr< ResultSet, Skyfire::Mutex > QueryResult
Definition QueryResult.h:48
@ GAMEOBJECT_TYPE_CHEST
@ GAMEOBJECT_TYPE_FISHINGHOLE
@ GAMEOBJECT_FIELD_STATE_SPELL_VISUAL_ID
std::string secsToTimeString(uint64 timeInSecs, bool shortText, bool hoursOnly)
Definition Util.cpp:127
@ WORLD_SEL_GAMEOBJECT_NEAREST
GameObject * GetObjectGlobalyWithGuidOrNearWithDbGuid(uint32 lowguid, uint32 entry)
Definition Chat.cpp:998
WorldSession * GetSession()
Definition Chat.h:43
char * extractKeyFromLink(char *text, char const *linkType, char **something1=NULL)
Definition Chat.cpp:873
void PSendSysMessage(const char *format,...) ATTR_PRINTF(2
Definition Chat.cpp:221
void SetSentErrorMessage(bool val)
Definition Chat.h:114
WorldObject * getSelectedObject()
Definition Chat.cpp:852
virtual void SendSysMessage(const char *str)
Definition Chat.cpp:153
CommandScript(const char *name)
Definition Field.h:16
uint16 GetUInt16() const
Definition Field.h:69
float GetFloat() const
Definition Field.h:177
uint32 GetUInt32() const
Definition Field.h:105
std::set< uint16 > ActiveEvents
uint32 GetRespawnDelay() const
Definition GameObject.h:713
GameObjectTemplate const * GetGOInfo() const
Definition GameObject.h:643
bool Create(uint32 guidlow, uint32 name_id, Map *map, float x, float y, float z, float ang, float rotation0, float rotation1, float rotation2, float rotation3, uint32 animprogress, GOState go_state, uint32 artKit=0)
bool LoadGameObjectFromDB(uint32 guid, Map *map, bool addToMap=true)
time_t GetRespawnTimeEx() const
Definition GameObject.h:690
void SetLootState(LootState s, Unit *unit=NULL)
Definition Map.h:238
uint8 GetSpawnMode() const
Definition Map.h:358
GameObject * GetGameObject(uint64 guid)
Definition Map.cpp:3184
uint32 GetId(void) const
Definition Map.h:300
static bool IsValidMapCoord(uint32 mapid, float x, float y)
Definition MapManager.h:75
static Unit * GetUnit(WorldObject const &, uint64 guid)
uint64 GetGUID() const
Definition Object.h:119
uint32 GetGUIDLow() const
Definition Object.h:120
void setFloat(const uint8 index, const float value)
void setUInt32(const uint8 index, const uint32 value)
Definition Unit.h:1367
void RemoveGameObject(GameObject *gameObj, bool del)
Definition Unit.cpp:1689
uint32 GetMapId() const
Definition Object.h:546
Map * GetMap() const
Definition Object.h:740
std::set< uint32 > const & GetPhases() const
Definition Object.h:647
GameObject * SummonGameObject(uint32 entry, float x, float y, float z, float ang, float rotation0, float rotation1, float rotation2, float rotation3, uint32 respawnTime)
Definition Object.cpp:2729
Player * GetPlayer() const
static bool HandleGameObjectDeleteCommand(ChatHandler *handler, char const *args)
static bool HandleGameObjectSetPhaseCommand(ChatHandler *handler, char const *args)
static bool HandleGameObjectTurnCommand(ChatHandler *handler, char const *args)
static bool HandleGameObjectInfoCommand(ChatHandler *handler, char const *args)
static bool HandleGameObjectMoveCommand(ChatHandler *handler, char const *args)
std::vector< ChatCommand > GetCommands() const
static bool HandleGameObjectAddTempCommand(ChatHandler *handler, char const *args)
static bool HandleGameObjectActivateCommand(ChatHandler *handler, char const *args)
static bool HandleGameObjectAddCommand(ChatHandler *handler, char const *args)
static bool HandleGameObjectSetStateCommand(ChatHandler *handler, char const *args)
static bool HandleGameObjectNearCommand(ChatHandler *handler, char const *args)
static bool HandleGameObjectTargetCommand(ChatHandler *handler, char const *args)
void AddSC_gobject_commandscript()
WorldDatabaseWorkerPool WorldDatabase
Accessor to the world database.
Definition Main.cpp:40
@ SMSG_GAMEOBJECT_CUSTOM_ANIM
Definition Opcodes.h:659
@ RBAC_PERM_COMMAND_GOBJECT_ADD
Definition RBAC.h:277
@ RBAC_PERM_COMMAND_GOBJECT_SET_PHASE
Definition RBAC.h:284
@ RBAC_PERM_COMMAND_GOBJECT_SET_STATE
Definition RBAC.h:285
@ RBAC_PERM_COMMAND_GOBJECT_DELETE
Definition RBAC.h:279
@ RBAC_PERM_COMMAND_GOBJECT_SET
Definition RBAC.h:283
@ RBAC_PERM_COMMAND_GOBJECT
Definition RBAC.h:275
@ RBAC_PERM_COMMAND_GOBJECT_INFO
Definition RBAC.h:280
@ RBAC_PERM_COMMAND_GOBJECT_ACTIVATE
Definition RBAC.h:276
@ RBAC_PERM_COMMAND_GOBJECT_TARGET
Definition RBAC.h:286
@ RBAC_PERM_COMMAND_GOBJECT_NEAR
Definition RBAC.h:282
@ RBAC_PERM_COMMAND_GOBJECT_MOVE
Definition RBAC.h:281
@ RBAC_PERM_COMMAND_GOBJECT_TURN
Definition RBAC.h:287
@ RBAC_PERM_COMMAND_GOBJECT_ADD_TEMP
Definition RBAC.h:278
struct GameObjectTemplate::@046065176235271051340241126110345143267101032070::@154136051106040324176270267211357174344063050360 chest
struct GameObjectTemplate::@046065176235271051340241126110345143267101032070::@243266127071011160240350104214013054067132104252 fishinghole
std::string name
Definition GameObject.h:28
float GetPositionZ() const
Definition Object.h:330
float GetOrientation() const
Definition Object.h:331
float GetPositionX() const
Definition Object.h:328
float GetPositionY() const
Definition Object.h:329
void Relocate(float x, float y)
Definition Object.h:302