Half-Life и Adrenaline Gamer форум

Всё об игре в Халф-Лайф и АГ
Текущее время: 28 мар 2024, 15:36

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: [TUT] Как создать свою пушку?
СообщениеДобавлено: 27 мар 2012, 18:04 
Не в сети
Аватара пользователя
Зарегистрирован:
06 июн 2010, 16:53
Последнее посещение:
26 мар 2024, 14:36
Сообщения: 1143
Откуда: Владивосток
[TUT] Как создать свою пушку?

Автор: GordonFreeman
Источник: http://serfreeman1337.narod.ru/weapon_mod.html

Создание своей пушки - очень легкое дело. Прежде всего нам стоит определиться что-за оружие у нас будет, подобрать модели и звуки. Хотя, все таки преждего всего нам надо почитать про Weapon Mod API. И так, давайте сделаем клон glock 18, но уже в стиле пистолет-пулемёта: 600 выстрелов в минуту. Как только определились, можно приступать к крафтингу плагина. Для начала подключим необходимый модуль:
Код:
#include <hl_wpnmod> // Weapon Mod
Теперь нам стоит определиться с ресурсами. У нас это будут стандартные звуки и модели от обычного глока. Для удобности напишем пару макросов:
Код:
#define MODEL_WORLD "models/w_9mmhandgun.mdl" // Модель в мире
#define MODEL_VIEW "models/v_9mmhandgun.mdl" // Модель в руках у игрока
#define MODEL_PLAYER "models/p_9mmhandgun.mdl" // Модель в руках модели игрока &)
#define MODEL_CLIP "models/w_9mmclip.mdl" // Магазин

#define SOUND_FIRE "weapons/pl_gun3.wav" // Звук выстрела
#define SOUND_RELOAD "weapons/reload1.wav" // Звук перезарядки
Как и все ресурсы, нам необходимо прекэшить их. Для этого в инклюде есть небольшые макросы для каждого случая:
Код:
#define PRECACHE_MODEL(%0) engfunc(EngFunc_PrecacheModel,%0)
#define PRECACHE_SOUND(%0) engfunc(EngFunc_PrecacheSound,%0)
#define PRECACHE_GENERIC(%0) engfunc(EngFunc_PrecacheGeneric,%0)
Прекэшим наши ресурсы:
Код:
public plugin_precache()
{
    PRECACHE_MODEL(MODEL_VIEW)
    PRECACHE_MODEL(MODEL_WORLD)
    PRECACHE_MODEL(MODEL_PLAYER)
    PRECACHE_MODEL(MODEL_CLIP)
   
    PRECACHE_SOUND(SOUND_FIRE)
    PRECACHE_SOUND(SOUND_RELOAD)
   
    PRECACHE_GENERIC("sprites/weapon_9mmsmg.txt")
}
Теперь нам необходимо зарегестрировать наше оружие в модуле, для этого используем натив wpn_mod_register_weapon. И так, давайте создадим несколько макросов с настройками оружия и зарегистрируем его.
Код:
// Параметры нашего оружия
#define WEAPON_NAME "weapon_9mmsmg" // Название оружия
#define WEAPON_SLOT 2 // Слот HUD'a, в котором будет отображаться наше оружие
#define WEAPON_POSITION 4    // Позиция в слоте
#define WEAPON_PRIMARY_AMMO "9mm" // Название припасов оружия, в нашем случаем - 9mm
#define WEAPON_PRIMARY_AMMO_MAX 250 // Максимальное кол-во боеприпасов
#define WEAPON_SECONDARY_AMMO "" // Вторичные боеприпасы - их нету
#define WEAPON_SECONDARY_AMMO_MAX -1 // нету
#define WEAPON_MAX_CLIP 30 // Максимальное кол-во патронов в магазине
#define WEAPON_DEFAULT_AMMO 100 // Начальное кол-во боеприпасов
#define WEAPON_FLAGS 0 // Флаги оружия
#define WEAPON_WEIGHT 12 // "Вес" оружия, при выборе его autoweaponswitching
#define WEAPON_DAMAGE 14.0 // Урон оружия

// Создадим отдельные боеприпасы со 100 патронами
#define AMMOBOX_CLASSNAME "ammo_9mmsmg"

public plugin_init()
{
        new smg = wpnmod_register_weapon
        (
                WEAPON_NAME,
                WEAPON_SLOT,
                WEAPON_POSITION,
                WEAPON_PRIMARY_AMMO,
                WEAPON_PRIMARY_AMMO_MAX,
                WEAPON_SECONDARY_AMMO,
                WEAPON_SECONDARY_AMMO_MAX,
                WEAPON_MAX_CLIP,
                WEAPON_FLAGS,
                WEAPON_WEIGHT
    )
    // Регистрируем наше оружие, устанавливаем его параметры из дефайнов
}
Мы его зарегистрировали, в smg находится ID нашего оружия. Что с ним делать? С помошью этого ID мы можем регистрировать различные хуки нашего оружия, для этого используем натив wpnmod_register_weapon_forward и следующие типы хуков:
Код:
Fwd_Wpn_Spawn - Вызывается при создании/спавне энтити оружия.
Fwd_Wpn_Deploy - Вызывается при активировании игроком оружия.
Fwd_Wpn_Idle - Период бездействия оружия, IDLE.
Fwd_Wpn_PrimaryAttack - Вызвается, когда владелец оружия нажал левую клавишу мыши. Главная атака.
Fwd_Wpn_Reload - Перезарядка оружия.
Fwd_Wpn_Holster - Вызывается при убирании оружия в "кобуру".

Регистрируем хуки:
Код:
wpnmod_register_weapon_forward(smg,Fwd_Wpn_Spawn,"fw_SmgSpawn")
wpnmod_register_weapon_forward(smg,Fwd_Wpn_Deploy,"fw_SmgDeploy")
wpnmod_register_weapon_forward(smg,Fwd_Wpn_Holster,"fw_SmgHolster")
wpnmod_register_weapon_forward(smg,Fwd_Wpn_Idle,"fw_SmgIdle")
wpnmod_register_weapon_forward(smg,Fwd_Wpn_PrimaryAttack,"fw_SmgPrimaryAttack")
wpnmod_register_weapon_forward(smg,Fwd_Wpn_Reload,"fw_SmgReload")
Жизнь вашего оружия начинается с его появления на карте, модуль спавнит энтитю, которой нужно вручную установить требуемые параметры. Пишем небольшую функцию на установку оружию мировой модели и начального боезапаса.
Код:
public fw_SmgSpawn(const ent)
{
    SET_MODEL(ent,MODEL_WORLD)
    wpnmod_set_offset_int(ent, Offset_iDefaultAmmo, WEAPON_DEFAULT_AMMO)
}
Для установки начального количества боеприпасов мы использовали натив wpnmod_set_offset_int, который служит для безопасной модификации памяти по смещению.


Продолжение следует...

ЗЫ
Скоро. :crazy:

_________________
Изображение
Vi Veri Veniversum Vivus Vici


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: [TUT] Как создать свою пушку?
СообщениеДобавлено: 06 май 2012, 04:19 
Не в сети
Аватара пользователя
Зарегистрирован:
28 мар 2011, 00:56
Последнее посещение:
04 сен 2019, 02:15
Сообщения: 77
И где же продолжение?)) Интересно ведь!

_________________
Изображение


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: [TUT] Как создать свою пушку?
СообщениеДобавлено: 06 май 2012, 06:54 
Не в сети
Аватара пользователя
Зарегистрирован:
06 июн 2010, 16:53
Последнее посещение:
26 мар 2024, 14:36
Сообщения: 1143
Откуда: Владивосток
Demasturbot
Скоро допишем :)

_________________
Изображение
Vi Veri Veniversum Vivus Vici


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: [TUT] Как создать свою пушку?
СообщениеДобавлено: 12 апр 2015, 02:06 
Не в сети
Зарегистрирован:
25 июл 2013, 00:16
Последнее посещение:
31 янв 2019, 22:26
Сообщения: 361
KORD_12.7 писал(а):
Demasturbot
Скоро допишем :)

Когда продолжение?


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: [TUT] Как создать свою пушку?
СообщениеДобавлено: 10 ноя 2020, 16:38 
Не в сети
Аватара пользователя
Зарегистрирован:
27 дек 2019, 17:59
Последнее посещение:
26 мар 2024, 13:29
Сообщения: 273
Откуда: Иркутск
KORD_12.7 писал(а):
Demasturbot
Скоро допишем :)
Когды продолжение?

_________________
ВК: https://vk.com/pristavka2013
GitHub: https://github.com/mrglaster
Почта: [email protected]

Есть объективная реальность, а есть печенье.


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: [TUT] Как создать свою пушку?
СообщениеДобавлено: 30 ноя 2020, 19:30 
Не в сети
Аватара пользователя
Зарегистрирован:
06 июн 2010, 16:53
Последнее посещение:
26 мар 2024, 14:36
Сообщения: 1143
Откуда: Владивосток
Glaster писал(а):
KORD_12.7 писал(а):
Demasturbot
Скоро допишем :)
Когды продолжение?
А оно ещё кому-то надо? хД
На самом деле всё просто: качаешь все плаги с пушками и изучаещь код, потом пишешь свою пушку :roll:

_________________
Изображение
Vi Veri Veniversum Vivus Vici


Вернуться к началу
 Профиль 
  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB