Jump to content
  • 0

pomoc Čísla


Paulee

Dotaz

Zdravím,

Udělal jsem si klasickou tabulku. Dal jsem tam proměnnou, ale potřebuju s něčím pomoct. Když třeba bude proměnná 1 tak aby to napsalo v té tabulce např.: Ano. A když bude proměnná 0 tak aby to tam napsalo NE, místo jen toho čísla. Prostě aby tam bylo např.: Vajicko 1: NALEZENO. Místo toho aby tam bylo Vajicko 1: 1...

 

Přeji pěkný den,

S pozdravem Petr :).

Link to comment
Share on other sites

Recommended Posts

  • 0

new anone[4];
if(podminka == 1)
anone = "ANO";
else
anone = "NE";

//A pak to už jenom zobrazíš, napsal bych ti to, ale nevím, co myslíš tabulkou...
//Jinak můžeš i přes format, ale nikde tam nevyužíváš proměnné...
Link to comment
Share on other sites

  • 0

něco jako

new bool:veci[10];

new str[128];
for(new i; i < 10; i ++)
{
     if(veci[i] == true)
     {
         strcat(str,"nalezeno\n");
         }else{
         strcat(str,"nenalezeno\n");
     }
}
SPD(playerid,...);
Link to comment
Share on other sites

  • 0

Takže

Vajicko1[MAX_PLAYER_NAME] = 1;

Tohle mám když vajíčko už někdo najde.

A zde mám příkaz pro ten seznam.

CMD:vajicka(playerid, params[]) {

	format(MAX_STR, sizeof(MAX_STR),"");
	
	format(MAX_STR, sizeof(MAX_STR), "Vajicko 1: %d", Vajicko1[MAX_PLAYER_NAME]);
	
	ShowPlayerDialog(playerid, DIALOG_VAJICKA, DIALOG_STYLE_LIST, "Vajička na serveru", MAX_STR, "Zavřít", "");
	return 1;
}

Ono to tam teď píše: Vajicko 1: 1. Ale já místo té jedničky chci, že to už někdo našel. Chápeš? :d

Link to comment
Share on other sites

  • 0

Takže

Vajicko1[MAX_PLAYER_NAME] = 1;

Tohle mám když vajíčko už někdo najde.

A zde mám příkaz pro ten seznam.

CMD:vajicka(playerid, params[]) {

	format(MAX_STR, sizeof(MAX_STR),"");
	
	format(MAX_STR, sizeof(MAX_STR), "Vajicko 1: %d", Vajicko1[MAX_PLAYER_NAME]);
	
	ShowPlayerDialog(playerid, DIALOG_VAJICKA, DIALOG_STYLE_LIST, "Vajička na serveru", MAX_STR, "Zavřít", "");
	return 1;
}

Ono to tam teď píše: Vajicko 1: 1. Ale já místo té jedničky chci, že to už někdo našel. Chápeš? :d

řekni proč tam máš MAX_PLAYER_NAME...  není to trošku demence?

Link to comment
Share on other sites

  • 0

Teď jsem zmatenej. Tak jakou definici tam mám dát, aby to platilo pro celý server?

toto je ale sakra úplnej základ... jak dlouho děláš pawnu? četl jsem někde jak o sobě říkáš že ti to celkem už jde...

Link to comment
Share on other sites

  • 0

toto je ale sakra úplnej základ... jak dlouho děláš pawnu? četl jsem někde jak o sobě říkáš že ti to celkem už jde...

No dopr*ele... Teď jsem to celé zkurvil... Bože já jsem k***t ... Nevím kde jsem psal, že mi to už jde, ale je pravda, že jsem teď dlouho nepawnoval. A dělám pí*oviny...

Link to comment
Share on other sites

  • 0

No dopr*ele... Teď jsem to celé zkurvil... Bože já jsem k***t ... Nevím kde jsem psal, že mi to už jde, ale je pravda, že jsem teď dlouho nepawnoval. A dělám pí*oviny...

vtom případě jak je možné že já nepawním asi už 6 měsíců a vím toho víc jak ty?

Link to comment
Share on other sites

  • 0

vtom případě jak je možné že já nepawním asi už 6 měsíců a vím toho víc jak ty?

No, protože jsi o hodně zkušenější než já. Tak teď pojdme k tématu. Tak co tam mám teda dát?

Link to comment
Share on other sites

  • 0
  • Globální moderátor

Technicky je to správně, MAX_PLAYER_NAME je pouze konstanta pro 24. Takže manipuluje vždy jen s 25. prvkem.

 

Doporučuji použít klidně ternární operátor pro přehlednost // EDIT: tedy... pro zjednodušení

 

Příklad:

 

new bool:vajco;

new str[100];

format(str,sizeof(str),"Vajco: %s", vajco ? ("Nalezeno") : ("Nenalezeno"));

SPD

Edited by HighPrint
Link to comment
Share on other sites

  • 0

Technicky je to správně, MAX_PLAYER_NAME je pouze konstanta pro 24. Takže upravuje vždy jen 25. prvek.

 

Doporučuji použít klidně ternární operátor pro přehlednost

 

Příklad:

 

new bool:vajco;

new str[100];

format(str,sizeof(str),"Vajco: %s", vajco ? ("Nalezeno") : ("Nenalezeno"));

SPD

Ve hře mi to furt píše nenalezeno ... A jsem fakt hodně mimo, protože nahoře u proměnných mám: new Vajicko1[MAX_PLAYER_EX]; Nad tím mám definici #define MAX_PLAYER_EX 100... A jinde po celém kodu používám Vajicko1[MAX_PLAYER_NAME]... Tak mě asi napadlo, že to asi musí být stejný všude, jenže když dám všude MAX_PLAYER_NAME tak to hází tento error: array index out of bounds...

Link to comment
Share on other sites

  • 0

Použiji tady ten kód od Steam Wallet, protože jestli máš více vajíček, tak je určitě lepší a přehlednější:

#define MAX_VAJICEK 10
new bool:Vajicko[MAX_VAJICEK];

new str[128]; //asi bude potřeba zvětšit
for(new i; i <= MAX_VAJICEK; i ++)
{
     if(Vajicko[i] == true)
     {
         strcat(str,"Vajicko %d: nalezeno\n", i);
         }else{
         strcat(str,"Vajicko %d: nenalezeno\n", i);
     }
}
SPD(playerid,...);
Link to comment
Share on other sites

  • 0
  • Globální moderátor

A jinde po celém kodu používám Vajicko1[MAX_PLAYER_NAME]...

 

 

 

 

Zkus si uvědomit co vlastně ten index v poli má označovat. A přečti si pořádně to co jsem psal. Tady není nedostatek zkušenosti s pawnem, ale lidská hloupost

 

Hinty:

- MAX_PLAYER_NAME je konstanta 24.

- Index je "nositelem" playerid.

- Při deklaraci new x[MAX_PLAYERS_EX]; a při definici či použití x[MAX_PLAYERS_EX] není totéž. Jedno deklaruješ pole o 100 prvků a jedno přistupuješ k prvku 101., proto ti to hlásí out of bounds

 

 

@Gargoyles

 

Stále to jde vylepšit ;)

Edited by HighPrint
Link to comment
Share on other sites

  • 0

Technicky je to správně, MAX_PLAYER_NAME je pouze konstanta pro 24. Takže manipuluje vždy jen s 25. prvkem.

 

Doporučuji použít klidně ternární operátor pro přehlednost // EDIT: tedy... pro zjednodušení

 

Příklad:

 

new bool:vajco;

new str[100];

format(str,sizeof(str),"Vajco: %s", vajco ? ("Nalezeno") : ("Nenalezeno"));

SPD

jenže podle jeho kódu jsem pochopil že to chce nejspíše pro hráče a asi pro všechny.. takže mu to vždy bude na čísle 24? demence ne?

 

pokud sis fakt nevšimnul tohodle.

format(MAX_STR, sizeof(MAX_STR), "Vajicko 1: %d", Vajicko1[MAX_PLAYER_NAME]);

tak vždy to bude hráč s ID 24...

Link to comment
Share on other sites

  • 0
  • Globální moderátor

jenže podle jeho kódu jsem pochopil že to chce nejspíše pro hráče a asi pro všechny.. takže mu to vždy bude na čísle 24? demence ne?

 

pokud sis fakt nevšimnul tohodle.

format(MAX_STR, sizeof(MAX_STR), "Vajicko 1: %d", Vajicko1[MAX_PLAYER_NAME]);

tak vždy to bude hráč s ID 24...

 

 

Jo, vždyť o tom mluvím. Technicky správně, ale nikdy jsem neřekl, že je to správné použití

Link to comment
Share on other sites

  • 0

jenže podle jeho kódu jsem pochopil že to chce nejspíše pro hráče a asi pro všechny.. takže mu to vždy bude na čísle 24? demence ne?

 

pokud sis fakt nevšimnul tohodle.

format(MAX_STR, sizeof(MAX_STR), "Vajicko 1: %d", Vajicko1[MAX_PLAYER_NAME]);

tak vždy to bude hráč s ID 24...

Teď fakt nevím, co tam teda mám dát místo MAX_PLAYER_NAME ??

Link to comment
Share on other sites

  • 0

Jaj, potom nechápu smysl vajíčka... Myslel jsem, že chce vytvořit prostě pár (globálních) vajíček :d Takže každý hráč bude mít svý vajíčka? :d

Ne, nechci aby měli své vajíčka. Prostě pro celý server... Když si někdo tu odměnu vybere s toho vajíčka, tak aby se to prostě umazklo pro celý server. A tam mám tuto podmínku:

if(Vajicko1[MAX_PLAYER_NAME] > 0) return SendClientMessage(playerid, -1, "{ff0000}Toto vajíčko už někdo našel. Bohužel máš smůlu!");

Jakmile vajíčko někdo sebere hodí se to do 1 a už to pak nepůjde. Ale co tam mám dát aby to bylo pro celý server?

Edited by PetrPaulik
Link to comment
Share on other sites

  • 0
  • Globální moderátor
new bool:Vajicka[MAX_PLAYERS_EX];
Vajicka[playerid] = true;

new str[100];
format(str,sizeof(str),"Vajicko 1: %s",Vajicka[playerid] ? ("Nalezeno") : ("Nenalezeno"));
SendClientMessage(playerid,-1,str);

tady máš kód, zkopči si to...

 

 

EDIT: aha..., tak ty chceš úplně něco jiného

Edited by HighPrint
Link to comment
Share on other sites

  • 0

Ne, nechci aby měli své vajíčka. Prostě pro celý server... Když si někdo tu odměnu vybere s toho vajíčka, tak aby se to prostě umazklo pro celý server. A tam mám tuto podmínku:

if(Vajicko1[MAX_PLAYER_NAME] > 0) return SendClientMessage(playerid, -1, "{ff0000}Toto vajíčko už někdo našel. Bohužel máš smůlu!");

Jakmile vajíčko někdo sebere hodí se to do 1 a už to pak nepůjde. Ale co tam mám dát aby to bylo pro celý server?

kriste a nato si musíš dělat array? -.-

Link to comment
Share on other sites

  • 0
  • Globální moderátor

new bool:Vajicko1;

 

Vajicko1 = true;

if(Vajicko1) return SendClientMessage(playerid,-1,"Toto vejce už někdo našel");

 

if(Vajicko1) SendClientMessage(playerid,-1,"Vejce 1: nalezeno");

else SendClientMessage(playerid,-1,"Vejce 1: nenalezeno");

Link to comment
Share on other sites

  • 0

new bool:Vajicko1;

 

Vajicko1 = true;

if(Vajicko1) return SendClientMessage(playerid,-1,"Toto vejce už někdo našel");

 

if(Vajicko1) SendClientMessage(playerid,-1,"Vejce 1: nalezeno");

else SendClientMessage(playerid,-1,"Vejce 1: nenalezeno");

Díky moc :). Teď to dám jen do tabulky.

I v Tabulce mi to je krásně :). Děkuji moc za nervy se mnou!

Možná vás naštvu, ale tohle fakt už nedávám...

CMD:vajicka(playerid, params[]) {

    format(MAX_STR, sizeof(MAX_STR),"");
    if(Vajicko1) ShowPlayerDialog(playerid, DIALOG_VAJICKA, DIALOG_STYLE_LIST, "Vajíčka na serveru", "Vejce 1: nalezeno", "Zavřít", "");
    else ShowPlayerDialog(playerid, DIALOG_VAJICKA, DIALOG_STYLE_LIST, "Vajíčka na serveru", "Vejce 1: nenalezeno", "Zavřít", "");
    if(Vajicko2) ShowPlayerDialog(playerid, DIALOG_VAJICKA, DIALOG_STYLE_LIST, "Vajíčka na serveru", "Vejce 2: nalezeno", "Zavřít", "");
    else ShowPlayerDialog(playerid, DIALOG_VAJICKA, DIALOG_STYLE_LIST, "Vajíčka na serveru", "Vejce 2: nenalezeno", "Zavřít", "");
    return 1;
}

Ale jak jich tam dám více? 1 Vajíčko funguje, ale když tam dám druhé, tak se to přemaže... Zkoušel jsem i format, ale stejný problém, zkoušel jsem i \n ale stejně se to přemaže.

Edited by PetrPaulik
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...