AMXX-BG.INFO vzbb_mod.inc Raw include

vzbb_mod.inc

Original include source with line numbers.

Back Download .inc
1 /*
2 ---------------------------------------------------------
3 # # # #=== ### ## #
4 # ## #=== # # # #
5 # # #=== ### ## #
6 ---------------------------------------------------------
7 vzbb_mod.inc
8 Library by <VeCo>
9
10 <VeCo>'s Zombie BaseBuilder Mod 4.0
11
12 If you modify the code, please DO NOT change the author!
13 ---------------------------------------------------------
14 Contacts:
15 e-mail: [email protected]
16 skype: veco_kn
17 ---------------------------------------------------------
18 Changes log:
19 -> v 1.0 = First release!
20 -> v 1.1 = Fixed double user_infect_pre. The second is
21 changed to user_infect_post.
22 -> v 3.0 = Defines changed to enums.
23 Added itemteam parameter in register_shop_item
24 function and TEAM_* enum.
25 Added set_user_zombie_class native.
26 Added user_uninfect native.
27 Added grab/release block forwards.
28 -> v 3.4 = Added is_user_frozen_cool native.
29 Added user_freeze_cool_* forwards.
30 Added user_freeze_cool and user_unfreeze_cool
31 natives.
32 -> v 3.5 = Added get_block_fun_type and set_block_fun_type
33 natives and BLOCKS_* enum.
34 Added get_deal_discount and is_deal_offer natives.
35 -> v 3.8 = Added set_user_was_zombie native.
36 Added access parameters in register_zombie_class
37 and register_shop_item natives.
38 Fixed a typo.
39 Added FORWARD_CONTINUE define for the forward
40 block ability.
41 Added set_user_can_build native.
42 Added hide_barrierent and reset_barrierent natives.
43 Added update_user_hud_data forward and set_hud_cache_*
44 natives for it.
45 Added force_user_hud_data and force_weapon_menu natives.
46 -> v 3.9 = Added user_uninfect_pre and user_uninfect_post forwards.
47 Added battle_phase_begin_admin forward.
48 Added fun_block_touch_pre and fun_block_touch_post forwards.
49 -> v 4.0 = Added ability to block shop_item_selected forward. (and changed
50 the way Item Buy System works)
51 Added maxbuys parameter in register_shop_item and NO_MAX_BUYS
52 define for it.
53 Added restore_user_rendering native.
54 ---------------------------------------------------------
55 Don't forget to visit http://www.amxmodxbg.org :)
56 ---------------------------------------------------------
57 */
58
59 #if defined _vzbb_mod_included
60 #endinput
61 #endif
62
63 #define _vzbb_mod_included
64
65 #if AMXX_VERSION_NUM >= 175
66 #pragma reqlib vzbb_mod
67 #if !defined AMXMODX_NOAUTOLOAD
68 #pragma loadlib vzbb_mod
69 #endif
70 #else
71 #pragma library vzbb_mod
72 #endif
73
74 /*=======================================================================
75 -= Define-и =-
76 ========================================================================*/
77
78 #define FORWARD_CONTINUE 777 // return ... (блокира forward)
79
80 #define NO_MAX_BUYS 0 // неограничен брой пъти купуване на итем
81
82 /*=======================================================================
83 -= Enum-и =-
84 ========================================================================*/
85
86 // Кога може да се ползва итема?
87 enum
88 {
89 USE_BATTLE = 0,
90 USE_BUILD,
91 USE_BOTH
92 }
93
94 // Кой може да ползва итема?
95 enum
96 {
97 TEAM_ZOMBIES = 1,
98 TEAM_HUMANS,
99 TEAM_BOTH
100 }
101
102 // Как се движи блока?
103 enum
104 {
105 BLOCK_PULL = 1,
106 BLOCK_PUSH
107 }
108
109 // Какъв режим се игра този рунд?
110 enum
111 {
112 MODE_NORMAL = 0,
113 MODE_INFECTION
114 }
115
116 // Каква граната е хвърлена?
117 enum
118 {
119 NADE_HE = 1,
120 NADE_SMOKE,
121 NADE_FLASH
122 }
123
124 // Какъв тип забавен блок е това?
125 enum
126 {
127 BLOCKS_NORMAL = 0,
128 BLOCKS_YELLOW,
129 BLOCKS_BLACK,
130 BLOCKS_BLUE,
131 BLOCKS_RED
132 }
133
134 /*=======================================================================
135 -= Нативи =-
136 ========================================================================*/
137
138 /* :: Регистрира нов зомби клас
139
140 #classname - Името на зомби класа (пример: "Test Zombie")
141 #classinfo - Кратка информация относно зомби класа (пример: "g+ s-")
142 #classmdl - Модел на зомби класа (пример: "zombie" , трябва да се намира в models/player/име/име.mdl)
143 #classclawmdl - Модел на ръцете на зомби класа (пример: "claw" , трябва да се намира в models/име.mdl)
144 #health - Кръв на зомби класа (пример: 2000)
145 #gravity - Гравитация на зомби класа (пример: 0.5) (1.0 = 800 гравитаця , 0.5 = 400 гравитация ...)
146 #speed - Скорост на зомби класа (пример: 400.0) (0.0 = нормална скорост)
147 #access - Админ достъп нужен за избиране на класа (ADMIN_ALL - за всички)
148
149 ::::: Фунцкията връща иднекса на класа. (int)
150 */
151
152 native register_zombie_class(const classname[],const classinfo[], const classmdl[],const classclawmdl[], health,Float:gravity,Float:speed, access)
153
154 /* :: Регистрира нов итем в shop менюто
155
156 #itemname - Името на итема (пример: "Test Item")
157 #itemcost - Цена на итема (пример: 15)
158 #itemuse - Кога да може да се използва итема? (USE_BATTLE - в бойната фаза , USE_BUILD - в строителната фаза , USE_BOTH - и в двете фази)
159 #itemteam - Кой може да купува итема? (TEAM_ZOMBIES - зомбитата , TEAM_HUMANS - хората , TEAM_BOTH - всички)
160 #access - Админ достъп нужен за купуване на итема (ADMIN_ALL - за всички)
161 #maxbuys - Колко пъти да може да се купи итемът на рунд? (NO_MAX_BUYS - неограничен брой пъти)
162
163 ::::: Фунцкията връща иднекса на итема. (int)
164 */
165
166 native register_shop_item(const itemname[], itemcost, itemuse, itemteam, access, maxbuys)
167
168 /* :: Връща иднекса на класа на играча (-1 ако е Classic Zombie)
169
170 #id - индекс на играча
171
172 ::::: Фунцкията връща иднекса на класа на играча. (int)
173 */
174
175 native get_user_zombie_class(id)
176
177 /* :: Задава иднекса на класа на играча
178
179 #id - индекс на играча
180 #classid - индекс на зомби класа (-1 - Classic Zombie)
181 */
182
183 native set_user_zombie_class(id,classid)
184
185 /* :: Връща съответна стойност ако играчът е зомби
186
187 #id - индекс на играча
188
189 ::::: Фунцкията връща true ако е зомби и false - ако не е. (bool)
190 */
191
192 native is_user_zombie(id)
193
194 /* :: Връща съответна стойност ако играчът е човек
195
196 #id - индекс на играча
197
198 ::::: Фунцкията връща true ако е човек и false - ако не е. (bool)
199 */
200
201 native is_user_human(id)
202
203 /* :: Връща стойността на кредитите на играч
204
205 #id - индекс на играча
206
207 ::::: Фунцкията връща кредитите на играч. (int)
208 */
209
210 native get_user_credits(id)
211
212 /* :: Задава стойността на кредитите на играч
213
214 #id - индекс на играча
215 #credits - стойността на кредитите, които искаме да зададем (използвайте с get_user_credits ако искате да прибавите/премахнете кредити на играч)
216 */
217
218 native set_user_credits(id,credits)
219
220 /* :: Връща стойността на разстоянието на играч между последния блок, който е движел
221
222 #id - индекс на играча
223
224 ::::: Фунцкията връща разстоянието на играч между последния блок, който е движел. (float)
225 */
226
227 native get_user_block_distance(id)
228
229 /* :: Задава стойността на разстоянието на играч между последния блок, който е движел
230
231 #id - индекс на играча
232 #dist - стойността на разстоянието на играч между последния блок, който е движел, което искаме да зададем
233 */
234
235 native set_user_block_distance(id,Float:dist)
236
237 /* :: Връща общия брой зомби класове, заредени в момента
238
239 ::::: Фунцкията връща общия брой зомби класове, заредени в момента. (int)
240 */
241
242 native get_total_zombie_classes()
243
244 /* :: Връща общия брой shop итеми, заредени в момента
245
246 ::::: Фунцкията връща общия брой shop итеми, заредени в момента. (int)
247 */
248
249 native get_total_shop_items()
250
251 /* :: Връща съответна стойност ако играчът може да строи в бойната фаза
252
253 #id - индекс на играча
254
255 ::::: Фунцкията връща true ако играчът може да строи в бойната фаза и false - ако не може. (bool)
256 */
257
258 native get_user_can_build_battle(id)
259
260 /* :: Задава стойността на играч, за да може да мести блокове и в бойната фаза (действа до стартирането на следващата бойна фаза)
261
262 #id - индекс на играча
263 #set - true : за да може да строи и false : за да не може
264 */
265
266 native set_user_can_build_battle(id,set)
267
268 /* :: Връща индекс на ентитито на блока, който играчът мести в момента
269
270 #id - индекс на играча
271
272 ::::: Фунцкията връща индекс на ентитито на блока, който играчът мести в момента. (int)
273 */
274
275 native get_user_block_ent(id)
276
277 /* :: Задава индекс на ентитито на блока, който играчът мести в момента
278
279 #id - индекс на играча
280 #ent - индекс на ентитито
281 */
282
283 native set_user_block_ent(id,ent)
284
285 /* :: Връща сътветна стойност ако е freezetime в момента
286
287 ::::: Фунцкията връща true ако е и false - ако не е. (bool)
288 */
289
290 native is_freezetime()
291
292 /* :: Връща оставащото време на строителната фаза
293
294 ::::: Фунцкията връща оставащото време на строителната фаза в секунди. (int)
295 */
296
297 native get_build_phase_remaining_time()
298
299 /* :: Връща сътветна стойност ако играчите могат да строят (ако в момента е строителната фаза)
300
301 ::::: Фунцкията връща true ако могат и false - ако не могат. (bool)
302 */
303
304 native user_can_build()
305
306 /* :: Задава дали играчите могат да строят (дали в момента е строителна фаза)
307
308 #build - true - ако могат, false - ако не могат
309 */
310
311 native set_user_can_build(build)
312
313 /* :: Връща сътветна стойност на режима на игра в момента
314
315 ::::: Фунцкията връща сътветна стойност на режима на игра в момента (MODE_NORMAL - нормален режим (с убийства) , MODE_INFECTION - режим с инфекции) . (int)
316 */
317
318 native get_roundmode()
319
320 /* :: Връща съответна стойност ако играчът е бил зомби при раждането си
321
322 #id - индекс на играча
323
324 ::::: Фунцкията връща true ако е бил зомби и false - ако не е бил. (bool)
325 */
326
327 native was_user_zombie(id)
328
329 /* :: Задава стойност дали играчът е бил зомби при раждането си (ако е бил накрая на рунда ще бъде човек, използва се при инфекции)
330
331 #id - индекс на играча
332 #true - стойността - 1 ако е бил, 0 - ако не е
333 */
334
335 native set_user_was_zombie(id,true)
336
337 /* :: Връща съответна стойност ако играчът е баннат (местенето на блоковете)
338
339 #id - индекс на играча
340
341 ::::: Фунцкията връща true ако е и false - ако не е. (bool)
342 */
343
344 native is_user_banned(id)
345
346 /* :: Връща стойността на оставащата кръв за взимане при горене
347
348 #id - индекс на играча
349
350 ::::: Фунцкията връща стойността на оставащата кръв за взимане при горене. (int)
351 */
352
353 native get_user_fire_duration(id)
354
355 /* :: Задава стойността на oставащата кръв за взимане при горене
356
357 #id - индекс на играча
358 #dist - стойността на oставащата кръв за взимане при горене, която искаме да зададем (1 - за да спрем горенето на играч)
359 */
360
361 native set_user_fire_duration(id,duration)
362
363 /* :: Връща съответна стойност ако играчът е заледен
364
365 #id - индекс на играча
366
367 ::::: Фунцкията връща true ако е и false - ако не е. (bool)
368 */
369
370 native is_user_frozen(id)
371
372 /* :: Връща съответна стойност ако играчът е заледен (започва да се топи)
373
374 #id - индекс на играча
375
376 ::::: Фунцкията връща true ако е и false - ако не е. (bool)
377 */
378
379 native is_user_frozen_cool(id)
380
381 /* :: Запалва играч
382
383 #attacker - индекс на играча нападател
384 #victim - индекс на играча жертва
385 #duration - максимална кръв за взимане при горене (0 - стойността ще се взима от CVAR-a vzbb_grenade_fire_duration)
386 */
387
388 native user_burn(attacker,victim,duration)
389
390 /* :: Заледява играч
391
392 #id - индекс на играча
393 */
394
395 native user_freeze(id)
396
397 /* :: Заледява играч (играчът веднага започва да се топи)
398
399 #id - индекс на играча
400 */
401
402 native user_freeze_cool(id)
403
404 /* :: Премахва заледяването на играч
405
406 #id - индекс на играча
407 */
408
409 native user_unfreeze(id)
410
411 /* :: Премахва топенето на играч
412
413 #id - индекс на играча
414 */
415
416 native user_unfreeze_cool(id)
417
418 /* :: Инфектира играч
419
420 #victim - индекс на жертвата
421 #infector - индекс на инфектиращия
422 */
423
424 native user_infect(victim,infector)
425
426 /* :: Деинфектира играч
427
428 #id - индекс на играча
429 */
430
431 native user_uninfect(id)
432
433 /* :: Връща забавния тип на блок
434
435 #ent - индекс на ентитито на блока
436
437 ::::: Фунцкията връща забавния тип на блока (int)
438 */
439
440 native get_block_fun_type(ent)
441
442 /* :: Задава забавен тип на блок
443
444 #ent - индекс на ентитито на блока
445 #funtype - забавен тип на блока
446 (BLOCKS_YELLOW - бързодвижещ се блок , BLOCKS_BLACK - недвижим блок;
447 BLOCKS_BLUE - забавящ блок , BLOCKS_RED - запалващ блок)
448 */
449
450 native set_block_fun_type(ent,funtype)
451
452 /* :: Премахва забавния тип на блок
453
454 #ent - индекс на ентитито на блока
455 */
456
457 native reset_block_fun_type(ent)
458
459 /* :: Връща стойността на намалението на "Round Deal" в съответния рунд
460
461 ::::: Фунцкията връща стойността на намалението. (int)
462 */
463
464 native get_deal_discount()
465
466 /* :: Връща съответна стойност дали итемът е в офертите на "Round Deal" в съответния рунд
467
468 ::::: Фунцкията връща true ако е и false - ако не е. (bool)
469 */
470
471 native is_deal_offer(itemid)
472
473 /* :: Премахва бариерата (ако има такава) */
474
475 native hide_barrierent()
476
477 /* :: Рестартира местоположението на бариерата (ако има такава) */
478
479 native reset_barrierent()
480
481 /* :: Задава текст за HUD-a на играчите, на мястото на HUD-a за режима (използвайте при update_user_hud_data forward-a)
482
483 #text - текстът (максимална дължина - 128 символа, стрингът трябва да е предварително форматиран)
484 */
485
486 native set_hud_cache_text(text[])
487
488 /* :: Задава цвят (в RGB формат) за HUD-a на играчите, на мястото на HUD-a за режима (използвайте при update_user_hud_data forward-a)
489
490 #r - червен цвят
491 #g - зелен цвят
492 #b - син цвят
493 */
494
495 native set_hud_cache_colors(r,g,b)
496
497 /* :: Задава условие за показване на HUD-a на играчите, на мястото на HUD-a за режима (използвайте при update_user_hud_data forward-a)
498
499 #condition - условие (използвайте true, за да се показва винаги при всички случаи)
500 */
501
502 native set_hud_cache_condition(bool:condition)
503
504 /* :: Извиква фунцкията за показване на HUD-a на играчите */
505
506 native force_user_hud_data()
507
508 /* :: Извиква функцията за менюто за оръжия
509
510 #id - индекс на играча
511 */
512
513 native force_weapon_menu(id)
514
515 /* :: Възвръща rendering-а на играча (полезно за премхване на glow и възвръщане на невидимостта на играча)
516
517 #id - индекс на играча
518 */
519
520 native restore_user_rendering(id)
521
522 /*=======================================================================
523 -= Forward-и =-
524 ========================================================================*/
525
526 /* :: Извиква се при избиране на зомби клас
527
528 #id - индекс на играча
529 #classid - индекс на зомби класа
530 */
531
532 forward zombie_class_selected(id,classid)
533
534 /* :: Извиква се при избиране на итем от shop менюто
535
536 #id - индекс на играча
537 #itemid - индекс на итема
538
539 :::::: Върнете стойност FORWARD_CONTINUE, за да блокирате купуването на даден итем.
540 */
541
542 forward shop_item_selected(id,itemid)
543
544 /* :: Извиква се при теглене или бутане на блок
545
546 #id - индекс на играча
547 #pullpush_type - тип на местенето на блока (1 - теглене , 2 - бутане)
548
549 :::::: Върнете стойност FORWARD_CONTINUE, за да спрете изпълнението на forward-a.
550 */
551
552 forward block_pull_push(id,pullpush_type)
553
554 /* :: Извиква се след започването на бойната фаза */
555
556 forward battle_phase_begin()
557
558 /* :: Извиква се след принудителното започване на бойната фаза от админ (с командата /start)
559
560 #id - индекс на администраторът, написал командата
561 */
562
563 forward battle_phase_begin_admin(id)
564
565 /* :: Извиква се преди хвърляне на граната
566
567 #owner - индекс на притежателя на гранатата
568 #ent - индекс на ентитито на гранатата
569 #nade_type - тип на гранатата (1 - HE grenade (FireNade) , 2 - Smoke grenade , 3 - Flashbang (FrostNade))
570
571 :::::: Върнете стойност FORWARD_CONTINUE, за да спрете изпълнението на forward-a.
572 */
573
574 forward nade_throw_pre(owner,ent,nade_type)
575
576 /* :: Извиква се след хвърляне на граната
577
578 #owner - индекс на притежателя на гранатата
579 #ent - индекс на ентитито на гранатата
580 #nade_type - тип на гранатата (1 - HE grenade (FireNade) , 2 - Smoke grenade , 3 - Flashbang (FrostNade))
581 */
582
583 forward nade_throw_post(owner,ent,nade_type)
584
585 /* :: Извиква се преди всяко взимане на кръв при запалване на играч
586
587 #id - индекс на играча
588 */
589
590 forward user_burn_pre(id)
591
592 /* :: Извиква се след всяко взимане на кръв при запалване на играч
593
594 #id - индекс на играча
595 */
596
597 forward user_burn_post(id)
598
599 /* :: Извиква се при премахването на горенето на играч
600
601 #id - индекс на играча
602 */
603
604 forward user_remove_burn(id)
605
606 /* :: Извиква се преди замразяване на играч
607
608 #id - индекс на играча
609 */
610
611 forward user_freeze_pre(id)
612
613 /* :: Извиква се след замразяване на играч
614
615 #id - индекс на играча
616 */
617
618 forward user_freeze_post(id)
619
620 /* :: Извиква се преди премахването на замразяването на играч
621
622 #id - индекс на играча
623 */
624
625 forward user_unfreeze_pre(id)
626
627 /* :: Извиква се след премахването на замразяването на играч
628
629 #id - индекс на играча
630 */
631
632 forward user_unfreeze_post(id)
633
634 /* :: Извиква се преди играч да започне да се топи
635
636 #id - индекс на играча
637 */
638
639 forward user_freeze_cool_pre(id)
640
641 /* :: Извиква се след като играч започне да се топи
642
643 #id - индекс на играча
644 */
645
646 forward user_freeze_cool_post(id)
647
648 /* :: Извиква се преди играч да спре да се топи
649
650 #id - индекс на играча
651 */
652
653 forward user_unfreeze_cool_pre(id)
654
655 /* :: Извиква се след като играч спре да се топи
656
657 #id - индекс на играча
658 */
659
660 forward user_unfreeze_cool_post(id)
661
662 /* :: Извиква се преди инфектиране на играч
663
664 #victim - индекс на жертвата
665 #infector - индекс на инфектиращия
666
667 :::::: Върнете стойност FORWARD_CONTINUE, за да спрете изпълнението на forward-a.
668 */
669
670 forward user_infect_pre(victim,infector)
671
672 /* :: Извиква се след инфектиране на играч
673
674 #victim - индекс на жертвата
675 */
676
677 forward user_infect_post(victim)
678
679 /* :: Извиква се преди деинфектиране на играч
680
681 #id - индекс на играча
682
683 :::::: Върнете стойност FORWARD_CONTINUE, за да спрете изпълнението на forward-a.
684 */
685
686 forward user_uninfect_pre(id)
687
688 /* :: Извиква се след деинфектиране на играч
689
690 #id - индекс на играча
691 */
692
693 forward user_uninfect_post(id)
694
695 /* :: Извиква се преди взимане на блок
696
697 #id - индекс на играча
698
699 :::::: Върнете стойност FORWARD_CONTINUE, за да спрете изпълнението на forward-a.
700 */
701
702 forward grab_block_pre(id)
703
704 /* :: Извиква се след взимане на блок
705
706 #id - индекс на играча
707
708 :::::: Върнете стойност FORWARD_CONTINUE, за да спрете изпълнението на forward-a.
709 */
710
711 forward grab_block_post(id)
712
713 /* :: Извиква се преди пускането на блок
714
715 #id - индекс на играча
716 */
717
718 forward release_block_pre(id)
719
720 /* :: Извиква се след пускането на блок
721
722 #id - индекс на играча
723 */
724
725 forward release_block_post(id)
726
727 /* :: Извиква се при всяко обновяване на HUD-а на играчите
728
729 :::::: Върнете стойност FORWARD_CONTINUE, за да оставите работещ само HUD-a без другите функции на играчите в бойната фаза.
730 */
731
732 forward update_user_hud_data()
733
734 /* :: Извиква се преди докосване на играч със забавен блок
735
736 #id - индекс на играча
737 #ent - индекс на ентитито на блока
738 #funtype - забавен тип на блока
739 (BLOCKS_YELLOW - бързодвижещ се блок , BLOCKS_BLACK - недвижим блок;
740 BLOCKS_BLUE - забавящ блок , BLOCKS_RED - запалващ блок)
741
742 :::: Върнете стойност FORWARD_CONTINUE, за да блокирате ефекта на забавния блок.
743 */
744
745 forward fun_block_touch_pre(id,ent,funtype)
746
747 /* :: Извиква се след докосване на играч със забавен блок
748
749 #id - индекс на играча
750 #ent - индекс на ентитито на блока
751 #funtype - забавен тип на блока
752 (BLOCKS_YELLOW - бързодвижещ се блок , BLOCKS_BLACK - недвижим блок;
753 BLOCKS_BLUE - забавящ блок , BLOCKS_RED - запалващ блок)
754 */
755
756 forward fun_block_touch_post(id,ent,funtype)
757 /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
758 *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1026\\ f0\\ fs16 \n\\ par }
759 */
760