[Ajuda] Ajuda aqui Rapidinho
#1

Bom eu tenho um sistema para quando a vida do carro chegar a 400 ele para ...
mais ta bugado... quando o cara para ele manda a menssagem .. mais nгo para de mandar mais..

olhem: http://i51.tinypic.com/2q1avxd.png

o codigo

Код:
public CheckCarHealth()
{
new string[256];
new sendername[MAX_PLAYER_NAME];
for (new i=0; i < MAX_PLAYERS; i++)
{
if (IsPlayerConnected(i) && IsPlayerInAnyVehicle(i) && GetPlayerState(i) == PLAYER_STATE_DRIVER)
{
new Float:health;
GetVehicleHealth(GetPlayerVehicleID(i),health);
if(health <= 400)
{
if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
{
TogglePlayerControllable(i, 0);
SendClientMessage(i, COLOR_LIGHTBLUE, "Seu veiculo quebrou, tente ligar novamente ou ligue para um mecanico(/serviзo mecanico) ou (/sair para sair do veiculo)");
engineOn[i] = true;
GetPlayerName(i, sendername, sizeof(sendername));
format(string, sizeof(string), "* O veiculo de %s quebrou.", sendername);
ProxDetector(1.0, i, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
}
}
}
}
}
Reply
#2

Jб existem meios mais recentes para "quebrar" o veнculo, e esses sгo as novas funзхes da 0.3c .


Mas como vocк quer com TogglePlayerControlable .

Aqui, estб:


pawn Код:
//No seu OnPlayerUpdate ficaria mais ou menos assim:


public OnPlayerUpdate(playerid)
{
    new string[256];
    new sendername[MAX_PLAYER_NAME];
    if(IsPlayerInAnyVehicle(playerid))
    {
        if(IsPlayerConnected(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
        {
            new Float:health;
            GetVehicleHealth(GetPlayerVehicleID(playerid),health);
            if(health <= 400 && !GetPVarInt(playerid,"VeiculoQuebrado"))
            {
                if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
                {
                    TogglePlayerControllable(playerid, 0);
                    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Seu veiculo quebrou, tente ligar novamente ou ligue para um mecanico(/serviзo mecanico) ou (/sair para sair do veiculo)");
                    engineOn[playerid] = true;
                    SetPVarInt(playerid,"VeiculoQuebrado",true);
                    GetPlayerName(playerid, sendername, sizeof(sendername));
                    format(string, sizeof(string), "* O veiculo de %s quebrou.", sendername);
                    ProxDetector(1.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                }
            }
        }
    }
    return 1;
}



//E no seu OnPlayerExitVehicle ficaria mais ou menos assim:


public OnPlayerExitVehicle(playerid, vehicleid)
{
    SetPVarInt(playerid,"VeiculoQuebrado",false);
    return 1;
}

Se houver algo que repare o veнculo, nгo esqueзa de usar:

pawn Код:
SetPVarInt(playerid,"VeiculoQuebrado",false);
Sendo playerid, o jogador que estб dentro do veнculo quebrado .


Espero ter ajudado .
Reply
#3

da esse erro aqui "error 021: symbol already defined: "OnPlayerUpdate""
Reply
#4

Quote:
Originally Posted by Lucas_
Посмотреть сообщение
da esse erro aqui "error 021: symbol already defined: "OnPlayerUpdate""
Caso for usar o cуdigo do RJJJ, procure pela sua atual "OnPlayerUpdate" (Ctrl+F) e coloque-o dentro da mesma.

____________________________

Se preferir ficar com o cуdigo que vocк fez no comeзo do tуpico. Apenas o "arrumei":
Код:
public CheckCarHealth()
{
	new string[ 120 ];
	new Float:health;
			
	for (new i = 0; i < MAX_PLAYERS; i++ )
	{
		GetVehicleHealth( GetPlayerVehicleID( i ),health );
		if (IsPlayerConnected( i ) && IsPlayerInAnyVehicle( i ) &&
		GetPlayerState( i ) == PLAYER_STATE_DRIVER && health <= 400 &&
		GetPlayerState( i ) == PLAYER_STATE_DRIVER && GetPVarInt(i, "Quebrou") == 0 )
		{
			return TogglePlayerControllable( i, 0 ), SetPVarInt( i, "Quebrou",1 ),
			SendClientMessage( i, COLOR_RED, "Seu veiculo quebrou, tente ligar novamente ou ligue para um mecanico(/serviзo mecanico) ou (/sair para sair do veiculo)" );
		}
	}
	return 1;
}
Juntamente do comando "/sair" coloque:
Код:
SetPVarInt( i, "Quebrou",0 ),
Reply
#5

LuxurioN™ o seu quando ele quebra ele para certinho ... mais quando eu saio do carro e volto eu posso andar com ele normalmente! e tbm quando eu compilo da isso symbol is never used: "engineOn" mais o server ainda funfa!
Reply
#6

Quote:
Originally Posted by Lucas_
Посмотреть сообщение
LuxurioN™ o seu quando ele quebra ele para certinho ... mais quando eu saio do carro e volto eu posso andar com ele normalmente! e tbm quando eu compilo da isso symbol is never used: "engineOn" mais o server ainda funfa!
Eu removi o "engineOn" e mais algumas "coisas" do seu cуdigo para poder compilar aqui, e esqueci-me de colocб-las novamente. Apenas adicione:
Код:
public CheckCarHealth()
{
	new string[ 120 ],
	    Float:health,
	    sendername[MAX_PLAYER_NAME];
			
	for (new i = 0; i < MAX_PLAYERS; i++ )
	{
		GetVehicleHealth( GetPlayerVehicleID( i ),health );
		if (IsPlayerConnected( i ) && IsPlayerInAnyVehicle( i ) &&
		GetPlayerState( i ) == PLAYER_STATE_DRIVER && health <= 400 &&
		GetPlayerState( i ) == PLAYER_STATE_DRIVER && GetPVarInt(i, "Quebrou") == 0 )
		{
			TogglePlayerControllable( i, 0 );
			SetPVarInt( i, "Quebrou",1 );
			engineOn[playerid] = true;
			SendClientMessage( i, COLOR_RED, "Seu veiculo quebrou, tente ligar novamente ou ligue para um mecanico(/serviзo mecanico) ou (/sair para sair do veiculo)" );
			GetPlayerName(i, sendername, sizeof( sendername ));
			format(string, sizeof( string ), "* O veiculo de %s quebrou.", sendername);
			return ProxDetector(1.0, i, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
		}
	}
	return 1;
}
Reply
#7

agora deu certo... mais ainda continua aquele problema de quando quebra eu paro saio e se eu entrar denovo eu saio andando normalmente com o carro...
Reply
#8

Quote:
Originally Posted by Lucas_
Посмотреть сообщение
agora deu certo... mais ainda continua aquele problema de quando quebra eu paro saio e se eu entrar denovo eu saio andando normalmente com o carro...
Bom. Acreditei que vocк jб tinha esta funзгo pronta, jб que vocк nгo pediu. Darei-lhe um exemplo de como fazer:

Код:
public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
	new Float:vVida;
	GetVehicleHealth(vehicleid,vVida);
	if(vVida <= 400)
	return TogglePlayerControllable( playerid, 0 )

	return 1;
}
No caso acima, se a vida do veнculo estiver abaixo de 400 o mesmo irб paralisar o jogador, nгo permitindo que ele se locomova. Como eu disse, apenas um exemplo, basta que vocк organize-o de acordo com seu script.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)