Add poker plugin to git
This commit is contained in:
parent
904ba4ccc2
commit
646feb78cd
60
plugins/TPoker.cpp
Normal file
60
plugins/TPoker.cpp
Normal file
@ -0,0 +1,60 @@
|
||||
/*
|
||||
native calculate_hand_worth(const hands[], count = sizeof(hands));
|
||||
|
||||
* hands[]: an array containing the cards to analyze (between 1 to 7 cards)
|
||||
* count: the number of cards to analyze (between 1 to 7 cards)
|
||||
*/
|
||||
|
||||
static cell AMX_NATIVE_CALL n_calculate_hand_worth(AMX *amx, cell *params)
|
||||
{
|
||||
cell
|
||||
*addr = nullptr;
|
||||
|
||||
amx_GetAddr(amx, params[1], &addr);
|
||||
if (addr == nullptr)
|
||||
{
|
||||
logprintf("[TPoker] The first parameter passed to calculate_hand_rank was invalid.");
|
||||
return -1;
|
||||
}
|
||||
|
||||
const size_t len = static_cast<size_t>(params[2]);
|
||||
if (len > 7 || len < 1)
|
||||
{
|
||||
logprintf("[TPoker] The count argument passed to calculate_hand_rank was invalid.");
|
||||
return -1;
|
||||
}
|
||||
|
||||
HandEvaluator eval;
|
||||
Hand h = Hand::empty();
|
||||
for (size_t i = 0; i < len; i++)
|
||||
{
|
||||
if (addr[i] < 0 || addr[i] > 51)
|
||||
{
|
||||
logprintf("[TPoker] Invalid hand passed to calculate_hand_rank, value: %d", static_cast<int>(addr[i]));
|
||||
return -1;
|
||||
}
|
||||
h += Hand(static_cast<unsigned int>(addr[i]));
|
||||
}
|
||||
|
||||
cell rank = static_cast<cell>(eval.evaluate(h));
|
||||
|
||||
//Royal flush
|
||||
if ((rank >> 12 == 9) && len >= 5)
|
||||
{
|
||||
bool has_ace = false, has_k = false;
|
||||
for (size_t i = 0; i < len; i++)
|
||||
{
|
||||
if (params[i] == 48 || params[i] == 49 || params[i] == 50 || params[i] == 51)
|
||||
has_ace = true;
|
||||
|
||||
if (params[i] == 44 || params[i] == 45 || params[i] == 46 || params[i] == 47)
|
||||
has_k = true;
|
||||
|
||||
if (has_k && has_ace) {
|
||||
rank = 0xA000; //10 << 12
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return rank;
|
||||
}
|
BIN
plugins/TPoker.dll
Normal file
BIN
plugins/TPoker.dll
Normal file
Binary file not shown.
BIN
plugins/TPoker.so
Normal file
BIN
plugins/TPoker.so
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user