Ayuda comando y stock
#1

Buenas, tengo el comando /arma [armaid] que es obviamente para crear un arma mas rбpido.
Bueno tengo el comando:

CMD:arma(playerid, params[])
{
new armaid;
if(!sscanf(params, "d", armaid))
{
if(armas_invalidas(GetPlayerWeapon(playerid)))
{
GivePlayerWeapon(playerid, armaid, 9000);
}
else SCM(playerid, -1, ""RO"No puedes usar esta arma en el servidor");
}
else SCM(playerid, -1, ""BL"Uso: /arma [arma id]");
return 1;
}

y el stock

stock armas_invalidas(idarma)
{
switch(GetPlayerWeapon(idarma))
{
case 1,2,3,4,5,6,7,8,9,10,
11,12,13,14,15,16,17,18,19,
20,21,35,36,37,38,39,40,41,
43,44,45,46: return 1;
}
return 0;
}

pero el problema esque no funciona perfectamente, no todas las armas quedan invalidas, o sino todas las armas quedan invalidas hasta las que acepto, no se si tendrй algo mal acomodado.

Un detalle esque todas las ids que estan dentro de ese stock son las ids de las armas que no permito sacar.

Si me ayudan estoy muy agradecido, gracias
Reply
#2

Creo que es el formato y un operador que pusiste mal:

pawn Код:
CMD:arma(playerid, params[])
{
new armaid;
if(sscanf(params, "i", armaid)) // Aquн creo el error del formato y el operador.
{
if(!armas_invalidas(GetPlayerWeapon(playerid))) // Aquн el operador '!' para detectar si no puso un arma invбlida.
{
GivePlayerWeapon(playerid, armaid, 9000);
}
else SCM(playerid, -1, ""RO"No puedes usar esta arma en el servidor");
}
else SCM(playerid, -1, ""BL"Uso: /arma [arma id]");
return 1;
}
Reply
#3

pawn Код:
CMD:arma(playerid, params[])
{
new armaid;
if(sscanf(params, "d", armaid)) return SCM(playerid, -1, ""BL"Uso: /arma [arma id]");
if(!armas_invalidas(GetPlayerWeapon(playerid))) return SCM(playerid, -1, ""RO"No puedes usar esta arma en el servidor");
GivePlayerWeapon(playerid, armaid, 9000);
return 1;
}
prueba asi el "d" es lo mismo que "i" solo faltaba un !
Reply
#4

Quote:
Originally Posted by deryan
Посмотреть сообщение
pawn Код:
CMD:arma(playerid, params[])
{
new armaid;
if(sscanf(params, "d", armaid)) return SCM(playerid, -1, ""BL"Uso: /arma [arma id]");
if(!armas_invalidas(GetPlayerWeapon(playerid))) return SCM(playerid, -1, ""RO"No puedes usar esta arma en el servidor");
GivePlayerWeapon(playerid, armaid, 9000);
return 1;
}
prueba asi el "d" es lo mismo que "i" solo faltaba un !
Es lo mismo que yo puse...
Ahora, el cуdigo serнa asн:



pawn Код:
CMD:arma(playerid, params[])
{
new armaid;
if(sscanf(params, "i", armaid)) return SCM(playerid, -1, ""BL"Uso: /arma [arma id]");
if(!armas_invalidas(GetPlayerWeapon(playerid))) return SCM(playerid, -1, ""RO"No puedes usar esta arma en el servidor");
else {
GivePlayerWeapon(playerid, armaid, 9000);
}
return 1;
}

Ahн deberнa funcionarle perfectamente. 'd' es mбs para detectar una ID.
Reply
#5

pawn Код:
CMD:arma(playerid, params[]) {
    if(sscanf(params, "d", params[0])) return SCM(playerid, -1, ""BL"Uso: /arma [arma id]");
       
 //verifica si el id del arma ingresado es igual al los id que se encuetra en el stock, y tirara el mensaje si son iguales.
    if(params[0] == armas_invalidas(params[0])) return SCM(playerid, -1, ""RO"No puedes usar esta arma en el servidor");

    GivePlayerWeapon(playerid, params[0], 9000);
    return true;
}

stock armas_invalidas(idarma) {
        //EDIT: quite el GetPlayerWeapon por que estaria verificando si el player tiene esa  id de arma y no es lo ke querias, veo..
    switch(idarma) {
        case 1,2,3,4,5,6,7,8,9,10,
        11,12,13,14,15,16,17,18,19,
        20,21,35,36,37,38,39,40,41,
        43,44,45,46: return true; }
    return false;
}


PD: D es para numeros enteros, I es para identificar los ids de los players pero cambien identifica los id de los BOTs, por eso se usa R.
Reply
#6

Quote:
Originally Posted by EnzoMetlc
Посмотреть сообщение
Es lo mismo que yo puse...
Ahora, el cуdigo serнa asн:



pawn Код:
CMD:arma(playerid, params[])
{
new armaid;
if(sscanf(params, "i", armaid)) return SCM(playerid, -1, ""BL"Uso: /arma [arma id]");
if(!armas_invalidas(GetPlayerWeapon(playerid))) return SCM(playerid, -1, ""RO"No puedes usar esta arma en el servidor");
else {
GivePlayerWeapon(playerid, armaid, 9000);
}
return 1;
}

Ahн deberнa funcionarle perfectamente. 'd' es mбs para detectar una ID.
no es necesario agregar un else porque las fnuciones de arriba solo son condiciones que retornan ahн mismo
Reply
#7

Quote:
Originally Posted by deryan
Посмотреть сообщение
no es necesario agregar un else porque las fnuciones de arriba solo son condiciones que retornan ahн mismo
igual estaban mal ambas . amigo ...
verifica el mio .
saludos.
Reply
#8

Quote:
Originally Posted by OTACON
Посмотреть сообщение
igual estaban mal ambas . amigo ...
verifica el mio .
saludos.
tienes razуn faltaba hacer la comprobaciуn de que la id de esa arma fuera la de el stock jaja
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)