їOptimizar este comando? -
Fagrinht - 23.06.2016
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;
}
Respuesta: їOptimizar este comando? -
Zume - 24.06.2016
PHP код:
CMD:gritar(playerid, params[])
{
if(isnull(params))
return SendClientMessage(playerid, COLOR_PIEL, "* Debe indicar parбmetros para el comando(/g), ejemplo: /g [Texto]");
HacerGritarAJugador(playerid, 17.0, params);
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(playerid, Float:_radio, mensaje[])
{
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(_out, sizeof(_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(_radio, playerid, _out, _col[0], _col[1], _col[2], _col[3], _col[4]);
format(_out, sizeof(_out), ".. %s!", mensaje[75]); // Mostrar todo el mensaje a partir del carбcter 75
ProxDetector(_radio, playerid, _out, _col[0], _col[1], _col[2], _col[3], _col[4]);
}
else
{
format(_out, sizeof(_out), "%s grita: Ў%s!", mensaje);
ProxDetector(_radio, playerid, _out, _col[0], _col[1], _col[2], _col[3], _col[4]);
}
return 1;
}
Respuesta: їOptimizar este comando? -
Fagrinht - 24.06.2016
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.