- AMXX-BG.info
- vzbb_mod.inc
- Raw
- Functions
- Constants
/*
---------------------------------------------------------
# # # #=== ### ## #
# ## #=== # # # #
# # #=== ### ## #
---------------------------------------------------------
vzbb_mod.inc
Library by <VeCo>
Edited by WaLkZ for https://amxx-bg.info/api/
<VeCo>'s Zombie BaseBuilder Mod 4.3
If you modify the code, please DO NOT change the author!
---------------------------------------------------------
Contacts:
e-mail: [email protected]
skype: veco_kn
---------------------------------------------------------
Changes log:
-> v 1.0 = First release!
-> v 1.1 = Fixed double user_infect_pre. The second is
changed to user_infect_post.
-> v 3.0 = Defines changed to enums.
Added itemteam parameter in register_shop_item
function and TEAM_* enum.
Added set_user_zombie_class native.
Added user_uninfect native.
Added grab/release block forwards.
-> v 3.4 = Added is_user_frozen_cool native.
Added user_freeze_cool_* forwards.
Added user_freeze_cool and user_unfreeze_cool
natives.
-> v 3.5 = Added get_block_fun_type and set_block_fun_type
natives and BLOCKS_* enum.
Added get_deal_discount and is_deal_offer natives.
-> v 3.8 = Added set_user_was_zombie native.
Added access parameters in register_zombie_class
and register_shop_item natives.
Fixed a typo.
Added FORWARD_CONTINUE define for the forward
block ability.
Added set_user_can_build native.
Added hide_barrierent and reset_barrierent natives.
Added update_user_hud_data forward and set_hud_cache_*
natives for it.
Added force_user_hud_data and force_weapon_menu natives.
-> v 3.9 = Added user_uninfect_pre and user_uninfect_post forwards.
Added battle_phase_begin_admin forward.
Added fun_block_touch_pre and fun_block_touch_post forwards.
-> v 4.0 = Added ability to block shop_item_selected forward. (and changed
the way Item Buy System works)
Added maxbuys parameter in register_shop_item and NO_MAX_BUYS
define for it.
Added restore_user_rendering native.
---------------------------------------------------------
Don't forget to visit https://amxx-bg.info/ :)
---------------------------------------------------------
*/
#if defined _vzbb_mod_included
#endinput
#endif
#define _vzbb_mod_included
#if AMXX_VERSION_NUM >= 175
#pragma reqlib vzbb_mod
#if !defined AMXMODX_NOAUTOLOAD
#pragma loadlib vzbb_mod
#endif
#else
#pragma library vzbb_mod
#endif
/* return ... (блокира forward) */
#define FORWARD_CONTINUE 777
/* неограничен брой пъти купуване на итем */
#define NO_MAX_BUYS 0 //
/* Кога може да се ползва итема? */
enum
{
USE_BATTLE = 0,
USE_BUILD,
USE_BOTH
}
/* Кой може да ползва итема? */
enum
{
TEAM_ZOMBIES = 1,
TEAM_HUMANS,
TEAM_BOTH
}
/* Как се движи блока? */
enum
{
BLOCK_PULL = 1,
BLOCK_PUSH
}
/* Какъв режим се игра този рунд? */
enum
{
MODE_NORMAL = 0,
MODE_INFECTION
}
/* Каква граната е хвърлена? */
enum
{
NADE_HE = 1,
NADE_SMOKE,
NADE_FLASH
}
/* Какъв тип забавен блок е това? */
enum
{
BLOCKS_NORMAL = 0,
BLOCKS_YELLOW, // бързодвижещ се блок
BLOCKS_BLACK, // недвижим блок
BLOCKS_BLUE, // забавящ блок
BLOCKS_RED // запалващ блок
}
/**
* Регистрира нов зомби клас
*
* @param classname Името на зомби класа (пример: "Test Zombie")
* @param classinfo Кратка информация относно зомби класа (пример: "g+ s-")
* @param classmdl Модел на зомби класа (пример: "zombie" , трябва да се намира в models/player/име/име.mdl)
* @param classclawmdl Модел на ръцете на зомби класа (пример: "claw" , трябва да се намира в models/име.mdl)
* @param health Кръв на зомби класа (пример: 2000)
* @param gravity Гравитация на зомби класа (пример: 0.5) (1.0 = 800 гравитаця , 0.5 = 400 гравитация ...)
* @param speed Скорост на зомби класа (пример: 400.0) (0.0 = нормална скорост)
* @param access Админ достъп нужен за избиране на класа (ADMIN_ALL - за всички)
* @return Връща индекса на класа. (int)
*/
native register_zombie_class(const classname[], const classinfo[], const classmdl[], const classclawmdl[], health, Float:gravity, Float:speed, access)
/**
* Регистрира нов итем в shop менюто
*
* @param itemname Името на итема (пример: "Test Item")
* @param itemcost Цена на итема (пример: 15)
* @param itemuse Кога да може да се използва итема? (USE_BATTLE - в бойната фаза , USE_BUILD - в строителната фаза , USE_BOTH - и в двете фази)
* @param itemteam Кой може да купува итема? (TEAM_ZOMBIES - зомбитата , TEAM_HUMANS - хората , TEAM_BOTH - всички)
* @param access Админ достъп нужен за купуване на итема (ADMIN_ALL - за всички)
* @param maxbuys Колко пъти да може да се купи итемът на рунд? (NO_MAX_BUYS - неограничен брой пъти)
* @return Връща индекса на итема. (int)
*/
native register_shop_item(const itemname[], itemcost, itemuse, itemteam, access, maxbuys)
/**
* Връща индекса на зомби класа на играча. (int)
*
* @param id Индекс на играча
* @return Връща индекса на зомби класа на играча (-1 ако е Classic Zombie)
*/
native get_user_zombie_class(id)
/**
* Задава индекса на зомби класа на играча
*
* @param id Индекс на играча
* @param classid Индекс на зомби класа (-1 - Classic Zombie)
*
* @noreturn
*/
native set_user_zombie_class(id, classid)
/**
* Връща съответна стойност, ако играчът е зомби
*
* @param id Индекс на играча
* @return Връща true ако е зомби и false - ако не е. (bool)
*/
native is_user_zombie(id)
/**
* Връща съответна стойност, ако играчът е човек
*
* @param id Индекс на играча
* @return Връща true ако е човек и false - ако не е. (bool)
*/
native is_user_human(id)
/**
* Връща стойността на кредитите на играч
*
* @param id Индекс на играча
* @return Връща кредитите на играч. (int)
*/
native get_user_credits(id)
/**
* Задава стойността на кредитите на играч
*
* @param id Индекс на играча
* @param credits Стойността на кредитите, които искаме да зададем (използвайте с get_user_credits ако искате да прибавите/премахнете кредити на играч)
*
* @noreturn
*/
native set_user_credits(id, credits)
/**
* Връща общия брой зомби класове, заредени в момента
*
* @return Връща общия брой зомби класове, заредени в момента. (int)
*/
native get_total_zombie_classes()
/**
* Връща общия брой shop итеми, заредени в момента
*
* @return Връща общия брой shop итеми, заредени в момента. (int)
*/
native get_total_shop_items()
/**
* Връща съответна стойност, ако играчът може да строи в бойната фаза
*
* @param id Индекс на играча
* @return Връща true ако играчът може да строи в бойната фаза и false - ако не може. (bool)
*/
native get_user_can_build_battle(id)
/**
* Задава стойността на играч, за да може да мести блокове и в бойната фаза (действа до стартирането на следващата бойна фаза)
*
* @param id Индекс на играча
* @param set true : за да може да строи и false : за да не може
*
* @noreturn
*/
native set_user_can_build_battle(id, set)
/**
* Връща индекс на ентитито на блока, който играчът мести в момента
*
* @param id Индекс на играча
* @return Връща индекс на ентитито на блока, който играчът мести в момента. (int)
*/
native get_user_block_ent(id)
/**
* Задава индекс на ентитито на блока, който играчът мести в момента
*
* @param id Индекс на играча
* @param ent Индекс на ентитито
*
* @noreturn
*/
native set_user_block_ent(id, ent)
/**
* Връща съответна стойност, ако е freezetime в момента
*
* @param id Индекс на играча
* @return Връща true ако е и false - ако не е. (bool)
*/
native is_freezetime()
/**
* Връща оставащото време на строителната фаза
*
* @param id Индекс на играча
* @return Връща оставащото време на строителната фаза в секунди. (int)
*/
native get_build_phase_remaining_time()
/**
* Връща съответна стойност, ако играчите могат да строят (ако в момента е строителната фаза)
*
* @param id Индекс на играча
* @return Връща true ако могат и false - ако не могат. (bool)
*/
native user_can_build()
/**
* Задава дали играчите могат да строят (дали в момента е строителна фаза)
*
* @param build true - ако могат, false - ако не могат
*
* @noreturn
*/
native set_user_can_build(build)
/**
* Връща съответна стойност на режима на игра в момента
*
* @param id Индекс на играча
* @return Връща съответна стойност на режима на игра в момента (MODE_NORMAL - нормален режим (с убийства) , MODE_INFECTION - режим с инфекции) . (int)
*/
native get_roundmode()
/**
* Връща съответна стойност, ако играчът е бил зомби при раждането си
*
* @param id Индекс на играча
* @return Връща true ако е бил зомби и false - ако не е бил. (bool)
*/
native was_user_zombie(id)
/**
* Задава стойност дали играчът е бил зомби при раждането си (ако е бил накрая на рунда ще бъде човек, използва се при инфекции)
*
* @param id Индекс на играча
* @param true Стойността - 1 ако е бил, 0 - ако не е
*
* @noreturn
*/
native set_user_was_zombie(id, true)
/**
* Връща съответна стойност, ако играчът е баннат (местенето на блоковете)
*
* @param id Индекс на играча
* @return Връща true ако е и false - ако не е. (bool)
*/
native is_user_banned(id)
/**
* Връща стойността на оставащата кръв за взимане при горене
*
* @param id Индекс на играча
* @return Връща стойността на оставащата кръв за взимане при горене. (int)
*/
native get_user_fire_duration(id)
/**
* Задава стойността на oставащата кръв за взимане при горене
*
* @param id Индекс на играча
* @param duration Стойността на oставащата кръв за взимане при горене, която искаме да зададем (1 - за да спрем горенето на играч).
*/
native set_user_fire_duration(id, duration)
/**
* Връща съответна стойност, ако играчът е заледен
*
* @param id Индекс на играча
* @return Връща true ако е и false - ако не е. (bool)
*/
native is_user_frozen(id)
/**
* Връща съответна стойност, ако играчът е заледен (започва да се топи)
*
* @param id Индекс на играча
* @return Връща true ако е и false - ако не е. (bool)
*/
native is_user_frozen_cool(id)
/**
* Запалва играч
*
* @param attacker Индекс на играча
* @param victim Индекс на играча жертва
* @param duration Максимална кръв за взимане при горене (0 - стойността ще се взима от CVAR-a vzbb_grenade_fire_duration)
*
* @noreturn
*/
native user_burn(attacker, victim, duration)
/**
* Заледява играч
*
* @param id Индекс на играча
*
* @noreturn
*/
native user_freeze(id)
/**
* Заледява играч (играчът веднага започва да се топи)
*
* @param id Индекс на играча
*
* @noreturn
*/
native user_freeze_cool(id)
/**
* Премахва заледяването на играч
*
* @param id Индекс на играча
*
* @noreturn
*/
native user_unfreeze(id)
/**
* Премахва топенето на играч
*
* @param id Индекс на играча
*
* @noreturn
*/
native user_unfreeze_cool(id)
/**
* Инфектира играч
*
* @param victim Индекс на жертвата
* @param infector Индекс на инфектиращия
*
* @noreturn
*/
native user_infect(victim, infector)
/**
* Деинфектира играч
*
* @param id Индекс на играча
*
* @noreturn
*/
native user_uninfect(id)
/**
* Връща забавния тип на блок
*
* @param ent Индекс на ентитито на блока
* @return Връща забавния тип на блока (int)
*/
native get_block_fun_type(ent)
/**
* Задава забавен тип на блок
*
* @param ent Индекс на ентитито на блока
* @param funtype Забавен тип на блока (BLOCKS_YELLOW - бързодвижещ се блок , BLOCKS_BLACK - недвижим блок , BLOCKS_BLUE - забавящ блок , BLOCKS_RED - запалващ блок)
*
* @noreturn
*/
native set_block_fun_type(ent, funtype)
/**
* Премахва забавния тип на блок
*
* @param ent Индекс на ентитито на блока
*
* @noreturn
*/
native reset_block_fun_type(ent)
/**
* Връща стойността на намалението на "Round Deal" в съответния рунд
*
* @return Връща стойността на намалението. (int)
*/
native get_deal_discount()
/**
* Връща съответна стойност дали итемът е в офертите на "Round Deal" в съответния рунд
*
* @return Връща true ако е и false - ако не е. (bool)
*/
native is_deal_offer(itemid)
/**
* Премахва бариерата (ако има такава)
*
* @noreturn
*/
native hide_barrierent()
/**
* Рестартира местоположението на бариерата (ако има такава)
*
* @noreturn
*/
native reset_barrierent()
/**
* Задава текст за HUD-a на играчите, на мястото на HUD-a за режима (използвайте при update_user_hud_data forward-a)
*
* @param text Tекстът (максимална дължина - 128 символа, стрингът трябва да е предварително форматиран)
*/
native set_hud_cache_text(text[])
/**
* Задава цвят (в RGB формат) за HUD-a на играчите, на мястото на HUD-a за режима (използвайте при update_user_hud_data forward-a)
*
* @param r Червен цвят
* @param g Зелен цвят
* @param b Син цвят
*
* @noreturn
*/
native set_hud_cache_colors(r, g, b)
/**
* Задава условие за показване на HUD-a на играчите, на мястото на HUD-a за режима (използвайте при update_user_hud_data forward-a)
*
* @param condition Използвайте true, за да се показва винаги при всички случаи
*
* @noreturn
*/
native set_hud_cache_condition(bool:condition)
/**
* Извиква фунцкията за показване на HUD-a на играчите
*
* @noreturn
*/
native force_user_hud_data()
/**
* Извиква функцията за менюто за оръжия
*
* @param id Индекс на играча
*
* @noreturn
*/
native force_weapon_menu(id)
/**
* Възвръща rendering-а на играча (полезно за премахване на glow и възвръщане на невидимостта на играча)
*
* @param id Индекс на играча
*
* @noreturn
*/
native restore_user_rendering(id)
/**
* Извиква се при избиране на зомби клас
*
* @param id Индекс на играча
* @param classid Индекс на зомби класа
*/
forward zombie_class_selected(id, classid)
/**
* Извиква се при избиране на итем от shop менюто
*
* @note Върнете стойност FORWARD_CONTINUE, за да блокирате купуването на даден итем.
*
* @param id Индекс на играча
* @param itemid Индекс на итема
*/
forward shop_item_selected(id, itemid)
/**
* Извиква се при теглене или бутане на блок
*
* @note Върнете стойност FORWARD_CONTINUE, за да спрете изпълнението на forward-a.
*
* @param id Индекс на играча
* @param pullpush_type Тип на местенето на блока (1 - теглене , 2 - бутане)
*/
forward block_pull_push(id, pullpush_type)
/**
* Извиква се след започването на бойната фаза
*/
forward battle_phase_begin()
/**
* Извиква се след принудителното започване на бойната фаза от админ (с командата /start)
*
* @param id Индекс на администраторът, написал командата
*/
forward battle_phase_begin_admin(id)
/**
* Извиква се преди хвърляне на граната
*
* @note Върнете стойност FORWARD_CONTINUE, за да спрете изпълнението на forward-a.
*
* @param owner Индекс на притежателя на гранатата
* @param ent Индекс на ентитито на гранатата
* @param nade_type Тип на гранатата (1 - HE grenade (FireNade) , 2 - Smoke grenade , 3 - Flashbang (FrostNade))
*/
forward nade_throw_pre(owner, ent, nade_type)
/**
* Извиква се след хвърляне на граната
*
* @param owner Индекс на притежателя на гранатата
* @param ent Индекс на ентитито на гранатата
* @param nade_type Тип на гранатата (1 - HE grenade (FireNade) , 2 - Smoke grenade , 3 - Flashbang (FrostNade))
*/
forward nade_throw_post(owner, ent, nade_type)
/**
* Извиква се преди всяко взимане на кръв при запалване на играч
*
* @param id Индекс на играча
*/
forward user_burn_pre(id)
/**
* Извиква се след всяко взимане на кръв при запалване на играч
*
* @param id Индекс на играча
*/
forward user_burn_post(id)
/**
* Извиква се при премахването на горенето на играч
*
* @param id Индекс на играча
*/
forward user_remove_burn(id)
/**
* Извиква се преди замразяване на играч
*
* @param id Индекс на играча
*/
forward user_freeze_pre(id)
/**
* Извиква се след замразяване на играч
*
* @param id Индекс на играча
*/
forward user_freeze_post(id)
/**
* Извиква се преди премахването на замразяването на играч
*
* @param id Индекс на играча
*/
forward user_unfreeze_pre(id)
/**
* Извиква се след премахването на замразяването на играч
*
* @param id Индекс на играча
*/
forward user_unfreeze_post(id)
/**
* Извиква се преди играч да започне да се топи
*
* @param id Индекс на играча
*/
forward user_freeze_cool_pre(id)
/**
* Извиква се след като играч започне да се топи
*
* @param id Индекс на играча
*/
forward user_freeze_cool_post(id)
/**
* Извиква се преди играч да спре да се топи
*
* @param id Индекс на играча
*/
forward user_unfreeze_cool_pre(id)
/**
* Извиква се след като играч спре да се топи
*
* @param id Индекс на играча
*/
forward user_unfreeze_cool_post(id)
/**
* Извиква се преди инфектиране на играч
*
* @note Върнете стойност FORWARD_CONTINUE, за да спрете изпълнението на forward-a.
*
* @param victim Индекс на жертвата
* @param infector Индекс на инфектиращия
*/
forward user_infect_pre(victim, infector)
/**
* Извиква се след инфектиране на играч
*
* @param victim Индекс на жертвата
*/
forward user_infect_post(victim)
/**
* Извиква се преди деинфектиране на играч
*
* @note Върнете стойност FORWARD_CONTINUE, за да спрете изпълнението на forward-a.
*
* @param id Индекс на играча
*/
forward user_uninfect_pre(id)
/**
* Извиква се след деинфектиране на играч
*
* @param id Индекс на играча
*/
forward user_uninfect_post(id)
/**
* Извиква се преди взимане на блок
*
* @note Върнете стойност FORWARD_CONTINUE, за да спрете изпълнението на forward-a.
*
* @param id Индекс на играча
*/
forward grab_block_pre(id)
/**
* Извиква се след взимане на блок
*
* @note Върнете стойност FORWARD_CONTINUE, за да спрете изпълнението на forward-a.
*
* @param id Индекс на играча
*/
forward grab_block_post(id)
/**
* Извиква се преди пускането на блок
*
* @param id Индекс на играча
*/
forward release_block_pre(id)
/**
* Извиква се след пускането на блок
*
* @param id Индекс на играча
*/
forward release_block_post(id)
/**
* Извиква се при всяко обновяване на HUD-а на играчите
*
* @note Върнете стойност FORWARD_CONTINUE, за да оставите работещ само HUD-a без другите функции на играчите в бойната фаза.
*/
forward update_user_hud_data()
/**
* Извиква се преди докосване на играч със забавен блок
*
* @note Върнете стойност FORWARD_CONTINUE, за да блокирате ефекта на забавния блок.
*
* @param id Индекс на играча
* @param id Индекс на ентитито на блока
* @param funtype Забавен тип на блока (BLOCKS_YELLOW - бързодвижещ се блок , BLOCKS_BLACK - недвижим блок , BLOCKS_BLUE - забавящ блок , BLOCKS_RED - запалващ блок)
*/
forward fun_block_touch_pre(id, ent, funtype)
/**
* Извиква се след докосване на играч със забавен блок
*
* @param id Индекс на играча
* @param id Индекс на ентитито на блока
* @param funtype Забавен тип на блока (BLOCKS_YELLOW - бързодвижещ се блок , BLOCKS_BLACK - недвижим блок , BLOCKS_BLUE - забавящ блок , BLOCKS_RED - запалващ блок)
*/
forward fun_block_touch_post(id, ent, funtype)