1
Fork 0
mirror of https://bitbucket.org/Ioncannon/project-meteor-server.git synced 2025-04-20 19:57:46 +00:00
project-meteor-server/data/scripts/commands/gm/warp.lua

76 lines
2.7 KiB
Lua
Raw Normal View History

2016-06-16 01:50:13 +01:00
require("global");
properties = {
permissions = 0,
parameters = "sssssss",
description =
[[
2016-08-11 20:02:01 -04:00
Warp player or <targetname> to a location from a list, or enter a zoneID with coordinates.
!warp <spawn list> |
!warp <zone> <x> <y> <z> |
!warp <zone> <x> <y> <z> <privateArea> <targetname> |
2016-06-16 01:50:13 +01:00
]],
}
function onTrigger(player, argc, p1, p2, p3, p4, privateArea, name, lastName)
2016-06-16 01:50:13 +01:00
if name then
2016-06-16 01:50:13 +01:00
if lastName then
player = GetWorldManager():GetPCInWorld(name.." "..lastName) or nil;
2016-06-16 01:50:13 +01:00
else
player = GetWorldManager():GetPCInWorld(name) or nil;
2016-06-16 01:50:13 +01:00
end;
end;
if not player then
printf("[Command] [warp] error! No target or player specified!");
return;
end;
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
local sender = "[warp] ";
-- we're getting a list/array from c# so 0 index
local pos = player:GetPos();
local player_x = pos[0];
local player_y = pos[1];
local player_z = pos[2];
local player_rot = pos[3];
local player_zone = pos[4];
local worldManager = GetWorldManager();
if argc >= 3 then
2016-06-16 01:50:13 +01:00
if argc == 3 then
local x = tonumber(applyPositionOffset(p1, player_x)) or player_x;
local y = tonumber(applyPositionOffset(p2, player_y)) or player_y;
local z = tonumber(applyPositionOffset(p3, player_z)) or player_z;
player:SendMessage(messageID, sender, string.format("setting coordinates X:%d Y:%d Z:%d within current zone (%d)", x, y, z, player_zone));
Merge branch 'master' into develop # Conflicts: # FFXIVClassic Lobby Server/FFXIVClassic Lobby Server.csproj # FFXIVClassic Map Server/Database.cs # FFXIVClassic Map Server/FFXIVClassic Map Server.csproj # FFXIVClassic Map Server/PacketProcessor.cs # FFXIVClassic Map Server/WorldManager.cs # FFXIVClassic Map Server/actors/Actor.cs # FFXIVClassic Map Server/actors/area/Area.cs # FFXIVClassic Map Server/actors/chara/player/Player.cs # FFXIVClassic Map Server/lua/LuaPlayer.cs # data/scripts/base/chara/npc/populace/PopulaceChocoboLender.lua # data/scripts/commands/gm/speed.lua # data/scripts/commands/gm/warp.lua # data/scripts/global.lua # data/scripts/player.lua # data/scripts/unique/fst0Town01a/PopulaceStandard/khuma_moshroca.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/ahldskyf.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/angry_river.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/ansgor.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/arnegis.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/arthurioux.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/astrid.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/audaine.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/bango_zango.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/bayard.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/bloemerl.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/bmallpa.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/bnhapla.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/chichiroon.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/drowsy-eyed_adventurer.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/eugennoix.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/fickle_beggar.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/hob.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/ivan.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/maetistym.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/mharelak.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/muscle-bound_deckhand.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/pasty-faced_adventurer.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/pearly-toothed_porter.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/ptahjha.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/suspicious-looking_traveler.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/syhrdaeg.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/syngsmyd.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/tatasako.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/tefh_moshroca.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/thata_khamazom.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/thosinbaen.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/tittering_traveler.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/totoruto.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/triaine.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/trinne.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/unconscious_adventurer.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/undsatz.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/vhynho.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/waekbyrt.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/whahtoa.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/wyra_khamazom.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/wyrstmann.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/xavalien.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/zonggo.lua # data/scripts/unique/sea0Town01a/PopulaceStandard/zuzule.lua # sql/server_zones_spawnlocations.sql
2017-08-26 13:53:23 -04:00
worldManager:DoPlayerMoveInZone(player, x, y, z, player_rot, 0x00);
2016-06-16 01:50:13 +01:00
else
local zone = tonumber(applyPositionOffset(p1, player_zone)) or player_zone;
local x = tonumber(applyPositionOffset(p2, player_x)) or player_x;
local y = tonumber(applyPositionOffset(p3, player_y)) or player_y;
local z = tonumber(applyPositionOffset(p4, player_z)) or player_z;
if privateArea == "" then privateArea = nil end;
player:SendMessage(messageID, sender, string.format("setting coordinates X:%d Y:%d Z:%d to new zone (%d) private area:%s", x, y, z, zone, privateArea or "unspecified"));
worldManager:DoZoneChange(player, zone, privateArea, 0, 0x02, x, y, z, 0.00);
2016-06-16 01:50:13 +01:00
end
else
player:SendMessage(messageID, sender, "Unknown parameters! Usage: "..properties.description);
end;
end;
function applyPositionOffset(str, offset)
local s = str;
if s:find("@") then
2016-08-11 20:02:01 -04:00
s = tonumber(s:sub(s:find("@") + 1, s:len()));
if s then s = s + offset end;
2016-06-16 01:50:13 +01:00
end
2016-08-11 20:02:01 -04:00
print(s);
2016-06-16 01:50:13 +01:00
return s;
end;