• Home
  • Members
  • Team
  • Help
  • Search
  • Register
  • Login
  • Home
  • Members
  • Help
  • Search
Ronit.GAMES RonEngine Support / Wsparcie dla RonEngine LUA/XML Scripting / Skryptowanie LUA/XML Nagradzanie graczy za codzienne logowanie

 
  • 0 Vote(s) - 0 Average
Nagradzanie graczy za codzienne logowanie
czarnowidz
Offline

Uzytkownik
Posts: 11
Threads: 6
Joined: Jun 2010
Reputation: 0
#1
08-05-2013, 11:31 PM (This post was last modified: 08-05-2013, 11:31 PM by czarnowidz.)
Poniżej przedstawiam pełną instrukcję instalacji skryptu, który ma na celu nagradzanie graczy za codzienne logowanie się do gry.

1. W folderze 'triggers/scripts/' tworzymy plik 'dailyLogin.lua' oraz wypełniamy go poniższym kodem:
PHP Code:
-- ###################################################
-- ## Created by: Piotr Nowak (Matem)                 ##
-- ## Date: 06.04.2013                               ##
-- ## Exclusive for RonIT.pl                        ##
-- ## Support for this script:                        ##
-- ## http://forum.ronit.pl/forumdisplay.php?fid=22 ##
-- ###################################################

function onTrigger(cid, thing1, frompos, thing2, topos, trigger, text)

    -- 
########################
    
-- ## INSTRUKCJA OBSLUGI ##
    
-- ########################
    
-- Nalezy edytowac wylacznie pojedyncze linie konfiguracji
    
-- Przykładowa linika z nagrodą:
    --     
local config = {days = 7, reward = {{id = 2981, count = 100},{id = 2981, count = 50},}, text = "Here is your reward for being online 7 days in row."}
    -- 
days - dzien, w ktorym gracz otrzyma nagrode
    
-- reward - definicja nagrody na     - dla mniej doswiadczonych uzytkownikow zalecana jest jedynie zmiana ID przedmiotu
    
--                                     - bardziej zaawansowani gracze moga umieszczac tutaj cale zestawy nagrod (w plecakach)
    --                                     - 
nagrody sa losowe - wpisanie jednej oznacza brak losowosci 
    
-- text - wiadomosc wyswietlona graczowi w chwili otrzymania nagrody

    
-- ################################################
    
-- ## PONIZSZE LINIE NALEZY WKLEIC DO GLOBAL.LUA ##
    
-- ################################################
    
    
-- SV_TRIGGERS = {
        -- [
"DAILY_LOGIN_LAST"] = 16001, -- nalezy sprawdzic, czy SV jest wolny
        
-- ["DAILY_LOGIN_DAYS"] = 16002, -- nalezy sprawdzic, czy SV jest wolny
    
-- }

    -- 
#######################################################
    
-- ## PONIZSZY KOD EDYTUJESZ NA WLASNA ODPOWIEDZIALNOSC ##
    
-- #######################################################
    
    
local config = {days = 7, text = "Oto Twoja nagroda za codzienne logowanie przez 7 dni.", 
                        
reward = {
                            -- 
dodajemy plecak, w ktorym znajduje sie 400 crystal coins
                            
{id = 2792, contain = {{id = 2981, count = 100},{id = 2981, count = 100},{id = 2981, count = 100},{id = 2981, count = 100},}},
                            -- 
dodajemy 100x crystal coins
                            
{id = 2981, count = 100},
                        }
                    
                }
                
                
    
    -- 
###############################
    
-- ## NIE ZMIENIAC NIC PONIZEJ! ##
    
-- ###############################    
    
    
if getPlayerStorageValue(cid, SV_TRIGGERS["DAILY_LOGIN_DAYS"]) < 0 then setPlayerStorageValue(cid, SV_TRIGGERS["DAILY_LOGIN_DAYS"], 1) end
    
if getPlayerStorageValue(cid, SV_TRIGGERS["DAILY_LOGIN_LAST"]) < 0 then setPlayerStorageValue(cid, SV_TRIGGERS["DAILY_LOGIN_LAST"], os.time()) end
    
    local day
, lastLogin, curTime = getPlayerStorageValue(cid, SV_TRIGGERS["DAILY_LOGIN_DAYS"]), getPlayerStorageValue(cid, SV_TRIGGERS["DAILY_LOGIN_LAST"]), os.time()
    
    
local oneDay = 24*60*60
    
    local day1 
= (lastLogin - (lastLogin % oneDay))/oneDay
    local day2 
= (curTime - (curTime % oneDay))/oneDay
    
    local daysBetween 
= day2 - day1
    
    
if daysBetween == -1 then
        setPlayerStorageValue
(cid, SV_TRIGGERS["DAILY_LOGIN_DAYS"], -1)
    elseif 
daysBetween == 0 then
    
elseif daysBetween == 1 then
        setPlayerStorageValue
(cid, SV_TRIGGERS["DAILY_LOGIN_DAYS"], day+1)
        
setPlayerStorageValue(cid, SV_TRIGGERS["DAILY_LOGIN_LAST"], curTime)
    elseif 
daysBetween > 1 then
        setPlayerStorageValue
(cid, SV_TRIGGERS["DAILY_LOGIN_DAYS"], 0)
        
setPlayerStorageValue(cid, SV_TRIGGERS["DAILY_LOGIN_LAST"], os.time())
    
end
        
    
-- odswiezamy dane
    day
, lastLogin = getPlayerStorageValue(cid, SV_TRIGGERS["DAILY_LOGIN_DAYS"]), getPlayerStorageValue(cid, SV_TRIGGERS["DAILY_LOGIN_LAST"])
    
    if 
day == config.days then
        local rewardNum 
= 1
        
if #config.reward > 1 then rewardNum = math.random(1, #config.reward) end
        
if (doPlayerAddItemTable(cid, config.reward[rewardNum]) ~= 0) then
            doPlayerSendTextMessage
(cid, 22, config.text)
            
setPlayerStorageValue(cid, SV_TRIGGERS["DAILY_LOGIN_DAYS"], -1)
            
setPlayerStorageValue(cid, SV_TRIGGERS["DAILY_LOGIN_LAST"], os.time()+oneDay)
        
end
    end
        
    
return 1
end 

2. Otwieramy plik 'triggers/triggers.xml' i dodajemy w nim poniższą linie:
PHP Code:
<trigger id="16" type="ON_LOGIN" script="dailyLogin.lua" /> 
NALEŻY PAMIĘTAĆ O ZMIANIE ID TRIGGER'A

3. Otwieramy plik 'lua/global.lua' i wyszukujemy:
PHP Code:
SV_QUESTS = {
                             (...) 
jakiś kod
    
--(...)---
} 

Pod tym dodajemy: (pamiętając o zmianie SV na wolne)
PHP Code:
SV_TRIGGERS = {
    [
"DAILY_LOGIN_LAST"] = 11001,
    [
"DAILY_LOGIN_DAYS"] = 11002,
} 

Jeżeli mamy już SV_TRIGGERS w pliku global.lua, należy jedynie skopiować identyfikatory.

4. Konfiguracja:
PHP Code:
local config = {days = 7, text = "Oto Twoja nagroda za codzienne logowanie przez 7 dni.", 
                        
reward = {
                            -- 
dodajemy plecak, w ktorym znajduje sie 400 crystal coins
                            
{id = 2792, contain = {{id = 2981, count = 100},{id = 2981, count = 100},{id = 2981, count = 100},{id = 2981, count = 100},}},
                            -- 
dodajemy 100x crystal coins
                            
{id = 2981, count = 100},
                        }
                    
                } 

days - ilosc dni, po ktorych zostaje przyznana nagroda
text - komunikat pojawiajacy sie w chwili uzyskania nagrody
reward - lista nagród, które gracz może dostać (zawsze dostaje jedną z nich), w konfiguracji podany przykład dodawania pojedyńczego przedmiotu (100x crystal coins) jak i całego plecaka (backpack + 400x crystal coins).

W razie jakichkolwiek problemów, proszę o kontakt tutaj.
« Next Oldest | Next Newest »

Users browsing this thread: 1 Guest(s)



Messages In This Thread
Nagradzanie graczy za codzienne logowanie - by czarnowidz - 08-05-2013, 11:31 PM

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

© Designed by D&D - Powered by MyBB

Linear Mode
Threaded Mode