Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local lottery_tickets = {}
- local GOSSIP_ACTION_INFO_DEF = 1000
- local GOSSIP_SENDER_MAIN = 1
- local function LotteryOnLogin(event, player)
- --Get all lottery tickets for the player
- local tickets = WorldDBQuery("SELECT * FROM lottery_tickets WHERE player_guid="..player:GetGUIDLow());
- --Loop through all tickets and add them to the table
- if(tickets)then
- while(tickets:NextRow())do
- local ticket = {
- ticket_id = tickets:GetUInt32(0),
- week_number = tickets:GetUInt32(1),
- player_guid = tickets:GetUInt32(2),
- player_account_id = tickets:GetUInt32(3),
- number1 = tickets:GetUInt32(4),
- number2 = tickets:GetUInt32(5),
- number3 = tickets:GetUInt32(6),
- number4 = tickets:GetUInt32(7),
- number5 = tickets:GetUInt32(8),
- number6 = tickets:GetUInt32(9)
- }
- --Add the ticket to the lookup table
- if lottery_tickets[player:GetGUIDLow()] == nil then
- lottery_tickets[player:GetGUIDLow()] = {}
- end
- lottery_tickets[player:GetGUIDLow()][ticket.ticket_id] = ticket;
- end
- end
- end
- RegisterPlayerEvent(LotteryOnLogin, 3)
- --------------------------------------------------------
- --RegisterPlayerEvent for when a player logs out
- local function LotteryOnLogout(event, player)
- --Remove the entry from the lottery_tickets table
- if(lottery_tickets[player:GetGUIDLow()])then
- lottery_tickets[player:GetGUIDLow()] = nil;
- end
- end
- RegisterPlayerEvent(LotteryOnLogout, 4)
- --------------------------------------------------------------------------------------------------------------------
- local function LotteryTicketEventEnd(event, gameeventid)
- local week_number = WorldDBQuery("SELECT week_number FROM lottery WHERE week_number="..week_number):GetUInt32(0);
- --Get the lottery numbers for the current week
- local number1 = WorldDBQuery("SELECT number1 FROM lottery WHERE week_number="..week_number):GetUInt32(0);
- local number2 = WorldDBQuery("SELECT number2 FROM lottery WHERE week_number="..week_number):GetUInt32(0);
- local number3 = WorldDBQuery("SELECT number3 FROM lottery WHERE week_number="..week_number):GetUInt32(0);
- local number4 = WorldDBQuery("SELECT number4 FROM lottery WHERE week_number="..week_number):GetUInt32(0);
- local number5 = WorldDBQuery("SELECT number5 FROM lottery WHERE week_number="..week_number):GetUInt32(0);
- local number6 = WorldDBQuery("SELECT number6 FROM lottery WHERE week_number="..week_number):GetUInt32(0);
- local amount = WorldDBQuery("SELECT amount FROM lottery WHERE week_number="..week_number):GetUInt32(0);
- --Loop through all lottery tickets and check if any of them match the lottery numbers
- if(lottery_tickets)then
- for key, ticket in pairs(lottery_tickets) do
- for ticket_id,ticket in pairs(ticket) do
- local ticket_number1 = ticket.number1;
- local ticket_number2 = ticket.number2;
- local ticket_number3 = ticket.number3;
- local ticket_number4 = ticket.number4;
- local ticket_number5 = ticket.number5;
- local ticket_number6 = ticket.number6;
- local player_lowguid = ticket.player_guid;
- if(ticket_number1 == number1 and ticket_number2 == number2 and ticket_number3 == number3 and ticket_number4 == number4 and ticket_number5 == number5 and ticket_number6 == number6)then
- --Send mail to the player with the amount of money won
- SendMail(player_lowguid, "Lottery Winner!", "Congratulations! You have won the lottery and have been awarded "..amount.." copper!", 0, 0, 0, 0);
- end
- end
- end
- end
- end
- RegisterServerEvent(LotteryTicketEventEnd, 33)
- -----------------------------------------------------
- --Generates the initial lottery numbers.
- local function LotteryTicketEventBegin(event, gameeventid)
- local week_number = WorldDBQuery("SELECT week_number FROM lottery ORDER BY week_number DESC LIMIT 1"):GetUInt32(0);
- local week = 0;
- if (week_number == 0) then
- week = 1;
- else
- week = week_number + 1;
- end
- local number1 = math.random(1,32);
- local number2 = math.random(1,32);
- local number3 = math.random(1,32);
- local number4 = math.random(1,32);
- local number5 = math.random(1,32);
- local number6 = math.random(1,32);
- WorldDBExecute("REPLACE lottery (week_number, number1, number2, number3, number4, number5, number6, amount) VALUES ("..week..", "..number1..", "..number2..", "..number3..", "..number4..", "..number5..", "..number6..", 0)");
- end
- RegisterServerEvent(LotteryTicketEventBegin, 34);
- --------------------------------------------------------------------------------------------------------------------
- local function LotteryGossipNpc(event, player, creature)
- local ticket_count = 0;
- for key, tickets in pairs(lottery_tickets) do
- if(key == player:GetGUIDLow()) then
- for ticket_key, ticket in pairs(tickets) do
- local ticket_string = string.format("Ticket #%u: %u, %u, %u, %u, %u, %u", ticket.ticket_id, ticket.number1, ticket.number2, ticket.number3, ticket.number4, ticket.number5, ticket.number6);
- creature:GossipMenuAddItem(0, ticket_string, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF)
- ticket_count = ticket_count + 1;
- end
- end
- if(ticket_count < 3)then
- creature:GossipMenuAddItem(0, "Purchase Lottery Ticket", 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1)
- end
- end
- creature:GossipSendMenu(player)
- end
- local function LotteryGossipNpcSelect(event, player, creature, sender, intid)
- if (intid == GOSSIP_ACTION_INFO_DEF) then
- creature:GossipComplete(player)
- end
- if(intid == GOSSIP_ACTION_INFO_DEF+1)then
- --Check if the player has enough money
- if(player:GetMoney() < 100000)then
- creature:SendUnitSay("You do not have enough money to buy a lottery ticket!", 0)
- else
- --Subtract the money from the player
- player:ModifyMoney(-100000);
- --Generate the 6 lottery numbers
- local number1 = math.random(1, 32);
- local number2 = math.random(1, 32);
- local number3 = math.random(1, 32);
- local number4 = math.random(1, 32);
- local number5 = math.random(1, 32);
- local number6 = math.random(1, 32);
- --Get the current week number
- local week_number = WorldDBQuery("SELECT week_number FROM lottery ORDER BY week_number DESC LIMIT 1"):GetUInt32(0);
- --Insert the ticket into the database
- WorldDBQuery("INSERT INTO lottery_tickets (week_number, player_guid, player_account_id, number1, number2, number3, number4, number5, number6) VALUES ("..week_number..", "..player:GetGUIDLow()..", "..player:GetAccountId()..", "..number1..", "..number2..", "..number3..", "..number4..", "..number5..", "..number6..")");
- --Add the ticket to the players session
- local new_ticket = {
- ticket_id = WorldDBQuery("SELECT ticket_id FROM lottery_tickets ORDER BY ticket_id DESC LIMIT 1"):GetUInt32(0),
- week_number = week_number,
- player_guid = player:GetGUIDLow(),
- player_account_id = player:GetAccountId(),
- number1 = number1,
- number2 = number2,
- number3 = number3,
- number4 = number4,
- number5 = number5,
- number6 = number6
- }
- if (lottery_tickets[player:GetGUIDLow()] == nil) then
- lottery_tickets[player:GetGUIDLow()] = {}
- end
- lottery_tickets[player:GetGUIDLow()][new_ticket.ticket_id] = new_ticket;
- creature:SendUnitSay("Your lottery ticket has been purchased! Good luck!", 0)
- end
- end
- creature:GossipComplete(player)
- end
- RegisterCreatureGossipEvent(12345, 1, LotteryGossipNpc)
- RegisterCreatureGossipEvent(12345, 2, LotteryGossipNpcSelect)
Advertisement
Add Comment
Please, Sign In to add comment