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

Переделываем оружие с 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 мода на паблик

Сообщение TheMrFeliX » 21 авг 2014, 09:26

Safety1st писал(а):Хах) Ничто не делается сразу идеально) К сожалению, на стадии 'бета-версии' так и остаётся. Единственная статья в последнее время, что была доведена до ума - Вы должны зарегистрироваться, чтобы видеть ссылки..

Шарль Перро писал(а):до статьи не хватает- почему именно такую-то, такую-то строку нужно удалить, и за что она отвечает

По-моему, это будет лишней инфой в данном случае. Очевидно, что тутор для новичков в скриптинге. Поставь себя на место владельца сервера, который нашёл нужный ему плагин оружия, но он для ZM. Человеку вообще не интересно, что за что там отвечает, ему важно поставить плагин на свой сервер и начать использовать. Автор разжевал на примерах процедуру выбрасывания всех zp-натив, раскрыл основную тему статьи.

Если что и улучшать, то в первую очередь прикрепить конечный результат 'портирования' и косметические правки типа:
И отсюда мы удаляем
[pawn]
  1. zp_get_user_zombie(target)
[/pawn]
-->
[pawn]
  1. && zp_get_user_zombie(target)
[/pawn]


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

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

Сообщение Safety1st » 21 авг 2014, 09:28

Спасибо не пишется, а нажимается :-D
GoldSrc Gaming Community
Аватара пользователя
Safety1st
 
Сообщения: 1961
Зарегистрирован: 08 окт 2011, 05:41
Откуда: Moscow
Благодарил (а): 1690 раз.
Поблагодарили: 931 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6
Half-Life

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

Сообщение TheMrFeliX » 21 авг 2014, 09:32

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

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

Сообщение DannyQueen » 30 авг 2014, 16:19

Мхм спасибо, а можешь сделать статью как сменить экстра оружие с ZP на Public
________________
Например: Jetpack+Bazooka 3.2
______________________
Never expect people to treat you any better than you treat yourself.
(с) Bo Bennett
______________________
Аватара пользователя
DannyQueen
 
Сообщения: 155
Зарегистрирован: 09 июн 2014, 19:49
Благодарил (а): 40 раз.
Поблагодарили: 4 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike 1.6
Minecraft

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

Сообщение TheMrFeliX » 04 сен 2014, 14:17

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

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

Сообщение wadim21 » 17 сен 2014, 19:02

А как за деньги сделать?
Аватара пользователя
wadim21
 
Сообщения: 38
Зарегистрирован: 02 авг 2014, 16:03
Благодарил (а): 10 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

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

Сообщение koshakk » 27 ноя 2014, 22:40

Опоч #2
Keep calm and terebonkaj C:

Мои проекты:
[spoiler][pawn]
  1. register_plugin("[Surf] Weapon Menu", "1.0", "Sugarv/meow:3")
[/pawn] Готово: [!-!-!-!-!-!-!-!-!-!]
[pawn]
  1. register_plugin("Surf Engine", "0.1", "meow:3")
[/pawn] Готово: [!-!-!-!-!-!-!-!-!-!][/spoiler] koshaakk
Аватара пользователя
koshakk
 
Сообщения: 369
Зарегистрирован: 17 апр 2013, 09:49
Откуда: Волгоград
Благодарил (а): 78 раз.
Поблагодарили: 100 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

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

Сообщение Bagto » 30 ноя 2014, 23:23

Фигня, у опыча тутор был покруче.
Аватара пользователя
Bagto
 
Сообщения: 229
Зарегистрирован: 18 мар 2013, 17:49
Благодарил (а): 211 раз.
Поблагодарили: 14 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

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

Сообщение koshakk » 02 дек 2014, 22:55

wadim21 писал(а):А как за деньги сделать?

деньги отнимай.
в гугл функцию
[pawn]
  1. cs_set_user_money
[/pawn]
и
[pawn]
  1. cs_get_user_money
[/pawn]

[pawn]
  1. cs_set_user_money(id, cs_get_user_money(id) - 228$)
[/pawn]
Keep calm and terebonkaj C:

Мои проекты:
[spoiler][pawn]
  1. register_plugin("[Surf] Weapon Menu", "1.0", "Sugarv/meow:3")
[/pawn] Готово: [!-!-!-!-!-!-!-!-!-!]
[pawn]
  1. register_plugin("Surf Engine", "0.1", "meow:3")
[/pawn] Готово: [!-!-!-!-!-!-!-!-!-!][/spoiler] koshaakk
Аватара пользователя
koshakk
 
Сообщения: 369
Зарегистрирован: 17 апр 2013, 09:49
Откуда: Волгоград
Благодарил (а): 78 раз.
Поблагодарили: 100 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

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

Сообщение D34by » 03 дек 2014, 12:17

Все эти туторы-переписки старых оружий зм на паблик фигня, надо писать оружие с привязкой к weapon_entity, а не к игроку, и всякие нубские проверки вроде "вот тут мы делаем игрока зомби, и убираем переменную g_super_puper_cso_shit_weapon[player] = false"
От зомби кода останется ток регистрация итема и форвард выбора :crazy:
отдельная тема с кнокбэками и прочей мутью, но она тут не затрагивается :-)
Work with Zombie Plague ver. 4|5, Biohazard, Zombie Engine, Public, Weapon System
Аватара пользователя
D34by
 
Сообщения: 538
Зарегистрирован: 13 фев 2014, 12:45
Благодарил (а): 15 раз.
Поблагодарили: 192 раз.
Опыт программирования: Больше трех лет
Языки программирования: пешка
сишка

Пред.След.

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

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

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