• Всего новостей: 558
  • Комментарии: 123
  • Форум: 187
  • Пользователи: 2194
  • +0
Новые комментарии
olegzabyga14 комментирует:[14.05.2024]
[ZP] Extra Item: Frost Grenade For Zombie
121
rus416 комментирует:[06.11.2023]
Team Score/Счет команды
куку
frostaccaunt комментирует:[29.01.2023]
Left Health [Плагин для сервера]
спасибо за плагин
kingofpirates119977 комментирует:[27.12.2022]
RuneMod [Rus]
спасибо
ism95official комментирует:[07.12.2022]
Модель зомби Boss(Босса)
23234324234
aspirin01 комментирует:[23.10.2022]
[ZP] Extra Item: M79 [fix]
ЫЯсячс
wasemwahdan2002 комментирует:[11.03.2022]
[ZP] Classes: Zombie china
fcdhdchfn
goodstick787 комментирует:[18.01.2022]
CSO Weapon Admin
=0

Самые активные Юзеры
11 комментариев
Гл. Администратор
Yeah(Yeah)
8 комментариев
Проверенные
Ok(ok)
5 комментариев
Модераторы
Актуально на форуме

Добавляем W_ модель гранаты для zombie plague

Комментариев (0) Просмотры: 3816 (Lacosta) Скачиваний: 55


Quote
В этой статья я(*Lacosta) научу вас как добавить W_ модель гранаты для людей и зомби.


Итак приступим для начала нам нужно открыть исходник мода(zombie_plague40.sma) и добавить переменные всех гранат, делается это так:

Находим вот эту строчку(используйте для поиска Ctrl+F)

Code
// Customization vars


и сразу после

Code
model_grenade_flare[64],


допишем свои гранаты:

Code
model_w_grenade_flare[64],
model_w_grenade_frost[64],
model_w_grenade_fire[64],
model_w_grenade_infect[64],


Все теперь у нас есть переменные, которые ы будем подменять в функция, идем дальше..

Теперь нужно заставить чтобы эти модели закачивались на клиент, для этого добавим в plugin_precache()(прекиш) сразу после

Code
// Custom weapon models
  .............................................
  .....................................
  engfunc(EngFunc_PrecacheModel, model_vknife_admin_zombie)


допишем наши будущие модельки:

Code
engfunc(EngFunc_PrecacheModel, model_w_grenade_flare)
  engfunc(EngFunc_PrecacheModel, model_w_grenade_frost)
  engfunc(EngFunc_PrecacheModel, model_w_grenade_fire)
  engfunc(EngFunc_PrecacheModel, model_w_grenade_infect)


примерно вот так должно получиться:

Code
// Custom weapon models
  engfunc(EngFunc_PrecacheModel, model_vknife_human)
  engfunc(EngFunc_PrecacheModel, model_vknife_nemesis)
  engfunc(EngFunc_PrecacheModel, model_vweapon_survivor)
  engfunc(EngFunc_PrecacheModel, model_grenade_infect)
  engfunc(EngFunc_PrecacheModel, model_grenade_fire)
  engfunc(EngFunc_PrecacheModel, model_grenade_frost)
  engfunc(EngFunc_PrecacheModel, model_grenade_flare)
  engfunc(EngFunc_PrecacheModel, model_vknife_admin_human)
  engfunc(EngFunc_PrecacheModel, model_vknife_admin_zombie)
   
  engfunc(EngFunc_PrecacheModel, model_w_grenade_flare)
  engfunc(EngFunc_PrecacheModel, model_w_grenade_frost)
  engfunc(EngFunc_PrecacheModel, model_w_grenade_fire)
  engfunc(EngFunc_PrecacheModel, model_w_grenade_infect)


Сейчас будем присваивать моделькам имя, чтобы можно было в файле zombieplague.ini указывать путь до модельки. Для этого ищем

Quote
case SECTION_WEAPON_MODELS:


и сразу после

Quote
else if (equal(key, "V_KNIFE ADMIN ZOMBIE"))
copy(model_vknife_admin_zombie, charsmax(model_vknife_admin_zombie), value)


Допишем наши будущие модельки:

Code
else if (equal(key, "W_GRENADE_FLARE"))
  copy(model_w_grenade_flare, charsmax(model_w_grenade_flare), value)
  else if (equal(key, "W_GRENADE_FIRE"))
  copy(model_w_grenade_fire, charsmax(model_w_grenade_fire), value)
  else if (equal(key, "W_GRENADE_FROST"))
  copy(model_w_grenade_frost, charsmax(model_w_grenade_frost), value)
  else if (equal(key, "W_GRENADE_INFECT"))
  copy(model_w_grenade_infect, charsmax(model_w_grenade_infect), value)


После этого нужно добавить в zombieplague.ini следующие строчки:

Code
W_GRENADE INFECT = models/zombie_plague/grenade/w_biohazard_barrel.mdl
W_GRENADE FIRE = models/zombie_plague/grenade/w_cartfrag.mdl
W_GRENADE FROST = models/zombie_plague/grenade/w_heartbomb.mdl
W_GRENADE FLARE = models/zombie_plague/grenade/w_pumpkin.mdl


P.S - укажите свои адреса гранат в противном случае будут стандартные или краш сервера!


Ну и завершающий этап.

Теперь ищем следующий код:

Quote
// Forward Set Model
public fw_SetModel(entity, const model[])


И заменяем все встречающиеся

Quote
return;


на

Quote
return FMRES_IGNORED


И теперь в этом же коде к каждой гранате дописываем модель:

Для инфекционной грены, после
Quote
// Set grenade type on the thrown grenade entity
set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_INFECTION)


добавим
Quote
engfunc( EngFunc_SetModel, entity, model_w_grenade_infect)
return FMRES_SUPERCEDE


Получаем:

Quote
// Set grenade type on the thrown grenade entity
set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_INFECTION)
engfunc( EngFunc_SetModel, entity, model_w_grenade_infect)
return FMRES_SUPERCEDE


Замена для Огненной :

Quote
// Set grenade type on the thrown grenade entity
set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_NAPALM)


Добавим:
Quote
engfunc( EngFunc_SetModel, entity, model_w_grenade_fire)
return FMRES_SUPERCEDE


Получим:

Quote
// Set grenade type on the thrown grenade entity
set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_NAPALM)
engfunc( EngFunc_SetModel, entity, model_w_grenade_fire)
return FMRES_SUPERCEDE


Замена для Замораживающей:

Quote
// Set grenade type on the thrown grenade entity
set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_FROST)


Допишем:

Quote
engfunc( EngFunc_SetModel, entity, model_w_grenade_frost)
return FMRES_SUPERCEDE


Получим:

Quote
// Set grenade type on the thrown grenade entity
set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_FROST)
engfunc( EngFunc_SetModel, entity, model_w_grenade_frost)
return FMRES_SUPERCEDE


Замена для световой:

Quote
// Set grenade type on the thrown grenade entity
set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_FLARE)


Допишем:

Quote
engfunc( EngFunc_SetModel, entity, model_w_grenade_flare)
return FMRES_SUPERCEDE


Получим:

Quote
// Set grenade type on the thrown grenade entity
set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_FLARE)
engfunc( EngFunc_SetModel, entity, model_w_grenade_flare)
return FMRES_SUPERCEDE


И самый последний штрих, это попишем в самый конец кода public fw_SetModel(entity, const model[]) перед закрытием фигурной скобки

Quote
return FMRES_IGNORED


Готовый код public fw_SetModel(entity, const model[])(просто замените):

Code
// Forward Set Model
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_IGNORED
  }
  }
   
  // 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_grenade_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_grenade_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_grenade_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 flare color on the thrown grenade entity
  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_grenade_flare)
  return FMRES_SUPERCEDE
   

  }
  return FMRES_IGNORED  
}

Теги:

Скачивать могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
html-cсылка на публикацию
BB-cсылка на публикацию
Прямая ссылка на публикацию

ВАЖНО:
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Ответь на вопросик ;)
Что Нужно добавить на сайт?
Всего ответов: 193
Общайся вместе с нами!
Самые скачиваемые модели
Самые читаемые Новости
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Пользователи
Гости сайта
100%
Сейчас на сайте человек

Никого нету
Сегодня нас посетило
Копирование информации с портала без указания первоначального источника ЗАПРЕЩЕННО!
Бесплатный конструктор сайтов - uCoz | Все права защищены. | RIP сделан специально для CS-Bloody.3dn.Ru