Версия: 1.0
Описание:
Замена стандартной системе жизней Deathrun. Делал для своего сервера, потом забил на него и решил скинуть сюда. Дополнительно использует ColorChat и Dhudmessage ̶м̶о̶д̶у̶л̶и̶ инклуды, которые у всех есть. При вводе любого сообщения в чат со словом "life", выводит меню, содержащее: продажу жизни за 8000, покупку жизни за 8500, возрождение за жизнь. В титле пишет кол-во жизней. Жизнь дает за убитого противника. В начале раунда DHUDом на несколько секунд показывает кол-во ваших жизней. При любых действиях в меню в чат красиво оформленным сообщение пишет то, что вы сделали.
Используемые модули:
Cstrike
Fun
Hamsandwich
Настройки:
Необходимо отключить стандартную систему жизней DeathRun.
Исходник:
[pawn]
- #include <amxmodx>
- #include <colorchat>
- #include <fun>
- #include <hamsandwich>
- #include <cstrike>
- #include <dhudmessage>
- new gLifes[33]
- public plugin_init()
- {
- register_plugin("[DR] Lifes", "1.0", "Madara")
- register_clcmd("say /life", "LifesMenu")
- register_clcmd("say /lifes", "LifesMenu")
- register_logevent("RoundStart", 2, "0=World triggered", "1=Round_Start")
- RegisterHam(Ham_Killed, "player", "EventDeath", 1)
- }
- public RoundStart()
- {
- for(new i=1;i<get_maxplayers();i++)
- {
- if(is_user_connected(i) && get_user_team(i) == 2)
- {
- set_dhudmessage(100, 255, 100, 0.15, 0.7, 1, 6.0, 3.0)
- if(gLifes[i])
- show_dhudmessage(i, "У тебя %d дополнительных жизней.", gLifes[i])
- else
- show_dhudmessage(i, "У тебя нет дополнительных жизней.")
- }
- }
- }
- public EventDeath(victim, attacker)
- {
- gLifes[attacker]++
- if(get_user_team(victim) == 2)
- {
- if(gLifes[victim])
- set_task(1.5, "LifesMenu", victim)
- }
- return PLUGIN_CONTINUE
- }
- public LifesMenu(id)
- {
- new title[128]
- format(title, 127, "\wУ тебя осталось \r%d \wжизней.", gLifes[id])
- new iMenu = menu_create(title, "MenuHandler")
- if(gLifes[id] && CheckCt())
- menu_additem(iMenu, "\wВозродиться за \r1 жизнь", "1")
- else
- menu_additem(iMenu, "\dВозродиться за 1 жизнь", "1")
- if(gLifes[id])
- menu_additem(iMenu, "\wПродать жизнь за \r$8000", "2")
- else
- menu_additem(iMenu, "\dПродать жизнь за $8000", "2")
- if(cs_get_user_money(id) >= 8500)
- menu_additem(iMenu, "\wКупить жизнь за \r$8500", "3")
- else
- menu_additem(iMenu, "\dКупить жизнь за $8500", "3")
- menu_setprop(iMenu , MPROP_EXITNAME, "Остаться мёртвым")
- menu_setprop(iMenu , MPROP_EXIT, MEXIT_ALL)
- menu_display(id, iMenu, 0)
- }
- public MenuHandler(id, menu, item)
- {
- if (item == MENU_EXIT)
- {
- menu_destroy(menu)
- return PLUGIN_HANDLED
- }
- new s_Data[6], s_Name[64], i_Access, i_Callback
- menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
- new i_Key = str_to_num(s_Data)
- switch(i_Key)
- {
- case 1:
- {
- if(gLifes[id])
- {
- if(CheckCt() && get_user_team(id) != 3)
- {
- gLifes[id]=gLifes[id]-1
- ExecuteHam( Ham_CS_RoundRespawn , id)
- ColorChat(id, BLUE, "^4[DR] ^1Ты возродился ^3за одну жизнь^1.")
- }
- if(!CheckCt())
- {
- ColorChat(id, BLUE, "^4[DR] ^1Ты не можешь возродиться, когда остался последний кт.")
- }
- }else{
- ColorChat(id, BLUE, "^4[DR] ^1Ты не можешь возродиться, т.к. у тебя нет жизней")
- LifesMenu(id)
- }
- }
- case 2:
- {
- if(gLifes[id])
- {
- gLifes[id]=gLifes[id]-1
- cs_set_user_money(id, cs_get_user_money(id)+8000)
- ColorChat(id, BLUE, "^4[DR] ^1Ты продал одну жизнь за ^3$8000.")
- LifesMenu(id)
- }else{
- ColorChat(id, BLUE, "^4[DR] ^1У тебя нет жизней, чтобы их продать.")
- LifesMenu(id)
- }
- }
- case 3:
- {
- if(cs_get_user_money(id) >= 8500)
- {
- cs_set_user_money(id, cs_get_user_money(id)-8500)
- gLifes[id]=gLifes[id]+1
- ColorChat(id, BLUE, "^4[DR] ^1Ты купил одну жизнь за ^3$8500.")
- LifesMenu(id)
- }else{
- ColorChat(id, BLUE, "^4[DR] ^1У тебя нет денег на одну жизнь.")
- LifesMenu(id)
- }
- }
- }
- menu_destroy(menu)
- return PLUGIN_HANDLED
- }
- stock CheckCt( )
- {
- new
- szPlayers[ 32 ] , iNum , iCt;
- get_players( szPlayer , iNum );
- for( new i; i < iNum; i++ )
- {
- new iPlayer; iPlayer = szPlayer[ i ];
- if( !is_user_alive( iPlayer ) || !is_user_bot( iPlayer ) )
- continue;
- if( get_user_team( iPlayer ) == 2 )
- {
- iCt++;
- }
- }
- return iCt;
- }