[S]ilverbac[k] | Дата: Пятница, 11.07.2014, 16:39 | Сообщение # 1 |
.::Offline::.
Пахан
Сообщений: 723
[ 86 ]
Награды: 17
Статус
отсутствует
| В уроке используется колбэк OnPlayerWeaponShot, который был добавлен в версии 0.3z. С его помощью можно отслеживать выстрелы из оружия и узнавать точку попадания пули.
В этом уроке я расскажу, как осуществить с помощью этого колбэка нанесение урона пустому транспорту, как в одиночной игре(или в MTA).
Для начала создадим две машины функцией CreateVehicle
Код
CreateVehicle(482, 1777.6782, -1931.5736, 13.5594, 0.0000, 226, 226, 100); CreateVehicle(482, 1782.4801, -1931.5820, 13.5594, 0.0000, 194, 194, 100);
Теперь можно перейти, непосредственно, к OnPlayerWeaponShot. В чистом new.pwn вы не найдете данный колбэк, поэтому вам придется вписывать его самим.
Код
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ) { return 1; }
Параметры:
playerid - ID игрока, который наносит урон weaponid - ID оружия, которым был нанесен урон hittype - Тип цели, которой наносится урон hitid - ID цели, которой наносится урон Float:fX - Координата X, куда попадает пуля Float:fY - Координата Y, куда попадает пуля Float:fZ - Координата Z, куда попадает пуля
Сейчас мы используем параметры weaponid, hittype и hitid
Сделаем простую проверку на тип цели, которой мы нанесем урон
Код
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ) { if(hittype == BULLET_HIT_TYPE_VEHICLE)// BULLET_HIT_TYPE_VEHICLE - тип относится к транспорту { } return 1; }
Теперь нам нужно узнать текущий уровень здоровья транспорта. Его мы узнаем при помощи функции GetVehicleHealth. Создаем переменную с типом Float для записи в нее уровня здоровья транспорта.
Код
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ) { if(hittype == BULLET_HIT_TYPE_VEHICLE)// BULLET_HIT_TYPE_VEHICLE - тип относится к транспорту { new Float:vh; GetVehicleHealth(hitid,vh); } return 1; }
Далее, чтобы когда машина уже взорвана, а игрок продолжает в нее стрелять, чтобы здоровье не уходило в минус, делаем проверку на уровень здоровья транспорта и запрещаем дальнейшее его уменьшение.
Код
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ) { if(hittype == BULLET_HIT_TYPE_VEHICLE)// BULLET_HIT_TYPE_VEHICLE - тип относится к транспорту { new Float:vh; GetVehicleHealth(hitid,vh); if(GetVehicleHealth(hitid,vh) <= 0.0) return 0; } return 1; }
Теперь уже можно приступать к нанесению урона. Мы уже узнали текущий уровень здоровья транспорта, и, чтобы нанести урон, нам нужно его уменьшить
Код
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ) { if(hittype == BULLET_HIT_TYPE_VEHICLE)// BULLET_HIT_TYPE_VEHICLE - тип относится к транспорту { new Float:vh; GetVehicleHealth(hitid,vh); if(GetVehicleHealth(hitid,vh) <= 0.0) return 0; SetVehicleHealth(hitid,vh-100.0); } return 1; }
По-умолчанию, у каждого транспортного средства уровень здоровья равен 1000.0, и теперь, после 10-ти выстрелов в транспорт, он будет уничтожен. Но не случайно мы создали 2 машины, теперь при помощи параметра weaponid можно сделать определенный уровень наносимого урона для каждого оружия.
Код
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ) { if(hittype == BULLET_HIT_TYPE_VEHICLE) { new Float:vh; GetVehicleHealth(hitid,vh); if(GetVehicleHealth(hitid,vh) <= 0.0) return 0; if(weaponid == 25)//если стреляем с Shotgun { SetVehicleHealth(hitid,vh-100.0);//Сносим 100 ед. здоровья } else if(weaponid == 24)//если стреляем с Deagle { SetVehicleHealth(hitid,vh-20.0);//Сносим 20 ед. здоровья } } return 1; }
Результат:
[FS]Neon[APP]FCP[APP]Vehicle Tuning Generator ||||| 20% -- Работа приостановленаОбложка:
|
|
| |
AlexPPPP | Дата: Вторник, 15.07.2014, 16:43 | Сообщение # 2 |
.::Offline::.
Гангстер
Сообщений: 179
[ 21 ]
Награды: 19
Статус
отсутствует
| Заметно что урон не тот как в сингле
Релизы [GM] Far EastRolePlay[Repack LessGlobal] S.T.A.L.K.E.R New.pwn 45% ( мод заливать не буду )
|
|
| |
[S]ilverbac[k] | Дата: Вторник, 15.07.2014, 20:17 | Сообщение # 3 |
.::Offline::.
Пахан
Сообщений: 723
[ 86 ]
Награды: 17
Статус
отсутствует
| Ну у меня времени не было вскрывать файлы игры и искать значения урона там. Каждый, кто хочет, может подстроить эту систему под себя
[FS]Neon[APP]FCP[APP]Vehicle Tuning Generator ||||| 20% -- Работа приостановленаОбложка:
|
|
| |