[HELP] Urgentasso!
#1

Galera, usei o exemplo de gasolina do Drakins e editei totalmente o dele, e "fiz" o meu.
Mas o problema й que:
Eu to fazendo testes com o /zerar que zera a gasolina do carro, ai ele tinha que DESLIGAR! E sу ligar quando tiver gasolina.
Mas isso sу ta funcionando pro ID 0 O_O. Se outro ID loga e digita /zerar, ou acaba a gasolina, o carro continua andando normal!

Aqui todos os codes da gasolina:

PHP код:
new
    
Gas[MAX_VEHICLES],
    
Float:velokm[3],
    
Retirada[500]
;
#define VALOR_LITRO 2.0
#define RETIRAR_KM  3 
OnGameModeInit:
PHP код:
SetTimer("AtualizarGasosa"10001); 
PHP код:
forward AtualizarGasosa(playerid);
public 
AtualizarGasosa(playerid)
{
    if(
IsPlayerInAnyVehicle(playerid))
    {
        new 
carro GetPlayerVehicleID(playerid);
        new 
motlualarporcappormaob;
        
GetVehicleVelocity(carrovelokm[0], velokm[1], velokm[2]);
         if(
floatround(((floatsqroot(((velokm[0] * velokm[0]) + (velokm[1] * velokm[1]) + (velokm[2] * velokm[2]))) * (170.0))) * 1) > 5)
        {
            if(
Gas[carro] == 0)
            {
                
GameTextForPlayer(playerid"Acabou a gasolina"30001);
                
GetVehicleParamsEx(carromotlualarporcappormaob);
                
SetVehicleParamsEx(carroVEHICLE_PARAMS_OFFlualarporcappormaob);
                return 
1;
            }
            if(
Gas[carro] >= 1)
            {
                    
GetVehicleParamsEx(carromotlualarporcappormaob);
                    
SetVehicleParamsEx(carroVEHICLE_PARAMS_ONlualarporcappormaob);
                    
motor[playerid] = 1;
                  
Retirada[playerid]+=1;
                if(
Retirada[playerid] >= (RETIRAR_KM*13))
                {
                       
Gas[carro]--;
                       
Retirada[playerid]=0;
                }
            }
        }
        return 
1;
    }
    return 
1;

Comandos de abastecer:
PHP код:
CMD:abastecer(playeridparams[])
{
    if(!
IsPlayerInAnyVehicle(playerid))
         return 
SendClientMessage(playeridCOR_CINZA1" Vocк nгo esta em um carro ");
    if(!
NoPosto(playerid))
        return 
SendClientMessage(playeridCOR_CINZA1" Vocк nгo estб em um Posto ");
       
ShowPlayerDialog(playerid,DGas,DIALOG_STYLE_INPUT,"Colocar Gasolina","Por favor digite a quantidade de litros para colocar \no Preзo  atual da Gasolina й 2$ por litro","Sim","Nao");
    return 
1;

Dialog do Comando:
PHP код:
case DGas:
        {
            new 
sGasolinaT strval(inputtext),quantia sGasolinaT*floatround(VALOR_LITRO);
            new 
motlualarporcappormaob;
            if(!
response)
                return 
SendClientMessage(playeridCOR_CINZA1"Vocк nгo colocou gasolina");
            if(
GetPlayerMoneyEx(playerid) < quantia)
                return 
SendClientMessage(playeridCOR_CINZA2"Vocк nгo tem dinheiro para isto");
            if(
sGasolinaT 101 || sGasolinaT <= 0)
                return 
SendClientMessage(playeridCOR_CINZA3"Quantia Invбlida");
            new 
carid GetPlayerVehicleID(playerid);
            if(
Gas[carid] + sGasolinaT >= 101)
                return 
SendClientMessage(playeridCOR_CINZA" Vocк nгo pode passar de 100 litros de combustнvel! ");
            
format(String,60" Vocк abastaceu "AMARELO"%d "BRANCO2"Litros por $%d",sGasolinaT,quantia);
            
SendClientMessage(playerid, -1String);
            
Gas[GetPlayerVehicleID(playerid)] = Gas[carid]+sGasolinaT;
            
GivePlayerMoneyEx(playerid,-quantia);
            
Retirada[playerid] = 0;
            if(
motor[playerid] == 0)
             {
                  
GetVehicleParamsEx(caridmotlualarporcappormaob);
                
SetVehicleParamsEx(caridVEHICLE_PARAMS_ONlualarporcappormaob);
                 
motor[playerid] = 1;
                 return 
1;
            }
            
TogglePlayerControllable(playeridtrue);
            return 
1;
        } 
Outros comandos:
PHP код:
CMD:abastecertodos(playeridparams[])
{
    if(
pInfo[playerid][pAdmin] < 1337)
        return 
SendClientMessage(playeridCOR_CINZA1"Vocк nгo tem permissгo para usar esse comando!");
    if(
AdminModo[playerid] == 0)
        return 
SendClientMessage(playeridCOR_CINZA1"Vocк nгo pode usar esse comando enquanto estб jogando!");
    for(new 
dj 0dj MAX_VEHICLESdj++)
    {
        
Gas[dj] = 52;
    }
    
format(String60" O Admin %s abasteceu todos veнculos "gNome(playerid));
    
MensagemProAdmin(COR_AMARELOString);
    
printf(" O admin %s abasteceu todos veнculos "pNome(playerid));
    return 
1;
}
CMD:motoron(playeridparams[])
{
    new 
carro GetPlayerVehicleID(playerid);
    new 
motlualarporcappormaob;
    if(!
IsPlayerInAnyVehicle(playerid))
        return 
SendClientMessage(playeridCOR_CINZA1" Vocк nгo estб em um carro ");
    if(
motor[playerid] == 0)
    {
        
GetVehicleParamsEx(carromotlualarporcappormaob);
        
SetVehicleParamsEx(carroVEHICLE_PARAMS_ONlualarporcappormaob);
        
motor[playerid] = 1;
        
SendClientMessage(playeridCOR_VERDEGRANA" Carro ligado ");
    }
    return 
1;
}
CMD:motoroff(playeridparams[])
{
    new 
carro GetPlayerVehicleID(playerid);
    new 
motlualarporcappormaob;
    if(!
IsPlayerInAnyVehicle(playerid))
        return 
SendClientMessage(playeridCOR_CINZA1" Vocк nгo estб em um carro ");
    if(
motor[playerid] == 1)
    {
        
GetVehicleParamsEx(carromotlualarporcappormaob);
        
SetVehicleParamsEx(carroVEHICLE_PARAMS_OFFlualarporcappormaob);
        
motor[playerid] = 0;
        
SendClientMessage(playeridCOR_VERDEGRANA" Carro desligado ");
    }
    return 
1;

E o comando ZERAR:
PHP код:
CMD:zerar(playeridparams[])
{
    
Gas[GetPlayerVehicleID(playerid)] = 0;
    return 
1;

Dou um milhгo de estrelas pra quem me ajudar D:!
Reply
#2

pawn Код:
CMD:zerar(playerid, params[])
{
    new carro = GetPlayerVehicleID(playerid);
    new mot, lu, alar, por, cap, porma, ob;
    Gas[carro] = 0;
    GetVehicleParamsEx(carro, mot, lu, alar, por, cap, porma, ob);
    SetVehicleParamsEx(carro, VEHICLE_PARAMS_OFF, lu, alar, por, cap, porma, ob);
    motor[playerid] = 0;
    return 1;
}


=============== EDIT

A propуsito bruno, posso usar esse seu sistema? Crйditos no /creditos...
Reply
#3

O Strong ja me falo oque й, mas nгo consegui fazer ou fiz errado, ele falou que tem que Usar Foreach pra fazer o Loop em todos os players, eu fiz mas mesmo assim tava dando bugs , devo ter colocados letras nos lugares errados !

Jaja ele posta aaqui com o COD certo, pelo menos eu acho rs!
Reply
#4

Calma ae, mais vocк quer zerar a gasolina de todos os carros ou sу oque vocк estб ?
Reply
#5

Axo que funfa '-'

PHP код:
CMD:zerar(playeridparams[])
{
    new 
carro GetPlayerVehicleID(playerid);
    new 
motlualarporcappormaob;
    for(new 
car 0car MAX_VEHICLEScar++) {
        
Gas[car] = 0;
    }
    for(new 
id 0id GetMaxPlayers(); id++) {
        
motor[id] = 0;
    }
    
GetVehicleParamsEx(carromotlualarporcappormaob);
    
SetVehicleParamsEx(carroVEHICLE_PARAMS_OFFlualarporcappormaob);
    return 
1;

Reply
#6

Nem Dylan uhauhas, vocк nгo intendeu.
Zerando ele ta zerando normal, esse CMD eu sу fiz pra testar .
Mas o problema й que se eu sou ID 1+ e zero a o carro nгo trava pra mim !

M!as o Strong ja te me ajudando, mas vlw ae!
Reply
#7

pawn Код:
new
    Float:Cos[MAX_PLAYERS][3],
    Float:Gas[MAX_VEHICLES];

UpdateGas();
public UpdateGas()
{
    for(new x = 0,y = GetMaxPlayers(); x != y; x++)
    {
        if(!IsPlayerConnected(x)) goto NEXT;
       
        if(IsPlayerInAnyVehicle(x))
        {
            new
                Float:Fts[3];
               
            GetPlayerPos(x,Fts[0],Fts[1],Fts[2]);
            if((floatsqroot(floatpower(Cos[x][0] - Fts[0],2) + floatpower(Cos[x][1] - Fts[1],2) + floatpower(Cos[x][2] - Fts[2],2))) >= 5) Gas[GetPlayerVehicleID(x)] -= 0.1;
           
            if(Gas[GetPlayerVehicleID(x)] < 1.1)
            //fazaqui
            Cos[x][0] = Fts[0];
            Cos[x][1] = Fts[1];
            Cos[x][2] = Fts[2];
        }
        NEXT:
    }
    return 1;
}
toma ai bruno.
Reply
#8

pawn Код:
CMD:zerar(playerid, params[])
{
    Gas[GetPlayerVehicleID(playerid)] = -1;
    return 1;
}
talvez isso resolva..
Reply
#9

pawn Код:
CMD:motoron(playerid, params[])
{
    new carro = GetPlayerVehicleID(playerid);
    if(!IsPlayerInAnyVehicle(playerid))
        return SendClientMessage(playerid, COR_CINZA1, " Vocк nгo estб em um carro ");
    if(Gas[carro] < 1.1)
        return SendClientMessage(playerid,255,"O carro tб sem gasolina fdp!!!!!!!!!!!!!!!!!!");
    if(motor[playerid] == 0)
    {
        new mot, lu, alar, por, cap, porma, ob;
        GetVehicleParamsEx(carro, mot, lu, alar, por, cap, porma, ob);
        SetVehicleParamsEx(carro, VEHICLE_PARAMS_ON, lu, alar, por, cap, porma, ob);
        motor[playerid] = 1;
        SendClientMessage(playerid, COR_VERDEGRANA, " Carro ligado ");
    }
    return 1;
}
Reply
#10

Quote:

if(!IsPlayerConnected(x)) goto NEXT;

Qual a razгo de nгo ter usado continue ao invйs de goto?
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)