Add equip ability functions

Fix EquipAbility SQL query
This commit is contained in:
yogurt 2017-07-07 21:53:44 -05:00
parent 247b5ca709
commit efdec5e472
239 changed files with 3474 additions and 1086 deletions

View file

@ -0,0 +1,43 @@
--[[
GuildleveWarpPoint Script
Functions:
eventGuildleveReward(glId, completionTimeSec, completeReward, difficultyBonus, faction, gil???, factionBonus, RewardId1, RewardAmount1, RewardId2, RewardAmount2, difficulty) - Open Reward Dialog
eventTalkGuildleveWarp(returnAetheryteID1, returnAetheryte2) - Opens choice menu
--]]
require ("global")
require ("aetheryte")
require ("utils")
function init(npc)
return false, false, 0, 0;
end
function onEventStarted(player, npc, triggerName)
local currentGLDirector = player:GetGuildleveDirector();
local glData = currentGLDirector.guildleveData;
callClientFunction(player, "eventGuildleveReward", currentGLDirector.guildleveId, currentGLDirector.completionTime, 24, 24, 0, 0, 0, 0, 0, 0, 0, currentGLDirector.selectedDifficulty);
local choice = callClientFunction(player, "eventTalkGuildleveWarp", glData.aetheryte, 0);
if (choice == 3) then
local destination = aetheryteTeleportPositions[glData.aetheryte];
if (destination ~= nil) then
randoPos = getRandomPointInBand(destination[2], destination[4], 3, 5);
rotation = getAngleFacing(randoPos.x, randoPos.y, destination[2], destination[4]);
GetWorldManager():DoZoneChange(player, destination[1], nil, 0, 2, randoPos.x, destination[3], randoPos.y, rotation);
currentGLDirector:EndDirector();
end
elseif (choice == 4) then
currentGLDirector:EndDirector();
end
player:EndEvent();
end
--50023: GL COMPLETE!
--50132: You earn faction credits from X

View file

@ -22,16 +22,40 @@ eventGLJoin () - Ask to join party leader's leve
require ("global")
require ("aetheryte")
require ("utils")
require ("guildleve")
function init(npc)
return false, false, 0, 0;
end
function onEventStarted(player, aetheryte, triggerName)
function onEventStarted(player, aetheryte, triggerName)
if (player:GetGuildleveDirector() ~= nil) then
doGuildleveMenu(player, aetheryte);
else
doNormalMenu(player, aetheryte);
end
player:EndEvent();
end
aetheryteId = aetheryte:GetActorClassId();
parentNode = aetheryteChildLinks[aetheryteId];
menuChoice = callClientFunction(player, "eventAetheryteChildSelect", true, parentNode, 100, 1);
function doGuildleveMenu(player, aetheryte)
local currentGLDirector = player:GetGuildleveDirector();
local choice = callClientFunction(player, "eventGLPlay", currentGLDirector.guildleveId, true, 1, 500, 400, guardian, 8, currentGLDirector.selectedDifficulty, 2);
--Abandon
if (choice == 6) then
currentGLDirector:AbandonGuildleve();
end
end
function doNormalMenu(player, aetheryte)
local aetheryteId = aetheryte:GetActorClassId();
local parentNode = aetheryteChildLinks[aetheryteId];
local menuChoice = callClientFunction(player, "eventAetheryteChildSelect", true, parentNode, 100, 1);
--Teleport
if (menuChoice == 2) then
@ -57,22 +81,36 @@ function onEventStarted(player, aetheryte, triggerName)
player:SendGameMessage(player, aetheryte, 29, 0x20, 2, 10);
player:SendGameMessage(player, aetheryte, 30, 0x20, 3, 5);
end
player:EndEvent();
end
function doLevequestInit(player, aetheryte)
local worldMaster = GetWorldMaster();
::SELECT_LOOP::
unknown, glId = callClientFunction(player, "eventGLSelect", 0x0);
if (glId ~= 0) then
::SELECT_DETAIL::
unknown, begin = callClientFunction(player, "eventGLSelectDetail", glId, 0xa, 0xf4241, 1000, 0, 0, 0, true, false);
guildleveData = GetGuildleveGamedata(glId);
if (guildleveData == nil) then
player:SendMessage(0x20, "", "An error has occured... aborting.");
return;
end
unknown, begin = callClientFunction(player, "eventGLSelectDetail", glId, 0xa, 0xf4241, 1000, 0, 0, 0, true, false);
if (begin) then
::SELECT_DIFFICULTY::
player:SendGameMessage(worldMaster, 50014, 0x20); --"Please select a difficulty level. This may be lowered later."
difficulty = callClientFunction(player, "eventGLDifficulty", glId);
if (difficulty == nil) then goto SELECT_DETAIL; end
confirmResult = callClientFunction(player, "eventGLStart", glId, difficulty, 1, 10, 20, 0, 0, 0, 0);
if (confirmResult == nil) then goto SELECT_DIFFICULTY; else
player:SendGameMessage(worldMaster, 50036, 0x20, glId, player);
player:PlayAnimation(getGLStartAnimationFromSheet(guildleveData.borderId, guildleveData.plateId, true));
director = player:GetZone():CreateGuildleveDirector(glId, difficulty, player);
player:AddDirector(director);
director:StartDirector(true, glId)
end
else
goto SELECT_LOOP;

View file

@ -11,9 +11,8 @@ eventGLSelect(?) - Open GL selector
eventGLSelectDetail(glid, ?, reward, rewardQuantity, subreward, subrewardQuantity, faction, ?, completed) - Show GL details
eventGLDifficulty() - Open difficulty selector
eventGLStart(glId, difficulty, evaluatingFaction, areaFactionStanding, factionReward, warningBoundByDuty, warningTooFar, warningYouCannotRecieve, warningChangingClass) - Confirmation dialog
eventGLBoost(currentFavor, minNeeded) - Ask player for Guardian Aspect
eventGLPlay(??) - Open Menu (GL active version)
eventGLPlay(glId, showLeveLink, leveLinkFaction, leveLinkFactionStanding, leveLinkReward, guardianFavorAmount, guardianFavorNeeded, currentDifficulty, jobNameForChange) - Open Menu (GL active version)
eventGLReward (glId, clearTime, missionBonus, difficultyBonus, factionNumber, factionBonus, factionCredit, reward, rewardQuantity, subreward, subrewardQuantity, difficulty) - Open reward window
eventGLJoin () - Ask to join party leader's leve
@ -26,13 +25,37 @@ eventGLJoin () - Ask to join party leader's leve
require ("global")
require ("aetheryte")
require ("utils")
require ("guildleve")
function init(npc)
return false, false, 0, 0;
end
function onEventStarted(player, aetheryte, triggerName)
if (player:GetGuildleveDirector() ~= nil) then
doGuildleveMenu(player, aetheryte);
else
doNormalMenu(player, aetheryte);
end
player:EndEvent();
end
function doGuildleveMenu(player, aetheryte)
local currentGLDirector = player:GetGuildleveDirector();
local choice = callClientFunction(player, "eventGLPlay", currentGLDirector.guildleveId, true, 1, 500, 400, guardian, 8, currentGLDirector.selectedDifficulty, 2);
--Abandon
if (choice == 6) then
currentGLDirector:AbandonGuildleve();
end
end
function doNormalMenu(player, aetheryte)
local aetheryteId = aetheryte:GetActorClassId();
local childNodes = aetheryteParentLinks[aetheryteId];
@ -93,23 +116,36 @@ function onEventStarted(player, aetheryte, triggerName)
end
end
end
player:EndEvent();
end
function doLevequestInit(player, aetheryte)
local worldMaster = GetWorldMaster();
::SELECT_LOOP::
unknown, glId = callClientFunction(player, "eventGLSelect", 0x0);
if (glId ~= 0) then
::SELECT_DETAIL::
guildleveData = GetGuildleveGamedata(glId);
if (guildleveData == nil) then
player:SendMessage(0x20, "", "An error has occured... aborting.");
return;
end
unknown, begin = callClientFunction(player, "eventGLSelectDetail", glId, 0xa, 0xf4241, 1000, 0, 0, 0, true, false);
if (begin) then
::SELECT_DIFFICULTY::
player:SendGameMessage(worldMaster, 50014, 0x20); --"Please select a difficulty level. This may be lowered later."
difficulty = callClientFunction(player, "eventGLDifficulty", glId);
if (difficulty == nil) then goto SELECT_DETAIL; end
confirmResult = callClientFunction(player, "eventGLStart", glId, difficulty, 1, 10, 20, 0, 0, 0, 0);
confirmResult = callClientFunction(player, "eventGLStart", glId, difficulty, 1, guildleveData.favorCount, 20, 0, 0, 0, 0);
if (confirmResult == nil) then goto SELECT_DIFFICULTY; else
player:SendGameMessage(worldMaster, 50036, 0x20, glId, player);
player:PlayAnimation(getGLStartAnimationFromSheet(guildleveData.borderId, guildleveData.plateId, true));
director = player:GetZone():CreateGuildleveDirector(glId, difficulty, player);
player:AddDirector(director);
director:StartDirector(true, glId)
end
else
goto SELECT_LOOP;

View file

@ -14,12 +14,10 @@ function onEventStarted(player, actor, triggerName, isGoobbue)
if (isGoobbue ~= true) then
player:ChangeMusic(83);
player:SendChocoboAppearance();
player:SendGameMessage(player, worldMaster, 26001, 0x20);
player:SetMountState(1);
else
player:ChangeMusic(98);
player:SendGoobbueAppearance();
player:SendGameMessage(player, worldMaster, 26019, 0x20);
player:SetMountState(2);
end

View file

@ -0,0 +1,14 @@
require ("global")
--player: Player that called this command
--equipAbilityWidget: Widget that calls this command
--triggername: Event Starter ?
--slot: Which slot the ability will go into
--ability: Ability being equipped
function onEventStarted(player, equipAbilityWidget, triggername, slot, ability, unkown, arg1, arg2, arg3, arg4, arg5, arg6)
if ability then
player:EquipAbility(slot, ability, 1);
end
player:endEvent();
end

View file

@ -0,0 +1,15 @@
require("global");
properties = {
permissions = 0,
parameters = "s",
description = "Adds a guildleve by <id>.",
}
function onTrigger(player, argc, glId)
if player then
player:AddGuildleve(tonumber(glId));
else
print(sender.."unable to add guildleve, ensure player name is valid.");
end;
end;

View file

@ -0,0 +1,15 @@
require("global");
properties = {
permissions = 0,
parameters = "s",
description = "Adds a guildleve by <id>.",
}
function onTrigger(player, argc, glId)
if player then
player:RemoveGuildleve(tonumber(glId));
else
print(sender.."unable to add guildleve, ensure player name is valid.");
end;
end;

View file

@ -0,0 +1,54 @@
require ("global")
require ("guildleve")
--DirectorId, GuildleveId, Aetheryte Location (6 or ~6), exMarkerX, exMarkerY, exMarkerZ
--22: Limsa Battle Leve
--14: Gridania Battle Leve
--26: Uldah Battle Leve
--16: Coerthas Faction Leve
--72: Harvest Leve
function init(thisDirector)
return "/Director/Guildleve/PrivateGLBattleSweepNormal", 0x4e25, thisDirector.guildleveId, 6, 0, 0, 0;
end
function main(thisDirector)
guildleveData = GetGuildleveGamedata(thisDirector.guildleveId);
members = thisDirector:GetPlayerMembers();
if (members ~= nil and #members ~= 0) then
player = members[0];
player:SendGameMessage(GetWorldMaster(), 50036, 0x20, thisDirector.guildleveId, player, 0); --"You have started the leve..."
player:PlayAnimation(getGLStartAnimationFromSheet(guildleveData.borderId, guildleveData.plateId, false));
end
wait(3);
thisDirector:StartGuildleve();
thisDirector:SyncAllInfo();
thisDirector:UpdateMarkers(0, 59.0, 44.0, -163.0);
if (members ~= nil and #members ~= 0) then
player = members[0];
player:ChangeMusic(22);
attentionMessage(player, 50022, thisDirector.guildleveId, thisDirector.selectedDifficulty, 0);
player:SendGameMessage(GetWorldMaster(), 50026, 0x20, guildleveData.timeLimit);
end
wait(5);
thisDirector:UpdateAimNumNow(0, 1);
wait(3);
thisDirector:UpdateAimNumNow(0, 2);
wait(3);
thisDirector:UpdateAimNumNow(0, 3);
end
function attentionMessage(player, textId, ...)
player:SendGameMessage(GetWorldMaster(), textId, 0x20, ...);
player:SendDataPacket("attention", GetWorldMaster(), "", textId, ...);
end

View file

@ -0,0 +1,32 @@
require ("global")
require ("guildleve")
--DirectorId, GuildleveId, Aetheryte Location (6 or ~6), exMarkerX, exMarkerY, exMarkerZ
--22: Limsa Battle Leve
--14: Gridania Battle Leve
--26: Uldah Battle Leve
--16: Coerthas Faction Leve
--72: Harvest Leve
function init(thisDirector)
return "/Director/Guildleve/PrivateGLBattleChaseNormal", 0x4e25, thisDirector.guildleveId, 6, 0, 0, 0;
end
function main(thisDirector)
wait(3);
thisDirector:StartGuildleve();
thisDirector:SyncAllInfo();
thisDirector:UpdateMarkers(0, 59.0, 44.0, -163.0);
wait(5);
thisDirector:UpdateAimNumNow(0, 1);
wait(3);
thisDirector:UpdateAimNumNow(0, 2);
wait(3);
thisDirector:UpdateAimNumNow(0, 3);
end

View file

@ -0,0 +1,32 @@
require ("global")
require ("guildleve")
--DirectorId, GuildleveId, Aetheryte Location (6 or ~6), exMarkerX, exMarkerY, exMarkerZ
--22: Limsa Battle Leve
--14: Gridania Battle Leve
--26: Uldah Battle Leve
--16: Coerthas Faction Leve
--72: Harvest Leve
function init(thisDirector)
return "/Director/Guildleve/PrivateGLBattleDetectNormal", 0x4e25, thisDirector.guildleveId, 6, 0, 0, 0;
end
function main(thisDirector)
wait(3);
thisDirector:StartGuildleve();
thisDirector:SyncAllInfo();
thisDirector:UpdateMarkers(0, 59.0, 44.0, -163.0);
wait(5);
thisDirector:UpdateAimNumNow(0, 1);
wait(3);
thisDirector:UpdateAimNumNow(0, 2);
wait(3);
thisDirector:UpdateAimNumNow(0, 3);
end

View file

@ -0,0 +1,26 @@
require ("global")
require ("guildleve")
--DirectorId, GuildleveId
function init()
return "/Director/Guildleve/PrivateGLBattleGatherNormal", 0x4e25, thisDirector.guildleveId, 6, 0, 0, 0;
end
function main(thisDirector)
wait(3);
thisDirector:StartGuildleve();
thisDirector:SyncAllInfo();
thisDirector:UpdateMarkers(0, 59.0, 44.0, -163.0);
wait(5);
thisDirector:UpdateAimNumNow(0, 1);
wait(3);
thisDirector:UpdateAimNumNow(0, 2);
wait(3);
thisDirector:UpdateAimNumNow(0, 3);
end

View file

@ -0,0 +1,32 @@
require ("global")
require ("guildleve")
--DirectorId, GuildleveId, Aetheryte Location (6 or ~6), exMarkerX, exMarkerY, exMarkerZ
--22: Limsa Battle Leve
--14: Gridania Battle Leve
--26: Uldah Battle Leve
--16: Coerthas Faction Leve
--72: Harvest Leve
function init(thisDirector)
return "/Director/Guildleve/PrivateGLBattleHuntNormal", 0x4e25, thisDirector.guildleveId, 6, 0, 0, 0;
end
function main(thisDirector)
wait(3);
thisDirector:StartGuildleve();
thisDirector:SyncAllInfo();
thisDirector:UpdateMarkers(0, 59.0, 44.0, -163.0);
wait(5);
thisDirector:UpdateAimNumNow(0, 1);
wait(3);
thisDirector:UpdateAimNumNow(0, 2);
wait(3);
thisDirector:UpdateAimNumNow(0, 3);
end

View file

@ -0,0 +1,42 @@
require ("global")
require ("guildleve")
--DirectorId, GuildleveId, Aetheryte Location (6 or ~6), exMarkerX, exMarkerY, exMarkerZ
--22: Limsa Battle Leve
--14: Gridania Battle Leve
--26: Uldah Battle Leve
--16: Coerthas Faction Leve
--72: Harvest Leve
function init(thisDirector)
return "/Director/Guildleve/PrivateGLBattleOrbNormal", 0x4e25, thisDirector.guildleveId, 6, 0, 0, 0;
end
function main(thisDirector)
wait(3);
thisDirector:StartGuildleve();
thisDirector:SyncAllInfo();
thisDirector:UpdateMarkers(0, 59.0, 44.0, -163.0);
wait(5);
thisDirector:UpdateAimNumNow(0, 1);
wait(3);
thisDirector:UpdateAimNumNow(0, 2);
wait(3);
thisDirector:UpdateAimNumNow(0, 3);
wait(3);
thisDirector:UpdateAimNumNow(0, 4);
wait(2);
thisDirector:EndGuildleve(true);
wait(30);
player:SendGameMessage(GetWorldMaster(), 50033, 0x20);
thisDirector:EndDirector();
end

View file

@ -0,0 +1,32 @@
require ("global")
require ("guildleve")
--DirectorId, GuildleveId, Aetheryte Location (6 or ~6), exMarkerX, exMarkerY, exMarkerZ
--22: Limsa Battle Leve
--14: Gridania Battle Leve
--26: Uldah Battle Leve
--16: Coerthas Faction Leve
--72: Harvest Leve
function init(thisDirector)
return "/Director/Guildleve/PrivateGLBattleRoundNormal", 0x4e25, thisDirector.guildleveId, 6, 0, 0, 0;
end
function main(thisDirector)
wait(3);
thisDirector:StartGuildleve();
thisDirector:SyncAllInfo();
thisDirector:UpdateMarkers(0, 59.0, 44.0, -163.0);
wait(5);
thisDirector:UpdateAimNumNow(0, 1);
wait(3);
thisDirector:UpdateAimNumNow(0, 2);
wait(3);
thisDirector:UpdateAimNumNow(0, 3);
end

View file

@ -0,0 +1,32 @@
require ("global")
require ("guildleve")
--DirectorId, GuildleveId, Aetheryte Location (6 or ~6), exMarkerX, exMarkerY, exMarkerZ
--22: Limsa Battle Leve
--14: Gridania Battle Leve
--26: Uldah Battle Leve
--16: Coerthas Faction Leve
--72: Harvest Leve
function init(thisDirector)
return "/Director/Guildleve/PrivateGLBattleSurviveNormal", 0x4e25, thisDirector.guildleveId, 6, 0, 0, 0;
end
function main(thisDirector)
wait(3);
thisDirector:StartGuildleve();
thisDirector:SyncAllInfo();
thisDirector:UpdateMarkers(0, 59.0, 44.0, -163.0);
wait(5);
thisDirector:UpdateAimNumNow(0, 1);
wait(3);
thisDirector:UpdateAimNumNow(0, 2);
wait(3);
thisDirector:UpdateAimNumNow(0, 3);
end

View file

@ -0,0 +1,35 @@
require ("global")
require ("guildleve")
--DirectorId, GuildleveId, Aetheryte Location (6 or ~6), exMarkerX, exMarkerY, exMarkerZ
--22: Limsa Battle Leve
--14: Gridania Battle Leve
--26: Uldah Battle Leve
--16: Coerthas Faction Leve
--72: Harvest Leve
function init(thisDirector)
return "/Director/Guildleve/PrivateGLBattleSweepNormal", 0x4e25, thisDirector.guildleveId, 6, 0, 0, 0;
end
function main(thisDirector)
wait(3);
thisDirector:StartGuildleve();
thisDirector:SyncAllInfo();
thisDirector:UpdateMarkers(0, 59.0, 44.0, -163.0);
wait(5);
thisDirector:UpdateAimNumNow(0, 1);
wait(3);
thisDirector:UpdateAimNumNow(0, 2);
wait(3);
thisDirector:UpdateAimNumNow(0, 3);
wait(3);
thisDirector:EndGuildleve(true);
end

View file

@ -0,0 +1,48 @@
require ("global")
require ("guildleve")
--DirectorId, GuildleveId, Aetheryte Location (6 or ~6), exMarkerX, exMarkerY, exMarkerZ
--50101: This is a tutorial covering regional levequests for Disciples of War and Disciples of Magic.
--50102: The general location of your target can be determined by using the minimap.
--50105: Your target is nearby. Proceed with the levequest objectives.
--50107: This levequest asks that you exterminate a total of [@VALUE($E8(1))] targets. Try finding the next one.
--50110: Defeating targets will sometimes earn you experience points.
--50112: An aetherial node will appear when levequest objectives have been met. Try approaching it.
--50114: Use the node to collect your reward and teleport back to the starting location of the levequest.
--22: Limsa Battle Leve
--14: Gridania Battle Leve
--26: Uldah Battle Leve
--16: Coerthas Faction Leve
--72: Harvest Leve
function init(thisDirector)
return "/Director/Guildleve/PrivateGLBattleTutorial", 0x4e25, thisDirector.guildleveId, 6, 0, 0, 0;
end
function main(thisDirector)
wait(3);
thisDirector:StartGuildleve();
thisDirector:SyncAllInfo();
thisDirector:UpdateMarkers(0, 59.0, 44.0, -163.0);
wait(5);
thisDirector:UpdateAimNumNow(0, 1);
wait(3);
thisDirector:UpdateAimNumNow(0, 2);
wait(3);
thisDirector:UpdateAimNumNow(0, 3);
wait(3);
thisDirector:EndGuildleve(true);
end
function attentionMessage(player, textId, ...)
player:SendGameMessage(GetWorldMaster(), textId, 0x20, args);
player:SendDataPacket("attention", GetWorldMaster(), "", textId, args);
end

View file

@ -0,0 +1,32 @@
--[[
Guildleve constants and functions
--]]
--Helper functions
function glBorderIconIDToAnimID(iconId)
return iconId - 20000;
end
function glPlateIconIDToAnimID(iconId)
return iconId - 20020;
end
function getGLStartAnimationFromSheet(border, plate, isBoost)
return getGLStartAnimation(glBorderIconIDToAnimID(border), glPlateIconIDToAnimID(plate), isBoost);
end
function getGLStartAnimation(border, plate, isBoost)
borderBits = border;
plateBits = bit32.lshift(plate, 7);
if (isBoost) then
boostBits = 0x8000; --1 shifted 15 left
else
boostBits = 0x0;
end
return bit32.bor(0x0B000000, boostBits, plateBits, borderBits);
end

View file

@ -1,7 +1,6 @@
local initClassItems, initRaceItems;
function onBeginLogin(player)
function onBeginLogin(player)
--New character, set the initial quest
if (player:GetPlayTime(false) == 0) then
initialTown = player:GetInitialTown();
@ -54,7 +53,6 @@ function onBeginLogin(player)
player:GetQuest(110009):ClearQuestData();
player:GetQuest(110009):ClearQuestFlags();
end
end
function onLogin(player)