Advertisement
Graf_Spee

[TUTORIAL] Salvar a Posição do Player Quando ele Desconectar

Jul 13th, 2013
454
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.24 KB | None | 0 0
  1. #include <a_samp>
  2. #include <DOF2>
  3.  
  4. new Float:pPosX[MAX_PLAYERS], Float:pPosY[MAX_PLAYERS], Float:pPosZ[MAX_PLAYERS], Float:pPosA[MAX_PLAYERS], SpawnarInPos[MAX_PLAYERS];
  5.  
  6. public OnFilterScriptExit()
  7. {
  8. DOF2_Exit();
  9. return 1;
  10. }
  11.  
  12. public OnPlayerConnect(playerid)
  13. {
  14. SpawnarInPos[playerid] = 1;
  15. return 1;
  16. }
  17.  
  18. public OnPlayerDisconnect(playerid, reason) //Quando o Player Desconectar do servidor.
  19. {
  20. new pName[MAX_PLAYER_NAME], File[56];
  21. GetPlayerName(playerid, pName, sizeof(pName)); // Pega o Nome (nick) do Player e converte para "pName", assim "pName" = Nick
  22. format(File, 56, "Posições/%s.txt", pName); // Cria o "caminho" até o local onde será salvo o Arquivo com a posição do Player
  23. GetPlayerPos(playerid, pPosX[playerid], pPosY[playerid], pPosZ[playerid]); // Pega a Posição do Player em X, Y e Z, e converte para "pPosX", "pPosY" e "pPosZ", respectivamente.
  24. GetPlayerFacingAngle(playerid, pPosA[playerid]); // Pega o Ângulo do Player em A e converte para pPosA, logo pPosA = Ângulo do Player
  25. if(!DOF2_FileExists(File)) // Checa se a File existe
  26. {
  27. DOF2_CreateFile(File); // Se não existir, cria
  28. }
  29. DOF2_SetFloat(File, "PosX", pPosX[playerid]); // Escreve dentro do Arquivo: "PosX = pPosX (posição que pegamos antes, lembra ?)
  30. DOF2_SetFloat(File, "PosY", pPosY[playerid]); // Escreve dentro do Arquivo: "PosY = pPosY (posição que pegamos antes, lembra ?)
  31. DOF2_SetFloat(File, "PosZ", pPosZ[playerid]); // Escreve dentro do Arquivo: "PosZ = pPosZ (posição que pegamos antes, lembra ?)
  32. DOF2_SetFloat(File, "PosA", pPosA[playerid]); // Escreve dentro do Arquivo: "PosA = pPosA (posição que pegamos antes, lembra ?)
  33. return 1;
  34. }
  35.  
  36. public OnPlayerSpawn(playerid)
  37. {
  38. new pName[MAX_PLAYER_NAME], File[56];
  39. GetPlayerName(playerid, pName, sizeof(pName)); // Pega o Nome (nick) do Player e converte para "pName", assim "pName" = Nick
  40. format(File, sizeof(File), "Posições/%s.txt", pName); // Cria o "caminho" até o local onde está salvo o Arquivo com a posição do Player
  41. if(DOF2_FileExists(File) && SpawnarInPos[playerid] == 1) // SE o Arquivo existir e SE o Player deve ser colocado nas Coordenadas que estava quando deixou o jogo
  42. {
  43. pPosX[playerid] = DOF2_GetFloat(File, "PosX"); //Busca dentro do Arquivo a "PosX" e transforma em "pPosX"
  44. pPosY[playerid] = DOF2_GetFloat(File, "PosY"); //Busca dentro do Arquivo a "PosY" e transforma em "pPosY"
  45. pPosZ[playerid] = DOF2_GetFloat(File, "PosZ"); //Busca dentro do Arquivo a "PosZ" e transforma em "pPosZ"
  46. pPosA[playerid] = DOF2_GetFloat(File, "PosA"); //Busca dentro do Arquivo a "PosA" e transforma em "pPosA"
  47. SetPlayerPos(playerid, pPosX[playerid], pPosY[playerid], pPosZ[playerid]); // Seta a posição do Player para a que estava no Arquivo
  48. SetPlayerFacingAngle(playerid, pPosA[playerid]); // Seta o Ângulo do Player para o que estava no arquivo
  49. SetCameraBehindPlayer(playerid); // Coloca a Câmera atrás da Skin
  50. SendClientMessage(playerid, -1, "Você foi teleportado para o local onde estava antes de sair do jogo pela última vez."); // Manda a ele uma mensagem
  51. SpawnarInPos[playerid] = 0; // Define que o mesmo não deve mais ser Spawnado na posição que está no Arquivo até Relogar.
  52. }
  53. return 1;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement