[ZP] Как сделать модель рук зомби с гранатой через мод?
Как сделать модель рук зомби с гранатой через мод?

Привет ребят, решился я Ragamafona написать статью о том как сделать v_ модель гранаты для каждого зомби через мод.
Перед началом хочу предупредить, урок(статья) относиться для тех кто хотя бы понимает малость базовых значений редактирования исходного кода.
Урок не подходит для ньюбаев в ознакомительных целях, но я всё же попытался расписать всё максимально просто

1.Регистрируем переменные:
new Array:g_zclass_clawbombmodel;
new Array:g_zclass2_clawbombmodel;

2.Находим public plugin_precache() затем туда вставляем:
g_zclass_clawbombmodel = ArrayCreate(32, 1);
g_zclass2_clawbombmodel = ArrayCreate(32, 1);

3.Ищем строки:
// Add clawmodel
ArrayGetString(g_zclass_clawmodel, i, buffer, charsmax(buffer))
format(buffer, charsmax(buffer), "^nCLAWMODEL = %s", buffer)
fputs(file, buffer)

Ниже добавляем:
// Add clawbombmodel
ArrayGetString(g_zclass_clawbombmodel, i, buffer, charsmax(buffer))
format(buffer, charsmax(buffer), "^nCLAWBOMBMODEL = %s", buffer)
fputs(file, buffer);

4.Ищем строку - replace_weapon_models(id, weaponid)

Далее в case: CSW_SMOKEGRENADE, case CSW_FLASHBANG, case CSW_HEGRENADE

Добавляем код:
if( g_zombie[ id ] )
{
static szBuffer[ 128 ];
ArrayGetString( g_zclass_clawbombmodel, g_zombieclass[ id ], szBuffer, charsmax( szBuffer ) );
format( szBuffer, charsmax( szBuffer ), "models/zombie_plague/%s", szBuffer
);
set_pev( id, pev_viewmodel2, szBuffer );
}
else

5.Теперь к else из п.4 допишем в каждый кейс, в моем случаи CSW_SMOKEGRENADE:
set_pev(id, pev_viewmodel2, model_grenade_flare);

6.Ищем строку:
public native_register_zombie_class(const name[], const info[], const model[], const clawmodel[], hp, speed, Float:gravity, Float:knockback)
Добавляем один параметр:
public native_register_zombie_class(const name[], const info[], const model[], const clawmodel[], const clawbombmodel[], hp, speed, Float:gravity, Float:knockback)

7.В этом же паблике конвертируем 5-ый параметр в буфер:
param_convert(1);
param_convert(2);
param_convert(3);
param_convert(4);
param_convert(5);

8.В этом же паблике после:
ArrayPushString(g_zclass_clawmodel, clawmodel);

Добавляем:
ArrayPushString(g_zclass_clawbombmodel, clawbombmodel);

9.В этом же паблике ищем строки:
// Replace clawmodel
ArrayGetString(g_zclass2_clawmodel, i, buffer, charsmax(buffer));
ArraySetString(g_zclass_clawmodel, g_zclass_i, buffer);
// Precache clawmodel
formatex(prec_mdl, charsmax(prec_mdl), "models/zombie_plague/%s", buffer)
engfunc(EngFunc_PrecacheModel, prec_mdl);

Добавляем:
// Replace clawbombmodel
ArrayGetString(g_zclass2_clawbombmodel, i, buffer, charsmax(buffer));
ArraySetString(g_zclass_clawbombmodel, g_zclass_i, buffer);
// Precache clawbombmodel
formatex(prec_mdl, charsmax(prec_mdl), "models/zombie_plague/%s", buffer)
engfunc(EngFunc_PrecacheModel, prec_mdl);

10.В этом же паблике после:
// Precache default clawmodel
formatex(prec_mdl, charsmax(prec_mdl), "models/zombie_plague/%s", clawmodel);
engfunc(EngFunc_PrecacheModel, prec_mdl);

Добавляем:
// Precache default clawbombmodel
formatex(prec_mdl, charsmax(prec_mdl), "models/zombie_plague/%s", clawbombmodel);
engfunc(EngFunc_PrecacheModel, prec_mdl);

11.Ищем строки в моде:
else if (equal(key, "CLAWMODEL"))
ArrayPushString(g_zclass2_clawmodel, value);

Добавляем ниже:
else if (equal(key, "CLAWMODEL"))
ArrayPushString(g_zclass2_clawmodel, value);
else if (equal(key, "CLAWBOMBMODEL"))
ArrayPushString(g_zclass2_clawbombmodel, value);

12.Ищем строки в моде:
// Free arrays containing class/item overrides

Добавляем ниже:
// Free arrays containing class/item overrides
ArrayDestroy(g_zclass2_clawbombmodel);

Автор урока(статьи): Nikolay Gaus (Ragamafona)
Специально для: vk.com/ragashop

Привет, наша адмнистрация публикует только пушечный контент, поставь лайк под постом ниже и напишите самый топовый комментарий, мы готовим материал только для тебя, любимый Гость.

Комментариев 16
  1. Phanautoy
    Че то как то антрил сложно, в 7 пункте о чем вообще идет речь?
    • 9 июня 2019 19:43
    1. Ragamafona
      Конверт параметров, в нативе передаётся по дефолту 4 строковых значения, тобиж:

      param_convert(1);
      param_convert(2);
      param_convert(3);
      param_convert(4);
      Стоят уже по стандарту, ниже просто добавляем ещё один
      param_convert(5);
      Так как 5 параметр это у нас строка с clawbombmodel

      Попрошу прочитать текст в начале статьи.
      • 9 июня 2019 19:47
  2. Barboss
    Barboss
    • +2
    Ты же в приоритете держал ориентир на JB, че это ты решил сделать статью по ZP?
    Администрация проплатила?
    • 9 июня 2019 19:53
    1. Ragamafona
      Держал, пока он мне не надоел. Я решил сделать зомби сервер, обратился к поисковику чтобы скачать зомби классов и вот у большей части везде стоит или КарВейпон/ХамДеплой для отлова взятия гранаты, у меня 8 классов, значит мне юзать 8 хуков? Посмотрел сборки и других скриптеров везде делается так, решил дать юзверям возможность сделать более оптимальный ход в создании своего сервера.
      • 9 июня 2019 20:01
  3. Rerran
    Rerran
    • 0
    Какова вероятность того, что после всех извращений с модом - я говорю, про данную модификации, мой сервер не станет лагать, а в худшем случаи начнет падать с Segmentation fault?
    • 9 июня 2019 20:09
    1. Ragamafona
      Прошу писать без загадок, и ответить сразу же на 2 вопроса

      1. Из-за чего лаги? Если это наоборот сокращение кода в других плагинов обходясь лишь одним вызовом функции.
      2. Из-за чего тут должны быть проблемы с сегментацией, возможно я что-то упустил?
      • 9 июня 2019 20:15
      1. Rerran
        Rerran
        • 0
        Вы не совсем поняли меня.

        Я просто ньюб, как вы подмечали в начале статьи. Боюсь сильно модифицировать мод, так вот, если я добавлю все по вашей статье, моя сборка будет работать стабильно?
        • 9 июня 2019 20:23
        1. Ragamafona
          1. Нет, лагать не будет. Хотя данный метод можно ещё доработать.
          2. Нет, ошибка сегментации из-за этого не должна возникать. Даже если взять за тот случай что в паблике с заменой модели стоит static переменная, она справляется без ошибок.
          • 9 июня 2019 20:30
        2. DeMNiX
          DeMNiX
          • +1
          Обычно с данной ошибкой сервер падает в случае если:
          1) Была работа с оффсетами, т.е. get/set_pdata_int/float/cbase или же используется неинициализированный оффсет
          2) Был совершен некорректный переход с одной версии amx modx на более старшую(или в обратном порядке), либо используется плагин не подходящий по версиям плагин-сервер
          3) Используются meta/amxmodx модули не соответствующие требованиям, либо модули альфа/бета версий
          4) Используется модель с порченной информацией(ака Кроковский шифратор или же простое HEX-редактирование ) (Крайне редкий случай)
           
          тот самый бальбур, да-да
          • 9 июня 2019 21:57
          1. Ragamafona
            При работе с павном в сфере SAMP я ловил трабл сегментации из-за static переменных. Поэтому не думаю что в кс такое не возможно.
            • 10 июня 2019 00:12
            1. DeMNiX
              DeMNiX
              • +1
              ну это уже какой-то баг компиляции скорее всего, либо проблема очистки данных, когда ссылается на адрес, а там мусор

              во всяком случае, даже если и будут проблемы с памятью, то только с выделением памяти и ее переполнением, но это решаемо твиком -heapsize
              тот самый бальбур, да-да
              • 10 июня 2019 09:24
  4. JustProOnline
    Человек использующий CurWeapon для смены модели - даун
    • 9 июня 2019 20:51
  5. IonGames271
    083-smart статься хорошая, а вот я гей.
    • 10 июня 2019 00:40
  6. Ragamafona
    DeMNiX,
    это не баг компиляции был, а тогда так была строена библиотека
    • 10 июня 2019 14:41
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.


Сайт был обновлен, нажми CTRL+F5
Основа для вашей сборки
ReHLDS 3.7.0.698

ReHLDS (Reverse-engineered) - это новый шаг вперед, который дает второе дыхание нашим серверам. ReHLDS работает в 2 раза быстрей, чем HLDS.

AmxModx 5.2.7.1

AMXModX - это Metamod дополнение, которое позволяет создавать новые модификации для Half-Life на языке Pawn

Reunion 0.1.92

Reunion является продолжением Dproto для ReHLDS. Это metamod плагин, который позволяет заходить 47/48 Non-Steam на сервер.

Revoice 0.1.0.34

Revoice - это Metamod plugin, который дает возможность общения голосовым чатом между non-steam и steam клиентами.

Metamod-r 1.3.128

Новый Metamod-r содержит огромное количество оптимизаций производительности и намного более чистый код. Ядро было написано с использованием JIT-компилятора.

Ultimate Unprecacher 1.1

Ultimate Unprecacher являет плагином для MetaMod, работает он по принципу отключение не нужных ресурсов на вашем сервере, тем самым вы сможете освободить места для ресурсов под ваши плагины, с помощью данного модуля можно избавиться от ошибки 512!

ReAuthCheck 0.1.6

ReAuthCheck - это Metamod плагин, который занимается проверкой ваших игроков на валидность, с помощью данного модуля для REHLDS вы сможете защитить свой сервер от ботов, которые постоянно спамят рекламу или просто забивают слот на сервере!

NetBufExtender (NBEX) 1.0

NetBufExtender или NBEX - это метамод-плагин, который расширяет "интернет-буфер": буферы сервера и клиента(гарантия не 100%). Расширяет до 64 кб. Это значит, что у игроков уменьшается вероятность быть кикнутыми с ошибкой "Reliable channel overflowed".

UserInfoNetOptimizer (UINO) 1.0

UINO — metamod-плагин, который позволяет удалять ненужные поля из userinfo(setinfo) когда движок передаёт его другим игрокам на сервере. Данная мера уменьшает объём передаваемых данных и немного сокращает шанс быть кикнутым с "Reliable channel overflowed".

Информация

Добро пожаловать на WIZARD-CS.RU!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт