Witam,
System polegający na rzucaniu `bogom` w ofierze przedmiotów od ilości wrzuconych przedmiotów zależy o ile % zostanie zwiększony exprate servera.
Implementacja:
Do data/actions/scripts/triggers dodajemy plik templesys.lua i uzupełniamy go tym:
W tablicy:
Definiujemy wszystkie ołtarze na których będą składane ofiary.
W tablicy:
Definiujemy jakie przedmioty mają być losowane do składania ofiar.
Po skonfigurowaniu skryptu dodajemy wpis do triggers.xml:
Dodałem komendę !donates sprawdza ona jaki item dziś przyjmują `bogowie` oraz skrypt startowy który ustawia exp z przed ewentualnego crasha.
To chyba wszystko,
Pozdrawiam.
System polegający na rzucaniu `bogom` w ofierze przedmiotów od ilości wrzuconych przedmiotów zależy o ile % zostanie zwiększony exprate servera.
Implementacja:
Do data/actions/scripts/triggers dodajemy plik templesys.lua i uzupełniamy go tym:
PHP Code:
-- # Author: Paweł Mizio
-- # Version: 1.0
-- # Name: Temple System
-- # Date: 26.03.2011r
local temples = {
{x=190, y=406, z=7}
}
local items = {
{itemid=2973, power=0.001},
{itemid=2969, power=0.0001}
}
local arrs = {
{{1, 0, 1},
{0, 0, 0},
{1, 0, 1}},
{{0, 1, 0},
{1, 0, 1},
{0, 1, 0}}
}
local eff = {ME_GIANTICE, ME_FIREATTACK, ME_BIGPLANTS, ME_ENERGYHIT}
-- local lib start
GV_DAY = 1000
GV_ITEMID = 1001
GV_DONATES_COUNT = 1002
--GVS_TOP_DONATORS = {1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012}
GV_DONATES_COUNT_OLD = 1013
-- local lib end
local function getItemTemplePower(id, tbl)
for _,v in pairs(tbl) do
if(v.itemid == id)then
return v.power
end
end
return 0
end
function onTrigger(cid, baseitem, topos, moveitem, _, trigger, text)
if(trigger.id == 49)then
local day = tonumber(os.date("*t")["wday"])
if(getGlobalValue(GV_DAY) ~= day)then
setGlobalValue(GV_DAY, day)
setGlobalValue(GV_DONATES_COUNT_OLD, getGlobalValue(GV_DONATES_COUNT))
local prec = getGlobalValue(GV_DONATES_COUNT_OLD)*getItemTemplePower(getGlobalValue(GV_ITEMID), items)
local confexp = getServerGlobalExp()
setServerExp(confexp + ((confexp*prec)/100))
setGlobalValue(GV_DONATES_COUNT, 0)
local rand = items[math.random(1, #items)]
setGlobalValue(GV_ITEMID, rand.itemid)
end
for _,v in pairs(temples) do
if(v.x == topos.x and v.y == topos.y and v.z == topos.z)then
if(getGlobalValue(GV_ITEMID) == moveitem.itemid)then
local dc = getGlobalValue(GV_DONATES_COUNT)
if(dc <= 0)then
setGlobalValue(GV_DONATES_COUNT, 1)
else
setGlobalValue(GV_DONATES_COUNT, dc+1)
end
local sv = getPlayerStorageValue(cid, SV_TEMPLE_SYS)
if(sv <= 0)then
setPlayerStorageValue(cid, SV_TEMPLE_SYS, 1)
else
setPlayerStorageValue(cid, SV_TEMPLE_SYS, sv+1)
end
--[[local save = {}
for i=1, 9, 2 do
table.insert(save, {getGlobalValue(GVS_TOP_DONATORS[i]), getGlobalValue(GVS_TOP_DONATORS[i+1])})
end
local bool = false
for i,_ in pairs(save) do
if(save[i][1] == getPlayerGUID(cid))then
save[i][2] = sv + 1
bool = false
break
else
bool = true
end
end
if(bool)then
table.insert(save, {getPlayerGUID(cid), sv+1})
end
table.sort(save, function(a,b) return a[2]>b[2] end)
local c = 1
for i=1, 9, 2 do
setGlobalValue(GVS_TOP_DONATORS[i], save[c][1])
setGlobalValue(GVS_TOP_DONATORS[i+1], save[c][2])
c = c+1
end]]
addEvent(function()
doRemoveItem(moveitem.uid, moveitem.type)
doSendMagicEffect(topos, ME_HITBYFIRE)
doSendMagicEffect(topos, ME_HOLYAREA)
doSendAnimatedText({x=topos.x-1, y=topos.y, z=topos.z}, 'Dziekuje', YELLOW)
doSendAnimatedText(topos, 'za', YELLOW)
doSendAnimatedText({x=topos.x+1, y=topos.y, z=topos.z}, 'dary!', YELLOW)
doPlayerSendTextMessage(cid, 22, 'Dziekujemy za ' .. getItemName(cid, getGlobalValue(GV_ITEMID)) .. "!")
end, 4500, nil)
for n = 0, 3 do
if(n%2 == 0)then
addEvent(function()
doSendMagicEffectInArea(topos, eff[n+1], arrs[1])
end, n*1000, nil)
else
addEvent(function()
doSendMagicEffectInArea(topos, eff[n+1], arrs[2])
end, n*1000, nil)
end
end
else
doSendAnimatedText({x=topos.x-1, y=topos.y, z=topos.z}, 'Nie', YELLOW)
doSendAnimatedText(topos, 'chce', YELLOW)
doSendAnimatedText({x=topos.x+1, y=topos.y, z=topos.z}, 'tego!', YELLOW)
doRemoveItem(moveitem.uid, moveitem.type)
doPlayerAddItem(cid, moveitem.itemid, 1, moveitem.type)
doSendMagicEffect(topos, ME_MORTAREA)
doPlayerSendTextMessage(cid, 22, 'Dzis oczekujemy ' .. getItemName(cid, getGlobalValue(GV_ITEMID)) .. '! A nie ' .. getItemName(cid, moveitem.itemid) .. "!")
end
break
end
end
elseif(trigger.id == 50)then
local prec = getGlobalValue(GV_DONATES_COUNT_OLD)*getItemTemplePower(getGlobalValue(GV_ITEMID), items)
local confexp = getServerGlobalExp()
setServerExp(confexp + ((confexp*prec)/100))
elseif(trigger.id == 51)then
local day = tonumber(os.date("*t")["wday"])
if(getGlobalValue(GV_DAY) ~= day)then
setGlobalValue(GV_DAY, day)
setGlobalValue(GV_DONATES_COUNT_OLD, getGlobalValue(GV_DONATES_COUNT))
local prec = getGlobalValue(GV_DONATES_COUNT_OLD)*getItemTemplePower(getGlobalValue(GV_ITEMID), items)
local confexp = getServerGlobalExp()
setServerExp(confexp + ((confexp*prec)/100))
setGlobalValue(GV_DONATES_COUNT, 0)
local rand = items[math.random(1, #items)]
setGlobalValue(GV_ITEMID, rand.itemid)
end
if(isPlayer(cid) == 1)then
local text = 'Dzis Bogowie oczekuja od nas ' .. getItemName(cid, getGlobalValue(GV_ITEMID)) .. '. Zlozylismy juz ' .. getGlobalValue(GV_DONATES_COUNT) .. ' ofiar.'
doPlayerSendTextMessage(cid, 22, text)
end
end
return 1
end
W tablicy:
PHP Code:
local temples = {
{x=190, y=406, z=7}
}
Definiujemy wszystkie ołtarze na których będą składane ofiary.
W tablicy:
PHP Code:
local items = {
{itemid=2973, power=0.001},
{itemid=2969, power=0.0001}
}
- itemid to oczywiście ID przedmiotu.
- power to współczynnik obliczający o ile procent zwiększony bd exp rate, liczony według wzoru: liczba_darowanych_przedmiotów * współczynnik = procent zwiększający exp
Po skonfigurowaniu skryptu dodajemy wpis do triggers.xml:
PHP Code:
<!-- Temple System Start -->
<trigger id="Proszę_podać_id_triggera" type="ON_ITEMTHROW" script="triggers/templesys.lua">
<item itemid="ID_outarza_na_który_rzucamy" />
</trigger>
<trigger id="Proszę_podać_id_triggera" type="ON_SERVERSTART" script="triggers/templesys.lua" />
<trigger id="Proszę_podać_id_triggera" type="ON_SAY" script="triggers/templesys.lua">
<say id="1" words="!donates" />
</trigger>
<!-- Temple System Stop -->
Dodałem komendę !donates sprawdza ona jaki item dziś przyjmują `bogowie` oraz skrypt startowy który ustawia exp z przed ewentualnego crasha.
To chyba wszystko,
Pozdrawiam.

