⭐🚀 TkyNET | Blacklist ve Profesyonel DDoS Korumalı TeamSpeak 3 Sunucuları 🚀⭐
Sponsor Görsel
⭐ Buraya kendi metin reklamınızı vererek binlerce kişiye ulaşın! ⭐
Sponsor Görsel 2
SponsorSponsor

Konu

#11
(29-06-2026, 12:18)Maravilha Adlı Kullanıcıdan Alıntı:
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()
}

hiç çalışmıyor asist tamamen gitti.
benim attığımda çalışıyor sadece 200 dolar para verecek
bir de armoru algılamıyor, adamın hasarını armor yokmuş gibi görüyor
bir de bunun haricinde hg attığımızdaki damage yanlış çünkü benim serverımda bomba hasarı düşürme plugini var. Ona göre entegre edilip damage hasarını görmeli.
bahsettiğim bomba hasar düşürme plugini @emperor adlı arkadaşımızın attığının aynısı. Bunu asist pluginine entegre etmek gerek.
#12
asist eklentiniz en baştaki ekde eklediğiniz miydi acaba?
GEBZEPRO ®       CS1 .GEBZEPRO. NET       WWW.GEBZEPRO.NET              
#13
(29-06-2026, 17:17)emperor Adlı Kullanıcıdan Alıntı: asist eklentiniz en baştaki ekde eklediğiniz miydi acaba?
evet ona bu en son saydıklarım eklenecek olay bu
#14
Asist Parası ($200): Asist yapan oyuncuya frag verildiği anda mevcut parası kontrol edilerek 200 dolar eklenmesi sağlandı (Maksimum 16.000$ sınırına takılacak şekilde ayarlandı).

Çelik Yelek Tutarsızlığı: Eski kodda Ham_TakeDamage kullanılıyordu. Bu fonksiyon, oyuncunun zırhı hasarı emmeden önceki ham hasarı (ateşlenen silahın net gücü) yakalar. Bu yüzden zırhı olan birine vurulduğunda hasarlar tutarsız çıkıyordu. Bunu <csx> kütüphanesinin client_damage fonksiyonu ile değiştirdim. Bu fonksiyon oyuncudan eksilen net canı yakalar.

Bomba (HE) %50 Hasar Uyumu: client_damage fonksiyonuna geçmemiz bu sorunu da otomatik olarak çözdü. Sunucundaki diğer eklenti bombanın hasarını yarıya düşürdüğünde, oyuncudan da o kadar net can eksilir. Yeni eklediğim fonksiyon sadece eksilen net canı asiste yazacağı için bombanın yarıya düşürülmüş hasarını tam ve kusursuz olarak algılayacaktır.
Bunu deneyip Remap yapıp kontrol edermisin.

Kod:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <csx>
#include <fun>
#include <hamsandwich>

#define PLUGIN "fragkayit"
#define VERSION "1.6"
#define AUTHOR "thorin / heil edit"

new bool:g_bMatchActive = false
new bool:g_bFragResetUsed = false // Harita basinda sıfırlama hakkını tutar
new g_iSavedKills[33]
new g_iSavedDeaths[33]

// Oyuncularin birbirine verdigi NET hasarlari tutan matris [Saldiran][Kurban]
new g_iDamageDealt[33][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)
    
    // NOT: Ham_TakeDamage iptal edildi. Zirh ve HE bomba tutarsizligi icin asagidaki client_damage kullanilacak.
}

public plugin_cfg() {
    g_bFragResetUsed = false
}

public client_putinserver(id) {
    g_iSavedKills[id] = 0
    g_iSavedDeaths[id] = 0
    ClearPlayerDamage(id)
}

public client_disconnected(id) {
    g_iSavedKills[id] = 0
    g_iSavedDeaths[id] = 0
    ClearPlayerDamage(id)
}

// Oyuncunun hasar kayitlarini temizleme fonksiyonu
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, "")
        return PLUGIN_HANDLED
    }
        
    g_bMatchActive = true
    ClearAllDamage()
    SyncAllScores()
    
    client_print_color(0, print_team_default, "")
    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, "")
        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, "^4[SSS] Skor sayma ve frag kayit sistemi kapatildi! Fraglar 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, "")
        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, "")
    return PLUGIN_HANDLED
}

// Zırh (Çelik Yelek) ve %50 Bomba eklentisi uyumlu yeni hasar yakalama fonksiyonu
public client_damage(attacker, victim, damage, wpnindex, hitplace, TA) {
    if (!g_bMatchActive)
        return

    if (attacker < 1 || attacker > 32 || !is_user_connected(attacker) || attacker == victim)
        return

    // TA = Team Attack. Eğer 0 ise kurban düşmandır (FF Koruması).
    if (!TA) {
        // Buradaki 'damage' değişkeni; çelik yeleğin hasarı emmesi veya sunucundaki
        // bomba hasarını %50 düşüren eklentinin işlemlerinden SONRA oyuncudan
        // düşen NET can miktarıdır. Bu sayede tutarsızlıklar tamamen ortadan kalkar.
        g_iDamageDealt[attacker][victim] += damage
    }
}

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
        
    // İntihar veya dunya hasari durumlari
    if (killer == victim || killer == 0 || !is_user_connected(killer)) {
        if (is_user_connected(victim)) {
            set_task(0.1, "Task_RestoreScore", victim)
        }
        
        // Kurbanin hasar matrisini temizle
        for (new i = 1; i <= 32; i++) {
            g_iDamageDealt[i][victim] = 0
        }
        return HAM_IGNORED
    }
    
    // --- ASIST KONTROL SISTEMI ---
    new iVictimTeam = get_user_team(victim)
    for (new i = 1; i <= 32; i++) {
        // Katil haricinde, bagli olan ve kurbanin dusmani olan oyunculari tara
        if (i != killer && is_user_connected(i) && get_user_team(i) != iVictimTeam) {
            // Eger bu oyuncu olene 51 veya uzeri net hasar vermisse asist kazanir
            if (g_iDamageDealt[i][victim] >= 51) {
                set_user_frags(i, get_user_frags(i) + 1)
                
                // Asist yapan oyuncuya 200 Dolar para verme islemi (Max 16000 korumali)
                new current_money = cs_get_user_money(i)
                cs_set_user_money(i, clamp(current_money + 200, 0, 16000))
                
                UpdateScoreboard(i)
                client_print_color(i, print_team_default, "^4[EOSM] ^1Asist yaptigin icin ^3+1 ^1frag ve ^4$200 ^1kazandin! (Net Hasarın: ^4%d^1)", g_iDamageDealt[i][victim])
            }
        }
    }
    
    // Asist dagitildiktan sonra tum skorlari guvenle hafizaya kilitliyoruz
    SyncAllScores()
    
    // Ölen oyuncunun uzerindeki hasar kayitlarini yeni canlanma icin sifirliyoruz
    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
        
    // Yeni el basinda tum hasar matrisini tamamen temizle
    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])
    
    // Canlanan oyuncunun hasar gecmisini tedbiren temizle
    for (new i = 1; i <= 32; i++) {
        g_iDamageDealt[id][i] = 0
        g_iDamageDealt[i][id] = 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()
}

GEBZEPRO ®       CS1 .GEBZEPRO. NET       WWW.GEBZEPRO.NET              
#15
Başarılar

(29-06-2026, 17:30)CrwsJ Adlı Kullanıcıdan Alıntı: Başarılar
Son Düzenleme: 29-06-2026, 17:31, Düzenleyen: CrwsJ.
#16
İstek konusu, @emperor adlı kullanıcı tarafından 2 gün içinde çözülmüştür.
İsteği çözdüğü için emperor Adlı kullanıcıya 1 rep puanı ve 1 yardım etme puanı otomatik olarak verilmiştir.
emperor Adlı kullanıcı sizin dışınızda toplam 0 kişiye yardım etmiştir.

Herhangi bir konuda hata olduğunu düşünüyorsanız destek sistemi üzerinden iletişim kurabilirsiniz.

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da