[Problema] Comando para dar creditos
#1

Buenas, he probado de hacer un pequeсo comando para que la gente pueda comprar crйditos dentro del juego.

Aquн os dejo el cуdigo:

pawn Код:
CMD:comprar(playerid,params[])
{
if(strcmp(params,"credito",true) == 0)
    {
        new dinero,cantidad,string[125], pagar;
        if(sscanf(params,"d",cantidad)) return SendClientMessage(playerid,-1,"Uso: /comprar credito [cantidad]");
        pagar = cantidad * 50000; //dinero total que hay que pagar para los crйditos.
        dinero = GetPlayerMoney(playerid); //Dinero que tengo en mano
        if(dinero < pagar) return SendClientMessage(playerid,red,"No tienes suficiente dinero");
        format(string,sizeof(string),"Has comprado %d credito/s",cantidad);
        SendClientMessage(playerid,green,string);
        GivePlayerMoney(playerid,cantidad * -50000); //dinero total de los crйditos que me descuenta.
        PlayerInfo[playerid][Creditos] += cantidad;
    }
    return 1;
}
Cuando escribo /comprar credito, me sale este mensaje: Uso: /comprar credito [cantidad], pero cuando escribo por ejemplo: /comprar credito 10 no me sale ningъn mensaje diciendo si he comprado los creditos o no y tampoco no me descuenta el dinero.

їMe podrнan ayudar a solcuionar el problema?

Gracias de antemano.
Reply
#2

pawn Код:
CMD:comprar(playerid, params[])
{
    if(sscanf(params, "s[10]", params[0])) return SendClientMessage(playerid, -1, "Uso: /comprar credito");
    if(strcmp(params[0], "credito", true) == 0)
    {
        new dinero,cantidad,string[125], pagar;
        if(sscanf(params, "d", cantidad)) return SendClientMessage(playerid, -1, "Uso: /comprar credito [cantidad]");
        pagar = cantidad * 50000;
        dinero = GetPlayerMoney(playerid);
        if(dinero < pagar) return SendClientMessage(playerid,red,"No tienes suficiente dinero");
        format(string,sizeof(string),"Has comprado %d credito/s",cantidad);
        SendClientMessage(playerid,green,string);
        GivePlayerMoney(playerid,cantidad * -50000);
        PlayerInfo[playerid][Creditos] += cantidad;
    }
    return 1;
}
Reply
#3

Quote:
Originally Posted by LiMPiTo
Посмотреть сообщение
pawn Код:
CMD:comprar(playerid, params[])
{
    if(sscanf(params, "s[10]", params[0])) return SendClientMessage(playerid, -1, "Uso: /comprar credito");
    if(strcmp(params[0], "credito", true) == 0)
    {
        new dinero,cantidad,string[125], pagar;
        if(sscanf(params, "d", cantidad)) return SendClientMessage(playerid, -1, "Uso: /comprar credito [cantidad]");
        pagar = cantidad * 50000;
        dinero = GetPlayerMoney(playerid);
        if(dinero < pagar) return SendClientMessage(playerid,red,"No tienes suficiente dinero");
        format(string,sizeof(string),"Has comprado %d credito/s",cantidad);
        SendClientMessage(playerid,green,string);
        GivePlayerMoney(playerid,cantidad * -50000);
        PlayerInfo[playerid][Creditos] += cantidad;
    }
    return 1;
}
Sigue sin funcionar...
Reply
#4

Soy de madera con sscanf, їahora?

pawn Код:
CMD:comprar(playerid, params[])
{
    new CreditoText[10];
    if(!sscanf(params, "s[10]d", CreditoText, params[0])) return SendClientMessage(playerid, -1, "Uso: /comprar credito [cantidad]");
    if(strcmp(CreditoText, "credito", true) == 0)
    {
        new dinero, cantidad = params[0], string[125], pagar;
        pagar = cantidad * 50000, dinero = GetPlayerMoney(playerid);
        if(dinero < pagar) return SendClientMessage(playerid,red,"No tienes suficiente dinero");
        format(string,sizeof(string),"Has comprado %d credito/s",cantidad);
        SendClientMessage(playerid, green, string);
        GivePlayerMoney(playerid,cantidad * -50000);
        PlayerInfo[playerid][Creditos] += cantidad;
    }
    return 1;
}
Reply
#5

Ahora cuando pongo por ejemplo: /comprar credito, /comprar credito 10 o cualquier cosa, me repite este mensaje: Uso: /comprar credito [cantidad] todo el tiempo...
Reply
#6

Ups... Ahora sн jeje, perdуn pero soy malнsimo con zcmd y sscanf.

pawn Код:
CMD:comprar(playerid, params[])
{
    new CreditoText[10];
    if(sscanf(params, "s[10]d", CreditoText, params[0])) return SendClientMessage(playerid, -1, "Uso: /comprar credito [cantidad]");
    if(strcmp(CreditoText, "credito", true) == 0)
    {
        new dinero, cantidad = params[0], string[125], pagar;
        pagar = cantidad * 50000, dinero = GetPlayerMoney(playerid);
        if(dinero < pagar) return SendClientMessage(playerid,red,"No tienes suficiente dinero");
        format(string,sizeof(string),"Has comprado %d credito/s",cantidad);
        SendClientMessage(playerid, green, string);
        GivePlayerMoney(playerid,cantidad * -50000);
        PlayerInfo[playerid][Creditos] += cantidad;
    }
    return 1;
}
Reply
#7

No lo entiendo, sigue sin funcionar; pero el sscanf debe estar bien porque cuando no escribo todo el comando, lo detecta y me envнa el mensaje, el problema estб cuando escribo el comando completo, que no reacciona...
Reply
#8

Intenta asн, lo ъnico que hice fue cambiar el color "green" y "red" por blanco. Lo testйe en un gm base y andubo perfecto.

pawn Код:
CMD:comprar(playerid, params[])
{
    new CreditoText[10];
    if(sscanf(params, "s[10]d", CreditoText, params[0])) return SendClientMessage(playerid, -1, "Uso: /comprar credito [cantidad]");
    if(strcmp(CreditoText, "credito", true) == 0)
    {
        new dinero, cantidad = params[0], string[125], pagar;
        pagar = cantidad * 50000, dinero = GetPlayerMoney(playerid);
        if(dinero < pagar) return SendClientMessage(playerid, -1, "No tienes suficiente dinero");
        format(string,sizeof(string), "Has comprado %d credito/s", cantidad);
        SendClientMessage(playerid, -1, string);
        GivePlayerMoney(playerid,cantidad * -50000);
        PlayerInfo[playerid][Creditos] += cantidad;
    }
    return 1;
}
Reply
#9

Muchas gracias por la paciencia, al final ha funcionado.
Reply
#10

Tu comando tiene un grave bug de dinero. (cantidad * -50000) si yo pongo para comprar "-X" creditos - * - = +. -1 * -50000 = 50000.

soluciуn: if(cantidad < 0) return 1;
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)