mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-06-08 21:44:35 +02:00
Updated Map Server namespace. Moved all other data folders (www and sql) to data folder. Renamed boot name to Project Meteor.
This commit is contained in:
parent
18ef69f3d1
commit
91549bff7a
1823 changed files with 102704 additions and 901 deletions
76
Data/scripts/commands/gm/warp.lua
Normal file
76
Data/scripts/commands/gm/warp.lua
Normal file
|
@ -0,0 +1,76 @@
|
|||
require("global");
|
||||
|
||||
properties = {
|
||||
permissions = 0,
|
||||
parameters = "sssssss",
|
||||
description =
|
||||
[[
|
||||
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> |
|
||||
]],
|
||||
}
|
||||
|
||||
function onTrigger(player, argc, p1, p2, p3, p4, privateArea, name, lastName)
|
||||
|
||||
if name then
|
||||
if lastName then
|
||||
player = GetWorldManager():GetPCInWorld(name.." "..lastName) or nil;
|
||||
else
|
||||
player = GetWorldManager():GetPCInWorld(name) or nil;
|
||||
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
|
||||
|
||||
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));
|
||||
|
||||
worldManager:DoPlayerMoveInZone(player, x, y, z, player_rot, 0x00);
|
||||
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);
|
||||
end
|
||||
|
||||
else
|
||||
player:SendMessage(messageID, sender, "Unknown parameters! Usage: "..properties.description);
|
||||
end;
|
||||
end;
|
||||
|
||||
function applyPositionOffset(str, offset)
|
||||
local s = str;
|
||||
if s:find("@") then
|
||||
s = tonumber(s:sub(s:find("@") + 1, s:len()));
|
||||
if s then s = s + offset end;
|
||||
end
|
||||
print(s);
|
||||
return s;
|
||||
end;
|
Loading…
Add table
Add a link
Reference in a new issue