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:
3600 - czas powtarzania loterii w sekundach
Tworzymy plik globalevents/scripts/lottery.lua i wklejamy:
Konfiguracje oczywi?cie mo?emy sobie zmienia?, w razie niejasno?ci prosz? pyta?.
Pozdrawiam,
Animax.
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"/>
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.