[Ajuda] Oque hб de errado nessa funзгo ?!
#1

Bem, eu achei um pouco simples, porem pra mim ta dificil de resolver o erro :c

Erro: Ao entrar no suposto caminhгo, simplesmente ele entra normal sem ao menos fazer qualquer tipo de verificaзгo!

Codigo:

PHP код:
public OnPlayerStateChange(playeridnewstateoldstate)
{
     new 
pName[MAX_PLAYER_NAME], info[128];
     if(
newstate == PLAYER_STATE_DRIVER)
    if(
Org[playerid] == Agente)
    {
        if(
IsPlayerInVehicle(playerid,Caminhao[0]))
        {
            
SetPlayerCheckpoint(playerid,2873.1750,921.2672,10.7500,3.0);
            
GetPlayerName(playeridpNameMAX_PLAYER_NAME);
            
format(infosizeof(info), "| AVISO | O Caminhгo dos Mercenбrios foi coletado pelo player %s e estб em transporte!"pName);
            
SendClientMessageToAll(AmareloClaro,pName);
            return 
1;
            }
                else
            {
            if(
newstate == PLAYER_STATE_DRIVER)
            
RemovePlayerFromVehicle(playerid);
            
SendClientMessage(playeridVermelho"| ERRO | Vocк nгo pode pegar esse veiculo !");
            return 
1;
        }
    }
    return 
1;

Obrigado !

@Edit

Caso achem que o 'erro' seja por causa dos return ali, mesmo sem os dois primeiros ainda sim continuava a nгo fazer efeito !
Reply
#2

PHP код:
public OnPlayerStateChange(playeridnewstateoldstate)
{
    new 
VehID GetPlayerVehicleID(playerid);
    if(
newstate == PLAYER_STATE_DRIVER)
    {
        if(
VehID == Caminhao[0])
        {
            if(
Org[playerid] != Agente)
              {
                  
SendClientMessage(playerid,-1"Este carro nгo estб disponнvel para sua organizaзгo !");
                  
RemovePlayerFromVehicle(playerid);
                  return 
1;
              }
            
SetPlayerCheckpoint(playerid,2873.1750,921.2672,10.7500,3.0);
            
GetPlayerName(playeridpNameMAX_PLAYER_NAME);
            
format(infosizeof(info), "| AVISO | O Caminhгo dos Mercenбrios foi coletado pelo player %s e estб em transporte!"pName);
            
SendClientMessageToAll(AmareloClaro,pName);
        }
    }
    return 
1;

Se vocк tiver uma lista de veнculos criados, por exemplo:
Код:
Caminhao[0] = ...
Caminhao[1] = ...
Caminhao[2] = ...
Caminhao[3] = ...
Faзa isso que estб abaixo, pois vocк nгo terб que repetir para todos os Caminhхes.

PHP код:
public OnPlayerStateChange(playeridnewstateoldstate)
{
    new 
VehID GetPlayerVehicleID(playerid);
    if(
newstate == PLAYER_STATE_DRIVER)
    {
        for(new 
0sizeof(Caminhao); i++)
        {
            if(
VehID == Caminhao[i])
            {
                if(
Org[playerid] != Agente)
                {
                    
SendClientMessage(playerid,-1"Este carro nгo estб disponнvel para sua organizaзгo !");
                    
RemovePlayerFromVehicle(playerid);
                    return 
1;
                }
                
SetPlayerCheckpoint(playerid,2873.1750,921.2672,10.7500,3.0);
                
GetPlayerName(playeridpNameMAX_PLAYER_NAME);
                
format(infosizeof(info), "| AVISO | O Caminhгo dos Mercenбrios foi coletado pelo player %s e estб em transporte!"pName);
                
SendClientMessageToAll(AmareloClaro,pName);
            }
        }
    }
    return 
1;

----------------------------------------

Outro erro, veja esta linha de seu cуdigo:
PHP код:
SendClientMessageToAll(AmareloClaro,pName); 
O correto:
PHP код:
SendClientMessageToAll(AmareloClaro,info); 
Reply
#3

Ok, pela logica seu codigo й funcional, mas acontece de dar erro na verificaзгo das organizaзхes ao entrar no veiculo.
serб que tem a ver como a organizaзгo estб definida ?

por exemplo: pode dar conflito se pra trocar de organizaзгo for um comando ?

e existe algum jeito de eu setar outra organizaзгo ao executar um comando ? Obrigado !
Reply
#4

No comeзo de seu gamemode, deve estar definido assim:

PHP код:
#define Agente (NЪMERO) 
Entгo, para vocк setar a profissгo para um jogar:

PHP код:
Org[playerid] = Agente
Й o seguinte cara, procure tutoriais aqui no Fуrum e estude esse meu cуdigo:

PHP код:
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#include <dof2>
#define QUANTIDADE_PROFS 6
new _NameProfs[QUANTIDADE_PROFS][40] = {
    
"Desempregado",
    
"Camioneiro",
    
"Taxista",
    
"Mecanico",
    
"Seguranзa",
    
"Mendigo"
};
new 
Float:_SpawnProfs[QUANTIDADE_PROFS][3] = {
    {
1958.3783,1343.1572,15.3746},
    {
2199.6531,1393.3678,10.8203},
    {
2483.5977,1222.0825,10.8203},
    {
2637.2712,1129.2743,11.1797},
    {
2000.0106,1521.1111,17.0625},
    {
2024.8190,1917.9425,12.3386}
};
new 
_CoresProfs[QUANTIDADE_PROFS] = {
    
0xFFFFFFFF,
    
0xFFFF80FF,
    
0x80FF80FF,
    
0x80FFFFFF,
    
0x0080FFFF,
    
0xFF0000FF
};
new 
_Profissao[MAX_PLAYERS];
new 
VehiclesDesempregado[5];
main()
{
    print(
"\n----------------------------------");
    print(
" Prof's... LOADED!");
    print(
"----------------------------------\n");
}
CMD:setprof(playeridparams[])
{
    new 
xString[128];
    if(
sscanf(params"ud"params[0], params[1])) return SendClientMessage(playerid0xFF0000FF"/setprof [ID] [PROF]");
    if(!
IsPlayerConnected(params[0])) return SendClientMessage(playerid0xFF0000FF"Jogador nгo conectado.");
    if(
params[1] >= QUANTIDADE_PROFS || params[1] < 0) return SendClientMessage(playerid0xFF0000FF":::: 0-5 ::::");
    
_Profissao[params[0]] = params[1];
    
    
format(xStringsizeof(xString), "Profissгo: %s | Jogador %s"_NameProfs[_Profissao[params[0]]], iName(params[0]));
    
SendClientMessage(playerid_CoresProfs[_Profissao[params[0]]], xString);
    
format(xStringsizeof(xString), "Sua Profissгo agora й: %s"_NameProfs[_Profissao[params[0]]]);
    
SendClientMessage(params[0], _CoresProfs[_Profissao[params[0]]], xString);
    
    
OnPlayerSpawn(params[0]);
    return 
1;
}
public 
OnGameModeInit()
{
    
SetGameModeText("Blank Script");
    for(new 
i300; ++iAddPlayerClass(i1958.37831343.157215.3746269.1425000000);
    
VehiclesDesempregado[0] = CreateVehicle(4982039.52011350.487310.71610.0000, -1, -1100);
    
VehiclesDesempregado[1] = CreateVehicle(4982039.77441358.162210.71610.0000, -1, -1100);
    
VehiclesDesempregado[2] = CreateVehicle(4982039.81031365.630610.71610.0000, -1, -1100);
    
VehiclesDesempregado[3] = CreateVehicle(4982039.57361372.802710.71610.0000, -1, -1100);
    
VehiclesDesempregado[4] = CreateVehicle(5042039.63561380.078010.47460.0000, -1, -1100);
    return 
1;
}
public 
OnGameModeExit()
{
    
DOF2_Exit();
    return 
1;
}
public 
OnPlayerRequestClass(playeridclassid)
{
    
SetPlayerPos(playerid1958.37831343.157215.3746);
    
SetPlayerCameraPos(playerid1958.37831343.157215.3746);
    
SetPlayerCameraLookAt(playerid1958.37831343.157215.3746);
    return 
1;
}
public 
OnPlayerConnect(playerid)
{
    if(!
DOF2_FileExists(pConta(playerid)))
    {
        
DOF2_CreateFile(pConta(playerid));
        
DOF2_SetInt(pConta(playerid), "Profissao"0);
    }
    
    
_Profissao[playerid] = DOF2_GetInt(pConta(playerid), "Profissao");
    new 
kString[128];
    
format(kStringsizeof(kString), "Sua profissгo: %s"_NameProfs[_Profissao[playerid]]);
    
SendClientMessage(playerid_CoresProfs[_Profissao[playerid]], kString);
    return 
1;
}
public 
OnPlayerDisconnect(playeridreason)
{
    
DOF2_SetInt(pConta(playerid), "Profissao"_Profissao[playerid]);
    
_Profissao[playerid] = 0;
    return 
1;
}
public 
OnPlayerSpawn(playerid)
{
    
SetPlayerPos(playerid_SpawnProfs[_Profissao[playerid]][0],  _SpawnProfs[_Profissao[playerid]][1], _SpawnProfs[_Profissao[playerid]][2]);
    
SetPlayerColor(playerid_CoresProfs[_Profissao[playerid]]);
    return 
1;
}
public 
OnPlayerStateChange(playeridnewstateoldstate)
{
    new 
VehID GetPlayerVehicleID(playerid);
    if(
newstate == PLAYER_STATE_DRIVER)
    {
        for(new 
0sizeof(VehiclesDesempregado); i++)
        {
            if(
VehID == VehiclesDesempregado[i] && _Profissao[playerid] != 0)
            {
                
SendClientMessage(playerid,-1"Este carro nгo estб disponнvel para sua organizaзгo !");
                
RemovePlayerFromVehicle(playerid);
            }
        }
    }
    return 
1;
}
stock iName(playerid)
{
    new 
_iNome[MAX_PLAYER_NAME];
    
GetPlayerName(playerid_iNomesizeof(_iNome));
    return 
_iNome;
}
stock pConta(id)
{
    new 
_cString[128];
    
format(_cStringsizeof(_cString), "Contas/%s"iName(id));
    return 
_cString;

Reply
#5

Obrigado por TODO seu suporto cara, valeo mesmo.

estudarei ^^
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)