• Всего новостей: 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 комментариев
Модераторы
Актуально на форуме

[Статьи]Присваиваем оружию новый Weapon LIst

Комментариев (0) Просмотры: 3159 (Lacosta)


Итак начнем.

Откроем исходник extra предмета и добавим новую переменную

Quote
new gmsgWeaponList


Теперь добавим в plugin_init:

Quote
gmsgWeaponList = get_user_msgid("WeaponList")


Теперь необходимо чтобы наши спрайты и .txt файлы закачались на клиент, для этого добавим в plugin_precache

Quote
precache_generic("sprites/название_txt_файла.txt")
precache_generic("sprites/спрайт.spr")
precache_generic("sprites/спрайт.spr")
precache_generic("sprites/спрайт.spr")


Теперь надо добавить команду посылаемую при поднятие(покупки) оружия в plugin_precache :

Quote
register_clcmd("название_txt_файла", "weapon_hook")


Добавляем после plugin_precache задачу weapon_hook:

Quote
public weapon_hook(id)
{
engclient_cmd(id, "название оружия заменяемое на другой спрайт")
return PLUGIN_HANDLED
}


*название оружия заменяемое на другой спрайт - укажите название оружия на которое будет установлен новый спрайт(Пример: для Калаша weapon_ak47; для Эмки weapon_m4a1; для Дигла weapon_deagle)

Ищем конец функции выдачи оружия(обычно это public give_.... и добавляем следующее:

Quote
message_begin(MSG_ONE, gmsgWeaponList, _, id)
write_string("название_txt_файла")
write_byte()
write_byte()
write_byte()
write_byte()
write_byte()
write_byte()
write_byte(Название оружия вида CSW_...)
message_end()


Нужно зайти на сайт http://wiki.alliedmods.net/CS_WeaponList_Message_Dump и посмотреть на weapon list заменяемого оружия .

Пояснение:

Покажу пример на оружие AK47
Находим weapon_ak47 и видим следующие:

Quote
1 STRN weapon_ak47
2 BYTE 2
3 BYTE 90
4 BYTE -1
5 BYTE -1
6 BYTE 0
7 BYTE 1
8 BYTE 28
9 BYTE 0


Нам нужно будет взять первые 6(отсчет начинаем с 2ой строки, так как первую мы поменяли на свою) значений и вставить их в пустые скобки, будет это выглядеть примерно так:

Quote
message_begin(MSG_ONE, gmsgWeaponList, _, id)
write_string("название_txt_файла")
write_byte(2)
write_byte(90)
write_byte(-1)
write_byte(-1)
write_byte(0)
write_byte(1)
write_byte(CSW_AK47)
message_end()


Надеюсь понятно, если не, то в конце тутора будет полный пример.

Теперь нужно прикрепить спрайт к выдаче оружия, для этого ищем функцию выдачи оружия(по станд. это public give_...(id))

Code
public give_...(id)
{
  drop_weapons(id, 2)
  new iWep2 = give_item(id,"weapon_ak47")
  if( iWep2 > 0 )
  {
  cs_set_weapon_ammo(iWep2, get_pcvar_num(cvar_clip_...))
  cs_set_user_bpammo (id, CSW_P228, get_pcvar_num(cvar_...._ammo))  
  UTIL_PlayWeaponAnimation(id, AK47long_DRAW)
  set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF)
   
  [color=white]message_begin(MSG_ONE, gmsgWeaponList, _, id)
  write_string("[color=red]название_txt_файла [/color]")
  write_byte(2)
  write_byte(90)
  write_byte(-1)
  write_byte(-1)
  write_byte(0)
  write_byte(1)
  write_byte(CSW_AK47)
  message_end()[/color]
  }
  g_has_aklong[id] = true
}


Ну и наконец завершающий этапы, где нужно будет вернуть оружию свой стандартный спрайт если оружие не поменяло спрайт для этого ищем public fw_...._AddToPlayer(..., id)(пример привожу на aklong)

Quote
public fw_aklong_AddToPlayer(aklong, id)
{
if(!is_valid_ent(aklong) || !is_user_connected(id))
return HAM_IGNORED

if(entity_get_int(aklong, EV_INT_WEAPONKEY) == AKLONG_WEAPONKEY)
{
g_has_aklong[id] = true

entity_set_int(luger, EV_INT_WEAPONKEY, 0)

message_begin(MSG_ONE, gmsgWeaponList, _, id)
write_string("название_txt_файла")
write_byte(2)
write_byte(90)
write_byte(-1)
write_byte(-1)
write_byte(0)
write_byte(1)
write_byte(Название оружия вида CSW_...)
message_end()

return HAM_HANDLED
}
else
{
message_begin(MSG_ONE, gmsgWeaponList, _, id)
write_string("weapon_ak47")
write_byte(2)
write_byte(90)
write_byte(-1)
write_byte(-1)
write_byte(0)
write_byte(1)
write_byte(CSW_AK47)
message_end()
}
return HAM_IGNORED
}


Нужно заставить воспроизводить спрайт на экране у игрока при поднятии оружия(покупки) для этого ищем replace_weapon_models(id, weaponid) и привяжем спрайт к оружию:

Code
replace_weapon_models(id, weaponid)
{
  switch (weaponid)
  {
  case CSW_....:
  {
  if (zp_get_user_zombie(id) || zp_get_user_survivor(id))
  return
   
  if(g_has_....[id])
  {
  set_pev(id, pev_viewmodel2, ...r_V_MODEL)
  set_pev(id, pev_weaponmodel2, ...._P_MODEL)
  if(oldweap[id] != CSW_....)  
  {
  UTIL_PlayWeaponAnimation(id, ..l.._DRAW)
  set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF)
   
  message_begin(MSG_ONE, gmsgWeaponList, _, id)
  write_string("[color=red]название_txt_файла [/color]")
  write_byte(2)
  write_byte(90)
  write_byte(-1)
  write_byte(-1)
  write_byte(0)
  write_byte(1)
  write_byte(Название оружия вида CSW_...)
  message_end()
  }
  }
  }
  }
  oldweap[id] = weaponid
}


На этом все, как и обещал весь код на примере AKLONG:


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

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

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