What's new

Globalevents [0.3.6pl1] Loteria

Status
Not open for further replies.

AnimaXxX

Advanced User
Joined
Mar 25, 2011
Messages
195
Reaction score
27
Cze??,
z nud?w dla od?wie?enia LUA po sporej przerwie napisa?em sobie loterie, mo?e komu? si? przyda / kto? powie nad czym popracowa?.
W configuracji mo?na ustawi? ilo?? nagr?d (nie tylko ilo?? itemu) i ilo?? zwyci?zc?w. Swoj? drog? skrypt sam `wylicza` kiedy b?dzie nast?pna loteria.

Do globalevents/globalevents.xml:
PHP:
<globalevent name="lottery" interval="3600" event="script" value="lottery.lua"/>
3600 - czas powtarzania loterii w sekundach

Tworzymy plik globalevents/scripts/lottery.lua i wklejamy:
PHP:
local config = 
{
    winnersCount = 2,
    rewardsCount = 1,
    rewards = 
    {
        {itemid = 2270, count = 1},
    },
    messages =
    {
        color = 19, -- message color
        prefix = '[LOTTERY]: ', -- message prefix
        winner = 'Congratulations $winnerName! You won $items.', -- message for winner
        all =
        {
            -- message for all
            one = "$winnerName is winner. Next lottery $nextLotteryTime.",
            more = "$winnersName are winners. Next lottery $nextLotteryTime.",
        },
    },
}


function onThink(interval, lastExecution)
    local players = getPlayersOnline();
    local messageForWinner, messageForAll = config['messages'].prefix .. config['messages'].winner, config['messages'].prefix;
    local winners, rewards = {}, {};

    if(#players == 0) then
        return true;
    end
    
    if(config.winnersCount == 1) then
        table.insert(winners, players[math.random(1, #players)]);
        messageForAll = messageForAll .. config['messages']['all'].one;
        messageForAll = string.gsub(messageForAll, '$winnerName', getCreatureName(winners[1]));
    elseif(config.winnersCount > 1) then
        local winnersName = '';
        local winner;
        for i=1, config.winnersCount do
            winner = players[math.random(1, #players)];
            table.insert(winners, winner);
            winnersName = winnersName .. getCreatureName(winner);
            if(i < config.winnersCount) then winnersName = winnersName .. ', '; end
        end
        messageForAll = messageForAll .. config['messages']['all'].more;
        messageForAll = string.gsub(messageForAll, '$winnersName', winnersName);
    end
    
    messageForAll = string.gsub(messageForAll, '$nextLotteryTime', os.date('%X %x', os.time()+interval));
    
    for w=1, #winners do
        if(config.rewardsCount == 1) then
            local reward = config.rewards[math.random(1, #config.rewards)];
            table.insert(rewards, reward);
            doPlayerAddItem(winners[w], reward.itemid, reward.count);
            messageForWinner = string.gsub(messageForWinner, '$winnerName', getCreatureName(winners[w]));
            messageForWinner = string.gsub(messageForWinner, '$items', reward.count .. 'x' ..getItemInfo(reward.itemid).name);
        elseif(config.rewardsCount > 1) then
            local itemsName, reward;
            for i=1, config.rewardsCount do
                reward = config.rewards[math.random(1, #config.rewards)];
                table.insert(rewards, reward);
                doPlayerAddItem(winners[w], reward.itemid, reward.count)
                itemsName = itemsName .. reward.count .. 'x' .. getItemInfo(reward.itemid).name;
                if(not i == config.rewardsCount) then itemsName = itemsName .. ', '; end
            end
            messageForWinner = string.gsub(messageForWinner, '$winnerName', getCreatureName(winners[w]));
            messageForWinner = string.gsub(messageForWinner, '$items', itemsName);
        end
        doPlayerSendTextMessage(winners[w], config['messages'].color, messageForWinner);
    end
    
    return doBroadcastMessage(messageForAll);
end

Konfiguracje oczywi?cie mo?emy sobie zmienia?, w razie niejasno?ci prosz? pyta?.

Pozdrawiam,
Animax.
 

Guuraal

Advanced User
Joined
Apr 11, 2012
Messages
191
Reaction score
8
Odp: [0.3.6pl1] Loteria

Przyda si?, reput leci
 

Sonpabo

Active User
Joined
Jun 29, 2009
Messages
71
Reaction score
6
Odp: [0.3.6pl1] Loteria

Dzieki ze da?es taki skrypt ..
 

Szmalczyk

User
Joined
May 3, 2011
Messages
10
Reaction score
0
Odp: [0.3.6pl1] Loteria

A jak zrobic loterie dla 3 graczy i kazda inna nagrode otrzymuje?
 

Arkam

Forum friend
Joined
Dec 20, 2008
Messages
1,980
Reaction score
180
Odp: [0.3.6pl1] Loteria

przerobi? skrypt trzeba ;]
 
Status
Not open for further replies.
Top