Как сделать 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