Saving player position after disconnect in MySQL - How to make it?

Započeo YumikoJR
pre 6 godina
1,676
pregleda
3
postova
ᗪ乇Ҝ丂卂
Underboss
pre 6 godina
Saving Player Position after disconnect


Čemu služi i kako funkcioniše?


- Nakon sto se igrac diskonektuje (callback OnPlayerDisconnect(playerid, reason)), automatski cuva igracevu trenutnu poziciju i ispisuje je u databazu (primer: table users (pPosX, pPosY, pPosZ))..
I kasnije ponovo kada se loginuje, ili jos bolji primer kada mu crasha, spawnovace ga na staru poziciju gde je i bio..
U ovom slucaju igrac ce moci da bira da li zeli da mu cuva poziciju ili ne..


Kako napraviti to?


- Pre svega, stvari koje ce nam biti potrebne:

#include
#include
#include
/*
Ili:
#include
i ostali komandni procesori mada mislim da vam ne treba ni jedan drugi osim jednog od ta dva..

[*] - Naravno trebace vam i register/login sistem u MySQL-u..
*/

enum ACCOUNTS_ENUM {
  Float:pPosX,
  Float:pPosY,
  Float:pPosZ,
  Float:pPosA // facing angle
}

new
  accInfo
;



Kako napraviti komandu da li igrač želi da mu čuva poziciju?


// U ovom slucaju koristio sam y_commands (zeex commands compatibility)
#define CMD:%0(%1) YSIM_COMMAND %0(%1,__help)if(__help)return 0;else
#define COMMAND CMD

//- To gore vam ne treba, samo sam izvadio iz inc-a compatibility..

new
  savingPos = 0
;

COMMAND:savingpos(playerid, const params[]) {
  if (savingPos) {
    SendClientMessage(playerid, -1, "Iskljucili ste mogucnost cuvanja pozicije pri diskonektovanju!");
    savingPos = 0;
  } else if (!savingPos) {
    SendClientMessage(playerid, -1, "Ukljucili ste mogucnost cuvanja pozicije pri diskonektovanju!");
    savingPos = 1;
  }
  return 1;
}



I na kraju došli smo do callback-a..


public OnPlayerDisconnect(playerid, reason) {
  if (savingPos) {
    new
      _sqlQuery,
      Float:x,
      Float:y,
      Float:z,
      Float:a
    ;
    GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, a);   

    mysql_format(SQLConnect, _sqlQuery, sizeof(_sqlQuery), "UPDATE `users_table_name` SET `pposx` = '%f', `pposy` = '%f', `pposz`= '%f', `pposa` = '%f' WHERE `psqlid` = '%d'", x, y, z, a, accInfo);
    mysql_tquery(SQLConnect, _sqlQuery);
 
    accInfo = x, accInfo = y, accInfo = z, accInfo = a;
  }
  return 1;
}

- Kasnije kod logina, kada se igrac loginuje stavite:

// Kako ste vec podesili spawn i gde podesavate koordinate stavite samo
accInfo, accInfo, accInfo, accInfo;



- To bi otp bilo to od ovog kratkog tutorijala, nadam se da ce nekome kome je to potrebno za svoj server posluziti..
itzbekam
Enforcer
pre 6 godina
dobar, može poslužit
MatriiX.aMx
Underboss
pre 6 godina
Fina stvar , well done  🙂

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava