Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Nova´s Texas Holde´m Poker System
- © 2014
- Scripted by RFT (Julian Glatter)
- */
- #include <a_samp>
- #define Max_Poker_Tables 20
- enum os{
- oModel,
- Float: oX,
- Float: oY,
- Float: oZ,
- Float: orX,
- Float: orY,
- Float: orZ,
- }
- new PokerOffSets[78][os]={
- {1212, -0.487201, 1.078857, 0.506158, 0.000000, 0.000000, -324.753448},
- {1212, 0.653228, 0.365478, 0.506158, 0.000000, 0.000000, 0.000000},
- {1212, -0.473972, 0.192993, 0.506158, 0.000000, 0.000000, 0.000000},
- {1212, -0.472270, 0.044433, 0.506158, 0.000000, 0.000000, 0.000000},
- {1212, -0.472572, 0.118652, 0.506158, 0.000000, 0.000000, 0.000000},
- {1212, -0.474472, 0.268432, 0.506158, 0.000000, 0.000000, 0.000000},
- {1667, 0.203899, 1.196655, 0.617460, 0.000000, 0.000000, -332.392669},
- {1901, -0.598701, 0.867309, 0.413909, 0.000000, 0.000000, 0.000000},
- {1902, -0.600032, 0.942382, 0.433010, 0.000000, 0.000000, 0.000000},
- {1911, -0.595333, 1.007812, 0.495079, 0.000000, 0.000000, 0.000000},
- {1921, -0.651702, 1.000000, 0.459320, 0.000000, 0.000000, 0.000000},
- {1901, -0.658641, 0.911010, 0.435249, 0.000000, 0.000000, 0.000000},
- {1212, 0.661029, -0.548339, 0.506158, 0.000000, 0.000000, 0.000000},
- {1212, 0.499538, 1.117187, 0.506158, 0.000000, 0.000000, -230.849685},
- {1212, 0.278636, -1.272460, 0.506158, 0.000000, 0.000000, -305.436767},
- {1212, -0.548690, -1.079345, 0.506158, 0.000000, 0.000000, -242.972198},
- {1667, -0.620491, 0.761840, 0.617460, 0.000000, 0.000000, -343.601013},
- {1667, 0.373397, -1.008911, 0.617460, 0.000000, 0.000000, -340.776672},
- {1911, 0.436790, 1.173461, 0.495079, 0.000000, 0.000000, 0.000000},
- {1921, 0.412567, 1.262817, 0.459320, 0.000000, 0.000000, 0.000000},
- {1902, 0.370037, 1.172729, 0.433010, 0.000000, 0.000000, 0.000000},
- {1901, 0.354228, 1.239257, 0.435249, 0.000000, 0.000000, 0.000000},
- {1901, 0.300590, 1.221435, 0.413909, 0.000000, 0.000000, 0.000000},
- {1911, 0.672260, 0.432373, 0.495079, 0.000000, 0.000000, 0.000000},
- {1921, 0.710227, 0.501464, 0.459320, 0.000000, 0.000000, 0.000000},
- {1902, 0.666530, 0.499267, 0.433010, 0.000000, 0.000000, 0.000000},
- {1901, 0.719818, 0.520996, 0.435249, 0.000000, 0.000000, 0.000000},
- {1901, 0.685749, 0.559692, 0.413909, 0.000000, 0.000000, 0.000000},
- {1667, 0.589717, 0.598022, 0.617460, 0.000000, 0.000000, -289.523590},
- {1667, 0.588230, -0.141845, 0.617460, 0.000000, 0.000000, -289.523590},
- {1911, 0.666728, -0.472900, 0.495079, 0.000000, 0.000000, 0.000000},
- {1921, 0.704708, -0.404907, 0.459320, 0.000000, 0.000000, 0.000000},
- {1902, 0.647270, -0.420776, 0.433010, 0.000000, 0.000000, 0.000000},
- {1901, 0.686038, -0.385498, 0.435249, 0.000000, 0.000000, 0.000000},
- {1901, 0.638179, -0.361206, 0.413909, 0.000000, 0.000000, 0.000000},
- {1911, 0.353279, -1.233276, 0.495079, 0.000000, 0.000000, 0.000000},
- {1921, 0.408168, -1.205932, 0.459320, 0.000000, 0.000000, 0.000000},
- {1902, 0.382400, -1.179443, 0.433010, 0.000000, 0.000000, 0.000000},
- {1901, 0.440288, -1.184570, 0.435249, 0.000000, 0.000000, 0.000000},
- {1901, 0.417129, -1.128784, 0.413909, 0.000000, 0.000000, 0.000000},
- {1911, -0.442729, -1.170043, 0.495079, 0.000000, 0.000000, 0.000000},
- {1921, -0.412002, -1.196899, 0.459320, 0.000000, 0.000000, 0.000000},
- {1902, -0.368320, -1.178100, 0.433010, 0.000000, 0.000000, 0.000000},
- {1901, -0.341960, -1.238891, 0.435249, 0.000000, 0.000000, 0.000000},
- {1901, -0.295372, -1.201293, 0.413909, 0.000000, 0.000000, 0.000000},
- {1667, -0.216220, -1.159301, 0.617460, 0.000000, 0.000000, -287.130035},
- {1212, -0.473171, -0.030273, 0.506158, 0.000000, 0.000000, 0.000000},
- {1212, -0.473171, -0.104248, 0.506158, 0.000000, 0.000000, 0.000000},
- {1212, -0.473171, -0.180297, 0.506158, 0.000000, 0.000000, 0.000000},
- {1212, -0.473171, -0.254272, 0.506158, 0.000000, 0.000000, 0.000000},
- {1212, -0.473171, -0.328247, 0.506158, 0.000000, 0.000000, 0.000000},
- {1212, -0.473171, -0.402221, 0.506158, 0.000000, 0.000000, 0.000000},
- {1212, -0.473171, -0.476196, 0.506158, 0.000000, 0.000000, 0.000000},
- {1212, -0.473171, -0.402221, 0.578159, 0.000000, 0.000000, 0.000000},
- {1212, -0.473171, -0.326171, 0.578159, 0.000000, 0.000000, 0.000000},
- {1212, -0.473171, -0.250244, 0.578159, 0.000000, 0.000000, 0.000000},
- {1212, -0.473171, -0.176147, 0.578159, 0.000000, 0.000000, 0.000000},
- {1212, -0.473171, -0.102050, 0.578159, 0.000000, 0.000000, 0.000000},
- {1212, -0.473171, -0.028076, 0.578159, 0.000000, 0.000000, 0.000000},
- {1212, -0.473171, 0.045898, 0.578159, 0.000000, 0.000000, 0.000000},
- {1212, -0.473171, 0.121948, 0.578159, 0.000000, 0.000000, 0.000000},
- {1212, -0.473171, 0.197875, 0.578159, 0.000000, 0.000000, 0.000000},
- {1212, -0.473171, 0.121948, 0.652158, 0.000000, 0.000000, 0.000000},
- {1212, -0.473171, 0.047851, 0.652158, 0.000000, 0.000000, 0.000000},
- {1212, -0.473171, -0.026245, 0.652158, 0.000000, 0.000000, 0.000000},
- {1212, -0.473171, -0.100219, 0.652158, 0.000000, 0.000000, 0.000000},
- {1212, -0.473171, -0.176147, 0.652158, 0.000000, 0.000000, 0.000000},
- {1212, -0.473171, -0.252075, 0.652158, 0.000000, 0.000000, 0.000000},
- {1212, -0.473171, -0.328125, 0.652158, 0.000000, 0.000000, 0.000000},
- {1212, -0.473171, -0.100219, 0.674160, 0.000000, 0.000000, -280.346191},
- {1212, -0.407302, -0.224243, 0.558029, 80.500000, 0.000000, -269.473205},
- {1212, -0.414550, 0.045043, 0.558029, 80.500000, 0.000000, -274.948455},
- {2079, 1.211769, 0.260375, 0.000040, 0.000000, 0.000000, 0.000000},
- {2079, 1.268947, -1.035522, 0.000040, 0.000000, 0.000000, 0.000000},
- {2079, 0.403408, 1.535644, 0.000040, 0.000000, 0.000000, -290.773254},
- {2079, -1.137580, 1.322265, 0.000040, 0.000000, 0.000000, -230.904922},
- {2079, 0.692508, -1.733520, 0.000040, 0.000000, 0.000000, -48.198680},
- {2079, -0.841171, -1.285522, 0.000040, 0.000000, 0.000000, -130.504364}
- };
- enum pkTables
- {
- pkObjects[79],
- Float: pkX,
- Float: pkY,
- Float: pkZ,
- Float: pkR,
- pkPot,
- pkPlayers[6],
- bool: pkUsed,
- bool: pkExist,
- }
- new PokerTables[Max_Poker_Tables][pkTables];
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" Nova´s Texas Holde´m Poker ");
- print(" Version 1.0.0 © by RFT");
- print("--------------------------------------\n");
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- new cmd[128], tmp[128], string[128], idx;
- cmd = strtok(cmdtext, idx);
- if(strcmp(cmd, "/cPokerTable", true) == 0)
- {
- new id = GetFreePokerTableSlot();
- if(id != -1)
- {
- new Float: X, Float: Y, Float: Z, Float: R;
- GetPlayerPos(playerid, X, Y, Z);
- GetPlayerFacingAngle(playerid, R);
- Z -= 0.4;
- PokerTables[id][pkExist] = true;
- PokerTables[id][pkX] = X;
- PokerTables[id][pkY] = Y;
- PokerTables[id][pkZ] = Z;
- PokerTables[id][pkR] = R;
- for(new i = 0; i < 6; i++)
- {
- PokerTables[id][pkPlayers][0] = -1;
- }
- PokerTables[id][pkObjects][0] = CreateObject(19474, X, Y, Z, 0.0, 0.0, R);
- for(new i = 0; i < 78; i++)
- {
- new Float: X2 = floatsin(-R,degrees) * PokerOffSets[i][oY] + floatcos(-R,degrees) * PokerOffSets[i][oX] + X;
- new Float: Y2 = floatcos(-R,degrees) * PokerOffSets[i][oY] - floatsin(-R,degrees) * PokerOffSets[i][oX] + Y;
- if(PokerOffSets[i][oModel] == 1212)
- {
- continue;
- }
- else
- {
- PokerTables[id][pkObjects][i+1] = CreateObject(PokerOffSets[i][oModel],X2, Y2, Z+PokerOffSets[i][oZ], 0.0, 0.0, R + PokerOffSets[i][orZ]);
- }
- }
- format(string, sizeof(string), "Info: Du hast ein Poker Tisch erstellt (ID: %d)", id);
- SendClientMessage(playerid, 0xF97804FF, string);
- return 1;
- }
- else
- {
- SendClientMessage(playerid, 0xEB0606AA, "Info: Es sind keine Slots mehr vorhanden. Der Poker Tisch konnte nicht erstellt werden.");
- return 1;
- }
- }
- if(strcmp(cmd, "/dPokerTable", true) == 0)
- {
- if(CountPokerTables() >= 1)
- {
- tmp = strtok(cmdtext, idx);
- if(!tmp[0])return SendClientMessage(playerid, 0xFFFFFFAA, "Verwendung: /dPokerTable [PokerTisch ID]");
- new id = strval(tmp);
- if(PokerTables[id][pkExist] == true)
- {
- PokerTables[id][pkExist] = false;
- for(new i = 0; i < 79; i++)
- {
- DestroyObject(PokerTables[id][pkObjects][i]);
- }
- format(string, sizeof(string), "Info: Du hast Poker Tisch (ID: %d) erfolgreich gelöscht.", id); format(string, sizeof(string), "Info: Du hast ein Poker Tisch erstellt (ID: %d)", id);
- SendClientMessage(playerid, 0xF97804FF, string);
- return 1;
- }
- else
- {
- format(string, sizeof(string), "Info: Poker Tisch ID: %d exestiert nicht.", id);
- SendClientMessage(playerid, 0xEB0606AA, "Info: Es sind keine Pokertische vorhanden.");
- return 1;
- }
- }
- else
- {
- SendClientMessage(playerid, 0xEB0606AA, "Info: Es sind keine Pokertische vorhanden.");
- return 1;
- }
- }
- if(strcmp(cmd, "/startpoker", true) == 0)
- {
- if(!GetPVarInt(playerid, "StartedPoker"))
- {
- new id = IsPlayerAtPokerTable(playerid);
- if(id != -1)
- {
- if(PokerTables[id][pkUsed] == false)
- {
- tmp = strtok(cmdtext, idx);
- if(!tmp[0])return SendClientMessage(playerid, 0xFFFFFFAA, "Verwendung: /StartPoker [Einsatz]");
- new Pot = strval(tmp);
- if(Pot < 1 || Pot > 1000000)
- {
- SendClientMessage(playerid, 0xEB0606AA, "Info: Der Einsatz darf nicht unter 1$ und nicht über 1000000$ sein.");
- return 1;
- }
- if(GetPlayerMoney(playerid) >= Pot)
- {
- PokerTables[id][pkPlayers][0] = playerid;
- PokerTables[id][pkUsed] = true;
- PokerTables[id][pkPot] = Pot;
- format(string, sizeof(string), "Info: Du hast eine Poker Runde eröffnet (Einsatz: %d$). Du kannst mit /invitepoker mitspieler einladen.", Pot);
- SendClientMessage(playerid, 0xF97804FF, string);
- SendClientMessage(playerid, 0xF97804FF, "Info: Um die Pokerrunde starten zu können benötigst du mindestens 1 Mitspieler.");
- SendClientMessage(playerid, 0xF97804FF, "Info: Du kannst maximal 6 Spieler einladen. Wenn du ein Spieler eingeladen hast kannst du die Runde mit /Startpoker starten.");
- SetPVarInt(playerid, "StartedPoker", 1);
- return 1;
- }
- else
- {
- SendClientMessage(playerid, 0xEB0606AA, "Info: Soviel Geld besitzt du nicht auf deiner Hand.");
- return 1;
- }
- }
- else
- {
- SendClientMessage(playerid, 0xEB0606AA, "Info: Dieser Pokertisch wird leider schon verwendet.");
- return 1;
- }
- }
- else
- {
- SendClientMessage(playerid, 0xEB0606AA, "Info: Du befindest dich an keinem Pokertisch.");
- return 1;
- }
- }
- else
- {
- }
- }
- if(strcmp(cmd, "/InvitePoker", true) == 0)
- {
- if(GetPVarInt(playerid, "StartedPoker"))
- {
- tmp = strtok(cmdtext, idx);
- if(!tmp[0])return SendClientMessage(playerid, 0xFFFFFFAA, "Verwendung: /InvitePoker [Playerid/Name]");
- new pID = ReturnUser(tmp);
- if(IsPlayerConnected(pID))
- {
- if(IsPlayerAtPlayer(playerid, pID))
- {
- if(GetPlayerPokerTable(playerid) == GetPlayerPokerTable(pID))
- {
- SendClientMessage(playerid, 0xEB0606AA, "Info: Dieser Spieler ist bereits mitspieler ein deiner Pokerrunde.");
- return 1;
- }
- if(GetPlayerPokerTable(pID) != -1)
- {
- }
- else
- {
- SendClientMessage(playerid, 0xEB0606AA, "Info: Dieser Spieler spielt bereits in einer anderen Pokerrunde");
- return 1;
- }
- }
- else
- {
- SendClientMessage(playerid, 0xEB0606AA, "Info: Dieser Spieler befindet sich nicht in deiner nähe.");
- return 1;
- }
- }
- else
- {
- SendClientMessage(playerid, 0xEB0606AA, "Info: Dieser Spieler ist nicht online.");
- return 1;
- }
- }
- else
- {
- SendClientMessage(playerid, 0xEB0606AA, "Info: Du hast keine Pokerrunde gestartet.");
- return 1;
- }
- }
- if(strcmp(cmd, "/tc", true) == 0)
- {
- new Float: X = GetPVarFloat(playerid, "X");
- new Float: Y = GetPVarFloat(playerid, "Y");
- new Float: Z = GetPVarFloat(playerid, "Z");
- new Float: R = GetPVarFloat(playerid, "R");
- CameraRadiusSetPos(playerid, X, Y, Z, (R-90.0), 2.7, 0.1);
- for(new i = 0; i< 10; i++)
- {
- SendClientMessage(playerid, 0x000000FF, " ");
- }
- return 1;
- }
- return 0;
- }
- public OnPlayerSelectedMenuRow(playerid, row)
- {
- return 1;
- }
- public OnPlayerExitedMenu(playerid)
- {
- return 1;
- }
- public OnPlayerUpdate(playerid)
- {
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- return 1;
- }
- stock strtok(const string[], &index,seperator=' ')
- {
- new length = strlen(string);
- new offset = index;
- new result[128];
- while ((index < length) && (string[index] != seperator) && ((index - offset) < (sizeof(result) - 1)))
- {
- result[index - offset] = string[index];
- index++;
- }
- result[index - offset] = EOS;
- if ((index < length) && (string[index] == seperator))
- {
- index++;
- }
- return result;
- }
- stock split(const strsrc[], strdest[][], delimiter)
- {
- new i, li;
- new aNum;
- new len;
- while(i <= strlen(strsrc))
- {
- if(strsrc[i] == delimiter || i == strlen(strsrc))
- {
- len = strmid(strdest[aNum], strsrc, li, i, 128);
- strdest[aNum][len] = 0;
- li = i+1;
- aNum++;
- }
- i++;
- }
- return 1;
- }
- stock ReturnUser(text[], playerid = INVALID_PLAYER_ID)
- {
- new pos = 0;
- while (text[pos] < 0x21)
- {
- if (text[pos] == 0) return INVALID_PLAYER_ID;
- pos++;
- }
- new userid = INVALID_PLAYER_ID;
- if (IsNumeric(text[pos]))
- {
- userid = strval(text[pos]);
- if (userid >=0 && userid < MAX_PLAYERS)
- {
- if(!IsPlayerConnected(userid))
- {
- userid = INVALID_PLAYER_ID;
- }
- else
- {
- return userid;
- }
- }
- }
- new len = strlen(text[pos]);
- new count = 0;
- new name[MAX_PLAYER_NAME];
- for (new i = 0; i < MAX_PLAYERS; i++)
- {
- if (IsPlayerConnected(i))
- {
- GetPlayerName(i, name, sizeof (name));
- if (strcmp(name, text[pos], true, len) == 0)
- {
- if (len == strlen(name))
- {
- return i;
- }
- else
- {
- count++;
- userid = i;
- }
- }
- }
- }
- if (count != 1)
- {
- if (playerid != INVALID_PLAYER_ID)
- {
- if (count)
- {
- SendClientMessage(playerid, 0xFF0000AA, "Multiple users found, please narrow earch");
- }
- else
- {
- SendClientMessage(playerid, 0xFF0000AA, "No matching user found");
- }
- }
- userid = INVALID_PLAYER_ID;
- }
- return userid; // INVALID_USER_ID for bad return
- }
- stock IsNumeric(const string[])
- {
- for (new i = 0, j = strlen(string); i < j; i++)
- {
- if (string[i] > '9' || string[i] < '0') return 0;
- }
- return 1;
- }
- CameraRadiusSetPos(playerid, Float:x, Float:y, Float:z, Float:degree = 0.0, Float:height = 3.0, Float:radius = 8.0)
- {
- new Float:deltaToX = x + radius * floatsin(-degree, degrees);
- new Float:deltaToY = y + radius * floatcos(-degree, degrees);
- new Float:deltaToZ = z + height;
- SetPlayerCameraPos(playerid, deltaToX, deltaToY, deltaToZ);
- SetPlayerCameraLookAt(playerid, x, y, z);
- }
- GetFreePokerTableSlot()
- {
- for(new i = 0; i < Max_Poker_Tables; i++)
- {
- if(PokerTables[i][pkExist] == false)
- {
- return i;
- }
- }
- return -1;
- }
- CountPokerTables()
- {
- new c = 0;
- for(new i = 0; i < Max_Poker_Tables; i++)
- {
- if(PokerTables[i][pkExist] == false)
- {
- c ++;
- }
- }
- return c;
- }
- IsPlayerAtPokerTable(playerid)
- {
- for(new i = 0; i < Max_Poker_Tables; i++)
- {
- if(PokerTables[i][pkExist] == true)
- {
- if(IsPlayerInRangeOfPoint(playerid, 5.0, PokerTables[i][pkX], PokerTables[i][pkY], PokerTables[i][pkZ]))
- {
- return i;
- }
- }
- }
- return -1;
- }
- IsPlayerAtPlayer(playerid, playerid2)
- {
- new Float: X, Float: Y, Float: Z;
- GetPlayerPos(playerid, X, Y, Z);
- if(IsPlayerInRangeOfPoint(playerid2, 3.0, X, Y, Z))
- {
- return 1;
- }
- return 0;
- }
- GetPlayerPokerTable(playerid)
- {
- for(new i = 0; i < Max_Poker_Tables; i++)
- {
- if(PokerTables[i][pkExist] == true)
- {
- if(PokerTables[i][pkUsed] == true)
- {
- for(new i2 = 0; i2 < 6; i2++)
- {
- if(PokerTables[i][pkPlayers][i2] == playerid)
- {
- return i;
- }
- }
- }
- }
- }
- return -1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement