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:
Zmiana funkcji onUse:
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

