New test gm scripts to help with positioning populace npcs

This commit is contained in:
Filip Maj 2022-02-13 18:50:48 -05:00
parent 214d730a58
commit 8d5f4465e3
3 changed files with 95 additions and 0 deletions

View File

@ -0,0 +1,23 @@
require("global");
properties = {
permissions = 0,
parameters = "",
description =
[[
Changes appearance for equipment with given parameters.
!graphic <slot> <wID> <eID> <vID> <vID>
]],
}
function onTrigger(player, argc)
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
local sender = "[changetonpc] ";
local npc = player.CurrentArea:FindActorInArea(player.currentTarget);
if npc then
player:ChangeIntoNpc(npc);
end
end

View File

@ -0,0 +1,32 @@
require("global");
properties = {
permissions = 0,
parameters = "sffff",
description = "Moves an actor into a new position instantly",
}
function onTrigger(player, argc, name, posX, posY, posZ, rotation)
local actor;
if (name == nil) then
player:SendMessage(0x20, "", "No name provided.");
return;
end
local pos = player:GetPos();
local x = posX or pos[1];
local y = posY or pos[2];
local z = posZ or pos[3];
local rot = rotation or pos[4];
actor = player.CurrentArea:FindActorInZoneByUniqueID(name);
if (actor ~= nil) then
actor:SetPos(x,y,z,rot,true);
player:SendMessage(0x20, "", string.format("Moved %s @ %f, %f, %f, %f", name, x, y, z, rot));
else
player:SendMessage(0x20, "", string.format("Could not find %s.", name));
end
end

View File

@ -0,0 +1,40 @@
require("global");
properties = {
permissions = 0,
parameters = "dsdffff",
description = "Spawns an actor given the actorClassId",
}
function onTrigger(player, argc, actorClassId, name, motionPack, posX, posY, posZ, rotation)
local actor;
if (actorClassId == nil) then
player:SendMessage(0x20, "", "No actor class id provided.");
return;
end
if (motionPack == nil) then
motionPack = 0;
end
local actorClassId = tonumber(actorClassId);
local pos = player:GetPos();
local x = x or pos[1];
local y = y or pos[2];
local z = z or pos[3];
local rot = rotation or pos[4];
if (actorClassId ~= nil and name ~= nil) then
actor = player.CurrentArea:SpawnActor(1000001, name, x, y, z, rot, 0, motionPack);
actor:ChangeNpcAppearance(actorClassId)
player:SendMessage(0x20, "", string.format("Spawned %d @ %f, %f, %f, %f", actorClassId, x, y, z, rot));
end
if (actor == nil) then
player:SendMessage(0x20, "", "This actor class id cannot be spawned.");
end
end;