SA-MP Forums Archive
Ventas entre jugadores - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: Ventas entre jugadores (/showthread.php?tid=409620)



Ventas entre jugadores - russeN1 - 22.01.2013

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.


Respuesta: Ventas entre jugadores - PHudson - 22.01.2013

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.


Re: Ventas entre jugadores - russeN1 - 23.01.2013

Gracias jefe!! Me sirviу!