What's new

Skrypty & Kody lottery system > !lottery

Status
Not open for further replies.

DiS

Advanced User
Joined
Apr 5, 2008
Messages
274
Reaction score
12
Witam!
Mam taki skrypcik z forum na lottery system, chcia?bym go przerobi? tak, aby nie losowa? wygranego z graczy online (poniewa? moj silnik nie zna funkcji getPlayersOnline :/
Tylko ?eby losowa? z po?r?d graczy kt?rzy maj? jakie? storage.
Storage gracz b?dzie kupowa? przez komende !lottery za 1000gp

Teraz moja pro?ba: m?g?by kto? POPRAWNIE umie?ci? t? funkcje w tym skrypcie? nie wiem czemu mi nie wychodzi

if getPlayerStorageValue(cid, 10005) == 1 then



local config = {
lottery_hour = "5 Hour", -- Czas do nast?pnej loterii (tylko bedzie pisa?o na czerwono ile czasu wszystko w globalevents.xml ustawiamy)
rewards_id = {2494, 2472, 2514, 2160, 2495, 6132, 2493, 8266, 8905}, -- Wygrane przedmioty
crystal_counts = 4, -- U?ywamy to jesli do wygrania jest cc (ID: 2160).
website = "no" -- Tylko w tedy jesli mamy strone i tabele`lottery` w bazie danych!
}
function onThink(interval, lastExecution)

if(getWorldCreatures(0) == 0)then

return true
end

local list = {}
for i, tid in ipairs(getPlayersOnline()) do
list = tid
end

local winner = list[math.random(1, #list)]
local random_item = config.rewards_id[math.random(1, #config.rewards_id)]

if(random_item == 2160) then
doPlayerAddItem(winner, random_item, config.crystal_counts)
doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. config.crystal_counts .. " " .. getItemNameById(random_item) .. "s! Congratulations! (Next Lottery in " .. config.lottery_hour .. ")")
else
doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. getItemNameById(random_item) .. "! Congratulations! (Next Lottery in " .. config.lottery_hour .. ")")
doPlayerAddItem(winner, random_item, 1)
end

if(config.website == "yes") then

db.executeQuery("INSERT INTO `lottery` (`name`, `item`) VALUES ('".. getCreatureName(winner) .."', '".. getItemNameById(random_item) .."');")
end

return true
end
 

Ciamciaj Bigos

ก้้้้้้&
Joined
Jun 6, 2013
Messages
2,081
Reaction score
192
Odp: lottery system > !lottery

ale nie ma funkcji getPlayersStorage XD
zeby sprawdzic kazdego storage dziala to na zasadzie
[lua]for _, v in ipairs(getPlayersOnline()) do
if getPlayerStorageValue(v, 100) == 1 then
doPlayerAddItem(v, 2160, 10)[/lua]
 

DiS

Advanced User
Joined
Apr 5, 2008
Messages
274
Reaction score
12
Odp: lottery system > !lottery

musze wywali? getPlayersOnline ca?kowicie z tego skryptu i zmieni? zasadze dzia?ania skyptu na storage
10005, 1 (ma bilet na loterie)
10005, 0 (nie ma biletu na loterie)

chodzi mi o to ?eby skrypt nie dawa? wygranej losowej osobie z online,
tylko losowej osobie posiadaj?cej storage 10005, 1
 
Last edited:

misztrz440

Banned
Joined
Dec 15, 2012
Messages
1,032
Reaction score
39
Odp: lottery system > !lottery

No na poczatku dodajesz pod function i b?dzie na poczatku sprawdzali czy ma kto? storage i losuje
 

DiS

Advanced User
Joined
Apr 5, 2008
Messages
274
Reaction score
12
Odp: lottery system > !lottery

no tak! ale liste graczy do losowanie pobiera poprzez getPlayersOnline , co mam da? w miejsce tej funkcji? chce ?eby losowa?o z po?r?d wszystkich graczy na serwerze bo innej mo?liwo?ci chyba nie ma
 

MiksereQ

Banned
Joined
Jul 2, 2013
Messages
531
Reaction score
32
Odp: lottery system > !lottery

W miejsce getPlayersOnline daj getPlayerStorageValue
 

Ciamciaj Bigos

ก้้้้้้&
Joined
Jun 6, 2013
Messages
2,081
Reaction score
192
Odp: lottery system > !lottery

W miejsce getPlayersOnline daj getPlayerStorageValue

a powiedz mi co ma wpisac zamiast cid w funkcji sprawdzajacej storage?
 

MiksereQ

Banned
Joined
Jul 2, 2013
Messages
531
Reaction score
32
Odp: lottery system > !lottery

Warunek.. czyli ?e je?li gracz ma storage 1212 to mo?e dosta?, a je?eli nie spe?nia warunk?w to nie..
 

DiS

Advanced User
Joined
Apr 5, 2008
Messages
274
Reaction score
12
Odp: lottery system > !lottery

w ten spos?b wywala?o mi b??dy, player not found

local list = {}
for i, tid in ipairs(getPlayersOnline()) do
list = tid
end


jak to zmieni? ?eby nie losowa?o graczy online, tylko graczy z danym storage ??
 
Last edited:

misztrz440

Banned
Joined
Dec 15, 2012
Messages
1,032
Reaction score
39
Odp: lottery system > !lottery

Wyjeb to u wystaw te funkcje storage

Notka moderatorska:
Twoje posty mam traktowac powaznie, czy jednak jako zart? ~bigos
 
Last edited by a moderator:

Ciamciaj Bigos

ก้้้้้้&
Joined
Jun 6, 2013
Messages
2,081
Reaction score
192
Odp: lottery system > !lottery

db.getResult("SELECT 'name' FROM 'players' WHERE 'online' = '1'")
I-Have-No-Idea-What-Im-Doing-1.jpg
 

DiS

Advanced User
Joined
Apr 5, 2008
Messages
274
Reaction score
12
Odp: lottery system > !lottery

nie ma takiej opcji xD to by? m?j wcze?niejszy problem, silnik nie daje wpisu do bazy w ta tabele, oraz nie ma funkcji db.
Rozwi?za?em go w?a?nie poprzez storage onLogin i storage onLogout xD ( 1 / 0 ) + zmiana kodu acc makera by to odczytywa?

local players = getPlayersOnline()
local list = {}
for i, tid in ipairs(players) do
list = tid
end


jak zmieni? to ?eby local byli to gracze ze storage ?
 
Last edited:

DiS

Advanced User
Joined
Apr 5, 2008
Messages
274
Reaction score
12
Odp: lottery system > !lottery

Uda?o mi si? jako? to ogarn??, skrypt dzia?a poprawnie, losuje, daje nagrode.
Jedyny problem to wyskakuje mi przy ka?dej loteri b??d w konsoli, nawet je?li nie ma ?adnego gracza online:

"ERROR: Globalevents::think Failed to execute event: lottery"

Co jest tu nie tak?

function onThink(interval)

local config = {
lottery_hour = "12 Hour", -- Czas do nast?pnej loterii (tylko bedzie pisa?o na czerwono ile czasu wszystko w globalevents.xml ustawiamy)
rewards_id = {2275, 2160, 2173}, -- Wygrane przedmioty
crystal_counts = 4, -- U?ywamy to jesli do wygrania jest cc (ID: 2160).
}

if getWorldCreatures(0) == 0 then
else

local list = {}
for i, tid in ipairs(getPlayersOnlineList()) do
list = tid
end

local winner = list[math.random(1, #list)]
local random_item = config.rewards_id[math.random(1, #config.rewards_id)]

if(random_item == 2160) then
doPlayerAddItem(winner, random_item, config.crystal_counts)
broadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. config.crystal_counts .. " Crystal Coins! Congratulations! (Next Lottery in " .. config.lottery_hour .. ")")
else
if(random_item == 2275) then
broadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: Pacc Rune! Congratulations! (Next Lottery in " .. config.lottery_hour .. ")")
doPlayerAddItem(winner, random_item, 1)
else
broadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: Amulet of Loss! Congratulations! (Next Lottery in " .. config.lottery_hour .. ")")
doPlayerAddItem(winner, random_item, 1)
end
end
return true
end
end
 
Last edited:
Status
Not open for further replies.
Top