/card command to draw a random card
#21
(07-23-2019, 04:11 PM)Conn Wrote: Big +Support

Really easy to do too, something like this?



Spoiler :
Code:
-- Command to print a random playing card
cityrp.command.add("card", "b", 0, function(ply)

   local suits = {"Spades", "Clubs", "Hearts", "Diamonds"}
   local value = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"}

   local card = table.Random(value) .. "of " .. table.Random(suits)

   -- output to players

end, "Commands", "<none>", "Picks a random card")

(basing it off Snowred's comment on https://www.fearlessrp.net/showthread.ph...light=code)




U have done the devs work for them
#22
(07-24-2019, 03:02 AM)Conn Wrote: Another possible solution, this time generating a deck with 1-6 packs of cards in. Obviously a bit of a guessing game and I haven't tested the main code (yet) on a sandbox, but it should work I think..



Spoiler :
Code:
local playerCards = {}


-- Command to create a set of 1-8 decks of playing cards
cityrp.command.add("deck", "b", 1, function(ply, arguments)

   local decksize = tonumber(arguments[1])

   if (!decksize or decksize < 1 or decksize > 8) then
       
       ply:Notify("Please choose a decksize between 1 and 8.", 1)    
       return
       
   end
   
   local suits = {"Spades", "Clubs", "Hearts", "Diamonds"}
   local values = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"}

   local deck = {}

   for i=1, decksize do
       
       for k, value in pairs(values) do
           
           for k, suit in pairs(suits) do  
                     
               table.insert(deck, value .. " of " .. suit)  
                     
           end   
                    
       end   
            
   end

   table.insert(playerCards, {ply, deck})
   ply:Notify("Deck generated!")

end, "Commands", "<1-8>", "Creates a pile of 1-8 card decks for casino games")

-- Command to print a random playing card from a generated deck
cityrp.command.add("card", "b", 0, function(ply)

   local deck = {}
   local index = 0
   for k,v in pairs(playerCards) do
       if (v[1] == ply) then
           deck = v[2]
           index = k
           break
       end
   end

   if (!deck or table.IsEmpty(deck)) then

       ply:Notify("You must generate a deck. Use /deck <1-8>", 1)
       return
       
   end

   local card, index = table.Random(deck)
   table.remove(playerCards,index)
   table.insert(playerCards, index, {ply, deck})

   ply:ConCommand("cityrp me drew " .. card)

end, "Commands", "<none>", "Picks a random card from the deck")

Changed a bit with Devon, should work Smile



Would it be possible to have something for poker too? Maybe a system where cards could be PM'd instead?
 
[Image: jUcv1hb.png]
 
#23
(07-25-2019, 07:22 PM)Lewwings Wrote:
(07-24-2019, 03:02 AM)Conn Wrote: Another possible solution, this time generating a deck with 1-6 packs of cards in. Obviously a bit of a guessing game and I haven't tested the main code (yet) on a sandbox, but it should work I think..



Spoiler :
Code:
local playerCards = {}


-- Command to create a set of 1-8 decks of playing cards
cityrp.command.add("deck", "b", 1, function(ply, arguments)

   local decksize = tonumber(arguments[1])

   if (!decksize or decksize < 1 or decksize > 8) then
       
       ply:Notify("Please choose a decksize between 1 and 8.", 1)    
       return
       
   end
   
   local suits = {"Spades", "Clubs", "Hearts", "Diamonds"}
   local values = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"}

   local deck = {}

   for i=1, decksize do
       
       for k, value in pairs(values) do
           
           for k, suit in pairs(suits) do  
                     
               table.insert(deck, value .. " of " .. suit)  
                     
           end   
                    
       end   
            
   end

   table.insert(playerCards, {ply, deck})
   ply:Notify("Deck generated!")

end, "Commands", "<1-8>", "Creates a pile of 1-8 card decks for casino games")

-- Command to print a random playing card from a generated deck
cityrp.command.add("card", "b", 0, function(ply)

   local deck = {}
   local index = 0
   for k,v in pairs(playerCards) do
       if (v[1] == ply) then
           deck = v[2]
           index = k
           break
       end
   end

   if (!deck or table.IsEmpty(deck)) then

       ply:Notify("You must generate a deck. Use /deck <1-8>", 1)
       return
       
   end

   local card, index = table.Random(deck)
   table.remove(playerCards,index)
   table.insert(playerCards, index, {ply, deck})

   ply:ConCommand("cityrp me drew " .. card)

end, "Commands", "<none>", "Picks a random card from the deck")

Changed a bit with Devon, should work Smile



Would it be possible to have something for poker too? Maybe a system where cards could be PM'd instead?




Spoiler :

Code:
local playerCards = {}


-- Command to create a set of 1-8 decks of playing cards
cityrp.command.add("deck", "b", 1, function(ply, arguments)

   local decksize = tonumber(arguments[1])

   if (!decksize or decksize < 1 or decksize > 8) then
       
       ply:Notify("Please choose a decksize between 1 and 8.", 1)    
       return
       
   end
   
   local suits = {"Spades", "Clubs", "Hearts", "Diamonds"}
   local values = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"}

   local deck = {}

   for i=1, decksize do
       
       for k, value in pairs(values) do
           
           for k, suit in pairs(suits) do  
                     
               table.insert(deck, value .. " of " .. suit)  
                     
           end   
                    
       end   
            
   end

   table.insert(playerCards, {ply, deck})
   ply:Notify("Deck generated!")

end, "Commands", "<1-8>", "Creates a pile of 1-8 card decks for casino games")

-- Command to print a random playing card from a generated deck
cityrp.command.add("card", "b", 0, function(ply)

   local deck = {}
   local index = 0
   for k,v in pairs(playerCards) do
       if (v[1] == ply) then
           deck = v[2]
           index = k
           break
       end
   end

   if (!deck or table.IsEmpty(deck)) then

       ply:Notify("You must generate a deck. Use /deck <1-8>", 1)
       return
       
   end

   local card, index = table.Random(deck)
   table.remove(playerCards,index)
   table.insert(playerCards, index, {ply, deck})

   ply:ConCommand("cityrp me drew " .. card)

end, "Commands", "<none>", "Picks a random card from the deck")

-- Command to PM a random playing card from a generated deck


cityrp.command.add("pcard", "b", 1, function(ply, arguments)

    local target = arguments[1] -- validation here to ensure target is a player on server

   local deck = {}
   local index = 0
   for k,v in pairs(playerCards) do
       if (v[1] == ply) then
           deck = v[2]
           index = k
           break
       end
   end

   if (!deck or table.IsEmpty(deck)) then

       ply:Notify("You must generate a deck. Use /deck <1-8>", 1)
       return
      
   end

   local card, index = table.Random(deck)
   table.remove(playerCards,index)
   table.insert(playerCards, index, {ply, deck})

   ply:ConCommand("cityrp pm " .. target .. " Card: " .. card)

end, "Commands", "<player>", "PMs a random card from the deck")





Add the validation (commented where in pcard function) and that should work
Regards,
Connnnnnnn

Consider giving me a rep point here.

The following 1 user Likes Conn's post:
  • Lewwings
#24
(07-25-2019, 07:22 PM)Lewwings Wrote:
(07-24-2019, 03:02 AM)Conn Wrote: Another possible solution, this time generating a deck with 1-6 packs of cards in. Obviously a bit of a guessing game and I haven't tested the main code (yet) on a sandbox, but it should work I think..



Spoiler :
Code:
local playerCards = {}


-- Command to create a set of 1-8 decks of playing cards
cityrp.command.add("deck", "b", 1, function(ply, arguments)

   local decksize = tonumber(arguments[1])

   if (!decksize or decksize < 1 or decksize > 8) then
       
       ply:Notify("Please choose a decksize between 1 and 8.", 1)    
       return
       
   end
   
   local suits = {"Spades", "Clubs", "Hearts", "Diamonds"}
   local values = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"}

   local deck = {}

   for i=1, decksize do
       
       for k, value in pairs(values) do
           
           for k, suit in pairs(suits) do  
                     
               table.insert(deck, value .. " of " .. suit)  
                     
           end   
                    
       end   
            
   end

   table.insert(playerCards, {ply, deck})
   ply:Notify("Deck generated!")

end, "Commands", "<1-8>", "Creates a pile of 1-8 card decks for casino games")

-- Command to print a random playing card from a generated deck
cityrp.command.add("card", "b", 0, function(ply)

   local deck = {}
   local index = 0
   for k,v in pairs(playerCards) do
       if (v[1] == ply) then
           deck = v[2]
           index = k
           break
       end
   end

   if (!deck or table.IsEmpty(deck)) then

       ply:Notify("You must generate a deck. Use /deck <1-8>", 1)
       return
       
   end

   local card, index = table.Random(deck)
   table.remove(playerCards,index)
   table.insert(playerCards, index, {ply, deck})

   ply:ConCommand("cityrp me drew " .. card)

end, "Commands", "<none>", "Picks a random card from the deck")

Changed a bit with Devon, should work Smile



Would it be possible to have something for poker too? Maybe a system where cards could be PM'd instead?
Yes please
#25
this aint gambling rp

-support
#26
Approved.
#27
done


Forum Jump:


Users browsing this thread: 1 Guest(s)