Advertisement
Guest User

Untitled

a guest
Dec 29th, 2014
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.67 KB | None | 0 0
  1. /*
  2. Nova´s Texas Holde´m Poker System
  3. © 2014
  4. Scripted by RFT (Julian Glatter)
  5.  
  6.  
  7. */
  8.  
  9. #include <a_samp>
  10.  
  11.  
  12.  
  13. #define Max_Poker_Tables 20
  14.  
  15.  
  16.  
  17. enum os{
  18. oModel,
  19. Float: oX,
  20. Float: oY,
  21. Float: oZ,
  22. Float: orX,
  23. Float: orY,
  24. Float: orZ,
  25. }
  26.  
  27. new PokerOffSets[78][os]={
  28. {1212, -0.487201, 1.078857, 0.506158, 0.000000, 0.000000, -324.753448},
  29. {1212, 0.653228, 0.365478, 0.506158, 0.000000, 0.000000, 0.000000},
  30. {1212, -0.473972, 0.192993, 0.506158, 0.000000, 0.000000, 0.000000},
  31. {1212, -0.472270, 0.044433, 0.506158, 0.000000, 0.000000, 0.000000},
  32. {1212, -0.472572, 0.118652, 0.506158, 0.000000, 0.000000, 0.000000},
  33. {1212, -0.474472, 0.268432, 0.506158, 0.000000, 0.000000, 0.000000},
  34. {1667, 0.203899, 1.196655, 0.617460, 0.000000, 0.000000, -332.392669},
  35. {1901, -0.598701, 0.867309, 0.413909, 0.000000, 0.000000, 0.000000},
  36. {1902, -0.600032, 0.942382, 0.433010, 0.000000, 0.000000, 0.000000},
  37. {1911, -0.595333, 1.007812, 0.495079, 0.000000, 0.000000, 0.000000},
  38. {1921, -0.651702, 1.000000, 0.459320, 0.000000, 0.000000, 0.000000},
  39. {1901, -0.658641, 0.911010, 0.435249, 0.000000, 0.000000, 0.000000},
  40. {1212, 0.661029, -0.548339, 0.506158, 0.000000, 0.000000, 0.000000},
  41. {1212, 0.499538, 1.117187, 0.506158, 0.000000, 0.000000, -230.849685},
  42. {1212, 0.278636, -1.272460, 0.506158, 0.000000, 0.000000, -305.436767},
  43. {1212, -0.548690, -1.079345, 0.506158, 0.000000, 0.000000, -242.972198},
  44. {1667, -0.620491, 0.761840, 0.617460, 0.000000, 0.000000, -343.601013},
  45. {1667, 0.373397, -1.008911, 0.617460, 0.000000, 0.000000, -340.776672},
  46. {1911, 0.436790, 1.173461, 0.495079, 0.000000, 0.000000, 0.000000},
  47. {1921, 0.412567, 1.262817, 0.459320, 0.000000, 0.000000, 0.000000},
  48. {1902, 0.370037, 1.172729, 0.433010, 0.000000, 0.000000, 0.000000},
  49. {1901, 0.354228, 1.239257, 0.435249, 0.000000, 0.000000, 0.000000},
  50. {1901, 0.300590, 1.221435, 0.413909, 0.000000, 0.000000, 0.000000},
  51. {1911, 0.672260, 0.432373, 0.495079, 0.000000, 0.000000, 0.000000},
  52. {1921, 0.710227, 0.501464, 0.459320, 0.000000, 0.000000, 0.000000},
  53. {1902, 0.666530, 0.499267, 0.433010, 0.000000, 0.000000, 0.000000},
  54. {1901, 0.719818, 0.520996, 0.435249, 0.000000, 0.000000, 0.000000},
  55. {1901, 0.685749, 0.559692, 0.413909, 0.000000, 0.000000, 0.000000},
  56. {1667, 0.589717, 0.598022, 0.617460, 0.000000, 0.000000, -289.523590},
  57. {1667, 0.588230, -0.141845, 0.617460, 0.000000, 0.000000, -289.523590},
  58. {1911, 0.666728, -0.472900, 0.495079, 0.000000, 0.000000, 0.000000},
  59. {1921, 0.704708, -0.404907, 0.459320, 0.000000, 0.000000, 0.000000},
  60. {1902, 0.647270, -0.420776, 0.433010, 0.000000, 0.000000, 0.000000},
  61. {1901, 0.686038, -0.385498, 0.435249, 0.000000, 0.000000, 0.000000},
  62. {1901, 0.638179, -0.361206, 0.413909, 0.000000, 0.000000, 0.000000},
  63. {1911, 0.353279, -1.233276, 0.495079, 0.000000, 0.000000, 0.000000},
  64. {1921, 0.408168, -1.205932, 0.459320, 0.000000, 0.000000, 0.000000},
  65. {1902, 0.382400, -1.179443, 0.433010, 0.000000, 0.000000, 0.000000},
  66. {1901, 0.440288, -1.184570, 0.435249, 0.000000, 0.000000, 0.000000},
  67. {1901, 0.417129, -1.128784, 0.413909, 0.000000, 0.000000, 0.000000},
  68. {1911, -0.442729, -1.170043, 0.495079, 0.000000, 0.000000, 0.000000},
  69. {1921, -0.412002, -1.196899, 0.459320, 0.000000, 0.000000, 0.000000},
  70. {1902, -0.368320, -1.178100, 0.433010, 0.000000, 0.000000, 0.000000},
  71. {1901, -0.341960, -1.238891, 0.435249, 0.000000, 0.000000, 0.000000},
  72. {1901, -0.295372, -1.201293, 0.413909, 0.000000, 0.000000, 0.000000},
  73. {1667, -0.216220, -1.159301, 0.617460, 0.000000, 0.000000, -287.130035},
  74. {1212, -0.473171, -0.030273, 0.506158, 0.000000, 0.000000, 0.000000},
  75. {1212, -0.473171, -0.104248, 0.506158, 0.000000, 0.000000, 0.000000},
  76. {1212, -0.473171, -0.180297, 0.506158, 0.000000, 0.000000, 0.000000},
  77. {1212, -0.473171, -0.254272, 0.506158, 0.000000, 0.000000, 0.000000},
  78. {1212, -0.473171, -0.328247, 0.506158, 0.000000, 0.000000, 0.000000},
  79. {1212, -0.473171, -0.402221, 0.506158, 0.000000, 0.000000, 0.000000},
  80. {1212, -0.473171, -0.476196, 0.506158, 0.000000, 0.000000, 0.000000},
  81. {1212, -0.473171, -0.402221, 0.578159, 0.000000, 0.000000, 0.000000},
  82. {1212, -0.473171, -0.326171, 0.578159, 0.000000, 0.000000, 0.000000},
  83. {1212, -0.473171, -0.250244, 0.578159, 0.000000, 0.000000, 0.000000},
  84. {1212, -0.473171, -0.176147, 0.578159, 0.000000, 0.000000, 0.000000},
  85. {1212, -0.473171, -0.102050, 0.578159, 0.000000, 0.000000, 0.000000},
  86. {1212, -0.473171, -0.028076, 0.578159, 0.000000, 0.000000, 0.000000},
  87. {1212, -0.473171, 0.045898, 0.578159, 0.000000, 0.000000, 0.000000},
  88. {1212, -0.473171, 0.121948, 0.578159, 0.000000, 0.000000, 0.000000},
  89. {1212, -0.473171, 0.197875, 0.578159, 0.000000, 0.000000, 0.000000},
  90. {1212, -0.473171, 0.121948, 0.652158, 0.000000, 0.000000, 0.000000},
  91. {1212, -0.473171, 0.047851, 0.652158, 0.000000, 0.000000, 0.000000},
  92. {1212, -0.473171, -0.026245, 0.652158, 0.000000, 0.000000, 0.000000},
  93. {1212, -0.473171, -0.100219, 0.652158, 0.000000, 0.000000, 0.000000},
  94. {1212, -0.473171, -0.176147, 0.652158, 0.000000, 0.000000, 0.000000},
  95. {1212, -0.473171, -0.252075, 0.652158, 0.000000, 0.000000, 0.000000},
  96. {1212, -0.473171, -0.328125, 0.652158, 0.000000, 0.000000, 0.000000},
  97. {1212, -0.473171, -0.100219, 0.674160, 0.000000, 0.000000, -280.346191},
  98. {1212, -0.407302, -0.224243, 0.558029, 80.500000, 0.000000, -269.473205},
  99. {1212, -0.414550, 0.045043, 0.558029, 80.500000, 0.000000, -274.948455},
  100. {2079, 1.211769, 0.260375, 0.000040, 0.000000, 0.000000, 0.000000},
  101. {2079, 1.268947, -1.035522, 0.000040, 0.000000, 0.000000, 0.000000},
  102. {2079, 0.403408, 1.535644, 0.000040, 0.000000, 0.000000, -290.773254},
  103. {2079, -1.137580, 1.322265, 0.000040, 0.000000, 0.000000, -230.904922},
  104. {2079, 0.692508, -1.733520, 0.000040, 0.000000, 0.000000, -48.198680},
  105. {2079, -0.841171, -1.285522, 0.000040, 0.000000, 0.000000, -130.504364}
  106. };
  107.  
  108.  
  109. enum pkTables
  110. {
  111. pkObjects[79],
  112. Float: pkX,
  113. Float: pkY,
  114. Float: pkZ,
  115. Float: pkR,
  116. pkPot,
  117. pkPlayers[6],
  118. bool: pkUsed,
  119. bool: pkExist,
  120. }
  121. new PokerTables[Max_Poker_Tables][pkTables];
  122.  
  123.  
  124. public OnFilterScriptInit()
  125. {
  126. print("\n--------------------------------------");
  127. print(" Nova´s Texas Holde´m Poker ");
  128. print(" Version 1.0.0 © by RFT");
  129. print("--------------------------------------\n");
  130. return 1;
  131. }
  132.  
  133. public OnFilterScriptExit()
  134. {
  135. return 1;
  136. }
  137.  
  138. public OnPlayerCommandText(playerid, cmdtext[])
  139. {
  140. new cmd[128], tmp[128], string[128], idx;
  141. cmd = strtok(cmdtext, idx);
  142.  
  143.  
  144. if(strcmp(cmd, "/cPokerTable", true) == 0)
  145. {
  146. new id = GetFreePokerTableSlot();
  147. if(id != -1)
  148. {
  149. new Float: X, Float: Y, Float: Z, Float: R;
  150. GetPlayerPos(playerid, X, Y, Z);
  151. GetPlayerFacingAngle(playerid, R);
  152. Z -= 0.4;
  153. PokerTables[id][pkExist] = true;
  154. PokerTables[id][pkX] = X;
  155. PokerTables[id][pkY] = Y;
  156. PokerTables[id][pkZ] = Z;
  157. PokerTables[id][pkR] = R;
  158. for(new i = 0; i < 6; i++)
  159. {
  160. PokerTables[id][pkPlayers][0] = -1;
  161. }
  162. PokerTables[id][pkObjects][0] = CreateObject(19474, X, Y, Z, 0.0, 0.0, R);
  163. for(new i = 0; i < 78; i++)
  164. {
  165. new Float: X2 = floatsin(-R,degrees) * PokerOffSets[i][oY] + floatcos(-R,degrees) * PokerOffSets[i][oX] + X;
  166. new Float: Y2 = floatcos(-R,degrees) * PokerOffSets[i][oY] - floatsin(-R,degrees) * PokerOffSets[i][oX] + Y;
  167. if(PokerOffSets[i][oModel] == 1212)
  168. {
  169. continue;
  170. }
  171. else
  172. {
  173. PokerTables[id][pkObjects][i+1] = CreateObject(PokerOffSets[i][oModel],X2, Y2, Z+PokerOffSets[i][oZ], 0.0, 0.0, R + PokerOffSets[i][orZ]);
  174. }
  175. }
  176. format(string, sizeof(string), "Info: Du hast ein Poker Tisch erstellt (ID: %d)", id);
  177. SendClientMessage(playerid, 0xF97804FF, string);
  178. return 1;
  179. }
  180. else
  181. {
  182. SendClientMessage(playerid, 0xEB0606AA, "Info: Es sind keine Slots mehr vorhanden. Der Poker Tisch konnte nicht erstellt werden.");
  183. return 1;
  184. }
  185. }
  186. if(strcmp(cmd, "/dPokerTable", true) == 0)
  187. {
  188. if(CountPokerTables() >= 1)
  189. {
  190. tmp = strtok(cmdtext, idx);
  191. if(!tmp[0])return SendClientMessage(playerid, 0xFFFFFFAA, "Verwendung: /dPokerTable [PokerTisch ID]");
  192. new id = strval(tmp);
  193. if(PokerTables[id][pkExist] == true)
  194. {
  195. PokerTables[id][pkExist] = false;
  196. for(new i = 0; i < 79; i++)
  197. {
  198. DestroyObject(PokerTables[id][pkObjects][i]);
  199. }
  200. 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);
  201. SendClientMessage(playerid, 0xF97804FF, string);
  202. return 1;
  203. }
  204. else
  205. {
  206. format(string, sizeof(string), "Info: Poker Tisch ID: %d exestiert nicht.", id);
  207. SendClientMessage(playerid, 0xEB0606AA, "Info: Es sind keine Pokertische vorhanden.");
  208. return 1;
  209. }
  210. }
  211. else
  212. {
  213. SendClientMessage(playerid, 0xEB0606AA, "Info: Es sind keine Pokertische vorhanden.");
  214. return 1;
  215. }
  216. }
  217. if(strcmp(cmd, "/startpoker", true) == 0)
  218. {
  219. if(!GetPVarInt(playerid, "StartedPoker"))
  220. {
  221. new id = IsPlayerAtPokerTable(playerid);
  222. if(id != -1)
  223. {
  224. if(PokerTables[id][pkUsed] == false)
  225. {
  226. tmp = strtok(cmdtext, idx);
  227. if(!tmp[0])return SendClientMessage(playerid, 0xFFFFFFAA, "Verwendung: /StartPoker [Einsatz]");
  228. new Pot = strval(tmp);
  229. if(Pot < 1 || Pot > 1000000)
  230. {
  231. SendClientMessage(playerid, 0xEB0606AA, "Info: Der Einsatz darf nicht unter 1$ und nicht über 1000000$ sein.");
  232. return 1;
  233. }
  234. if(GetPlayerMoney(playerid) >= Pot)
  235. {
  236. PokerTables[id][pkPlayers][0] = playerid;
  237. PokerTables[id][pkUsed] = true;
  238. PokerTables[id][pkPot] = Pot;
  239. format(string, sizeof(string), "Info: Du hast eine Poker Runde eröffnet (Einsatz: %d$). Du kannst mit /invitepoker mitspieler einladen.", Pot);
  240. SendClientMessage(playerid, 0xF97804FF, string);
  241. SendClientMessage(playerid, 0xF97804FF, "Info: Um die Pokerrunde starten zu können benötigst du mindestens 1 Mitspieler.");
  242. SendClientMessage(playerid, 0xF97804FF, "Info: Du kannst maximal 6 Spieler einladen. Wenn du ein Spieler eingeladen hast kannst du die Runde mit /Startpoker starten.");
  243. SetPVarInt(playerid, "StartedPoker", 1);
  244. return 1;
  245. }
  246. else
  247. {
  248. SendClientMessage(playerid, 0xEB0606AA, "Info: Soviel Geld besitzt du nicht auf deiner Hand.");
  249. return 1;
  250. }
  251. }
  252. else
  253. {
  254. SendClientMessage(playerid, 0xEB0606AA, "Info: Dieser Pokertisch wird leider schon verwendet.");
  255. return 1;
  256. }
  257. }
  258. else
  259. {
  260. SendClientMessage(playerid, 0xEB0606AA, "Info: Du befindest dich an keinem Pokertisch.");
  261. return 1;
  262. }
  263. }
  264. else
  265. {
  266.  
  267. }
  268. }
  269. if(strcmp(cmd, "/InvitePoker", true) == 0)
  270. {
  271. if(GetPVarInt(playerid, "StartedPoker"))
  272. {
  273. tmp = strtok(cmdtext, idx);
  274. if(!tmp[0])return SendClientMessage(playerid, 0xFFFFFFAA, "Verwendung: /InvitePoker [Playerid/Name]");
  275. new pID = ReturnUser(tmp);
  276. if(IsPlayerConnected(pID))
  277. {
  278. if(IsPlayerAtPlayer(playerid, pID))
  279. {
  280. if(GetPlayerPokerTable(playerid) == GetPlayerPokerTable(pID))
  281. {
  282. SendClientMessage(playerid, 0xEB0606AA, "Info: Dieser Spieler ist bereits mitspieler ein deiner Pokerrunde.");
  283. return 1;
  284. }
  285. if(GetPlayerPokerTable(pID) != -1)
  286. {
  287.  
  288. }
  289. else
  290. {
  291. SendClientMessage(playerid, 0xEB0606AA, "Info: Dieser Spieler spielt bereits in einer anderen Pokerrunde");
  292. return 1;
  293. }
  294. }
  295. else
  296. {
  297. SendClientMessage(playerid, 0xEB0606AA, "Info: Dieser Spieler befindet sich nicht in deiner nähe.");
  298. return 1;
  299. }
  300. }
  301. else
  302. {
  303. SendClientMessage(playerid, 0xEB0606AA, "Info: Dieser Spieler ist nicht online.");
  304. return 1;
  305. }
  306. }
  307. else
  308. {
  309. SendClientMessage(playerid, 0xEB0606AA, "Info: Du hast keine Pokerrunde gestartet.");
  310. return 1;
  311. }
  312. }
  313.  
  314. if(strcmp(cmd, "/tc", true) == 0)
  315. {
  316. new Float: X = GetPVarFloat(playerid, "X");
  317. new Float: Y = GetPVarFloat(playerid, "Y");
  318. new Float: Z = GetPVarFloat(playerid, "Z");
  319. new Float: R = GetPVarFloat(playerid, "R");
  320. CameraRadiusSetPos(playerid, X, Y, Z, (R-90.0), 2.7, 0.1);
  321. for(new i = 0; i< 10; i++)
  322. {
  323. SendClientMessage(playerid, 0x000000FF, " ");
  324. }
  325. return 1;
  326. }
  327. return 0;
  328. }
  329.  
  330. public OnPlayerSelectedMenuRow(playerid, row)
  331. {
  332. return 1;
  333. }
  334.  
  335. public OnPlayerExitedMenu(playerid)
  336. {
  337. return 1;
  338. }
  339.  
  340. public OnPlayerUpdate(playerid)
  341. {
  342. return 1;
  343. }
  344.  
  345. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  346. {
  347. return 1;
  348. }
  349.  
  350. stock strtok(const string[], &index,seperator=' ')
  351. {
  352. new length = strlen(string);
  353. new offset = index;
  354. new result[128];
  355. while ((index < length) && (string[index] != seperator) && ((index - offset) < (sizeof(result) - 1)))
  356. {
  357. result[index - offset] = string[index];
  358. index++;
  359. }
  360.  
  361. result[index - offset] = EOS;
  362. if ((index < length) && (string[index] == seperator))
  363. {
  364. index++;
  365. }
  366. return result;
  367. }
  368.  
  369. stock split(const strsrc[], strdest[][], delimiter)
  370. {
  371. new i, li;
  372. new aNum;
  373. new len;
  374. while(i <= strlen(strsrc))
  375. {
  376. if(strsrc[i] == delimiter || i == strlen(strsrc))
  377. {
  378. len = strmid(strdest[aNum], strsrc, li, i, 128);
  379. strdest[aNum][len] = 0;
  380. li = i+1;
  381. aNum++;
  382. }
  383. i++;
  384. }
  385. return 1;
  386. }
  387.  
  388. stock ReturnUser(text[], playerid = INVALID_PLAYER_ID)
  389. {
  390. new pos = 0;
  391. while (text[pos] < 0x21)
  392. {
  393. if (text[pos] == 0) return INVALID_PLAYER_ID;
  394. pos++;
  395. }
  396. new userid = INVALID_PLAYER_ID;
  397. if (IsNumeric(text[pos]))
  398. {
  399. userid = strval(text[pos]);
  400. if (userid >=0 && userid < MAX_PLAYERS)
  401. {
  402. if(!IsPlayerConnected(userid))
  403. {
  404. userid = INVALID_PLAYER_ID;
  405. }
  406. else
  407. {
  408. return userid;
  409. }
  410. }
  411. }
  412.  
  413. new len = strlen(text[pos]);
  414. new count = 0;
  415. new name[MAX_PLAYER_NAME];
  416. for (new i = 0; i < MAX_PLAYERS; i++)
  417. {
  418. if (IsPlayerConnected(i))
  419. {
  420. GetPlayerName(i, name, sizeof (name));
  421. if (strcmp(name, text[pos], true, len) == 0)
  422. {
  423. if (len == strlen(name))
  424. {
  425. return i;
  426. }
  427. else
  428. {
  429. count++;
  430. userid = i;
  431. }
  432. }
  433. }
  434. }
  435. if (count != 1)
  436. {
  437. if (playerid != INVALID_PLAYER_ID)
  438. {
  439. if (count)
  440. {
  441. SendClientMessage(playerid, 0xFF0000AA, "Multiple users found, please narrow earch");
  442. }
  443. else
  444. {
  445. SendClientMessage(playerid, 0xFF0000AA, "No matching user found");
  446. }
  447. }
  448. userid = INVALID_PLAYER_ID;
  449. }
  450. return userid; // INVALID_USER_ID for bad return
  451. }
  452.  
  453. stock IsNumeric(const string[])
  454. {
  455. for (new i = 0, j = strlen(string); i < j; i++)
  456. {
  457. if (string[i] > '9' || string[i] < '0') return 0;
  458. }
  459. return 1;
  460. }
  461.  
  462. CameraRadiusSetPos(playerid, Float:x, Float:y, Float:z, Float:degree = 0.0, Float:height = 3.0, Float:radius = 8.0)
  463. {
  464. new Float:deltaToX = x + radius * floatsin(-degree, degrees);
  465. new Float:deltaToY = y + radius * floatcos(-degree, degrees);
  466. new Float:deltaToZ = z + height;
  467.  
  468. SetPlayerCameraPos(playerid, deltaToX, deltaToY, deltaToZ);
  469. SetPlayerCameraLookAt(playerid, x, y, z);
  470. }
  471.  
  472. GetFreePokerTableSlot()
  473. {
  474. for(new i = 0; i < Max_Poker_Tables; i++)
  475. {
  476. if(PokerTables[i][pkExist] == false)
  477. {
  478. return i;
  479. }
  480. }
  481. return -1;
  482. }
  483.  
  484. CountPokerTables()
  485. {
  486. new c = 0;
  487. for(new i = 0; i < Max_Poker_Tables; i++)
  488. {
  489. if(PokerTables[i][pkExist] == false)
  490. {
  491. c ++;
  492. }
  493. }
  494. return c;
  495. }
  496.  
  497. IsPlayerAtPokerTable(playerid)
  498. {
  499. for(new i = 0; i < Max_Poker_Tables; i++)
  500. {
  501. if(PokerTables[i][pkExist] == true)
  502. {
  503. if(IsPlayerInRangeOfPoint(playerid, 5.0, PokerTables[i][pkX], PokerTables[i][pkY], PokerTables[i][pkZ]))
  504. {
  505. return i;
  506. }
  507. }
  508. }
  509. return -1;
  510. }
  511.  
  512. IsPlayerAtPlayer(playerid, playerid2)
  513. {
  514. new Float: X, Float: Y, Float: Z;
  515. GetPlayerPos(playerid, X, Y, Z);
  516. if(IsPlayerInRangeOfPoint(playerid2, 3.0, X, Y, Z))
  517. {
  518. return 1;
  519. }
  520. return 0;
  521. }
  522.  
  523. GetPlayerPokerTable(playerid)
  524. {
  525. for(new i = 0; i < Max_Poker_Tables; i++)
  526. {
  527. if(PokerTables[i][pkExist] == true)
  528. {
  529. if(PokerTables[i][pkUsed] == true)
  530. {
  531. for(new i2 = 0; i2 < 6; i2++)
  532. {
  533. if(PokerTables[i][pkPlayers][i2] == playerid)
  534. {
  535. return i;
  536. }
  537. }
  538. }
  539. }
  540. }
  541. return -1;
  542. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement