[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

Hello, Our administration publishes only cannon content, put like under the post below and write the top comment, we are preparing the material just for you, Darling Гость.

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

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

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

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

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

              во всяком случае, даже если и будут проблемы с памятью, то только с выделением памяти и ее переполнением, но это решаемо твиком -heapsize
              • 10 June 2019 09:24
  4. JustProOnline
    Человек использующий CurWeapon для смены модели - даун
    • 9 June 2019 20:51
  5. IonGames271
    083-smart статься хорошая, а вот я гей.
    • 10 June 2019 00:40
  6. Ragamafona
    DeMNiX,
    это не баг компиляции был, а тогда так была строена библиотека
    • 10 June 2019 14:41
Users belonging to group Guests cannot add comments to this article.
Base for Your Build
Information

Welcome to TB-TEAM.COM!

To become a full-fledged user of our portal, you need to register.
Register
Create your own account!

Register Now
Log In
Already registered? Go ahead and log in!

Log In