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
  • Globální moderátor

Ukaž jak jsi to zkoušel s formatem... a ten tvůj MAX_STR mě vážně bolí

 

Ale možná je to tím, že na serveru nebudeš mít nikdy 2 hráče aby spustili příkaz najednou :)

 

 

A změň si prosímtě podpis na "Pawno se učím a neumím vůbec nic"

Edited by HighPrint
Link to comment
Share on other sites

  • 0

Tak nikdo není dokonalý...

CMD:vajicka(playerid, params[]) {

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

Hází to error: argument type mismatch

Edited by PetrPaulik
Link to comment
Share on other sites

  • 0

Nemas tam zadane vsechny parametry, konkretne delku pro format, a i tak se ti tohle nezformatuje jak potrebujes

Edited by Lukasz
Link to comment
Share on other sites

  • 0


// Je blbost vytvářet proměnné vajíčko1, vajíčko2, atd. Od toho tu jsou pole
#define MAX_VAJICEK 10 //nadefinuješ počet vajíček
new bool:Vajicko[MAX_VAJICEK];

CMD:vajicka(playerid, params[]) {
new str[256], //vytvoříš proměnnou pro řetězec
fstring[64]; //pomocná proměnná, jelikož text bude obsahovat proměnné budeme ho muset naformátovat přes format a poté teprv použít strcat
for(new i; i <= MAX_VAJICEK; i ++)//cyklus, předpokládám, že víš k čemu slouží
{
//proto se zde použil cyklus for, jinak by si musel kontrolovat vajíčko po vajíčku ručně (kdyby si nepoužil pole, ale zakládal další proměnné), což by bylo nepřehledné
format(fstring,sizeof(fstring),"Vajicko %d: %s", i + 1, Vajicko[i] ? ("Nalezeno") : ("Nenalezeno")); //High Print, řekl, že to jde vylepšit, tak vylepšuji
strcat(str,fstring); //strcatem přidáš do stringu další string, bude to vypadat nějak takto: "Vajíčko 1: nalezeno",... až do 10. vajíčka

}
ShowPlayerDialog(playerid, DIALOG_VAJICKA, DIALOG_STYLE_LIST, "Vajíčka na serveru", str, "Zavřít", "");//vypíšeš všechny vajíčka
return 1;
}
//Nahrávání hodnot do polí, zřejmě někde, kde hráč najde vejce: Vajicko[0] = true/false;, Vajicko[1] = true/false;, ... Jinak první index je vždy nula, proto pro výpis vajíčka používám i +1

 

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

  • 0
  • Globální moderátor

Hint: cyklus

 

 

EDIT: 

Jinak proč to cpát do dvou funkcí k připojení řetězce

 

new fstring[MAX_VAJICEK*30];

for(new i; i < MAX_VAJICEK; i ++)
           format(fstring,sizeof(fstring),"%sVajicko %d: %s\n",fstring,i + 1Vajicko[i] ? ("Nalezeno") : ("Nenalezeno"));

 

ShowPlayerDialog(playerid, DIALOG_VAJICKA, DIALOG_STYLE_LIST, "Vajíčka na serveru", fstring, "Zavřít", "");

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

  • 0

Gargoyles tam ma chybu, ktera ti zapricini pad serveru :)

 

a bylo by dobry ten text odradkovat

A proč ji neopravíš? :d Tohle jsem psal v pawnu, měl jsem to odtabované, vždy když to vložím sem, tak se to takhle rozhází. ;)

Edited by GaRGoyLeS
Link to comment
Share on other sites

  • 0
if (dialogid == DIALOG_PRVNI_VEJCE)
	{
		switch(listitem)
		{
			case 0:
			{
			if(Vajicko1) return SendClientMessage(playerid,-1,"Toto vejce už někdo našel");//ZDE
			new str[120],
			nick[MAX_PLAYER_NAME];
                        GetPlayerName(playerid, nick, MAX_PLAYER_NAME);
			format(str, sizeof(str), "{ff0000}Hráč {ffffff}%s {ff0000}vyhrál 1 000 000$ !", nick);
			SendClientMessageToAll(-1, str);
			Vajicko1 = true;//ZDE
			}
		}
	}
	if (dialogid == DIALOG_DRUHE_VEJCE)
	{
		switch(listitem)
		{
			case 0:
			{
                        if(Vajicko2) return SendClientMessage(playerid,-1,"Toto vejce už někdo našel");//ZDE
			new str[120], 
			nick[MAX_PLAYER_NAME];
			GetPlayerName(playerid, nick, MAX_PLAYER_NAME);
			format(str, sizeof(str), "{ff0000}Hráč {ffffff}%s {ff0000}vyhrál 500 000$ !", nick);
			SendClientMessageToAll(-1, str);
   			Vajicko2 = true; //ZDE
			}
		}
	}
	return false;
}

Ten příkaz na vajička vypadá slušně, ale co mám dát místo tamtich, když jsou jiné proměnné? Když tam dám Vajicko[MAX_VAJICEK] = true; tak to píše chyby.

Edited by PetrPaulik
Link to comment
Share on other sites

  • 0

Ty jine promenne dej di haje a vsude dej jen to pole. Taky pro kazde vejce nedelej individualni dialogid, kdyz pak mas pro ne stejny kod. Wtf zaklady jsi asi vynechal

Link to comment
Share on other sites

  • 0

Ty jine promenne dej di haje a vsude dej jen to pole. Taky pro kazde vejce nedelej individualni dialogid, kdyz pak mas pro ne stejny kod. Wtf zaklady jsi asi vynechal

Tak když chci aby bylo všude jiná odměna?

Link to comment
Share on other sites

  • 0

CMD:vajicka(playerid, params[]) {

	new fstring[MAX_VAJICEK*30];
	for(new i; i < MAX_VAJICEK; i ++)
 	format(fstring,sizeof(fstring),"%sVajicko %d: %s\n",fstring,i + 1, Vajicko[i] ? ("Nalezeno") : ("Nenalezeno"));
	ShowPlayerDialog(playerid, DIALOG_VAJICKA, DIALOG_STYLE_LIST, "Vajíčka na serveru", fstring, "Zavřít", "");
	return 1;
}

To je ten příkaz

 

Zde ty vajíčka:

 

 

	if (dialogid == DIALOG_PRVNI_VEJCE)
	{
		switch(listitem)
		{
			case 0:
			{
			new str[120],
				nick[MAX_PLAYER_NAME];
            GetPlayerName(playerid, nick, MAX_PLAYER_NAME);
			format(str, sizeof(str), "{ff0000}Hráč {ffffff}%s {ff0000}vyhrál 1 000 000$ !", nick);
			SendClientMessageToAll(-1, str);
			Vajicko[MAX_VAJICEK] = 1;
			}
		}
	}
	if (dialogid == DIALOG_DRUHE_VEJCE)
	{
		switch(listitem)
		{
			case 0:
			{
			new str[120],
				nick[MAX_PLAYER_NAME];
			GetPlayerName(playerid, nick, MAX_PLAYER_NAME);
			format(str, sizeof(str), "{ff0000}Hráč {ffffff}%s {ff0000}vyhrál 500 000$ !", nick);
			SendClientMessageToAll(-1, str);
   			Vajicko[MAX_VAJICEK] = 1;
			}
		}
	}
	return false;
}

 

 

Tak sakra jak mám udělat aby mi to nepsalo tyhle chyby?

 error 032: array index out of bounds (variable "Vajicko")

warning 213: tag mismatch

error 032: array index out of bounds (variable "Vajicko")

warning 213: tag mismatch

Edited by PetrPaulik
Link to comment
Share on other sites

  • 0

MAX_VAJICEK 10 - maximálny počet vajíčok na servery

 

čiže ty keď dáš Vajicko[MAX_VAJICEK] = 1; tak to znamená Vajicko[11] = 1; pretože pole sa berie od 0....aké číslo zadáš do [] tak tomu vajíčku priraďuješ hodnotu s tým že je to o jedno posunuté lebo 0 sa počíta tiež a to je prvé vajíčko

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

  • 0

Díky moc už to nějak jde, ale třeba když přijedu k prvního vajíčku a seberu odměnu, tak se nalezeno napíše k druhému a naopak. Nevíte proč?

 

 

	if (dialogid == DIALOG_PRVNI_VEJCE)
	{
		switch(listitem)
		{
			case 0:
			{
			new str[120],
				nick[MAX_PLAYER_NAME];
			if(Vajicko[0]) return SendClientMessage(playerid, -1, "Toto vajíčko už někdo sebral!");
            GetPlayerName(playerid, nick, MAX_PLAYER_NAME);
			format(str, sizeof(str), "{ff0000}Hráč {ffffff}%s {ff0000}vyhrál 1 000 000$ !", nick);
			SendClientMessageToAll(-1, str);
			Vajicko[0] = true;
			}
		}
	}
	if (dialogid == DIALOG_DRUHE_VEJCE)
	{
		switch(listitem)
		{
			case 0:
			{
			new str[120],
				nick[MAX_PLAYER_NAME];
			if(Vajicko[1]) return SendClientMessage(playerid, -1, "Toto vajíčko už někdo sebral!");
			GetPlayerName(playerid, nick, MAX_PLAYER_NAME);
			format(str, sizeof(str), "{ff0000}Hráč {ffffff}%s {ff0000}vyhrál 500 000$ !", nick);
			SendClientMessageToAll(-1, str);
   			Vajicko[1] = true;
			}
		}
	}
	return false;
}

 

 

Link to comment
Share on other sites

  • 0

CMD:vajicka(playerid, params[]) {

new fstring[MAX_VAJICEK*30];
for(new i; i < MAX_VAJICEK; i ++)
format(fstring,sizeof(fstring),"%sVajicko %d: %s\n",fstring,i + 1, Vajicko[i] ? ("Nalezeno") : ("Nenalezeno"));
ShowPlayerDialog(playerid, DIALOG_VAJICKA, DIALOG_STYLE_LIST, "Vajíčka na serveru", fstring, "Zavřít", "");
return 1;
}
Link to comment
Share on other sites

  • 0

KDE ku*va VYUŽÍVÁŠ DIALOG DIALOG_PRVNI_VEJCE A DIALOG_DRUHE_VEJCE

V každém vajíčku mám pickup, a když se k tomu vajíčku přiblíží ukáže se tabulka...

Link to comment
Share on other sites

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