• Home
  • Members
  • Team
  • Help
  • Search
  • Register
  • Login
  • Home
  • Members
  • Help
  • Search
Ronit.GAMES RonEngine Support / Wsparcie dla RonEngine LUA/XML Scripting / Skryptowanie LUA/XML System Świątyń podnoszących exp serwera.

 
  • 0 Vote(s) - 0 Average
System Świątyń podnoszących exp serwera.
Miziak
Offline

Programmer C++ / LUA / PHP
Posts: 3
Threads: 2
Joined: Feb 2011
Reputation: 0
#1
26-03-2011, 02:55 PM (This post was last modified: 31-03-2011, 08:31 PM by Miziak.)
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:
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}
} 
Definiujemy jakie przedmioty mają być losowane do składania ofiar.
  • 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.
« Next Oldest | Next Newest »

Users browsing this thread: 1 Guest(s)



Messages In This Thread
System Świątyń podnoszących exp serwera. - by Miziak - 26-03-2011, 02:55 PM
RE: System Świątyń podnoszących exp serwera. - by Iker - 26-03-2011, 10:56 PM
RE: System Świątyń podnoszących exp serwera. - by Radhez92 - 26-03-2011, 11:12 PM
RE: System Świątyń podnoszących exp serwera. - by Meritus - 27-03-2011, 02:06 AM
RE: System Świątyń podnoszących exp serwera. - by Radhez92 - 27-03-2011, 10:41 PM
RE: System Świątyń podnoszących exp serwera. - by Iker - 28-03-2011, 07:39 PM
RE: System Świątyń podnoszących exp serwera. - by Miziak - 28-03-2011, 09:34 PM
RE: System Świątyń podnoszących exp serwera. - by Iker - 28-03-2011, 09:40 PM

  • View a Printable Version
  • Subscribe to this thread
Forum Jump:

© Designed by D&D - Powered by MyBB

Linear Mode
Threaded Mode