09.02.2014, 07:04
Its ok I should have uploaded it as a file anyway
The hardest bit about this was the checking of a players "hand" for poker:
The hardest bit about this was the checking of a players "hand" for poker:
pawn Code:
cPoker_checkGame(playerid) {
new suit_a = cPoker_checkGameContains(playerid, CARD_ACE, CARD_TYPE_NONE, CPOKER_CHECKMODE_CARDSUIT);
////printf("suit_a: %i", suit_a);
new suit_2 = cPoker_checkGameContains(playerid, 2, CARD_TYPE_NONE, CPOKER_CHECKMODE_CARDSUIT);
////printf("suit_2: %i", suit_2);
new suit_3 = cPoker_checkGameContains(playerid, 3, CARD_TYPE_NONE, CPOKER_CHECKMODE_CARDSUIT);
////printf("suit_3: %i", suit_3);
new suit_4 = cPoker_checkGameContains(playerid, 4, CARD_TYPE_NONE, CPOKER_CHECKMODE_CARDSUIT);
////printf("suit_4: %i", suit_4);
new suit_5 = cPoker_checkGameContains(playerid, 5, CARD_TYPE_NONE, CPOKER_CHECKMODE_CARDSUIT);
////printf("suit_5: %i", suit_5);
if (c_suitsEqual(suit_a,suit_2,suit_3,suit_4,suit_5)) {
////print("CHECK_ROYALFLUSH");
return CHECK_ROYALFLUSH;
}
new suit_10 = cPoker_checkGameContains(playerid, 10, CARD_TYPE_NONE, CPOKER_CHECKMODE_CARDSUIT);
////printf("suit_10: %i", suit_10);
new suit_j = cPoker_checkGameContains(playerid, CARD_JACK, CARD_TYPE_NONE, CPOKER_CHECKMODE_CARDSUIT);
////printf("suit_j: %i", suit_j);
new suit_q = cPoker_checkGameContains(playerid, CARD_QUEEN, CARD_TYPE_NONE, CPOKER_CHECKMODE_CARDSUIT);
////printf("suit_q: %i", suit_q);
new suit_k = cPoker_checkGameContains(playerid, CARD_KING, CARD_TYPE_NONE, CPOKER_CHECKMODE_CARDSUIT);
////printf("suit_k: %i", suit_k);
if (c_suitsEqual(suit_10,suit_j,suit_q,suit_k,suit_a)) {
////print("CHECK_ROYALFLUSH");
return CHECK_ROYALFLUSH;
}
new suit_6 = cPoker_checkGameContains(playerid, 6, CARD_TYPE_NONE, CPOKER_CHECKMODE_CARDSUIT);
////printf("suit_6: %i", suit_6);
new suit_7 = cPoker_checkGameContains(playerid, 7, CARD_TYPE_NONE, CPOKER_CHECKMODE_CARDSUIT);
////printf("suit_7: %i", suit_7);
new suit_8 = cPoker_checkGameContains(playerid, 8, CARD_TYPE_NONE, CPOKER_CHECKMODE_CARDSUIT);
////printf("suit_8: %i", suit_8);
new suit_9 = cPoker_checkGameContains(playerid, 9, CARD_TYPE_NONE, CPOKER_CHECKMODE_CARDSUIT);
////printf("suit_9: %i", suit_9);
////print("CHECK_STRAIGHTFLUSH - START");
if (c_suitsEqual(suit_2,suit_3,suit_4,suit_5,suit_6)) {
return CHECK_STRAIGHTFLUSH;
} else if (c_suitsEqual(suit_3,suit_4,suit_5,suit_6,suit_7)) {
return CHECK_STRAIGHTFLUSH;
} else if (c_suitsEqual(suit_4,suit_5,suit_6,suit_7,suit_8)) {
return CHECK_STRAIGHTFLUSH;
} else if (c_suitsEqual(suit_5,suit_6,suit_7,suit_8,suit_9)) {
return CHECK_STRAIGHTFLUSH;
} else if (c_suitsEqual(suit_6,suit_7,suit_8,suit_9,suit_10)) {
return CHECK_STRAIGHTFLUSH;
} else if (c_suitsEqual(suit_7,suit_8,suit_9,suit_10,suit_j)) {
return CHECK_STRAIGHTFLUSH;
} else if (c_suitsEqual(suit_8,suit_9,suit_10,suit_j,suit_q)) {
return CHECK_STRAIGHTFLUSH;
} else if (c_suitsEqual(suit_9,suit_10,suit_j,suit_q,suit_k)) {
return CHECK_STRAIGHTFLUSH;
}
////print("CHECK_STRAIGHTFLUSH - END");
new countC[13];
////print("CHECK_FOUROFAKIND - START");
for (new _c=0; _c<5; _c++) {
new _n = cPokerGame[playerid][_c][1];
////printf("_n: %i", _n);
countC[_n-1]++;
if (countC[_n-1]==4) {
////print("CHECK_FOUROFAKIND");
return CHECK_FOUROFAKIND;
}
}
////print("CHECK_FOUROFAKIND - END");
////print("CHECK_FULLHOUSE - START");
for (new _card=1; _card<=13; _card++) {
if (countC[_card-1]==3) {
for (new _subCard=1; _subCard<=13; _subCard++) {
if (_subCard != _card) {
if (countC[_subCard-1]==2) {
//print("CHECK_FULLHOUSE");
return CHECK_FULLHOUSE;
}
}
}
}
}
////print("CHECK_FULLHOUSE - END");
if (c_Equal(cPokerGame[playerid][0][0],cPokerGame[playerid][1][0],cPokerGame[playerid][2][0],cPokerGame[playerid][3][0],cPokerGame[playerid][4][0])) {
////print("CHECK_FLUSH");
return CHECK_FLUSH;
}
////print("CHECK_STRAIGHT - START");
if (c_anySuits(suit_a,suit_2,suit_3,suit_4,suit_5)) {
return CHECK_STRAIGHT;
} else if (c_anySuits(suit_2,suit_3,suit_4,suit_5,suit_6)) {
return CHECK_STRAIGHT;
} else if (c_anySuits(suit_3,suit_4,suit_5,suit_6,suit_7)) {
return CHECK_STRAIGHT;
} else if (c_anySuits(suit_4,suit_5,suit_6,suit_7,suit_8)) {
return CHECK_STRAIGHT;
} else if (c_anySuits(suit_5,suit_6,suit_7,suit_8,suit_9)) {
return CHECK_STRAIGHT;
} else if (c_anySuits(suit_6,suit_7,suit_8,suit_9,suit_10)) {
return CHECK_STRAIGHT;
} else if (c_anySuits(suit_7,suit_8,suit_9,suit_10,suit_j)) {
return CHECK_STRAIGHT;
} else if (c_anySuits(suit_8,suit_9,suit_10,suit_j,suit_q)) {
return CHECK_STRAIGHT;
} else if (c_anySuits(suit_9,suit_10,suit_j,suit_q,suit_k)) {
return CHECK_STRAIGHT;
} else if (c_anySuits(suit_10,suit_j,suit_q,suit_k,suit_a)) {
return CHECK_STRAIGHT;
}
////print("CHECK_STRAIGHT - END");
////print("CHECK_THREEOFAKIND - START");
for (new _card=1; _card<=13; _card++) {
if (countC[_card-1]==3) {
for (new _subCard=1; _subCard<=13; _subCard++) {
if (_subCard != _card) {
if (countC[_subCard-1]==1) {
for (new _subSubCard=1; _subSubCard<=13; _subSubCard++) {
if (_subCard != _card && _subSubCard != _card && _subCard != _subSubCard) {
if (countC[_subSubCard-1]==1) {
return CHECK_THREEOFAKIND;
}
}
}
}
}
}
}
}
////print("CHECK_THREEOFAKIND - END");
////print("CHECK_TWOPAIRS - START");
for (new _card=1; _card<=13; _card++) {
////printf("_card: %i", _card);
if (countC[_card-1]==2) {
////printf("countC[_card-1]: %i", countC[_card-1]);
for (new _subCard=1; _subCard<=13; _subCard++) {
////printf("_subCard: %i", _subCard);
if (_subCard != _card) {
if (countC[_subCard-1]==2) {
////printf("countC[_subCard-1]: %i", countC[_subCard-1]);
return CHECK_TWOPAIRS;
}
}
}
}
}
////print("CHECK_TWOPAIRS - END");
////print("CHECK_JACKORBETTER - START");
for (new _c=0; _c<5; _c++) {
new _c_v = cPokerGame[playerid][_c][1];
if (_c_v >= CARD_JACK || _c_v == CARD_ACE) {
return CHECK_JACKORBETTER;
}
}
////print("CHECK_JACKORBETTER - END");
return CHECK_NONE;
}