[Problema]ZCMD If no detectado
#1

Buenas, estoy trabajando en un GM zcmd, en el cual llevo acabo el comando de /dar... /dar materiales o /dar drogas...

El problema es que si uso.. /dar IDJugador Materiales Cantidad me va de lujo pero a la hora de usar drogas en vez de materiales, me salta error de que no existe el comando... Seguro y tengo un error feo D: xD' Pero tengo aсos que no scripteo aquн esta el cуdigo..

pawn Код:
CMD:dar(playerid, params[]) {
    new
        giveSz[12],
        amount,
        targetID;

    if(sscanf(params, "us[12]d", targetID, giveSz, amount)) {
        SendClientMessage(playerid, COLOR_GRIS, SYNTAX_MESSAGE"/Dar [Jugador/ID] [Artнculo] [Cantidad/Arma]");
        return SendClientMessage(playerid, COLOR_GRIS, "Artнculos: Materiales, Drogas");
    }
    else {
        if(targetID == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_GRIS, "El ID de jugador especificado no estб conectado o no se ha autenticado.");
        if(!IsPlayerInRangeOfPlayer(playerid, targetID, 5.0)) return SendClientMessage(playerid, COLOR_GRIS, "Estas demasiado lejos.");

       
       
     if(strcmp(giveSz, "materiales", true) == 0) {
            new
                playerName[2][MAX_PLAYER_NAME];

            GetPlayerName(playerid, playerName[0], MAX_PLAYER_NAME);
            GetPlayerName(targetID, playerName[1], MAX_PLAYER_NAME);

            if(playerVariables[playerid][pMaterials] >= amount) {
                if(amount < 1)
                    return 1;

                playerVariables[playerid][pMaterials] -= amount;
                playerVariables[targetID][pMaterials] += amount;

                format(szMessage, sizeof(szMessage), "Le has dado %d materiales a %s.", amount, playerName[1]);
                SendClientMessage(playerid, COLOR_BLANCO, szMessage);

                format(szMessage, sizeof(szMessage), "%s le ha dado %d materiales.", playerName[0], amount);
                SendClientMessage(targetID, COLOR_BLANCO, szMessage);

                format(szMessage, sizeof(szMessage), "* %s le ha dado %d materiales a %s.", playerName[0], amount, playerName[1]);
                nearByMessage(playerid, COLOR_PURPURA, szMessage);
            }
            else {
                format(szMessage, sizeof(szMessage), "Usted no tiene los materiales suficientes para completar este comercio. Usted necesita %d mas materiales.", playerVariables[playerid][pMaterials]-amount);
                SendClientMessage(playerid, COLOR_BLANCO, szMessage);
            }
        }


        else if(strcmp(giveSz, "drogas", true) == 0) {

            if(playerVariables[playerid][pDrogas] >= amount) {
                if(amount < 1)
                    return 1;

                playerVariables[playerid][pDrogas] -= amount;
                playerVariables[targetID][pDrogas] += amount;

                format(szMessage, sizeof(szMessage), "Le has dado %d gramos de droga a %s.", amount, playerName[1]);
                SendClientMessage(playerid, COLOR_BLANCO, szMessage);

                format(szMessage, sizeof(szMessage), "%s le ha dado %d gramos de droga.", playerName[0], amount);
                SendClientMessage(targetID, COLOR_BLANCO, szMessage);

                format(szMessage, sizeof(szMessage), "* %s le ha dado %d gramos de droga a %s.", playerName[0], amount, playerName[1]);
                nearByMessage(playerid, COLOR_PURPURA, szMessage);
            }
            else {
                format(szMessage, sizeof(szMessage), "Usted no tiene los drogas suficientes para completar este comercio. Usted necesita %d gramos de droga mas.", playerVariables[playerid][pDrogas]-amount);
                SendClientMessage(playerid, COLOR_BLANCO, szMessage);
            }
        }
      }
    return 1;
}
Si porfavor me brindan un pequeсa ayuda..

Saludos & Gracias !
Reply
#2

Prueba a ver ahora:
pawn Код:
CMD:dar(playerid, params[]) {
    new
        giveSz[12],
        amount,
        targetID;

    if(sscanf(params, "us[12]d", targetID, giveSz, amount)) {
        SendClientMessage(playerid, COLOR_GRIS, SYNTAX_MESSAGE"/Dar [Jugador/ID] [Artнculo] [Cantidad/Arma]");
        SendClientMessage(playerid, COLOR_GRIS, "Artнculos: Materiales, Drogas");
        return 1;
        } else {
        if(targetID == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_GRIS, "El ID de jugador especificado no estб conectado o no se ha autenticado.");
        if(!IsPlayerInRangeOfPlayer(playerid, targetID, 5.0)) return SendClientMessage(playerid, COLOR_GRIS, "Estas demasiado lejos."); }
    if(strcmp(giveSz, "materiales", true) == 0)
    {
            new playerName[2][MAX_PLAYER_NAME];
            GetPlayerName(playerid, playerName[0], MAX_PLAYER_NAME);
            GetPlayerName(targetID, playerName[1], MAX_PLAYER_NAME);

            if(playerVariables[playerid][pMaterials] >= amount)
            {
                if(amount < 1) return 1;

                playerVariables[playerid][pMaterials] -= amount;
                playerVariables[targetID][pMaterials] += amount;

                format(szMessage, sizeof(szMessage), "Le has dado %d materiales a %s.", amount, playerName[1]);
                SendClientMessage(playerid, COLOR_BLANCO, szMessage);

                format(szMessage, sizeof(szMessage), "%s le ha dado %d materiales.", playerName[0], amount);
                SendClientMessage(targetID, COLOR_BLANCO, szMessage);

                format(szMessage, sizeof(szMessage), "* %s le ha dado %d materiales a %s.", playerName[0], amount, playerName[1]);
                nearByMessage(playerid, COLOR_PURPURA, szMessage);
            } else {
                format(szMessage, sizeof(szMessage), "Usted no tiene los materiales suficientes para completar este comercio. Usted necesita %d mas materiales.", playerVariables[playerid][pMaterials]-amount);
                SendClientMessage(playerid, COLOR_BLANCO, szMessage); } } }
   else if(strcmp(giveSz, "drogas", true) == 0) {

            if(playerVariables[playerid][pDrogas] >= amount) {
                if(amount < 1) return 1;

                playerVariables[playerid][pDrogas] -= amount;
                playerVariables[targetID][pDrogas] += amount;

                format(szMessage, sizeof(szMessage), "Le has dado %d gramos de droga a %s.", amount, playerName[1]);
                SendClientMessage(playerid, COLOR_BLANCO, szMessage);

                format(szMessage, sizeof(szMessage), "%s le ha dado %d gramos de droga.", playerName[0], amount);
                SendClientMessage(targetID, COLOR_BLANCO, szMessage);

                format(szMessage, sizeof(szMessage), "* %s le ha dado %d gramos de droga a %s.", playerName[0], amount, playerName[1]);
                nearByMessage(playerid, COLOR_PURPURA, szMessage);
            } else {
                format(szMessage, sizeof(szMessage), "Usted no tiene los drogas suficientes para completar este comercio. Usted necesita %d gramos de droga mas.", playerVariables[playerid][pDrogas]-amount);
                SendClientMessage(playerid, COLOR_BLANCO, szMessage); } } }
    return 1;
}
Saludos...
Reply
#3

Tal vez ahi
pawn Код:
CMD:dar(playerid, params[]) {
    new
        giveSz[12],
        amount,
        targetID;

    if(sscanf(params, "us[12]d", targetID, giveSz, amount)) {
        SendClientMessage(playerid, COLOR_GRIS, SYNTAX_MESSAGE"/Dar [Jugador/ID] [Artнculo] [Cantidad/Arma]");
        return SendClientMessage(playerid, COLOR_GRIS, "Artнculos: Materiales, Drogas");
    }
    else {
        if(targetID == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_GRIS, "El ID de jugador especificado no estб conectado o no se ha autenticado.");
        if(!IsPlayerInRangeOfPlayer(playerid, targetID, 5.0)) return SendClientMessage(playerid, COLOR_GRIS, "Estas demasiado lejos.");

        new playerName[2][MAX_PLAYER_NAME]; //definimos esto afuera porque no se si sera un error de pawn, pero ocurre un problema al usar arrays de dos dimenciones
        if(strcmp(giveSz, "materiales", true) == 0) {
            GetPlayerName(playerid, playerName[0], MAX_PLAYER_NAME);
            GetPlayerName(targetID, playerName[1], MAX_PLAYER_NAME);

            if(playerVariables[playerid][pMaterials] >= amount) {
                if(amount < 1)
                    return 1;

                playerVariables[playerid][pMaterials] -= amount;
                playerVariables[targetID][pMaterials] += amount;

                format(szMessage, sizeof(szMessage), "Le has dado %d materiales a %s.", amount, playerName[1]);
                SendClientMessage(playerid, COLOR_BLANCO, szMessage);

                format(szMessage, sizeof(szMessage), "%s le ha dado %d materiales.", playerName[0], amount);
                SendClientMessage(targetID, COLOR_BLANCO, szMessage);

                format(szMessage, sizeof(szMessage), "* %s le ha dado %d materiales a %s.", playerName[0], amount, playerName[1]);
                nearByMessage(playerid, COLOR_PURPURA, szMessage);
            }
            else {
                format(szMessage, sizeof(szMessage), "Usted no tiene los materiales suficientes para completar este comercio. Usted necesita %d mas materiales.", playerVariables[playerid][pMaterials]-amount);
                SendClientMessage(playerid, COLOR_BLANCO, szMessage);
            }
        }


        else if(strcmp(giveSz, "drogas", true) == 0) {
       
            if(playerVariables[playerid][pDrogas] >= amount) {
                if(amount < 1)
                    return 1;
                GetPlayerName(playerid, playerName[0], MAX_PLAYER_NAME); //Obtenemos los nombres de los jugadores (no lo habias puesto)
                GetPlayerName(targetID, playerName[1], MAX_PLAYER_NAME);
               
                playerVariables[playerid][pDrogas] -= amount;
                playerVariables[targetID][pDrogas] += amount;

                format(szMessage, sizeof(szMessage), "Le has dado %d gramos de droga a %s.", amount, playerName[1]);
                SendClientMessage(playerid, COLOR_BLANCO, szMessage);

                format(szMessage, sizeof(szMessage), "%s le ha dado %d gramos de droga.", playerName[0], amount);
                SendClientMessage(targetID, COLOR_BLANCO, szMessage);

                format(szMessage, sizeof(szMessage), "* %s le ha dado %d gramos de droga a %s.", playerName[0], amount, playerName[1]);
                nearByMessage(playerid, COLOR_PURPURA, szMessage);
            }
            else {
                format(szMessage, sizeof(szMessage), "Usted no tiene los drogas suficientes para completar este comercio. Usted necesita %d gramos de droga mas.", playerVariables[playerid][pDrogas]-amount);
                SendClientMessage(playerid, COLOR_BLANCO, szMessage);
            }
        }
    }
    return 1;
}
Reply
#4

Jaja, buena vista Daniel-92.
No me di cuenta de que faltaba obtener los nombres de los jugadores en esa parte.
Reply
#5

Oh gracias, al parecer el error erб
pawn Код:
new playerName[2][MAX_PLAYER_NAME];
ya que tambien habнa probado obtener nombres de los jugadores pero los borre porque no dio error *troll* jaja xDD!

Bueno gracias, por corregirme el error


Saludos y se agradece !
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)