Как вычеслить урон автомобиля при ударе?
#1

Как вычеслить урон автомобиля при ударе?

Суть в том что я хочу сделать античит на починку авто с помошью функции
PHP код:
OnVehicleDamageStatusUpdate 
но не знаю как вычеслить там урон и вычесть этот урон из переменной хп автомобиля.
Reply
#2

OnVehicleDamageStatusUpdate не очень хорошо подойдёт для этой цели, тк. если к примеру я снёс себе бампер и врежусь этим же местом снова, калбэк вызван не будет.
Reply
#3

Но при ударе вычетается урон авто так?И этот урон в этом паблике вычеслить не как?
Reply
#4

Делай при помощи таймера, через секунду после вызова OnVehicleDamageStatusUpdate
Reply
#5

OnVehicleDamageStatusUpdate срабатывает только при визуальных изменениях здоровья, если просто изменить здоровье транспорта - не сработает.
Reply
#6

Quote:
Originally Posted by Ru-user
Посмотреть сообщение
Делай при помощи таймера, через секунду после вызова OnVehicleDamageStatusUpdate
Пробывал чтот не то.
Reply
#7

Quote:
Originally Posted by ZiGGi
Посмотреть сообщение
OnVehicleDamageStatusUpdate срабатывает только при визуальных изменениях здоровья, если просто изменить здоровье транспорта - не сработает.
Против читеров хочу использовать.Значит.

Мне в переменную надо записывать урон авто чтоб с этой переменной сравнивать реальное и читерское хп авто!
Reply
#8

В OnPlayerUpdate или в таймере проверяй, если вдруг тачка похилилась, но не с помощью P'n'S (OnVehicleSpray походу) или SetPlayerHealth (тебе нужно будет заменить её на что-то что запоминает её использование), бань.
Reply
#9

pawn Код:
new Float:VehicleHealth[MAX_VEHICLES] = 1000.0;
public OnGameModeInit()
{
      SetTimer("OnVehicleUpdateHealth",500,1);
}
forward OnVehicleUpdateHealth();public OnVehicleUpdateHealth()
{
       new Float:VHealth;
       for(new v = 1; v < MAX_VEHICLES; v++)
       {
              if(!GetVehicleModel(v))continue;
              GetVehicleHealth(v,VHealth);
              if(floatround(VHealth) != floatround(VehicleHealth[v]))
              {
                    CallLocalFunction("VehicleUpdateHealth","iff",v,VHealth,VehicleHealth[v]);
                    VehicleHealth[v] = VHealth;
              }
       }
}
forward VehicleUpdateHealth(vehicleid,Float:newhealth,Float:oldhealth);
public VehicleUpdateHealth(vehicleid,Float:newhealth,Float:oldhealth)
{
       printf("Машина(ID):%d | Новое хп:%.2f | Старое хп:%.2f",vehicleid,newhealth,oldhealth);
       return 1;
}
Reply
#10

Правильней было-бы поменять названия OnVehicleUpdateHealth и VehicleUpdateHealth местами, а так впринципе должно работать.

Ещё можешь сделать чтото типо такого:
pawn Код:
new bool:HealthChanged[MAX_VEHICLES];
_SetVehicleHealth(vehicleid, Float:health)
{
     SetVehicleHealth(vehicleid, health);
     HealthChanged[vehicleid] = true;
}
#define SetVehicleHealth _SetVehicleHealth
Таким образом можешь проверять было ли хп изменено функцией. Также с OnVehicleRespawn OnVehicleSpray и тд.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)