[ajuda] Sistema de Vida de Carro!
#1

Estou com um sistema de Vida do Carro... Que quando ele estar quase quebrando apareзe uns avisos.. Sу que eu queria a ajuda de vocкs para fazer o Seguinte.. queria que desse sу 1 Aviso falando que o CArro esta quebrado.. e com o isso o Carro ficaria parado... e nгo funcionaria de forma alguma.
dai tinha que chamar o Mecanico.. Vou passar os Code para vocкs.

Код:
#include <a_samp>
#define EncodeDamage(%1,%2,%3,%4) %1 | (%2 << 1) | (%3 << 2) | (%4 << 3)
#define SLOTS 50

new
    bool:Danificado[2000],
    bool:NaoCarro[SLOTS],
    bool:Cinto[SLOTS],
    Float:xaa[SLOTS],
    Float:yaa[SLOTS],
    Float:zaa[SLOTS],
    Float:HealthV,
    damage[4]
;

public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
    GetVehicleHealth(vehicleid,HealthV);
    if(HealthV > 900) return false;
    if(Cinto[playerid] == false && NaoCarro[playerid] == false)
    {
        RemovePlayerFromVehicle(playerid);
        new Float:XD,Float:YD,Float:ZD,Float:ANGLED;
        GetPlayerPos(playerid,XD,YD,ZD);
        new Float:r;
        GetVehicleZAngle(GetPlayerVehicleID(playerid),r);
        XD += (10 * floatsin(-r, degrees));
        YD += (10 * floatcos(-r, degrees));
        GetPlayerFacingAngle(playerid,ANGLED);
        SetPlayerPos(playerid,XD,YD,ZD+2);
        SetPlayerHealth(playerid,HealthV/20);
        SendClientMessage(playerid,0xFFFFFFFF,"[INFO] Vocк esta sem cinto de seguranзa cuidado com acidentes");
        ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);
        ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);
        SetTimerEx("StopAnimes",8000,false,"i",playerid);
        SetTimerEx("CongelarPlayer",10000,false,"i",playerid);
        NaoCarro[playerid] = true;
    }
    if(HealthV < 500)
    {
        GetVehicleDamageStatus(vehicleid, damage[0], damage[1], damage[2], damage[3]);
        UpdateVehicleDamageStatus(vehicleid, damage[0], damage[1], damage[2], EncodeDamage(1, 1, 1, 1));
        SendClientMessage(playerid,0xFFFFFFFF,"[INFO] Seu Carro foi Danificado Chame um Mecanico antes que sejб tarde");
    }
    if(HealthV < 400)
    {
        new Float:XD,Float:YD,Float:ZD;
        GetPlayerPos(playerid,XD,YD,ZD);
        SetPlayerPos(playerid,XD+1,YD+1,ZD+1);
        SendClientMessage(playerid,0xFFFFFFFF,"[INFO] Seu Carro foi Danificado Chame um Mecanico imediatamente");
        Danificado[vehicleid] = true;
    }
    return true;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    if(Danificado[vehicleid] == true)
    {
        new Float:XD,Float:YD,Float:ZD;
        GetPlayerPos(playerid,XD,YD,ZD);
        SetPlayerPos(playerid,XD+1,YD+1,ZD+1);
        SendClientMessage(playerid,0xFFFFFFFF,"[INFO] Seu Carro foi Danificado Chame um Mecanico imediatamente");
        
    }
    return true;
}
Porfavor alguem me ajude ai! Darei reputaзгo!
Reply
#2

Nгo entendi o que vocк quer direito, pode explicar denovo?
Reply
#3

Seguinte.. Nesse Sistema.. ele funciona da seguinte forma.. qual o veiculo estar proximo a quebrar.. apareзe umas mensagens falando que й para chamar um Mecanico.. Sу que, se continuar batendo.. o Carro explodi.. Entгo o que eu quero й fazer com que o Carro nгo Exploda.. Quero que ele Fique QUEBRADO.. ou sejб.. nгo saia do lugar.. e nem exploda. Entendeu?
Reply
#4

Neste tуpico eu postei um sistema como o que vocк quer : https://sampforum.blast.hk/showthread.php?tid=305470



Espero ter ajudado .
Reply
#5

Tente fazer assim
PHP код:
#include <a_samp>
#define EncodeDamage(%1,%2,%3,%4) %1 | (%2 << 1) | (%3 << 2) | (%4 << 3)
#define SLOTS 50

new
    
bool:Danificado[2000],
    
bool:NaoCarro[SLOTS],
    
bool:Cinto[SLOTS],
    
Float:xaa[SLOTS],
    
Float:yaa[SLOTS],
    
Float:zaa[SLOTS],
    
Float:HealthV,
    
damage[4]
;

public 
OnVehicleDamageStatusUpdate(vehicleidplayerid)
{
    
GetVehicleHealth(vehicleid,HealthV);
    if(
HealthV 900) return false;
    if(
Cinto[playerid] == false && NaoCarro[playerid] == false)
    {
        
RemovePlayerFromVehicle(playerid);
        new 
Float:XD,Float:YD,Float:ZD,Float:ANGLED;
        
GetPlayerPos(playerid,XD,YD,ZD);
        new 
Float:r;
        
GetVehicleZAngle(GetPlayerVehicleID(playerid),r);
        
XD += (10 floatsin(-rdegrees));
        
YD += (10 floatcos(-rdegrees));
        
GetPlayerFacingAngle(playerid,ANGLED);
        
SetPlayerPos(playerid,XD,YD,ZD+2);
        
SetPlayerHealth(playerid,HealthV/20);
        
SendClientMessage(playerid,0xFFFFFFFF,"[INFO] Vocк esta sem cinto de seguranзa cuidado com acidentes");
        
ApplyAnimation(playerid"CRACK""crckdeth2"4.010000);
        
ApplyAnimation(playerid"CRACK""crckdeth2"4.010000);
        
SetTimerEx("StopAnimes",8000,false,"i",playerid);
        
SetTimerEx("CongelarPlayer",10000,false,"i",playerid);
        
NaoCarro[playerid] = true;
    }
    if(
HealthV 400)
    {
        new 
Float:XD,Float:YD,Float:ZD;
        
GetPlayerPos(playerid,XD,YD,ZD);
        
SetPlayerPos(playerid,XD+1,YD+1,ZD+1);
        
TogglePlayerControllable(playeridfalse);
        
SendClientMessage(playerid,0xFFFFFFFF,"[INFO] Seu Carro foi Danificado Chame um Mecanico imediatamente");
        
Danificado[vehicleid] = true;
    }
    return 
true;
}
public 
OnPlayerEnterVehicle(playeridvehicleidispassenger)
{
    if(
Danificado[vehicleid] == true)
    {
        new 
Float:XD,Float:YD,Float:ZD;
        
GetPlayerPos(playerid,XD,YD,ZD);
        
SetPlayerPos(playerid,XD+1,YD+1,ZD+1);
        
TogglePlayerControllable(playeridfalse);
        
SendClientMessage(playerid,0xFFFFFFFF,"[INFO] Seu Carro foi Danificado Chame um Mecanico imediatamente");
        
    }
    return 
true;

Me mande o comando de reparar o veнculo do mecanico.
Reply
#6

O rjjj, mais nesse seu tуpico.. o Carro fica quebrado?? Ele tipo fica Fumaзando e nгo sai do Canto?
Reply
#7

Comando do mecanico..

Код:
	if(strcmp(cmd, "/reparar", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
	    {
            if(!IsAMec(playerid))
		    {
		        SendClientMessage(playerid, COR_GREY, "   Vocк nгo й mecanico!");
		        return 1;
		    }
			tmp = strtok(cmdtext, idx);
			if(!strlen(tmp))
			{
				SendClientMessage(playerid, COR_GRAD2, "USE: /reparar [id] [preco]");
				return 1;
			}
			new playa;
			new money;
			playa = ReturnUser(tmp);
			tmp = strtok(cmdtext, idx);
			money = strval(tmp);
			if(money < 1 || money > 99999) { SendClientMessage(playerid, COR_GREY, "   Preco minimo 1, preco maximo 99999!"); return 1; }
			if(IsPlayerConnected(playa))
			{
			    if(playa != INVALID_PLAYER_ID)
			    {
			        if(ProxDetectorS(8.0, playerid, playa)&& IsPlayerInAnyVehicle(playa))
					{
					    if(playa == playerid) { SendClientMessage(playerid, COR_GREY, "  Nгo posso fazer isso!"); return 1; }
				    	GetPlayerName(playa, giveplayer, sizeof(giveplayer));
						GetPlayerName(playerid, sendername, sizeof(sendername));
					    format(string, sizeof(string), "* Vocк ofereceu ao(a) %s para concertar seu carro por R$%d .",giveplayer,money);
						SendClientMessage(playerid, COR_LIGHTBLUE, string);
						format(string, sizeof(string), "* Mecanico %s quer reparar seu carro por R$%d, (Digite /aceitar reparo) para aceitar.",sendername,money);
						SendClientMessage(playa, COR_LIGHTBLUE, string);
						RepairOffer[playa] = playerid;
						RepairPrice[playa] = money;
					}
					else
					{
					    SendClientMessage(playerid, COR_GREY, "   Este jogador nao esta perto de Vocк ou nao esta no carro.");
					}
				}
			}
			else
			{
			    SendClientMessage(playerid, COR_GREY, "   O Jogador esta offline.");
			}
		}
		return 1;
	}
Reply
#8

O meu cуdigo que te mandei funcionou?

Mande o /aceitar do seu GameMode
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)