Jump to content
  • 0

pomoc Ukládání souboru pod jménem...


snake3321

Dotaz

Zdravím, před chvílí jsem se snažil vytvořit script na uložení pozice hráče, ovšem potřebuji uložit soubor pod jménem, nevím už co mám dělat řeším to už 2 hodiny a pořád nevím co s tím, tak se ptám, jak to udělat, celý pawn kód níže... (Používám Dini).

PS: Nechte si prosím připomínky jak je Dini špatné...

 

Kód:

 

 

#include <a_samp>
#include <zcmd>
#include <Dini>
 
new cesta[50], jmeno[MAX_PLAYERS], jmeno2[MAX_PLAYERS];
new Float:X, Float:Y, Float:Z;
 
forward tele(playerid);
 
CMD:ulozitpos(playerid, params[])
{
    format(cesta, sizeof(cesta), "/pozice/%s.txt", jmeno[playerid]);
    GetPlayerPos(playerid,X,Y,Z);
    GetPlayerName(playerid, jmeno, sizeof(jmeno));
    dini_Create(cesta);
    dini_Set(cesta, jmeno, "jmeno");
    dini_FloatSet(cesta, "X", X);
    dini_FloatSet(cesta, "Y", Y);
    dini_FloatSet(cesta, "Z", Z);
    SendClientMessage(playerid, 0xFF0000AA, "[ ! ] {FF9900}Pozice uložena {FF0000}[ ! ]");
return 1;
}
 
CMD:nacistpos(playerid, params[])
{
    format(cesta, sizeof(cesta), "/pozice/%s.txt", jmeno[playerid]);
    if(!IsPlayerAdmin(playerid)) return SetTimerEx("tele", 10000, false, "i", playerid), SendClientMessage(playerid, 0xFF0000AA, "[ ! ] {FF9900}Teleportován/a budeš za 10 sekund {FF0000}[ ! ]");
    {
        GetPlayerName(playerid, jmeno, sizeof(jmeno));
dini_Get(cesta, "jmeno");
X = dini_Float(cesta, "X");
Y = dini_Float(cesta, "Y");
Z = dini_Float(cesta, "Z");
SetPlayerPos(playerid,X,Y,Z);
SendClientMessage(playerid, 0xFF0000AA, "[ ! ] {FF9900}Pozice načtena, byl/a jsi teleportován/a {FF0000}[ ! ]");
    }
return 1;
}
 
public tele(playerid)
{
    format(cesta, sizeof(cesta), "/pozice/%s.txt", jmeno[playerid]);
    GetPlayerName(playerid, jmeno, sizeof(jmeno));
dini_Get(cesta, "jmeno");
X = dini_Float(cesta, "X");
Y = dini_Float(cesta, "Y");
Z = dini_Float(cesta, "Z");
SetPlayerPos(playerid,X,Y,Z);
SendClientMessage(playerid, 0xFF0000AA, "[ ! ] {FF9900}Pozice načtena, byl/a jsi teleportován/a {FF0000}[ ! ]");
return 1;
}

 

 

Link to comment
Share on other sites

10 odpovědí na tuto otázku

Recommended Posts

  • 0

Davas tam zbytocne   dini_Set(cesta, jmeno, "jmeno"); keďže meno ukladas v tom formate format(cesta, sizeof(cesta), "/pozice/%s.txt", jmeno[playerid]); Takže to daj proste preč dini_Set(cesta,jmeno,"jmeno"); a dini_Get(cesta,"jmeno,"Jmeno");.

Link to comment
Share on other sites

  • 0

To nedává smysl :d, to dini_Set otřebuji pro zapisování do souboru a dini_Get pro čtení..

~> Udělej, co říká. To ti někdo pomůže, a ty jeho pomoc odmítneš jen, protože se ti tam něco nezdá, čemu nerozumíš?

Link to comment
Share on other sites

  • 0

Stále mi to ukládá jen soubor bez názvu...

 

Edit: Portne mě to někam na nějáký "default" souřadnice asi :d Nejdřív padám potom se zjevím někde u farmy s těma letadlama (nevím jaký je jejich název)

Edited by snake3321
Link to comment
Share on other sites

  • 0
~> Při ukládání neustálé vytváříš nový a nový soubor. Musíš podmínkovat, jestli už není vytvořený (říkal jsem ti, ať nepoužíváš jiný fsystém jen, protože si myslíš, že když bude bez errorů, tak bude fungovat bezchybně).
Link to comment
Share on other sites

  • 0

Dobrá, hele díky za tvojí trpělivost se mnou :d

 

Edit: Omlouvám se za další edit :d Ale podmínku tam mám, takže nevytvářím další a další soubor, mám tam nejdříve ověření zda soubor existuje a pokud ne tak ho vytvoří...

Edit 2.. : :d, omlouvám se, tuto podmínku tam nemám, vůbec jsem nespal a spletl jsem se.. :d

Edited by snake3321
Link to comment
Share on other sites

  • 0

~> Tak, ať z toho zase neděláme 5 stránkový help..

 

 

 

#pragma unused DOF2_Exit

new
	Float: Pos[3],
	Cesta[30],
	Nick[MAX_PLAYER_NAME+1];

CMD:ulozitpos(playerid, params[]) {

	GetPlayerName(playerid, Nick, sizeof(Nick));
	format(Cesta, sizeof(Cesta), "pozice/%s.txt", Nick);
	GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
	if (!DOF2_FileExists(Cesta)) DOF2_CreateFile(Cesta);
	DOF2_SetFloat(Cesta, "X", Pos[0]);
	DOF2_SetFloat(Cesta, "Y", Pos[1]);
	DOF2_SetFloat(Cesta, "Z", Pos[2]);
	SendClientMessage(playerid, 0xFF0000AA, "[ ! ] {FF9900}Pozice uložena {FF0000}[ ! ]");
	return 1;
}

CMD:nacistpos(playerid, params[]) {

	SetTimerEx("tele", 10000, false, "i", playerid);
	SendClientMessage(playerid, 0xFF0000AA, "[ ! ] {FF9900}Teleportován/a budeš za 10 sekund {FF0000}[ ! ]");
	return 1;
}

forward tele(playerid);
public tele(playerid) {

	GetPlayerName(playerid, Nick, sizeof(Nick));
	format(Cesta, sizeof(Cesta), "pozice/%s.txt", Nick);
	Pos[0] = DOF2_GetFloat(Cesta, "X");
	Pos[1] = DOF2_GetFloat(Cesta, "Y");
	Pos[2] = DOF2_GetFloat(Cesta, "Z");
	SetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
	SendClientMessage(playerid, 0xFF0000AA, "[ ! ] {FF9900}Pozice načtena, byl/a jsi teleportován/a {FF0000}[ ! ]");
	return 1;
}

 

Link to comment
Share on other sites

  • 0
  • Hlavní moderátor
CMD:nacistpos(playerid, params[]) {
 
	SetTimer("tele", 10000, false);
	SendClientMessage(playerid, 0xFF0000AA, "[ ! ] {FF9900}Teleportován/a budeš za 10 sekund {FF0000}[ ! ]");
	return 1;
}
 
forward tele(playerid);
public tele(playerid) {
 
	//...
}

 

Pozor SB, časuješ funkci bez parametrů, ale při její definici parametr máš. V tomhle případě bude mít vždy hodnotu 0.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...