Kod:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <csx>
#include <fun>
#include <hamsandwich>
#define PLUGIN "fragkayit v2 - Gelistirilmis Asist Sistemi"
#define VERSION "2.0"
#define AUTHOR "thorin / heil edit - Gelistirilmis"
new bool:g_bMatchActive = false
new bool:g_bFragResetUsed = false
new g_iSavedKills[33]
new g_iSavedDeaths[33]
new g_iDamageDealt[33][33]
new Float:g_fPreDamageHealth[33]
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_concmd("amx_kytbaslat", "Cmd_MacStart", ADMIN_KICK, "Mac modunu baslatir ve skorlari sabitler")
register_concmd("amx_kytbitir", "Cmd_MacStop", ADMIN_KICK, "Mac modunu bitirir ve normal sisteme gecer")
register_concmd("amx_fragsifirla", "Cmd_FragSifirla", ADMIN_KICK, "Tum oyuncularin frag ve olumlerini sifirlar (Haritada 1 kez)")
register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0")
RegisterHam(Ham_Killed, "player", "Fwd_PlayerKilled_Post", 1)
RegisterHam(Ham_Spawn, "player", "Fwd_PlayerSpawn_Post", 1)
RegisterHam(Ham_TakeDamage, "player", "Fwd_TakeDamage_Pre", 0)
RegisterHam(Ham_TakeDamage, "player", "Fwd_TakeDamage_Post", 1)
}
public plugin_cfg() {
g_bFragResetUsed = false
}
public client_putinserver(id) {
g_iSavedKills[id] = 0
g_iSavedDeaths[id] = 0
g_fPreDamageHealth[id] = 0.0
ClearPlayerDamage(id)
}
public client_disconnected(id) {
g_iSavedKills[id] = 0
g_iSavedDeaths[id] = 0
g_fPreDamageHealth[id] = 0.0
ClearPlayerDamage(id)
}
ClearPlayerDamage(id) {
for (new i = 1; i <= 32; i++) {
g_iDamageDealt[id][i] = 0
g_iDamageDealt[i][id] = 0
}
}
public Cmd_MacStart(id, level, cid) {
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED
if (g_bMatchActive) {
client_print_color(id, print_team_default, "^1[^4SSS^1] ^3Mac modu zaten aktif!")
return PLUGIN_HANDLED
}
g_bMatchActive = true
ClearAllDamage()
SyncAllScores()
client_print_color(0, print_team_default, "^1[^4SSS^1] ^3Mac modu baslatildi! ^1Skor sayma ve frag kayit sistemi aktif.")
return PLUGIN_HANDLED
}
public Cmd_MacStop(id, level, cid) {
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED
if (!g_bMatchActive) {
client_print_color(id, print_team_default, "^1[^4SSS^1] ^3Mac modu zaten kapali!")
return PLUGIN_HANDLED
}
g_bMatchActive = false
ClearAllDamage()
for (new i = 1; i <= 32; i++) {
if (is_user_connected(i)) {
g_iSavedKills[i] = 0
g_iSavedDeaths[i] = 0
set_user_frags(i, 0)
cs_set_user_deaths(i, 0)
UpdateScoreboard(i)
}
}
client_print_color(0, print_team_default, "^1[^4SSS^1] ^3Mac modu kapatildi! ^1Fraglar sifirlandi.")
return PLUGIN_HANDLED
}
public Cmd_FragSifirla(id, level, cid) {
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED
if (g_bFragResetUsed) {
client_print_color(id, print_team_default, "^1[^4SSS^1] ^3Bu haritada zaten frag sifirlama kullandin!")
return PLUGIN_HANDLED
}
ClearAllDamage()
for (new i = 1; i <= 32; i++) {
if (is_user_connected(i)) {
g_iSavedKills[i] = 0
g_iSavedDeaths[i] = 0
set_user_frags(i, 0)
cs_set_user_deaths(i, 0)
UpdateScoreboard(i)
}
}
g_bFragResetUsed = true
client_print_color(0, print_team_default, "^1[^4SSS^1] ^3Frag sifirlama yapildi! ^1Artik bu haritada kullanilamaz.")
return PLUGIN_HANDLED
}
public Fwd_TakeDamage_Pre(victim, inflictor, attacker, Float:damage, damagebits) {
if (!g_bMatchActive)
return HAM_IGNORED
if (attacker < 1 || attacker > 32 || !is_user_connected(attacker) || attacker == victim)
return HAM_IGNORED
if (get_user_team(attacker) != get_user_team(victim)) {
g_fPreDamageHealth[victim] = Float:get_user_health(victim)
}
return HAM_IGNORED
}
public Fwd_TakeDamage_Post(victim, inflictor, attacker, Float:damage, damagebits) {
if (!g_bMatchActive)
return HAM_IGNORED
if (attacker < 1 || attacker > 32 || !is_user_connected(attacker) || attacker == victim)
return HAM_IGNORED
if (get_user_team(attacker) != get_user_team(victim)) {
new Float:fPostHealth = Float:get_user_health(victim)
new Float:fRealDamage = g_fPreDamageHealth[victim] - fPostHealth
if (fRealDamage < 0.0)
fRealDamage = 0.0
g_iDamageDealt[attacker][victim] += floatround(fRealDamage)
}
return HAM_IGNORED
}
public bomb_defused(id) {
if (g_bMatchActive && is_user_connected(id)) {
set_task(0.2, "Task_SaveBombScore", id)
}
}
public bomb_explode(planter, defuser) {
if (g_bMatchActive && is_user_connected(planter)) {
set_task(0.2, "Task_SaveBombScore", planter)
}
}
public Task_SaveBombScore(id) {
if (g_bMatchActive && is_user_connected(id)) {
g_iSavedKills[id] = get_user_frags(id)
UpdateScoreboard(id)
}
}
public Fwd_PlayerKilled_Post(victim, killer) {
if (!g_bMatchActive)
return HAM_IGNORED
if (killer == victim || killer == 0 || !is_user_connected(killer)) {
if (is_user_connected(victim)) {
set_task(0.1, "Task_RestoreScore", victim)
}
for (new i = 1; i <= 32; i++) {
g_iDamageDealt[i][victim] = 0
}
return HAM_IGNORED
}
new iVictimTeam = get_user_team(victim)
for (new i = 1; i <= 32; i++) {
if (i != killer && is_user_connected(i) && get_user_team(i) != iVictimTeam) {
if (g_iDamageDealt[i][victim] >= 51) {
set_user_frags(i, get_user_frags(i) + 1)
new iMoney = cs_get_user_money(i)
iMoney += 200
if (iMoney > 16000) iMoney = 16000
cs_set_user_money(i, iMoney)
UpdateScoreboard(i)
client_print_color(i, print_team_default, "^1[^4EOSM^1] ^3Asist yaptigin icin ^4+1 frag ^1ve ^4+$200 ^1kazandin! (Hasar: ^4%d^1)", g_iDamageDealt[i][victim])
}
}
}
SyncAllScores()
for (new i = 1; i <= 32; i++) {
g_iDamageDealt[i][victim] = 0
}
return HAM_IGNORED
}
public Task_RestoreScore(id) {
if (!g_bMatchActive || !is_user_connected(id))
return
set_user_frags(id, g_iSavedKills[id])
cs_set_user_deaths(id, g_iSavedDeaths[id])
UpdateScoreboard(id)
}
public Event_NewRound() {
if (!g_bMatchActive)
return
ClearAllDamage()
for (new i = 1; i <= 32; i++) {
if (is_user_connected(i)) {
set_user_frags(i, g_iSavedKills[i])
cs_set_user_deaths(i, g_iSavedDeaths[i])
}
}
set_task(0.5, "Task_UpdateAllScores")
}
public Task_UpdateAllScores() {
if (!g_bMatchActive)
return
UpdatePlayerStaggered(1)
}
UpdatePlayerStaggered(id) {
if (!g_bMatchActive || id > 32)
return
if (is_user_connected(id)) {
UpdateScoreboard(id)
set_task(0.03, "OnUpdateNextPlayer", id + 1)
} else {
UpdatePlayerStaggered(id + 1)
}
}
public OnUpdateNextPlayer(id) {
UpdatePlayerStaggered(id)
}
public Fwd_PlayerSpawn_Post(id) {
if (!g_bMatchActive || !is_user_alive(id))
return
set_user_frags(id, g_iSavedKills[id])
cs_set_user_deaths(id, g_iSavedDeaths[id])
for (new i = 1; i <= 32; i++) {
g_iDamageDealt[id][i] = 0
g_iDamageDealt[i][id] = 0
}
g_fPreDamageHealth[id] = 0.0
}
public SyncAllScores() {
if (!g_bMatchActive)
return
for (new i = 1; i <= 32; i++) {
if (is_user_connected(i)) {
g_iSavedKills[i] = get_user_frags(i)
g_iSavedDeaths[i] = cs_get_user_deaths(i)
}
}
}
ClearAllDamage() {
for (new i = 1; i <= 32; i++) {
for (new j = 1; j <= 32; j++) {
g_iDamageDealt[i][j] = 0
}
}
}
UpdateScoreboard(id) {
message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"))
write_byte(id)
write_short(g_iSavedKills[id])
write_short(g_iSavedDeaths[id])
write_short(0)
write_short(get_user_team(id))
message_end()
}