[Duda] Crear Moneda
#1

Buenas amigos de SAMP quisiera hacer un pequeсo sistema el cual es "Nueva moneda con marcador de balance en el HUD debajo del dinero".

Me explico quiero hacer un sistema de moneda pero que esta solamente la puedan dar los administradores y que tambien tenga indicador de balance debajo del HUD de dinero.

Ejemplo:

[ame="http://www.youtube.com/watch?v=IydpeNXReVg"]http://www.youtube.com/watch?v=IydpeNXReVg[/ame]

Fijense en el HUD que dice "banco", bueno quisiera tener un HUD asi debajo del dinero.

Muchas gracias.

Un saludo.
Reply
#2

Yo te puedo ayudar, creando el textdraw abajo del dinero normal, pero a quй te referнs con esa moneda.. їuna especie de moneda aparte? si es asн, tenйs que definir una variable y que la misma se guarde en una base de datos .sql o por medio de ini, segъn lo que tengas.. Despuйs en los sistemas, podrнas usar en lugar de GetPlayerMoney, alguna condicional que detecte si tiene X cantidad de esas monedas, si la condicional es positiva, que se pueda comprar, si no, que no se pueda y se retorne a un mensaje de error.. Tambiйn en lugar de eso de la condicional, podrнas crear un stock definiendo la variable, y que tenga la misma funciуn que GetPlayerMoney sуlo que pueda detectar esa nueva moneda.
Reply
#3

Quote:
Originally Posted by DeadSkyTkb
Посмотреть сообщение
Yo te puedo ayudar, creando el textdraw abajo del dinero normal, pero a quй te referнs con esa moneda.. їuna especie de moneda aparte? si es asн, tenйs que definir una variable y que la misma se guarde en una base de datos .sql o por medio de ini, segъn lo que tengas.. Despuйs en los sistemas, podrнas usar en lugar de GetPlayerMoney, alguna condicional que detecte si tiene X cantidad de esas monedas, si la condicional es positiva, que se pueda comprar, si no, que no se pueda y se retorne a un mensaje de error.. Tambiйn en lugar de eso de la condicional, podrнas crear un stock definiendo la variable, y que tenga la misma funciуn que GetPlayerMoney sуlo que pueda detectar esa nueva moneda.
Si necesitaria el Textdraw es lo que busco luego me la ingenio con eso xD.

Muchas gracias.

Un saludo.
Reply
#4

Primero, creamos la variable de moneda, yo voy a hacer un nuevo enum, pero vos podrнas ponerlo en el enum que uses de informaciуn de personaje;

pawn Код:
enum mInfo
{
    Moneda
};

new MonedaInfo[MAX_PLAYERS][mInfo];
Creamos el new del textdraw;
pawn Код:
new Text:MonedaTextDraw[MAX_PLAYERS];
En OnPlayerDisconnect, hacemos que al desconectarse, se esconde el textdraw;
pawn Код:
TextDrawHideForPlayer(playerid, MonedaTextDraw[playerid]);
En OnPlayerSpawn, hacemos que se vea el textdraw;
pawn Код:
TextDrawShowForPlayer(playerid, MonedaTextDraw[playerid]);
En OnGameModeInit, creamos el textdraw;
pawn Код:
MonedaTextDraw[playerid] = TextDrawCreate(498.500000,100.000000,"$00000000");
        TextDrawLetterSize(MonedaTextDraw[playerid], 0.55, 2.2);
        TextDrawFont(MonedaTextDraw[playerid], 3);
        TextDrawSetOutline(MonedaTextDraw[playerid], 2);
        TextDrawSetProportional(MonedaTextDraw[playerid], 3);
Creamos el public de la moneda;
pawn Код:
public Moneda()
{
    for(new i; i < MAX_PLAYERS; i++)
    {
        new string[64]; format(string, sizeof(string), "~g~$~w~%d", MonedaInfo[i][Moneda] );
        TextDrawSetString(MonedaTextDraw[i], string );
    }
}
Ahora, un comando para poder dar las monedas (necesitas estar logueado con la rcon, lo podrнas modificar para que lo haga un administador);
pawn Код:
if(strcmp(cmd, "/darmonedas", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if(IsPlayerAdmin(playerid))
            {
                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp))
                {
                    SendClientMessage(playerid, GRIS, "Uso: /darmonedas [ID/Nombre] [Cantidad]");
                    return 1;
                }
                new para1;
                new level;
                para1 = ReturnUser(tmp);
                tmp = strtok(cmdtext, idx);
                level = strval(tmp);
                if(IsPlayerConnected(para1))
                {
                    if(para1 != INVALID_PLAYER_ID)
                    {
                        GetPlayerName(para1, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        MonedaInfo[para1][Moneda] = monedas;
                        format(string, sizeof(string), "El administrador %s te ha dado %d monedas. ЎDisfrъtalas!", sendername, monedas);
                        SendClientMessage(para1, 0xFFFFFFAA, string);
                        format(string, sizeof(string), "Le diste a %s una cantidad de %d monedas.", giveplayer,level);
                        SendClientMessage(playerid, 0xFFFFFFAA, string);
                        printf("Administrador %s le diу a %s una cantidad de %d monedas.", sendername, giveplayer, monedas);
                    }
                }
            }
            else
            {
                SendClientMessage(playerid, 0xE60000FF, "   No estбs autorizado para usar este comando!!");
            }
        }
        return 1;
    }
Йse comando que hice no setea las monedas, sуlo las da, ni tampoco las resta, es para que te guнes.

Y te faltarнa hacer el guardado de datos de la misma, de MySQL no sй, si querйs te puedo hacer el guardado por algъn sistema de guardado de datos en archivos .ini
Reply
#5

Quote:
Originally Posted by DeadSkyTkb
Посмотреть сообщение
Primero, creamos la variable de moneda, yo voy a hacer un nuevo enum, pero vos podrнas ponerlo en el enum que uses de informaciуn de personaje;

pawn Код:
enum mInfo
{
    Moneda
};

new MonedaInfo[MAX_PLAYERS][mInfo];
Creamos el new del textdraw;
pawn Код:
new Text:MonedaTextDraw[MAX_PLAYERS];
En OnPlayerDisconnect, hacemos que al desconectarse, se esconde el textdraw;
pawn Код:
TextDrawHideForPlayer(playerid, MonedaTextDraw[playerid]);
En OnPlayerSpawn, hacemos que se vea el textdraw;
pawn Код:
TextDrawShowForPlayer(playerid, MonedaTextDraw[playerid]);
En OnGameModeInit, creamos el textdraw;
pawn Код:
MonedaTextDraw[playerid] = TextDrawCreate(498.500000,100.000000,"$00000000");
        TextDrawLetterSize(MonedaTextDraw[playerid], 0.55, 2.2);
        TextDrawFont(MonedaTextDraw[playerid], 3);
        TextDrawSetOutline(MonedaTextDraw[playerid], 2);
        TextDrawSetProportional(MonedaTextDraw[playerid], 3);
Creamos el public de la moneda;
pawn Код:
public Moneda()
{
    for(new i; i < MAX_PLAYERS; i++)
    {
        new string[64]; format(string, sizeof(string), "~g~$~w~%d", MonedaInfo[i][Moneda] );
        TextDrawSetString(MonedaTextDraw[i], string );
    }
}
Ahora, un comando para poder dar las monedas (necesitas estar logueado con la rcon, lo podrнas modificar para que lo haga un administador);
pawn Код:
if(strcmp(cmd, "/darmonedas", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if(IsPlayerAdmin(playerid))
            {
                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp))
                {
                    SendClientMessage(playerid, GRIS, "Uso: /darmonedas [ID/Nombre] [Cantidad]");
                    return 1;
                }
                new para1;
                new level;
                para1 = ReturnUser(tmp);
                tmp = strtok(cmdtext, idx);
                level = strval(tmp);
                if(IsPlayerConnected(para1))
                {
                    if(para1 != INVALID_PLAYER_ID)
                    {
                        GetPlayerName(para1, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        MonedaInfo[para1][Moneda] = monedas;
                        format(string, sizeof(string), "El administrador %s te ha dado %d monedas. ЎDisfrъtalas!", sendername, monedas);
                        SendClientMessage(para1, 0xFFFFFFAA, string);
                        format(string, sizeof(string), "Le diste a %s una cantidad de %d monedas.", giveplayer,level);
                        SendClientMessage(playerid, 0xFFFFFFAA, string);
                        printf("Administrador %s le diу a %s una cantidad de %d monedas.", sendername, giveplayer, monedas);
                    }
                }
            }
            else
            {
                SendClientMessage(playerid, 0xE60000FF, "   No estбs autorizado para usar este comando!!");
            }
        }
        return 1;
    }
Йse comando que hice no setea las monedas, sуlo las da, ni tampoco las resta, es para que te guнes.

Y te faltarнa hacer el guardado de datos de la misma, de MySQL no sй, si querйs te puedo hacer el guardado por algъn sistema de guardado de datos en archivos .ini
Gracias man, oye tengo un problemita con la Funcion que estoy haciendo para dar la nueva moneda y es que esta se seta a la cantidad que pongo y no a la que sumo me entiendes?

pawn Код:
stock GivePlayerPuntos(playerid, puntos)
{
    foreach(Player, i)
    {
        if( pConectado[i] == 1 )
        {
            g_PlayerInfo[playerid][pPuntos] = puntos;
        }
    }
    return 1;
}
El error me imagino que esta en = puntos; es que lo habia puesto en += y cuando daba los puntos se sumaba y me daba el total de la variable.

PD: Estoy poniendo los TD muchas gracias man.

Un saludo.
Reply
#6

їAlgo como йsto sirve?

pawn Код:
stock GivePlayerPuntos(playerid, arma, municion) // Creamos la funciуn.
{
    if(g_PlayerInfo[playerid][pPuntos] == puntos)
    {
        g_PlayerInfo[playerid][pPuntos] += puntos;// Si ya tiene puntos, se le suman.
    }
    return 1;
}
Give es dar, setear es fijar, como el stock le puse Give, es porque quiere dar, es decir, sumar, si quieres te hago uno que reste, y otro que setee.
Reply
#7

Quote:
Originally Posted by DeadSkyTkb
Посмотреть сообщение
їAlgo como йsto sirve?

pawn Код:
stock GivePlayerPuntos(playerid, arma, municion) // Creamos la funciуn.
{
    if(g_PlayerInfo[playerid][pPuntos] == puntos)
    {
        g_PlayerInfo[playerid][pPuntos] += puntos;// Si ya tiene puntos, se le suman.
    }
    return 1;
}
Man en GameModeInit no se usa playerid entonces como le hago para crear el TD?

pawn Код:
Hook:GS_OnGameModeInit()
{
    MonedaTextDraw[playerid] = TextDrawCreate(498.500000,100.000000,"$00000000");
    TextDrawLetterSize(MonedaTextDraw[playerid], 0.55, 2.2);
    TextDrawFont(MonedaTextDraw[playerid], 3);
    TextDrawSetOutline(MonedaTextDraw[playerid], 2);
    TextDrawSetProportional(MonedaTextDraw[playerid], 3);
}
Osea me saltan los errores de que no estan definidas la playerid.

Un saludo y muchas gracias.
Reply
#8

Sн que se puede, si haces йsto;

pawn Код:
for(new playerid; playerid < MAX_PLAYERS; playerid++)
    {
        MonedaTextDraw[playerid] = TextDrawCreate(498.500000,100.000000,"$00000000");
        TextDrawLetterSize(MonedaTextDraw[playerid], 0.55, 2.2);
        TextDrawFont(MonedaTextDraw[playerid], 3);
        TextDrawSetOutline(MonedaTextDraw[playerid], 2);
        TextDrawSetProportional(MonedaTextDraw[playerid], 3);
    }
їA quй se debe ese hook? їusas un gm por medio de includes, como el OSRP?
Reply
#9

Quote:
Originally Posted by DeadSkyTkb
Посмотреть сообщение
Sн que se puede, si haces йsto;

pawn Код:
for(new playerid; playerid < MAX_PLAYERS; playerid++)
    {
        MonedaTextDraw[playerid] = TextDrawCreate(498.500000,100.000000,"$00000000");
        TextDrawLetterSize(MonedaTextDraw[playerid], 0.55, 2.2);
        TextDrawFont(MonedaTextDraw[playerid], 3);
        TextDrawSetOutline(MonedaTextDraw[playerid], 2);
        TextDrawSetProportional(MonedaTextDraw[playerid], 3);
    }
їA quй se debe ese hook? їusas un gm por medio de includes, como el OSRP?
Gracias man ya funciona, pero hay un pequeсo problemilla y es que no marca la moneda osea se queda siempre en 0 aunque entregue dinero siempre esta en 0000000.

Muchas gracias.

Un saludo.
Reply
#10

їViste el comando quй hice?

Agrйgalo al GM, e intenta ver que si lo das con mi comando, se sume el valor del textdraw.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)