Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- A szkript célja:
- A szerver adatait a megadott weboldalnak elküldi és ha van online játékos, akkor az ő információit
- is. (Név-IP-Serial kombináció pl. egy A.K.A. Adatbázishoz)
- (SEND_PLAYERDATA) Beállítható, hogy a játékos adatait is elküldje például egy térképhez, ami kiírja
- 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
- éppen csatlakozott a szerverre minden adata 0 kivéve az angle, mert az 666.0. Ez normális körülmények
- között kivitelezhetetlen. Ha a játékos éppen skinválasztóban, halott vagy sziplán más játékos figyel
- akkor a koordinátái 1.2,3.4,5.6,789.0. Nem kell külön elküldeni, hogy mit csinál.
- A PHP fájlt mellékeltem, a weboldalamon elérhető ugyan ez, egy megváltoztatott jelszóval. Ezen kód
- minőségéért nem vállalok felelősséget, csak teszt céljából lett létrehozva.
- */
- #include <a_samp>
- #include <a_http>
- #undef MAX_PLAYERS
- #define MAX_PLAYERS 30
- #define SEND_INTERVAL (1*60000) //1 perc
- #define HTTP_URL "codeshock.hu/processquery.php"
- #define PASS_STRING "Af22g6jhAS%cASDFfs%dC" //kimenet: Af22g6jhASLASDFfs22C
- #define PASS_DATA 'L', 22
- #define SEND_PLAYERDATA 0 //Állítsd 1-re ha szeretnéd, hogy a szkript elküldje a játékos adatait
- #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ó)
- new PlayersOnServer = 0;
- new Timer;
- native gpci(playerid, buffer[], size = sizeof(buffer));
- #if DEBUGMESSAGES == 1
- enum e_PlayerData
- {
- Float:pHP,
- Float:pArm,
- Float:pPos[4],
- pColor,
- pMoney,
- pScore
- }
- new pData[MAX_PLAYERS][e_PlayerData];
- stock StorePlayerData(playerid)
- {
- new sstate = GetPlayerState(playerid);
- if(sstate != PLAYER_STATE_NONE)
- {
- GetPlayerHealth(playerid, pData[playerid][pHP]);
- GetPlayerArmour(playerid, pData[playerid][pArm]);
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehiclePos(GetPlayerVehicleID(playerid), pData[playerid][pPos][0], pData[playerid][pPos][1], pData[playerid][pPos][2]);
- GetVehicleZAngle(GetPlayerVehicleID(playerid), pData[playerid][pPos][3]);
- }
- else
- {
- GetPlayerPos(playerid, pData[playerid][pPos][0], pData[playerid][pPos][1], pData[playerid][pPos][2]);
- GetPlayerFacingAngle(playerid, pData[playerid][pPos][3]);
- }
- pData[playerid][pColor] = GetPlayerColor(playerid);
- pData[playerid][pMoney] = GetPlayerMoney(playerid);
- pData[playerid][pScore] = GetPlayerScore(playerid);
- if(sstate == PLAYER_STATE_WASTED || sstate == PLAYER_STATE_SPECTATING)
- {
- pData[playerid][pHP] = 100.0;
- pData[playerid][pArm] = 0.0;
- pData[playerid][pPos] = Float:{1.2,3.4,5.66,789.0};
- }
- }
- else
- {
- pData[playerid][pHP] = 0.0;
- pData[playerid][pArm] = 0.0;
- pData[playerid][pPos] = Float:{0.0,0.0,0.0,666.0};
- pData[playerid][pColor] = 0;
- pData[playerid][pMoney] = 0;
- pData[playerid][pScore] = 0;
- }
- return 1;
- }
- #endif
- public OnFilterScriptInit()
- {
- Timer = SetTimer("ProcessUpdate", SEND_INTERVAL, 1);
- new pool = GetPlayerPoolSize();
- for(new i = 0; i <= pool; i++)
- {
- if(IsPlayerConnected(i) && !IsPlayerNPC(i))PlayersOnServer++;
- }
- #if DEBUGMESSAGES == 1
- printf("\n\n--------------------------PHP Client Configuration-----------------------------");
- printf("Data sending interval: %dms",SEND_INTERVAL);
- printf("Website url: %s",HTTP_URL);
- printf("Password: "PASS_STRING"",PASS_DATA);
- printf("-------------------------------------------------------------------------------\n\n");
- #endif
- return 1;
- }
- forward ProcessUpdate();
- public ProcessUpdate()
- {
- new data[512];
- format(data, sizeof data, "pw="PASS_STRING"&p=%d&st=%d",PASS_DATA,PlayersOnServer,gettime()); //Szerveradatok formázása
- HTTP(1000, HTTP_POST, HTTP_URL, data, "HTTPResponse");
- if(PlayersOnServer > 0)
- {
- new ip[50],name[MAX_PLAYER_NAME], pool = GetPlayerPoolSize();
- for(new i = 0; i <= pool; i++)
- {
- if(IsPlayerConnected(i) && !IsPlayerNPC(i))
- {
- GetPlayerName(i, name, MAX_PLAYER_NAME);
- GetPlayerIp(i, ip, 50);
- gpci(i, data);
- 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)
- HTTP(i, HTTP_POST, HTTP_URL, data, "HTTPResponse");
- #if SEND_PLAYERDATA == 1
- StorePlayerData(i);
- 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,
- name,
- pData[i][pHP],
- pData[i][pArm],
- pData[i][pPos][0],
- pData[i][pPos][1],
- pData[i][pPos][2],
- pData[i][pPos][3],
- pData[i][pColor],
- pData[i][pMoney],
- pData[i][pScore]
- ); //Játékosadatok formázása (A.K.A.-hoz)
- HTTP(1000+i+1, HTTP_POST, HTTP_URL, data, "HTTPResponse");
- #endif
- }
- }
- }
- return 1;
- }
- forward HTTPResponse(index, response_code, data[]);
- public HTTPResponse(index, response_code, data[])
- {
- if(Timer == -1)return 1;
- if(response_code == 200)
- {
- //Webszerver visszajelzések kezelése a PHP szkript alapján. Lásd: legalul
- if(strfind(data, "HTTP Request accepted!", true) == -1)
- {
- KillTimer(Timer);
- Timer = -1;
- if(strfind(data, "The password is not correct!", true) != -1)printf("HTTP Error: wrong password");
- else if(strfind(data, "The query file not found!", true) != -1)printf("HTTP Error: missing output file");
- else if(strfind(data, "Cannot get the POST data!", true) != -1)printf("HTTP Error: missing post data");
- }
- #if DEBUGMESSAGES == 1
- else
- {
- if(index == 1000)printf("The server data processed successfully!");
- else if(index > 1000)printf("The A.K.A. data processed successfully!");
- else if(index < 1000)printf("The player data processed successfully!");
- }
- #endif
- }
- else
- {
- printf("HTTP Error code: %d", response_code);
- }
- /*#if DEBUGMESSAGES == 1
- printf("%d %d %s",index,response_code,data[3]);
- #endif*/
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- PlayersOnServer++;
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- PlayersOnServer--;
- return 1;
- }
- /*
- <?php
- if(isset($_POST))
- {
- if($_POST['pw'] != "Af22g6jhASLASDFfs22C")
- {
- echo "The password is not correct!";
- exit();
- }
- else if (!($fp = fopen('testquery.txt', 'a')))
- {
- echo "The query file not found!";
- exit();
- }
- else
- {
- function sprint_r($var)
- {
- ob_start();
- print_r($var);
- $output=ob_get_contents();
- ob_end_clean();
- return $output;
- }
- fwrite($fp, sprint_r($_POST));
- fwrite($fp,"\n\n\n");
- fclose($fp);
- echo "HTTP Request accepted!";
- }
- }
- else
- {
- echo "Cannot get the POST data!";
- exit();
- }
- ?>
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement