Jump to content
  • 0

pomoc Dvojitá funkcia príkazu - Naliehave


PeterHfStainer

Dotaz

Zdravím, nevedel som aký mám dať názor tematu, keďže neviem poriadne kde je chyba.

Na začiatok vám poviem, o čo som sa pokúšal. 

Snažil som sa napawniť príkaz - /crazynick - Príkaz, ktorý mení farby nicku v časovom úseku. To sa mi však podarilo až na jednu malú zápletku - nejde vypnúť.

Viz. Prvé napísanie príkazu - Zapne funkciu

     Druhé napísanie príkazu - Vypne funkciu

Dočítal som sa na internete, že je to pomocou funkcie else tak som to skúšal urobiť nasledovne

ASYS[VIP]:crazynick(playerid) {
SetTimerEx("flashnick",50,1,"d",playerid);
SCM(playerid,-1,"Odteraz tvoj nick mení farby");
    }
    else {
       SetTimerEx("flashnick",0,1,"d",playerid);
       SCM(playerid,-1,"Blikanie nicku vypnuté - nastavená farba biela");
    }
    return 1;

Lenže toto mi vyhadzuje errory 

(405) : error 010: invalid function or declaration
(409) : error 010: invalid function or declaration

Riadok - 405 = else {

Riadok - 409 = return 1;

 

Otázka na Vás, vedeli by ste mi prosím pomôcť? Ukázať kde robím chybu, poprípadne ako by sa to dalo lepšie vymyslieť?

Link to comment
Share on other sites

5 odpovědí na tuto otázku

Recommended Posts

  • 6
new crazyNick[MAX_PLAYERS] = 1; // Vytvoření proměné, každý hráč s playerid bude mít už prvně nastavenou hodnotu na '1'



CMD:nick(playerid, params[])
{
	if((crazyNick[playerid]) == 1)	// Kontroluješ hodnotu crazyNick, jestli daný hráč s playerid má nastavenou hodnotu '1', pokud ano pokračuje, pokud ne vyvolá se druhá část podmínky.
	{
		SendClientMessage(playerid, -1, "Nyní se ti budou měnit barvy tvého jména.");
		crazyNick[playerid] = 0; // Zde vyresetuješ svou předdefinovanou hodnotu crazyNick na '0'
		SetTimerEx("flashnick",50,1,"d",playerid); // Tvá vytvořená funkce
		return 1;
	}
	else // (druhá část podmínky) Pokud proměná crazyNick má jinou hodnotu než '1'.
	{
		SendClientMessage(playerid, -1, "Změna barev tvého jména byla vypnuta.");
		crazyNick[playerid] = 1; // Opětně nastavíš hodnotu proměné crazyNick na '1', aby při opětném použití příkazu /nick se vyvolala první část podmínky.
		return 1;
	}
}

 

Musíš si to samozřejmě ještě podle sebe upravit, tak jak to potřebuješ tohle není plně funkční příkaz proto, aby ti to fungovalo ihned po vložení kódu. Přidej si tam to co tam chceš. Například tu tvou funkci 'flashnick' atp.

 

Proměnou jsem použil z výše uvedeného příspěvku.

před 1 hodinou, Ewwe said:

Musíš si udělat proměnou třeba new crazyNick[MAX_PLAYERS]; a kontrolovat jestli je 0 nebo 1 a podle toho zapínat a vypínat

 

 

Edited by VolfikCZ
Link to comment
Share on other sites

  • 0
  • Administrátor

Musíš si udělat proměnou třeba new crazyNick[MAX_PLAYERS]; a kontrolovat jestli je 0 nebo 1 a podle toho zapínat a vypínat

Link to comment
Share on other sites

  • 0

Odpoveď si už dostal, napadá mi ešte jedna vychytávka, ak by si chcel ušetriť riadok, môžeš tiel ifu a else vyhodiť: 
crazyNick[playerid] = 0;
crazyNick[playerid] = 1;
a nahradiť to crazyNick[playerid] ^= 1; za koncom else bloku (operácia XOR - 0 ^ 1 = 1, 1 ^ 1 = 0, inými slovami mení 0 na 1 a naopak) 

  • Líbí se mi to! (+1) 1
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...