Ayuda con YCMD, que hago mal? .-.
#1

Quiero pasar los comandos que tengo de strcmp a YCMD, en un comando con parбmetros al poner mi id mismo me sale "player no conectado", Ejemplo:

En strcmp pero estб en dcmd pero es igual, aqui funciona bien, soy el id 0 y me doy cash con /darcash o monto.
Код:
dcmd_darcash(playerid,params[]) {
	if(PlayerInfo[playerid][Level] >= 5) {
     new tmp[25], tmp2[25], Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
	    if(!strlen(tmp) || !strlen(tmp2) || !IsNumeric(tmp2)) return SendClientMessage(playerid, red, "[USO]: /darcash [playerid] [monto]") &&
		SendClientMessage(playerid, orange, "[Funciуn]: Darбs dinero a Especificado Jugador!");
        new player1 = strval(tmp), cash = strval(tmp2);
        if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID) {
			CMDMessageToAdmins(playerid,"DARCASH");
    		format(string2, sizeof(string2), "Has dado ha \"%s\" el monto de '$%d", pName(player1), cash); SendClientMessage(playerid,blue,string2);
			if(player1 != playerid) { format(string2,sizeof(string2),"El Administrador \"%s\" Te ha aсadido '$%d'", pName(playerid), cash); SendClientMessage(player1,blue,string2); }
   			return GivePlayerMoney(player1, cash);
	    } else return SendClientMessage(playerid,red,"[ERROR]: El player no estб conectado");
	} else return SendClientMessage(playerid,red,"[ERROR]: Tъ necesitas nivel 5 para usar este comando.");
}
Aqui no me puedo dar cash o sea /darcash 0 monto, pues me sale que no estoy conectado.
Код:
CMD:darcash(playerid,params[]) {
	if(PlayerInfo[playerid][Level] >= 5) {
 	   new pos, cash;
	   new id = strval(params[0]);
       cash = strval(params[pos]);
	    if(sscanf(params,"ui", id,cash)) return SendClientMessage(playerid, red, "[USO]: /darcash [playerid] [monto]") &&
		SendClientMessage(playerid, orange, "[Funciуn]: Darбs dinero a Especificado Jugador!");
        if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
			CMDMessageToAdmins(playerid,"DARCASH");
    		format(string2, sizeof(string2), "Has dado ha \"%s\" el monto de '$%d", pName(id), cash); SendClientMessage(playerid,blue,string2);
			if(id != playerid) { format(string2,sizeof(string2),"El Administrador \"%s\" Te ha aсadido '$%d'", pName(playerid), cash); SendClientMessage(id,blue,string2); }
   			return GivePlayerMoney(id, cash);
	    } else return SendClientMessage(playerid,red,"[ERROR]: El player no estб conectado");
	} else return SendClientMessage(playerid,red,"[ERROR]: Tъ necesitas nivel 5 para usar este comando.");
}
No he probado en dar a los otros players o a otras id que no sea la mнa, pero aъn asн x q no me puedo dar? me falta algo? hice algo mal? ayuden, no sй si me expliquй bien u.u
Reply
#2

PHP код:
CMD:darcash(playerid,params[]) {
    if(
PlayerInfo[playerid][Level] >= 5) {
        new 
poscash;
        if(
sscanf(params,"ui"id,cash)) return SendClientMessage(playeridred"[USO]: /darcash [playerid] [monto]") &&
        
SendClientMessage(playeridorange"[Funciуn]: Darбs dinero a Especificado Jugador!");
        if(
IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
            
CMDMessageToAdmins(playerid,"DARCASH");
            
format(string2sizeof(string2), "Has dado ha \"%s\" el monto de '$%d"pName(id), cash); SendClientMessage(playerid,blue,string2);
            if(
id != playerid) { format(string2,sizeof(string2),"El Administrador \"%s\" Te ha aсadido '$%d'"pName(playerid), cash); SendClientMessage(id,blue,string2); }
               return 
GivePlayerMoney(idcash);
        } else return 
SendClientMessage(playerid,red,"[ERROR]: El player no estб conectado");
    } else return 
SendClientMessage(playerid,red,"[ERROR]: Tъ necesitas nivel 5 para usar este comando.");

cuando usas sscanf no hace falta definir strock y si tienes una variable sin celdas es un numero asique no hace falta que uses strval. Pruebalo asi como esta al cmd
Reply
#3

pawn Код:
CMD:darcash(playerid,params[]) {
    if(PlayerInfo[playerid][Level] >= 5) {
        if(sscanf(params,"ri", params[0],params[1])) return SendClientMessage(playerid, red, "[USO]: /darcash [playerid] [monto]") &&
        SendClientMessage(playerid, orange, "[Funciуn]: Darбs dinero a Especificado Jugador!");
        if(IsPlayerConnected(params[0]) && params[0] != INVALID_PLAYER_ID) {
            CMDMessageToAdmins(playerid,"DARCASH");
            format(string2, sizeof(string2), "Has dado ha \"%s\" el monto de '$%d", pName(params[0]), params[1]); SendClientMessage(playerid,blue,string2);
            if(params[0] != playerid) { format(string2,sizeof(string2),"El Administrador \"%s\" Te ha aсadido '$%d'", pName(playerid), params[1]); SendClientMessage(params[0],blue,string2); }
               return GivePlayerMoney(params[0], (0+params[1]));
        } else return SendClientMessage(playerid,red,"[ERROR]: El player no estб conectado");
    } else return SendClientMessage(playerid,red,"[ERROR]: Tъ necesitas nivel 5 para usar este comando.");
}
Reply
#4

Nada, probй los 2 y sigue saliendo el error "El player no estб conectado" e incluso lo probй en un lvdm quitando la callback OnPlayerCommandText pero nada, falta agregarle algo? o q pasa u.u
Reply
#5

Quote:
Originally Posted by dannypanda05
Посмотреть сообщение
Nada, probй los 2 y sigue saliendo el error "El player no estб conectado" e incluso lo probй en un lvdm quitando la callback OnPlayerCommandText pero nada, falta agregarle algo? o q pasa u.u
intenta asi:

pawn Код:
CMD:darcash(playerid,params[])
{
    static string[128];
    if(PlayerInfo[playerid][Level] >= 5) return SendClientMessage(playerid,-1,"[ERROR]: Tъ necesitas nivel 5 para usar este comando.");
    if(sscanf(params,"ri", params[0],params[1])) return SendClientMessage(playerid, -1, "[USO]: /darcash [playerid] [monto]");
    if(IsPlayerConnected(params[0])) return SendClientMessage(playerid,-1,"[ERROR]: El player no estб conectado");
    if(params[0] != INVALID_PLAYER_ID) return SendClientMessage(playerid,-1,"[ERROR]: El id ingresado es incorrecto");
   
    GivePlayerMoney(params[0], (0+params[1]));
    format(string, sizeof(string), "Has dado ha \"%s\" el monto de '$%d", NombreEx(params[0]), params[1]); SendClientMessage(playerid,-1,string);
    format(string,sizeof(string),"El Administrador \"%s\" Te ha aсadido '$%d'", NombreEx(playerid), params[1]); SendClientMessage(params[0],-1,string);
    return 1;
}
Reply
#6

Nop, me sale "Has dado ha ... el monto de $cash" sea la id que sea, y no pasa nada .-.

O pasenmen un cmd de dar dinero en YCMD que de allн yo entiendo u.u
Reply
#7

Prueba asi
pawn Код:
CMD:darcash(playerid,params[])
{
    static string[128];
    if(PlayerInfo[playerid][Level] >= 5) return SendClientMessage(playerid,-1,"[ERROR]: Tъ necesitas nivel 5 para usar este comando.");
    if(sscanf(params,"ri", params[0],params[1])) return SendClientMessage(playerid, -1, "[USO]: /darcash [playerid] [monto]");
    if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid,-1,"[ERROR]: El player no estб conectado");
    if(params[0] != INVALID_PLAYER_ID) return SendClientMessage(playerid,-1,"[ERROR]: El id ingresado es incorrecto");
   
    GivePlayerMoney(params[0], (0+params[1]));
    format(string, sizeof(string), "Has dado ha \"%s\" el monto de '$%d", NombreEx(params[0]), params[1]); SendClientMessage(playerid,-1,string);
    format(string,sizeof(string),"El Administrador \"%s\" Te ha aсadido '$%d'", NombreEx(playerid), params[1]); SendClientMessage(params[0],-1,string);
    return 1;
}
Reply
#8

porque "ri" en el formato de sscanf, si es un valor entero, y es un jugador tendrнa q ser "u"
Reply
#9

Quote:
Originally Posted by NeuZz
Посмотреть сообщение
porque "ri" en el formato de sscanf, si es un valor entero, y es un jugador tendrнa q ser "u"
el r indentifica si no es un id de un bots.

@dannypanda05 edita los format, en la partes \"%s\" elimina los \"
Reply
#10

pawn Код:
CMD:dinero(playerid, params[])
{
if(sscanf(params, "id", params[0] , params[1])) return SendClientMessage(playerid, 0xFF4500FF, "ERROR: /dinero [playerid] [cantidad]");
if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, 0xFF4500FF, "ERROR: Jugador desconectado");
if(params[1] > GetPlayerMoney(playerid))  return SendClientMessage(playerid, 0xFF4500FF, "ERROR: No tienes ese dinero");
if(params[0] == playerid) return SendClientMessage(playerid, 0xFF4500FF, "ERROR: No te puedes dar dinero a ti mismo");
if(params[1] <= 0) return SendClientMessage(playerid, 0xFF4500FF, "ERROR: Cantidad incorrecta");
GivePlayerMoney(playerid, -params[1]);
GivePlayerMoney(params[0], params[1]);
new str[128];
format(str, sizeof(str), "Has recibido $%d de %s", params[1], GetPlayerName(playerid, str, 24));
SendClientMessage(params[0], -1, str);
format(str, sizeof(str), "Has dado $%d a %s", params[1], GetPlayerName(params[0], str, 24));
SendClientMessage(playerid, -1, str);
return 1;
}
Explicaciуn:
Код:
if(sscanf(params, "id", params[0] , params[1])) return SendClientMessage(playerid, 0xFF4500FF, "ERROR: /dinero [playerid] [cantidad]");
Quiere decir que el comando debe contener los parбmetros "id" (i == playerid, d == monto), de lo contrario darб mensaje error.


Код:
if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, 0xFF4500FF, "ERROR: Jugador desconectado");
Esto verifica si el jugador ingresado esta desconectado, en ese caso retornarб mensaje erroneo.


Код:
if(params[1] > GetPlayerMoney(playerid))  return SendClientMessage(playerid, 0xFF4500FF, "ERROR: No tienes ese dinero");
Quiere decir: "Si el dinero ingresado es mayor al dinero del jugador, retornarб mensaje erroneo"


Код:
if(params[1] <= 0) return SendClientMessage(playerid, 0xFF4500FF, "ERROR: Cantidad incorrecta");
Si el "playerid" ingresa un montуn negativo o de valor 0 (/dinero 1 -20) retornarб error.


Код:
if(params[0] == playerid) return SendClientMessage(playerid, 0xFF4500FF, "ERROR: No te puedes dar dinero a ti mismo");
"Si el player ingresado es igual al player id que pone el comando, retornarб mensaje erroneo"
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)