Advertisement
Guest User

Untitled

a guest
Sep 26th, 2016
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.78 KB | None | 0 0
  1. /*
  2. A szkript célja:
  3. A szerver adatait a megadott weboldalnak elküldi és ha van online játékos, akkor az ő információit
  4. is. (Név-IP-Serial kombináció pl. egy A.K.A. Adatbázishoz)
  5.  
  6. (SEND_PLAYERDATA) Beállítható, hogy a játékos adatait is elküldje például egy térképhez, ami kiírja
  7. hol van a térképen, merre néz stb stb. Az elküldött adatokból kikövetkeztethető, hogy ha a játékos
  8. éppen csatlakozott a szerverre minden adata 0 kivéve az angle, mert az 666.0. Ez normális körülmények
  9. között kivitelezhetetlen. Ha a játékos éppen skinválasztóban, halott vagy sziplán más játékos figyel
  10. akkor a koordinátái 1.2,3.4,5.6,789.0. Nem kell külön elküldeni, hogy mit csinál.
  11.  
  12. A PHP fájlt mellékeltem, a weboldalamon elérhető ugyan ez, egy megváltoztatott jelszóval. Ezen kód
  13. minőségéért nem vállalok felelősséget, csak teszt céljából lett létrehozva.
  14. */
  15.  
  16. #include <a_samp>
  17. #include <a_http>
  18.  
  19. #undef MAX_PLAYERS
  20. #define MAX_PLAYERS 30
  21. #define SEND_INTERVAL (1*60000) //1 perc
  22. #define HTTP_URL "codeshock.hu/processquery.php"
  23. #define PASS_STRING "Af22g6jhAS%cASDFfs%dC" //kimenet: Af22g6jhASLASDFfs22C
  24. #define PASS_DATA 'L', 22
  25. #define SEND_PLAYERDATA 0 //Állítsd 1-re ha szeretnéd, hogy a szkript elküldje a játékos adatait
  26. #define DEBUGMESSAGES 0 //Állítsd 1-re ha szeretnéd, hogy kiírjon egyéb info-kat a szerver hibákon kívül (lásd. konfiguráció)
  27.  
  28. new PlayersOnServer = 0;
  29. new Timer;
  30.  
  31. native gpci(playerid, buffer[], size = sizeof(buffer));
  32.  
  33. #if DEBUGMESSAGES == 1
  34. enum e_PlayerData
  35. {
  36. Float:pHP,
  37. Float:pArm,
  38.  
  39. Float:pPos[4],
  40. pColor,
  41.  
  42. pMoney,
  43. pScore
  44. }
  45.  
  46.  
  47. new pData[MAX_PLAYERS][e_PlayerData];
  48.  
  49. stock StorePlayerData(playerid)
  50. {
  51. new sstate = GetPlayerState(playerid);
  52. if(sstate != PLAYER_STATE_NONE)
  53. {
  54. GetPlayerHealth(playerid, pData[playerid][pHP]);
  55. GetPlayerArmour(playerid, pData[playerid][pArm]);
  56.  
  57. if(IsPlayerInAnyVehicle(playerid))
  58. {
  59. GetVehiclePos(GetPlayerVehicleID(playerid), pData[playerid][pPos][0], pData[playerid][pPos][1], pData[playerid][pPos][2]);
  60. GetVehicleZAngle(GetPlayerVehicleID(playerid), pData[playerid][pPos][3]);
  61. }
  62. else
  63. {
  64. GetPlayerPos(playerid, pData[playerid][pPos][0], pData[playerid][pPos][1], pData[playerid][pPos][2]);
  65. GetPlayerFacingAngle(playerid, pData[playerid][pPos][3]);
  66. }
  67.  
  68. pData[playerid][pColor] = GetPlayerColor(playerid);
  69.  
  70. pData[playerid][pMoney] = GetPlayerMoney(playerid);
  71. pData[playerid][pScore] = GetPlayerScore(playerid);
  72.  
  73. if(sstate == PLAYER_STATE_WASTED || sstate == PLAYER_STATE_SPECTATING)
  74. {
  75. pData[playerid][pHP] = 100.0;
  76. pData[playerid][pArm] = 0.0;
  77. pData[playerid][pPos] = Float:{1.2,3.4,5.66,789.0};
  78. }
  79. }
  80. else
  81. {
  82. pData[playerid][pHP] = 0.0;
  83. pData[playerid][pArm] = 0.0;
  84.  
  85. pData[playerid][pPos] = Float:{0.0,0.0,0.0,666.0};
  86.  
  87. pData[playerid][pColor] = 0;
  88.  
  89. pData[playerid][pMoney] = 0;
  90. pData[playerid][pScore] = 0;
  91. }
  92. return 1;
  93. }
  94. #endif
  95.  
  96. public OnFilterScriptInit()
  97. {
  98. Timer = SetTimer("ProcessUpdate", SEND_INTERVAL, 1);
  99.  
  100. new pool = GetPlayerPoolSize();
  101. for(new i = 0; i <= pool; i++)
  102. {
  103. if(IsPlayerConnected(i) && !IsPlayerNPC(i))PlayersOnServer++;
  104. }
  105. #if DEBUGMESSAGES == 1
  106. printf("\n\n--------------------------PHP Client Configuration-----------------------------");
  107. printf("Data sending interval: %dms",SEND_INTERVAL);
  108. printf("Website url: %s",HTTP_URL);
  109. printf("Password: "PASS_STRING"",PASS_DATA);
  110. printf("-------------------------------------------------------------------------------\n\n");
  111. #endif
  112. return 1;
  113. }
  114.  
  115. forward ProcessUpdate();
  116. public ProcessUpdate()
  117. {
  118. new data[512];
  119. format(data, sizeof data, "pw="PASS_STRING"&p=%d&st=%d",PASS_DATA,PlayersOnServer,gettime()); //Szerveradatok formázása
  120. HTTP(1000, HTTP_POST, HTTP_URL, data, "HTTPResponse");
  121.  
  122. if(PlayersOnServer > 0)
  123. {
  124. new ip[50],name[MAX_PLAYER_NAME], pool = GetPlayerPoolSize();
  125. for(new i = 0; i <= pool; i++)
  126. {
  127. if(IsPlayerConnected(i) && !IsPlayerNPC(i))
  128. {
  129. GetPlayerName(i, name, MAX_PLAYER_NAME);
  130. GetPlayerIp(i, ip, 50);
  131. gpci(i, data);
  132.  
  133. format(data, sizeof data, "pw="PASS_STRING"&name=%s&ip=%s&serial=%s",PASS_DATA,name,ip,data); //Játékosadatok formázása (A.K.A.-hoz)
  134. HTTP(i, HTTP_POST, HTTP_URL, data, "HTTPResponse");
  135.  
  136. #if SEND_PLAYERDATA == 1
  137. StorePlayerData(i);
  138. format(data, sizeof data, "pw="PASS_STRING"&name=%s&hp=%.2f&arm=%.2f&pos=%.2f,%.2f,%.2f,%.2f&cl=%d&my=%d&se=%d",PASS_DATA,
  139. name,
  140. pData[i][pHP],
  141. pData[i][pArm],
  142. pData[i][pPos][0],
  143. pData[i][pPos][1],
  144. pData[i][pPos][2],
  145. pData[i][pPos][3],
  146. pData[i][pColor],
  147. pData[i][pMoney],
  148. pData[i][pScore]
  149. ); //Játékosadatok formázása (A.K.A.-hoz)
  150.  
  151. HTTP(1000+i+1, HTTP_POST, HTTP_URL, data, "HTTPResponse");
  152. #endif
  153. }
  154. }
  155. }
  156. return 1;
  157. }
  158.  
  159. forward HTTPResponse(index, response_code, data[]);
  160. public HTTPResponse(index, response_code, data[])
  161. {
  162. if(Timer == -1)return 1;
  163. if(response_code == 200)
  164. {
  165. //Webszerver visszajelzések kezelése a PHP szkript alapján. Lásd: legalul
  166. if(strfind(data, "HTTP Request accepted!", true) == -1)
  167. {
  168. KillTimer(Timer);
  169. Timer = -1;
  170. if(strfind(data, "The password is not correct!", true) != -1)printf("HTTP Error: wrong password");
  171. else if(strfind(data, "The query file not found!", true) != -1)printf("HTTP Error: missing output file");
  172. else if(strfind(data, "Cannot get the POST data!", true) != -1)printf("HTTP Error: missing post data");
  173. }
  174. #if DEBUGMESSAGES == 1
  175. else
  176. {
  177. if(index == 1000)printf("The server data processed successfully!");
  178. else if(index > 1000)printf("The A.K.A. data processed successfully!");
  179. else if(index < 1000)printf("The player data processed successfully!");
  180. }
  181. #endif
  182. }
  183. else
  184. {
  185. printf("HTTP Error code: %d", response_code);
  186. }
  187. /*#if DEBUGMESSAGES == 1
  188. printf("%d %d %s",index,response_code,data[3]);
  189. #endif*/
  190. return 1;
  191. }
  192.  
  193. public OnPlayerConnect(playerid)
  194. {
  195. PlayersOnServer++;
  196. return 1;
  197. }
  198.  
  199. public OnPlayerDisconnect(playerid, reason)
  200. {
  201. PlayersOnServer--;
  202. return 1;
  203. }
  204.  
  205. /*
  206.  
  207. <?php
  208. if(isset($_POST))
  209. {
  210. if($_POST['pw'] != "Af22g6jhASLASDFfs22C")
  211. {
  212. echo "The password is not correct!";
  213. exit();
  214. }
  215. else if (!($fp = fopen('testquery.txt', 'a')))
  216. {
  217. echo "The query file not found!";
  218. exit();
  219. }
  220. else
  221. {
  222. function sprint_r($var)
  223. {
  224. ob_start();
  225. print_r($var);
  226. $output=ob_get_contents();
  227. ob_end_clean();
  228. return $output;
  229. }
  230.  
  231. fwrite($fp, sprint_r($_POST));
  232. fwrite($fp,"\n\n\n");
  233.  
  234. fclose($fp);
  235.  
  236. echo "HTTP Request accepted!";
  237. }
  238. }
  239. else
  240. {
  241. echo "Cannot get the POST data!";
  242. exit();
  243. }
  244. ?>
  245.  
  246. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement