Главная » Статьи » 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
Категория: Zombie Plague | Добавил: Lacosta (19.03.2012) | Автор: Lacosta
Просмотров: 1855 | Комментарии: 5 | Рейтинг: 0.0/0
Всего комментариев: 5
№5 Написал: Creazy_kolobok 03.12.2014 20:06
Почему не grenade, а renade?
№4 Написал: Lacosta 20.03.2012 16:19
Я помогаю только на форуме пиши в разделе помощь =)
Рад Что статья была полезной, про "Спасибо" не забываем biggrin
№3 Написал: stimorol 20.03.2012 15:46
разобрался спустя пару часов))
№2 Написал: stimorol 20.03.2012 10:32
дай skype скину исходник посмотришь , я по инструкции всё делал незнаю даже...
№1 Написал: stimorol 20.03.2012 00:15
P_model по статье всё пашет, а W_model по статье потом серв не запускается... непонятно мб в коде public fw_SetModel(entity, const model[]) какие ошибки?
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Вверх