[Ajuda] Veiculos pra profissгo
#1

Estou fazendo um sistema de profissгo para o meu servidor. Uma das profissхes seria Caminhoneiro. Ela precisa de veнculos para funcionar. Mas nгo estou conseguindo que apenas quem й da profissгo entrar no veiculo. E tambйm os veнculos eu gostaria de repetir entre as profissхes.
EX:
Caminhoneiro usa o DFT-30. Mas tambйm queria que o outra Profissгo usasse o mesmo veнculo mas vou apenas mudar a cor e adicionar uns objetos emcima(Essa parte й outra historia).

Estou tentanto mas nгo estб dando certo.
Se alguйm puder ajudar. Agradeзo muito


Base que usei pra fazer o sistema de profissгo.
https://sampforum.blast.hk/showthread.php?tid=617051
Reply
#2

pawn Код:
new vehicle[2]; // variavel para armazenar veiculos. (2 > nъmero de carros).

// OnGameModeInit:
vehicle[0] = AddStaticVehicle...
vehicle[1] = AddStaticVehicle...

// OnPlayerStateChange:
if(newstate == PLAYER_STATE_DRIVER) // Verifica se esta dirigindo
{
    for(new i; i < sizeof(vehicle); i++) // Loop.
    {
        if(GetPlayerVehicleID(playerid) == vehicle[i]) // Se o jogador tiver no veiculo desejado.
        {
            if(variavelprofissao != idprofissao) // Verificar se nгo й da profissao do veiculo.
                return RemovePlayerFromVehicle(playerid); // Se nгo for remove o jogador do carro.
        }
    }
}
Expliquei muito nгo mas dб para compreender.
Reply
#3

Quote:
Originally Posted by tonisantolia
Посмотреть сообщение
pawn Код:
new vehicle[2]; // variavel para armazenar veiculos. (2 > nъmero de carros).

// OnGameModeInit:
vehicle[0] = AddStaticVehicle...
vehicle[1] = AddStaticVehicle...

// OnPlayerStateChange:
if(newstate == PLAYER_STATE_DRIVER) // Verifica se esta dirigindo
{
    for(new i; i < sizeof(vehicle); i++) // Loop.
    {
        if(GetPlayerVehicleID(playerid) == vehicle[i]) // Se o jogador tiver no veiculo desejado.
        {
            if(variavelprofissao != idprofissao) // Verificar se nгo й da profissao do veiculo.
                return RemovePlayerFromVehicle(playerid); // Se nгo for remove o jogador do carro.
        }
    }
}
Expliquei muito nгo mas dб para compreender.
Entendi, acho que agora vai funcionar, eu estava colocando no OnPlayerEnterVehicle ;-;

Se funcionar , +REP
Reply
#4

Certamente hб muitas coisas erradas, eu fiz аs pressas e nгo testei, mas...
tambйm nгo й a melhor forma de se fazer.

PHP код:
new jobVehicle[10];
new 
vehJob[MAX_VEHICLES];
jobVehicle[0] = AddStaticVehicle(modelid, ...);
jobVehicle[1] = AddStaticVehicle(modelid, ...);
jobVehicle[2] = AddStaticVehicle(modelid, ...);
jobVehicle[3] = AddStaticVehicle(modelid, ...);
for (new 
i4++)
    
vehJob[jobVehicle[i]] = PROF_TAXISTA;
jobVehicle[4] = AddStaticVehicle(modelid, ...);
jobVehicle[5] = AddStaticVehicle(modelid, ...);
jobVehicle[6] = AddStaticVehicle(modelid, ...);
jobVehicle[7] = AddStaticVehicle(modelid, ...);
jobVehicle[8] = AddStaticVehicle(modelid, ...);
jobVehicle[9] = AddStaticVehicle(modelid, ...);
for (new 
410++)
    
vehJob[jobVehicle[i]] = PROF_...;
public 
OnPlayerEnterVehicle(playeridvehicleidispassenger)
{
    for (new 
isizeof(jobVehicle); ++) if (!ispassenger && vehicleid != INVALID_VEHICLE_ID && vehJob[jobVehicle[i]] == PROF_TAXISTA && pInfo[playerid][pProfissao] != PROF_TAXISTA)
    {
        
ClearAnimations(playerid);
        return 
SendClientMessage(playerid, -1"Vocк nгo tem as chaves deste veнculo.");
    }
    for (new 
isizeof(jobVehicle); ++) if (!ispassenger && vehicleid != INVALID_VEHICLE_ID && vehJob[jobVehicle[i]] == PROF_... && pInfo[playerid][pProfissao] != PROF_...)
    {
        
ClearAnimations(playerid);
        return 
SendClientMessage(playerid, -1"Vocк nгo tem as chaves deste veнculo.");
    }
    return 
1;

Reply
#5

Quote:
Originally Posted by 1sbedx
Посмотреть сообщение
Certamente hб muitas coisas erradas, eu fiz аs pressas e nгo testei, mas...
tambйm nгo й a melhor forma de se fazer.

PHP код:
new jobVehicle[10];
new 
vehJob[MAX_VEHICLES];
jobVehicle[0] = AddStaticVehicle(modelid, ...);
jobVehicle[1] = AddStaticVehicle(modelid, ...);
jobVehicle[2] = AddStaticVehicle(modelid, ...);
jobVehicle[3] = AddStaticVehicle(modelid, ...);
for (new 
i4++)
    
vehJob[jobVehicle[i]] = PROF_TAXISTA;
jobVehicle[4] = AddStaticVehicle(modelid, ...);
jobVehicle[5] = AddStaticVehicle(modelid, ...);
jobVehicle[6] = AddStaticVehicle(modelid, ...);
jobVehicle[7] = AddStaticVehicle(modelid, ...);
jobVehicle[8] = AddStaticVehicle(modelid, ...);
jobVehicle[9] = AddStaticVehicle(modelid, ...);
for (new 
410++)
    
vehJob[jobVehicle[i]] = PROF_...;
public 
OnPlayerEnterVehicle(playeridvehicleidispassenger)
{
    for (new 
isizeof(jobVehicle); ++) if (!ispassenger && vehicleid != INVALID_VEHICLE_ID && vehJob[jobVehicle[i]] == PROF_TAXISTA && pInfo[playerid][pProfissao] != PROF_TAXISTA)
    {
        
ClearAnimations(playerid);
        return 
SendClientMessage(playerid, -1"Vocк nгo tem as chaves deste veнculo.");
    }
    for (new 
isizeof(jobVehicle); ++) if (!ispassenger && vehicleid != INVALID_VEHICLE_ID && vehJob[jobVehicle[i]] == PROF_... && pInfo[playerid][pProfissao] != PROF_...)
    {
        
ClearAnimations(playerid);
        return 
SendClientMessage(playerid, -1"Vocк nгo tem as chaves deste veнculo.");
    }
    return 
1;

Esse daqui й basicamente igual ao outro , porйm mais detalhado e mais explicado.

+REP Para os dois quando passar o tempo pra dar mais rep ;-;
Reply
#6

Quote:
Originally Posted by 1sbedx
Посмотреть сообщение
Certamente hб muitas coisas erradas, eu fiz аs pressas e nгo testei, mas...
tambйm nгo й a melhor forma de se fazer.

PHP код:
new jobVehicle[10];
new 
vehJob[MAX_VEHICLES];
jobVehicle[0] = AddStaticVehicle(modelid, ...);
jobVehicle[1] = AddStaticVehicle(modelid, ...);
jobVehicle[2] = AddStaticVehicle(modelid, ...);
jobVehicle[3] = AddStaticVehicle(modelid, ...);
for (new 
i4++)
    
vehJob[jobVehicle[i]] = PROF_TAXISTA;
jobVehicle[4] = AddStaticVehicle(modelid, ...);
jobVehicle[5] = AddStaticVehicle(modelid, ...);
jobVehicle[6] = AddStaticVehicle(modelid, ...);
jobVehicle[7] = AddStaticVehicle(modelid, ...);
jobVehicle[8] = AddStaticVehicle(modelid, ...);
jobVehicle[9] = AddStaticVehicle(modelid, ...);
for (new 
410++)
    
vehJob[jobVehicle[i]] = PROF_...;
public 
OnPlayerEnterVehicle(playeridvehicleidispassenger)
{
    for (new 
isizeof(jobVehicle); ++) if (!ispassenger && vehicleid != INVALID_VEHICLE_ID && vehJob[jobVehicle[i]] == PROF_TAXISTA && pInfo[playerid][pProfissao] != PROF_TAXISTA)
    {
        
ClearAnimations(playerid);
        return 
SendClientMessage(playerid, -1"Vocк nгo tem as chaves deste veнculo.");
    }
    for (new 
isizeof(jobVehicle); ++) if (!ispassenger && vehicleid != INVALID_VEHICLE_ID && vehJob[jobVehicle[i]] == PROF_... && pInfo[playerid][pProfissao] != PROF_...)
    {
        
ClearAnimations(playerid);
        return 
SendClientMessage(playerid, -1"Vocк nгo tem as chaves deste veнculo.");
    }
    return 
1;

Isso daqui nгo funcionou nгo. Eu nгo uso defines para os empregos.
Reply
#7

Entгo mude para a variбvel de profissгo.
Reply
#8

Fiz assim

PHP код:
new Eveiculo[5];
new 
Emotoboy[4]; 
PHP код:
public OnGameModeInit()
{
    
UsePlayerPedAnims(); // Andar normalmente
    
Eveiculo[0] = AddStaticVehicle(578,-148.1839,-322.7406,2.0453,180.2084,1,1); // v1
    
Eveiculo[1] = AddStaticVehicle(578,-141.2557,-322.8502,2.0457,178.6352,1,1); // v2
    
Eveiculo[2] = AddStaticVehicle(578,-133.7400,-322.4712,2.0464,180.6215,1,1); // v3
    
Eveiculo[3] = AddStaticVehicle(578,-125.7944,-322.5229,2.0460,178.9929,1,1); // v4
    
Eveiculo[4] = AddStaticVehicle(578,-116.7708,-322.5246,2.0518,177.9242,1,1); // v5
    // --
    
Emotoboy[0] = AddStaticVehicle(448,2097.9995,-1812.6289,12.9820,90.5790,3,6); // pizza1
    
Emotoboy[1] = AddStaticVehicle(448,2097.5234,-1814.4313,12.9817,89.5149,3,6); // pizza2
    
Emotoboy[2] = AddStaticVehicle(448,2097.7832,-1801.9897,12.9825,91.2709,3,6); // pizza3
    
Emotoboy[3] = AddStaticVehicle(448,2098.0776,-1800.4216,12.9854,91.9463,3,6); // pizza4
    
return 1;

PHP код:
public OnPlayerStateChange(playeridnewstateoldstate)
{    
    new 
arquivo[40], name[MAX_PLAYER_NAME]; 
    
GetPlayerName(playeridnamesizeof(name)); 
    
format(arquivosizeof(arquivo),"Contas/%sInfos.ini"name); 
    
    
Player[playerid][pEmprego] = DOF2_GetInt(arquivo"Emprego");
    
    if(
newstate == PLAYER_STATE_DRIVER)
    {
        for(new 
isizeof(Eveiculo); i++)
        {
            if(
GetPlayerVehicleID(playerid) == Eveiculo[i])
            {
                if(
Player[playerid][pEmprego] == 1)
                {
                    
SendClientMessage(playerid, -1"[CLS]Digite /t para comeзar a trabalhar");
                }else{
                    
                    
SendClientMessage(playerid, -1"[CLS]Esse veнculo й apenas para Caminhoneiros");
                    
RemovePlayerFromVehicle(playerid);
                }
            }
        }
        for(new 
psizeof(Emotoboy); p++)
        {
            if(
GetPlayerVehicleID(playerid) == Emotoboy[p])
            {
                if(
Player[playerid][pEmprego] != 2)
                {
                    
SendClientMessage(playerid, -1"[CLS]Esse veнculo й apenas para MotoBoys");
                    
RemovePlayerFromVehicle(playerid);
                    
ClearAnimations(playerid);
                }else{
                    
SendClientMessage(playerid, -1"[CLS]Digite /t para comeзar a trabalhar");
                }
            }
        }
    }
    return 
1;

Ficou grande e eu acho que estou desperdiзando espaзo. Mas estб funcionado.
Reply
#9

Dava pra economizar looping aн...
Reply
#10

Quote:
Originally Posted by FerrariL
Посмотреть сообщение
Dava pra economizar looping aн...
Eu sei que da , sу nгo sei como ;-;

Se quiser ensinar <3
Reply
#11

if(newstate == PLAYER_STATE_DRIVER)
{
new VeiculoID;
VeiculoID = GetPlayerVehicleID(playerid);

if(VeiculoID == Eveiculo[0] || VeiculoID == Eveiculo[1] || VeiculoID == Eveiculo[2]
|| VeiculoID == Eveiculo[3] || VeiculoID == Eveiculo[4])
{
if(Player[playerid][pEmprego] == 1)
{
SendClientMessage(playerid, -1, "[CLS]Digite /t para comeзar a trabalhar");
}
else
{
SendClientMessage(playerid, -1, "[CLS]Esse veнculo й apenas para Caminhoneiros");
RemovePlayerFromVehicle(playerid);
}
}
return 1;
}
Reply
#12

Quote:
Originally Posted by AutoMatic2
View Post
if(newstate == PLAYER_STATE_DRIVER)
{
new VeiculoID;
VeiculoID = GetPlayerVehicleID(playerid);

if(VeiculoID == Eveiculo[0] || VeiculoID == Eveiculo[1] || VeiculoID == Eveiculo[2]
|| VeiculoID == Eveiculo[3] || VeiculoID == Eveiculo[4])
{
if(Player[playerid][pEmprego] == 1)
{
SendClientMessage(playerid, -1, "[CLS]Digite /t para comeзar a trabalhar");
}
else
{
SendClientMessage(playerid, -1, "[CLS]Esse veнculo й apenas para Caminhoneiros");
RemovePlayerFromVehicle(playerid);
}
}
return 1;
}
Й a mesma de um Loop, mas vocк fez sem usar ele .-.
Reply
#13

Dessa maneira vocк fara uma verificaзгo na conta de cada player toda vez que entrar em um veiculo.

Tente fazer isso somente quando logar e armazenar os valores nas variбveis. Assim evita de ficar gastando processamento atoa.
Reply
#14

Quote:
Originally Posted by Cleyson
View Post
Dessa maneira vocк fara uma verificaзгo na conta de cada player toda vez que entrar em um veiculo.

Tente fazer isso somente quando logar e armazenar os valores nas variбveis. Assim evita de ficar gastando processamento atoa.
Exemplo?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)