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

Спрайты лап зомби для каждого класса (через исходник класса)

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

Модератор: Chuvi

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

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

Спрайты лап зомби для каждого класса (через исходник класса)

Сообщение koshakk » 05 апр 2014, 17:53

Недавно видел, как на каком-то форуме просили с этим помочь, я обещал, но потом почему-то перестал заходить, да и адреса уже не помню. Поэтому, вдруг тот паренек сейчас читает это. Прости меня!! Эту статью я пишу специально для тебя, ну и, разумеется, для всех пользователей AMX-X.RU

Автор кода: неизвестный
Автор статьи: meow:3

В общем откроем ваш исходник зомби класса, у меня это классик, дабы не было лишнего кода.

Йоу, поехали.

koshakk писал(а):1.Ко всем new добавляем

[pawn]
  1. new g_msgWeaponList
[/pawn]

koshakk писал(а):2.Регистрируем команду для того, чтобы вы могли спокойно переключатся между лапами и джамп гранатой или наоборот

[pawn]
  1. register_clcmd("weapon_claws_classic", "Hook_Select") // Внимание, где weapon_claws_classic название вашего веапонлиста, лежащего в директории: sprites/namehere.txt, записывается без разрешения
[/pawn]

koshakk писал(а):3. Затем добавим наши спрайты и текстовик в прекеш

Ищем public plugin_precache() и добавляем туда:

[pawn]
  1. precache_generic("sprites/weapon_claws_classic.txt") // Название текстовика

  2. precache_generic("sprites/zp_meow/640hudZ3.spr") // Спрайт, используемый в текстовике
[/pawn]

[pawn]
  1. 4. Ищем момент, когда человек становится зомби и заменяем нож на спрайт наших лап
[/pawn]
ищем public zp_user_infected_post(id, infector)
и добавляем:
[pawn]
  1. if ( !zp_get_user_nemesis(id) && zp_get_user_zombie_class(id) == g_classic) // Проверка на то, что: игрок не немезида, зомби класс - g_classic. Вместо g_classic ставим переменную вашего класса

  2.         {

  3.                 message_begin(MSG_ONE, g_msgWeaponList, _, id)

  4.                 write_string("weapon_claws_classic") // имя txt файла, заменяем на свой

  5.                 write_byte(-1)

  6.                 write_byte(-1) 

  7.                 write_byte(-1)

  8.                 write_byte(-1)

  9.                 write_byte(2)

  10.                 write_byte(1)

  11.                 write_byte(29)

  12.                 write_byte(0)

  13.                 message_end()

  14.         }
[/pawn]
koshakk писал(а):5. Ну и последнее, необходимо доделать то, что начали, а именно - переключение между оружием, в нашем случае - гранате и ножом(лапами)

Куда-нибудь в конец добавляем код:
[pawn]
  1. public Hook_Select(id)

  2. {

  3.         engclient_cmd(id, "weapon_knife")

  4.         return PLUGIN_HANDLED

  5. }
[/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: Спрайты лап зомби для каждого класса (через исходник кла

Сообщение D34by » 05 апр 2014, 21:43

Проверку на немезность надо делать в zp_user_infected_post(id, infector, nemesis) ( 3 арг )
Зачем вызывать каждый раз натив?
+ нет инициализации g_msgWeaponList
Work with Zombie Plague ver. 4|5, Biohazard, Zombie Engine, Public, Weapon System
Аватара пользователя
D34by
 
Сообщения: 537
Зарегистрирован: 13 фев 2014, 12:45
Благодарил (а): 15 раз.
Поблагодарили: 192 раз.
Опыт программирования: Больше трех лет
Языки программирования: пешка
сишка

Re: Спрайты лап зомби для каждого класса (через исходник кла

Сообщение Bos93 » 06 апр 2014, 08:40

+ у чела будет лапка зомби на ноже. Если не перебьют ксошные ножи.
Всем добра, любви и осознанности.

Nosce animum tuum.

А осознание и есть, что понял и осмыслил..
А коль не думал ты о том, то кто о том замыслил..?
Аватара пользователя
Bos93
 
Сообщения: 1425
Зарегистрирован: 03 апр 2010, 13:44
Благодарил (а): 149 раз.
Поблагодарили: 514 раз.

Re: Спрайты лап зомби для каждого класса (через исходник кла

Сообщение koshakk » 06 апр 2014, 13:09

Bos93 писал(а):+ у чела будет лапка зомби на ноже. Если не перебьют ксошные ножи.

Сам bos93 ответил в моей теме, это однозначно успех. Именно на это и расчитан код, в основном у всех.(!) стоят ножи с прописанным weaponlist'ом.
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: Спрайты лап зомби для каждого класса (через исходник кла

Сообщение D34by » 06 апр 2014, 20:37

koshakk писал(а):
Bos93 писал(а):+ у чела будет лапка зомби на ноже. Если не перебьют ксошные ножи.

Сам bos93 ответил в моей теме, это однозначно успех. Именно на это и расчитан код, в основном у всех.(!) стоят ножи с прописанным weaponlist'ом.

По идее проще сделать отдельный плагин, получать Ид зомби класса, создать массив , и по индексу устанавливать WL из массива, так будет меньше геммора , и не придётся вписывать такой код в каждый класс
Work with Zombie Plague ver. 4|5, Biohazard, Zombie Engine, Public, Weapon System
Аватара пользователя
D34by
 
Сообщения: 537
Зарегистрирован: 13 фев 2014, 12:45
Благодарил (а): 15 раз.
Поблагодарили: 192 раз.
Опыт программирования: Больше трех лет
Языки программирования: пешка
сишка

Re: Спрайты лап зомби для каждого класса (через исходник кла

Сообщение koshakk » 06 апр 2014, 22:28

[pawn]
  1. #include < amxmodx >

  2. #include < zombieplague >

  3.  

  4. new const SPRITES_HUD[ ] [ ] =

  5. {

  6.         "sprites/weapon_zm_classic.txt" ,

  7.         "sprites/weapon_zm_fast.txt" ,

  8.         "sprites/weapon_zm_healer.txt" ,

  9.         "sprites/weapon_zm_heavy.txt" ,

  10.         "sprites/weapon_zm_hunter.txt" ,

  11.         "sprites/weapon_zm_shaman.txt" ,

  12.         "sprites/weapon_zm_tesla.txt" ,

  13.         "sprites/weapon_zm_boss_s.txt" ,

  14.         "sprites/sh/640hudZ1.spr",

  15.         "sprites/sh/640hudZ2.spr" ,

  16.         "sprites/sh/640hudZ3.spr"

  17. }

  18.  

  19. new const HUD_TXT[ ] [ ] =

  20. {

  21.         "weapon_zm_classic",

  22.     "weapon_zm_fast",

  23.     "weapon_zm_healer",

  24.     "weapon_zm_heavy",

  25.     "weapon_zm_hunter" ,

  26.     "weapon_zm_shaman",

  27.     "weapon_zm_tesla" ,

  28.         "weapon_zm_boss_s"

  29. }      

  30.        

  31. public plugin_precache( )

  32. {

  33.         new pFile

  34.         new pLen = sizeof SPRITES_HUD

  35.        

  36.         new pLentxt = sizeof HUD_TXT

  37.        

  38.         for ( pFile = 0 ; pFile < pLentxt ; pFile++ )

  39.         {              

  40.                         register_clcmd( HUD_TXT[ pFile ] , "Clcommand_WeapList" )

  41.         }      

  42.                

  43.         for ( pFile = 0 ; pFile < pLen ; pFile++ )

  44.         {

  45.                     precache_generic ( SPRITES_HUD[ pFile ] );

  46.         }      

  47. }

  48.  

  49. public Clcommand_WeapList( pPlayer )

  50. {

  51.                 engclient_cmd( pPlayer , "weapon_knife" )

  52.                

  53.                 return PLUGIN_HANDLED

  54. }

  55.  

  56. public zp_user_infected_post( id , pevAttacker )

  57. {

  58.         if( zp_get_user_zombie( id ) && !zp_get_user_nemesis( id )  )

  59.         {

  60.                 switch( zp_get_user_zombie_class( id  )  )

  61.                 {

  62.                         case 0:sprite( id , "weapon_zm_classic" , -1 , -1 , -1 , -1 , 2 , 1 ,29 , 0 )

  63.                         case 1:sprite( id , "weapon_zm_fast" , -1 , -1 , -1 ,-1 , 2 ,1 , 29 , 0 )

  64.                         case 2:sprite( id , "weapon_zm_healer" , -1 , -1 , -1 , -1 , 2 , 1 ,29 , 0 )

  65.                         case 3:sprite( id , "weapon_zm_heavy" , -1 , -1 , -1 ,-1 , 2 ,1 , 29 , 0 )

  66.                         case 4:sprite( id , "weapon_zm_shaman" , -1 , -1 , -1 , -1 , 2 , 1 ,29 , 0 )

  67.                         case 5:sprite( id , "weapon_zm_hunter" , -1 , -1 , -1 ,-1 , 2 ,1 , 29 , 0 )

  68.                         case 6:sprite( id , "weapon_zm_tesla" , -1 , -1 , -1 , -1 , 2 , 1 ,29 , 0 )

  69.                 }

  70.         }

  71.         else if ( zp_get_user_nemesis( id ) )

  72.         {

  73.                         sprite(id, "weapon_zm_boss_s", -1, -1, -1, -1, 2, 1, 29, 0)

  74.         }              

  75. }

  76.  

  77. stock sprite(const player, const string_msg[], byte_1, byte_2, byte_3, byte_4, byte_5, byte_6, byte_7, byte_8)

  78. {

  79.         message_begin(MSG_ONE, 78, .player = player );

  80.         {

  81.                 write_string(string_msg);

  82.                 write_byte(byte_1);

  83.                 write_byte(byte_2);

  84.                 write_byte(byte_3);

  85.                 write_byte(byte_4);

  86.                 write_byte(byte_5);

  87.                 write_byte(byte_6);

  88.                 write_byte(byte_7);

  89.                 write_byte(byte_8);

  90.         }

  91.         message_end();

  92. }
[/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: Спрайты лап зомби для каждого класса (через исходник кла

Сообщение D34by » 07 апр 2014, 02:50

Писал с телефона и без проверки(возможны баги) :crazy:
[pawn]
  1. #include <amxmodx>

  2. #include <zombieplague>

  3.  

  4. new const resourses[][]=

  5. {

  6.         "sprites/640hudzp1.spr",

  7.         "sprites/640hudzp2.spr",

  8.         "sprites/640hudzp3.spr"

  9. }

  10.  

  11. new const weaponlist[][] =

  12. {

  13.         "weapon_zm_classic",

  14.         "weapon_zm_fast",

  15.         "weapon_zm_healer",

  16.         "weapon_zm_heavy",

  17.         "weapon_zm_hunter",

  18.         "weapon_zm_shaman",

  19.         "weapon_zm_tesla",

  20.         "weapon_zm_boss_s"

  21. }

  22.  

  23. public plugin_precache()

  24. {

  25.         new i

  26.         for(i = 0 ; i <= charsmax(weaponlist) ; i++)

  27.         {

  28.                 new generic[64]

  29.                 formatex(generic, charsmax(generic), "sprites/%s.txt", weaponlist[i])

  30.                 precache_generic(generic)

  31.                 register_clcmd(weaponlist[i], "clcmd_call_weapon")

  32.         }

  33.         for(i = 0 ; i <= charsmax(resourses) ; i++)

  34.         {

  35.                 precache_generic(resourses[i])

  36.         }

  37. }

  38.  

  39. public clcmd_call_weapon(id)

  40. {

  41.         engclient_cmd(id, "weapon_knife")

  42.         return PLUGIN_HANDLED

  43. }

  44.  

  45. public zp_user_infected_post(id, infector, nemesis)

  46. {

  47.         new g_zclass[33]

  48.         g_zclass[id] = zp_get_user_zombie_class(id)

  49.  

  50.         message_begin(MSG_ONE, 78, {0,0,0}, id)

  51.         write_string(nemesis ? weaponlist[charsmax(weaponlist)] : weaponlist[g_zclass[id]])

  52.         write_byte(-1)

  53.         write_byte(-1)

  54.         write_byte(-1)

  55.         write_byte(-1)

  56.         write_byte(2)

  57.         write_byte(1)

  58.         write_byte(29)

  59.         write_byte(0)

  60.         message_end()

  61. }
[/pawn]
Work with Zombie Plague ver. 4|5, Biohazard, Zombie Engine, Public, Weapon System
Аватара пользователя
D34by
 
Сообщения: 537
Зарегистрирован: 13 фев 2014, 12:45
Благодарил (а): 15 раз.
Поблагодарили: 192 раз.
Опыт программирования: Больше трех лет
Языки программирования: пешка
сишка


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

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

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