їCуmo hago para que las balas de mi arma se actualicen en el bolsillos?
#1

Sucede que hay un problema un poco problemбtico por asн decirlo, sucede que mi arma al estar digamos, una deserte con 7 balas, en el /bol aparece Desert Eagle (7) es decir 7 balas el problema es que digamos, al disparar, y la desert queda en 2 balas, verificamos el /bol y sigue diciendo "Desert Eagle (7)"

Ahora mi pregunta es їCуmo puedo hacer que cuando la bala se dispare, se actualice en el bolsillo? porque esto tambien crea otro problema y es que si el arma se acaba, y usamos /guardar y luego sacar, el arma se recarga sin problemas.

Gracias de antemano.
Reply
#2

Podrнas hacer que la variable de balas en '/bol' se ponga en 0 al sacar el arma y cuando uses '/guardar' se guarde con las balas actuales.
Reply
#3

Estб asн fнjate. Este es el comando /bol

PHP код:
stock MostrarBolsillos(playeridplayerid1)
{
    new 
dialog[1024], string[128];
    for(new 
113i++)
    {
        if(
== 1)
        {
            if(
BolsilloID[playerid][i] != 0format(dialogsizeof(dialog), "{FFFFFF}1) - {D4D700}%s {FFFFFF}({D4D700}%d{FFFFFF})"ObtenerNombreObjeto(BolsilloID[playerid][1]), BolsilloCantidad[playerid1][1]);
            else 
format(dialogsizeof(dialog), "{FFFFFF}1) - Bolsillo vacнo.");
            continue;
        }
        if(
== 11)
        {
            
strcat(dialog"\n|--------------------------------------------------------------|");
            if(
BolsilloID[playerid][i] != 0format(stringsizeof(string), "\n{FFFFFF}%Mano derecha - {D4D700}%s {FFFFFF}({D4D700}%d{FFFFFF})"ObtenerNombreObjeto(BolsilloID[playerid][i]), BolsilloCantidad[playerid1][i]);
              else 
format(stringsizeof(string), "\n{FFFFFF}Mano derecha - desocupada.");
              
strcat(dialogstring);
              continue;
        }
        if(
== 12)
        {
            if(
BolsilloID[playerid][i] != 0format(stringsizeof(string), "\n{FFFFFF}%Mano izquierda - {D4D700}%s {FFFFFF}({D4D700}%d{FFFFFF})"ObtenerNombreObjeto(BolsilloID[playerid][i]), BolsilloCantidad[playerid1][i]);
              else 
format(stringsizeof(string), "\n{FFFFFF}Mano izquierda - desocupada.");
              
strcat(dialogstring);
              break;
        }
        if(
BolsilloID[playerid][i] != 0format(stringsizeof(string), "\n{FFFFFF}%d) - {D4D700}%s {FFFFFF}({D4D700}%d{FFFFFF})"iObtenerNombreObjeto(BolsilloID[playerid][i]), BolsilloCantidad[playerid1][i]);
          else 
format(stringsizeof(string), "\n{FFFFFF}%d) - Bolsillo vacнo."i);
          
strcat(dialogstring);
    }
    
format(stringsizeof(string), "{FFFFFF}Bolsillos de %s"GetPlayerNameEx(playerid));
    
ShowPlayerDialog(playeridBOLSILLODIALOG_STYLE_LISTstringdialog"Seleccionar""Salir");
    return 
1;

Y este es el /sacar

PHP код:
CMD:guardar(playeridparams[])
{
    new 
id;
    if(
sscanf(params"i"id))
    {
        
SendClientMessage(playeridCOLOR_WHITE"Uso: {FFFFFF}/guardar [Slot]");
        
SendClientMessage(playeridCOLOR_WHITE"Slots: {FFFFFF}1 = derecha | 2 = izquierda");
        return 
1;
    }
    if(
id != && id != 2)
    {
        
SendClientMessage(playeridCOLOR_WHITE"Uso: {FFFFFF}/guardar [Slot]");
        
SendClientMessage(playeridCOLOR_WHITE"Slots: {FFFFFF}1 = derecha | 2 = izquierda");
        return 
1;
    }
    if(
BolsilloID[playerid][10+id] == 0) return SendClientMessage(playeridCOLOR_WHITE"* No tienes nada en esa mano.");
    if(
ObjetoPesado(BolsilloID[playerid][10+id])) return SendClientMessage(playeridCOLOR_WHITE"* No puedes guardar este objeto en tu bolsillo.");
    for(new 
110i++)
    {
        if(
BolsilloID[playerid][i] == 0)
           {
            new 
string[64];
            
SetTimerEx("ArmaSegura"45000"d"playerid);
            
GuardoArmaSegura[playerid] = 1;
            
BolsilloID[playerid][i] = BolsilloID[playerid][10+id];
            
BolsilloTipo[playerid][i] = BolsilloTipo[playerid][10+id];
            
BolsilloCantidad[playerid][i] = BolsilloCantidad[playerid][10+id];
            if(
EsArma(BolsilloID[playerid][10+id]))
            {
                
ResetPlayerWeapons(playerid);
            }
            
BolsilloID[playerid][10+id] = 0;
            
BolsilloTipo[playerid][10+id] = 0;
            
BolsilloCantidad[playerid][10+id] = 0;
            
format(stringsizeof(string), "Colocaste un/a %s en el bolsillo %d."ObtenerNombreObjeto(BolsilloID[playerid][i]), i);
            
SendClientMessage(playeridCOLOR_WHITEstring);
            
UpdateAttach(playerid);
            
GuardarBolsillos(playerid);
            return 
1;
           }
    }
    return 
1;

Intentй eso que me dijiste pero no le encuentro vuelta
Reply
#4

Si lo que quieres es que conforme dispare se reduscan las balas podrнas utilizar la siguiente callback:
PHP код:
public OnPlayerWeaponShot(playeridweaponidhittypehitidFloat:fXFloat:fYFloat:fZ
Si es a travйs de un comando de /sacar donde especificas las balas que el jugador puede sacar de su bolsillo, pues simplemente te recomendarнa restar del total que saco y luego lo guardas.
Reply
#5

Ya lo reparй, tuve que colocar un Forward/public que actualiza el inventario y todo l oque tenga en la mano.

Gracias a todos
Reply
#6

Eso pasa al descargar cosas a medias.
їPara que quieres guardar todo lo que tenga en el inventario si con guardar la municiуn sobra?.

La mejor soluciуn serнa esto:

pawn Код:
ActualizarBalas(playerid);//Colуcalo en OnPlayerUpdate
Y al final del gamemode:

pawn Код:
funcion ActualizarBalas(playerid)
{
    if(EsArma(PlayerInfo[playerid][pBolsillos][11]))
    {
        new municion, arma;
        arma = GetPlayerWeapon(playerid);
        if(arma == 0) return 1;
        municion = GetPlayerAmmo(playerid);
        PlayerInfo[playerid][pCantidadBolsillos][11] = municion;//PlayerInfo[playerid][pCantidadBolsillos][11] cбmbialo por lo que uses.
    }
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)