Jump to content
  • 0

pomoc Dini - Loading


snake3321

Dotaz

Zdravím, řešil jsem tu jak udělat ukládání přes y_ini ovšem ten způsob jsem prostě nechápal tak jsem přešel k Dini kde jsem to ukládání pochopil tak něják okamžitě ovšem teď se jedná o loading, mám takový bonus systém kde když hráč napíše /bonus otevře se mu dialog input tam napíše zacatek a dostane 100k, ovšem příkaz může použít jen vy chvíli pokud má hodnotu říkejme tomu hodnotu proměnnou na 0, při napsání tedy toho zacatek do dialogu uloží se mu ta proměnná, to je v pohodě uloží se to na 1 tedy, ovšem jak udělat to, že když se o to hráč pokusí znovu napsat /bonus tak aby mu to prostě nešlo, potřebuji to něják naloadovat a zjistit zda má tu proměnnou na 0 pokud ne, nepůjde to, celý kód níže, předem děkuji a nejsem moc zvědavý na odpovědi typu: Nepoužívej to Dini, je to pomalé... Ovšem mě to pomalé nepříjde a lehce se mi v tom pracuje... Předem tedy díky.

 

Kód:

 

 

#include <a_samp>
#include <zcmd>
#include <Dini>
 
new pouzil[MAX_PLAYERS];
new playername[MAX_PLAYER_NAME];
new readfile[256];
 
#define COLOR_GREEN 0x00FF00AA
#define COLOR_RED 0xFF0000AA
 
public OnFilterScriptInit()
{
if(!dini_Exists("bonus.txt")){ dini_Create("bonus.txt");}
}
 
public OnPlayerConnect(playerid)
{
return 1;
}
 
CMD:bonus(playerid, params[])
{
readfile = dini_Get("bonus.txt", playername,);
    if(strval(readfile) == 1)
    {
        SendClientMessage(playerid,0xFF0000FF,"Již jste použil možnost, pro vložení kódu");
    }
    if(strval(readfile) == 0)
{
ShowPlayerDialog(playerid, 225, DIALOG_STYLE_INPUT, "Bonus", "Zadej kód pro ziskani bonusu", "OK", "Nic");
  }
    return 1;
}
 
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    readfile = dini_Get("bonus.txt", playername);
if(dialogid == 225 && response == 1)
{
   if(strcmp(inputtext,"ZACATEK",true)==0)
   {
       if(strval(readfile) == 0)
       {
           GetPlayerName(playerid, playername, sizeof(playername));
           readfile = dini_Get("bonus.txt", playername);
           dini_Set("bonus.txt", playername, "1");
       
       GivePlayerMoney(playerid,100000);
       SendClientMessage(playerid, COLOR_GREEN, "Gratuluji, získal jste bonus 100.000$");
       return 1;
       }else{
       SendClientMessage(playerid, COLOR_RED, "Bonus jste již získal.");
       pouzil[playerid]=1;
       return 1;
       }
   }
}
return 0;
}

 

 

Link to comment
Share on other sites

10 odpovědí na tuto otázku

Recommended Posts

  • 0

přes y_ini ovšem ten způsob jsem prostě nechápal

~> No tak promiň ale jako. Napsal jsem ti docela podrobný návod do topicu, dokonce jsem ti to udělal pomalu za tebe a v SZ to už je podstatě celé udělané za tebe a vysvětlené... Co na tom ještě více nechápeš? Doporučoval jsem ti, abys nepřecházel na YSI jen tak v případě, že to nepochopíš, což stejně nepochopíš ještě nějakou dobu. Než vůbec začneš s celou knihovnou, musíš si také o ní něco přečíst. Jaké má ještě výhody, nevýhody, možnosti... a až pak se učit jednu věc po druhé. Nemůžeš čekat, že když klikneš na download, hned budeš vědět co s tím. Že to je velké není také naschvál. Celá knihovna nabízí ulehčenou práci s módem(samozřejmě, to můžeš použít i na scripty). Ale pointa je, že takhle to budeš mít s každým includem. I klidně s dini. Tam taky něco nepochopíš a podstatě bude to stejný efekt.

 

~> Nepřecházej na dini. Přinese ti to více útrap než užitků. Raději přejdi na dof2 alespoň.

 

~> Ale rád ti poradím: Podívej se na úplné základy. Je vidět, že máš co dohánět. I na tak jednoduchý script...

Link to comment
Share on other sites

  • 0

To opravdu mám co dohánět :), podívám se tedy na nějáký tutorial... Třeba youtube? Nebo wiki potom? Neměl by jsi nějáký dobrý odkaz na tutoriál prosím?
 
EDIT: A nebo v klidu, najdu si to, přesně vím co by jsi odepsal.. :d Přesměroval by jsi mě na tento link


Nemohl by jsi mi zatím napsat jak udělat to s tím Dini? Jen dočasně bych teď používal Dini...

Edited by snake3321
Link to comment
Share on other sites

  • 0

EDIT: A nebo v klidu, najdu si to, přesně vím co by jsi odepsal.. :d Přesměroval by jsi mě na tento link

~> Vlastně, ani ne. Ještě jsem neměl nějak v úmyslu tě někam "přesměrovávat".

Link to comment
Share on other sites

  • 0

Existence souboru >> DINI: dini_Exists(); DOF2: DOF2_FileExists(); Y_INI: fexist(); (preprocesor -> INI_FileExists)

Vytváření souboru >> DINI: dini_Create(); DOF2: DOF2_CreateFile(); Y_INI: INI_Open();

Zavírání souboru >> DINI: chyba, žádný DOF2: DOF2_SaveFile(); Y_INI: INI_Close();

Vepisování čísla >> DINI: dini_IntSet(); DOF2: DOF2_SetInt(); Y_INI: INI_WriteInt();

Vepisování Floatu >> DINI: dini_FloatSet(); DOF2: DOF2_SetFloat(); Y_INI: INI_WriteFloat();

Vepisování boolenu >> DINI: dini_BoolSet(); DOF2: DOF2_SetBool(); Y_INI: INI_WriteBool();

Vepisování textu >> DINI: dini_Set(); DOF2: DOF2_SetString(); Y_INI: INI_WriteString();

Načítání čísla >> DINI: dini_Int(); DOF2: DOF2_GetInt(); Y_INI: INI_Int();

Načítání Floatu >> DINI: dini_Float(); DOF2: DOF2_GetFloat(); Y_INI: INI_Float();

Načítání boolenu >> DINI: dini_Bool(); DOF2: DOF2_GetBool(); Y_INI: INI_Bool();

Načítání textu >> DINI: dini_Get(); DOF2: DOF2_GetString(); Y_INI: INI_String();

 

~> Pověz mi prosimtě... co se na tom chceš ještě sakra učit?

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

  • 0

Jen doplnim (aby nedoslo k omylu), ze fexist() je nativni funkce a neni soucast ysi. Muzes ji pouzivat i v dini a dof2 (tam si tu funkci autori jen prejmenovali).

~> Ano, já vím. Ale můžeš využít preprocesor a přidat si jí (vlastně, je to pak i hezčí (jako by YSI už tak nemělo dost preprocesorů)):

 

#define INI_FileExists fexist
~> I když vlastě, tohle je kapku paradox, protože i oba dva vlastně mají preprocesor na fexist :d (až na dini, ten to má jako funkci (why?))... Takže, logicky by neměl otevírání ani jedno. Edited by SkiBig18
Link to comment
Share on other sites

  • 0

Existence souboru >> DINI: dini_Exists(); DOF2: DOF2_FileExists(); Y_INI: fexist(); (preprocesor -> INI_FileExists)

Vytváření souboru >> DINI: dini_Create(); DOF2: DOF2_CreateFile(); Y_INI: INI_Open();

Zavírání souboru >> DINI: chyba, žádný DOF2: DOF2_SaveFile(); Y_INI: INI_Close();

Vepisování čísla >> DINI: dini_IntSet(); DOF2: DOF2_WriteInt(); Y_INI: INI_WriteInt();

Vepisování Floatu >> DINI: dini_FloatSet(); DOF2: DOF2_WriteFloat(); Y_INI: INI_WriteFloat();

Vepisování boolenu >> DINI: dini_BoolSet(); DOF2: DOF2_WriteBool(); Y_INI: INI_WriteBool();

Vepisování textu >> DINI: dini_Set(); DOF2: DOF2_WriteString(); Y_INI: INI_WriteString();

Načítání čísla >> DINI: dini_Int(); DOF2: DOF2_GetInt(); Y_INI: INI_Int();

Načítání Floatu >> DINI: dini_Float(); DOF2: DOF2_GetFloat(); Y_INI: INI_Float();

Načítání boolenu >> DINI: dini_Bool(); DOF2: DOF2_GetBool(); Y_INI: INI_Bool();

Načítání textu >> DINI: dini_Get(); DOF2: DOF2_GetString(); Y_INI: INI_String();

 

~> Pověz mi prosimtě... co se na tom chceš ještě sakra učit?

Už jsi mi vysvětlil dalo by se říct vše, díky moc! Ještě bych se zeptal na ty "proměnné", dám příklad, mám proměnnou jménem třeba test, když hráč napíše třeba ahoj tak se mu proměnná změní na 1 potom tu bude další příkaz který bude třeba čau a ten bude moct použít hráč jen když bude mít proměnnou na 1 dám do spoileru příklad, červeně jsem označil kterou proměnnou potřebuji potom naloadovat, to by mi stačilo...

 

Příklad:

 

 

new test[MAX_PLAYER_NAME];
 
CMD:ahoj(playerid, params[])
{
test[playerid] = 1;
return 1;
}
 
CMD:cau(playerid, params[])
{
if(test[playerid] == 1)
{
   SendClientMessage..........
}
return 1;
}

 

 

Link to comment
Share on other sites

  • 0

Už jsi mi vysvětlil dalo by se říct vše, díky moc! Ještě bych se zeptal na ty "proměnné", dám příklad, mám proměnnou jménem třeba test, když hráč napíše třeba ahoj tak se mu proměnná změní na 1 potom tu bude další příkaz který bude třeba čau a ten bude moct použít hráč jen když bude mít proměnnou na 1 dám do spoileru příklad, červeně jsem označil kterou proměnnou potřebuji potom naloadovat, to by mi stačilo...

 

Příklad:

 

 

new test[MAX_PLAYER_NAME];
 
CMD:ahoj(playerid, params[])
{
test[playerid] = 1;
return 1;
}
 
CMD:cau(playerid, params[])
{
if(test[playerid] == 1)
{
   SendClientMessage..........
}
return 1;
}

 

 

 

Všechno ti vysvětlil, ale očividně to nechápeš.

 

Vepisování čísla >> DINI: dini_IntSet(); DOF2: DOF2_WriteInt(); Y_INI: INI_WriteInt();

Načítání čísla >> DINI: dini_Int(); DOF2: DOF2_GetInt(); Y_INI: INI_Int();

 

Na DINI

Ostatní hádám fungují stejně, nebo podobně.

 

Edited by TheRohlikar
Link to comment
Share on other sites

  • 0

Přesně na tenhle tutotriál jsem koukal ale pořád jsem sakra nezjistil, co mám napsat do té if proměnné aby to tam dalo tu uloženou proměnnou :d


Edit: Na tom tutoriálu píše o tomto: dini_Set(cesta, "Meno", Meno(playerid));, ovšem jak si vydefinuju to Meno(playerid))? zkoušel jsem, new Meno[MAX_PLAYERS];, taky Meno[MAX_PLAYER_NAME];, a taky taková velká blbost Meno[80];

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