Mám takový problém, jde o ukládání, používám y_ini, s tím, že mi vždycky fungovalo, jen nevím co jsem teď jako udělal špatně, procházel jsem to všechno asi 100x a furt nevím, kde mám chybu :/ Tak jestli by jsi měl chvilku a kouknul se na to ? :/
enum pInfo
{
pPass,
Float:pPos_x,
Float:pPos_y,
Float:pPos_z,
pSekundy,
pMinuty,
pHodiny,
pDny
}
new PlayerInfo[MAX_PLAYERS][pInfo];
#define Path "/Hraci/%s.ini"
OnPlayerConnect:
if(fexist(UserPath(playerid)))
{
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,"Prihlášení","\n\nProsím, prihlas se, aby si mohl hrát.\n\n\tZadej zde prosím své heslo:","OK","Odejít");
format(string, sizeof(string), "< Connect > Hrác %s se pripojil na server. (Registrovaný hráč)", GetName(playerid));
SCMTA(B_BILA, string);
}
else
{
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Registrace San Francisco and near Villages Life","\n\nProsím, zde zadej své heslo, kterým se budeš přihlašovat vždy, když přijdeš na server:","Registrovat","Odejít");
format(string, sizeof(string), "< Connect > Hrác %s se pripojil na server. (Nový hráč)", GetName(playerid));
SCMTA(B_BILA, string);
}
OnPlayerDisconnect:
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
new
Float:x,
Float:y,
Float:z
;
GetPlayerPos(playerid,x,y,z);
PlayerInfo[playerid][pPos_x] = x;
PlayerInfo[playerid][pPos_y] = y;
PlayerInfo[playerid][pPos_z] = z;
INI_WriteFloat(File,"Pos_x",PlayerInfo[playerid][pPos_x]);
INI_WriteFloat(File,"Pos_y",PlayerInfo[playerid][pPos_y]);
INI_WriteFloat(File,"Pos_z",PlayerInfo[playerid][pPos_z]);
INI_WriteInt(File,"Sekundy",PlayerInfo[playerid][pSekundy]);
INI_WriteInt(File,"Minuty",PlayerInfo[playerid][pMinuty]);
INI_WriteInt(File,"Hodiny",PlayerInfo[playerid][pHodiny]);
INI_WriteInt(File,"Dny",PlayerInfo[playerid][pDny]);
INI_Close(File);
Spawn:
if(OnlineInfo[playerid][Zemrel] == 0)
{
if(PlayerInfo[playerid][pPos_x] == 0 && PlayerInfo[playerid][pPos_y] == 0 && PlayerInfo[playerid][pPos_z] == 0)
{
SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
SetPlayerPos(playerid, -2310.2659, 139.6259, 40.6978);
SetPlayerInterior(playerid, 0);
}
else
{
SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
SetPlayerPos(playerid, PlayerInfo[playerid][pPos_x], PlayerInfo[playerid][pPos_y], PlayerInfo[playerid][pPos_z]);
SetPlayerInterior(playerid, PlayerInfo[playerid][pInterier]);
}
}
else if(OnlineInfo[playerid][Zemrel] == 1)
{
SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
SetPlayerPos(playerid, -2655.0818, 639.1853, 14.4531);
SetTimerEx("ResetDeath", 200, false, "i", playerid);
SetPlayerInterior(playerid, PlayerInfo[playerid][pInterier]);
GivePlayerMoney(playerid, -150);
}
Response u register:
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
INI_WriteInt(File,"Password",udb_hash(inputtext));
INI_WriteFloat(File,"Pos_x",0);
INI_WriteFloat(File,"Pos_y",0);
INI_WriteFloat(File,"Pos_z",0);
INI_WriteInt(File,"Sekundy",0);
INI_WriteInt(File,"Minuty",0);
INI_WriteInt(File,"Hodiny",0);
INI_WriteInt(File,"Dny",0);
INI_Close(File);
Public:
funkce LoadUser_data(playerid,name[],value[])
{
INI_Int("Password",PlayerInfo[playerid][pPass]);
INI_Float("Pos_x",PlayerInfo[playerid][pPos_x]);
INI_Float("Pos_y",PlayerInfo[playerid][pPos_y]);
INI_Float("Pos_z",PlayerInfo[playerid][pPos_z]);
INI_Int("Sekundy",PlayerInfo[playerid][pSekundy]);
INI_Int("Minuty",PlayerInfo[playerid][pMinuty]);
INI_Int("Hodiny",PlayerInfo[playerid][pHodiny]);
INI_Int("Dny",PlayerInfo[playerid][pDny]);
return 1;
}
Jestli se ti do toho nechce, tak to procházet nemusíš
Každopádně jde o to, že připojí-li se Hráč 1, objeví se na pozici, kde by se měl objevit každý hráč, s tím, že když se pohne někam a pak ukončí hru, tak se Hráč 2 objeví na pozici Hráč 1, s tím, že má nahráno tolik minut, jako Hráč 1 a Hrač 2 když se odpojí, Hráč 3 se objeví na pozici Hráč 1 s nahráným časem jako má Hráč 2 :/ Vůbec nevím kde mám chybu ale :/