[Duda] Apuesta
#1

Como puedo poner un menu en el que el jugador pueda poner X cantidad de dinero para apostar.

Pero obviamente ese dinero no tiene que superar el dinero que tiene el player.
Reply
#2

pawn Код:
new Apostando[MAX_PLAYERS];
//OnPlayerCommandText
if(!strcmp(cmdtext, "/apostar", true))
{
    SendClientMessage(playerid, 0xffffffff, "Escribe La Cantidad Que Deceas Apostar");
    Apostando[playerid] = 1;
    return 1;
}
//OnPlayerText
if(Apostando[playerid] == 1)
{
    if(!IsNumeric(text))
    {
        SendClientMessage(playerid, 0xff0000ff, "Debes poner Numeros!");
        return 0;
    }
    new dinero = strval(text);
    if(GetPlayerMoney(playerid) < dinero)
    {
        SendClientMessage(playerid, 0xff0000ff, "Tu no tienes este dinero!");
        return 0;
    }
    GivePlayerMoney(playerid, -dinero);
    SendClientMessage(playerid, 0x00ff00ff, "Estas apostando la cantidad que pusiste");
    return 0;
}
Reply
#3

Quote:
Originally Posted by Bu11Sh0t
Посмотреть сообщение
pawn Код:
new Apostando[MAX_PLAYERS];
//OnPlayerCommandText
if(!strcmp(cmdtext, "/apostar", true))
{
    SendClientMessage(playerid, 0xffffffff, "Escribe La Cantidad Que Deceas Apostar");
    Apostando[playerid] = 1;
    return 1;
}
//OnPlayerText
if(Apostando[playerid] == 1)
{
    if(!IsNumeric(text))
    {
        SendClientMessage(playerid, 0xff0000ff, "Debes poner Numeros!");
        return 0;
    }
    new dinero = strval(text);
    if(GetPlayerMoney(playerid) < dinero)
    {
        SendClientMessage(playerid, 0xff0000ff, "Tu no tienes este dinero!");
        return 0;
    }
    GivePlayerMoney(playerid, -dinero);
    SendClientMessage(playerid, 0x00ff00ff, "Estas apostando la cantidad que pusiste");
    return 0;
}
LOOOL pero LOL de los LOLASOS! xD
Es imposible hacer eso, ya te entendн a que queres llegar pero pensa esto.
Pones un comando, te da una variable (en 1) y EN ONPLAYERTEXT CHEQUEAS SI ESA VARIABLE ESTБ EN 1.
Es decir, el jugador no va a poner /apostar 580 y le va a dar bien, al contrario, le va a retornar en SERVER: Unknown command. їPor quй? Por el simple hecho de que el comando no estб compuesto por nada.
No confundas OnPlayerText con OnPlayerCommandText. Distinto serнa si vos pones /apostar y luego en el texto pones 580. Entonces ahн si, pero se bugearнa xD
Deberнas volver a retornar la variable de "Apostando" en 0 en OnPlayerText para evitar futuros bugs.
Apostando[playerid] = 0;

EDIT: Mirб, probб asн:

pawn Код:
new Apostando[MAX_PLAYERS];
//OnPlayerCommandText
if(!strcmp(cmdtext, "/apostar", true))
{
    SendClientMessage(playerid, 0xffffffff, "Escribe La Cantidad Que Deceas Apostar");
    Apostando[playerid] = 1;
    return 1;
}
//OnPlayerText
if(Apostando[playerid] == 1)
{
    if(!IsNumeric(text))
    {
        SendClientMessage(playerid, 0xff0000ff, "Debes poner Numeros!");
        return 0;
    }
    new dinero = strval(text);
    if(GetPlayerMoney(playerid) < dinero)
    {
        SendClientMessage(playerid, 0xff0000ff, "Tu no tienes este dinero!");
        return 0;
    }
    Apostando[playerid] = 0; // EVITAMOS FUTUROS BUGS.
    GivePlayerMoney(playerid, -dinero);
    new strdinero [128];
    format(strdinero, sizeof(strdinero), "Estas apostando la cantidad de $%d.", dinero);
    SendClientMessage(playerid, 0x00ff00ff, strdinero);
    return 0;
}
Reply
#4

Entonces? Como seriaї
Reply
#5

Ahн te respondн...
Reply
#6

Gracias.

Tenia idea de como hacerlo, pero no lo lograba pasarlo al Pawno.
Reply
#7

pawn Код:
#include <a_samp>
#define APUESTAS_DIALOG_ID 101

stock IsNumeric(const string[])
{
        for (new i = 0, j = strlen(string); i < j; i++)
        {
                if (string[i] > '9' || string[i] < '0') return 0;
        }
        return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/apostar", cmdtext, true) == 0)
    {
        ShowPlayerDialog(playerid, APUESTAS_DIALOG_ID, DIALOG_STYLE_INPUT, "Sistema de apuestas", "Escribe la cantidad que deseas apostar", "Aceptar", "Cancelar");
        return 1;
    }
    return 0;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid)
    {
        case APUESTAS_DIALOG_ID:
        {
            if(!response) return 1;
            if(!IsNumeric(inputtext))return SendClientMessage(playerid, -1, "[ERROR] Debes poner numeros"), 1;
            new Dinero = strval(inputtext);
            if(GetPlayerMoney(playerid) < Dinero) return SendClientMessage(playerid, -1, "[ERROR] No tienes el dinero que  intentas apostar"), 1;
            new str[128];
            format(str, 128, "Ahora estas apostando $%d", Dinero);
            SendClientMessage(playerid, -1, str);
            return 1;
        }
    }
    return 0;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)