[Commands] Cleanup #gassign Command. (#2101)

* [Commands] Cleanup #gassign Command.
- Cleanup messages and logic.

* Update gassign.cpp

* Update gassign.cpp
This commit is contained in:
Kinglykrab 2022-05-06 19:13:28 -04:00 committed by GitHub
parent 8dcc810b43
commit fc484d0b1c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 39 additions and 17 deletions

View File

@ -188,7 +188,7 @@ int command_init(void)
command_add("flymode", "[0/1/2/3/4/5] - Set your or your player target's flymode to ground/flying/levitate/water/floating/levitate_running", AccountStatus::Guide, command_flymode) || command_add("flymode", "[0/1/2/3/4/5] - Set your or your player target's flymode to ground/flying/levitate/water/floating/levitate_running", AccountStatus::Guide, command_flymode) ||
command_add("fov", "- Check wether you're behind or in your target's field of view", AccountStatus::QuestTroupe, command_fov) || command_add("fov", "- Check wether you're behind or in your target's field of view", AccountStatus::QuestTroupe, command_fov) ||
command_add("freeze", "- Freeze your target", AccountStatus::QuestTroupe, command_freeze) || command_add("freeze", "- Freeze your target", AccountStatus::QuestTroupe, command_freeze) ||
command_add("gassign", "[id] - Assign targetted NPC to predefined wandering grid id", AccountStatus::GMAdmin, command_gassign) || command_add("gassign", "[Grid ID] - Assign targetted NPC to predefined wandering grid id", AccountStatus::GMAdmin, command_gassign) ||
command_add("gearup", "Developer tool to quickly equip a character", AccountStatus::GMMgmt, command_gearup) || command_add("gearup", "Developer tool to quickly equip a character", AccountStatus::GMMgmt, command_gearup) ||
command_add("gender", "[0/1/2] - Change your or your target's gender to male/female/neuter", AccountStatus::Guide, command_gender) || command_add("gender", "[0/1/2] - Change your or your target's gender to male/female/neuter", AccountStatus::Guide, command_gender) ||
command_add("getplayerburiedcorpsecount", "- Get your or your target's total number of buried player corpses.", AccountStatus::GMAdmin, command_getplayerburiedcorpsecount) || command_add("getplayerburiedcorpsecount", "- Get your or your target's total number of buried player corpses.", AccountStatus::GMAdmin, command_getplayerburiedcorpsecount) ||

View File

@ -2,13 +2,22 @@
void command_gassign(Client *c, const Seperator *sep) void command_gassign(Client *c, const Seperator *sep)
{ {
if (sep->IsNumber(1) && c->GetTarget() && c->GetTarget()->IsNPC() && if (!c->GetTarget() || !c->GetTarget()->IsNPC()) {
c->GetTarget()->CastToNPC()->GetSpawnPointID() > 0) { c->Message(Chat::White, "You must target an NPC to use this command.");
int spawn2id = c->GetTarget()->CastToNPC()->GetSpawnPointID(); return;
database.AssignGrid(c, atoi(sep->arg[1]), spawn2id);
} }
else {
c->Message(Chat::White, "Usage: #gassign [num] - must have an npc target!"); int arguments = sep->argnum;
if (!arguments || !sep->IsNumber(1)) {
c->Message(Chat::White, "Usage: #gassign [Grid ID]");
return;
}
auto grid_id = std::stoul(sep->arg[1]);
auto target = c->GetTarget()->CastToNPC();
if (target->GetSpawnPointID() > 0) {
database.AssignGrid(c, grid_id, target->GetID());
} }
} }

View File

@ -1041,18 +1041,31 @@ bool ZoneDatabase::GetWaypoints(uint32 grid, uint16 zoneid, uint32 num, wplist*
return true; return true;
} }
void ZoneDatabase::AssignGrid(Client *client, int grid, int spawn2id) { void ZoneDatabase::AssignGrid(Client *client, uint32 grid_id, uint32 entity_id) {
std::string query = StringFormat("UPDATE spawn2 SET pathgrid = %d WHERE id = %d", grid, spawn2id); auto target_npc = entity_list.GetNPCByID(entity_id);
auto results = QueryDatabase(query); auto spawn2_id = target_npc ? target_npc->GetSpawnPointID() : 0;
if (spawn2_id) {
std::string query = fmt::format(
"UPDATE spawn2 SET pathgrid = {} WHERE id = {}",
grid_id,
spawn2_id
);
auto results = QueryDatabase(query);
if (!results.Success()) if (!results.Success() || results.RowsAffected() != 1) {
return; return;
}
if (results.RowsAffected() != 1) { client->Message(
return; Chat::White,
fmt::format(
"{} (Spawn2 ID {}) will now use Grid ID {}.",
target_npc->GetCleanName(),
spawn2_id,
grid_id
).c_str()
);
} }
client->Message(Chat::White, "Grid assign: spawn2 id = %d updated", spawn2id);
} }

View File

@ -480,7 +480,7 @@ public:
uint8 GetGridType(uint32 grid, uint32 zoneid); uint8 GetGridType(uint32 grid, uint32 zoneid);
uint8 GetGridType2(uint32 grid, uint16 zoneid); uint8 GetGridType2(uint32 grid, uint16 zoneid);
bool GetWaypoints(uint32 grid, uint16 zoneid, uint32 num, wplist* wp); bool GetWaypoints(uint32 grid, uint16 zoneid, uint32 num, wplist* wp);
void AssignGrid(Client *client, int grid, int spawn2id); void AssignGrid(Client *client, uint32 grid_id, uint32 entity_id);
int GetHighestGrid(uint32 zoneid); int GetHighestGrid(uint32 zoneid);
int GetHighestWaypoint(uint32 zoneid, uint32 gridid); int GetHighestWaypoint(uint32 zoneid, uint32 gridid);
int GetRandomWaypointLocFromGrid(glm::vec4 &loc, uint16 zoneid, int grid); int GetRandomWaypointLocFromGrid(glm::vec4 &loc, uint16 zoneid, int grid);