GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: QiudHUN - 2014. Június 20. - 17:59:44

Cím: Regisztrációs rendszerben pozíciómentés
Írta: QiudHUN - 2014. Június 20. - 17:59:44
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
Cím: Regisztrációs rendszerben pozíciómentés
Írta: TengeriMalac - 2014. Június 20. - 18:41:50
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á. :)
Cím: Regisztrációs rendszerben pozíciómentés
Írta: QiudHUN - 2014. Június 20. - 19:23:52
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 ;)
Cím: Regisztrációs rendszerben pozíciómentés
Írta: HackFlux - 2014. Június 20. - 21:42:16
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;
}
Cím: Regisztrációs rendszerben pozíciómentés
Írta: QiudHUN - 2014. Június 20. - 22:36:38
Nagyon szépen köszönöm !!!
Cím: Regisztrációs rendszerben pozíciómentés
Írta: TengeriMalac - 2014. Június 20. - 22:43:35
ezzel az a baj, hogy minden spawnoláskor ugyanoda fogja rakni a játékost, ahol legutoljára kilépett.
Cím: Regisztrációs rendszerben pozíciómentés
Írta: huhboy - 2014. Június 20. - 23:31:07
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...


#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;
}
Cím: Regisztrációs rendszerben pozíciómentés
Írta: BackUP - 2014. Június 21. - 00:10:35
Minek változókkal kínlódni? ???
 
SetSpawnInfo
SpawnPlayer

 
oda kell rakni, ahol bejelentkezik.
Cím: Regisztrációs rendszerben pozíciómentés
Írta: huhboy - 2014. Június 21. - 00:20:33
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
Cím: Regisztrációs rendszerben pozíciómentés
Írta: KovaNovik - 2014. Június 21. - 00:20:57
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.