Skripta koju koristim:0
Detaljan opis problema:Znaci ovako kada naprimer postavim nekom admina preko komande ili gamemastera ili vipa ili promotera i taj neko izadje i opet se uloguje(sa drugim imenom) ili napravi novi acc sa novim imenom i kada se konektuje on ima iste varijable kao i onaj id koji je izasao pre toga.
Dio skripte:
Neke slike/video za lakse dobivanje pomoci(neobavezno):
Primer:
Marko je ID 1
Ja mu dam Admina Lvl 3
I on izadje
Zatim napravi novi acc sa drugim imenom (Petar)
I Uloguje se ID 1
On dobije je admin lvl 3 kao i Marko
Sta se desava?
Postavi ovdje sistem sacuvanja njegovih varijabla, samim tim i ocitavanja.
Ovako ne mogu nikako da znam šta mu je, dok ne pogledam.
[pawn]forward LoadUser_data(playerid,name[],value[]); //Writing Informations
public LoadUser_data(playerid,name[],value[])
{
INI_Int("Password",PlayerInfo[playerid][pPass]);
INI_Int("Login",PlayerInfo[playerid][pLogin]);
INI_Int("Ban",PlayerInfo[playerid][pBan]);
INI_Int("Godine",PlayerInfo[playerid][pGodine]);
INI_String("Pol",PlayerInfo[playerid][pPol], 64);
INI_String("Drzava",PlayerInfo[playerid][pDrzava], 64);
INI_String("Email",PlayerInfo[playerid][pEmail], 64);
INI_Int("Godine Check",PlayerInfo[playerid][pGodineC]);
INI_Int("Pol Check",PlayerInfo[playerid][pPolC]);
INI_Int("Drzava Check",PlayerInfo[playerid][pDrzavaC]);
INI_Int("Email Check",PlayerInfo[playerid][pEmailC]);
INI_Int("Skin",PlayerInfo[playerid][pSkin]);
INI_Int("Cash",PlayerInfo[playerid][pCash]);
INI_Int("Banka",PlayerInfo[playerid][pBanka]);
INI_Int("GameMaster",PlayerInfo[playerid][pGM]);
INI_Int("Mute",PlayerInfo[playerid][pMute]);
INI_Int("Warn",PlayerInfo[playerid][pWarn]);
INI_Int("Nivo",PlayerInfo[playerid][pNivo]);
INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
INI_Int("Racun",PlayerInfo[playerid][pRacun]);
INI_Int("Jail",PlayerInfo[playerid][pJail]);
INI_Int("JailTime",PlayerInfo[playerid][pJailTime]);
INI_Int("DAuto",PlayerInfo[playerid][pDAuto]);
INI_Int("DMotor",PlayerInfo[playerid][pDMotor]);
INI_Int("DKamion",PlayerInfo[playerid][pDKamion]);
INI_Int("DLetelica",PlayerInfo[playerid][pDLetelica]);
INI_Int("KosacTrave",PlayerInfo[playerid][pKosacTrave]);
INI_Int("Zaposlen",PlayerInfo[playerid][pZaposlen]);
INI_Int("VozacKamiona",PlayerInfo[playerid][pVozacKamiona]);
INI_Int("VozacAutoBusa",PlayerInfo[playerid][pVozacAutoBusa]);
INI_Int("Kills",PlayerInfo[playerid][pKills]);
INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
INI_Int("Respekt",PlayerInfo[playerid][pRespekt]);
INI_Int("Gradjevinar",PlayerInfo[playerid][pGradjevinar]);
INI_Int("Mehanicar",PlayerInfo[playerid][pMehanicar]);
INI_Int("Pilot",PlayerInfo[playerid][pPilot]);
INI_Int("Ribar",PlayerInfo[playerid][pRibar]);
INI_Int("Bolnicar",PlayerInfo[playerid][pBolnicar]);
INI_Int("PromenaImena",PlayerInfo[playerid][pPromenaImena]);
INI_Int("Taksista",PlayerInfo[playerid][pTaksista]);
INI_Int("Vip",PlayerInfo[playerid][pVip]);
INI_Int("Promoter",PlayerInfo[playerid][pPromoter]);
INI_Int("Imenik",PlayerInfo[playerid][pImenik]);
INI_Int("Kredit",PlayerInfo[playerid][pKredit]);
INI_Int("Telefon",PlayerInfo[playerid][pTelefon]);
INI_Int("BrojTelefona",PlayerInfo[playerid][pBrojTelefona]);
INI_Int("Minute",PlayerInfo[playerid][pMinute]);
INI_Int("SatiIgre",PlayerInfo[playerid][pSatiIgre]);
INI_Int("Level",PlayerInfo[playerid][pLevel]);
INI_Int("Farmer",PlayerInfo[playerid][pFarmer]);
INI_Int("Zlato",PlayerInfo[playerid][pZlato]);
INI_Int("Lider",PlayerInfo[playerid][pLider]);
INI_Int("LSPDMember",PlayerInfo[playerid][pLSPDMember]);
INI_Int("Rank",PlayerInfo[playerid][pRank]);
INI_Int("InOrg",PlayerInfo[playerid][pInOrg]);
INI_Int("WantedLevel",PlayerInfo[playerid][pWantedLevel]);
INI_Int("Sat",PlayerInfo[playerid][pSat]);
return 1;
}[/pawn]
i spremanje
[pawn]stock SpremiAcc(playerid)
{
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
INI_WriteInt(File,"Banka",PlayerInfo[playerid][pBanka]);
INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
INI_WriteInt(File,"Nivo",PlayerInfo[playerid][pNivo]);
INI_WriteInt(File,"GameMaster",PlayerInfo[playerid][pGM]);
INI_WriteInt(File,"Login",PlayerInfo[playerid][pLogin]);
INI_WriteInt(File,"Skin",GetPlayerSkin(playerid));
INI_WriteInt(File,"Ban",PlayerInfo[playerid][pBan]);
INI_WriteInt(File,"Warn",PlayerInfo[playerid][pWarn]);
INI_WriteInt(File,"Mute",PlayerInfo[playerid][pMute]);
INI_WriteInt(File,"Godine",PlayerInfo[playerid][pGodine]);
INI_WriteInt(File,"Drzava",PlayerInfo[playerid][pDrzava]);
INI_WriteInt(File,"Pol",PlayerInfo[playerid][pPol]);
INI_WriteInt(File,"Email",PlayerInfo[playerid][pEmail]);
INI_WriteInt(File,"Racun",PlayerInfo[playerid][pRacun]);
INI_WriteInt(File,"Jail",PlayerInfo[playerid][pJail]);
INI_WriteInt(File,"JailTime",PlayerInfo[playerid][pJailTime]);
INI_WriteInt(File,"DAuto",PlayerInfo[playerid][pDAuto]);
INI_WriteInt(File,"DMotor",PlayerInfo[playerid][pDMotor]);
INI_WriteInt(File,"DKamion",PlayerInfo[playerid][pDKamion]);
INI_WriteInt(File,"DLetelica",PlayerInfo[playerid][pDLetelica]);
INI_WriteInt(File,"KosacTrave",PlayerInfo[playerid][pKosacTrave]);
INI_WriteInt(File,"Zaposlen",PlayerInfo[playerid][pZaposlen]);
INI_WriteInt(File,"VozacKamiona",PlayerInfo[playerid][pVozacKamiona]);
INI_WriteInt(File,"VozacAutoBusa",PlayerInfo[playerid][pVozacAutoBusa]);
INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
INI_WriteInt(File,"Respekt",PlayerInfo[playerid][pRespekt]);
INI_WriteInt(File,"Gradjevinar",PlayerInfo[playerid][pGradjevinar]);
INI_WriteInt(File,"Mehanicar",PlayerInfo[playerid][pMehanicar]);
INI_WriteInt(File,"Pilot",PlayerInfo[playerid][pPilot]);
INI_WriteInt(File,"Ribar",PlayerInfo[playerid][pRibar]);
INI_WriteInt(File,"Bolnicar",PlayerInfo[playerid][pBolnicar]);
INI_WriteInt(File,"PromenaImena",PlayerInfo[playerid][pPromenaImena]);
INI_WriteInt(File,"Taksista",PlayerInfo[playerid][pTaksista]);
INI_WriteInt(File,"Vip",PlayerInfo[playerid][pVip]);
INI_WriteInt(File,"Promoter",PlayerInfo[playerid][pPromoter]);
INI_WriteInt(File,"Imenik",PlayerInfo[playerid][pImenik]);
INI_WriteInt(File,"Kredit",PlayerInfo[playerid][pKredit]);
INI_WriteInt(File,"Telefon",PlayerInfo[playerid][pTelefon]);
INI_WriteInt(File,"BrojTelefona",PlayerInfo[playerid][pBrojTelefona]);
INI_WriteInt(File,"Minute",PlayerInfo[playerid][pMinute]);
INI_WriteInt(File,"SatiIgre",PlayerInfo[playerid][pSatiIgre]);
INI_WriteInt(File,"Level",PlayerInfo[playerid][pLevel]);
INI_WriteInt(File,"Farmer",PlayerInfo[playerid][pFarmer]);
INI_WriteInt(File,"Zlato",PlayerInfo[playerid][pZlato]);
INI_WriteInt(File,"Lider",PlayerInfo[playerid][pLider]);
INI_WriteInt(File,"LSPDMember",PlayerInfo[playerid][pLSPDMember]);
INI_WriteInt(File,"Rank",PlayerInfo[playerid][pRank]);
INI_WriteInt(File,"InOrg",PlayerInfo[playerid][pInOrg]);
INI_WriteInt(File,"WantedLevel",PlayerInfo[playerid][pWantedLevel]);
INI_WriteInt(File,"Sat",PlayerInfo[playerid][pSat]);
INI_Close(File);
return 1;
}[/pawn]
Da li si stavio da se te iste varijable na OnPlayerConnect stavljaju na default?
OnPlayerConnect
[pawn] if(fexist(UserPath(playerid)))
{
INI_ParseFile(UserPath(playerid),"LoadUser_%s",.bExtra = true,.extra = playerid);
OcistiCet(playerid, 25);
TogglePlayerControllable(playerid, 0);
TogglePlayerSpectating(playerid, 1);
TogglePlayerSpectating(playerid, 0);
TextDrawShowForPlayer(playerid, TDLog0);
TextDrawShowForPlayer(playerid, TDLog1);
TextDrawShowForPlayer(playerid, TDLog2);
TextDrawShowForPlayer(playerid, TDLog3);
TextDrawShowForPlayer(playerid, TDLog4);
TextDrawShowForPlayer(playerid, TDLog5);
TextDrawShowForPlayer(playerid, TDLog6);
TextDrawShowForPlayer(playerid, TDLog7);
TextDrawShowForPlayer(playerid, TDLog8);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,"{FFFFFF}Server-{FF0000}Login","\n","Login","Quit");
}
else
{
TutTime[playerid] = 0;
TogglePlayerControllable(playerid,0);
TogglePlayerSpectating(playerid, 1);
TogglePlayerSpectating(playerid, 0);
SetPlayerCameraPos(playerid, 1677.0198, -1492.4376, 167.3723);
SetPlayerCameraLookAt(playerid, 1676.3434, -1493.1816, 166.9373);
TextDrawShowForPlayer(playerid, Nebitan0);
TextDrawShowForPlayer(playerid, Nebitan1);
TextDrawShowForPlayer(playerid, Nebitan2);
TextDrawShowForPlayer(playerid, Nebitan3);
TextDrawShowForPlayer(playerid, Nebitan4);
TextDrawShowForPlayer(playerid, Nebitan5);
TextDrawShowForPlayer(playerid, Nebitan6);
TextDrawShowForPlayer(playerid, Nebitan7);
TextDrawShowForPlayer(playerid, Godine);
TextDrawShowForPlayer(playerid, Pol);
TextDrawShowForPlayer(playerid, Email);
TextDrawShowForPlayer(playerid, Drzava);
TextDrawShowForPlayer(playerid, Leave);
TextDrawShowForPlayer(playerid, Enter);
SelectTextDraw(playerid, Nar);
}[/pawn]
Zna li neko?
Jel imaš problema sa ostalim stvarima, npr nekom dadneš novac on napravi novi acc i ima taj novac?
Sa ocitavanjem ne vidim nigdje problem, možda ti komanda sa kojom daješ ne valja.
Ne znam, nisam siguran.
Evo komanda za postavljanje admina naprimer:
[pawn]CMD:setadmin(playerid, params[])
{
if(IsPlayerAdmin(playerid))
{
new str[128], ime[MAX_PLAYER_NAME], ime2[MAX_PLAYER_NAME], id, admin;
if(sscanf(params, "ud", id, admin)) return SCM(playerid, Nar, "Koristite: {FFFFFF}/setadmin [Igracev ID] [Admin nivo]");
if(!IsPlayerConnected(id)) return SCM(playerid, Crvena, "Pogresan ID!");
if(admin < 0 || admin > 7) return SCM(playerid, Crvena, "[ADM GRESKA] {FFFFFF}Admin nivo ne smije bit manji od 0, veci od 6!");
GPN(playerid, ime, sizeof(ime));
GPN(id, ime2, sizeof(ime2));
PlayerInfo[id][pAdmin] = admin;
format(str, 128, "* Postavljeni ste za Administratora nivo {FFFFFF}%d | {33CCFF}Vlasnik: {FFFFFF}%s", admin, ime);
SCM(id, Plava, str);
format(str, 128, "* Postavili ste {FFFFFF}%s {33CCFF}za Administratora nivo {FFFFFF}%d.", ime2, admin);
SCM(playerid, Plava, str);
format(str, 128, "* Vlasnik %s je postavio %s za Administratora nivo %d!", ime, ime2, admin);
PorukaHeadu(Crvena, str);
AdminGMLabel(playerid);
SpremiAcc(id);
}
else
{
SCM(playerid, Crvena, "[GRESKA] {FFFFFF}Nemate prisup ovoj Komandi!");
}
return 1;
}[/pawn]
Citat: ShadowNET poslato Februar 28, 2016, 21:14:55 POSLE PODNE
Zna li neko?
Nije ti problem u save/load, problem je u tome što na connectu moraš sve varijable da postaviš na 0 ( defaultne ), pogledaj šta ti je Letić rekao..
Ne razumem.Zasto bih enum varijable postavlajo na 0.
Znaci ako mu dam admina lvl 5 sledeci put kada se uloguje nema ga...
Ako mislis na varijable primera [pawn]Varijabla[MAX_PLAYERS];[/pawn]
onda da njih sve imam postavljene na 0.sa nima nije problem.
I enum varijable stavi na default.
Citat: ShadowNET poslato Februar 28, 2016, 21:44:34 POSLE PODNE
Ne razumem.Zasto bih enum varijable postavlajo na 0.
Znaci ako mu dam admina lvl 5 sledeci put kada se uloguje nema ga...
Ako mislis na varijable primera [pawn]Varijabla[MAX_PLAYERS];[/pawn]
onda da njih sve imam postavljene na 0.sa nima nije problem.
Ne razumeš zašto bi ENUM varijable postavljao na default pri konektu ?
PI[playerid][pAdmin] = 0;
Primjer /setadmin playerid lvl
stavlja varijablu Admin - igracu: playerid - level: lvl
i to ostaje i kada je playerid diskonektovan i ponovo pri konektu playerid-a on ce imati tu varijablu
zato je potrebno OPC staviti sve varijable na default :D
Hvala svima.Problem je bio sto jednostavno nisam razmislio da cak iako mu stavim sve varijable na 0 posle mu se one vracaju pri loginu.
A i nisam znao da ID pamti varijable jednostavno sam mislio da to ide preko Imena.
Hvala jos jednom. :)