Odpowiedz 
Nagradzanie graczy za codzienne logowanie
08-05-2013, 11:31 PM (Ten post był ostatnio modyfikowany: 08-05-2013 11:31 PM przez czarnowidz.)
Post: #1
Nagradzanie graczy za codzienne logowanie
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:
Kod PHP:
-- ###################################################
-- ## 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(cidthing1fromposthing2topostriggertext)

    -- 
########################
    
-- ## INSTRUKCJA OBSLUGI ##
    
-- ########################
    
-- Nalezy edytowac wylacznie pojedyncze linie konfiguracji
    
-- Przykładowa linika z nagrodą:
    --     
local config = {days 7reward = {{id 2981count 100},{id 2981count 50},}, text "Here is your reward for being online 7 days in row."}
    -- 
days dzienw 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 sprawdzicczy SV jest wolny
        
-- ["DAILY_LOGIN_DAYS"] = 16002, -- nalezy sprawdzicczy SV jest wolny
    
-- }

    -- 
#######################################################
    
-- ## PONIZSZY KOD EDYTUJESZ NA WLASNA ODPOWIEDZIALNOSC ##
    
-- #######################################################
    
    
local config = {days 7text "Oto Twoja nagroda za codzienne logowanie przez 7 dni."
                        
reward = {
                            -- 
dodajemy plecakw ktorym znajduje sie 400 crystal coins
                            
{id 2792contain = {{id 2981count 100},{id 2981count 100},{id 2981count 100},{id 2981count 100},}},
                            -- 
dodajemy 100x crystal coins
                            
{id 2981count 100},
                        }
                    
                }
                
                
    
    -- 
###############################
    
-- ## NIE ZMIENIAC NIC PONIZEJ! ##
    
-- ###############################    
    
    
if getPlayerStorageValue(cidSV_TRIGGERS["DAILY_LOGIN_DAYS"]) < 0 then setPlayerStorageValue(cidSV_TRIGGERS["DAILY_LOGIN_DAYS"], 1end
    
if getPlayerStorageValue(cidSV_TRIGGERS["DAILY_LOGIN_LAST"]) < 0 then setPlayerStorageValue(cidSV_TRIGGERS["DAILY_LOGIN_LAST"], os.time()) end
    
    local day
lastLogincurTime getPlayerStorageValue(cidSV_TRIGGERS["DAILY_LOGIN_DAYS"]), getPlayerStorageValue(cidSV_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
(cidSV_TRIGGERS["DAILY_LOGIN_DAYS"], -1)
    elseif 
daysBetween == 0 then
    
elseif daysBetween == 1 then
        setPlayerStorageValue
(cidSV_TRIGGERS["DAILY_LOGIN_DAYS"], day+1)
        
setPlayerStorageValue(cidSV_TRIGGERS["DAILY_LOGIN_LAST"], curTime)
    elseif 
daysBetween 1 then
        setPlayerStorageValue
(cidSV_TRIGGERS["DAILY_LOGIN_DAYS"], 0)
        
setPlayerStorageValue(cidSV_TRIGGERS["DAILY_LOGIN_LAST"], os.time())
    
end
        
    
-- odswiezamy dane
    day
lastLogin getPlayerStorageValue(cidSV_TRIGGERS["DAILY_LOGIN_DAYS"]), getPlayerStorageValue(cidSV_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(cidconfig.reward[rewardNum]) ~= 0then
            doPlayerSendTextMessage
(cid22config.text)
            
setPlayerStorageValue(cidSV_TRIGGERS["DAILY_LOGIN_DAYS"], -1)
            
setPlayerStorageValue(cidSV_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:
Kod PHP:
<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:
Kod PHP:
SV_QUESTS = {
                             (...) 
jakiś kod
    
--(...)---


Pod tym dodajemy: (pamiętając o zmianie SV na wolne)
Kod PHP:
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:
Kod PHP:
local config = {days 7text "Oto Twoja nagroda za codzienne logowanie przez 7 dni."
                        
reward = {
                            -- 
dodajemy plecakw ktorym znajduje sie 400 crystal coins
                            
{id 2792contain = {{id 2981count 100},{id 2981count 100},{id 2981count 100},{id 2981count 100},}},
                            -- 
dodajemy 100x crystal coins
                            
{id 2981count 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.
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
Odpowiedz 


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości