PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#define PLUGIN "JB duelo First"
#define VERSION "1.0"
#define AUTHOR "Rube e .ThePro & Andre"
new g_fwid
new g_iMax, i
new iDuelSelected, iDuelMenu
new szDuelsNames[][] = {
"Duelo de Socos",
"Duelo de Eagle",
"Duelo de Granadas",
"Duelo de Scout",
"Duelo de AWP"
}
new iDuel[33]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("say /duelo", "cmdDuelo");
register_clcmd("say_team /duelo", "cmdDuelo");
register_clcmd("say .duelo", "cmdDuelo");
register_clcmd("say_team .duelo", "cmdDuelo");
register_event("HLTV", "round_start", "a", "1=0", "2=0")
RegisterHam(Ham_Killed, "player", "fwKilled_post", 1)
iDuelMenu = menu_create("\r[x DUELO x]^n\yEscolha o tipo de Duelo:", "duelomenu_Handler")
for(i = 0; i < sizeof(szDuelsNames); i++)
menu_additem(iDuelMenu, szDuelsNames[i])
menu_setprop(iDuelMenu, MPROP_EXIT, MEXIT_NEVER)
g_iMax = get_maxplayers()
unregister_forward(FM_PrecacheEvent, g_fwid, 1)
register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
}
weapon_attack(id)
{
if(iDuel[id] != -1 && get_user_weapon(id) == CSW_AWP)
{
cs_set_user_bpammo(id, CSW_AWP, 1)
}
}
/*get_weapon_entId(id, weapon = 0)
{
new szWeaponName[40]
get_weaponname(weapon? weapon : get_user_weapon(id), szWeaponName, charsmax(szWeaponName))
new ent = -1
if( (ent = find_ent_by_owner(ent, szWeaponName, id)) != 0)
return ent
return -1
}*/
public fwKilled_post(id, killer)
{
if(!is_user_connected(id) || !is_user_connected(killer) || killer == id)
return
iDuel[id] = iDuel[killer] = -1
if(cs_get_user_team(killer) == CS_TEAM_T && cs_get_user_team(id) == CS_TEAM_CT)
cmdDuelo(killer)
}
public round_start()
{
for (i = 0; i <= g_iMax; i++)
{
if(!is_user_connected(i))
continue
iDuel[i] = -1
fm_set_rendering(i, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 20)
}
}
public client_disconnect(id)
iDuel[id] = -1
public client_connect(id)
iDuel[id] = -1
public cmdDuelo(id)
{
if(cs_get_user_team(id) != CS_TEAM_T || !is_user_alive(id) || iDuel[id] != -1)
return 1
new ctCount, trCount
get_playersCount(ctCount, trCount)
if(trCount > 1 || ctCount == 0)
return 1
menu_display(id, iDuelMenu)
return 1
}
public duelomenu_Handler(id, menu, item)
{
ctMenu(id, iDuelSelected = item)
return 1
}
ctMenu(id, duel)
{
new szBuffer[50]
formatex(szBuffer, charsmax(szBuffer), "\r[x DUELO x]^n\yEscolha o Guarda para o %s", szDuelsNames[duel])
new menu = menu_create(szBuffer, "ctMenu_Handler")
new szName[50], szId[10]
for(i = 1; i <= g_iMax; i++)
{
if(!is_user_alive(i) || cs_get_user_team(i) != CS_TEAM_CT)
continue
get_user_name(i, szName, charsmax(szName))
num_to_str(i, szId, charsmax(szId))
menu_additem(menu, szName, szId)
}
menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
menu_display(id, menu)
}
public ctMenu_Handler(id, menu, item)
{
new info[10], _Temp
menu_item_getinfo(menu, item, _Temp, info, charsmax(info), _, _, _Temp)
new target = str_to_num(info)
if(!is_user_alive(target) || cs_get_user_team(target) != CS_TEAM_CT)
{
ctMenu(id, iDuelSelected)
return
}
strip_weapons(target)
strip_weapons(id)
fm_set_rendering(target, kRenderFxGlowShell, 47, 61, 198, kRenderNormal, 20)
fm_set_rendering(id, kRenderFxGlowShell, 187, 26, 22, kRenderNormal, 20)
set_user_health(target, 250)
set_user_health(id, 250)
new szCtName[40], szTrName[40]
get_user_name(target, szCtName, charsmax(szCtName))
get_user_name(id, szTrName, charsmax(szTrName))
set_hudmessage(0, 255, 0, -1.0, 0.40, 2, 5.0, 8.0, 0.0, 0.0, 10)
show_hudmessage(0, "%s VAI DUELAR CONTRA %s^n EM UM %s", szCtName, szTrName, szDuelsNames[iDuelSelected])
switch(iDuel[id] = iDuel[target] = iDuelSelected)
{
case 0: GiveWeapon(target, id, CSW_KNIFE)
case 1: GiveWeapon(target, id, CSW_DEAGLE, 35)
case 2: GiveWeapon(target, id, CSW_HEGRENADE, 50)
case 3: GiveWeapon(target, id, CSW_SCOUT, 90)
case 4: GiveWeapon(target, id, CSW_AWP, 1)
}
iDuelSelected = -1
menu_destroy(menu)
return
}
GiveWeapon(ctId, trId, weapon, bpammo = -1, weaponammo = -1)
{
new szName[30]
get_weaponname(weapon, szName, charsmax(szName))
new ent[2]
ent[0] = give_item(ctId, szName)
ent[1] = give_item(trId, szName)
if(bpammo != -1)
{
cs_set_user_bpammo(ctId, weapon, bpammo)
cs_set_user_bpammo(trId, weapon, bpammo)
}
if(weaponammo != -1)
{
cs_set_weapon_ammo(ent[0], weaponammo)
cs_set_weapon_ammo(ent[1], weaponammo)
}
}
strip_weapons(id)
{
strip_user_weapons(id)
set_pdata_int(id, 116, 0)
}
get_playersCount(&ct, &tr)
{
ct = 0
tr = 0
for(i = 1; i <= g_iMax; i++)
{
if (!is_user_alive(i))
continue
switch (cs_get_user_team(i))
{
case CS_TEAM_CT:
ct++
case CS_TEAM_T:
tr++
}
}
}
// by VEN
// http://forums.alliedmods.net/showthread.php?t=54887
new const g_guns_events[][] = {
"events/awp.sc",
"events/g3sg1.sc",
"events/ak47.sc",
"events/scout.sc",
"events/m249.sc",
"events/m4a1.sc",
"events/sg552.sc",
"events/aug.sc",
"events/sg550.sc",
"events/m3.sc",
"events/xm1014.sc",
"events/usp.sc",
"events/mac10.sc",
"events/ump45.sc",
"events/fiveseven.sc",
"events/p90.sc",
"events/deagle.sc",
"events/p228.sc",
"events/glock18.sc",
"events/mp5n.sc",
"events/tmp.sc",
"events/elite_left.sc",
"events/elite_right.sc",
"events/galil.sc",
"events/famas.sc"
}
new g_guns_eventids_bitsum
public plugin_precache()
{
g_fwid = register_forward(FM_PrecacheEvent, "fwPrecacheEvent", 1)
}
public fwPrecacheEvent(type, const name[])
{
for (new i = 0; i < sizeof g_guns_events; ++i)
{
if (equal(g_guns_events[i], name))
{
g_guns_eventids_bitsum |= (1<<get_orig_retval())
return FMRES_HANDLED
}
}
return FMRES_IGNORED
}
public fwPlaybackEvent(flags, invoker, eventid)
{
if (!(g_guns_eventids_bitsum & (1<<eventid)) || !(1 <= invoker <= g_iMax))
return FMRES_IGNORED
weapon_attack(invoker)
return FMRES_HANDLED
}