Русское сообщество по скриптингу

Переделываем оружие с zm мода на паблик

Статьи или фрагменты кода для новичков и уже опытных скриптеров по AMXX.

Модератор: Chuvi

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только обучающему материалу по AMX Mod X.

Переделываем оружие с zm мода на паблик

Сообщение TheMrFeliX » 19 авг 2014, 14:39

В этой статье я покажу как переделать оружие с zm мода на простой паблик.

Для примера я возьму скачанный из интернета плагин оружия Ethereal.

На всякий случай создайте копию .sma файла.

Начнём.

Открываем через блокнот .sma файл оружия и сразу убираем инклуд zombieplague
[pawn]
  1. #include <zombieplague>
[/pawn]

Дальше нажимаем сверху "Правка -> Найти" или сочетание клавиш CTRL+F.
У вас вылезет окно поиска там вводим "zp" проверяем чтобы не стояла галочка "С учётом регистра"
Ставим точку где написано "Вниз" и нажимаем "Найти далее".

У нас находит в register_plugin название плагина, его можно не трогать. Дальше идут квары их тоже не трогаем, а вот строчку [pawn]
  1. g_itemid_ethereal = zp_register_extra_item("Ethereal", 3549, ZP_TEAM_HUMAN)
[/pawn] мы спокойно стираем, она нам не понадобится, и ещё в самом верху
плагина где создаются переменные, мы ищем и стираем переменную g_itemid_ethereal.

Снова нажимаем найти далее и у нас находит паблик zp_user_humanized_post(id)
его, мы тоже стираем и нажимаем найти далее. Паблик zp_user_infected_post(id)
так же удаляем и ищем снова. Паблик zp_extra_item_selected тоже полностью удаляем, но сначала смотрим, что у нас здесь написано
[pawn]
  1. public zp_extra_item_selected(id, itemid)

  2. {

  3.         if(itemid == g_itemid_ethereal)

  4.         {

  5.                 drop_weapons(id, 1);

  6.                 new iWep2 = give_item(id,"weapon_ump45")

  7.                 if( iWep2 > 0 )

  8.                 {

  9.                         cs_set_weapon_ammo( iWep2, get_pcvar_num(cvar_clip_ethereal) )

  10.                         cs_set_user_bpammo (id, CSW_UMP45, get_pcvar_num(cvar_ethereal_ammo))

  11.                         UTIL_PlayWeaponAnimation(id, 2)

  12.                 }

  13.                 g_has_ethereal[id] = true;

  14.         }

  15. }
[/pawn]

Как видим здесь сразу в zp_extra_item_selected вставлена выдача оружия, так сделано не во всех плагинах в некоторых выдача может быть вот в таком виде

[pawn]
  1. public zp_extra_item_selected(id, itemid)

  2. {

  3.         if(itemid != g_itemid_ethereal)

  4.                 return

  5.  

  6.         give_ethereal(id)

  7. }
[/pawn]

Вот такой вид гораздо удобнее, чем первый
потому, что нужно просто скопировать give_ethereal(id)
и создать register_clcmd("say /give_ethereal", "give_ethereal")

Но у нас сделано по другому, поэтому делаем вот так.
Копируем всё, что находится в zp_extra_item_selected
копируем только то, что внутри, создаем новый паблик в самом конце, называем его как-нибудь типо give_ethereal и вставляем в него то, что копировали из zp_extra_item_selected вот пример
[pawn]
  1. public give_ethereal(id, itemid)

  2. {

  3.                 drop_weapons(id, 1);

  4.                 new iWep2 = give_item(id,"weapon_ump45")

  5.                 if( iWep2 > 0 )

  6.                 {

  7.                         cs_set_weapon_ammo( iWep2, get_pcvar_num(cvar_clip_ethereal) )

  8.                         cs_set_user_bpammo (id, CSW_UMP45, get_pcvar_num(cvar_ethereal_ammo))

  9.                         UTIL_PlayWeaponAnimation(id, 2)

  10.                 }

  11.                 g_has_ethereal[id] = true;

  12. }
[/pawn]

Это готово. Теперь делаем саму команду для выдачи оружия, наверху ищем public plugin_init
и в самом низу, но не после кваров пишем это
[pawn]
  1. register_clcmd("give_ethereal", "give_ethereal")
[/pawn]

Всё теперь когда игрок напишет команду в консоле give_ethereal у него в руках появится наша пушка.
Но мы ещё не закончили поэтому продолжаем.

Нажимаем найти далее и нам находит это
[pawn]
  1. replace_weapon_models(id, weaponid)

  2. {

  3.         switch (weaponid)

  4.         {

  5.                 case CSW_UMP45:

  6.                 {

  7.                         if (zp_get_user_zombie(id) || zp_get_user_survivor(id))

  8.                                 return;

  9.                        

  10.                         if(g_has_ethereal[id])

  11.                         {

  12.                                 set_pev(id, pev_viewmodel2, ethereal_V_MODEL)

  13.                                 set_pev(id, pev_weaponmodel2, ethereal_P_MODEL)

  14.                         }

  15.                 }

  16.         }

  17. }
[/pawn]

Здесь мы стираем только эту проверку
[pawn]
  1. if (zp_get_user_zombie(id) || zp_get_user_survivor(id))

  2.                                 return;
[/pawn]
И ищем далее.
Дальше нам находит сток в котором есть проверка
[pawn]
  1. if(target > 0 && target <= g_MaxPlayers && zp_get_user_zombie(target))
[/pawn]
И отсюда мы удаляем
[pawn]
  1. && zp_get_user_zombie(target)
[/pawn]
И снова нажимаем Найти далее.
Но тут нам вылазит окно "Не удаётся найти zp"
Ну что же, это значит что больше нету функций относящихся к zombieplague, и теперь это оружие можно компилировать и спокойно ставить на паблик.

Это моя первая статья, поэтому не судите строго.
Последний раз редактировалось TheMrFeliX 21 авг 2014, 09:23, всего редактировалось 1 раз.
Аватара пользователя
TheMrFeliX
 
Сообщения: 172
Зарегистрирован: 22 авг 2011, 17:07
Благодарил (а): 52 раз.
Поблагодарили: 13 раз.
Языки программирования: Counter-Strike 1.6

Re: Переделываем оружие с zm мода на паблик

Сообщение Dmitry Beast » 04 дек 2014, 10:42

к самому оружию вязать намного практичнее..
Аватара пользователя
Dmitry Beast
 
Сообщения: 1560
Зарегистрирован: 24 дек 2010, 10:35
Откуда: Египет
Благодарил (а): 440 раз.
Поблагодарили: 207 раз.
Опыт программирования: Больше трех лет
Языки программирования: All Languages

Re: Переделываем оружие с zm мода на паблик

Сообщение INFIX » 04 июл 2017, 07:21

Кстать, а сервера с cso оружием в последнее время популярны. Но только те где это все напихано в меру. А не до такой степени что даже с быстрой загрузкой будешь качать часа 3 если не больше. Кстати когда был нубом в скриптинге сам этой статьей пользовлся так что, автору спасибо :thumbs_up
Аватара пользователя
INFIX
 
Сообщения: 3
Зарегистрирован: 04 апр 2017, 19:27
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше недели
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Пред.

Вернуться в Статьи / фрагменты кода

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8