Jump to content
  • 0

pomoc YSI, neukládá umrtí?


snake3321

Dotaz

Dobrý den,

jsem tu zas, ale berte to z té lepší stránky, nezakládám tolik témat :d. Každopádně teď k problému, jedná se o to, že v callbacku OnPlayerDeath mám napsanou funkci která mi přidá proměnnou když hráč umře či ho někdo zabije, ale mluvíme jen o tom, když hráč umře, když někoho zabije to nemám odskoušené, takže vypusťte slovo zabil, mluvíme jen o tom, když hráč umře, ale zpět k věci. Pokud hráč umře, proměnná se neukládá a mě se poté nemůže načíst do infa o hráči, takže sem dám pawn kód a zeptám se kde je chyba. Předem děkuji.

 

Kód:

 

 

public OnPlayerDeath(playerid, killerid, reason)
{
new INI:File = INI_Open(UserPath(playerid));
PlayerInfo[killerid][pKills]++;
PlayerInfo[playerid][pDeaths]++;
INI_SetTag(File, "data");
INI_WriteInt(File, "Zabiti", PlayerInfo[killerid][pKills]);
INI_WriteInt(File, "Umrel", PlayerInfo[playerid][pDeaths]);
INI_Close(File);
return 1;
}

 

 

Link to comment
Share on other sites

Recommended Posts

  • 0

Stači toto:

 

 

 

public OnPlayerDeath(playerid, killerid, reason)

{

PlayerInfo[killerid][pKills]++;

PlayerInfo[playerid][pDeaths]++;

return 1;

}

 

 

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • 0

~> Tagy nepoužívej. Do souboru, kde se hráčovi ukládají všemožné informace, jsou až zbytečné. Já je raději využívám jen, když dělám na nějakém include, kde je proměnná s polem. Takže má sice jedno jméno, ale na více účelů(jména jednotlivých adminů, barvy jednotlivých adminů aj. Jelikož pak máš možnosti nahrávat údaje ze jednotlivých tagů).

~> Raději bych tu cestu formátoval všude tam, kde ten soubor otevíráš, nebo já používám takovou super vychytávku, a to sprintf().

~> A také bys to měl ukládat hned po odchodu ze serveru. Můžeš to sice ukládat kde chceš, ale je to zbytečné. Pokud chceš zjistit údaje, tak jednoduše používej ty hodnoty, co máš v proměnných.

 

public 
	OnPlayerDisconnect(...) {

	PlayerInfo[killerid][pKills]++; PlayerInfo[playerid][pDeaths]++;
	new 
		INI:sSoubor = INI_Open(sprintf("Data/%s.sav", PlayerNick(playerid)));
	INI_WriteInt(sSoubor, "Zabiti", PlayerInfo[killerid][pKills]); INI_WriteInt(sSoubor, "Umrel", PlayerInfo[playerid][pDeaths]);
	INI_Close(sSoubor);	
Edited by SkiBig18
Link to comment
Share on other sites

  • 0

Jak si mám nadefinovat ten sprintf?

~> Sám od sebe tak jednoduše určitě ne. Doporučuji uložit jako inc a nahrávat.

 

 

/*

   sprintf()

   PAWNO: 
   native sprintf(const format[], {Float,_}:...);
   
*/

#if !defined ____sprintf
#define ____sprintf

#if !defined SPRINTF_MAX_STRING
	#define SPRINTF_MAX_STRING 4096
#endif
#if !defined SPRINTF_DEBUG_STRING
	#define SPRINTF_DEBUG_STRING "[sprintf debug] '%s'[%d]"
#endif

#assert SPRINTF_MAX_STRING > 2

new
	_s@T[SPRINTF_MAX_STRING];

#if defined SPRINTF_DEBUG
	new	const _s@V[] = SPRINTF_DEBUG_STRING;
	#define sprintf(%1) (format(_s@T, SPRINTF_MAX_STRING, %1), printf(_s@V, _s@T, strlen(_s@T)), _s@T)
#else
	#define sprintf(%1) (format(_s@T, SPRINTF_MAX_STRING, %1), _s@T)
#endif

#endif

 

Link to comment
Share on other sites

  • 0

Stále neukládá... Můžeme se prosím vyvarovat nějákým takovýmto includům? Bude mi stačit ta moje definice na stejné pozici? V tom stocku mám:

 

stock UserPath(playerid)
{
new string[128],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playername));
format(string,sizeof(string),PATH,playername);
return string;
}
Link to comment
Share on other sites

  • 0
~> Já bych to zkusil ukládat s nějakou koncovkou. Jinak mě nenapadá nic jiného, protože kód je na 100% funkční.
Link to comment
Share on other sites

  • 0

Také mě to zaráží, nevidím nikde žádnou chybu, jak je to myšleno, ta koncovka? Co přesně změnit například?

soubor.sav

Link to comment
Share on other sites

  • 0

soubor.sav

Tak taková koncovka by mě nenapadla :d každopádně změněno ale pořád nefunguje... Vážně to už nechápu protože kód mám napsán i jinde stejně, například když hráč spáchá sebevraždu,připíše se mu to takže úplně stejné: PlayerInfo[playerid][pSuicides]++; zde to mám naprosto stejně jen to PlayerInfo mám logicky takhle: PlayerInfo[playerid][pDeaths]++; jinak vše naprosto stejné jako u té sebevraždy a to se ukládá bez problému. Dám jsem část kódu z Gamemodu kde se jedná o ukládání, i tak je toho ale hodně, ovšem lepší sem dát jen tohle než sem dávat celý gamemode který má nyní přes 4 tisíce řádků..

 

Takže kód:

 

 

 
enum pInfo
{
    pPass,
    pCash,
    pKills,
    pDeaths,
    pSuicides
}
new PlayerInfo[MAX_PLAYERS][pInfo];
 
forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
INI_Int("Heslo", PlayerInfo[playerid][pPass]);
INI_Int("Penize", PlayerInfo[playerid][pCash]);
INI_Int("Zabiti", PlayerInfo[playerid][pKills]);
    INI_Int("Umrel", PlayerInfo[playerid][pDeaths]);
    INI_Int("Sebevrazd", PlayerInfo[playerid][pSuicides]);
  return 1;
}
//Stocky
stock UserPath(playerid)
{
new string[128],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playername));
format(string,sizeof(string),PATH,playername);
return string;
}
 
stock PlayerName(playerid)
{
new Name[24 + 1];
GetPlayerName(playerid, Name, sizeof(Name));
return Name;
}
 
stock udb_hash(buf[]) {
new length=strlen(buf);
    new s1 = 1;
    new s2 = 0;
    new n;
    for (n=0; n<length; n++)
    {
       s1 = (s1 + buf[n]) % 65521;
       s2 = (s2 + s1)     % 65521;
    }
    return (s2 << 16) + s1;
}
 
//Různé callbacky
public OnPlayerConnect(playerid)
{
//Zpráva po připojení hráče
GetPlayerName(playerid, jmeno, 100);
format(pripojil, sizeof(pripojil), "Hráč %s se připojil na server!", jmeno);
SCMTA(0xc5c5c5AA, pripojil);
//Registrace / login
if(fexist(UserPath(playerid)))
{
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
  ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Přihlášení", "Vítej zpět!\nDo políčka zadej své heslo:","OK","Nic");
}
else
{
  ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Registrace", "Vítejte na serveru! Zaregistrujte se prosím!\nDo políčka zadej své heslo:","OK","Nic");
}
//Barva nicku)
SetPlayerColor(playerid, PlayerColors [random(200)]);
return 1;
}
 
public OnPlayerDisconnect(playerid, reason)
{
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File, "data");
INI_WriteInt(File, "Penize", GetPlayerMoney(playerid));
INI_WriteInt(File, "Zabiti", PlayerInfo[playerid][pKills]);
INI_WriteInt(File, "Umrel", PlayerInfo[playerid][pDeaths]);
INI_WriteInt(File, "Sebevrazd", PlayerInfo[playerid][pSuicides]);
INI_Close(File);
return 1;
}
 
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch( dialogid )
    {
        case DIALOG_REGISTER:
        {
            if (!response) return Kick(playerid);
            if(response)
            {
                if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Registrace", "{FF0000}Krátké heslo!\n{FFFFFF}Vítejte na serveru! Zaregistrujte se prosím!\nDo políčka zadej své heslo:","OK","Nic");
                new INI:File = INI_Open(UserPath(playerid));
                INI_SetTag(File, "data");
                INI_WriteInt(File, "Heslo", udb_hash(inputtext));
                INI_WriteInt(File, "Penize", 50000);
                INI_WriteInt(File, "Zabiti", 0);
                INI_WriteInt(File, "Umrel", 0);
                INI_WriteInt(File, "Sebevrazd", 0);
                INI_Close(File);
                ShowPlayerDialog(playerid, 250, DIALOG_STYLE_MSGBOX, "Potvrzení", "{00FF00}Registrace proběhla úspěšně! Vítejte!","OK","");
}
        }
 
        case DIALOG_LOGIN:
        {
            if ( !response ) return Kick ( playerid );
            if( response )
            {
                if(udb_hash(inputtext) == PlayerInfo[playerid][pPass])
                {
                    new sstring[256];
                    new INI:File = INI_Open(UserPath(playerid));
                    INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
new penize = PlayerInfo[playerid][pCash];
new zabil = PlayerInfo[playerid][pKills];
new umrti = PlayerInfo[playerid][pDeaths];
new sebevrazdy = PlayerInfo[playerid][pSuicides];
                    GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]);
                    format(sstring, sizeof(sstring), "{FFFFFF}]=========== [ {00FF00}Peníze {FFFFFF}] ===========[\n{00FF00}Tvé peníze: {FFFFFF}%d$\n{FFFFFF}]=========== [ {00FF00}Zabíjení {FFFFFF}]===========[\n{00FF00}Zabil: {FFFFFF}%d\n{00FF00}Umřel: {FFFFFF}%d\n{00FF00}Sebevražd: {FFFFFF}%d", penize, zabil, umrti, sebevrazdy);
                    format(jmeno, sizeof(jmeno), "%s", PlayerName(playerid));
ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX, jmeno, sstring,"OK","");
INI_Close(File);
                }
                else
                {
                    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Přihlášení", "{FF0000}Špatné heslo!\n{FFFFFF}Vítej zpět!\nDo políčka zadej své heslo:","OK","Nic");
                }
                return 1;
            }
        }
    }
    return 1;
}
 
public OnPlayerDeath(playerid, killerid, reason)
{
new INI:File = INI_Open(UserPath(playerid));
PlayerInfo[killerid][pKills]++;
PlayerInfo[playerid][pDeaths]++;
INI_SetTag(File, "data");
INI_WriteInt(File, "Zabiti", PlayerInfo[killerid][pKills]);
INI_WriteInt(File, "Umrel", PlayerInfo[playerid][pDeaths]);
//Zde mám ještě uložení ostatních...
INI_Close(File);
return 1;
}
 
public OnPlayerSpawn(playerid)
{
ResetPlayerMoney(playerid);
new INI:File = INI_Open(UserPath(playerid));
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
new penize = PlayerInfo[playerid][pCash];
GivePlayerMoney(playerid, penize);
INI_Close(File);
return 1;
}
 
public kill(playerid)
{
new INI:File = INI_Open(UserPath(playerid));
    PlayerInfo[playerid][pSuicides]++;
    INI_SetTag(File, "data");
    INI_WriteInt(File, "Sebevrazd", PlayerInfo[playerid][pSuicides]);
SendClientMessage(playerid, 0x00FF00AA, "Sebevražda byla úspěšná!");
INI_Close(File);
return 1;
}
 
//Příkazy
CMD:info(playerid, params[])
{
new sstring[256];
new INI:File = INI_Open(UserPath(playerid));
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
new penize = PlayerInfo[playerid][pCash];
new zabil = PlayerInfo[playerid][pKills];
new umrti = PlayerInfo[playerid][pDeaths];
new sebevrazdy = PlayerInfo[playerid][pSuicides];
format(sstring, sizeof(sstring), "{FFFFFF}]=========== [ {00FF00}Peníze {FFFFFF}] ===========[\n{00FF00}Tvé peníze: {FFFFFF}%d$\n{FFFFFF}]=========== [ {00FF00}Zabíjení {FFFFFF}]===========[\n{00FF00}Zabil: {FFFFFF}%d\n{00FF00}Umřel: {FFFFFF}%d\n{00FF00}Sebevraždy: {FFFFFF}%d", penize, zabil, umrti, sebevrazdy);
format(jmeno, sizeof(jmeno), "%s", PlayerName(playerid));
ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX, jmeno, sstring,"OK","");
INI_Close(File);
return 1;
}
 
CMD:kill(playerid, params[])
{
if(!IsPlayerAdmin(playerid))
{
new INI:File = INI_Open(UserPath(playerid));
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
new string[256];
new sebevrazdy = PlayerInfo[playerid][pSuicides];
format(string, sizeof(string), "{FF9900}Opravdu chceš spáchat sebevraždu?\n{00FFFF}Počet tvých sebevražd: %d", sebevrazdy);
ShowPlayerDialog(playerid, DIALOG_Sebevrazda, DIALOG_STYLE_MSGBOX, "{00FF00}Sebevražda", string, "Ano", "Ne");
SendClientMessage(playerid, 0xFF9900AA, "Opravdu chceš spáchat sebevraždu? Můžeš být uvězněn do léčebny za pokus o sebevraždu!");
INI_Close(File);
}
else
{
   SetPlayerHealth(playerid, 0);
}
return 1;
}

 

 

Link to comment
Share on other sites

  • 0

Jak to zase myslíš? CTRL + C & CTRL + V používám jen zřídka... Například u registrace jsem ho použil konkrétně u OnDialogResponse, jinak si vše opisuji jelikož mám zájem naučit se to... Jinak, je nějáké řešení tedy?

Link to comment
Share on other sites

  • 0

Nahrávání mám, jde mi jen o ukládání, nějáký základní File systém už používat nebudu, si myslíš, že to budu celé přepisovat? Vůbec...

Link to comment
Share on other sites

  • 0

Snake3321 

Ospravedlňujem sa za svoj návrh. Páč veľa ľuďom stačí úplne iba samotné ukladanie a načítanie ktoré ti môže ponúknuť aj samotný file.inc. Samozrejme je trošku komplikovanejší pri jeho používaní čo sa tíka kódu ale na druhej strane vám dá obrovský rýchlostní výkon ktorý Y_INI tiež ponúka ale na druhej stránke nie vždy treba ini systém ktorý zbytočne spomaľuje modul.  
Netušil som ako ďaleko si pokročil vo svojej práci ale úprimne ak ti ide o rýchlosť nerobilo by ti to problém páč sám som kvôli rýchlosti urobil veľa zmien v komplexnom kóde. 

 

Link to comment
Share on other sites

  • 0

Snake3321 

 

Ospravedlňujem sa za svoj návrh. Páč veľa ľuďom stačí úplne iba samotné ukladanie a načítanie ktoré ti môže ponúknuť aj samotný file.inc. Samozrejme je trošku komplikovanejší pri jeho používaní čo sa tíka kódu ale na druhej strane vám dá obrovský rýchlostní výkon ktorý Y_INI tiež ponúka ale na druhej stránke nie vždy treba ini systém ktorý zbytočne spomaľuje modul.  

Netušil som ako ďaleko si pokročil vo svojej práci ale úprimne ak ti ide o rýchlosť nerobilo by ti to problém páč sám som kvôli rýchlosti urobil veľa zmien v komplexnom kóde. 

 

 

V pořádku, nemusíš se omlouvat, není důvod, každopádně zůstanu u YSI, fakt nemám náladu používat něco jiného... Takže pro ostatní. Dal by se něják můj problém vyřešit? Už si vážně nevím rady...

Link to comment
Share on other sites

  • 0

snake3321

Čo sa tíka tvojho problému tak môžem potvrdiť že sa dá daný problém vyriešiť. Len že si nám neukázal kód čiže sa tu môžme dohadovať a respektíve argumentovať ohľadom toho kde je chyba. 
Preto navrhujem buď ukázať kód podľa ktorého by sa našla chyba. Alebo môžeš tak tiež prečítať návod môjho kolegu Scyda kde vysvetľuje ako na registráciu v Y_INI
A podľa jednotlivých inštrukcií ktoré kolega napísal ako návod budeš hľadať chybu vo svojom kóde. 

Link nie je myslení ako dôraz reklamy ale pomoc pre snake3321. 

Ďakujem za pochopenie. 
 

Link to comment
Share on other sites

  • 0

Kód jsem sem již vkládal

 

Tak taková koncovka by mě nenapadla :d každopádně změněno ale pořád nefunguje... Vážně to už nechápu protože kód mám napsán i jinde stejně, například když hráč spáchá sebevraždu,připíše se mu to takže úplně stejné: PlayerInfo[playerid][pSuicides]++; zde to mám naprosto stejně jen to PlayerInfo mám logicky takhle: PlayerInfo[playerid][pDeaths]++; jinak vše naprosto stejné jako u té sebevraždy a to se ukládá bez problému. Dám jsem část kódu z Gamemodu kde se jedná o ukládání, i tak je toho ale hodně, ovšem lepší sem dát jen tohle než sem dávat celý gamemode který má nyní přes 4 tisíce řádků..

 

Takže kód:

 

 

 
enum pInfo
{
    pPass,
    pCash,
    pKills,
    pDeaths,
    pSuicides
}
new PlayerInfo[MAX_PLAYERS][pInfo];
 
forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
INI_Int("Heslo", PlayerInfo[playerid][pPass]);
INI_Int("Penize", PlayerInfo[playerid][pCash]);
INI_Int("Zabiti", PlayerInfo[playerid][pKills]);
    INI_Int("Umrel", PlayerInfo[playerid][pDeaths]);
    INI_Int("Sebevrazd", PlayerInfo[playerid][pSuicides]);
  return 1;
}
//Stocky
stock UserPath(playerid)
{
new string[128],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playername));
format(string,sizeof(string),PATH,playername);
return string;
}
 
stock PlayerName(playerid)
{
new Name[24 + 1];
GetPlayerName(playerid, Name, sizeof(Name));
return Name;
}
 
stock udb_hash(buf[]) {
new length=strlen(buf);
    new s1 = 1;
    new s2 = 0;
    new n;
    for (n=0; n<length; n++)
    {
       s1 = (s1 + buf[n]) % 65521;
       s2 = (s2 + s1)     % 65521;
    }
    return (s2 << 16) + s1;
}
 
//Různé callbacky
public OnPlayerConnect(playerid)
{
//Zpráva po připojení hráče
GetPlayerName(playerid, jmeno, 100);
format(pripojil, sizeof(pripojil), "Hráč %s se připojil na server!", jmeno);
SCMTA(0xc5c5c5AA, pripojil);
//Registrace / login
if(fexist(UserPath(playerid)))
{
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
  ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Přihlášení", "Vítej zpět!\nDo políčka zadej své heslo:","OK","Nic");
}
else
{
  ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Registrace", "Vítejte na serveru! Zaregistrujte se prosím!\nDo políčka zadej své heslo:","OK","Nic");
}
//Barva nicku)
SetPlayerColor(playerid, PlayerColors [random(200)]);
return 1;
}
 
public OnPlayerDisconnect(playerid, reason)
{
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File, "data");
INI_WriteInt(File, "Penize", GetPlayerMoney(playerid));
INI_WriteInt(File, "Zabiti", PlayerInfo[playerid][pKills]);
INI_WriteInt(File, "Umrel", PlayerInfo[playerid][pDeaths]);
INI_WriteInt(File, "Sebevrazd", PlayerInfo[playerid][pSuicides]);
INI_Close(File);
return 1;
}
 
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch( dialogid )
    {
        case DIALOG_REGISTER:
        {
            if (!response) return Kick(playerid);
            if(response)
            {
                if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Registrace", "{FF0000}Krátké heslo!\n{FFFFFF}Vítejte na serveru! Zaregistrujte se prosím!\nDo políčka zadej své heslo:","OK","Nic");
                new INI:File = INI_Open(UserPath(playerid));
                INI_SetTag(File, "data");
                INI_WriteInt(File, "Heslo", udb_hash(inputtext));
                INI_WriteInt(File, "Penize", 50000);
                INI_WriteInt(File, "Zabiti", 0);
                INI_WriteInt(File, "Umrel", 0);
                INI_WriteInt(File, "Sebevrazd", 0);
                INI_Close(File);
                ShowPlayerDialog(playerid, 250, DIALOG_STYLE_MSGBOX, "Potvrzení", "{00FF00}Registrace proběhla úspěšně! Vítejte!","OK","");
}
        }
 
        case DIALOG_LOGIN:
        {
            if ( !response ) return Kick ( playerid );
            if( response )
            {
                if(udb_hash(inputtext) == PlayerInfo[playerid][pPass])
                {
                    new sstring[256];
                    new INI:File = INI_Open(UserPath(playerid));
                    INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
new penize = PlayerInfo[playerid][pCash];
new zabil = PlayerInfo[playerid][pKills];
new umrti = PlayerInfo[playerid][pDeaths];
new sebevrazdy = PlayerInfo[playerid][pSuicides];
                    GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]);
                    format(sstring, sizeof(sstring), "{FFFFFF}]=========== [ {00FF00}Peníze {FFFFFF}] ===========[\n{00FF00}Tvé peníze: {FFFFFF}%d$\n{FFFFFF}]=========== [ {00FF00}Zabíjení {FFFFFF}]===========[\n{00FF00}Zabil: {FFFFFF}%d\n{00FF00}Umřel: {FFFFFF}%d\n{00FF00}Sebevražd: {FFFFFF}%d", penize, zabil, umrti, sebevrazdy);
                    format(jmeno, sizeof(jmeno), "%s", PlayerName(playerid));
ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX, jmeno, sstring,"OK","");
INI_Close(File);
                }
                else
                {
                    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Přihlášení", "{FF0000}Špatné heslo!\n{FFFFFF}Vítej zpět!\nDo políčka zadej své heslo:","OK","Nic");
                }
                return 1;
            }
        }
    }
    return 1;
}
 
public OnPlayerDeath(playerid, killerid, reason)
{
new INI:File = INI_Open(UserPath(playerid));
PlayerInfo[killerid][pKills]++;
PlayerInfo[playerid][pDeaths]++;
INI_SetTag(File, "data");
INI_WriteInt(File, "Zabiti", PlayerInfo[killerid][pKills]);
INI_WriteInt(File, "Umrel", PlayerInfo[playerid][pDeaths]);
//Zde mám ještě uložení ostatních...
INI_Close(File);
return 1;
}
 
public OnPlayerSpawn(playerid)
{
ResetPlayerMoney(playerid);
new INI:File = INI_Open(UserPath(playerid));
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
new penize = PlayerInfo[playerid][pCash];
GivePlayerMoney(playerid, penize);
INI_Close(File);
return 1;
}
 
public kill(playerid)
{
new INI:File = INI_Open(UserPath(playerid));
    PlayerInfo[playerid][pSuicides]++;
    INI_SetTag(File, "data");
    INI_WriteInt(File, "Sebevrazd", PlayerInfo[playerid][pSuicides]);
SendClientMessage(playerid, 0x00FF00AA, "Sebevražda byla úspěšná!");
INI_Close(File);
return 1;
}
 
//Příkazy
CMD:info(playerid, params[])
{
new sstring[256];
new INI:File = INI_Open(UserPath(playerid));
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
new penize = PlayerInfo[playerid][pCash];
new zabil = PlayerInfo[playerid][pKills];
new umrti = PlayerInfo[playerid][pDeaths];
new sebevrazdy = PlayerInfo[playerid][pSuicides];
format(sstring, sizeof(sstring), "{FFFFFF}]=========== [ {00FF00}Peníze {FFFFFF}] ===========[\n{00FF00}Tvé peníze: {FFFFFF}%d$\n{FFFFFF}]=========== [ {00FF00}Zabíjení {FFFFFF}]===========[\n{00FF00}Zabil: {FFFFFF}%d\n{00FF00}Umřel: {FFFFFF}%d\n{00FF00}Sebevraždy: {FFFFFF}%d", penize, zabil, umrti, sebevrazdy);
format(jmeno, sizeof(jmeno), "%s", PlayerName(playerid));
ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX, jmeno, sstring,"OK","");
INI_Close(File);
return 1;
}
 
CMD:kill(playerid, params[])
{
if(!IsPlayerAdmin(playerid))
{
new INI:File = INI_Open(UserPath(playerid));
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
new string[256];
new sebevrazdy = PlayerInfo[playerid][pSuicides];
format(string, sizeof(string), "{FF9900}Opravdu chceš spáchat sebevraždu?\n{00FFFF}Počet tvých sebevražd: %d", sebevrazdy);
ShowPlayerDialog(playerid, DIALOG_Sebevrazda, DIALOG_STYLE_MSGBOX, "{00FF00}Sebevražda", string, "Ano", "Ne");
SendClientMessage(playerid, 0xFF9900AA, "Opravdu chceš spáchat sebevraždu? Můžeš být uvězněn do léčebny za pokus o sebevraždu!");
INI_Close(File);
}
else
{
   SetPlayerHealth(playerid, 0);
}
return 1;
}

 

 

 

Link to comment
Share on other sites

  • 0

snake3321 

Už viem o čo ide... Našiel som ten kód a vyzerá to tak že si to prekopíroval celé. Prepáč ale čo sa tíka kopírovania mám isté zásady a úprimne pokiaľ nebudeš chápať ako to funguje nemá to zmysel. Pre to ti pomôžem následovne. 
 

Opäť ti posielam návod kolegu Scyda. Pozri si poriadne daný návod a snaž sa to pochopiť.  Prepáč že ti viac nepomôžem ale je to ako bolo písané v svätom písme. Síce nie som žiaden veľký kresťan ale niečo sa na mňa nalepilo: " Daj rybu hladujúcemu, Nakŕmiš ho na deň. Nauč hladujúceho chytať ryby, nakŕmiš ho na celý život. " Presní citát si nepamätám ale hádam som to približne napísal správne. 

Prajem ti veľa šťastia a úspechu pri učení. 
 

Link to comment
Share on other sites

  • 0

To je taky nápad okopírovat rovnou celou registraci. Nejdřív si měl začít třeba jen s ukládání Admin Levelu a pak tam postupně něco přidávat. Takhle tam hodíš všechno najednou a víš z toho ho*no. A když jsi začátečník, tak proč začínáš s YSI? To je taky nápad. Tobě bych doporučoval DOF2, né hned YSI. :facepalm:

Link to comment
Share on other sites

  • 0

To je taky nápad okopírovat rovnou celou registraci. Nejdřív si měl začít třeba jen s ukládání Admin Levelu a pak tam postupně něco přidávat. Takhle tam hodíš všechno najednou a víš z toho ho*no. A když jsi začátečník, tak proč začínáš s YSI? To je taky nápad. Tobě bych doporučoval DOF2, né hned YSI. :facepalm:

Sakra proč si každej myslí, že jen používám CTRL + C, CTRL + V, když to nemáte ověřené?! Už mě to vážně štve... V DOF2 jsem dělal, ale tady YSI měla lepší ohlas, tak jsem se do toho pustil, navíc proč jsem taháš tohle? Není to tak trochu k otázce. Mimochodem když už najdu nějákej tutoriál tak se na něj podívám a vše opíšu aby mi b\lo jasno jak to funguje,proto to může vypadat stejně...

Link to comment
Share on other sites

  • 0

Bože a kdo říká, že jsem ten systém nikde "nekopíroval" ?! Já pouze píšu, že jsem to celé opsal a né, že používám CTRL + C a CTRL + V, vše opisuji, jelikož mám zájem pochopit systém pawna! Nevím co proti mě furt máte..

Link to comment
Share on other sites

  • 0

Bože a kdo říká, že jsem ten systém nikde "nekopíroval" ?! Já pouze píšu, že jsem to celé opsal a né, že používám CTRL + C a CTRL + V, vše opisuji, jelikož mám zájem pochopit systém pawna! Nevím co proti mě furt máte..

~> Návody slouží jako ukázka, abys pochopil, jak se s tím pracuje a pak, abys věděl, jak v tom vytvořit něco sám... , že vezmeš a kopíruješ řádky... ty řádky si máš napsat zcela sám...

Link to comment
Share on other sites

  • 0

Bože a co myslíš, že dělám? Dělám to vše tak, že to opisuji písmenko po písmenku, středník po středníku a tečku po tečce. Tak prosím už toho nechme! Vážně mě to štve, jak si furt myslíte, že to používám takhle, ukázal jsem vám kód, ukázal, tak co ještě chcete? Požádal jsem zde o pomoc, a místo pomoci jsme zde u nějákého vyčítání, tak ještě jednou TEXT OPISUJI NA KLÁVESNICI NAPROSTO STEJNÉ JAK TO JE A SÁM SI VYVSĚTLUJI,CO ŘÁDEK MÁ ZA FUNKCI, POKUD TO NEVÍM, VYGOOGLÍM SI TO A POKRAČUJI DÁL!!

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...