Zmiana systemu skrzyń v 1.3 - Meritus - 21-03-2011
W nowej wersji skryptu obsługi skrzyń, przedmiot będący nagrodą może posiadać dowolne atrybuty opcjonalne np. przy dodaniu do pola text nazwy: "Dragon Lord" dla ID przedmiotu będącego kluczem zostanie stworzony przedmiot specjalny.
tabela konfiguracyjna:
PHP Code: local actions = { --Deklaracja pierwszej akcji ( w tym przypadku skrzyni ) to wersja demonstracyjna pełnych możliwości skryptu - objaśnienia wstepne: --Gdy nie potrzebne jest ktores z pola nalezy ustawic wartośc false badz usunanc calkowcie wpis. --Podczas gdy są źle lub nie wypełnione pojawią się błędy! --Zakres ACTION ID to od 4000 do 5000 innych wartosci NIE nalezy wspistwać w pola _itemaid { _itemaid = X, --Każda np. skrzynia musi mieć unikalne actionid standardowo od 4000 do 5000 ActionID (nie mylic z SV) ( ustawiamuy w mapedytorze ) _itemitemid = X, --Warunek dla ID _itemiuid = X, --Warunek dla UID doSetSV = X, --SV, do którego zostaje wpisany klucz = 1 gdy quest zostanie wykonany ( umożliwia dodanie kilku skrzyniom tego samego doSetSV przez co gracz wybiera nagrodę z pośród X skrzyń) ( ZOBACZ global.lua katalog lib ) SV_CHEST ( nalezy uzupelniac na biezaco) req_lvl = X, --Wymaganie lvlowe PACC = false, --true gdy potrzeba PACC, w przeciwym wypadku false ( zawsze false funkcja isPacc nie dotyczy na razie modułu actions ) expirence = X, --ilosc otrzymanego doswiadczenia po wykonaniu zadania zawsze przy expie 1x mnozniki serwera mnoza dany exp ( opcjonalne ) rewards = { --nagrody {name = '', namepl= '', id = X, count = 1}, --nazwa polska, nazwa angielska, identyfikator, ilosc, poziom wyborowosci (opcjonalne). {name = '', namepl= '', id = X, count = 1, --subtype = 1, add = 1, level = 1, luck = 1, excellent = 1, skill = 1, text = "", desc = ""}, nazwa polska, nazwa angielska, identyfikator, ilosc, poziom wyborowosci itp inne mozliwości(opcjonalne). }, doSetAdditSV = { {additSV = X, additkey = X}, --Ustawia dodatkowe SV (additSV) o wartosci (additkey) przy wykonaniu zadania ( opcjonalne ) {additSV = X, additkey = X}, --Ustawia dodatkowe SV (additSV) o wartosci (additkey) przy wykonaniu zadania ( opcjonalne ) }, SummonMonsters = { --Summonuje potwory na daną pozycję - przypadek wykorzystania pola additfunctions ( opcjonalne ) {monstername = "Dragon", x = X, y = X, z = X, delay = X}, --Tworzy Dragona na pozycji 100 100 7 ( opcjonalne ) delay to czas po jakim dany potwór ma się pokazać (w ms) ( opcjonalny parametr ) {monstername = "Dragon", x = X, y = X, z = X, }, --Tworzy Dragona na pozycji 100 100 7 ( opcjonalne ) delay to czas po jakim dany potwór ma się pokazać ( opcjonalny parametr ) }, SpecialMagicEffect = { --Na danym obszarze pojawia się efekt magiczny - przypadek wykorzystania pola additfunctions ( opcjonalne ) {nr = ME_TELEPORT, x = X, y = X, z = X, delay = X}, --Tworzy magiczny efekt ME_TELEPORT (nr 10) na pozycji 100 100 7 ( opcjonalne ) delay to czas po jakim dany efekt ma się pokazać (w ms) ( opcjonalny parametr ) {nr = ME_TELEPORT, x = X, y = X, z = X }, --Tworzy magiczny efekt ME_TELEPORT (nr 10) na pozycji 100 100 7 ( opcjonalne ) delay to czas po jakim dany efekt ma się pokazać (w ms) ( opcjonalny parametr ) }, additfunctions = "sayidiot", --Wykonuje dowolna funkcje zawartą w 'function doAdditionalUseFunction(cid, item, frompos, item2, topos, index)' gdzie index to wartosc argumentu additfunctions ( Dla zawansowanych ) (opcjonalne ) checkAnotherCondition = false, --Sprawdza dodatkowy warunek zawarty w 'function checkAnotherCondition(cid, item, frompos, item2, topos, index)' gdzie index to wartosc argumentu additfunctions, nalezy zapewnic kominikat bledu( Dla zawansowanych ) (opcjonalne ) },
Zmiana funkcji onUse:
PHP Code: function onUse(cid, item, frompos, item2, topos) for nr_chest, var_actions in ipairs(actions) do if (var_actions._itemaid ~= nil and var_actions._itemaid ~= false and item.actionid == var_actions._itemaid) or (var_actions._itemitemid ~= nil and var_actions._itemitemid ~= false and item.itemid == var_actions._itemitemid) or (var_actions._itemiuid ~= nil and var_actions._itemiuid ~= false and item.uid == var_actions._itemiuid) then
if var_actions.checkAnotherCondition ~= nil and var_actions.checkAnotherCondition ~= false then if checkAnotherCondition(cid, item, frompos, item2, topos, var_actions.checkAnotherCondition) == false then doSendMagicEffect(topos,ME_POFF) return 1 end end
if var_actions.PACC ~= nil and var_actions.PACC ~= false then if var_actions.PACC == true and isPACC(cid) == 0 then doPlayerSendCancel(cid,'' ..getMessage(cid,5356).. '') doSendMagicEffect(topos,ME_POFF) return 1 end end if var_actions.req_lvl ~= nil and var_actions.req_lvl ~= false then if getPlayerLevel(cid) < var_actions.req_lvl then doPlayerSendCancel(cid,'' ..getMessage(cid,5357).. ''.. var_actions.req_lvl ..'.') doSendMagicEffect(topos,ME_POFF) return 1 end end if var_actions.doSetSV ~= nil and var_actions.doSetSV ~= false then if getPlayerStorageValue(cid, var_actions.doSetSV) ~= -1 then doPlayerSendCancel(cid,'' ..getMessage(cid,5358).. '') doSendMagicEffect(topos,ME_POFF) return 1 elseif getPlayerStorageValue(cid, var_actions.doSetSV) == -1 then test = 1 else --log(cid,'Critical Error(1) in actions.lua') return 1 end end
if var_actions.rewards ~= nil and var_actions.rewards ~= false then for u, var_rewards in pairs(var_actions.rewards) do doPlayerAddItemTable(cid, {id=var_rewards.id, count=var_rewards.count, subtype = var_rewards.subtype, add =var_rewards.add, level=var_rewards.level, luck=var_rewards.luck, excellent=var_rewards.excellent, skill=var_rewards.skill, text=var_rewards.text, desc=var_rewards.desc }) --log(cid,'Dodaje nagrode o id = '.. var_rewards.id ..' w ilosci = '.. var_rewards.count ..' + wyborosc poziomu = '.. var_rewards.excelent ..'') end end
if var_actions.expirence ~= nil and var_actions.expirence ~= false then addExperience(cid, var_actions.expirence) else --log(cid,'Brak dodawania doswiadczenia.') end if var_actions.SummonMonsters ~= nil and var_actions.SummonMonsters ~= false then for i, var_monster in pairs(var_actions.SummonMonsters) do pos = { x = var_monster.x, y = var_monster.y, z = var_monster.z } if var_monster.delay ~= nil then addEvent(doSummonCreature,var_monster.delay,var_monster.monstername, pos) --log(cid,'Dodaje delay na summonowanie potworkow = '.. var_monster.delay ..' potworek name = '.. var_monster.monstername ..'') else doSummonCreature(var_monster.monstername, pos) --log(cid,'Brak argumentyu Delay wstawiam od razu na potworka o name '.. var_monster.monstername ..'') end end end if var_actions.doSetAdditSV ~= nil and var_actions.doSetAdditSV ~= false then for x, var_additSV in pairs(var_actions.doSetAdditSV) do --log(cid,'Dodaje Dodatkowe SV graczu o ID = '.. var_additSV.additSV ..' i kluczu '.. var_additSV.additkey ..'.') setPlayerStorageValue(cid,var_additSV.additSV,var_additSV.additkey) end end if var_actions.SpecialMagicEffect ~= nil and var_actions.SpecialMagicEffect ~= false then for j, var_SpecialMagicEffect in pairs(var_actions.SpecialMagicEffect) do pos = { x = var_SpecialMagicEffect.x, y = var_SpecialMagicEffect.y, z = var_SpecialMagicEffect.z } if var_SpecialMagicEffect.delay ~= nil then addEvent(doSendMagicEffect,var_SpecialMagicEffect.delay,pos,var_SpecialMagicEffect.nr) --log(cid,'Dodaje opzniony o '.. var_SpecialMagicEffect.delay ..' magiczny efekt numer = '.. var_SpecialMagicEffect.nr ..'') else --log(cid,'Dodaje bez opznienia magiczny efekt numer = '.. var_SpecialMagicEffect.nr ..'') doSendMagicEffect(pos,var_SpecialMagicEffect.nr) end end end
if var_actions.additfunctions ~= nil and var_actions.additfunctions ~= false then doAdditionalUseFunction(cid, item, frompos, item2, topos, var_actions.additfunctions) end if test == 1 then setPlayerStorageValue(cid, var_actions.doSetSV, 1) end --log(cid,'Pomyslny koniec hehs.') doSendMagicEffect(frompos,ME_MAGIC_BLUE) return 1 Koniec :p end end end
|