08-05-2013, 11:31 PM
Poniżej znajduje się pełna instrukcja instalacji systemu nagradzania graczy przy awansach poziomu doświadczenia.
Skrypt dzieli się na trzy zasadnicze części:
- nagradzanie przedmiotami za zdobycie odpowiedniego poziomu doświadczenia
- leczenie postaci (hp/mana) przy awansie
- wyświetlenie animacji tekstowej z napisem "gratz" przy awansie
Dwa ostatnie moduły można włączać/wyłączać w zależności od upodobań. Moduł nagradzania jest podstawą w tym skrypcie.
I. Instalacja
1. W folderze 'triggers/scripts/' należy utworzyć plik 'onLevel.lua' i wkleić poniższy kod:
2. W pliku 'triggers/triggers.xml' należy dodać poniższy kod:
NALEŻY PAMIĘTAĆ O ZMIANIE ID TRIGGER'A
3. W pliku 'lua/global.lua' należy wyszukać poniższy kod
i dodać po tym: (pamiętając o zmianie SV na wolne
Jeżeli mamy już SV_TRIGGERS w pliku global.lua, należy jedynie skopiować identyfikatory.
II. Konfiguracja
Nalezy edytowac wylacznie pojedyncze linie konfiguracji
Przykładowa linika z nagrodą:
WAŻNE - KAŻDA LINIA MUSI BYĆ ZAKOŃCZONA PRZECINKIEM!
{id = 1, prizeLVL = 50, vocation = 0, onlyPremium = 0, itemReward = {id = 3233, subtype = 0}},
id - unikalny klucz nagrody, kazda nagroda MUSI miec swoj unikalny identyfikator
level - nalezy wstawic poziom na ktorym gracz otrzyma nagrode
vocation - numer profesji (5 - kazdy gracz, 4 - knight, 3 - paladin, 2 - druid, 1 - sorcerer, 0 - brak profesji)
onlyPremium - decyduje czy nagroda jest dla wszystkich graczy, czy tylko z kontem premium (0 - wszyscy, 1 - tylko premium)
itemReward - definicja nagrody na danym poziomie - dla mniej doswiadczonych uzytkownikow zalecana jest jedynie zmiana ID przedmiotu
- bardziej zaawansowani gracze moga umieszczac tutaj cale zestawy nagrod (w plecakach)
- itemReward = 0, jeżeli gracz ma nie dostawac nagrody w postaci przedmiotow
Skrypt dzieli się na trzy zasadnicze części:
- nagradzanie przedmiotami za zdobycie odpowiedniego poziomu doświadczenia
- leczenie postaci (hp/mana) przy awansie
- wyświetlenie animacji tekstowej z napisem "gratz" przy awansie
Dwa ostatnie moduły można włączać/wyłączać w zależności od upodobań. Moduł nagradzania jest podstawą w tym skrypcie.
I. Instalacja
1. W folderze 'triggers/scripts/' należy utworzyć plik 'onLevel.lua' i wkleić poniższy kod:
PHP Code:
-- ###################################################
-- ## Created by: Piotr Nowak (Matem) ##
-- ## Date: 04.04.2013 ##
-- ## Exclusive for RonIT.pl ##
-- ## Support for this script: ##
-- ## http://forum.ronit.pl/forumdisplay.php?fid=22 ##
-- ###################################################
function onTrigger(cid, thing1, pos1, thing2, pos2, trigger, text)
-- #################################
-- ## INSTRUKCJA DODAWANIA NAGROD ##
-- #################################
--
-- Nalezy edytowac wylacznie pojedyncze linie konfiguracji
-- Przykładowa linika z nagrodą:
-- WAŻNE - KAŻDA LINIA MUSI BYĆ ZAKOŃCZONA PRZECINKIEM!
-- {id = 1, prizeLVL = 50, vocation = 0, onlyPremium = 0, itemReward = {id = 3233, subtype = 0}},
-- id - unikalny klucz nagrody, kazda nagroda MUSI miec swoj unikalny identyfikator
-- level - nalezy wstawic poziom na ktorym gracz otrzyma nagrode
-- vocation - numer profesji (5 - kazdy gracz, 4 - knight, 3 - paladin, 2 - druid, 1 - sorcerer, 0 - brak profesji)
-- onlyPremium - decyduje czy nagroda jest dla wszystkich graczy, czy tylko z kontem premium (0 - wszyscy, 1 - tylko premium)
-- itemReward - definicja nagrody na danym poziomie - dla mniej doswiadczonych uzytkownikow zalecana jest jedynie zmiana ID przedmiotu
-- - bardziej zaawansowani gracze moga umieszczac tutaj cale zestawy nagrod (w plecakach)
-- - itemReward = 0, jeżeli gracz ma nie dostawac nagrody w postaci przedmiotow
-- #######################################################
-- ## PONIZSZY KOD EDYTUJESZ NA WLASNA ODPOWIEDZIALNOSC ##
-- #######################################################
local config = {
{id = 1, level = 50, vocation = 4, onlyPremium = 0, itemReward = {id = 3233}}, -- bright sword, lvl 50, knight
{id = 2, level = 50, vocation = 3, onlyPremium = 0, itemReward = {id = 4328}}, -- elite crossbow, lvl 50, paladyn
{id = 3, level = 50, vocation = 2, onlyPremium = 0, itemReward = {id = 4341}}, -- tesla staff, lvl 50, druid
{id = 4, level = 50, vocation = 1, onlyPremium = 0, itemReward = {id = 4341}}, -- tesla staff, lvl 50, sorcerer
{id = 5, level = 10, vocation = 5, onlyPremium = 0, itemReward = {id = 2981, count = 10}}, -- 10x crystal coin, lvl 10, all vocations
{id = 6, level = 100, vocation = 5, onlyPremium = 0, itemReward = {id = 2981, count = 100}}, -- 100x crystal coin, lvl 100, all vocations
}
local fullRestore = true -- true - uzupelnianie HP/MP przy awansie
-- false - wylaczenie opcji
local congratzMSG = true -- true - wlaczenie animacji GRATZ przy awansie
-- false - wylaczenie opcji
-- ###############################
-- ## NIE ZMIENIAC NIC PONIZEJ! ##
-- ###############################
local newLVL = getPlayerLevel(cid)
local rSV = SV_TRIGGERS["REWARD_ON_LEVEL"]
local trueConfig = {}
for _, prize in pairs(config) do
if newLVL == prize.level and getPlayerStorageValue(cid, rSV) < newLVL and (prize.vocation == getPlayerVocation(cid) or prize.vocation == 5) and (prize.onlyPremium == 0 or (prize.onlyPremium == 1 and getPlayerPACC(cid) >= 1)) then table.insert(trueConfig, prize) end
end
if #trueConfig >= 1 then
for _, p in pairs(trueConfig) do
local ret = 0
if type(p.itemReward) == "table" and p.itemReward ~= nil then
if (doPlayerAddItemTable(cid, p.itemReward) ~= 0) then
doPlayerSendTextMessage(cid, 22, "Congratz! You can find reward in your backpack.")
log(cid, "<lvlPrize.lua> Adding reward {"..p.id.."} items to player {"..getPlayerName(cid).."}")
setPlayerStorageValue(cid, rSV, newLVL)
end
end
end
else
--doPlayerSendTextMessage(cid, 22, "Sorry, there are no rewards for this advance.")
end
-- #################################
-- ## RESTORING HP/MP ON LEVEL UP ##
-- #################################
if fullRestore == true then
doPlayerAddMana(cid,999999)
if getPlayerHealth(cid) > 0 then doPlayerAddHealth(cid,999999) end
end
-- ######################
-- ## CONGRATZ MESSAGE ##
-- ######################
if congratzMSG == true then
local ppos = getPlayerPosition(cid)
local positions = {
{x=ppos.x, y=ppos.y, z=ppos.z},
{x=ppos.x-1, y=ppos.y-1, z=ppos.z},
{x=ppos.x-1, y=ppos.y, z=ppos.z},
{x=ppos.x-1, y=ppos.y+1, z=ppos.z},
{x=ppos.x, y=ppos.y+1, z=ppos.z},
{x=ppos.x+1, y=ppos.y+1, z=ppos.z},
{x=ppos.x+1, y=ppos.y, z=ppos.z},
{x=ppos.x+1, y=ppos.y-1, z=ppos.z},
{x=ppos.x, y=ppos.y-1, z=ppos.z},
}
local time_delay = 0
for _, pos in pairs(positions) do
addEvent(doSendAnimatedText,time_delay,pos,'Gratz',RED)
addEvent(doSendMagicEffect,time_delay,pos,12)
time_delay = time_delay + 300
end
end
return 1
end
2. W pliku 'triggers/triggers.xml' należy dodać poniższy kod:
PHP Code:
<trigger id="15" type="ON_LEVELUP" script="onLevel.lua">
<level value="0" />
</trigger>
3. W pliku 'lua/global.lua' należy wyszukać poniższy kod
PHP Code:
SV_QUESTS = {
(...) jakiś kod
--(...)---
}
i dodać po tym: (pamiętając o zmianie SV na wolne
PHP Code:
SV_TRIGGERS = {
["REWARD_ON_LEVEL"] = 11000,
}
II. Konfiguracja
PHP Code:
local config = {
{id = 1, level = 50, vocation = 4, onlyPremium = 0, itemReward = {id = 3233}}, -- bright sword, lvl 50, knight
{id = 2, level = 50, vocation = 3, onlyPremium = 0, itemReward = {id = 4328}}, -- elite crossbow, lvl 50, paladyn
{id = 3, level = 50, vocation = 2, onlyPremium = 0, itemReward = {id = 4341}}, -- tesla staff, lvl 50, druid
{id = 4, level = 50, vocation = 1, onlyPremium = 0, itemReward = {id = 4341}}, -- tesla staff, lvl 50, sorcerer
{id = 5, level = 10, vocation = 5, onlyPremium = 0, itemReward = {id = 2981, count = 10}}, -- 10x crystal coin, lvl 10, all vocations
{id = 6, level = 100, vocation = 5, onlyPremium = 0, itemReward = {id = 2981, count = 100}}, -- 100x crystal coin, lvl 100, all vocations
}
local fullRestore = true -- true - uzupelnianie HP/MP przy awansie
-- false - wylaczenie opcji
local congratzMSG = true -- true - wlaczenie animacji GRATZ przy awansie
-- false - wylaczenie opcji
Nalezy edytowac wylacznie pojedyncze linie konfiguracji
Przykładowa linika z nagrodą:
WAŻNE - KAŻDA LINIA MUSI BYĆ ZAKOŃCZONA PRZECINKIEM!
{id = 1, prizeLVL = 50, vocation = 0, onlyPremium = 0, itemReward = {id = 3233, subtype = 0}},
id - unikalny klucz nagrody, kazda nagroda MUSI miec swoj unikalny identyfikator
level - nalezy wstawic poziom na ktorym gracz otrzyma nagrode
vocation - numer profesji (5 - kazdy gracz, 4 - knight, 3 - paladin, 2 - druid, 1 - sorcerer, 0 - brak profesji)
onlyPremium - decyduje czy nagroda jest dla wszystkich graczy, czy tylko z kontem premium (0 - wszyscy, 1 - tylko premium)
itemReward - definicja nagrody na danym poziomie - dla mniej doswiadczonych uzytkownikow zalecana jest jedynie zmiana ID przedmiotu
- bardziej zaawansowani gracze moga umieszczac tutaj cale zestawy nagrod (w plecakach)
- itemReward = 0, jeżeli gracz ma nie dostawac nagrody w postaci przedmiotow

