Odpowiedz 
Ładowanie Przedmiotów Czasowych Demonicznymi Essencjami
03-12-2010, 02:05 PM
Post: #1
Ładowanie Przedmiotów Czasowych Demonicznymi Essencjami
Liczę na konkretne sugestie co do configa.


Kod:
--/**
--* @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

Wersja kolorowa:
http://wklej.org/id/430567/
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
Odpowiedz 


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości