Jump to content
  • 0

pomoc /Me a /do system


ChimozuFu

Dotaz

15 odpovědí na tuto otázku

Recommended Posts

  • 1
před 40 minutami, Janik22 said:

#include <a_samp> 
#include <izcmd>
#include <sscanf2> 

CMD:me(playerid, params[])
{
    new string[128], msg[128];

    if(sscanf(params, "sz", msg)) return SendClientMessage(playerid,COLOR_RED, "[ !   ]: /me <text>");

    format(string, sizeof(string), "*%s %s", GetName(playerid), msg);
    SendClientMessageToAll(COLOR_WHITE, string);
    return 1;
}

 

Takto to asi myslí

Přidal jsi pro sscanf 2 části pole, které má fce rozdělit. Když  potřebuji jen jeden parametr, tak pracuju s jediným parametrem:
 

CMD:me(playerid, params[]) {
	if (isnull(params)) return SendClientMessage(playerid, 0xFF000000, "[ ! ]: /me <text>");
	new result[144];
	format(result, sizeof result, "*%s %s", GetName(playerid), msg);
	return SendClientMessageToAll(-1, result), CMD_SUCCESS;
}

 

Link to comment
Share on other sites

  • 1
CMD:do(playerid, params[])
{
    new
        string[300],
        action[300];
    if(sscanf(params, "s[300]", action))
    {
        SendClientMessage(playerid, -1, "USAGE: /do [akce]");
        return 1;
    }
    else
    {
        format(string, sizeof(string), "* %s (( %s ))",action,GetName(playerid));
        ProxDetector(20, playerid, string, COLOR_PURPLE);
    }
    return 1;
}

stock ProxDetector(Float:radi, playerid, string[],color)
{
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerInRangeOfPoint(i,radi,x,y,z))
        {
            SendClientMessage(i,color,string);
        }
    }
}

stock GetName(playerid);
{
    new szName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, szName, sizeof(szName));
    return szName;
}

 

CMD:ooc(playerid, params[])
{
	new string[128],shout[100];
	if(Server[sOOC] == false && PlayerInfo[playerid][pAdmin] == 0) return SRPE(playerid,-1,"OOC chat je vypnutý !"); //tady si to nahradíš svojí podmínkou
	{
		if(sscanf(params, "s[100]", shout))
		{
	    	SendClientMessage(playerid, -1, "USAGE: /(o)oc [ TEXT ]");
	    	return 1;
		}
		else
		{
	    	format(string, sizeof(string), "[OOC] %s (( %s ))",GetName(playerid),shout);
	    	ProxDetector(20.0, playerid, string, 0xC6BF71FF);
		}
	}
	return 1;
}

Tady ze starších kódů, nezapomeň na include sscanf2. Nicméně doporučuju hodně googlit, když si zadáš třeba něco jako "samp roleplay commands" určitě ti vyjede hodně výsledků.

Link to comment
Share on other sites

  • 0
  • Globální moderátor

Prosímtě aspoň popiš co ten systém má dělat. /me a /do jsou předpokládám příkazy, nepíšeš ale co chceš.

Link to comment
Share on other sites

  • 0

Hádám, že /me stojí za message, takže jinak řečeno buď PM a nebo /say pro VIP...

#include <i-zcmd> // !!!
#include <sscanf2> // !!!

CMD:me(playerid, params[]) {
	
	new 
		id, 
		msg[120];
	if (sscanf(params, "us", id, msg)) return SCM(...) /* Špatně napsaný příkaz ! */
	if (id == INVALID_PLAYER_ID) return SCM(...) /* Špatně napsané ID/Jméno hráče ! */
	if (strlen(msg) >= 120) return SCM(...) /* Moc velká délka zprávy ! */
	if (id == playerid) return SCM(...) /* Píšeš zprávu sám sobě ! */
	new 
		result[144 + 1],
		nick[MAX_PLAYER_NAME + 1];
	GetPlayerName(playerid, nick, sizeof nick);
	format(result, sizeof result, "[MSG] Od %s(%i): %s", nick, playerid, msg);SendClientMessage(id, 0xFFFF0000, result);
	GetPlayerName(id, nick, sizeof nick);
	format(result, sizeof result, "[MSG] Pro %s(%i): %s", nick, id, msg);SendClientMessage(playerid, 0xFFFF0000, result);
	return CMD_SUCCESS;
}

//Ve tmavém režimu ten kus kódu vypadá dobře :d:parrot:

Ale co má dělat /do to nevím. Hádám že nějakou akci, když je hráč poblíž nějaké lokace, například /do pro natankování. Popiš to víc...

Link to comment
Share on other sites

  • 0
před 12 hodinami, Hip said:

Prosímtě aspoň popiš co ten systém má dělat. /me a /do jsou předpokládám příkazy, nepíšeš ale co chceš.

Omlouvám se. Chtěl bych to na rp server, takže /Me a /do by viděli hráči v okruhu toho daného hráče. Kdyby někdo byl ještě zkušený tak bych byl rád kdyby jste přidali ooc chat. /o

/Me bude dělat danou akci která se nedá vyjádřit v animaci, př. /me bere sodovku ze stolu a podává pánovy. /do Sodovka je chlazená

Doufám že vám to pomohlo, a ještě jednou díky.

Link to comment
Share on other sites

  • 0
před 2 hodinami, ChimozuFu said:

by viděli hráči v okruhu toho daného hráče

 

new 
	Float:ppos[3];
GetPlayerPos(playerid, ppos[0], ppos[1], ppos[2]);

for (new i; i < MAX_PLAYERS; i++) {
	if (IsPlayerInRangeOfPoint(i, 5.0, ppos[0], ppos[1], ppos[2])) {
		SendClientMessage(i, ...);
    }
}

 

Link to comment
Share on other sites

  • 0
  • Globální moderátor
před 14 hodinami, ChimozuFu said:

Omlouvám se. Chtěl bych to na rp server, takže /Me a /do by viděli hráči v okruhu toho daného hráče. Kdyby někdo byl ještě zkušený tak bych byl rád kdyby jste přidali ooc chat. /o

/Me bude dělat danou akci která se nedá vyjádřit v animaci, př. /me bere sodovku ze stolu a podává pánovy. /do Sodovka je chlazená

Doufám že vám to pomohlo, a ještě jednou díky.

jo takhle, prostě reálné role play příkazy (tady každý bere rp jako něco kde se člověk zaměstná a automaticky je to rp mod... 😄

 

IC, OOC, ME, EXAM(ination) (chápu dobře, že tohle bereš jako /do?)

 

IC jak píše Scydo,

OOC je v sampu defacto nativně, nebo bys chtěl nějakou změnu? 

Link to comment
Share on other sites

  • 0

#include <a_samp> 
#include <izcmd>
#include <sscanf2> 

CMD:me(playerid, params[])
{
    new string[128], msg[128];

    if(sscanf(params, "sz", msg)) return SendClientMessage(playerid,COLOR_RED, "[ !   ]: /me <text>");

    format(string, sizeof(string), "*%s %s", GetName(playerid), msg);
    SendClientMessageToAll(COLOR_WHITE, string);
    return 1;
}

 

Takto to asi myslí

Link to comment
Share on other sites

  • 0

Myslím to takhle: Ofiko chat by byl jako ic chat, př. "Čau johne, jak se vede?"

Ooc chat by byl třeba /o, tam by se psalo co chcou hráči vyjádřit ooc, př. "Kámo tohle je totální fail rp ..."

/do, věc co potřebuješ k rp a potřebuješ k tomu i /me, dodávám zase př. "/do silně krvácí"

/me, co dělá to už nemusím vysvětlovat.

Byl ybhc rád za plný code, díky 😄

Link to comment
Share on other sites

  • 0
On 2. 6. 2020 at 13:34, Scydo said:

Přidal jsi pro sscanf 2 části pole, které má fce rozdělit. Když  potřebuji jen jeden parametr, tak pracuju s jediným parametrem:
 


CMD:me(playerid, params[]) {
	if (isnull(params)) return SendClientMessage(playerid, 0xFF000000, "[ ! ]: /me <text>");
	new result[144];
	format(result, sizeof result, "*%s %s", GetName(playerid), msg);
	return SendClientMessageToAll(-1, result), CMD_SUCCESS;
}

 

Hází mi to stále tento error: gamemodes\gamemode.pwn(382) : error 017: undefined symbol "GetName"

Edited by ChimozuFu
Link to comment
Share on other sites

  • 0
  • Globální moderátor

přidej se metodu na získání nicku hráče

 

private GetName(playerid) {
	new name[24];
  	GetPlayerName(playerid, name, 24);
  	return name;
}

 

Link to comment
Share on other sites

  • 0
On 10. 6. 2020 at 14:08, Honles said:

stock GetName(playerid) {
	new name[24];
  	GetPlayerName(playerid, name, 24);
  	return name;
}

Mám takový pocit, že toto si buď vyhledal někde na internetu, nebo druhá varianta zní že nevíš absolutně co danná osoba požaduje. Proč nenapíšeš kompletně kód celého systému ?.

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