-
Valaki tudna Abban segíteni hogy Ahol kilép az illetõ ugyan oda tegye vissza Ha Belép? LAdmin van a szerveren!
[mod]A téma neve mindig a problémádra utaljon![/mod]
-
Használsz valamilyen adatbázis kezelõ plugint?
-
Nem.
-
Nem.
Dini -vel meg lehet csinálni.
szerintem... :hmmm:
-
És milyen módon?
-
mod elejére (Nem én irtam,találtam)
new savePname[MAX_PLAYERS][MAX_PLAYER_NAME], namecount = 0;
new Float:savePpos[MAX_PLAYERS][4];
OnPlayerDisconek alá
public OnPlayerDisconnect(playerid, reason)
{
new playername[MAX_PLAYER_NAME]; // ide lementjük a játékos nevét
GetPlayerName(playerid, playername, MAX_PLAYER_NAME); // ezzel
new bool:megvolt = false; // ezzel a logikai változóval azt nézzük meg, hogy a játékosnak lementettük-e már a pozícióját
for(new i = 0; i <= namecount; i++) // végignézzük a savePname tömböt, hogy lementettük-e már a játékos nevét. Végigmegyünk az elejétõl a namecount-ig azaz addig ahány játékos lépett már le a szerverrõl
{
if(!strcmp(savePname, playername)) // összehasonlítjuk az elmentett nevet a játékos nevével
{ // ha egyezik akkor... (Amit keresünk azt az i. rekeszben találtuk meg)
GetPlayerPos(playerid, savePpos[0], savePpos[1], savePpos[2]); // lementjük a koordinátákat
GetPlayerFacingAngle(playerid, savePpos[3]); // és az elfordulást
megvolt = true; // és csak meg lett a játékos, szóval igazat adunk a megvoltnak!
break; // leállítjuk a ciklust, mert megtaláltuk azt, amit akarunk
}
}
if(!megvolt) // no de mi van akkor ha még sem volt meg?
{
savePname[namecount] = playername; // akkor egy új helyre lementjük a játékos nevét (a namecount jelzi az új helyet is)
GetPlayerPos(playerid, savePpos[namecount][0], savePpos[namecount][1], savePpos[namecount][2]); // a pozícióit
GetPlayerFacingAngle(playerid, savePpos[namecount][3]); // az elfordulást
namecount++; // és növeljük a lementett játékosok számát
}
return 1;
}
OnPlayerSpawn alá
public OnPlayerSpawn(playerid)
{
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
for(new i = 0; i <= namecount; i++)
{
if(!strcmp(savePname, playername))
{
SetPlayerPos(playerid, savePpos[0], savePpos[1], savePpos[2]);
SetPlayerFacingAngle(playerid, savePpos[3]);
}
}
return 1;
}
Nem én irtam találtam. (SPatrik irta asszem)
-
Felesleges ez az egész boolean megoldás..
1. A booleant nem éri meg használni memóriaigénye miatt.
2. Dini-vel el is menti az adatokat.
-
Igen a bool több memóriát vesz igénybe (Gondolom)
De a Dini össze keveri a koordinátákat itt.
Nekem ezért volt a bajom vele.
TErmészetesen nem mindig de felálhat ez a hiba
-
Tessék.
new Float:x[MAX_PLAYERS],Float:y[MAX_PLAYERS],Float:z[MAX_PLAYERS];
enum pInfo
{
pPozicio,
}
public OnPlayerDisconnect(playerid, reason)
{
dini_IntSet(file,\"Pozicio\",GetPlayerPos(playerid,x[playerid],y[playerid],z[playerid]));
}
//register parancs alá
dini_IntSet(file,\"Pozicio\",GetPlayerPos(playerid,x[playerid],y[playerid],z[playerid]));
//login parancs alá
SetPlayerPos(playerid,x[playerid],y[playerid],z[playerid]);
-
Igen a bool több memóriát vesz igénybe (Gondolom)
De a Dini össze keveri a koordinátákat itt.
Nekem ezért volt a bajom vele.
TErmészetesen nem mindig de felálhat ez a hiba
Pontosabban dini_Int meg csatlakozáskor beolvasod a lementett koordinátákat, nem pedig újra állítod. dini_int, és akkor használod a SetPlayerPos függvényt.
-
Szóval akkor összegezve mit cinsáljak? Le irnátok?
Egyébként amit Mókus irt az nem jó :/
-
Jó csak rosszul csinálhattad én így csináltam meg kérdésem válaszaibol raktam össze és mûködik ha dinis az admin rendszered akkor jónak kell lennie
-
Még mindig nem találtam meg a megfelelõ leírást!
-
Tessék.
new Float:x[MAX_PLAYERS],Float:y[MAX_PLAYERS],Float:z[MAX_PLAYERS];
enum pInfo
{
pPozicio,
}
public OnPlayerDisconnect(playerid, reason)
{
dini_IntSet(file,\"Pozicio\",GetPlayerPos(playerid,x[playerid],y[playerid],z[playerid]));
}
//register parancs alá
dini_IntSet(file,\"Pozicio\",GetPlayerPos(playerid,x[playerid],y[playerid],z[playerid]));
//login parancs alá
SetPlayerPos(playerid,x[playerid],y[playerid],z[playerid]);
FloatSet kell.
-
//betöltésnél
new Float:X,
Float:Y,
Float:Z,
Float:A,
file[100];
if(fexist(file)) {
format(file, sizeof(file), \"ladmin/users/%s.sav\", PlayerName(playerid));
sscanf(dini_Get(file, \"Position\"), \"p<,>ffff\", X, Y, Z, A);
SetPlayerPos(playerid, X, Y, Z);
SetPlayerFacingAngle(playerid, A);
}
//
public OnPlayerDisconnect(playerid, reason) {
new Float:Pos[4],
string[128],
file[100];
if(!IsPlayerInAnyVehicle(playerid)) {
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
GetPlayerFacingAngle(playerid, Pos[3]);
} else {
GetVehiclePos(GetPlayerVehicleID(playerid), Pos[0], Pos[1], Pos[2]);
GetVehicleZAngle(GetPlayerVehicleID(playerid), Pos[3]);
}
format(string, sizeof(string), \"%.4f,%.4f,%.4f,%.4f\", Pos[0], Pos[1], Pos[2], Pos[3]);
format(file, sizeof(file), \"ladmin/users/%s.sav\", PlayerName(playerid));
if(fexist(file)) dini_Set(file, \"Position\", string);
return 1;
}
stock PlayerName(playerid) {
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
return name;
}
sscanf plugin kell hozzá. :)