PHP- Kodu:
#include <amxmodx>
#include <cstrike>
#include <fun>
#include <engine>
#include <fakemeta>
new g_MaxBPAmmo[31] = {
0,
52, //CSW_P228
0,
90, //CSW_SCOUT
1, //CSW_HEGRENADE
32, //CSW_XM1014
1, //CSW_C4
100, //CSW_MAC10
90, //CSW_AUG
1, //CSW_SMOKEGRENADE
120, //CSW_ELITE
100, //CSW_FIVESEVEN
100, //CSW_UMP45
90, //CSW_SG550
90, //CSW_GALIL
90, //CSW_FAMAS
100, //CSW_USP
120, //CSW_GLOCK18
30, //CSW_AWP
120, //CSW_MP5NAVY
200, //CSW_M249
21, //CSW_M3
90, //CSW_M4A1
120, //CSW_TMP
90, //CSW_G3SG1
2, //CSW_FLASHBANG
35, //CSW_DEAGLE
90, //CSW_SG552
90, //CSW_AK47
0, //CSW_KNIFE
100 //CSW_P90
}
new g_MaxClips[31] = {
0,
4, //CSW_P228
0,
3, //CSW_SCOUT
0, //CSW_HEGRENADE
4, //CSW_XM1014
0, //CSW_C4
9, //CSW_MAC10
3, //CSW_AUG
0, //CSW_SMOKEGRENADE
4, //CSW_ELITE
2, //CSW_FIVESEVEN
9, //CSW_UMP45
3, //CSW_SG550
3, //CSW_GALIL
3, //CSW_FAMAS
9, //CSW_USP
4, //CSW_GLOCK18
3, //CSW_AWP
4, //CSW_MP5NAVY
7, //CSW_M249
4, //CSW_M3
3, //CSW_M4A1
4, //CSW_TMP
3, //CSW_G3SG1
0, //CSW_FLASHBANG
5, //CSW_DEAGLE
3, //CSW_SG552
3, //CSW_AK47
0, //CSW_KNIFE
2 //CSW_P90
}
new g_ClipSize[31] = {
0,
13, //CSW_P228
0,
10, //CSW_SCOUT
0, //CSW_HEGRENADE
7, //CSW_XM1014
0, //CSW_C4
30, //CSW_MAC10
30, //CSW_AUG
0, //CSW_SMOKEGRENADE
30, //CSW_ELITE
20, //CSW_FIVESEVEN
25, //CSW_UMP45
30, //CSW_SG550
35, //CSW_GALIL
25, //CSW_FAMAS
12, //CSW_USP
20, //CSW_GLOCK18
10, //CSW_AWP
30, //CSW_MP5NAVY
100, //CSW_M249
8, //CSW_M3
30, //CSW_M4A1
30, //CSW_TMP
20, //CSW_G3SG1
0, //CSW_FLASHBANG
7, //CSW_DEAGLE
30, //CSW_SG552
30, //CSW_AK47
0, //CSW_KNIFE
50 //CSW_P90
}
new g_AmmoType[31] = {
0,
9, //CSW_P228
0,
2, //CSW_SCOUT
12, //CSW_HEGRENADE
5, //CSW_XM1014
14, //CSW_C4
6, //CSW_MAC10
4, //CSW_AUG
13, //CSW_SMOKEGRENADE
10, //CSW_ELITE
7, //CSW_FIVESEVEN
6, //CSW_UMP45
4, //CSW_SG550
4, //CSW_GALIL
4, //CSW_FAMAS
6, //CSW_USP
10, //CSW_GLOCK18
1, //CSW_AWP
10, //CSW_MP5NAVY
3, //CSW_M249
5, //CSW_M3
4, //CSW_M4A1
10, //CSW_TMP
2, //CSW_G3SG1
11, //CSW_FLASHBANG
8, //CSW_DEAGLE
4, //CSW_SG552
2, //CSW_AK47
0, //CSW_KNIFE
7 //CSW_P90
}
new g_AmmoName[15][] = {
"",
"ammo_338magnum",
"ammo_762nato",
"ammo_556natobox",
"ammo_556nato",
"ammo_buckshot",
"ammo_45acp",
"ammo_57mm",
"ammo_50ae",
"ammo_357sig",
"ammo_9mm",
"",
"",
"",
""
}
new bool:g_restart_attempt[33]
new bool:g_HideGiveClips[33]
new bool:g_FirstSpawn[33]
new g_LastMessageID
new g_LastMessageType
new g_LastMessage[33]
new g_LastWeapPickup[33]
new bool:g_Spawned[33]
new g_BoughtWeapon[33]
new g_WeapPickupMsg
new g_MoneyMsg
new pv_fa_enable
new pv_fa_altclips
public plugin_init()
{
register_plugin("Free ammo", "1.4", "asstolavista")
register_event("ResetHUD", "event_hud_reset", "be")
register_clcmd("fullupdate", "clcmd_fullupdate")
register_event("TextMsg", "event_restart_attempt", "a", "2=#Game_will_restart_in")
register_event("HLTV", "event_new_round", "a", "1=0", "2=0")
register_message(get_user_msgid("AmmoPickup"), "message_ammo_pickup")
g_WeapPickupMsg = get_user_msgid("WeapPickup")
g_MoneyMsg = get_user_msgid("Money")
register_forward(FM_MessageBegin, "forward_message_begin", 1)
register_forward(FM_WriteByte, "forward_write_byte", 1)
pv_fa_enable = register_cvar("fa_enable", "1")
pv_fa_altclips = register_cvar("fa_altclips", "0")
}
public client_connect(id)
{
g_restart_attempt[id] = false
g_HideGiveClips[id] = false
g_FirstSpawn[id] = true
g_LastMessage[id] = 0
g_LastWeapPickup[id] = 0
g_Spawned[id] = false
g_BoughtWeapon[id] = 0
}
public client_disconnect(id)
{
g_restart_attempt[id] = false
g_HideGiveClips[id] = false
g_FirstSpawn[id] = true
g_LastMessage[id] = 0
g_LastWeapPickup[id] = 0
g_Spawned[id] = false
g_BoughtWeapon[id] = 0
}
public clcmd_fullupdate()
{
return PLUGIN_HANDLED
}
public event_restart_attempt()
{
new players[32], num_players
get_players(players, num_players, "a")
for (new i; i < num_players; ++i)
g_restart_attempt[players[i]] = true
}
public event_hud_reset(id)
{
if (g_restart_attempt[id]) {
g_restart_attempt[id] = false
return
}
event_player_spawn(id)
}
public event_player_spawn(id)
{
if (get_pcvar_num(pv_fa_enable) == 1) {
g_HideGiveClips[id] = true
g_Spawned[id] = true
}
}
public do_player_spawn(id)
{
new weap_ids[32], num_weaps
get_user_weapons(id, weap_ids, num_weaps)
for (new i = 0; i < num_weaps; i++) {
new weap_id = weap_ids[i]
if (fill_weapon(id, weap_id)) {
if (g_FirstSpawn[id]) {
if (get_pcvar_num(pv_fa_altclips) != 1)
cs_set_user_bpammo(id, weap_id, 0)
fill_bpammo_show(id, weap_id)
}
else
fill_bpammo(id, weap_id)
}
}
give_item(id,"weapon_hegrenade")
set_user_armor(id,100)
g_FirstSpawn[id] = false
}
public event_new_round()
{
if (get_pcvar_num(pv_fa_enable) == 1) {
new players[32], num_players
get_players(players, num_players, "a")
for (new j = 0; j < num_players; j++) {
new id = players[j]
new weap_ids[32], num_weaps
get_user_weapons(id, weap_ids, num_weaps)
for (new i = 0; i < num_weaps; i++)
if (fill_weapon(id, weap_ids[i]))
fill_bpammo(id, weap_ids[i])
}
}
}
public message_ammo_pickup(msg_id, id, ent)
{
if (get_pcvar_num(pv_fa_enable) == 1) {
if (g_HideGiveClips[id]) {
g_HideGiveClips[id] = false
return PLUGIN_HANDLED
}
}
return PLUGIN_CONTINUE
}
public forward_message_begin(msg_dest, msg_type, const Float:ORIGIN[3], const ED)
{
if (ED < 1 || ED > 32)
return
new id = ED
if (msg_type == g_MoneyMsg && g_LastMessage[id] == g_WeapPickupMsg)
event_weapon_buy(id, g_LastWeapPickup[id])
g_LastMessageID = id
g_LastMessageType = msg_type
g_LastMessage[id] = msg_type
}
public forward_write_byte(value)
{
if (g_LastMessageType == g_WeapPickupMsg)
g_LastWeapPickup[g_LastMessageID] = value
}
public event_weapon_buy(id, weap_id)
{
g_BoughtWeapon[id] = weap_id
}
public do_weapon_buy(id, weap_id)
{
if (fill_weapon(id, weap_id))
fill_bpammo_show(id, weap_id)
}
public client_PreThink(id)
{
if (get_pcvar_num(pv_fa_enable) == 1) {
if (g_Spawned[id]) {
g_Spawned[id] = false
do_player_spawn(id)
}
if (g_BoughtWeapon[id] != 0) {
new weap_id = g_BoughtWeapon[id]
g_BoughtWeapon[id] = 0
do_weapon_buy(id, weap_id)
}
}
return PLUGIN_CONTINUE
}
public bool:weapon_has_ammo(weap_id)
{
return g_AmmoName[g_AmmoType[weap_id]][0] != 0
}
public bool:fill_bpammo(id, weap_id)
{
if (get_pcvar_num(pv_fa_altclips) == 1) {
new ammo_clips = g_MaxClips[weap_id]
if (weapon_has_ammo(weap_id)) {
for (new i = 1; i <= ammo_clips; i++) {
g_HideGiveClips[id] = true
give_item(id, g_AmmoName[g_AmmoType[weap_id]])
}
g_HideGiveClips[id] = false
return true
}
}
else {
new ammo = g_MaxBPAmmo[weap_id]
if (weapon_has_ammo(weap_id)) {
cs_set_user_bpammo(id, weap_id, ammo)
g_HideGiveClips[id] = false
return true
}
}
return false
}
public bool:fill_weapon(id, weap_id)
{
new clip_size = g_ClipSize[weap_id]
if (clip_size != 0) {
new weap_name[41]
get_weaponname(weap_id, weap_name, 40)
new wpn = find_ent_by_owner(-1, weap_name, id)
if (wpn != 0) {
cs_set_weapon_ammo(wpn, clip_size)
return true
}
}
return false
}
public show_given_bpammo(id, weap_id, ammount)
{
g_HideGiveClips[id] = false
if (ammount <= 0)
return
message_begin(MSG_ONE, get_user_msgid("AmmoPickup"), {0,0,0}, id)
write_byte(g_AmmoType[weap_id])
write_byte(ammount)
message_end()
}
public bool:fill_bpammo_show(id, weap_id)
{
new given_ammo = g_MaxBPAmmo[weap_id]
if (get_pcvar_num(pv_fa_altclips) != 1 && weapon_has_ammo(weap_id))
given_ammo -= cs_get_user_bpammo(id, weap_id)
if (fill_bpammo(id, weap_id)) {
show_given_bpammo(id, weap_id, given_ammo)
return true
}
return false
}