Jump to content
  • 0

pomoc ID_hráče


Baseball

Dotaz

Prošel jsem snad všechny TuT a polovinu HELP a nikde jsem nenašel jak udělat když dám třeba /zab [id_hráče] aby to dalo jemu.. (ten příkaz je jen výmysl co mě teď napadl) aby to zabylo jeho a né mě.. 

 

Děkuji

Link to comment
Share on other sites

10 odpovědí na tuto otázku

Recommended Posts

  • 0


Příkaz // tu si vytvoř příkaz nevím, co používáš jestli zcmd nebo dcmd...
{
if(IsPlayerConnected(playerid)) //podmínka, zda je hráč připojený
{
new id = strval(params); //nová proměnná, která se rovná hodnotě, kterou zadáš za příkaz, jednoduší pro tebe bude asi použít sscanf
if(!strlen(params) || strlen(params)>3) return SendClientMessage(playerid,-1,"Použití: /zab [ ID ]"); //pokud nic nezadá za příkaz nebo pokud je text, který zadal delší než 3 --> v samp můžeš mít myslím 500 slotů --> takže délka 3
else if(!IsPlayerConnected(id)) return SendClientMessage(playerid,-1,"Hráč se zadaným ID není na serveru !"); //pokud není hráč (id) připojený
else{
SetPlayerHeal(id, 0.0) // hráči nastavíš život na 0
}
}
return 1;
}

 

Edited by D@ndys
Link to comment
Share on other sites

  • 0

Dík moc :)

//edit:

Tak teď jsem to chtěl dát na nastevní a. levelu ale nefunguje.. (OnPlayerCommandText)

if(strcmp(cmdtext,"/setadmin",true,5) == 0)
	{
	   	new id = strval(cmdtext);
	   	new string[256];
	   	if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFFFFFFFF, "Nedostatečné oprávnění!");
	   	if(IsPlayerConnected(playerid))
		{
            if(!strlen(cmdtext)) return SendClientMessage(playerid, 0xFF0000AA, "Napiš /SetAdmin [id_hráče]");
            else if(!IsPlayerConnected(id)) return SendClientMessage(playerid,-1,"Hráč se zadaným ID není on-line");
            else
			{
               	format(string, 200, "Administrátor {FFFFFF}%s {FF0000}dal administrační level hráči {FFFFFF}%s{FF0000}. ",Meno(playerid), Meno(id));
			   	SendClientMessageToAll(0xff0000AA, string);
			   	AdminLevel[id] = 1;
   			}
        }
	   	return 1;
	}

Kdyžtak bych byl rád i za nějaké ty rady ohledně celého toho nastavování.

Edited by Baseball
Link to comment
Share on other sites

  • 0

Includ sa vkompiluje do módu, takže keď nejaký máš tak to je "súčasť tvojho módu"

 

Druhá vec je ako je ten includ napisaný a aké má použitie. V tomto prípade je ZCMD lepšie a rýchlejšie ako kontrolovať príkazy pomocou strcmp, pretože používa while a veľmi jednoducho odfiltruje params pomocou premennej. Takže tu sa zcmd určite oplatí.

 

Lenže:

Ked si zoberieš includy ako dini a pod. sú určené na zjednodušenie tvojej práce, ale zároveň používajú všetky funkcie ktore môžeš použiť aj sám. To znamená, že dini využíva len tie funkcie ktoré ti SA:MP dal, napr tiež musí použiť fopen aby dini otvoril súbor. Aby si pochopil:

 

Ja nepotrebujem mať spravený zápis v INI štýle, mne stačí klasický súbor ale ak ti nejaký includ na súbory uľahčí pracu tak ho kludne použi, tých pár ms je zanedbateľné číslo..

Edited by Sanios
Link to comment
Share on other sites

  • 0
if(strcmp(cmdtext,"/setadmin",true,9) == 0)
{
    new id = strval(cmdtext[9]);
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,0xFFFFFFFF,"Nedostatečné oprávnění!");
    else if(!IsPlayerConnected(id)) return SendClientMessage(playerid,-1,"Hráč se zadaným ID není on-line");
    else
    {
        new string[144];
        format(string,sizeof(string),"Administrátor {FFFFFF}%s {FF0000}dal administrační level hráči {FFFFFF}%s{FF0000}.",Meno(playerid),Meno(id));
        SendClientMessageToAll(0xff0000AA,string);
        AdminLevel[id] = 1;
    }
    return 1;
}

 

tých pár ms je zanedbateľné číslo..

V online hrach nelze zanedbavat zadne ms. Asi uznas jestli je rozdil mit ping 25 a 100 :d

 

Ked si zoberieš includy ako dini a pod. sú určené na zjednodušenie tvojej práce, ale zároveň používajú všetky funkcie ktore môžeš použiť aj sám. To znamená, že dini využíva len tie funkcie ktoré ti SA:MP dal, napr tiež musí použiť fopen aby dini otvoril súbor. Aby si pochopil:

ZCMD je take postavene pouze na sa-mp funkcich, stejne jako dini

Edited by ATomas
Link to comment
Share on other sites

  • 0

Čo má ping spoločné s dĺžkou zápisu súboru? Hráč niečo spraví spustí nejaký zápis a potom to už je všetko len o scripte. Ping je len odozva medzi clientom a serverom.

 

Povecme že hráč vyvolá zápis pomocou nejakého príkazu /zapis a ping zohrá rolu v MS len medzi obdobím OD zadania prikazu dokym to server zanamena takže čas koľko trvá vykonať script a ping je dosť rozdiel. 

 

Áno ZCMD je tiež postavené na SA:MP funkciách konkrétne sa jedná cyklus while ktorý vyvolá požadovaný callback (Čo je vlastne ten COMMAND:prikaz) takže vo výsledku je to omnoho rýchlejšie ako stovky strcmp v OnPlayerCommandText.

Edited by Sanios
Link to comment
Share on other sites

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