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(playerid, vehid, pago);
public 
Fillup(playerid, vehid, pago)
{
    new 
Gas = CarInfo[vehid][cTipoGas];
    new 
fillup, total;
    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(playerid, Rojo, "* 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(playerid, Naranja, "____________[Gasolinera]_____________");
            new 
Gaso[64];
            if(
Gas == 1) Gaso = "Gasolina | 1.7999";
            else if(
Gas == 2) Gaso = "Diesel | 1.3999";
            
format(string, sizeof(string), "Precio/Litro: {FFFFFF} %s$",Gaso);
            
SendClientMessage(playerid, AmarilloClaro, string);
            
format(string, sizeof(string), "Litros pagados: {FFFFFF}%dL",fillup);
            
SendClientMessage(playerid, AmarilloClaro, string);
            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(playerid, Blanco,string);
            }
            
format(string, sizeof(string), "Total: {FFFFFF}%d$",total);
            
SendClientMessage(playerid, AmarilloClaro, string);
            if(
CarInfo[vehid][cUsos] == 1 || CarInfo[vehid][cUsos] == 2 || CarInfo[vehid][cUsos] == 3 || CarInfo[vehid][cUsos] == 4)
            {
                for(new 
i = 0; i < sizeof(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(playerid, Rojo, "* 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(playerid, Rojo, "* No puedes repostar una bici!"); return 1; }
        
          
cmd = strtokex (cmdtext, idx);
        if (!
strlen(cmd))
        {
            
SendClientMessage(playerid,Blanco,"USO: /llenar [Diesel/Gasolina]");
            return 
1;
        }
        if (
strcmp("Diesel", cmd, true) == 0)
        {
            if(
CarInfo[vehid][cTipoGas] == 2)
            {
                new 
pago;
                
cmd = strtokex(cmdtext, idx);
                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(playerid, Rojo, "* 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", playerid, vehid, pago);
            }
            else
            {
                
SendClientMessage(playerid, Rojo, "Tu coche no es Diesel!");
                return 
1;
            }
        }
        if (
strcmp("Gasolina", cmd, true) == 0)
        {
            if(
CarInfo[vehid][cTipoGas] == 1)
            {
                  new 
pago;
                
cmd = strtokex(cmdtext, idx);
                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(playerid, Rojo, "* 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", playerid, vehid, pago);
                 
/*if(CarInfo[vehid][cTipoGas] == 2)
                   {
                      idcar[playerid] = vehid;
                    SetTimerEx("Gripar",60000,0, "ddd", playerid);
                }*/
            
}
            else
            {
                
SendClientMessage(playerid, Rojo, "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)