Konu

#1
Merhaba, Bu Xp, Rütbe Eklentisine Chat Tagı'da eklermisiniz, Askeriye Şeklinde Uzman, Çavuş renkli olucak şekilde yaparsanız sevinirm.
.sma gelismisxp.sma (Dosya Boyutu: 23,75 KB | İndirme Sayısı: 5)
#2
Kod:
#include <amxmodx>
#include <nvault>
#include <fakemeta>
#include <hamsandwich>
#include <fun>
#include <engine>
#include <cstrike>

#define g_exp(%1) get_pcvar_num(xpm_start) + (seviye[%1] * get_pcvar_num(xpm_inc))
#define DLIGHT_LIFE 8
#define DLIGHT_DECAY 60
#define message_begin_f(%1,%2,%3) (engfunc (EngFunc_MessageBegin, %1, %2, %3))
#define write_coord_f(%1) (engfunc (EngFunc_WriteCoord, %1))
#define FLAG ADMIN_RCON

new SeviyeliMenu[33]

new xpkayit, seviye[33] = 1, exp[33], xpm_kill, xpm_knife, xpm_headshot, xpm_maxlevel, hud_info, xpm_inc, xpm_start, xpm_heal_up, xpm_damage_up, aim_goster, g_iMsgSayText, hud_show, rutbe[33]
new const level[] = "explevel/seviye_atlama.wav"
new const tag[] = "!y[ !gCSDuragi !y] !t"
new const is[] = "%"
enum Coord_e {Float:x, Float:y, Float:z};

enum
{
    ER,
    ONBASI,
    CAVUS,
    TEGMEN,
    YUZBASI,
    BINBASI,
    YARBAY,
    ALBAY,
    GENERAL   
}

public plugin_init() {
    register_plugin("Xp-Mod v2.0 | nefret007 | ", "1.4", "nefret007")
    xpm_start = register_cvar("xpm_start", "200");
    xpm_inc = register_cvar("xpm_inc", "50");
    xpm_kill = register_cvar("xpm_kill","15")
    xpm_knife = register_cvar("xpm_knife","25")
    xpm_headshot = register_cvar("xpm_headshot","35")
    xpm_maxlevel = register_cvar("xpm_maxlevel","25")
    xpm_heal_up = register_cvar("xpm_heal_up","1")
    xpm_damage_up = register_cvar("xpm_damage_up","1")
    xpkayit = nvault_open("xpmod_kayit")
    register_clcmd("__xpm_maxlevel","__xpm_maxlevel_devam")
    register_clcmd("__xpm_kill","__xpm_kill_devam")
    register_clcmd("__xpm_inc","__xpm_inc_devam")
    register_clcmd("__xpm_headshot","__xpm_headshot_devam")
    register_clcmd("__xpm_knife","__xpm_knife_devam")
    register_clcmd("__xpm_damage_up","__xpm_damage_devam")
    register_clcmd("__xpm_heal_up","__xpm_heal_devam")
    register_clcmd("say /xpreset","xpmod_reset")
    register_clcmd("say /xpkontrol","xpmod_kontrol")
    register_event("HLTV", "elbasi", "a", "1=0", "2=0")
    register_event("DeathMsg", "event_death", "a");
    register_event("StatusValue", "showStatus", "be", "1=2", "2!0")
    register_event("StatusValue", "hideStatus", "be", "1=1", "2=0")
    RegisterHam(Ham_Spawn, "player", "Fwd_PlayerSpawn_Post", 1)
    RegisterHam(Ham_TakeDamage, "player", "FwdTakeDamage", 0)
    hud_show = CreateHudSyncObj();
    hud_info = CreateHudSyncObj();
    aim_goster = CreateHudSyncObj()
    g_iMsgSayText = get_user_msgid("SayText")
   
    register_event("DeathMsg", "show_rank_on_scoreboard", "a")
}

public xpmod_reset(id){
    seviye[id] = 1
    exp[id] = 0
    ChatColor(id,"%s !tleveliniz!y ve !texp !g(!ttecrube!g)!y puaniniz basariyla sifirlanmistir.",tag)
}

public plugin_precache() {
    precache_sound("fvox/beep.wav")
    precache_sound(level)
}

public kaydet(id){
    new name[64],key[72], stats[34];
    get_user_name(id, name, 63);
    formatex(key, 71, "%s-stats", name);
    formatex(stats, 33, "%i#%i#", seviye[id], exp[id]);
    nvault_set(xpkayit, key, stats);
}

public kontrol(id){
    new name[32]
    get_user_name(id,name,31)
    if(exp[id] >= g_exp(id)){
        seviye[id]++   
        exp[id] = 0
        ChatColor(0,"%s !t'%s'!y adli oyuncu !y[!g%d!y]!g levele ulasti .",tag,name,seviye[id])
        level_atlama(id)
    }
    else if(exp[id] < g_exp(id))
    {
        console_cmd(id,"spk fvox/beep")   
    }
}

public yukle(id){
    new name[64],key[72], stats[34], stat[3][12];
    get_user_name(id, name, 63);
    formatex(key, 71, "%s-stats", name);
    nvault_get(xpkayit, key, stats, 33);
    replace_all(stats , 33, "#", " ")
    parse(stats, stat[0], 11, stat[1], 11);
    seviye[id] = str_to_num(stat[0]);
    exp[id] = str_to_num(stat[1]);   
    if(seviye[id] == 0){
        seviye[id] = 1
    }
}

public client_authorized(id){
    seviye[id]=1
    exp[id] = 0
    set_task(1.0, "show_explevel", id, _, _, "b")
    yukle(id)
    create_rank_entity(id)
}

public client_connect(id)
{
    SeviyeliMenu[id] = false
}

public client_disconnect(id){
    kaydet(id)
    SeviyeliMenu[id] = false
}

public create_rank_entity(index)
{   
    // Bu fonksiyonu doldurmanız gerekebilir
}

public event_death(){
    new victim = read_data(2);
    new attacker = get_user_attacker(victim)
    new miktar[32] = 0
    if (is_valid_player(attacker))
    {
        check_rank(attacker)
    }
    if(attacker == victim)
    {
        return PLUGIN_HANDLED;
    }
    if(seviye[attacker] >= get_pcvar_num(xpm_maxlevel)){
        ChatColor(attacker,"%s !tmaximum!y Rutbeye ulastiniz.",tag)
        return PLUGIN_HANDLED;
    }
    exp[attacker] += get_pcvar_num(xpm_kill)
    miktar[attacker] += get_pcvar_num(xpm_kill)
    if(get_pdata_int(victim, 75) == HIT_HEAD){
        exp[attacker] += get_pcvar_num(xpm_headshot)
        miktar[attacker] += get_pcvar_num(xpm_headshot)
    }
    if(get_user_weapon(attacker) == CSW_KNIFE){
        exp[attacker] += get_pcvar_num(xpm_knife)
        miktar[attacker] += get_pcvar_num(xpm_knife)
    }
    ChatColor(attacker,"%s !t%d!t exp !y[!gtecrube!y] !tpuani kazandiniz.",tag,miktar[attacker])
    kontrol(attacker)
    return PLUGIN_HANDLED
}

public elbasi()
{
    new players[32],inum,id
    get_players(players,inum)
    for(new i;i<inum;i++)
    {
        SeviyeliMenu[id] = true
    }   
}

public show_explevel(id){
    if(!is_user_alive(id))
        return PLUGIN_HANDLED;
   
    new show[33]
   
    // Rütbe belirleme
    if(seviye[id] < 6){
        show = "RUTBESIZ"
    }
    else if(seviye[id] < 16 ){
        show = "COPCU"
    }
    else if(seviye[id] < 31 ){
        show = "COPCU KRALI"
    }
    else if(seviye[id] < 46 ){
        show = "BAKKAL"
    }
    else if(seviye[id] < 61 ){
        show = "MARKET"
    }
    else if(seviye[id] < 71 ){
        show = "MOBILYACI"
    }
    else if(seviye[id] < 81 ){
        show = "MIMAR"
    }
    else if(seviye[id] < 91 ){
        show = "MUHENDIS"
    }
    else if(seviye[id] <= 100){
        show = "KRAL RUTBE"
    }
   
    // Sadece rütbeyi gösteren HUD mesajı
    set_hudmessage(255, 255, 255, 0.02, 0.23, 0, 6.0, 3.0, 0.1, 1.5);
    ShowSyncHudMsg(id, hud_info, "%s", show);
   
    return PLUGIN_HANDLED
}

public showStatus(id){
    new name[32], pid = read_data(2)
    get_user_name(pid,name,31)
    if(!is_user_bot(id) && is_user_connected(id)) {
        if(get_user_team(pid) == 1){
            set_hudmessage(255,25,25, -1.0, 0.55, 0, 0.01, 3.0, 0.01, 0.01, -1)
            ShowSyncHudMsg(id, aim_goster, "%s | Hp: %d | Level: %d",name,get_user_health(pid),seviye[pid])
        }
        else if(get_user_team(pid) == 2){
            set_hudmessage(25,25,255, -1.0, 0.55, 0, 0.01, 3.0, 0.01, 0.01, -1)
            ShowSyncHudMsg(id, aim_goster, "%s | Hp: %d | Level: %d",name,get_user_health(pid),seviye[pid])
        }
    }
}

public hideStatus(id){
    ClearSyncHud(id, aim_goster)
}

public Fwd_PlayerSpawn_Post(player){
    new hp
    hp = seviye[player] * 1 - 1
    if(get_pcvar_num(xpm_heal_up) && is_user_alive(player)){
        set_user_health(player, get_user_health(player) + hp )
    }
}

public FwdTakeDamage(victim, inflictor, attacker, Float:damage, damage_bits){
    new dmg = seviye[attacker] * 1 - 1
    if(get_pcvar_num(xpm_damage_up)){
        SetHamParamFloat(4, damage + dmg)
        return PLUGIN_HANDLED
    }
    return PLUGIN_HANDLED
}

stock level_atlama(id){
    static Float:FOrigin3[3] // PARLAMA EFEKTI
    pev(id, pev_origin, FOrigin3)
    engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, FOrigin3, 0)
    write_byte(TE_IMPLOSION)
    engfunc(EngFunc_WriteCoord, FOrigin3[0])
    engfunc(EngFunc_WriteCoord, FOrigin3[1])
    engfunc(EngFunc_WriteCoord, FOrigin3[2])
    write_byte(200)
    write_byte(100)
    write_byte(5) 
    message_end()
    emit_sound(id, CHAN_VOICE, level, 1.0, ATTN_NORM, 0, PITCH_NORM)
    level_atlama__(id)
}

public level_atlama__(id){
    static Coord_e:vecOrigin[Coord_e];
    pev(id,pev_origin, vecOrigin);
   
    message_begin_f(MSG_PVS, SVC_TEMPENTITY, vecOrigin, 0);
    write_byte(TE_DLIGHT);
    write_coord_f(vecOrigin[x]);
    write_coord_f(vecOrigin[y]);
    write_coord_f(vecOrigin[z]);
    write_byte(35);
    write_byte(250);
    write_byte(150);
    write_byte(15);
    write_byte(DLIGHT_LIFE);
    write_byte(DLIGHT_DECAY);
    message_end();
   
    return FMRES_HANDLED;
}

public xpmod_kontrol(id)
{
    if(get_user_flags(id) & ADMIN_RCON)
    {
        static Item[64]
       
        formatex(Item, charsmax(Item),"\yXpmod | Kontrol Paneli")
        new Menu = menu_create(Item, "takim_menu")
       
        formatex(Item, charsmax(Item),"\wxpm_maxlevel \d'%d'",get_pcvar_num(xpm_maxlevel))
        menu_additem(Menu, Item, "1")
       
        formatex(Item, charsmax(Item),"\wxpm_kill \d'%d'",get_pcvar_num(xpm_kill))
        menu_additem(Menu, Item, "2")
       
        formatex(Item, charsmax(Item),"\wxpm_inc \d'%d'",get_pcvar_num(xpm_inc))
        menu_additem(Menu, Item, "3")
       
        formatex(Item, charsmax(Item),"\wxpm_headshot \d'%d'",get_pcvar_num(xpm_headshot))
        menu_additem(Menu, Item, "5")
       
        formatex(Item, charsmax(Item),"\wxpm_knife \d'%d'",get_pcvar_num(xpm_knife))
        menu_additem(Menu, Item, "6")
       
        formatex(Item, charsmax(Item),"\wxpm_damage_up \d'%s'",get_pcvar_num(xpm_damage_up) > 0 ? "Acik" : "Kapali")
        menu_additem(Menu, Item, "6")
       
        formatex(Item, charsmax(Item),"\wxpm_heal_up \d'%s'",get_pcvar_num(xpm_heal_up) > 0 ? "Acik" : "Kapali")
        menu_additem(Menu, Item, "7")
       
        menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL)
        menu_display(id, Menu)
    }
    else
    {
        ChatColor(id,"[%s]!gYetkiniz !yBulunmamaktadir...",tag)
    }
    return PLUGIN_HANDLED
}

public takim_menu(id, menu, item)
{
    if (item == MENU_EXIT)
    {
        menu_destroy(menu)
        return PLUGIN_HANDLED
    }
    new Data[6], Name[64]
    new Access, Callback
    new say[300]
    read_args(say, charsmax(say))
   
    menu_item_getinfo(menu, item, Access, Data,5, Name, 63, Callback)
   
    new Key = str_to_num(Data)
   
    switch (Key)
    {
        case 1:
        {   
            client_cmd(id, "messagemode __xpm_maxlevel")
        }
        case 2:
        {   
            client_cmd(id, "messagemode __xpm_kill")   
        }
        case 3:
        {   
            client_cmd(id, "messagemode __xpm_inc")   
        }
        case 4:
        {   
            client_cmd(id, "messagemode __xpm_headshot")   
        }
        case 5:
        {   
            client_cmd(id, "messagemode __xpm_knife")   
        }
        case 6:
        {
            client_cmd(id, "messagemode __xpm_damage_up")
        }
        case 7:
        {   
            client_cmd(id, "messagemode __xpm_heal_up")   
        }
    }
    menu_destroy(menu)   
    return PLUGIN_HANDLED
}

public __xpm_maxlevel_devam(id){
    new say[300]
    read_args(say, charsmax(say))
    remove_quotes(say)
    client_cmd(id,"amx_cvar xpm_maxlevel %s",say)
    console_cmd(id,"/xpkontrol")
}

public __xpm_kill_devam(id){
    new say[300]
    read_args(say, charsmax(say))
    remove_quotes(say)
    client_cmd(id,"amx_cvar xpm_kill %s",say)
    console_cmd(id,"/xpkontrol")
}

public __xpm_inc_devam(id){
    new say[300]
    read_args(say, charsmax(say))
    remove_quotes(say)
    client_cmd(id,"amx_cvar xpm_inc %s",say)
    console_cmd(id,"/xpkontrol")
}

public __xpm_headshot_devam(id){
    new say[300]
    read_args(say, charsmax(say))
    remove_quotes(say)
    client_cmd(id,"amx_cvar xpm_headshot %s",say)
    console_cmd(id,"/xpkontrol")
}

public __xpm_knife_devam(id){
    new say[300]
    read_args(say, charsmax(say))
    remove_quotes(say)
    client_cmd(id,"amx_cvar xpm_knife %s",say)
    console_cmd(id,"/xpkontrol")
}

public __xpm_heal_devam(id){
    new say[300]
    read_args(say, charsmax(say))
    remove_quotes(say)
    client_cmd(id,"amx_cvar xpm_damage_up %s",say)
    console_cmd(id,"/xpkontrol")
}

public __xpm_damage_devam(id){
    new say[300]
    read_args(say, charsmax(say))
    remove_quotes(say)
    client_cmd(id,"amx_cvar xpm_heal_up %s",say)
    console_cmd(id,"/xpkontrol")
}

public check_rank(index)
{
    // Bu fonksiyonu doldurmanız gerekebilir
}

stock get_player_rank(index)
{
    new PlayerFrags = rutbe[index]
   
    switch (PlayerFrags)
    {
        case ER:
            return 1
        case ONBASI:
            return 2
        case CAVUS:
            return 3
        case TEGMEN:
            return 4
        case YUZBASI:
            return 5
        case BINBASI:
            return 6
        case YARBAY:
            return 7
        case ALBAY:
            return 8
        case GENERAL:
            return 9
        default:
            return 10
    }
}

stock is_valid_player(index)
{
    if (is_user_connected(index) && 1 <= index <= 32)
    {
        return true
    }
    return false
}

stock ChatColor(const id, const input[], any:...){
    new count = 1, players[32]
    static msg[191]
    vformat(msg, 190, input, 3)

    replace_all(msg, 190, "!g", "^4") // Green Color
    replace_all(msg, 190, "!y", "^1") // Default Color
    replace_all(msg, 190, "!t", "^3") // Team Color

    if (id) players[0] = id; else get_players(players, count, "ch")
    {
        for (new i = 0; i < count; i++)
        {
            if (is_user_connected(players[i]))
            {
                message_begin(MSG_ONE_UNRELIABLE, g_iMsgSayText, _, players[i]) 
                write_byte(players[i]);
                write_string(msg);
                message_end();
            }
        }
    }
}

public show_rank_on_scoreboard() {
    new players[32], num, id
    get_players(players, num)
   
    for (new i = 0; i < num; i++) {
        id = players[i]
       
        new name[32], show[33]
        get_user_name(id, name, 31)
       
        // Rütbe belirleme
        if(seviye[id] < 6){
            show = "RUTBESIZ"
        }
        else if(seviye[id] < 16 ){
            show = "COPCU"
        }
        else if(seviye[id] < 31 ){
            show = "COPCU KRALI"
        }
        else if(seviye[id] < 46 ){
            show = "BAKKAL"
        }
        else if(seviye[id] < 61 ){
            show = "MARKET"
        }
        else if(seviye[id] < 71 ){
            show = "MOBILYACI"
        }
        else if(seviye[id] < 81 ){
            show = "MIMAR"
        }
        else if(seviye[id] < 91 ){
            show = "MUHENDIS"
        }
        else if(seviye[id] <= 100){
            show = "KRAL RUTBE"
        }
       
        // Scoreboard'da gösterme
        message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))
        write_byte(id)
        write_byte(4) // 4 = change text color to red
        message_end()
       
        client_cmd(0, "name_change ^"%s^" ^"%s %s^"", name, show, name)
    }
}

(15-09-2024, 00:59)Darkness55 Adlı Kullanıcıdan Alıntı: Merhaba, Bu Xp, Rütbe Eklentisine Chat Tagı'da eklermisiniz, Askeriye Şeklinde Uzman, Çavuş renkli olucak şekilde yaparsanız sevinirm.
#3
Selamlar,
düzenlenmiş halini denedim ancak rütbe chat tag olarak eklenmemiş. Ek problemlerde oluşmuş;
1. adam vurduğumuzda .. XP verildi mesajı çift say olarak vermeye başlamış
2. Sol üstte sadece rütbemiz gözükmeye başlamış, kaç xp'ye sahibiz görünmüyor.
#4
@Darkness55 Konunuz çözüldüyse bildiriniz.
Son Düzenleme: 17-09-2024, 22:18, Düzenleyen: Cassis.
#5
Konunuz "Çözülmüş İsteklere" taşınmıştır.
TEŞKİLAT-I MAHSUSA 亗
t2g4906

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Kayıt Ol