Overhaul of the director system and opening quests. Private Areas further implemented as well.

This commit is contained in:
Filip Maj 2017-03-07 00:09:37 -05:00
parent dcaad5729d
commit e898c045f7
69 changed files with 2602 additions and 1816 deletions

View file

@ -0,0 +1,35 @@
require("global");
properties = {
permissions = 0,
parameters = "ss",
description =
[[
Passes endEvent() to player or <targetname> to close a script.
!endevent |
!endevent <targetname> |
]],
}
function onTrigger(player, argc, name, lastName)
local sender = "[endevent] ";
if name then
if lastName then
player = GetWorldManager():GetPCInWorld(name.." "..lastName) or nil;
else
player = GetWorldManager():GetPCInWorld(name) or nil;
end;
end;
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
local message = "Sending endEvent()";
if player then
player:endEvent();
player:SendMessage(messageID, sender, message);
print(message);
else
print(sender.."Sending Event.");
end;
end;

View file

@ -0,0 +1,42 @@
require("global");
properties = {
permissions = 0,
parameters = "sss",
description =
[[
Adds gil <qty> to player or <targetname>.
!givegil <qty> |
!givegil <qty> <targetname> |
]],
}
function onTrigger(player, argc, qty, name, lastName)
local sender = "[givegil] ";
if name then
if lastName then
player = GetWorldManager():GetPCInWorld(name.." "..lastName) or nil;
else
player = GetWorldManager():GetPCInWorld(name) or nil;
end;
end;
if player then
currency = 1000001;
qty = tonumber(qty) or 1;
location = INVENTORY_CURRENCY;
local added = player:GetInventory(location):AddItem(currency, qty, 1);
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
local message = "unable to add gil";
if currency and added then
message = string.format("added %u gil to %s", qty, player:GetName());
end
player:SendMessage(messageID, sender, message);
print(message);
else
print(sender.."unable to add gil, ensure player name is valid.");
end;
end;

View file

@ -0,0 +1,57 @@
require("global");
properties = {
permissions = 0,
parameters = "ss",
description =
[[
Positions your character forward a set <distance>, defaults to 5 yalms.
!nudge |
!nudge <distance> |
!nudge <distance> <up/down> |
]],
}
function onTrigger(player, argc, distance, vertical)
local pos = player:GetPos();
local x = pos[0];
local y = pos[1];
local z = pos[2];
local rot = pos[3];
local zone = pos[4];
local angle = rot + (math.pi/2);
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
local sender = "[nudge] ";
if distance == nil then
distance = 5
end;
local px = x - distance * math.cos(angle);
local pz = z + distance * math.sin(angle);
local message = string.format("Positioning forward %u yalms.", distance);
local worldManager = GetWorldManager();
if argc == 1 then
worldManager:DoPlayerMoveInZone(player, px, y, pz, rot, 0x0);
player:SendMessage(messageID, sender, message);
elseif argc == 2 then
if vertical == "up" or vertical == "u" or vertical == "+" then
y = y + distance;
message = string.format("Positioning up %u yalms.", distance);
worldManager:DoPlayerMoveInZone(player, x, y, z, rot, 0x0);
player:SendMessage(messageID, sender, message);
elseif vertical == "down" or vertical == "d" or vertical == "-" then
y = y - distance;
message = string.format("Positioning down %u yalms.", distance);
worldManager:DoPlayerMoveInZone(player, x, y, z, rot, 0x0);
player:SendMessage(messageID, sender, message);
else
player:SendMessage(messageID, sender, "Unknown parameters! Usage: \n"..properties.description);
end;
else
worldManager:DoPlayerMoveInZone(player, px, y, pz, rot, 0x0);
player:SendMessage(messageID, sender, message);
end;
end;

View file

@ -0,0 +1,28 @@
require("global");
properties = {
permissions = 0,
parameters = "ss",
description =
[[
Positions your character forward a set <distance>, defaults to 5 yalms.
!nudge |
!nudge <distance> |
!nudge <distance> <up/down> |
]],
}
function onTrigger(player, argc)
worldMaster = GetWorldMaster();
player:SendGameMessage(player, worldMaster, 34108, 0x20);
player:SendGameMessage(player, worldMaster, 50011, 0x20);
director = player:GetZone():CreateDirector("Quest/QuestDirectorMan0l001");
player:AddDirector(director);
player:SetLoginDirector(director);
player:KickEvent(director, "noticeEvent", true);
GetWorldManager():DoZoneChange(player, 9);
end;

View file

@ -0,0 +1,49 @@
require("global");
properties = {
permissions = 0,
parameters = "ssss",
description =
[[
<actorName> <workName> <uiFunc> <value>
]],
}
function onTrigger(player, argc, target, workName, uiFunc, value)
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
local sender = "[workvalue] ";
if (argc != 4) then
player:SendMessage(messageID, sender, "Invalid args");
return;
end
if (target == "@t") then
targetActor = GetWorldManager():GetActorInWorld(player.currentTarget) or nil;
else
targetActor = GetWorldManager():GetActorInWorld(target) or nil;
end
if not targetActor then
player:SendMessage(messageID, sender, "Error finding target...");
return
end
if (tonumber(value) ~= nil) then
result = targetActor:SetWorkValue(player, workName, uiFunc, tonumber(value));
elseif (value == "true") then
result = targetActor:SetWorkValue(player, workName, uiFunc, true);
elseif (value == "false") then
result = targetActor:SetWorkValue(player, workName, uiFunc, false);
else
result = targetActor:SetWorkValue(player, workName, uiFunc, value);
end
if (result) then
player:SendMessage(messageID, sender, workName .. " changed to " .. value);
else
player:SendMessage(messageID, sender, "Could not changed workvalue. Is the name and datatype correct?");
end
end