їOptimizar este comando?
#1

Buenas, este comando cumple la funciуn que cuando es un mensaje largo se pasa a otra lнnea y bien, funciona perfecto... pero їcуmo quedarнa mбs optimizado? la forma mбs optimizada, sea de memoria o cуdigo.

Код:
CMD:g(playerid, params[]) return cmd_gritar(playerid, params);
CMD:gritar(playerid, params[])
{
	new
	    mensaje[128], string[256];
    if(sscanf(params, "s[128]", mensaje))
	{
	    SendClientMessage(playerid, COLOR_PIEL, "* Debe indicar parбmetros para el comando(/g), ejemplo: /g [Texto]");
	    return 1;
	}
    if(strlen(mensaje) > 75)
	{
		new string2[128];
		format(string2,256,"... %s!!",mensaje[75]);
		strdel(mensaje,75,strlen(mensaje));
		format(string, sizeof(string), "%s grita: ЎЎ%s", NombreJugador(playerid), mensaje);
		ProxDetector(17.0, playerid, string, 0x7bb7b7FF, 0x4c9e9eFF, 0x2e8787FF, 0x187373FF, 0x0a5555FF);
		ProxDetector(17.0, playerid, string2, 0x7bb7b7FF, 0x4c9e9eFF, 0x2e8787FF, 0x187373FF, 0x0a5555FF);
	}
	if(strlen(mensaje) < 75){
		format(string, sizeof(string), "%s grita: ЎЎ%s!!", NombreJugador(playerid), mensaje);
		ProxDetector(17.0, playerid, string, 0x7bb7b7FF, 0x4c9e9eFF, 0x2e8787FF, 0x187373FF, 0x0a5555FF);
	}
	return 1;
}
Reply
#2

PHP код:
CMD:gritar(playeridparams[])
{
    if(
isnull(params))
        return 
SendClientMessage(playeridCOLOR_PIEL"* Debe indicar parбmetros para el comando(/g), ejemplo: /g [Texto]");
    
HacerGritarAJugador(playerid17.0params);
    return 
1;

Lo primero en el comando es aprovechar la amplitud que params puede tomar, no le definimos 128 por lo que en ese caso no se llegarнa a veces a llenar las dos lineas del salto, lo demбs cambiarlo por una funciуn por si luego se quiere utilizar (aunque usas zcmd por lo que tienes el cmd_.. pero por si las dudas).

PHP код:
stock HacerGritarAJugador(playeridFloat:_radiomensaje[])
{
    new 
_out[(75*2)+MAX_PLAYER_NAME+(11*2)], // Mensaje (los dos saltos) permitirб sуlo 75 letras cada uno, sin embargo las posibilidades de un nombre largo, y los carбcteres aсadidos (Ў,!,.)
        
_col[] = {
        
0x7bb7b7FF,
        
0x4c9e9eFF,
        
0x2e8787FF,
        
0x187373FF,
        
0x0a5555FF
    
};
    if(
strlen(mensaje) > 75)
    {
        
format(_outsizeof(_out), "%s grita: Ў%.75s .."mensaje); // mostrar solo 75 carбcteres del mensaje, restamos el strdel y lo demбs que hace de alguna forma mбs lenta la funciуn
        
ProxDetector(_radioplayerid_out_col[0], _col[1], _col[2], _col[3], _col[4]);
        
format(_outsizeof(_out), ".. %s!"mensaje[75]); // Mostrar todo el mensaje a partir del carбcter 75
        
ProxDetector(_radioplayerid_out_col[0], _col[1], _col[2], _col[3], _col[4]);
    }
    else
    {
        
format(_outsizeof(_out), "%s grita: Ў%s!"mensaje);
        
ProxDetector(_radioplayerid_out_col[0], _col[1], _col[2], _col[3], _col[4]);
    }
    return 
1;

Reply
#3

Quote:
Originally Posted by _Zume
Посмотреть сообщение
[PHP]
Excelente, muchнsimas gracias por tomarte el tiempo +rep.

Ahora, si quiero utilizar ese procedimiento puedo re-usar esa funciуn para otros comandos de ROL(ejemplo /b - /me que llevan diferente color) o copio esa misma funciуn, le cambio nombre acorde a lo que la valla a usar y los colores y listo? o cуmo.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)