Szerző Téma: Regisztrációs rendszerben pozíciómentés  (Megtekintve 847 alkalommal)

Regisztrációs rendszerben pozíciómentés
« Dátum: 2014. június 20. - 17:59:44 »
0 Show voters
Sziasztok!
Még kezdõ scripter vagyok, de nekiálltam egy regisztrációs rendszer elkészítésének. Meg is tudtam csinálni, de nem tudom, hogy kell beletenni a pozició elmentést. El tudjátok mondani??
Vagy esetleg tudtok küldeni egy egyszerû regisztrációs rendszert, amiben ez benne van? Annyit kérek ne mysql legyen.
Elõre is köszönöm! ;D
« Utoljára szerkesztve: 2014. június 21. - 15:06:06 írta Flash »

Regisztrációs rendszerben pozíciómentés
« Válasz #1 Dátum: 2014. június 20. - 18:41:50 »
0 Show voters
elmented, stringgé alakítod, elmented, mint karakterláncot, és beolvasásnak sscanf segítségével szétdarabolod.. ez a legegyszerûbb..
vagy.. elmented pozíciónként, és 3 változót használsz a betöltésére..
a lényeg, hogy OnPlayerDisconnect alatt mentsd el, és belépés után OnPlayerSpawn alatt töltsd be.
csinálhatsz egy változót, ami leellenõrzi, hogy elõször spawnol-e a játékos, és csak akkor tölti be.. ez se valami nehéz, csak egy kis fantázia kell hozzá. :)

Regisztrációs rendszerben pozíciómentés
« Válasz #2 Dátum: 2014. június 20. - 19:23:52 »
0 Show voters
Bocs, de mint mondtam nem vagyok ász...
Letudnád írni mit írjak és hova?
Azért kösz, sajnos csak annyit értettem, hogy az OnPlayerDisconnecthez és OnPlayerSpawnhoz kell írjak valamit ;)
« Utoljára szerkesztve: 2014. június 20. - 19:25:47 írta QiudHUN »

Regisztrációs rendszerben pozíciómentés
« Válasz #3 Dátum: 2014. június 20. - 21:42:16 »
0 Show voters
Helló!
 
#include <a_samp>
#include <dini>
enum p_data
{
Float:last_x,
Float:last_y,
Float:last_z
}
new PlayerInfo[MAX_PLAYERS][p_data];
public OnPlayerConnect(playerid)
{
//Betölti a pozíciót.
new str[128];
format(str,sizeof(str),\"!!!CÉLHELY - JÁTÉKOS FÁJL: EZT ÍRD ÁT!!!\");
if(dini_Exists(str))
{
    PlayerInfo[playerid][last_x] = dini_Float(str,\"LastX\");
PlayerInfo[playerid][last_y] = dini_Float(str,\"LastY\");
PlayerInfo[playerid][last_z] = dini_Float(str,\"LastZ\");
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
//Elmenti a pozíciót.
new str[128];
format(str,sizeof(str),\"!!!CÉLHELY - JÁTÉKOS FÁJL: EZT ÍRD ÁT!!!\");
if(!dini_Exists(str))dini_Create(str);
GetPlayerPos(playerid,PlayerInfo[playerid][last_x],PlayerInfo[playerid][last_y],PlayerInfo[playerid][last_z]);
dini_FloatSet(str,\"LastX\",PlayerInfo[playerid][last_x]);
dini_FloatSet(str,\"LastY\",PlayerInfo[playerid][last_y]);
dini_FloatSet(str,\"LastZ\",PlayerInfo[playerid][last_z]);
return 1;
}
public OnPlayerSpawn(playerid)
{
SetPlayerPos(playerid,PlayerInfo[playerid][last_x],PlayerInfo[playerid][last_y],PlayerInfo[playerid][last_z]);
return 1;
}

Regisztrációs rendszerben pozíciómentés
« Válasz #4 Dátum: 2014. június 20. - 22:36:38 »
0 Show voters
Nagyon szépen köszönöm !!!

Regisztrációs rendszerben pozíciómentés
« Válasz #5 Dátum: 2014. június 20. - 22:43:35 »
0 Show voters
ezzel az a baj, hogy minden spawnoláskor ugyanoda fogja rakni a játékost, ahol legutoljára kilépett.

Nem elérhető huhboy

  • 894
  • huhboy
    • Profil megtekintése
Regisztrációs rendszerben pozíciómentés
« Válasz #6 Dátum: 2014. június 20. - 23:31:07 »
0 Show voters
Idézetet írta: TengeriMalac date=1403297015\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"48900\" data-ipsquote-contentclass=\"forums_Topic
ezzel az a baj, hogy minden spawnoláskor ugyanoda fogja rakni a játékost, ahol legutoljára kilépett.
 
akkor egyszerûen létrehoz hozzá mégegy változót, amivel leellenõrizheti, hogy elsõ spawn-e...
Spoiler for HackFlux scriptje az ellenõrzéssel.:


#include <a_samp>
#include <dini>
enum p_data
{
        Float:last_x,
        Float:last_y,
        Float:last_z,
FirstSpawn
}
new PlayerInfo[MAX_PLAYERS][p_data];
public OnPlayerConnect(playerid)
{
        //Betölti a pozíciót.
        new str[128];
        format(str,sizeof(str),\"!!!CÉLHELY - JÁTÉKOS FÁJL: EZT ÍRD ÁT!!!\");
        if(dini_Exists(str))
        {
            PlayerInfo[playerid][last_x] = dini_Float(str,\"LastX\");
                PlayerInfo[playerid][last_y] = dini_Float(str,\"LastY\");
                PlayerInfo[playerid][last_z] = dini_Float(str,\"LastZ\");
        }
PlayerInfo[playerid][FirstSpawn] = 0;
        return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
        //Elmenti a pozíciót.
        new str[128];
        format(str,sizeof(str),\"!!!CÉLHELY - JÁTÉKOS FÁJL: EZT ÍRD ÁT!!!\");
        if(!dini_Exists(str))dini_Create(str);
        GetPlayerPos(playerid,PlayerInfo[playerid][last_x],PlayerInfo[playerid][last_y],PlayerInfo[playerid][last_z]);
        dini_FloatSet(str,\"LastX\",PlayerInfo[playerid][last_x]);
        dini_FloatSet(str,\"LastY\",PlayerInfo[playerid][last_y]);
        dini_FloatSet(str,\"LastZ\",PlayerInfo[playerid][last_z]);
        return 1;
}
public OnPlayerSpawn(playerid)
{
if(PlayerInfo[playerid][FirstSpawn] == 0)
{
           SetPlayerPos(playerid,PlayerInfo[playerid][last_x],PlayerInfo[playerid][last_y],PlayerInfo[playerid][last_z]);
           PlayerInfo[playerid][FirstSpawn] = 1;
}
else
{
    //Minden más esetben
    SetPlayerPos(playerid, 0.0, 0.0, 10.0);
}
        return 1;
}

Nem elérhető BackUP

  • 908
    • Profil megtekintése
Regisztrációs rendszerben pozíciómentés
« Válasz #7 Dátum: 2014. június 21. - 00:10:35 »
0 Show voters
Minek változókkal kínlódni? ???
 
SetSpawnInfo
SpawnPlayer

 
oda kell rakni, ahol bejelentkezik.
« Utoljára szerkesztve: 2014. június 21. - 00:12:51 írta BackUP »

Nem elérhető huhboy

  • 894
  • huhboy
    • Profil megtekintése
Regisztrációs rendszerben pozíciómentés
« Válasz #8 Dátum: 2014. június 21. - 00:20:33 »
0 Show voters
Idézetet írta: BackUP date=1403302235\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"48900\" data-ipsquote-contentclass=\"forums_Topic
Minek változókkal kínlódni? ???
 
SetSpawnInfo
SpawnPlayer

 
oda kell rakni, ahol bejelentkezik.
 
szerintem sokkal egyszerûbb egyszer leellenõrizni, mint mindig váltogatni :D de persze megszokás, és ízlés kérdése, ki hogy szereti :D

Nem elérhető KovaNovik

  • 1121
  • KovaNovik
    • Profil megtekintése
Regisztrációs rendszerben pozíciómentés
« Válasz #9 Dátum: 2014. június 21. - 00:20:57 »
0 Show voters
Idézetet írta: BackUP date=1403302235\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"48900\" data-ipsquote-contentclass=\"forums_Topic
Minek változókkal kínlódni? ???
 
SetSpawnInfo
SpawnPlayer

 
oda kell rakni, ahol bejelentkezik.
 
Én is így csinálom, de halálkor nem vált be.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal