Code:
--/**
--* @name Ladowanie Czasowe Przedmiotow Demonicznymi Essencjami
--* @desc Skrypt uwzglednia odstep czasowy pomiedzy kolejnymi ladowaniami danego typu przedmiotu
--* @autor Sławomir Jach
--* @data 2010-11-29
--* @version 1.0
--*/
local charge_config = {
{
item = ID_MYSTIC_DRAKEN_BOOTS,
addtime = 3, -- [sec] each essence add `addtime` time
},
{
item = ID_MYSTIC_DRAKEN_BOOK,
addtime = 3,
},
{
item = ID_OLD_MAGIC_BOOK,
addtime = 6,
},
{
item = ID_LIZARD_GOLDEN_BOOTS,
addtime = 6,
},
{ -- 200 essencji laduje na full
item = ID_HELMET_OF_THE_ANCIENTS,
addtime = 90, -- [sec] each essence add `addtime` time
maxtime = 18000, -- [sec] maximum time charge_config / nil if inifinity (+1)
},
{ -- Full 200 essence
item = ID_SOFT_BOOTS,
addtime = 90, -- [sec] each essence add `addtime` time
maxtime = 18060, -- [sec] maximum time charge_config / nil if inifinity (+1)
},
{
item = ID_SACRED_ARMOR, -- 180 essencji laduje na full, co 5 min mozna doladowac 100 esskami, na full od zera ~9min
addtime = 1, -- [sec] each essence add `addtime` time
maxtime = 180, -- [sec] maximum time charge_config / nil if inifinity (+1)
sv_exh_load_index = "ID_SACRED_ARMOR",
sv_exh_load_delay = 3, -- [sec] odstep pomiedzy kolejnymi ladowaniami dla 1 essencji
},
{
item = ID_SACRED_SKIRT, -- 180 essencji laduje na full, co 5 min mozna doladowac 100 esskami, na full od zera ~9min
addtime = 1, -- [sec] each essence add `addtime` time
maxtime = 180, -- [sec] maximum time charge_config / nil if inifinity (+1)
sv_exh_load_index = "ID_SACRED_SKIRT",
sv_exh_load_delay = 3, -- [sec] odstep pomiedzy kolejnymi ladowaniami dla 1 essencji
},
{
item = ID_SACRED_SHIELD, -- 180 essencji laduje na full, co 5 min mozna doladowac 100 esskami, na full od zera ~9min
addtime = 1, -- [sec] each essence add `addtime` time
maxtime = 180, -- [sec] maximum time charge_config / nil if inifinity (+1)
sv_exh_load_index = "ID_SACRED_SHIELD",
sv_exh_load_delay = 3, -- [sec] odstep pomiedzy kolejnymi ladowaniami dla 1 essencji
},
{ -- 300 essek laduje na full, co 6.6minuty mozna doladowac 100 essencjami, od 0 na full ~20minut
item = ID_MAGIC_STEEL_BOOTS,
addtime = 1, -- [sec] each essence add `addtime` time
maxtime = 300, -- [sec] maximum time charge_config / nil if inifinity (+1)
sv_exh_load_index = "ID_MAGIC_STEEL_BOOTS",
sv_exh_load_delay = 4, -- [sec] odstep pomiedzy kolejnymi ladowaniami dla 1 essencji
},
{ -- 20 essencji laduje 10/11 sekund, co 40 sekund mozna naladowac amulet
item = ID_INFERNALISTS_AMULET, -- 20 essencji laduje 10/11 sekund, co 40 sekund mozna naladowac amulet
addtime = 0.1, -- [sec] each essence add `addtime` time
maxtime = 11, -- [sec] maximum time charge_config / nil if inifinity (+1)
sv_exh_load_index = "ID_INFERNALISTS_AMULET",
sv_exh_load_delay = 2, -- [sec] odstep pomiedzy kolejnymi ladowaniami dla 1 essencji
},
{ -- 20 essencji laduje 10/11 sekund, co 40 sekund mozna naladowac amulet
item = ID_EARTH_AMULET, -- 20 essencji laduje 10/11 sekund, co 40 sekund mozna naladowac amulet
addtime = 3, -- [sec] each essence add `addtime` time
maxtime = 11, -- [sec] maximum time charge_config / nil if inifinity (+1)
sv_exh_load_index = "ID_EARTH_AMULET",
sv_exh_load_delay = 2, -- [sec] odstep pomiedzy kolejnymi ladowaniami dla 1 essencji
},
{ -- 20 essencji laduje 10/11 sekund, co 40 sekund mozna naladowac amulet
item = ID_ICY_AMULET, -- 20 essencji laduje 10/11 sekund, co 40 sekund mozna naladowac amulet
addtime = 0.1, -- [sec] each essence add `addtime` time
maxtime = 11, -- [sec] maximum time charge_config / nil if inifinity (+1)
sv_exh_load_index = "ID_ICY_AMULET",
sv_exh_load_delay = 2, -- [sec] odstep pomiedzy kolejnymi ladowaniami dla 1 essencji
},
{ -- 20 essencji laduje 10/11 sekund, co 40 sekund mozna naladowac amulet
item = ID_ENERGY_AMULET,
addtime = 0.5, -- [sec] each essence add `addtime` time
maxtime = 11, -- [sec] maximum time charge_config / nil if inifinity (+1)
sv_exh_load_index = "ID_ENERGY_AMULET",
sv_exh_load_delay = 2, -- [sec] odstep pomiedzy kolejnymi ladowaniami dla 1 essencji
},
{ -- 400 essencji laduje na full amulet, ~13min naladowanie amuletu na full
item = ID_FIRE_WISDOM_AMULET,
addtime = 0.05,
maxtime = 21,
sv_exh_load_index = "ID_FIRE_WISDOM_AMULET",
sv_exh_load_delay = 2,
},
}
function onUse(cid, item, frompos, item2, topos)
-- Ładowanie Przedmiotow
if topos.x == 65535 then topos = getPlayerPosition(cid) end
for _, obj in pairs(charge_config) do
if item2.itemid == obj.item then
if (obj.addtime < 1) then
if(math.floor(item.type * obj.addtime) ~= math.ceil(item.type * obj.addtime)) then -- jest calkowita
doPlayerSendTextMessage(cid,19,'Przedmiot laduja essencje w ilosci bedacej wielekrotnoscia liczby '..(1/obj.addtime)..".")
return 0
end
end
local remtype = item.type
local new_type = item2.type + (obj.addtime*item.type)
if obj.maxtime ~= nil then
if new_type >= obj.maxtime then
new_type = obj.maxtime
remtype = obj.maxtime - item2.type
end
end
if obj.sv_exh_load_index ~= nil and obj.sv_exh_load_delay ~= nil then
if getPlayerStorageValue(cid, SV_EXH_LOAD[obj.sv_exh_load_index]) <= getTime() or getPlayerStorageValue(cid, SV_EXH_LOAD[obj.sv_exh_load_index]) == -1 then
setPlayerStorageValue(cid, SV_EXH_LOAD[obj.sv_exh_load_index], getTime() + (obj.sv_exh_load_delay * remtype) )
else
doPlayerSendTextMessage(cid,19,'Przedmiot moze byc doladowany za '..math.floor(getPlayerStorageValue(cid, SV_EXH_LOAD[obj.sv_exh_load_index]) - getTime()).." sec.")
doSendMagicEffect(topos, ME_POFF)
return 0
end
end
doSendAnimatedText(topos,"+"..(obj.addtime*remtype).."sec",PURPLE)
doSendMagicEffect(topos, ME_MAGIC_GREEN)
doChangeTypeItem(item2.uid, new_type)
doRemoveItem(item.uid, remtype)
return 1
end
end
doSendMagicEffect(topos, ME_POFF)
return 0
end