stock prueba(playerid, color, mensaje) { SendClientMessage(playerid, color, mensaje); }
CMD:test(playerid, params[]) { prueba(playerid, COLOR_ROJO, "Hola wapo"); return 1; }
stock SoyPuto(playerid, puto[]) { SendClientMessage(playerid, COLOR_PUTO, puto); } COMMAND:puteria(playerid, params[]) { if(!params[0]) SendClientMessage(playerid, -1, #Escribe tu puteria); SoyPuto(playerid, params); return true; }
stock Test(playerid, puto[]) { SendClientMessage(playerid, COLOR_PUTO, puto);}
CMD:test(playerid, params[]) { if(!params[0]) SendClientMessage(playerid, -1, #Escribe tu puteria); Test(playerid, #Texto); //cambia ah tu gusto return 1;}
MensajeNuevo(playerid,color,mensaje[]) { SendClientMessage(playerid,color,mensaje); // cualquier otro codigo aparte return 1; }
MensajeNuevo(playerid,-1,"string aqui");
#define prueba SendClientMessage
stock Mensaje(playerid,color,fstring[],{Float, _}:...)
{
new n=(numargs()-3)*4;
if(n)
{
new message[128],arg_start,arg_end;
#emit CONST.alt fstring
#emit LCTRL 5
#emit ADD
#emit STOR.S.pri arg_start
#emit LOAD.S.alt n
#emit ADD
#emit STOR.S.pri arg_end
do
{
#emit LOAD.I
#emit PUSH.pri
arg_end-=4;
#emit LOAD.S.pri arg_end
}
while(arg_end>arg_start);
#emit PUSH.S fstring
#emit PUSH.C 255
#emit PUSH.ADR message
n+=4*3;
#emit PUSH.S n
#emit SYSREQ.C format
n+=4;
#emit LCTRL 4
#emit LOAD.S.alt n
#emit ADD
#emit SCTRL 4
return SCM(playerid,color,message);
}
else return SCM(playerid,color,fstring);
}
//------------------------------------------------------------------------------------------------
stock SCM(playerid, color, msg[])
{
return SendClientMessage(playerid, color, msg);
}
Mensaje(playerid, -1, "Wea parametro %d %d", 1, 2);
new Float:X, Float:Y, Float:Z; stock GetObjectDistanceFromPlayer(playerid, objectid, color, mensaje[]) { GetObjectPos(objectid, X, Y, Z); new Float:distancia = GetPlayerDistanceFromPoint(playerid, X, Y, Z), mensaje[254]; format(mensaje, sizeof(mensaje), "%0.2f", distancia); SendClientMessage(playerid, color, mensaje); return 1; }
GetObjectDistanceFromPlayer(playerid, objecto[0], COLOR_PUTO, "Estas a -distancia- de tu destino");
stock GetObjectDistanceFromPlayer(playerid, objectid, color, mensaje[]) { new Float:X, Float:Y, Float:Z; GetObjectPos(objectid, X, Y, Z); new Float:distancia = GetPlayerDistanceFromPoint(playerid, X, Y, Z); new msjDistancia[8]; format(msjDistancia, sizeof(msjDistancia), "%0.2f", distancia); str_replace(message, "-distancia-", msjDistancia); SendClientMessage(playerid, color, mensaje); return 1; }
C:\Users\JONATAN\Desktop\Outbreak Roleplay\pawno\include\ODFP.inc(13) : warning 224: indeterminate array size in "sizeof" expression (symbol "maxlength") Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase 1 Warning.
CMD:dis(playerid, params[]) { GetObjectDistanceFromPlayer(playerid, objeto[0], -1, "Estas a -distancia- de tu destino"); return 1; }
stock GetObjectDistanceFromPlayer(playerid, objectid, color, mensaje[])
{
new Float:X, Float:Y, Float:Z;
GetObjectPos(objectid, X, Y, Z);
new Float:distancia = GetPlayerDistanceFromPoint(playerid, X, Y, Z);
new msjDistancia[8];
format(msjDistancia, sizeof(msjDistancia), "%0.2f", distancia);
new mensajefinal[124];
format(mensajefinal, sizeof(mensajefinal), "%s",str_replace("-distancia-", msjDistancia, mensaje);//Cambie de lugar las variables, segъn yo asн tienen que estar acomodadas y asн tendrнa s que almacenar el mensaje.
SendClientMessage(playerid, color, mensajefinal);//Enviamos el mensaje al jugador con todo y el formato.
return 1;
}
Bueno, no se si realmente funciono, me arrojo este warning, pero igualmente solo enviaba el mensaje, y fuera de eso no salia la "distancia", simplemente un espacio
Code:
C:\Users\JONATAN\Desktop\Outbreak Roleplay\pawno\include\ODFP.inc(13) : warning 224: indeterminate array size in "sizeof" expression (symbol "maxlength") Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase 1 Warning. Code:
CMD:dis(playerid, params[]) { GetObjectDistanceFromPlayer(playerid, objeto[0], -1, "Estas a -distancia- de tu destino"); return 1; } |
Code:
C:\Users\JONATAN\Desktop\Outbreak Roleplay\pawno\include\ODFP.inc(13) : warning 224: indeterminate array size in "sizeof" expression (symbol "maxlength") Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase 1 Warning. |
Esa advertencia dice mucho mбs de lo que crees. Te estб indicando que no pudo determinar el tamaсo de la variable que colocaste dentro del sizeof. Si ese sizeof estб dentro de una funciуn que maneje cadenas de caracteres (como format, por ejemplo), harнa que la cadena resultante del formato quede vacнa.
Eso explicarнa por quй estбs obteniendo un espacio en vez de la distancia. їLa soluciуn? Revisar lo que estбs colocando en el sizeof. sizeof determina la cantidad de celdas de una variable. En el caso de las cadenas de caracteres, determina su longitud mбxima (contando el caracter nulo). Por ejemplo, si tienes new x[31] y llamas a sizeof (x), su resultado serнa 31, ya que x tiene 31 celdas. Si mal no recuerdo, al utilizar sizeof sobre un arreglo que proviene de los parбmetros de una funciуn, el compilador se queja. їEs ese tu caso? |
format(msjDistancia, sizeof(msjDistancia), "%0.2f", distancia);
De hecho, al ponerlo asн
Code:
format(msjDistancia, sizeof(msjDistancia), "%0.2f", distancia); |
format(msjDistancia, 8, "%0.2f", distancia);
C:\Users\JONATAN\Desktop\Outbreak Roleplay\pawno\include\ODFP.inc(13) : warning 224: indeterminate array size in "sizeof" expression (symbol "maxlength") Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase 1 Warning.
strreplace(mensaje, "-distancia-", msjDistancia);
stock GetObjectDistanceFromPlayer(playerid, objectid, color, mensaje[], tamano = sizeof(mensaje)) { new Float:X, Float:Y, Float:Z; GetObjectPos(objectid, X, Y, Z); new Float:distancia = GetPlayerDistanceFromPoint(playerid, X, Y, Z); new msjDistancia[8]; format(msjDistancia, sizeof(msjDistancia), "%0.2f", distancia); str_replace(message, "-distancia-", msjDistancia, .maxlength = tamano); SendClientMessage(playerid, color, mensaje); return 1; }