⭐🚀 TkyNET | Blacklist ve Profesyonel DDoS Korumalı TeamSpeak 3 Sunucuları 🚀⭐
Sponsor Görsel
🇹🇷 TR Lokasyon | 🛡️ Gelişmiş DDoS Koruması | ⚡ Düşük Ping | 🎧 Kesintisiz TS3 | Hostlar
Sponsor Görsel 2
SponsorSponsor

Konu

#1
Arkadaşlar merhaba, bana bir plugin lazım. Aşağıda yazdığım işlemler tek 1 pluginde olacak;

1) amx_weapon kodunda fb, sg, hg yani tüm bombalar yasaklanacak. Kod ile veremeyecek admin.
2) amx_bombaver "nick" komutuyla oyuncuya fb ve sg verecek. Örnek: amx_bombaver john dediğimizde bana 2 FB ve 1 sg gelecek. Bu komut HER EL HER TAKIM için birer kere kullanılabilecek. Yani CT'deki oyuncuya her el 1 kere verebilecek adminler, T'deki oyuncuya da aynı şekilde 1 kere verebilecek adminler. Her el 2 takımın da hakkı 1 olacak.
3) Plugin mp_roundtime ile birlikte çalışacak Oyun içerisindeki roundtime 0.59'a düşünce konsolda da "1 dakika altinda oldugu icin bomba veremezsin!" diye konsol sayı geçerse yeterlidir. Bir de bunu kod ile düzeltebilelim. amx_bombasuresi "0.40" diye mesela kod yazıldığında yasaklama süresi değişsin.

NOT: Tüm weapon komutu yasaklanmasın sadece fb,sg,hg veremesin.

Yapabilen varsa eline emeğine sağlık teşekkürler.
#2
ücretsiz yapan cikmaz gibi
ZebaniBey
#3
Ücret ödeyemem maalesef yapabilen çıkarsa bekliyorum sağol.
#4
(23-09-2025, 21:08)john80 Adlı Kullanıcıdan Alıntı: Ücret ödeyemem maalesef yapabilen çıkarsa bekliyorum sağol.

O halde ücretsiz bu kadarına talipsin, yapman gereken sunucuna amx_weapon kodunu engelleyecek sistem kur (oyt'de varmı bilmiyorum) amx_weapon flashbang vb. gibi yasakla bomba komutlarını.

• Bu eklentideki eksi olarakta c4 kurulduğunda süre düşürülmesi eklenmedi, eklemek isteyen ekleyebilir.

Kod:
#include <amxmodx>
#include <amxmisc>
#include <reapi>
#include <cstrike>

#define TEAM_T 0
#define TEAM_CT 1

new bool:g_bTeamUsed[2];
new bool:g_bPlayerUsed[MAX_PLAYERS + 1];
new g_pCvarRoundTime;
new Float:g_flRoundStartTime;

public plugin_init()
{
    register_plugin("PLUGIN", "VERSION", "AUTHOR");
    
    register_concmd("amx_bombaver", "cmd_bombaver", ADMIN_KICK, "<nick> - Oyuncuya bomba verir");
    
    g_pCvarRoundTime = get_cvar_pointer("mp_roundtime");
    
    RegisterHookChain(RG_CSGameRules_RestartRound, "OnRestartRound", false);
    RegisterHookChain(RG_RoundEnd, "OnRoundEnd", false);
    
    register_logevent("OnRoundStart", 2, "1=Round_Start");
}

public OnRoundStart()
{
    g_bTeamUsed[TEAM_T] = false;
    g_bTeamUsed[TEAM_CT] = false;
    
    for(new i = 1; i <= MaxClients; i++)
    {
        g_bPlayerUsed[i] = false;
    }
    
    g_flRoundStartTime = get_gametime();
}

public OnRestartRound()
{
    OnRoundStart();
}

public OnRoundEnd(WinStatus:status, ScenarioEventEndRound:event, Float:tmDelay)
{
    OnRoundStart();
}

public cmd_bombaver(id, level, cid)
{
    if(!cmd_access(id, level, cid, 2))
        return PLUGIN_HANDLED;
    
    if(get_member_game(m_bFreezePeriod))
    {
        console_print(id, "Freeze time sirasinda bomba veremezsin!");
        return PLUGIN_HANDLED;
    }
    
    new Float:flCurrentTime = get_gametime();
    new Float:flElapsedTime = flCurrentTime - g_flRoundStartTime;
    new iRoundTimeMinutes = get_pcvar_num(g_pCvarRoundTime);
    new Float:flRoundTimeSeconds = float(iRoundTimeMinutes * 60);
    new Float:flRemainingTime = flRoundTimeSeconds - flElapsedTime;
    
    if(flRemainingTime <= 0.0)
    {
        console_print(id, "Round süresi doldu, bomba veremezsin!");
        return PLUGIN_HANDLED;
    }
    
    if(flRemainingTime <= 60.0)
    {
        new iMinutes = floatround(flRemainingTime) / 60;
        new iSeconds = floatround(flRemainingTime) % 60;
        console_print(id, "1 dakika altinda oldugu icin bomba veremezsin! (Kalan sure: %d:%02d)", iMinutes, iSeconds);
        return PLUGIN_HANDLED;
    }
    
    new szTarget[32];
    read_argv(1, szTarget, charsmax(szTarget));
    
    new iTarget = cmd_target(id, szTarget, CMDTARGET_ALLOW_SELF);
    
    if(!iTarget)
    {
        console_print(id, "Oyuncu bulunamadi!");
        return PLUGIN_HANDLED;
    }
    
    if(!is_user_alive(iTarget))
    {
        console_print(id, "Hedef oyuncu olmus!");
        return PLUGIN_HANDLED;
    }
    
    new iTeamIndex = -1;
    
    if(!is_user_connected(iTarget))
    {
        console_print(id, "Oyuncu sunucuda degil!");
        return PLUGIN_HANDLED;
    }
    
    new CsTeams:csTeam = cs_get_user_team(iTarget);
    
    if(csTeam == CS_TEAM_T)
        iTeamIndex = TEAM_T;
    else if(csTeam == CS_TEAM_CT)
        iTeamIndex = TEAM_CT;
    else
    {
        console_print(id, "Oyuncu gecerli bir takimda degil! (Spectator/Unassigned)");
        return PLUGIN_HANDLED;
    }
    
    if(g_bPlayerUsed[iTarget])
    {
        new szName[32];
        get_user_name(iTarget, szName, charsmax(szName));
        console_print(id, "%s oyuncusuna bu roundda zaten bomba verildi!", szName);
        return PLUGIN_HANDLED;
    }
    
    if(g_bTeamUsed[iTeamIndex])
    {
        new szTeamName[16];
        copy(szTeamName, charsmax(szTeamName), (iTeamIndex == TEAM_T) ? "T" : "CT");
        console_print(id, "%s takimi icin bu roundda zaten bomba verildi!", szTeamName);
        return PLUGIN_HANDLED;
    }
    
    rg_give_item(iTarget, "weapon_flashbang", GT_DROP_AND_REPLACE )
    rg_set_user_bpammo(iTarget, WEAPON_FLASHBANG, 2);
    rg_give_item(iTarget, "weapon_smokegrenade", GT_DROP_AND_REPLACE )
    
    g_bPlayerUsed[iTarget] = true;
    g_bTeamUsed[iTeamIndex] = true;
    
    new szTargetName[32], szAdminName[32];
    get_user_name(iTarget, szTargetName, charsmax(szTargetName));
    get_user_name(id, szAdminName, charsmax(szAdminName));
    
    console_print(id, "%s oyuncusuna bombalar verildi! (2x Flashbang, 1x Smoke)", szTargetName);
    client_print(iTarget, print_chat, "* Admin %s tarafindan size bombalar verildi!", szAdminName);
    
    client_print(0, print_chat, "* Admin %s, %s oyuncusuna bomba verdi", szAdminName, szTargetName);
    
    new iPlayers[MAX_PLAYERS], iNum;
    get_players(iPlayers, iNum, "ch");
    
    for(new i = 0; i < iNum; i++)
    {
        new iPlayer = iPlayers[i];
        if(get_user_flags(iPlayer) & ADMIN_KICK && iPlayer != id)
        {
            console_print(iPlayer, "[ADMIN] %s -> %s oyuncusuna bomba verdi", szAdminName, szTargetName);
        }
    }
    
    return PLUGIN_HANDLED;
}

public client_disconnected(id)
{
    g_bPlayerUsed[id] = false;
}

#5
(23-09-2025, 23:02)Sentences Adlı Kullanıcıdan Alıntı:
(23-09-2025, 21:08)john80 Adlı Kullanıcıdan Alıntı: Ücret ödeyemem maalesef yapabilen çıkarsa bekliyorum sağol.

O halde ücretsiz bu kadarına talipsin, yapman gereken sunucuna amx_weapon kodunu engelleyecek sistem kur (oyt'de varmı bilmiyorum) amx_weapon flashbang vb. gibi yasakla bomba komutlarını.

• Bu eklentideki eksi olarakta c4 kurulduğunda süre düşürülmesi eklenmedi, eklemek isteyen ekleyebilir.

Kod:
#include <amxmodx>
#include <amxmisc>
#include <reapi>
#include <cstrike>

#define TEAM_T 0
#define TEAM_CT 1

new bool:g_bTeamUsed[2];
new bool:g_bPlayerUsed[MAX_PLAYERS + 1];
new g_pCvarRoundTime;
new Float:g_flRoundStartTime;

public plugin_init()
{
    register_plugin("PLUGIN", "VERSION", "AUTHOR");
    
    register_concmd("amx_bombaver", "cmd_bombaver", ADMIN_KICK, "<nick> - Oyuncuya bomba verir");
    
    g_pCvarRoundTime = get_cvar_pointer("mp_roundtime");
    
    RegisterHookChain(RG_CSGameRules_RestartRound, "OnRestartRound", false);
    RegisterHookChain(RG_RoundEnd, "OnRoundEnd", false);
    
    register_logevent("OnRoundStart", 2, "1=Round_Start");
}

public OnRoundStart()
{
    g_bTeamUsed[TEAM_T] = false;
    g_bTeamUsed[TEAM_CT] = false;
    
    for(new i = 1; i <= MaxClients; i++)
    {
        g_bPlayerUsed[i] = false;
    }
    
    g_flRoundStartTime = get_gametime();
}

public OnRestartRound()
{
    OnRoundStart();
}

public OnRoundEnd(WinStatus:status, ScenarioEventEndRound:event, Float:tmDelay)
{
    OnRoundStart();
}

public cmd_bombaver(id, level, cid)
{
    if(!cmd_access(id, level, cid, 2))
        return PLUGIN_HANDLED;
    
    if(get_member_game(m_bFreezePeriod))
    {
        console_print(id, "Freeze time sirasinda bomba veremezsin!");
        return PLUGIN_HANDLED;
    }
    
    new Float:flCurrentTime = get_gametime();
    new Float:flElapsedTime = flCurrentTime - g_flRoundStartTime;
    new iRoundTimeMinutes = get_pcvar_num(g_pCvarRoundTime);
    new Float:flRoundTimeSeconds = float(iRoundTimeMinutes * 60);
    new Float:flRemainingTime = flRoundTimeSeconds - flElapsedTime;
    
    if(flRemainingTime <= 0.0)
    {
        console_print(id, "Round süresi doldu, bomba veremezsin!");
        return PLUGIN_HANDLED;
    }
    
    if(flRemainingTime <= 60.0)
    {
        new iMinutes = floatround(flRemainingTime) / 60;
        new iSeconds = floatround(flRemainingTime) % 60;
        console_print(id, "1 dakika altinda oldugu icin bomba veremezsin! (Kalan sure: %d:%02d)", iMinutes, iSeconds);
        return PLUGIN_HANDLED;
    }
    
    new szTarget[32];
    read_argv(1, szTarget, charsmax(szTarget));
    
    new iTarget = cmd_target(id, szTarget, CMDTARGET_ALLOW_SELF);
    
    if(!iTarget)
    {
        console_print(id, "Oyuncu bulunamadi!");
        return PLUGIN_HANDLED;
    }
    
    if(!is_user_alive(iTarget))
    {
        console_print(id, "Hedef oyuncu olmus!");
        return PLUGIN_HANDLED;
    }
    
    new iTeamIndex = -1;
    
    if(!is_user_connected(iTarget))
    {
        console_print(id, "Oyuncu sunucuda degil!");
        return PLUGIN_HANDLED;
    }
    
    new CsTeams:csTeam = cs_get_user_team(iTarget);
    
    if(csTeam == CS_TEAM_T)
        iTeamIndex = TEAM_T;
    else if(csTeam == CS_TEAM_CT)
        iTeamIndex = TEAM_CT;
    else
    {
        console_print(id, "Oyuncu gecerli bir takimda degil! (Spectator/Unassigned)");
        return PLUGIN_HANDLED;
    }
    
    if(g_bPlayerUsed[iTarget])
    {
        new szName[32];
        get_user_name(iTarget, szName, charsmax(szName));
        console_print(id, "%s oyuncusuna bu roundda zaten bomba verildi!", szName);
        return PLUGIN_HANDLED;
    }
    
    if(g_bTeamUsed[iTeamIndex])
    {
        new szTeamName[16];
        copy(szTeamName, charsmax(szTeamName), (iTeamIndex == TEAM_T) ? "T" : "CT");
        console_print(id, "%s takimi icin bu roundda zaten bomba verildi!", szTeamName);
        return PLUGIN_HANDLED;
    }
    
    rg_give_item(iTarget, "weapon_flashbang", GT_DROP_AND_REPLACE )
    rg_set_user_bpammo(iTarget, WEAPON_FLASHBANG, 2);
    rg_give_item(iTarget, "weapon_smokegrenade", GT_DROP_AND_REPLACE )
    
    g_bPlayerUsed[iTarget] = true;
    g_bTeamUsed[iTeamIndex] = true;
    
    new szTargetName[32], szAdminName[32];
    get_user_name(iTarget, szTargetName, charsmax(szTargetName));
    get_user_name(id, szAdminName, charsmax(szAdminName));
    
    console_print(id, "%s oyuncusuna bombalar verildi! (2x Flashbang, 1x Smoke)", szTargetName);
    client_print(iTarget, print_chat, "* Admin %s tarafindan size bombalar verildi!", szAdminName);
    
    client_print(0, print_chat, "* Admin %s, %s oyuncusuna bomba verdi", szAdminName, szTargetName);
    
    new iPlayers[MAX_PLAYERS], iNum;
    get_players(iPlayers, iNum, "ch");
    
    for(new i = 0; i < iNum; i++)
    {
        new iPlayer = iPlayers[i];
        if(get_user_flags(iPlayer) & ADMIN_KICK && iPlayer != id)
        {
            console_print(iPlayer, "[ADMIN] %s -> %s oyuncusuna bomba verdi", szAdminName, szTargetName);
        }
    }
    
    return PLUGIN_HANDLED;
}

public client_disconnected(id)
{
    g_bPlayerUsed[id] = false;
}

Emeğine sağlık teşekkür ederim. Var mı ekstra olarak ekleme yapabilecek round süresi kodu ve amx_weapon 83-84-85-89 komutlarını yasaklayabilecek?
#6
AMXX Super kullanıyorsun sanırım. O yüzden "amx_weapon" engellemeleri super eklentisinin içerisinden yapmak daha mantıklı. Botlarla test ettim ama gene sen bi test et sunucunda.

Kod:
/* Sublime AMXX-Editor v4.4 */

#include <amxmodx>
#include <amxmisc>
#include <reapi>

#define PLUGIN  "Bomba Ver"
#define VERSION "1.0.0-16"
#define AUTHOR  "complexcore"

new mp_roundtime;
new Float:var_roundtime;
new bool:gBlock[MAX_CLIENTS+1][2];

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    bind_pcvar_float(create_cvar("amx_bombasuresi", "0.40", ADMIN_LEVEL_C, "Yasaklama Suresi"), var_roundtime);
    register_concmd("amx_bombaver", "admin_weapon", ADMIN_LEVEL_C, "<Oyuncu ismi>");
    RegisterHookChain(RG_RoundEnd, "OnRG_RoundEnd", .post = true);
    RegisterHookChain(RG_CSGameRules_RestartRound, "OnRG_CSGameRules_RestartRound", .post = true);
}

public plugin_cfg()
{
    mp_roundtime = get_cvar_pointer("mp_roundtime");
}

public admin_weapon(id, level, cid)
{
    if(!cmd_access(id, level, cid, 2))
        return PLUGIN_HANDLED;

    new arg[32];
    read_argv(1, arg, charsmax(arg));
    new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF);

    if(gBlock[id][0] == true && gBlock[id][1] == true)
    {
        console_print(id, "[BOMBAVER] Bomba verme hakkini kullandin.");
        return PLUGIN_HANDLED;
    }

    if(get_pcvar_float(mp_roundtime) < var_roundtime)
    {
        console_print(id, "[BOMBAVER] %.0f dakika altinda oldugu icin bomba veremezsin!", var_roundtime);
        return PLUGIN_HANDLED;
    }

    if(!player || !is_user_connected(player) || !is_user_alive(player)){
        console_print(id, "[BOMBAVER] Oyuncu canli/bagli degil veya oyuncu bulunamadi.");
        return PLUGIN_HANDLED;
    }

    if(get_member(player, m_iTeam) == TEAM_TERRORIST && gBlock[id][0] == true)
    {
        console_print(id, "[BOMBAVER] T Takiminda bulunan bir oyuncuya zaten bomba verdin!");
        return PLUGIN_HANDLED;
    }
    else if(get_member(player, m_iTeam) == TEAM_CT && gBlock[id][1] == true)
    {
        console_print(id, "[BOMBAVER] CT Takiminda bulunan bir oyuncuya zaten bomba verdin!");
        return PLUGIN_HANDLED;
    }
    else
    {
        switch(get_member(player, m_iTeam))
        {
            case TEAM_TERRORIST:
            {
                gBlock[id][0] = true;
                rg_give_item(player, "weapon_flashbang");
                rg_give_item(player, "weapon_flashbang");
                rg_give_item(player, "weapon_smokegrenade");

            }
            case TEAM_CT:
            {
                gBlock[id][1] = true;
                rg_give_item(player, "weapon_flashbang");
                rg_give_item(player, "weapon_flashbang");
                rg_give_item(player, "weapon_smokegrenade");
            }
        }
        new name[32];
        get_user_name(player, name, charsmax(name));
        console_print(id, "[BOMBAVER] %s adli oyuncuya bomba verdin.", name);
    }
    return PLUGIN_HANDLED;
}

public OnRG_RoundEnd(WinStatus:status, ScenarioEventEndRound:event, Float:tmDelay) gBlockRes();
public OnRG_CSGameRules_RestartRound() gBlockRes();

public gBlockRes()
{
    new players[32], num;
    get_players(players, num, "ach");

    for (new i = 0; i < num; i++)
    {
        new id = players[i];
        if (!is_user_connected(id)) continue;
        gBlock[id][0] = false;
        gBlock[id][1] = false;
    }
}

Steam
#7
Bombası bir önceki turdan kalan veya zaten bombaya sahip kisiler icin daha mantıklı yol olarak bpammo ile verilebilir, güzel yazılmış bir eklenti teşekkürler.

 rg_give_item(player, "weapon_flashbang");
 rg_give_item(player, "weapon_flashbang");
 rg_give_item(player, "weapon_smokegrenade");

----

Kod:
/**
* Use with rg_give_item
*/
enum GiveType
{
    GT_APPEND,          // Just give item
    GT_REPLACE,         // Give the item and remove all other weapons from the slot
    GT_DROP_AND_REPLACE // Give the item and drop all other weapons from the slot
};

Son Düzenleme: 23-09-2025, 23:47, Düzenleyen: Sentences.
#8
Konunuz çözüldüyse bildirmeyi unutmayiniz.
MODEL TASARIMI SİLAH TASARIMI SPREY TASARIMI EKLENTİ İŞLERİ MOD KURULUMU İÇİN DİSCORD:okan5705 veya Ts3 Domainler:flexekip,flexekib,okan,okans
#9
(23-09-2025, 23:25)Sentences Adlı Kullanıcıdan Alıntı: Bombası bir önceki turdan kalan veya zaten bombaya sahip kisiler icin daha mantıklı yol olarak bpammo ile verilebilir, güzel yazılmış bir eklenti teşekkürler.

 rg_give_item(player, "weapon_flashbang");
 rg_give_item(player, "weapon_flashbang");
 rg_give_item(player, "weapon_smokegrenade");

----

Kod:
/**
* Use with rg_give_item
*/
enum GiveType
{
    GT_APPEND,          // Just give item
    GT_REPLACE,         // Give the item and remove all other weapons from the slot
    GT_DROP_AND_REPLACE // Give the item and drop all other weapons from the slot
};

şimdi bu eklentide c4 kurulunca da bomba vermeyi kapatıyor mu? Bir de her el başında oyuncu kullanmasa da siliyor mu bombayı?
#10
@john80 konunuz cozulduyse bildiriniz.
MODEL TASARIMI SİLAH TASARIMI SPREY TASARIMI EKLENTİ İŞLERİ MOD KURULUMU İÇİN DİSCORD:okan5705 veya Ts3 Domainler:flexekip,flexekib,okan,okans

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

Yorum yapmak için üye olmanız gerekiyor

ya da