Ventas entre jugadores
#1

Hola, me gustarнa saber como un jugador puede ofrecerle a otro cualquier cosa y el otro acepte. Por ejemplo:

Jugador 1 ofrece a Jugador 2 un arma mediante el comando: /venderarma [id] [cantidad de dinero]
Para que la operaciуn se realize el Jugador 2 tiene que aceptar mediante otro comando: /aceptararma . Este comando tambiйn deberнa dar dinero el dinero que especifico el jugador 1 a йl mismo y quitarle esa misma cantidad al jugador 2.

Un saludo y gracias.
Reply
#2

Usando ZCMD y sscanf:

Al principio del cуdigo, junto a los demбs new:

pawn Код:
new VentaDeArmaCon[MAX_PLAYERS][2];
Dentro de OnPlayerConnect:

pawn Код:
public OnPlayerConnect(playerid)
{
    VentaDeArmaCon[playerid][0] = -1;
    VentaDeArmaCon[playerid][1] = 0;
    return 1;
}
pawn Код:
COMMAND:venderarma(playerid,params[])
{
    new cliente,precio;
    if(!sscanf(params,"ii",cliente,precio))
    {
        if(IsPlayerConnected(cliente))
        {
            if(precio >= 0)
            {
                new string[200],name[MAX_PLAYER_NAME+1];
                GetPlayerName(playerid, name, sizeof(name));
                format(string,sizeof(string),"* %s te ha ofrecido un arma por %i$. Usa /aceptararma para comprarla",name,precio);
                SendClientMessage(cliente,-1,string);
                GetPlayerName(cliente, name, sizeof(name));
                format(string,sizeof(string),"* Has ofrecido un arma a %s por %i$. Espera a que acepte.",name,precio);
                SendClientMessage(playerid,-1,string);
                VentaDeArmaCon[cliente][0] = playerid;
                VentaDeArmaCon[cliente][1] = precio;
            }
            else
            {
                SendClientMessage(playerid,-1,"ЎEl precio no puede ser negativo!");
            }
        }
        else
        {
            SendClientMessage(playerid,-1,"Ese jugador no estб conectado");
        }
    }
    else
    {
        SendClientMessage(playerid,-1,"Utiliza /venderarma [ID] [precio]");
    }
    return 1;
}

COMMAND:aceptararma(playerid,params[])
{
    if(VentaDeArmaCon[playerid][0] != -1)
    {
        if(GetPlayerMoney(playerid) >= VentaDeArmaCon[playerid][1])
        {
            new string[200],name[MAX_PLAYER_NAME+1];
            GetPlayerName(VentaDeArmaCon[playerid][0], name, sizeof(name));
            format(string,sizeof(string),"* Has comprado el arma que te ofreciу %s por %i$",name,VentaDeArmaCon[playerid][1]);
            SendClientMessage(playerid,-1,string);
            GetPlayerName(playerid, name, sizeof(name));
            format(string,sizeof(string),"* %s te ha comprado el arma que le ofreciste por %i$.",name,VentaDeArmaCon[playerid][1]);
            SendClientMessage(VentaDeArmaCon[playerid][0],-1,string);
            GivePlayerMoney(playerid,-VentaDeArmaCon[playerid][1]);
            GivePlayerMoney(VentaDeArmaCon[playerid][0],VentaDeArmaCon[playerid][1]);
            GivePlayerWeapon(playerid, ID DEL ARMA, MUNICION);
            VentaDeArmaCon[playerid][0] = -1;
            VentaDeArmaCon[playerid][1] = 0;
        }
        else
        {
            SendClientMessage(playerid,-1,"No puedes pagar ese precio");
        }
    }
    else
    {
        SendClientMessage(playerid,-1,"Nadie te ha ofrecido armas.");
    }
    return 1;
}
Espero que te sirva. Si necesitas explicaciones de algo avнsame.
Saludos.
Reply
#3

Gracias jefe!! Me sirviу!
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)