finish training statue placeing and payment for offline training

This commit is contained in:
ErikasKontenis 2020-11-08 17:08:42 +02:00
parent 33d9dd7dcd
commit 0666223787
6 changed files with 51 additions and 10 deletions

View File

@ -1 +1 @@
next: 17723 next: 17729

View File

@ -239,7 +239,7 @@
<action itemid="3031" script="misc/changegold.lua" /> <action itemid="3031" script="misc/changegold.lua" />
<action itemid="3035" script="misc/changegold.lua" /> <action itemid="3035" script="misc/changegold.lua" />
<action itemid="3043" script="misc/changegold.lua" /> <action itemid="3043" script="misc/changegold.lua" />
<action fromid="2032" toid="2032" script="misc/skill_trainer.lua" /> <action fromaid="17724" toaid="17728" script="misc/skill_trainer.lua" />
<!-- Chests --> <!-- Chests -->
<action itemid="2479" script="misc/chests.lua" /> <action itemid="2479" script="misc/chests.lua" />

View File

@ -1,13 +1,13 @@
local statues = { local statues = {
[2032] = SKILL_SWORD, [17725] = SKILL_SWORD,
[18489] = SKILL_AXE, [17724] = SKILL_AXE,
[18490] = SKILL_CLUB, [17726] = SKILL_CLUB,
[18491] = SKILL_DISTANCE, [17727] = SKILL_DISTANCE,
[18492] = SKILL_MAGLEVEL [17728] = SKILL_MAGLEVEL
} }
function onUse(player, item, fromPosition, target, toPosition, isHotkey) function onUse(player, item, fromPosition, target, toPosition, isHotkey)
local skill = statues[item:getId()] local skill = statues[item:getActionId()]
if not player:isPremium() then if not player:isPremium() then
player:sendCancelMessage(RETURNVALUE_YOUNEEDPREMIUMACCOUNT) player:sendCancelMessage(RETURNVALUE_YOUNEEDPREMIUMACCOUNT)
return true return true
@ -16,8 +16,15 @@ function onUse(player, item, fromPosition, target, toPosition, isHotkey)
if player:isPzLocked() then if player:isPzLocked() then
return false return false
end end
local entreePrice = 1000
if player:getBankBalance() < entreePrice then
player:sendCancelMessage("You do not have 1000 gold coins in your bank account balance to participate in offline training.")
return true
end
player:setOfflineTrainingSkill(skill) player:setOfflineTrainingSkill(skill)
player:setBankBalance(player:getBankBalance() - entreePrice)
player:remove() player:remove()
return true return true
end end

View File

@ -10,7 +10,8 @@ function onLogin(player)
player:setOfflineTrainingSkill(-1) player:setOfflineTrainingSkill(-1)
if offlineTime < 600 then if offlineTime < 600 then
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You must be logged out for more than 10 minutes to start offline training.") player:setBankBalance(player:getBankBalance() + 1000)
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You must be logged out for more than 10 minutes to start offline training. Your 1000 gold coins entree fee were returned to your bank account.")
return true return true
end end

View File

@ -1,5 +1,38 @@
local trainingStatues = {17724, 17725, 17726, 17727, 17728}
function Player:onLook(thing, position, distance) function Player:onLook(thing, position, distance)
local description = "You see " .. thing:getDescription(distance) local description = "You see " .. thing:getDescription(distance)
if thing:isItem() and thing:getId() == 2028 then
if isInArray(trainingStatues, thing:getActionId()) then
local trainingTime = math.min(43200, self:getOfflineTrainingTime() / 1000)
local text = "You have"
local hours = math.floor(trainingTime / 3600)
if hours > 1 then
text = string.format("%s %d hours", text, hours)
elseif hours == 1 then
text = string.format("%s 1 hour", text)
end
local minutes = math.floor((trainingTime % 3600) / 60)
if minutes ~= 0 then
if hours ~= 0 then
text = string.format("%s and", text)
end
if minutes > 1 then
text = string.format("%s %d minutes", text, minutes)
else
text = string.format("%s 1 minute", text)
end
end
text = string.format(" %s offline training time remaining.", text)
description = string.format(description .. "%s", text)
end
end
if self:getGroup():getAccess() then if self:getGroup():getAccess() then
if thing:isItem() then if thing:isItem() then
description = string.format("%s\nItem ID: %d", description, thing:getId()) description = string.format("%s\nItem ID: %d", description, thing:getId())

Binary file not shown.