SA-MP Forums Archive
Best way to define the Cards? - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Best way to define the Cards? (/showthread.php?tid=377929)



Best way to define the Cards? - Admigo - 15.09.2012

Heey all,

I want to define the cards from the casino like :Heart,Club,Spade and Diamond.
How can i define all the cards?


Admigo


Re: Best way to define the Cards? - Babul - 15.09.2012

Heart, Club, Spade, Diamond
x
Ace, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K
=
pawn Код:
new Card[4][13];
or do you mean assigning a value to them? like card=25 (with a max of 51), then

pawn Код:
Color=card/13;
Number=card%13;
25/13=1 (Club)
25%13=12 (King)


Re: Best way to define the Cards? - Admigo - 15.09.2012

Thanks for u repply.
How i check if someone has the card(playerid)?


Re: Best way to define the Cards? - Babul - 15.09.2012

if you dont mind, show me your script. its dead easy to add a check, however you scritped it so far ^^
did you already set a players card, any value? how many cards can a player hold? what game are you scripting?


Re: Best way to define the Cards? - Admigo - 15.09.2012

I didnt made something yet. First i need to make the cards. Then i need to make the pokerhands. I want to make Texas Hold Em.


Re: Best way to define the Cards? - Vince - 15.09.2012

With all due respect, but I don't think you'll be able to create such sophisticated script. I'd like to guard you against failure and disappointment.

I have tried to create a poker script like that, and believe me it's MUCH harder than you might think. The function to find out what hand a player has from any of 7 cards (5 on the table plus 2 in hand) alone is already 250 lines long, and yet I'm sure there are still unpatched holes in it.


Re: Best way to define the Cards? - Babul - 15.09.2012

ok, the best idea is to see the whole cardset as one array of values from 0 to 51. there are 4*13=52 cards, no joker in poker.. argh that rhymes.
the worthless "color" is the diamond, then increasing to heart, spade, club:
pawn Код:
#define CARDCOLOR_DIAMOND 0
#define CARDCOLOR_HEART 1
#define CARDCOLOR_SPADE 2
#define CARDCOLOR_CLUB 3
now you can work with those "multiplicators", or a fake 2nd array, to use the values 0-12 aswell.
CARDCOLOR_CLUB*13+1 is the ace indeed, where +12 is the king.

let each player hold 5 cards max:
pawn Код:
new PlayerCard[MAX_PLAYERS][5];
now you are facing the problem "how to spread cards to players without repeating a single card?"
to answer this question in advance: how do you do it irl? you take 52 cards,
pawn Код:
new CardsToMix[52]={0,1,...};
then you mix them
pawn Код:
new temp,swapposition;
for(new a=0;a<52;a++)
{
swapposition=random(52);
temp=CardsToMix[a];
CardsToMix[a]=CardsToMix[swapposition];
CardsToMix[swapposition]=temp;
}
now, since the cards are mixed, give each player one, while increasing the "pointer" to the card array by 1 each time..

if any questions arise, i think we all are glad to help :P

@Vince: i agree, poker is not that easy to script, i prefer (french) roulette ^^
scripting the rules "only" maybe is easier than we might think, but when it comes to a NPC opponent, then i would even place a wager on a fail.


Re: Best way to define the Cards? - burnuk - 15.09.2012

@vince i think it is possible, i know a server using a card system which can hold 5 cards each player.


Re: Best way to define the Cards? - Admigo - 15.09.2012

Quote:
Originally Posted by Vince
Посмотреть сообщение
With all due respect, but I don't think you'll be able to create such sophisticated script. I'd like to guard you against failure and disappointment.

I have tried to create a poker script like that, and believe me it's MUCH harder than you might think. The function to find out what hand a player has from any of 7 cards (5 on the table plus 2 in hand) alone is already 250 lines long, and yet I'm sure there are still unpatched holes in it.
You will not stop me from making this. I will not giving up making this script
EDIT: This is just the beginning.