Jump to content

MR_FINE

Uživatel
  • Příspěvků

    9
  • Registrován

  • Aktivní

Příspěvky posted by MR_FINE

  1. na konec jsem se dopracoval k tomuto kódu:

     

    YCMD:setlvl(playerid,params[],help)
    {
    	if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}Nejsi RCON Admin,nemůžeš dávat lvl!");
        new id, lvl;
    	if (!strlen(params)) return SendClientMessage(playerid, -1, "použij /setlvl ID LEVEL");
    	id = strval(params[0]);
    	lvl = strval(params[1]);
    	if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "Zadané ID není připojeno");
     	if (lvl < 0 || lvl > 5) return SendClientMessage(playerid, -1, "Nesprávný level! Rozmezí levelu 0-5");
    	va_SendClientMessageToAll(-1, "Administrátor %s nastavil hráči %s AdminLevel %d", PlayerName(playerid), PlayerName(id), lvl);
    	Admin[id] = lvl;
    	return 1;
    }
    

    A ku podivu už server nepadá :) Děkuju za pomoc a také za tipy k YSI (SkiBig18).
     

  2. zkoušel jsem to se sscanfem a pořád to crashuje :(

    EDIT: můj momentální kód na /setlvl vypadá takto:

    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}Nejsi RCON Admin,nemůžeš dávat lvl!");
        new id = strval(params[0]);
        new lvl = strval(params[1]);
        if (sscanf(params, "ud", id, lvl)) SendClientMessage(playerid, -1,"použijte: /setlvl [iD] [LVL]");
        if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "Zadané ID buď není připojeno nebo je zadáno číslo přes Maximální počet slotů");
        if(strval(params[1]) > 5 || strval(params[1]) < 0) return SendClientMessage(playerid, -1, "Nesprávný level! Rozmezí levelu 0-5");
        va_SendClientMessageToAll(-1, "Administrátor %s nastavil hráči %s AdminLevel %d", PlayerName(playerid), PlayerName(id), lvl);
        Admin[id] = lvl;

     

  3. ~> Při multiparametrech se spíše více hodí sscanf2 (doporučeno),

    ~> v knihovně můžeš nalézt inlcude y_va, který má již zpracované některé funkce s par. včetně SCM a SCMTA, takže nemusíš je formatovat.

    ~> nemusíš ještě zbytečně k podmínkám přidávat else,

    ~> přidáváš level jen sám sobě (AdminLevel[playerid]),

    ~> díky y_utils můžeš na kontroluj jestli nezadal žádné parametry použít světoznámé isnull(po případě ten sscanf),

    ~> v poslední podmínce kontroluješ délku toho textu, tobě stačí kontrolovat, jaké číslo zadal (strval).

     

    1. ten sscanf2 zkusím,snad to už nebude crashovat :)

    2. dík,to jsem nevěděl,YSI mám teprve chvíli,ale už teď vím,že usnadňuje dost práci když se s ním člověk naučí :)

    3.To jsem jen zkoušel,zda-li to nepomůže....I když to je blbost

    4. Dík,to jsem přehlédl tu moji chybku.

    6.Ok

     

     

     

    jinak chybka je v této podmínce :

    if(!strlen(params[0]) && !strlen(params[1])) return SendClientMessage(playerid, -1, "[help] tento příkaz použijte takto: /setlvl [iD] [level]"); //toto je ten řádek,který mi crashuje hru (nejspíše)

    mělo by podle mně být:

     

    if(!strlen(params[0]) || !strlen(params[1])) return SendClientMessage(playerid, -1, "[help] tento příkaz použijte takto: /setlvl [iD] [level]"); //toto je ten řádek,který mi crashuje hru (nejspíše)

    No nwm,možná že ano,ale crashuje to pořád :(

     

  4. Ahoj všichni,
    Připadám si jako totální cvok,protože tuto funkci jsem uvedl nejméně 12X do svých filterscriptů a Gamemodů a vždy fungovala bez problému.Až do teď.Nechápu vůbec proč,ale v určité formě mi padne server po zadání příkazu.

    Kód příkazu setlvl:

    YCMD:setlvl(playerid,params[],help)
    {
    	if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}Nejsi RCON Admin,nemůžeš dávat lvl!");
    	new id = strval(params[0]);
    	new lvl = strval(params[1]);
    	if(!strlen(params[0]) && !strlen(params[1])) return SendClientMessage(playerid, -1, "[help] tento příkaz použijte takto: /setlvl [ID] [level]"); //toto je ten řádek,který mi crashuje hru (nejspíše)
    	else if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "Zadané ID není připojeno");
    	else if(strlen(params[1]) > 5 || strlen(params[1]) < 0) return SendClientMessage(playerid, -1, "Nesprávný level! Rozmezí levelu 0-5");
    	new str[1200],str1[1200];
    	format(str,sizeof(str), "{00FF00}Administrátor %s ti udělil AdminLevel %d .Level ti byl automaticky uložen.Příkazy najdeš na /mas",PlayerName(playerid), lvl);
    	format(str1,sizeof(str1), "{00FF00} Udělil si hráči %s AdminLevel %d .Level mu byl automaticky uložen",PlayerName(id), lvl);
    	SendClientMessage(id, -1, str);
    	SendClientMessage(playerid, -1, str1);
    	Admin[playerid] = lvl;
    	return 1;
    }
    

    Vše funguje jak má......přihlásím se k RCONu, zadám /setlvl 0 5 a vše funguje.Ale pokud zadám jen /setlvl tak..........server spadne.Prosím o radu, jak toto vyřešit,neboť fakt už nevím............ PS: vím že tam ještě není ukládání,ani tam není rozlišení mezi Udělením LVL a odebráním lvl :d
    Děkuji za jakkoukoliv odpověď či snahu pomoct :)

×
×
  • Create New...