Szerző Téma: GetPlayerPos lehetetlen koordinátákat ad  (Megtekintve 1277 alkalommal)

GetPlayerPos lehetetlen koordinátákat ad
« Dátum: 2014. Július 10. - 17:14:08 »
0 Show voters
Mikor kilép a játékos, lekérnem az adatokat, hogy aztán ugyanoda spawnoljon,
de ilyen lehetetlen koordinátákat ad meg:
PosX=-994438464.000000
PosY=1159858944.000000
PosZ=1113545856.000000
« Utoljára szerkesztve: 2014. Július 10. - 19:22:14 írta ZyZu. »

Nem elérhető jana4

  • 5929
  • Ex Staff
    • Profil megtekintése
GetPlayerPos lehetetlen koordinátákat ad
« Válasz #1 Dátum: 2014. Július 10. - 17:21:17 »
0 Show voters
Bemásolnád kérlek a kódot? Ebbõl sokat nem tudtunk meg.

GetPlayerPos lehetetlen koordinátákat ad
« Válasz #2 Dátum: 2014. Július 10. - 17:22:35 »
0 Show voters
stock SaveData(playerid)//adatok mentése.
{
new string[200];
format(string,sizeof(string),\"Users/%s.ini\",pName(playerid));
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);
    dfile_Open(string);
    dfile_MultiSet(\"fff\",
      \"PosX\",X,
      \"PosY\",Y,
      \"PosZ\",Z
    );
    dfile_SaveFile();
    dfile_CloseFile();
return true;
}

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
GetPlayerPos lehetetlen koordinátákat ad
« Válasz #3 Dátum: 2014. Július 10. - 17:26:01 »
0 Show voters
Nem igazán vagyok otthon a \'dfile\'-ban, de régebbi dinis tapasztalatokból gondolva nem kéne MultiSet helyett MultiFloat, vagy ilyesmi? Ha ilyen nincs benne, bocsi a hülyeségért.

GetPlayerPos lehetetlen koordinátákat ad
« Válasz #4 Dátum: 2014. Július 10. - 17:34:23 »
0 Show voters
ez szerint ennek tökéletesen mûködnie kéne
http://forum.sa-mp.com/showthread.php?t=218026

Dupla hozzászólás automatikusan összefûzve. ( 2014. Július 10. - 18:57:27 )

rájöttem, hogy ezeket a koordinátákat csak a beolvasás után menti igy el.
szóval rosszul olvassa be. de ebben mit lehet rosszul beolvasni?
 
stock LoadData(playerid)
{
    new string[200];
format(string,sizeof(string),\"Users/%s.ini\",pName(playerid));
    dfile_Open(string);
dfile_MultiGet(\"fff\",
      \"PosX\",pInfo[playerid][PosX],
      \"PosY\",pInfo[playerid][PosY],
      \"PosZ\",pInfo[playerid][PosZ]
    );
dfile_CloseFile();
SetPlayerPos(playerid,pInfo[playerid][PosX],pInfo[playerid][PosY],pInfo[playerid][PosZ]);
return true;
}
« Utoljára szerkesztve: 2014. Július 10. - 18:57:27 írta bencarter007 »

Nem elérhető jana4

  • 5929
  • Ex Staff
    • Profil megtekintése
GetPlayerPos lehetetlen koordinátákat ad
« Válasz #5 Dátum: 2014. Július 10. - 19:08:57 »
0 Show voters
Nálam teljesen jó, dini-vel vetettem össze.
 

#include a_samp
#include dini
#include dfile
public OnPlayerDisconnect(playerid, reason)
{
new Float:pos[3], string[256], string2[256];
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
format(string, sizeof(string), \"TesztDFILE/%s.ini\", pName(playerid)); // dfile
format(string2, sizeof(string2), \"TesztDINI/%s.ini\", pName(playerid)); // dini
dfile_Create(string); // Létrehozom
dfile_Open(string); // Megnyitom
    dfile_MultiSet(\"fff\", \"PosX\", pos[0], \"PosY\", pos[1], \"PosZ\", pos[2]); // Beleírom
    dfile_SaveFile(); // Elmentem
    dfile_CloseFile(); // Bezárom
   
    dini_Create(string2);
    dini_FloatSet(string2, \"PosX\", pos[0]);
    dini_FloatSet(string2, \"PosY\", pos[1]);
    dini_FloatSet(string2, \"PosZ\", pos[2]);
return 1;
}
stock pName(playerid)
{
new n[24];
GetPlayerName(playerid, n, 24);
return n;
}

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
GetPlayerPos lehetetlen koordinátákat ad
« Válasz #6 Dátum: 2014. Július 10. - 19:27:01 »
0 Show voters
Úgy tudom elérhetõ a dfileban is a float olvasás illetve mentés.
dfile_WriteFloat

dfile_ReadFloat

GetPlayerPos lehetetlen koordinátákat ad
« Válasz #7 Dátum: 2014. Július 10. - 19:32:44 »
0 Show voters
érdekes módon tökéletesen elmenti, de mikor betölti, már mintha szorozta volna egy összevissza értékkel...

Nem elérhető jana4

  • 5929
  • Ex Staff
    • Profil megtekintése
GetPlayerPos lehetetlen koordinátákat ad
« Válasz #8 Dátum: 2014. Július 10. - 20:06:47 »
0 Show voters
Rájöttem a hibára, rossz a MultiGet.

Tessék, a javított változat:

 

stock LoadData(playerid)
{
    new string[200];
        format(string,sizeof(string),\"Users/%s.ini\",pName(playerid));
    dfile_Open(string);
     pInfo[playerid][PosX] = dfile_ReadFloat(\"PosX\");
     pInfo[playerid][PosY] = dfile_ReadFloat(\"PosY\");
     pInfo[playerid][PosZ] = dfile_ReadFloat(\"PosZ\");
     dfile_CloseFile();
        SetPlayerPos(playerid, pInfo[playerid][PosX], pInfo[playerid][PosY], pInfo[playerid][PosZ]);
        return 1;
}

 


Tesztelésre használt kód:
 

#include a_samp
#include dini
#include dfile
public CallMePlease(playerid);
public OnPlayerSpawn(playerid)
{
SetTimerEx(\"CallMePlease\", 4000, false, \"i\", playerid);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new Float:pos[3], string[256], string2[256];
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
format(string, sizeof(string), \"TesztDFILE/%s.ini\", pName(playerid)); // dfile
format(string2, sizeof(string2), \"TesztDINI/%s.ini\", pName(playerid)); // dini
       
dfile_Create(string); // Létrehozom
dfile_Open(string); // Megnyitom
    dfile_MultiSet(\"fff\", \"PosX\", pos[0], \"PosY\", pos[1], \"PosZ\", pos[2]); // Beleírom
    dfile_SaveFile(); // Elmentem
    dfile_CloseFile(); // Bezárom
   
    dini_Create(string2);
    dini_FloatSet(string2, \"PosX\", pos[0]);
    dini_FloatSet(string2, \"PosY\", pos[1]);
    dini_FloatSet(string2, \"PosZ\", pos[2]);
return 1;
}
public CallMePlease(playerid)
{
SendClientMessage(playerid, -1, \"CallMePlease meghívva!\");
new Float:pos[3], string[256], msg[128];
format(string, sizeof(string), \"TesztDFILE/%s.ini\", pName(playerid));
dfile_Open(string);
//dfile_MultiGet(\"fff\", pos[0], \"PosY\", pos[1], \"PosZ\", pos[2]);
pos[0] = dfile_ReadFloat(\"PosX\");
pos[1] = dfile_ReadFloat(\"PosY\");
pos[2] = dfile_ReadFloat(\"PosZ\");
SetPlayerPos(playerid, pos[0], pos[1], pos[2]);
SendClientMessage(playerid, -1, \"Beolvasott koordináták:\");
format(msg, 128, \"X: %f  |  Y: %f  |  Z: %f\", pos[0], pos[1], pos[2]);
SendClientMessage(playerid, -1, msg);
dfile_CloseFile();
return 1;
}
stock pName(playerid)
{
new n[24];
GetPlayerName(playerid, n, 24);
return n;
}

GetPlayerPos lehetetlen koordinátákat ad
« Válasz #9 Dátum: 2014. Július 11. - 01:08:17 »
0 Show voters
valamiért megwarningolja a 6,7,8as sort, amit irtál

Nem elérhető jana4

  • 5929
  • Ex Staff
    • Profil megtekintése
GetPlayerPos lehetetlen koordinátákat ad
« Válasz #10 Dátum: 2014. Július 14. - 20:30:23 »
0 Show voters
Megoldódott a probléma? Nálam rendben van a kód.
[pawn]
     pInfo[playerid][PosX] = dfile_ReadFloat(\"PosX\");
     pInfo[playerid][PosY] = dfile_ReadFloat(\"PosY\");
     pInfo[playerid][PosZ] = dfile_ReadFloat(\"PosZ\");
[/pawn]
Ha ezekre gondolsz, ez a te problémád, ugyanis biztos nincs létrehozva az enum... Vagy nem tudom.

Nem elérhető Flash

  • 5726
  • (っ◕‿◕)っ
    • Profil megtekintése
GetPlayerPos lehetetlen koordinátákat ad
« Válasz #11 Dátum: 2014. Augusztus 12. - 16:09:51 »
0 Show voters
[mod]A téma már 1 hónapja nyitva van, de a témanyitó tengap is fent volt. Ha megoldódott a téma, kérlek zárd![/mod]

GetPlayerPos lehetetlen koordinátákat ad
« Válasz #12 Dátum: 2014. Augusztus 13. - 16:57:03 »
0 Show voters
nem oldódott meg, de zárok, ha a tisztelt admin elvtárs uraság szeretné

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal