Jump to content
  • 0

pomoc Príkaz


Jurajvocny

Dotaz

9 odpovědí na tuto otázku

Recommended Posts

  • 0
  • Globální moderátor

Hm, ptát se je hezké, ale help není od toho, aby ti lidé psali kód. Máš šajnu, jak se vytváří příkaz?

 

 

EDIT: hups, jaksi jsem si blbě přečetl dotaz, viz níže od Polis.

Edited by HighPrint
Link to comment
Share on other sites

  • 0

Zdravím

Pokud tě zajímá jak to udělat aby jsi se něco přiučil čti text který napíšu pokud ti jde jen o kod tak ho máš dole

 

 

 

1)Nastavíme délku zpráv pro jistotu pomocí proměny

2)Využijeme include foreach - Aby jsi se trošku snažil koukni na google kčemu se dá tento include využít

   -Stahneš ho zde http://www.solidfiles.com/d/366d/

3)Dále bych vytvořil podmínku že se zpráva ukáže pouze těm co mají ALVL větší než 0

4)A poté naši zprávu zjistíme jméno a vytvoříme klasickou zprávu které zobrazí jméno

Neuvěřitelné co ?

Stačí umět 4 věci a máš to.

Lehčí než v Angličtině se učit 10 slovíček.

 

 

//Code uprav si pro tvůj admin script podmínku s YSI

CMD:lv(playerid, params[])
{
        new string[128];
        foreach(Player, i) {
        if(PlayerInfo[i][pAdmin] > 0) {
        format(string,sizeof(string),"[Admin Info:] Hrač [%s] se teleportoval do LV ",GetName(playerid));
        SendClientMessage(i,-1,string);
        }
        SetPlayerPos(playerid,2907.2083,-1890.0023,1.3898);
        }
        return 1;
}

Pokud si nemyslel toto.

Ale aby se adminum ukazovali všechny příkazy které hráč napíše.

Projed si forum a najdeš tutorial

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

  • 0

Zdravím

Pokud tě zajímá jak to udělat aby jsi se něco přiučil čti text který napíšu pokud ti jde jen o kod tak ho máš dole

 

 

 

1)Nastavíme délku zpráv pro jistotu pomocí proměny

2)Využijeme include foreach - Aby jsi se trošku snažil koukni na google kčemu se dá tento include využít

   -Stahneš ho zde http://www.solidfiles.com/d/366d/

3)Dále bych vytvořil podmínku že se zpráva ukáže pouze těm co mají ALVL větší než 0

4)A poté naši zprávu zjistíme jméno a vytvoříme klasickou zprávu které zobrazí jméno

Neuvěřitelné co ?

Stačí umět 4 věci a máš to.

Lehčí než v Angličtině se učit 10 slovíček.

 

 

//Code uprav si pro tvůj admin script podmínku s YSI

CMD:lv(playerid, params[])
{
        new string[128];
        foreach(Player, i) {
        if(PlayerInfo[i][pAdmin] > 0) {
        format(string,sizeof(string),"[Admin Info:] Hrač [%s] se teleportoval do LV ",GetName(playerid));
        SendClientMessage(i,-1,string);
        }
        SetPlayerPos(playerid,2907.2083,-1890.0023,1.3898);
        }
        return 1;
}

Pokud si nemyslel toto.

Ale aby se adminum ukazovali všechny příkazy které hráč napíše.

Projed si forum a najdeš tutorial

Nechcem ťa nijak uraziť, ale fakt myslíš že toto bude on hádzať do každého príkazu? O.o

..........

 

Normálne si nájdi public OnPlayerCommandText (alebo tak nejak sa volá)

a na začiatku publicu odošli správu obsahujúcu príkaz adminom, tak ako ti ukázal Polis, len namiesto:

format(string,sizeof(string),"[Admin Info:] Hrač [%s] se teleportoval do LV ",GetName(playerid));

daj:

format(string,sizeof(string),"[Admin Info:] [%s]: %s ",GetName(playerid), cmdtext);

Link to comment
Share on other sites

  • 0

Zdravím

Pokud tě zajímá jak to udělat aby jsi se něco přiučil čti text který napíšu pokud ti jde jen o kod tak ho máš dole

 

 

 

1)Nastavíme délku zpráv pro jistotu pomocí proměny

2)Využijeme include foreach - Aby jsi se trošku snažil koukni na google kčemu se dá tento include využít

   -Stahneš ho zde http://www.solidfiles.com/d/366d/

3)Dále bych vytvořil podmínku že se zpráva ukáže pouze těm co mají ALVL větší než 0

4)A poté naši zprávu zjistíme jméno a vytvoříme klasickou zprávu které zobrazí jméno

Neuvěřitelné co ?

Stačí umět 4 věci a máš to.

Lehčí než v Angličtině se učit 10 slovíček.

 

 

//Code uprav si pro tvůj admin script podmínku s YSI

CMD:lv(playerid, params[])
{
        new string[128];
        foreach(Player, i) {
        if(PlayerInfo[i][pAdmin] > 0) {
        format(string,sizeof(string),"[Admin Info:] Hrač [%s] se teleportoval do LV ",GetName(playerid));
        SendClientMessage(i,-1,string);
        }
        SetPlayerPos(playerid,2907.2083,-1890.0023,1.3898);
        }
        return 1;
}

Pokud si nemyslel toto.

Ale aby se adminum ukazovali všechny příkazy které hráč napíše.

Projed si forum a najdeš tutorial

já se divím, že mu vůbec radíš.. píšeš tu sračky o YSI, přitom tu o tom ani nic nenapsal :-D 

 

K topicu: Pokud využíváš ZCMD, tak stačí jen public

public OnPlayerCommandReceived(playerid, cmdtext[])
{
    new string[255];
    format(string, 255, "[ASystem] %s(%d): %s", Jmeno(playerid), playerid, cmdtext);
    for(new i = 0; i<GetMaxPlayers(); i++)
    {
        if(AdminLevel[i] > 0) // To si uprav protože nevím jakou máš podmínku.
        {
            SendClientMessage(i, -1, string);
        }
    }
    return 1;
}

Link to comment
Share on other sites

  • 0

 

já se divím, že mu vůbec radíš.. píšeš tu sračky o YSI, přitom tu o tom ani nic nenapsal :-D 

 

K topicu: Pokud využíváš ZCMD, tak stačí jen public

public OnPlayerCommandReceived(playerid, cmdtext[])
{
    new string[255];
    format(string, 255, "[ASystem] %s(%d): %s", Jmeno(playerid), playerid, cmdtext);
    for(new i = 0; i<GetMaxPlayers(); i++)
    {
        if(AdminLevel[i] > 0) // To si uprav protože nevím jakou máš podmínku.
        {
            SendClientMessage(i, -1, string);
        }
    }
    return 1;
}

Když mluvíš o sračkach v podmíce s YSI..

Udělal si s podmínkou skoro to samé akorád si změnil tu podmínku na jinej adminS(Tady mluvím jen o té podmínce)

for(new i = 0; i<GetMaxPlayers(); i++)

A tímhle si prodloužil prakticky práci sice o pár vteřin ale i tak..

Přes foreach se mi to zdá lepší.

 

Ale je to věc názoru nebudem se tu přetahovat koho kod je vněčem lepší jde oto že každej to dělá jinak.

 

 

Nechcem ťa nijak uraziť, ale fakt myslíš že toto bude on hádzať do každého príkazu? O.o

 

Jsem naučenej preventivně dělat příkazy už v ZCMD :d

A co i kdyby tak stačí změnit 2 věci a je to :d

Link to comment
Share on other sites

  • 0

Když mluvíš o sračkach v podmíce s YSI..

Udělal si s podmínkou skoro to samé akorád si změnil tu podmínku na jinej adminS(Tady mluvím jen o té podmínce)

for(new i = 0; i<GetMaxPlayers(); i++)

A tímhle si prodloužil prakticky práci sice o pár vteřin ale i tak..

Přes foreach se mi to zdá lepší.

 

Ale je to věc názoru nebudem se tu přetahovat koho kod je vněčem lepší jde oto že každej to dělá jinak.

 

 

Jsem naučenej preventivně dělat příkazy už v ZCMD :d

A co i kdyby tak stačí změnit 2 věci a je to :d

 

všiml sis vůbec, že já jsem to necpal do toho blbýho příkazu ale do publicu? v tom je ten rozdíl, to ty jsi mu prodloužil tu práci o dost dlouho, takhle to nemusí psát/kopírovat jak nějákej deb*l ;-) máš nějákou dys..? nebo?

Link to comment
Share on other sites

  • 0

 

foreach(Player, i) {

 

~> Tenhle foreach už je v celku zastaralý. Buď bych využil ten z knihovny a nebo normální cyklus s novou funkcí.

Nechcem ťa nijak uraziť, ale fakt myslíš že toto bude on hádzať do každého príkazu? O.o

~> V tomhle případě ale on využil jen ten samostatný includ, který patřil mezi nejdoporučenější includy pro lepší, jednoduší a efektivnější tvorbu GM či FS. Na druhou stranu souhlasím, že to není dobrý nápad radit každému.

já se divím, že mu vůbec radíš.. píšeš tu sračky o YSI, přitom tu o tom ani nic nenapsal :-D

~> Rád bych jen řekl, že celá knihovna YSI, kterou ty považuješ za sračku, patří mezi nejvyužívanější, nejstarší, nejobsahovější a nejoptimalizovanější knihovny vůbec (samozřejmě, rok 2k15, už je několik ještě lepších náhrad, ale ne ve všem, co ta knihovna obsahuje). Zkoušel jsi jí vůbec? Nebo vytvořil jsi s ní něco? To, že tomu nerozumíš, ještě neznamená, že je to sračka. Ale, abych tě tu nedusil teorií, a zbytečně slohovkou nepřesvědčoval, co všechno dokáže apod. rád bych ti ukázal pár kódů:

 

 

 

~> Nejdříve, vymyslíme si nějaké 2 formaty, takže potřebujeme například zjistit kolik má peněz a hned po to, kolik má score. Takže naformátuješ a mohlo by to vypadat asi nějak takto:

new 
		sString[20 + 1];
	format(sString, sizeof(sString), "Nyní máš u sebe %i$", GetPlayerMoney(playerid));
	SendClientMessage(playerid, -1, sString);
	format(sString, sizeof(sString), "Dále máš %i score", GetPlayerScore(playerid));
	SendClientMessage(playerid, -1, sString);
~> Teď pojďme využít YSI (přesněji nahrajeme si y_va).

	va_SendClientMessage(playerid, -1, "Nyní máš u sebe %i$", GetPlayerMoney(playerid));
	va_SendClientMessage(playerid, -1, "Dále máš %i score", GetPlayerScore(playerid));
~> A z 6(5) řádků jsou jenom 2! A využít nějaké preprocesory nebo fce? To je ne jen pasé ale také pomalejší než va.

 

 

 

 

~> Dále, asi známe všichni. Potřebujeme přidat callbacky, které se spustí v určitých časech. Například po připojení. Ale OnPlayerConnect už existuje. Takže, buď přidáme časovač, ALS a nebo:

forward OnPlayerConnect2(playerid);
public OnPlayerConnect2(playerid) {

	SendClientMessage(playerid, -1, "Ahoj vítej na mém serveru");
}

public OnPlayerConnect(playerid) {

	OnPlayerConnect2(playerid);
	return (true);
}
~> Celkem otravné, hlavně, když chceš přidat více takových callbacků, nemyslíš? Tak, zkusíme opět využít YSI (přesněji nahrajeme y_hooks):

public OnPlayerConnect(playerid) {

	/* --- tady se něco stane */
	return (true);
}

hook OnPlayerConnect(playerid) {

	SendClientMessage(playerid, -1, "Ahoj vítej na mém serveru");
	return (true);
}
~> Celý hook můžeme pak například přidat do includu. Stejný název callbacků, a compiler nebude nic hlásit. Neuvěřitelné že?

 

 

 

 

~> Ještě tě to furt neohromilo? A co tohle:

~> Asi znáš ten problém s dialogid. Děláš dialogy, ale bojíš se, že po přidání na nějaký GM se budou křížit a blbnout, tak jim přidáváš id do tisícovek? S YSI se nějakým dialogid nemusíš už zdržovat!

Dialog_ShowCallback(playerid, using callback "DialogMoney", DIALOG_STYLE_LIST, "Peníze", "Kolik mám peněz?", "Vybrat", "Zavrit");

/* Tohle například v příkaze /mojescore */

Dialog_ShowCallback(playerid, using callback "DialogScore", DIALOG_STYLE_LIST, "Score", "Jaké mám score?", "Vybrat", "Zavrit");

/* a po návratových hodnotách */

forward DialogMoney(playerid, dialogid, response, listitem, inputtext[]);
forward DialogScore(playerid, dialogid, response, listitem, inputtext[]);

public DialogMoney(playerid, dialogid, response, listitem, inputtext[]) {

	if (!response) return (true);
	if (listitem == 0) va_SendClientMessage(playerid, -1, "Nyní máš u sebe %i$", GetPlayerMoney(playerid));
	return (true);	
}

public DialogScore(playerid, dialogid, response, listitem, inputtext[]) {

	if (!response) return (true);
	if (listitem == 0) va_SendClientMessage(playerid, -1, "Nyní máš %i score", GetPlayerScore(playerid));
	return (true);
}
~> Můžeš si takových přidávát několik (samozřejmě i normální bez callbacků) aniž bys některému přiřadil id.

 

 

~> A to je jen zlomek z toho všeho, co s celou knihovnou jde ještě dělat. To, že jsi si jí neoblíbil, nebo že ti připadá těžká, nebo neužitečná(netuším, nenapsal jsi proč), tak to z jí ještě nedělá sračku.

~> (Ještě pro informaci, HLAVNĚ PRO NĚKTERÉ) Tím samozřejmě nechci říct, abys přešel na YSI nebo něco takového.

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

  • 0

~> Tenhle foreach už je v celku zastaralý. Buď bych využil ten z knihovny a nebo normální cyklus s novou funkcí.

 

~> V tomhle případě ale on využil jen ten samostatný includ, který patřil mezi nejdoporučenější includy pro lepší, jednoduší a efektivnější tvorbu GM či FS. Na druhou stranu souhlasím, že to není dobrý nápad radit každému.

 

~> Rád bych jen řekl, že celá knihovna YSI, kterou ty považuješ za sračku, patří mezi nejvyužívanější, nejstarší, nejobsahovější a nejoptimalizovanější knihovny vůbec (samozřejmě, rok 2k15, už je několik ještě lepších náhrad, ale ne ve všem, co ta knihovna obsahuje). Zkoušel jsi jí vůbec? Nebo vytvořil jsi s ní něco? To, že tomu nerozumíš, ještě neznamená, že je to sračka. Ale, abych tě tu nedusil teorií, a zbytečně slohovkou nepřesvědčoval, co všechno dokáže apod. rád bych ti ukázal pár kódů:

 

 

 

~> Nejdříve, vymyslíme si nějaké 2 formaty, takže potřebujeme například zjistit kolik má peněz a hned po to, kolik má score. Takže naformátuješ a mohlo by to vypadat asi nějak takto:

new 
		sString[20 + 1];
	format(sString, sizeof(sString), "Nyní máš u sebe %i$", GetPlayerMoney(playerid));
	SendClientMessage(playerid, -1, sString);
	format(sString, sizeof(sString), "Dále máš %i score", GetPlayerScore(playerid));
	SendClientMessage(playerid, -1, sString);
~> Teď pojďme využít YSI (přesněji nahrajeme si y_va).

	va_SendClientMessage(playerid, -1, "Nyní máš u sebe %i$", GetPlayerMoney(playerid));
	va_SendClientMessage(playerid, -1, "Dále máš %i score", GetPlayerScore(playerid));
~> A z 6(5) řádků jsou jenom 2! A využít nějaké preprocesory nebo fce? To je ne jen pasé ale také pomalejší než va.

 

 

 

 

~> Dále, asi známe všichni. Potřebujeme přidat callbacky, které se spustí v určitých časech. Například po připojení. Ale OnPlayerConnect už existuje. Takže, buď přidáme časovač, ALS a nebo:

forward OnPlayerConnect2(playerid);
public OnPlayerConnect2(playerid) {

	SendClientMessage(playerid, -1, "Ahoj vítej na mém serveru");
}

public OnPlayerConnect(playerid) {

	OnPlayerConnect2(playerid);
	return (true);
}
~> Celkem otravné, hlavně, když chceš přidat více takových callbacků, nemyslíš? Tak, zkusíme opět využít YSI (přesněji nahrajeme y_hooks):

public OnPlayerConnect(playerid) {

	/* --- tady se něco stane */
	return (true);
}

hook OnPlayerConnect(playerid) {

	SendClientMessage(playerid, -1, "Ahoj vítej na mém serveru");
	return (true);
}
~> Celý hook můžeme pak například přidat do includu. Stejný název callbacků, a compiler nebude nic hlásit. Neuvěřitelné že?

 

 

 

 

~> Ještě tě to furt neohromilo? A co tohle:

~> Asi znáš ten problém s dialogid. Děláš dialogy, ale bojíš se, že po přidání na nějaký GM se budou křížit a blbnout, tak jim přidáváš id do tisícovek? S YSI se nějakým dialogid nemusíš už zdržovat!

Dialog_ShowCallback(playerid, using callback "DialogMoney", DIALOG_STYLE_LIST, "Peníze", "Kolik mám peněz?", "Vybrat", "Zavrit");

/* Tohle například v příkaze /mojescore */

Dialog_ShowCallback(playerid, using callback "DialogScore", DIALOG_STYLE_LIST, "Score", "Jaké mám score?", "Vybrat", "Zavrit");

/* a po návratových hodnotách */

forward DialogMoney(playerid, dialogid, response, listitem, inputtext[]);
forward DialogScore(playerid, dialogid, response, listitem, inputtext[]);

public DialogMoney(playerid, dialogid, response, listitem, inputtext[]) {

	if (!response) return (true);
	if (listitem == 0) va_SendClientMessage(playerid, -1, "Nyní máš u sebe %i$", GetPlayerMoney(playerid));
	return (true);	
}

public DialogScore(playerid, dialogid, response, listitem, inputtext[]) {

	if (!response) return (true);
	if (listitem == 0) va_SendClientMessage(playerid, -1, "Nyní máš %i score", GetPlayerScore(playerid));
	return (true);
}
~> Můžeš si takových přidávát několik (samozřejmě i normální bez callbacků) aniž bys některému přiřadil id.

 

 

~> A to je jen zlomek z toho všeho, co s celou knihovnou jde ještě dělat. To, že jsi si jí neoblíbil, nebo že ti připadá těžká, nebo neužitečná(netuším, nenapsal jsi proč), tak to z jí ještě nedělá sračku.

~> (Ještě pro informaci, HLAVNĚ PRO NĚKTERÉ) Tím samozřejmě nechci říct, abys přešel na YSI nebo něco takového.

 

 

Kde jsem řekl, že to je sračka? Já řekl, že píše sračky o YSI, nikoliv že YSI je sračka, tak se nauč číst :-)

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...