PDA

Просмотр полной версии : [Вопрос] Авто починка



BaBuIIIkaDrifteR
24.02.2015, 07:30
Сделал авто починку автомобиля при врезании. Все работает и чинит когда врезаешься. Но если перевернуть автомобиль он загорится и взорвется! Почему он не чиниться?

public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
new Float:health;
GetVehicleHealth(GetPlayerVehicleID(playerid),health);
if(health > 250.0) SetVehicleHealth(vehicleid, 1000.0);
RepairVehicle(vehicleid);//äàííàÿ Ôóíêèÿ ÷èíèò àâòîìîáèëü
return 1;
}

[ForD]
24.02.2015, 14:24
Сделал авто починку автомобиля при врезании. Все работает и чинит когда врезаешься. Но если перевернуть автомобиль он загорится и взорвется! Почему он не чиниться?

public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
new Float:health;
GetVehicleHealth(GetPlayerVehicleID(playerid),health);
if(health > 250.0) SetVehicleHealth(vehicleid, 1000.0);
RepairVehicle(vehicleid);//äàííàÿ Ôóíêèÿ ÷èíèò àâòîìîáèëü
return 1;
}

Может функцию лучше тыкнуть в 1-секундный тамер? Там уж точно должно работать,наверное.

L0ndl3m
24.02.2015, 17:42
Данный паблик вызывается тогда, когда что-либо в транспорте разбивается, например помялась дверь, сломалась фара. Делайте в таймере восстановление.

BaBuIIIkaDrifteR
24.02.2015, 18:27
Данный паблик вызывается тогда, когда что-либо в транспорте разбивается, например помялась дверь, сломалась фара. Делайте в таймере восстановление.

Сделал в OnPlayerUpdate, теперь машина чиниться даже когда не врезаешься.

new Float:health;
GetVehicleHealth(GetPlayerVehicleID(playerid),health);
if(health > 250.0) SetVehicleHealth(GetPlayerVehicleID(playerid), 1000.0);
RepairVehicle(GetPlayerVehicleID(playerid));

L0ndl3m
24.02.2015, 18:41
Нужно проверять со старыми данными. Если текущее количество здоровья больше чем старое, то чините.

BaBuIIIkaDrifteR
24.02.2015, 19:11
Нужно проверять со старыми данными. Если текущее количество здоровья больше чем старое, то чините.

Это как О_о

Mazzilla
24.02.2015, 20:03
new Float: vehicle_health[MAX_VEHICLES]; // к глобальным

/* В таймер */
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
new Float: vehicle_health_now, vehicleid = GetPlayerVehicleID(playerid);
GetVehicleHealth(vehicleid, vehicle_health_now);
if(vehicle_health_now > vehicle_health[vehicleid])
{
SetVehicleHealth(vehicleid, 1000.0);
RepairVehicle(vehicleid);
}
GetVehicleHealth(vehicleid, vehicle_health[vehicleid]);
}

heralt
24.02.2015, 21:15
Сделал в OnPlayerUpdate, теперь машина чиниться даже когда не врезаешься.

new Float:health;
GetVehicleHealth(GetPlayerVehicleID(playerid),health)
RepairVehicle(GetPlayerVehicleID(playerid));
Хм? Что? if(health > 250.0) SetVehicleHealth(GetPlayerVehicleID(playerid), 1000.0);

Если значение health(1000), больше значение 250, то здровье машины изменяется на 1000. (health)
Ты просто сделал GM Car, а не авто починку.

BaBuIIIkaDrifteR
25.02.2015, 00:45
Хм? Что? if(health > 250.0) SetVehicleHealth(GetPlayerVehicleID(playerid), 1000.0);

Если значение health(1000), больше значение 250, то здровье машины изменяется на 1000. (health)
Ты просто сделал GM Car, а не авто починку.

Ну епта мне инодо и ГМ кар и автопочинку. LOoooooooooooOl

heralt
25.02.2015, 00:55
- - - Добавлено - - -


new Float:health;
GetVehicleHealth(GetPlayerVehicleID(playerid),health);
if(health < 999.0) SetVehicleHealth(GetPlayerVehicleID(playerid), 1000.0);
RepairVehicle(GetPlayerVehicleID(playerid));

Попробуй так, Бабушка Дрифтер :D

BaBuIIIkaDrifteR
25.02.2015, 01:18
- - - Добавлено - - -


new Float:health;
GetVehicleHealth(GetPlayerVehicleID(playerid),health);
if(health < 999.0) SetVehicleHealth(GetPlayerVehicleID(playerid), 1000.0);
RepairVehicle(GetPlayerVehicleID(playerid));

Попробуй так, Бабушка Дрифтер :D

Выш уже способ дали

BaBuIIIkaDrifteR
25.02.2015, 22:05
new Float: vehicle_health[MAX_VEHICLES]; // к глобальным

/* В таймер */
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
new Float: vehicle_health_now, vehicleid = GetPlayerVehicleID(playerid);
GetVehicleHealth(vehicleid, vehicle_health_now);
if(vehicle_health_now > vehicle_health[vehicleid])
{
SetVehicleHealth(vehicleid, 1000.0);
RepairVehicle(vehicleid);
}
GetVehicleHealth(vehicleid, vehicle_health[vehicleid]);
}

Не работает даже в односекундном паблике.
Вот смотри полный мой паблик.

public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
if(RepairCar[playerid] == 1)//Проверяем включена автопочинка или выключена
{
RepairVehicle(vehicleid);//данная Функия чинит автомобиль
if(Shini[playerid] == 0)//Проверяем спущенны шины или накачены.
{
new Panels,Doors,Lights,Tires;
GetVehicleDamageStatus(vehicleid,Panels,Doors,Lights,Tires);
UpdateVehicleDamageStatus(vehicleid,Panels,Doors,Lights,0101);
}
if(DriftPointsNow[playerid] > 0 && Player[playerid][pCrash] < 1)//Доп.возможности (AntiCraser)
{
GivePlayerMoneyED(playerid, 0);
Player[playerid][pDrift] += 0;
PlayerTextDrawShow(playerid, CrashA);//Выводим на экран надпись краш при ударе автомобиля
PlayerTextDrawSetString(playerid, drifting, " ");//Обновляем текст драв дрифт счечика на 0
DriftPointsNow[playerid] = 0;
TrueScore[playerid] = 0;
TrueX[playerid] = 1;
if(Player[playerid][pDriftX5] > 0) TrueX[playerid] = 5;//Доп.возможности (Множетель дрифта x5)
rtime[playerid] = -1;
}
}
return 1;
}
Это система связана и она одна

L0ndl3m
25.02.2015, 22:56
Код пользователя 'Mazzilla' полностью рабочий, у себя проблему ищите. Неверно создаёте таймер возможно.

heralt
25.02.2015, 23:25
Воспользуйся моим вариантом =)

BaBuIIIkaDrifteR
02.03.2015, 23:07
Код пользователя 'Mazzilla' полностью рабочий, у себя проблему ищите. Неверно создаёте таймер возможно.
Вы не поняли код работает но когда я начинаю набирать очки при дрифте этот же паблик вызывается каждую секунду и мне не дается возможность набрать очки они сбрасываются потому как автомобиль чиниться

L0ndl3m
02.03.2015, 23:14
Код на сброс дрифт-очков выложите.

BaBuIIIkaDrifteR
02.03.2015, 23:35
Код на сброс дрифт-очков выложите.


if(DriftPointsNow[playerid] > 0 && Player[playerid][pCrash] < 1)//Доп.возможности (AntiCraser)
{
GivePlayerMoneyED(playerid, 0);
Player[playerid][pDrift] += 0;
PlayerTextDrawShow(playerid, CrashA);//Выводим на экран надпись краш при ударе автомобиля
PlayerTextDrawSetString(playerid, drifting, " ");//Обновляем текст драв дрифт счечика на 0
DriftPointsNow[playerid] = 0;
TrueScore[playerid] = 0;
TrueX[playerid] = 1;
if(Player[playerid][pDriftX5] > 0) TrueX[playerid] = 5;//Доп.возможности (Множетель дрифта x5)
rtime[playerid] = -1;
}
Так же вот весь код авто починки и связанных функций

if(RepairCar[playerid] == 1)//Проверяем включена автопочинка или выключена
{
RepairVehicle(vehicleid);//данная Функия чинит автомобиль
if(Shini[playerid] == 0)//Проверяем спущенны шины или накачены.
{
new Panels,Doors,Lights,Tires;
GetVehicleDamageStatus(vehicleid,Panels,Doors,Lights,Tires);
UpdateVehicleDamageStatus(vehicleid,Panels,Doors,Lights,0101);
}
if(DriftPointsNow[playerid] > 0 && Player[playerid][pCrash] < 1)//Доп.возможности (AntiCraser)
{
GivePlayerMoneyED(playerid, 0);
Player[playerid][pDrift] += 0;
PlayerTextDrawShow(playerid, CrashA);//Выводим на экран надпись краш при ударе автомобиля
PlayerTextDrawSetString(playerid, drifting, " ");//Обновляем текст драв дрифт счечика на 0
DriftPointsNow[playerid] = 0;
TrueScore[playerid] = 0;
TrueX[playerid] = 1;
if(Player[playerid][pDriftX5] > 0) TrueX[playerid] = 5;//Доп.возможности (Множетель дрифта x5)
rtime[playerid] = -1;
}
}