Код за потвърждение: Избери целия код
/*
---------------------------------------------------------
# # # #=== ### ## #
# ## #=== # # # #
# # #=== ### ## #
---------------------------------------------------------
vzbb_mod.inc
Library by <VeCo>
<VeCo>'s Zombie BaseBuilder Mod 4.0
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 http://www.amxmodxbg.org :)
---------------------------------------------------------
*/
#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
/*=======================================================================
-= Define-и =-
========================================================================*/
#define FORWARD_CONTINUE 777 // return ... (блокира forward)
#define NO_MAX_BUYS 0 // неограничен брой пъти купуване на итем
/*=======================================================================
-= Enum-и =-
========================================================================*/
// Кога може да се ползва итема?
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
}
/*=======================================================================
-= Нативи =-
========================================================================*/
/* :: Регистрира нов зомби клас
#classname - Името на зомби класа (пример: "Test Zombie")
#classinfo - Кратка информация относно зомби класа (пример: "g+ s-")
#classmdl - Модел на зомби класа (пример: "zombie" , трябва да се намира в models/player/име/име.mdl)
#classclawmdl - Модел на ръцете на зомби класа (пример: "claw" , трябва да се намира в models/име.mdl)
#health - Кръв на зомби класа (пример: 2000)
#gravity - Гравитация на зомби класа (пример: 0.5) (1.0 = 800 гравитаця , 0.5 = 400 гравитация ...)
#speed - Скорост на зомби класа (пример: 400.0) (0.0 = нормална скорост)
#access - Админ достъп нужен за избиране на класа (ADMIN_ALL - за всички)
::::: Фунцкията връща иднекса на класа. (int)
*/
native register_zombie_class(const classname[],const classinfo[], const classmdl[],const classclawmdl[], health,Float:gravity,Float:speed, access)
/* :: Регистрира нов итем в shop менюто
#itemname - Името на итема (пример: "Test Item")
#itemcost - Цена на итема (пример: 15)
#itemuse - Кога да може да се използва итема? (USE_BATTLE - в бойната фаза , USE_BUILD - в строителната фаза , USE_BOTH - и в двете фази)
#itemteam - Кой може да купува итема? (TEAM_ZOMBIES - зомбитата , TEAM_HUMANS - хората , TEAM_BOTH - всички)
#access - Админ достъп нужен за купуване на итема (ADMIN_ALL - за всички)
#maxbuys - Колко пъти да може да се купи итемът на рунд? (NO_MAX_BUYS - неограничен брой пъти)
::::: Фунцкията връща иднекса на итема. (int)
*/
native register_shop_item(const itemname[], itemcost, itemuse, itemteam, access, maxbuys)
/* :: Връща иднекса на класа на играча (-1 ако е Classic Zombie)
#id - индекс на играча
::::: Фунцкията връща иднекса на класа на играча. (int)
*/
native get_user_zombie_class(id)
/* :: Задава иднекса на класа на играча
#id - индекс на играча
#classid - индекс на зомби класа (-1 - Classic Zombie)
*/
native set_user_zombie_class(id,classid)
/* :: Връща съответна стойност ако играчът е зомби
#id - индекс на играча
::::: Фунцкията връща true ако е зомби и false - ако не е. (bool)
*/
native is_user_zombie(id)
/* :: Връща съответна стойност ако играчът е човек
#id - индекс на играча
::::: Фунцкията връща true ако е човек и false - ако не е. (bool)
*/
native is_user_human(id)
/* :: Връща стойността на кредитите на играч
#id - индекс на играча
::::: Фунцкията връща кредитите на играч. (int)
*/
native get_user_credits(id)
/* :: Задава стойността на кредитите на играч
#id - индекс на играча
#credits - стойността на кредитите, които искаме да зададем (използвайте с get_user_credits ако искате да прибавите/премахнете кредити на играч)
*/
native set_user_credits(id,credits)
/* :: Връща стойността на разстоянието на играч между последния блок, който е движел
#id - индекс на играча
::::: Фунцкията връща разстоянието на играч между последния блок, който е движел. (float)
*/
native get_user_block_distance(id)
/* :: Задава стойността на разстоянието на играч между последния блок, който е движел
#id - индекс на играча
#dist - стойността на разстоянието на играч между последния блок, който е движел, което искаме да зададем
*/
native set_user_block_distance(id,Float:dist)
/* :: Връща общия брой зомби класове, заредени в момента
::::: Фунцкията връща общия брой зомби класове, заредени в момента. (int)
*/
native get_total_zombie_classes()
/* :: Връща общия брой shop итеми, заредени в момента
::::: Фунцкията връща общия брой shop итеми, заредени в момента. (int)
*/
native get_total_shop_items()
/* :: Връща съответна стойност ако играчът може да строи в бойната фаза
#id - индекс на играча
::::: Фунцкията връща true ако играчът може да строи в бойната фаза и false - ако не може. (bool)
*/
native get_user_can_build_battle(id)
/* :: Задава стойността на играч, за да може да мести блокове и в бойната фаза (действа до стартирането на следващата бойна фаза)
#id - индекс на играча
#set - true : за да може да строи и false : за да не може
*/
native set_user_can_build_battle(id,set)
/* :: Връща индекс на ентитито на блока, който играчът мести в момента
#id - индекс на играча
::::: Фунцкията връща индекс на ентитито на блока, който играчът мести в момента. (int)
*/
native get_user_block_ent(id)
/* :: Задава индекс на ентитито на блока, който играчът мести в момента
#id - индекс на играча
#ent - индекс на ентитито
*/
native set_user_block_ent(id,ent)
/* :: Връща сътветна стойност ако е freezetime в момента
::::: Фунцкията връща true ако е и false - ако не е. (bool)
*/
native is_freezetime()
/* :: Връща оставащото време на строителната фаза
::::: Фунцкията връща оставащото време на строителната фаза в секунди. (int)
*/
native get_build_phase_remaining_time()
/* :: Връща сътветна стойност ако играчите могат да строят (ако в момента е строителната фаза)
::::: Фунцкията връща true ако могат и false - ако не могат. (bool)
*/
native user_can_build()
/* :: Задава дали играчите могат да строят (дали в момента е строителна фаза)
#build - true - ако могат, false - ако не могат
*/
native set_user_can_build(build)
/* :: Връща сътветна стойност на режима на игра в момента
::::: Фунцкията връща сътветна стойност на режима на игра в момента (MODE_NORMAL - нормален режим (с убийства) , MODE_INFECTION - режим с инфекции) . (int)
*/
native get_roundmode()
/* :: Връща съответна стойност ако играчът е бил зомби при раждането си
#id - индекс на играча
::::: Фунцкията връща true ако е бил зомби и false - ако не е бил. (bool)
*/
native was_user_zombie(id)
/* :: Задава стойност дали играчът е бил зомби при раждането си (ако е бил накрая на рунда ще бъде човек, използва се при инфекции)
#id - индекс на играча
#true - стойността - 1 ако е бил, 0 - ако не е
*/
native set_user_was_zombie(id,true)
/* :: Връща съответна стойност ако играчът е баннат (местенето на блоковете)
#id - индекс на играча
::::: Фунцкията връща true ако е и false - ако не е. (bool)
*/
native is_user_banned(id)
/* :: Връща стойността на оставащата кръв за взимане при горене
#id - индекс на играча
::::: Фунцкията връща стойността на оставащата кръв за взимане при горене. (int)
*/
native get_user_fire_duration(id)
/* :: Задава стойността на oставащата кръв за взимане при горене
#id - индекс на играча
#dist - стойността на oставащата кръв за взимане при горене, която искаме да зададем (1 - за да спрем горенето на играч)
*/
native set_user_fire_duration(id,duration)
/* :: Връща съответна стойност ако играчът е заледен
#id - индекс на играча
::::: Фунцкията връща true ако е и false - ако не е. (bool)
*/
native is_user_frozen(id)
/* :: Връща съответна стойност ако играчът е заледен (започва да се топи)
#id - индекс на играча
::::: Фунцкията връща true ако е и false - ако не е. (bool)
*/
native is_user_frozen_cool(id)
/* :: Запалва играч
#attacker - индекс на играча нападател
#victim - индекс на играча жертва
#duration - максимална кръв за взимане при горене (0 - стойността ще се взима от CVAR-a vzbb_grenade_fire_duration)
*/
native user_burn(attacker,victim,duration)
/* :: Заледява играч
#id - индекс на играча
*/
native user_freeze(id)
/* :: Заледява играч (играчът веднага започва да се топи)
#id - индекс на играча
*/
native user_freeze_cool(id)
/* :: Премахва заледяването на играч
#id - индекс на играча
*/
native user_unfreeze(id)
/* :: Премахва топенето на играч
#id - индекс на играча
*/
native user_unfreeze_cool(id)
/* :: Инфектира играч
#victim - индекс на жертвата
#infector - индекс на инфектиращия
*/
native user_infect(victim,infector)
/* :: Деинфектира играч
#id - индекс на играча
*/
native user_uninfect(id)
/* :: Връща забавния тип на блок
#ent - индекс на ентитито на блока
::::: Фунцкията връща забавния тип на блока (int)
*/
native get_block_fun_type(ent)
/* :: Задава забавен тип на блок
#ent - индекс на ентитито на блока
#funtype - забавен тип на блока
(BLOCKS_YELLOW - бързодвижещ се блок , BLOCKS_BLACK - недвижим блок;
BLOCKS_BLUE - забавящ блок , BLOCKS_RED - запалващ блок)
*/
native set_block_fun_type(ent,funtype)
/* :: Премахва забавния тип на блок
#ent - индекс на ентитито на блока
*/
native reset_block_fun_type(ent)
/* :: Връща стойността на намалението на "Round Deal" в съответния рунд
::::: Фунцкията връща стойността на намалението. (int)
*/
native get_deal_discount()
/* :: Връща съответна стойност дали итемът е в офертите на "Round Deal" в съответния рунд
::::: Фунцкията връща true ако е и false - ако не е. (bool)
*/
native is_deal_offer(itemid)
/* :: Премахва бариерата (ако има такава) */
native hide_barrierent()
/* :: Рестартира местоположението на бариерата (ако има такава) */
native reset_barrierent()
/* :: Задава текст за HUD-a на играчите, на мястото на HUD-a за режима (използвайте при update_user_hud_data forward-a)
#text - текстът (максимална дължина - 128 символа, стрингът трябва да е предварително форматиран)
*/
native set_hud_cache_text(text[])
/* :: Задава цвят (в RGB формат) за HUD-a на играчите, на мястото на HUD-a за режима (използвайте при update_user_hud_data forward-a)
#r - червен цвят
#g - зелен цвят
#b - син цвят
*/
native set_hud_cache_colors(r,g,b)
/* :: Задава условие за показване на HUD-a на играчите, на мястото на HUD-a за режима (използвайте при update_user_hud_data forward-a)
#condition - условие (използвайте true, за да се показва винаги при всички случаи)
*/
native set_hud_cache_condition(bool:condition)
/* :: Извиква фунцкията за показване на HUD-a на играчите */
native force_user_hud_data()
/* :: Извиква функцията за менюто за оръжия
#id - индекс на играча
*/
native force_weapon_menu(id)
/* :: Възвръща rendering-а на играча (полезно за премхване на glow и възвръщане на невидимостта на играча)
#id - индекс на играча
*/
native restore_user_rendering(id)
/*=======================================================================
-= Forward-и =-
========================================================================*/
/* :: Извиква се при избиране на зомби клас
#id - индекс на играча
#classid - индекс на зомби класа
*/
forward zombie_class_selected(id,classid)
/* :: Извиква се при избиране на итем от shop менюто
#id - индекс на играча
#itemid - индекс на итема
:::::: Върнете стойност FORWARD_CONTINUE, за да блокирате купуването на даден итем.
*/
forward shop_item_selected(id,itemid)
/* :: Извиква се при теглене или бутане на блок
#id - индекс на играча
#pullpush_type - тип на местенето на блока (1 - теглене , 2 - бутане)
:::::: Върнете стойност FORWARD_CONTINUE, за да спрете изпълнението на forward-a.
*/
forward block_pull_push(id,pullpush_type)
/* :: Извиква се след започването на бойната фаза */
forward battle_phase_begin()
/* :: Извиква се след принудителното започване на бойната фаза от админ (с командата /start)
#id - индекс на администраторът, написал командата
*/
forward battle_phase_begin_admin(id)
/* :: Извиква се преди хвърляне на граната
#owner - индекс на притежателя на гранатата
#ent - индекс на ентитито на гранатата
#nade_type - тип на гранатата (1 - HE grenade (FireNade) , 2 - Smoke grenade , 3 - Flashbang (FrostNade))
:::::: Върнете стойност FORWARD_CONTINUE, за да спрете изпълнението на forward-a.
*/
forward nade_throw_pre(owner,ent,nade_type)
/* :: Извиква се след хвърляне на граната
#owner - индекс на притежателя на гранатата
#ent - индекс на ентитито на гранатата
#nade_type - тип на гранатата (1 - HE grenade (FireNade) , 2 - Smoke grenade , 3 - Flashbang (FrostNade))
*/
forward nade_throw_post(owner,ent,nade_type)
/* :: Извиква се преди всяко взимане на кръв при запалване на играч
#id - индекс на играча
*/
forward user_burn_pre(id)
/* :: Извиква се след всяко взимане на кръв при запалване на играч
#id - индекс на играча
*/
forward user_burn_post(id)
/* :: Извиква се при премахването на горенето на играч
#id - индекс на играча
*/
forward user_remove_burn(id)
/* :: Извиква се преди замразяване на играч
#id - индекс на играча
*/
forward user_freeze_pre(id)
/* :: Извиква се след замразяване на играч
#id - индекс на играча
*/
forward user_freeze_post(id)
/* :: Извиква се преди премахването на замразяването на играч
#id - индекс на играча
*/
forward user_unfreeze_pre(id)
/* :: Извиква се след премахването на замразяването на играч
#id - индекс на играча
*/
forward user_unfreeze_post(id)
/* :: Извиква се преди играч да започне да се топи
#id - индекс на играча
*/
forward user_freeze_cool_pre(id)
/* :: Извиква се след като играч започне да се топи
#id - индекс на играча
*/
forward user_freeze_cool_post(id)
/* :: Извиква се преди играч да спре да се топи
#id - индекс на играча
*/
forward user_unfreeze_cool_pre(id)
/* :: Извиква се след като играч спре да се топи
#id - индекс на играча
*/
forward user_unfreeze_cool_post(id)
/* :: Извиква се преди инфектиране на играч
#victim - индекс на жертвата
#infector - индекс на инфектиращия
:::::: Върнете стойност FORWARD_CONTINUE, за да спрете изпълнението на forward-a.
*/
forward user_infect_pre(victim,infector)
/* :: Извиква се след инфектиране на играч
#victim - индекс на жертвата
*/
forward user_infect_post(victim)
/* :: Извиква се преди деинфектиране на играч
#id - индекс на играча
:::::: Върнете стойност FORWARD_CONTINUE, за да спрете изпълнението на forward-a.
*/
forward user_uninfect_pre(id)
/* :: Извиква се след деинфектиране на играч
#id - индекс на играча
*/
forward user_uninfect_post(id)
/* :: Извиква се преди взимане на блок
#id - индекс на играча
:::::: Върнете стойност FORWARD_CONTINUE, за да спрете изпълнението на forward-a.
*/
forward grab_block_pre(id)
/* :: Извиква се след взимане на блок
#id - индекс на играча
:::::: Върнете стойност FORWARD_CONTINUE, за да спрете изпълнението на forward-a.
*/
forward grab_block_post(id)
/* :: Извиква се преди пускането на блок
#id - индекс на играча
*/
forward release_block_pre(id)
/* :: Извиква се след пускането на блок
#id - индекс на играча
*/
forward release_block_post(id)
/* :: Извиква се при всяко обновяване на HUD-а на играчите
:::::: Върнете стойност FORWARD_CONTINUE, за да оставите работещ само HUD-a без другите функции на играчите в бойната фаза.
*/
forward update_user_hud_data()
/* :: Извиква се преди докосване на играч със забавен блок
#id - индекс на играча
#ent - индекс на ентитито на блока
#funtype - забавен тип на блока
(BLOCKS_YELLOW - бързодвижещ се блок , BLOCKS_BLACK - недвижим блок;
BLOCKS_BLUE - забавящ блок , BLOCKS_RED - запалващ блок)
:::: Върнете стойност FORWARD_CONTINUE, за да блокирате ефекта на забавния блок.
*/
forward fun_block_touch_pre(id,ent,funtype)
/* :: Извиква се след докосване на играч със забавен блок
#id - индекс на играча
#ent - индекс на ентитито на блока
#funtype - забавен тип на блока
(BLOCKS_YELLOW - бързодвижещ се блок , BLOCKS_BLACK - недвижим блок;
BLOCKS_BLUE - забавящ блок , BLOCKS_RED - запалващ блок)
*/
forward fun_block_touch_post(id,ent,funtype)
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1026\\ f0\\ fs16 \n\\ par }
*/