Главная » Статьи » Zombie Plague |
Добавляем W_ модель в zombie_plague40.sma
Quote Опишу подробно как добавить в исходный плагин зомби мода модель W( на земле) от гранат: заражения, огненной, заморозки и световой Для начала нам нужен сам мод, качаем тут Чтобы не забыть сразу допишем в zombieplague.ini пути до модель Code // W Model GRENADE_W_FIRE = models/w_hegrenage.mdl GRENADE_W_INFECT = models/w_zombibomb.mdl GRENADE_W_FROST = models/w_heartbomb.mdl GRENADE_W_FLAFE = models/w_pupkigrenade.mdl Открываем, далее будем пользоваться поисковиком(обычно я использую CTRL+F) И в Code // Customization vars Допишем наши будущие модельки на которые будем ссылаться: Code model_w_renade_flare[64], model_w_renade_fire[64], model_w_renade_infect[64], model_w_renade_frost[64], Где: Quote model_w_renade_flare[64] - название для световой model_w_renade_fire[64] - название для огненной model_w_renade_infect[64] - название для инфекционной model_w_renade_frost[64] - название для заморозки Далее ищем прекишь с моделями Code // Custom weapon models и после Code engfunc(EngFunc_PrecacheModel, model_grenade_fire) Допишем наши модельки грен: Code engfunc(EngFunc_PrecacheModel, model_w_renade_flare) engfunc(EngFunc_PrecacheModel, model_w_renade_fire) engfunc(EngFunc_PrecacheModel, model_w_renade_infect) engfunc(EngFunc_PrecacheModel, model_w_renade_frost) Теперь заменим функцию: public fw_SetModel(entity, const model[]) { .... ... .. } на написанною мною: Code public fw_SetModel(entity, const model[]) { // We don't care if (strlen(model) < 8) return FMRES_IGNORED; // Remove weapons? if (get_pcvar_float(cvar_removedropped) > 0.0) { // Get entity's classname static classname[10] pev(entity, pev_classname, classname, charsmax(classname)) // Check if it's a weapon box if (equal(classname, "weaponbox")) { // They get automatically removed when thinking set_pev(entity, pev_nextthink, get_gametime() + get_pcvar_float(cvar_removedropped)) return FMRES_SUPERCEDE } } // Narrow down our matches a bit if (model[7] != 'w' || model[8] != '_') return FMRES_IGNORED; // Get damage time of grenade static Float:dmgtime pev(entity, pev_dmgtime, dmgtime) // Grenade not yet thrown if (dmgtime == 0.0) return FMRES_IGNORED; // Get whether grenade's owner is a zombie if (g_zombie[pev(entity, pev_owner)]) { if (model[9] == 'h' && model[10] == 'e' && get_pcvar_num(cvar_extrainfbomb)) // Infection Bomb { // Give it a glow fm_set_rendering(entity, kRenderFxGlowShell, 0, 200, 0, kRenderNormal, 16); // And a colored trail message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_BEAMFOLLOW) // TE id write_short(entity) // entity write_short(g_trailSpr) // sprite write_byte(10) // life write_byte(10) // width write_byte(0) // r write_byte(200) // g write_byte(0) // b write_byte(200) // brightness message_end() // Set grenade type on the thrown grenade entity set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_INFECTION) engfunc(EngFunc_SetModel, entity, model_w_renade_infect) return FMRES_SUPERCEDE } } else if (model[9] == 'h' && model[10] == 'e' && get_pcvar_num(cvar_firegrenades)) // Napalm Grenade { // Give it a glow fm_set_rendering(entity, kRenderFxGlowShell, 200, 0, 0, kRenderNormal, 16); // And a colored trail message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_BEAMFOLLOW) // TE id write_short(entity) // entity write_short(g_trailSpr) // sprite write_byte(10) // life write_byte(10) // width write_byte(200) // r write_byte(0) // g write_byte(0) // b write_byte(200) // brightness message_end() // Set grenade type on the thrown grenade entity set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_NAPALM) engfunc(EngFunc_SetModel, entity, model_w_renade_fire) return FMRES_SUPERCEDE } else if (model[9] == 'f' && model[10] == 'l' && get_pcvar_num(cvar_frostgrenades)) // Frost Grenade { // Give it a glow fm_set_rendering(entity, kRenderFxGlowShell, 0, 100, 200, kRenderNormal, 16); // And a colored trail message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_BEAMFOLLOW) // TE id write_short(entity) // entity write_short(g_trailSpr) // sprite write_byte(10) // life write_byte(10) // width write_byte(0) // r write_byte(100) // g write_byte(200) // b write_byte(200) // brightness message_end() // Set grenade type on the thrown grenade entity set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_FROST) engfunc(EngFunc_SetModel, entity, model_w_renade_frost) return FMRES_SUPERCEDE } else if (model[9] == 's' && model[10] == 'm' && get_pcvar_num(cvar_flaregrenades)) // Flare { // Build flare's color static rgb[3] switch (get_pcvar_num(cvar_flarecolor)) { case 0: // white { rgb[0] = 255 // r rgb[1] = 255 // g rgb[2] = 255 // b } case 1: // red { rgb[0] = random_num(50,255) // r rgb[1] = 0 // g rgb[2] = 0 // b } case 2: // green { rgb[0] = 0 // r rgb[1] = random_num(50,255) // g rgb[2] = 0 // b } case 3: // blue { rgb[0] = 0 // r rgb[1] = 0 // g rgb[2] = random_num(50,255) // b } case 4: // random (all colors) { rgb[0] = random_num(50,200) // r rgb[1] = random_num(50,200) // g rgb[2] = random_num(50,200) // b } case 5: // random (r,g,b) { switch (random_num(1, 3)) { case 1: // red { rgb[0] = random_num(50,255) // r rgb[1] = 0 // g rgb[2] = 0 // b } case 2: // green { rgb[0] = 0 // r rgb[1] = random_num(50,255) // g rgb[2] = 0 // b } case 3: // blue { rgb[0] = 0 // r rgb[1] = 0 // g rgb[2] = random_num(50,255) // b } } } } // Give it a glow fm_set_rendering(entity, kRenderFxGlowShell, rgb[0], rgb[1], rgb[2], kRenderNormal, 16); // And a colored trail message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_BEAMFOLLOW) // TE id write_short(entity) // entity write_short(g_trailSpr) // sprite write_byte(10) // life write_byte(10) // width write_byte(rgb[0]) // r write_byte(rgb[1]) // g write_byte(rgb[2]) // b write_byte(200) // brightness message_end() set_pev(entity, PEV_FLARE_COLOR, rgb) // Set grenade type on the thrown grenade entity set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_FLARE) engfunc(EngFunc_SetModel, entity, model_w_renade_flare) return FMRES_SUPERCEDE // Set flare color on the thrown grenade entity } return FMRES_IGNORED } Теперь допишем пути которые указали выше в zombieplague.ini, найдем Code case SECTION_WEAPON_MODELS: и сразу после Code else if (equal(key, "V_KNIFE ADMIN ZOMBIE")) copy(model_vknife_admin_zombie, charsmax(model_vknife_admin_zombie), value) пишем наши: Code else if (equal(key, "GRENADE_W_FIRE")) copy(model_w_renade_fire, charsmax(model_w_renade_fire), value) else if (equal(key, "GRENADE_W_INFECT")) copy(model_w_renade_infect, charsmax(model_w_renade_infect), value) else if (equal(key, "GRENADE_W_FROST")) copy(model_w_renade_frost, charsmax(model_w_renade_frost), value) else if (equal(key, "GRENADE_W_FLAFE")) copy(model_w_renade_flare, charsmax(model_w_renade_flare), value) На этом все, есть вопросы пишем ниже в комментариях или на форуме в разделе помощь Статью подготовил: Lacosta Источник: zombie-online.3dn.ru Источник: http://zombie-online.3dn.ru | |
Просмотров: 1855 | Комментарии: 5 | Рейтинг: 0.0/0 |
Всего комментариев: 5 | |
| |