Bug Gasolina
#1

Buenas, el comando de la gasolina es por dialogo y quiero limitarlo por caracteres o cifra, que si cogen una cifra superior a 100 les de error de que no es una cifra valida o algo asi, o la otra forma, comando /llenar y que se te llene automaticamente.

PHP код:
forward Fillup(playeridvehidpago);
public 
Fillup(playeridvehidpago)
{
    new 
Gas CarInfo[vehid][cTipoGas];
    new 
filluptotal;
    if(
Refueling[playerid] == 1)
    {
        if(
pago == NOEXISTE)         // cбlculo de gasolina a llenar
        
{
            
fillup 100 CarInfo[vehid][cGas];// lleno
            
if(Gas == 1)
            {
                
total floatround(fillup 1.7999);
            }
             if(
Gas == 2)
            {
                
total floatround(fillup 1.3999);
            }
        }
        else
        {
            if(
Gas == 1)
            {
                
fillup floatround(pago 1.7999);
            }
             if(
Gas == 2)
            {
                
fillup floatround(pago 1.3999);
            }
            
total pago;
        }
        new 
Negocios PlayerInfo[playerid][pNegocio];
        if(
NegocioInfo[Negocios][nOwned] == 1)
        {
            if(
NegocioInfo[Negocios][nProd] < total)
            {
                
SendClientMessage(playeridRojo"* Agotado.");
                
TogglePlayerControllable(playerid,1);
                
PlayerInfo[playerid][pTempFrozen] = 0;
                return 
1;
            }
        }
        if(
fillup > (100 CarInfo[vehid][cGas]))
        {
            
fillup 100 CarInfo[vehid][cGas]; // lleno
        
}
        if(
SafeGetPlayerMoney(playerid) >= total)
        {
            
CarInfo[vehid][cGas] += fillup;
            
SendClientMessage(playeridNaranja"____________[Gasolinera]_____________");
            new 
Gaso[64];
            if(
Gas == 1Gaso "Gasolina | 1.7999";
            else if(
Gas == 2Gaso "Diesel | 1.3999";
            
format(stringsizeof(string), "Precio/Litro: {FFFFFF} %s$",Gaso);
            
SendClientMessage(playeridAmarilloClarostring);
            
format(stringsizeof(string), "Litros pagados: {FFFFFF}%dL",fillup);
            
SendClientMessage(playeridAmarilloClarostring);
            new 
descuento;
            if(
PremiumValido(playerid,1))
            {
                
descuento = (total 100) * 5;
            }
            else if(
PremiumValido(playerid,2))
            {
                
descuento = (total 100) * 10;
            }
            else if(
PremiumValido(playerid,3))
            {
                
descuento = (total 100) * 15;
            }
            if(
descuento 0)
            {
                
total -= descuento;
                
format(string,sizeof(string),"Descuento: %d$",descuento);
                
SendClientMessage(playeridBlanco,string);
            }
            
format(stringsizeof(string), "Total: {FFFFFF}%d$",total);
            
SendClientMessage(playeridAmarilloClarostring);
            if(
CarInfo[vehid][cUsos] == || CarInfo[vehid][cUsos] == || CarInfo[vehid][cUsos] == || CarInfo[vehid][cUsos] == 4)
            {
                for(new 
0sizeof(ArcasInfo); i++)
                 {
                    new 
faccion CarInfo[vehid][cUsos];
                    if(
ArcasInfo[i][aId] == faccion)
                    {
                        
ArcasInfo[i][aDinero]-=total;
                    }
                    
SaveArcas(i);
                }
            }
            if(
CarInfo[vehid][cUsos] == 0)
            {
                
SafeGivePlayerMoney(playerid, - total);
            }
            
TogglePlayerControllable(playerid,1);
            
PlayerInfo[playerid][pTempFrozen] = 0;
               if(
NegocioInfo[Negocios][nOwned] == 1)
            {
                
NegocioInfo[Negocios][nCajaFuerte] += total;
                
NegocioInfo[Negocios][nProd] -= fillup;
            }
            
PlayerInfo[playerid][pNegocio] = NOEXISTE;
            return 
Refueling[playerid] = 0;
        }
           else
           {
            
TogglePlayerControllable(playerid,1);
               
format(string,sizeof(string),"* No tienes suficiente dinero, cuesta %d$ llenar el depуsito.",total);
            
PlayerInfo[playerid][pTempFrozen] = 0;
            return 
SendClientMessage(playerid,Naranja,string);
           }
     }
    return 
1;

PHP код:
    if(strcmp(cmd"/llenar"true) == 0)
    {
        if(!
IsAtGasStation(playerid))
        {
            
SendClientMessage(playeridRojo"* No estas en una gasolinera!");
            return 
1;
        }
        new 
vehid;
          if (!
IsPlayerInAnyVehicle(playerid))
        
vehid vehiculomascercano(playerid); // jugador fuera del coche, junto a йl
        
else
        
vehid GetPlayerVehicle(playerid); // jugador dentro del coche
        
if(IsABike(vehid)) { SendClientMessage(playeridRojo"* No puedes repostar una bici!"); return 1; }
        
          
cmd strtokex (cmdtextidx);
        if (!
strlen(cmd))
        {
            
SendClientMessage(playerid,Blanco,"USO: /llenar [Diesel/Gasolina]");
            return 
1;
        }
        if (
strcmp("Diesel"cmdtrue) == 0)
        {
            if(
CarInfo[vehid][cTipoGas] == 2)
            {
                new 
pago;
                
cmd strtokex(cmdtextidx);
                if(!
strlen(cmd))
                    
pago NOEXISTE// el jugador no establece una cantidad a pagar, lo quiere lleno
                
else
                {
                    if (
IsNumeric(cmd))
                        
pago strval (cmd);
                    else { 
SendClientMessage(playeridRojo"* Valor de pago incorrecto"); return 1; }
                }
                
GameTextForPlayer(playerid,"~w~~n~~n~~n~~n~~n~~n~~n~~n~~n~Llenando deposito, espera por favor!",4800,3);
                
Refueling[playerid] = 1;
                
TogglePlayerControllable(playerid,0);
                
PlayerInfo[playerid][pTempFrozen] = 1;
                
/*if(CarInfo[vehid][cTipoGas] == 1)
                   {
                     idcar[playerid] = vehid;
                     SetTimerEx("Gripar",60000,0, "ddd", playerid);
                }*/
                
SetTimerEx("Fillup",5000,0"ddd"playeridvehidpago);
            }
            else
            {
                
SendClientMessage(playeridRojo"Tu coche no es Diesel!");
                return 
1;
            }
        }
        if (
strcmp("Gasolina"cmdtrue) == 0)
        {
            if(
CarInfo[vehid][cTipoGas] == 1)
            {
                  new 
pago;
                
cmd strtokex(cmdtextidx);
                if(!
strlen(cmd))
                    
pago NOEXISTE// el jugador no establece una cantidad a pagar, lo quiere lleno
                
else
                {
                    if (
IsNumeric(cmd))
                        
pago strval (cmd);
                    else { 
SendClientMessage(playeridRojo"* Valor de pago incorrecto"); return 1; }
                }
                
GameTextForPlayer(playerid,"~w~~n~~n~~n~~n~~n~~n~~n~~n~~n~Llenando deposito, espera por favor!",4800,3);
                
Refueling[playerid] = 1;
                
TogglePlayerControllable(playerid,0);
                
PlayerInfo[playerid][pTempFrozen] = 1;
                
SetTimerEx("Fillup",5000,0"ddd"playeridvehidpago);
                 
/*if(CarInfo[vehid][cTipoGas] == 2)
                   {
                      idcar[playerid] = vehid;
                    SetTimerEx("Gripar",60000,0, "ddd", playerid);
                }*/
            
}
            else
            {
                
SendClientMessage(playeridRojo"Tu coche no es Gasolina!");
                return 
1;
            }
        }
        return 
1;
    } 
Reply
#2

Actualmente si pones /llenar tanque que problema tienes?
Reply
#3

ahi pase el comando completo, hay un bug que existe en todos los servidores si no lo capas, si pones /llenar 999999999999 o /llenar diesel 9999999999999

Si te deja introducir los litros y demas se te pondrб automaticamente dinero infinito
Reply
#4

pawn Код:
if (strval(cmd) < 1 || strval(cmd) > 100)
{
    SendClientMessage(playerid,Blanco,"USO: no ir por debajo de 1, o por encima de 100");
    return 1;
}
Reply
#5

Quote:
Originally Posted by Aleelpalmero
Посмотреть сообщение
ahi pase el comando completo, hay un bug que existe en todos los servidores si no lo capas, si pones /llenar 999999999999 o /llenar diesel 9999999999999

Si te deja introducir los litros y demas se te pondrб automaticamente dinero infinito
Busca йsta linea:
pawn Код:
else
                {
                    if(IsNumeric(cmd))
                        pago = strval(cmd);
                    else { SendClientMessage(playerid, Rojo, "* Valor de pago incorrecto"); return 1; }
                }
//y abajo le aсades йsto:
                if(pago > 100 || pago < 1) return SendClientMessage(playerid, Rojo, "Maximo 100 y minimo 1");
Lo mismo en el diesel, saludos.
Reply
#6

Amigo ese bug es de OD-RP Contacta con un Scripter aunque yo ya solucione todos los bugs, PD: Ahy comandos ocultos que haran que sete resetee el Servidor por Fortuna los encontre y quite..
Reply
#7

Quote:
Originally Posted by xGenius
Посмотреть сообщение
Amigo ese bug es de OD-RP Contacta con un Scripter aunque yo ya solucione todos los bugs, PD: Ahy comandos ocultos que haran que sete resetee el Servidor por Fortuna los encontre y quite..
Quй bonito .. Le dices que hay comandos ocultos pero no cuales son, muy bien, excelente +rep.
Reply
#8

Tambien esque es verdad, si lo tienes arreglado dime como solucionarlo macho, de nada me sirve el comentario que has puesto si no me dices como solucionarlo.

Zume, tu sabes solucionarlo?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)