Discord sunucumuz açılmıştır, hepinizi bekleriz

https://discord.gg/43gGDQe6tS

Yasaklı Kod

Eklenti sorunlarınız ve özel eklenti istekleriniz

Moderatör: Moderatörler

Kullanıcı avatarı

Konu Sahibi
Xau
Mesajlar: 217
Kayıt: Çrş Oca 23, 2019 10:03 pm
Server Ip/DNS: 213.238.173.12
Clan İsmi: Nostalji Gamers
İletişim:

Yasaklı Kod

Mesaj gönderen Xau »

Yasaklı kod hatası alıyorum yardım edermisiniz

Kod: Tümünü seç

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <nvault>

// Aici stergeti // din fata in functie de ce sistem de credite folositi.
#define FURIEN_ASKHANAR
//#define POINTS_SYSTEM_CYBY
//#define ARAGON_CREDITS

// Aici sunt inregistrate nativele in functie de ce sistem folositi.
#if defined FURIEN_ASKHANAR
    native fcs_get_user_credits(client)
    native fcs_set_user_credits(client, credits)
#endif
#if defined POINTS_SYSTEM_CYBY
    native get_points(id)
    native set_points(id, value)
#endif
#if defined ARAGON_CREDITS
    native get_user_credits(id)
    native set_user_credits(id, credits)
#endif

// Variabile pentru nivel
new nivel[33], clasa_furien[33], clasa_anti_furien[33], g_nextclass_a[33], g_nextclass[33];

// Constanta unde este inregistrat tagul.
new const TAG[] = "[Уникальный ЗМ | Класс]";

// Sistemul de salvare
new salvare_nvault;

// Credite pe damage
new daune_provocate[33];
#define DAUNE_MAXIM 200 // Aici modifici pentru cat damage sa primeasca un credit.

// Mesajul sincronizat pentru spectatori si afisarea creditelor.
new mesaj_sync;

// Setarea vitezei prin hamsandwich [stock utilizat din Zombie Plague]
new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame;

// Rezolvam bugul cu viteza in freeze time xDxD.
new freeze;

// Aici definim cate clase sunt. Intotdeauna numarul lor trebuie sa fie + 1. Exemplu, daca sunt 14 clase in total noi punem 15.
#define CLASE 15

// Numele claselor FURIEN
new const CLASELE_FURIEN[CLASE][] = 
{
    "",
    "Плоть",
    "Танк",
    "Ведьма",
    "Хищник",
    "Нечисть",
    "Пришелец",
    "Чужой",
    "Кровосос",
    "Болотная Тварь",
    "Изгой",                  
    "Морлок",                 
    "Тарк",
    "Мутант",
    "Глава Мутантов"
}

// Numele claselor Anti-Furien
new const CLASELE_ANTI_FURIEN[CLASE][] = 
{
    "",
    "Запах",
    "Салага",
    "Дух",
    "Слон",
    "Череп",
    "Дембель",
    "Курсант",
    "Лейтенант",
    "Ст.Лейтенант",
    "Капитан",
    "Майор",
    "Подполковник",
    "Полковник",
    "Генерал-Майор"
}

// Pretul fiecarui nivel in credite.
new const CREDITE_COST[CLASE] = 
{
    0,
    50,
    100,
    200,
    400,
    600,
    800,
    1000,
    1400,
    1550,
    1600,
    2000,
    2500,
    3000,
    5000 
}

// Task-ul pentru afisarea hudului.
enum (+= 100)
{
    TASK_SHOWHUD
}

#define ARATA_HUD (taskid - TASK_SHOWHUD)

// Aici se termina inregistrarea porcariilor.

// Init.
public plugin_init()
{
    register_plugin("Anti-Furien & Furien Class", "1.0.2", "cyby")
    // Comanda pentru afisarea meniului de clase.
    register_clcmd("say /class", "showclass")
    
    // Evenimentul de ucidere.
    register_event("DeathMsg", "event_ucidere", "a")
    
    // Functii prinse prin hamsandwich.
    RegisterHam(Ham_TakeDamage, "player", "ham_take_dmg")
    RegisterHam(Ham_Spawn, "player", "spawn_post", 1)
    RegisterHam(Ham_Player_ResetMaxSpeed, "player", "speed_reset_post", 1)
    
    // Functii pentru rezolvarea bugului cu viteza.
    register_event("HLTV", "round_start_before_freeze", "a", "1=0", "2=0")
    register_logevent("round_start_after_freeze", 2, "1=Round_Start")
    
    // Definim functia de Hud Sincronizat.
    mesaj_sync = CreateHudSyncObj()
}

// Salvarea pe nvault. Recomand sa nu modifici.
public plugin_cfg()
{
    salvare_nvault = nvault_open("level_furien")
    
    if(salvare_nvault == INVALID_HANDLE)
        set_fail_state("Eroare la deschiderea bazei de date.")
}

// Inchiderea fisierului nvault daca serverul pica sau se schimba harta. Recomand sa nu modifici.
public plugin_end()
    nvault_close(salvare_nvault)
    
public round_start_before_freeze()
    freeze = true

public round_start_after_freeze()
    freeze = false

// Nativ pentru a putea prelua nivelul fiecarui jucator.
// Ex: fr_get_level(id) == 2 [daca jucatorul are nivelul 2]
public plugin_natives()
    register_native("fr_get_level", "native_get_level", 1)

// Partea din spate a nativului
public native_get_level(id)
{
    if(!is_user_connected(id))
        return -1;
        
    return nivel[id];
}

// Evenimentul de ucidere.
public event_ucidere()
{
    static atacator, victima;
    atacator = read_data(1);
    victima = read_data(2);
    if(is_user_alive(atacator) && is_user_connected(victima))
    {
        check_level(atacator)
        check_level(victima)
    }
}

// Functia de scanare a nivelului + cumparare daca sunt gasiti numarul de credite la jucator + salvare.
public check_level(id)
{
    static credite;    
    #if defined FURIEN_ASKHANAR
        credite = fcs_get_user_credits(id)
    #endif
    #if defined POINTS_SYSTEM_CYBY
        credite = get_points(id)
    #endif
    #if defined ARAGON_CREDITS
        credite = get_user_credits(id)
    #endif
    if(credite >= CREDITE_COST[nivel[id]])
    {
        #if defined FURIEN_ASKHANAR
            fcs_set_user_credits(id, credite - CREDITE_COST[nivel[id]])
        #endif
        #if defined POINTS_SYSTEM_CYBY
            set_points(id, credite - CREDITE_COST[nivel[id]])
        #endif
        #if defined ARAGON_CREDITS
            set_user_credits(id, credite - CREDITE_COST[nivel[id]])
        #endif
        nivel[id]++
        SaveData(id)
        color(id, ".v%s.g Поздравляю, вы получили.e %d.g.", TAG, nivel[id])
        color(0, ".v%s.g Поздравляем.e %s.g для продвижения.e %d.g.", TAG, get_name(id), nivel[id])
    }                                       
}

// Functia de primire a unei cantitati de credite daca jucatorul face cat este definit in DAUNE_MAXIM.
public ham_take_dmg(victima, inductor, atacator, Float:daune)
{      
    if(victima == atacator || get_user_team(atacator) == get_user_team(victima) || !is_user_alive(atacator))
        return HAM_IGNORED;
        
    daune += nivel[atacator] * 2.0
    SetHamParamFloat(4, daune)
    
    daune_provocate[atacator] += floatround(daune)
    if(daune_provocate[atacator] > DAUNE_MAXIM)
    {
        daune_provocate[atacator] = 0
        #if defined FURIEN_ASKHANAR
            fcs_set_user_credits(atacator, fcs_get_user_credits(atacator) + 1)
        #endif
        #if defined POINTS_SYSTEM_CYBY
            set_points(atacator, get_points(atacator) + 1)
        #endif
        #if defined ARAGON_CREDITS
            set_user_credits(atacator, get_user_credits(atacator) + 1)
        #endif
        check_level(atacator)
    }
    return HAM_IGNORED;
}
// Functia afisare meniul principal
public showclass(id)
{
    if(!is_user_connected(id))
        return;
        
    static menu_name[300];
    #if defined FURIEN_ASKHANAR
        formatex(menu_name, charsmax(menu_name), "\yМеню Класса^nУровень:\r %d\w |\y Кредитов:\r %d\y^n^n", nivel[id], fcs_get_user_credits(id));
    #endif
    #if defined POINTS_SYSTEM_CYBY
        formatex(menu_name, charsmax(menu_name), "\yМеню Класса^nУровень:\r %d\w |\y Кредитов:\r %d\y^n^n", nivel[id], get_points(id));
    #endif
    #if defined ARAGON_CREDITS
        formatex(menu_name, charsmax(menu_name), "\yМеню Класса^nУровень:\r %d\w |\y Кредитов:\r %d\y^n^n", nivel[id], get_user_credits(id));
    #endif
                                                  
    static item_menu_furien[60], item_menu_anti_furien[60];
    formatex(item_menu_furien, charsmax(item_menu_furien), "Классы Фурий\r [%s]\y", CLASELE_FURIEN[clasa_furien[id]])
    formatex(item_menu_anti_furien, charsmax(item_menu_anti_furien), "Классы Анти-фурий\r [%s]\y", CLASELE_ANTI_FURIEN[clasa_anti_furien[id]])
    new menu = menu_create(menu_name, "spate_showclass")
    menu_additem(menu, item_menu_furien, "1")
    menu_additem(menu, item_menu_anti_furien, "2")
    menu_display(id, menu, 0)
}

// Spatele meniului principal
public spate_showclass(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(menu)
        return PLUGIN_HANDLED;
    }
    
    static tasta;
    tasta = item + 1
    switch(tasta)
    {
        case 1: clase_furien(id)
        case 2: clase_anti_furien(id)
    }
    menu_destroy(menu)
    return PLUGIN_HANDLED;
}
    

// Meniul de clase Furien.
public clase_furien(id)
{
    if(!is_user_connected(id))
        return;
    
    static menu_name[300];
    #if defined FURIEN_ASKHANAR
        formatex(menu_name, charsmax(menu_name), "\yКлассы Фурии^nУровень:\r %d\w |\y Кредитов:\r %d\y^nДанный класс:\r %s\y", nivel[id], fcs_get_user_credits(id), CLASELE_FURIEN[clasa_furien[id]]);
    #endif
    #if defined POINTS_SYSTEM_CYBY
        formatex(menu_name, charsmax(menu_name), "\yКлассы Фурии^nУровень:\r %d\w |\y Кредитов:\r %d\y^nДанный класс:\r %s\y", nivel[id], get_points(id), CLASELE_FURIEN[clasa_furien[id]]);
    #endif                                                                                                           
    #if defined ARAGON_CREDITS
        formatex(menu_name, charsmax(menu_name), "\yКлассы Фурии^nуровень:\r %d\w |\y Кредитов:\r %d\y^nДанный класс:\r %s\y", nivel[id], get_user_credits(id), CLASELE_FURIEN[clasa_furien[id]]);
    #endif
    
    new menu = menu_create(menu_name, "spate_clase_furien")
    static tasta[3], menu_item[35], i;                                                
    for(i = 1; i < sizeof CLASELE_FURIEN; i++)
    {
        if(nivel[id] < i || clasa_furien[id] == i)
            formatex(menu_item, charsmax(menu_item), "\d%s | %d Уровень", CLASELE_FURIEN[i], i)
        else                                                         
            formatex(menu_item, charsmax(menu_item), "\y%s | %d Уровень", CLASELE_FURIEN[i], i)             
        
        tasta[0] = i
        tasta[1] = 0
        menu_additem(menu, menu_item, tasta)
    }
    menu_display(id, menu, 0)
}

// Meniul de clase Anti-Furien.
public clase_anti_furien(id)
{
    if(!is_user_connected(id))
        return;
    
    static menu_name[300];
    #if defined FURIEN_ASKHANAR
        formatex(menu_name, charsmax(menu_name), "\yКлассы Анти-фурии^nУровень:\r %d\w |\y Кредитов:\r %d\y^nДанный класс:\r %s\y", nivel[id], fcs_get_user_credits(id), CLASELE_ANTI_FURIEN[clasa_anti_furien[id]]);
    #endif
    #if defined POINTS_SYSTEM_CYBY                    
        formatex(menu_name, charsmax(menu_name), "\yКлассы Анти-фурии^nУровень:\r %d\w |\y Кредитов:\r %d\y^nДанный класс:\r %s\y", nivel[id], get_points(id), CLASELE_ANTI_FURIEN[clasa_anti_furien[id]]);
    #endif
    #if defined ARAGON_CREDITS
        formatex(menu_name, charsmax(menu_name), "\yКлассы Анти-фурии^nУровень:\r %d\w |\y Кредитов:\r %d\y^nДанный класс:\r %s\y", nivel[id], get_user_credits(id), CLASELE_ANTI_FURIEN[clasa_anti_furien[id]]);
    #endif
    
    new menuid = menu_create(menu_name, "spate_clase_a_furien")
    static menu_item[35], tasta[3], i;
    for(i = 1; i < sizeof CLASELE_ANTI_FURIEN; i++)
    {
        if(nivel[id] < i || clasa_anti_furien[id] == i)
            formatex(menu_item, charsmax(menu_item), "\d%s | %d Лвл", CLASELE_ANTI_FURIEN[i], i)
        else
            formatex(menu_item, charsmax(menu_item), "\y%s | %d Лвл", CLASELE_ANTI_FURIEN[i], i)

        tasta[0] = i
        tasta[1] = 0
        menu_additem(menuid, menu_item, tasta)
    }
    menu_display(id, menuid, 0)
}

// Spatele meniului clase Furien.
public spate_clase_furien(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(menu)
        return PLUGIN_HANDLED;
    }
    
    static tasta;
    tasta = item + 1
    g_nextclass[id] = tasta
    if(nivel[id] < g_nextclass[id]) 
    { 
        color(id, ".v%s.g У вас слишком низкий уровень для класса.e %s.g.", TAG, CLASELE_FURIEN[tasta])
        g_nextclass[id] = 0
        clase_furien(id)
        return PLUGIN_HANDLED;
    }
    if(g_nextclass[id] == clasa_furien[id])
    {                                             
        color(id, ".v%s.gВы уже выбрали класс.e %s.g.", TAG, CLASELE_FURIEN[tasta])
        g_nextclass[id] = 0               
        return PLUGIN_HANDLED;
    }
    color(id, ".v%s.g Вы выбрали класс.e %s.g. он будет доступен в слд. раунде.", TAG, CLASELE_FURIEN[tasta])
    menu_destroy(menu);                                 
    return PLUGIN_HANDLED;
}
                                                                                  
// Spatele meniului clase Anti-Furien.
public spate_clase_a_furien(id, menu, item) 
{ 
    if(item == MENU_EXIT)
    {
        menu_destroy(menu)
        return PLUGIN_HANDLED;
    }
    
    static tasta;
    tasta = item + 1
    g_nextclass_a[id] = tasta
    if(nivel[id] < g_nextclass_a[id]) 
    { 
        color(id, ".v%s.g У вас слишком низкий уровень для класса.e %s.g.", TAG, CLASELE_ANTI_FURIEN[tasta])
        g_nextclass_a[id] = 0
        clase_anti_furien(id)
        return PLUGIN_HANDLED;
    }
    if(g_nextclass_a[id] == clasa_anti_furien[id])
    {
        color(id, ".v%s.ggВы уже выбрали класс.e %s.g.", TAG, CLASELE_ANTI_FURIEN[tasta])
        g_nextclass_a[id] = 0
        return PLUGIN_HANDLED;
    }
    color(id, ".v%s.g Вы выбрали класс.e %s.g. Будет доступен в слд. раунде.", TAG, CLASELE_ANTI_FURIEN[tasta])
    menu_destroy(menu); 
    return PLUGIN_HANDLED;
}

// Functia de spawn. Mai exact cand jucatorul este pus in baza, reinviat. Primeste facilitatile pentru nivelurile pe care jucatorul X are
// si Y level si clasa selectata din meniu Z ii seteaza ca si clasa default.
public spawn_post(id)
{
    if(!is_user_alive(id))
        return;
    
    if(g_nextclass[id] != 0)
    {
        clasa_furien[id] = g_nextclass[id]
        g_nextclass[id] = 0
        color(id, ".v%s.g Вы успешно протестировали класс.e %s.g.", TAG, CLASELE_FURIEN[clasa_furien[id]])
    }
                                      
    if(g_nextclass_a[id] != 0)
    {
        clasa_anti_furien[id] = g_nextclass_a[id]
        g_nextclass_a[id] = 0
        color(id, ".v%s.g Вы успешно протестировали класс.e %s.g.", TAG, CLASELE_ANTI_FURIEN[clasa_anti_furien[id]])
    }
                               
    if(get_user_team(id) == 2)
    {
        switch(clasa_anti_furien[id])
        {
            case 1: set_pev(id, pev_health, 100.0)
            case 2: set_pev(id, pev_health, 120.0)
            case 3: set_pev(id, pev_health, 130.0)
            case 4: set_pev(id, pev_health, 140.0)
            case 5: set_pev(id, pev_health, 150.0)
            case 6: set_pev(id, pev_health, 160.0)
            case 7: set_pev(id, pev_health, 170.0)
            case 8: set_pev(id, pev_health, 180.0)
            case 9: set_pev(id, pev_health, 190.0)
            case 10: set_pev(id, pev_health, 200.0)
            case 11: set_pev(id, pev_health, 210.0)
            case 12: set_pev(id, pev_health, 220.0)
            case 13: set_pev(id, pev_health, 235.0)
            case 14: set_pev(id, pev_health, 250.0)
        }
    }
    else if(get_user_team(id) == 1)
    {
        switch(clasa_furien[id])
        {
            case 1: set_pev(id, pev_health, 100.0)
            case 2: set_pev(id, pev_health, 120.0)
            case 3: set_pev(id, pev_health, 130.0)
            case 4: set_pev(id, pev_health, 140.0)
            case 5: set_pev(id, pev_health, 150.0)
            case 6: set_pev(id, pev_health, 160.0)
            case 7: set_pev(id, pev_health, 170.0)
            case 8: set_pev(id, pev_health, 180.0)
            case 9: set_pev(id, pev_health, 190.0)
            case 10: set_pev(id, pev_health, 200.0)
            case 11: set_pev(id, pev_health, 210.0)
            case 12: set_pev(id, pev_health, 220.0)
            case 13: set_pev(id, pev_health, 235.0)
            case 14: set_pev(id, pev_health, 250.0)
        }
    }
    
    new Float:valoare;
    if(get_user_team(id) == 1)
    {
        switch(clasa_furien[id])
        {
            case 1: valoare = 620.0 / 800.0
            case 2: valoare = 600.0 / 800.0
            case 3: valoare = 580.0 / 800.0
            case 4: valoare = 560.0 / 800.0
            case 5: valoare = 560.0 / 800.0
            case 6: valoare = 540.0 / 800.0
            case 7: valoare = 520.0 / 800.0
            case 8: valoare = 500.0 / 800.0
            case 9: valoare = 480.0 / 800.0
            case 10: valoare = 460.0 / 800.0
            case 11: valoare = 440.0 / 800.0
            case 12: valoare = 420.0 / 800.0
            case 13: valoare = 400.0 / 800.0
            case 14: valoare = 360.0 / 800.0
        }
    }
    else if(get_user_team(id) == 2)
    {
        switch(clasa_anti_furien[id])
        {
            case 1: valoare = 800.0 / 800.0
            case 2: valoare = 780.0 / 800.0
            case 3: valoare = 760.0 / 800.0
            case 4: valoare = 740.0 / 800.0
            case 5: valoare = 720.0 / 800.0
            case 6: valoare = 700.0 / 800.0
            case 7: valoare = 680.0 / 800.0
            case 8: valoare = 660.0 / 800.0
            case 9: valoare = 640.0 / 800.0
            case 10: valoare = 620.0 / 800.0
            case 11: valoare = 600.0 / 800.0
            case 12: valoare = 580.0 / 800.0
            case 13: valoare = 560.0 / 800.0
            case 14: valoare = 520.0 / 800.0
        }
    }
    set_pev(id, pev_gravity, valoare)
    check_level(id)
    ExecuteHamB(Ham_Player_ResetMaxSpeed, id)
}

// Functia de setare a vitezei.
public speed_reset_post(id)
{
    if(!is_user_alive(id) || freeze)
        return;
    
    set_player_maxspeed(id)
}

// Spatele functiei de setare a vitezei.
set_player_maxspeed(id)
{
    switch(get_user_team(id))
    {
        case 1: set_pev(id, pev_maxspeed, 500.0 + (20.0 * clasa_furien[id]))
        case 2: set_pev(id, pev_maxspeed, 240.0 + (10.0 * clasa_anti_furien[id]))
    }
}

// Hudul de afisare a caracteristicilor
public HealthHud(taskid)
{
    static id;
    id = ARATA_HUD;
    
    if(!is_user_alive(id))
    {
        id = pev(id, pev_iuser2)
        
        if(!is_user_alive(id)) return;
    }
    
    static msj_clasa[50], clasa, rosu, verde, albastru;
    switch(get_user_team(id))
    {
        case 1:
        {
            clasa = clasa_furien[id]
            rosu = 200
            verde = 50
            albastru = 70    
            formatex(msj_clasa, charsmax(msj_clasa), "%s", CLASELE_FURIEN[clasa])
        }
        case 2:
        {
            clasa = clasa_anti_furien[id]
            rosu = 20                 
            verde = 50
            albastru = 200
            formatex(msj_clasa, charsmax(msj_clasa), "%s", CLASELE_ANTI_FURIEN[clasa])
        }
    }
    
    if(id != ARATA_HUD)
    {
        static credits[15];
        #if defined FURIEN_ASKHANAR
            AddCommas(fcs_get_user_credits(id), credits, charsmax(credits))
        #endif
        #if defined POINTS_SYSTEM_CYBY
            AddCommas(get_points(id), credits, charsmax(credits))
        #endif
        #if defined ARAGON_CREDITS
            AddCommas(get_user_credits(id), credits, charsmax(credits))
        #endif
        set_hudmessage(100, 50, 150, -1.0, 0.8, 1, 0.3, 0.3)
        ShowSyncHudMsg(ARATA_HUD, mesaj_sync, "%s^nЖизней: %d | Брони: %d^nУровень: %d | Класс: %s^nКредитов: %s", get_name(id), get_user_health(id), get_user_armor(id), nivel[id], msj_clasa, credits)
    }                                                                                            
    else
    {                                                                                                    
        static credits[15];    
        #if defined FURIEN_ASKHANAR                             
            AddCommas(fcs_get_user_credits(ARATA_HUD), credits, charsmax(credits))
        #endif
        #if defined POINTS_SYSTEM_CYBY
            AddCommas(get_points(ARATA_HUD), credits, charsmax(credits))
        #endif
        #if defined ARAGON_CREDITS
            AddCommas(get_user_credits(ARATA_HUD), credits, charsmax(credits))
        #endif
        set_dhudmessage(rosu, verde, albastru, -1.0, 0.85, 0, 0.0, 0.3, 0.1, 0.2)
        show_dhudmessage(ARATA_HUD, "[ Жизней: %d | Брони: %d | Кредитов: %s ]^n[ Класс: %s | Уровень: %d ]", get_user_health(ARATA_HUD), get_user_armor(ARATA_HUD), credits, msj_clasa, nivel[ARATA_HUD])
    }
}

// Functia de disconnect + salvare a datelor.
public client_disconnected(id)
{
    daune_provocate[id] = 0
    remove_task(id+TASK_SHOWHUD)
    SaveData(id)
    g_nextclass[id] = 0
    g_nextclass_a[id] = 0
}

// Functia de join + preluare a datelor.
public client_putinserver(id)
{
    LoadData(id)
    g_nextclass[id] = 0
    g_nextclass_a[id] = 0
    
    set_task(0.3, "HealthHud", id+TASK_SHOWHUD, _, _, "b")
}

// Spatele functiei de preluare a datelor.
public LoadData(id) 
{ 
    new vaultkey[64], vaultdata[256];
    format(vaultkey, 63, "%s##LEVELING", get_name(id))
    format(vaultdata, 255, "%i#%i#%i#", nivel[id], clasa_furien[id], clasa_anti_furien[id])
    nvault_get(salvare_nvault, vaultkey, vaultdata, 255)
    replace_all(vaultdata, 255, "#", " ")
    new lvl[32], clasaf[32], clasaa[32];
    parse(vaultdata, lvl, 31, clasaf, 31, clasaa, 31)
    nivel[id] = str_to_num(lvl)
    clasa_furien[id] = str_to_num(clasaf)
    clasa_anti_furien[id] = str_to_num(clasaa)
    if(nivel[id] == 0)
        nivel[id] = 1
    if(clasa_furien[id] == 0)
        clasa_furien[id] = 1
    if(clasa_anti_furien[id] == 0)
        clasa_anti_furien[id] = 1
}  

// Spatele functiei de salvare a datelor.
public SaveData(id) 
{
    new vaultkey[64], vaultdata[256];
    format(vaultkey, 63, "%s##LEVELING", get_name(id))
    format(vaultdata, 255, "%i#%i#%i#", nivel[id], clasa_furien[id], clasa_anti_furien[id])
    nvault_set(salvare_nvault, vaultkey, vaultdata)
}  

// "Comanda rapida" la preluarea numelui pentru a scurta din cod pe ici pe colo.
stock get_name(id)
{
    static name[32];
    get_user_name(id, name, charsmax(name) - 1)
    return name;
}

// Stockul folosit pentru chat color.
stock color(const id, const input[], any:...)
{
    new count = 1, players[32];
    static msg[191]
    vformat(msg, 190, input, 3)
    
    replace_all(msg, 190, ".v", "^4")
    replace_all(msg, 190, ".g", "^1")
    replace_all(msg, 190, ".e", "^3")
    
    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, get_user_msgid("SayText"), _, players[i])
                write_byte(players[i]);
                write_string(msg);
                message_end();
            }
        }
    }
}

// Functia pentru adaugarea la numere de peste 1000 virgula la ele.
public AddCommas(iNum , szOutput[] , iLen)
{
    new szTmp[15], iOutputPos, iNumPos, iNumLen;

    if(iNum < 0)
    {
        szOutput[iOutputPos++] = '-'
        iNum = abs(iNum)
    }

    iNumLen = num_to_str(iNum, szTmp, charsmax(szTmp))

    if(iNumLen <= 3)
        iOutputPos += copy(szOutput[iOutputPos], iLen, szTmp)
    else
    {
        while((iNumPos < iNumLen) && (iOutputPos < iLen)) 
        {
            szOutput[iOutputPos++] = szTmp[iNumPos++]
        
            if((iNumLen - iNumPos) && !((iNumLen - iNumPos) % 3)) 
                szOutput[iOutputPos++] = ','
        }
        szOutput[iOutputPos] = EOS
    }
    return iOutputPos;
}

// Stockul pentru dhudmessage.
stock __dhud_color;
stock __dhud_x;
stock __dhud_y;
stock __dhud_effect;
stock __dhud_fxtime;
stock __dhud_holdtime;
stock __dhud_fadeintime;
stock __dhud_fadeouttime;
stock __dhud_reliable;

stock set_dhudmessage( red = 0, green = 160, blue = 0, Float:x = -1.0, Float:y = 0.65, effects = 2, Float:fxtime = 6.0, Float:holdtime = 3.0, Float:fadeintime = 0.1, Float:fadeouttime = 1.5, bool:reliable = false )
{
    #define clamp_byte(%1)       ( clamp( %1, 0, 255 ) )
    #define pack_color(%1,%2,%3) ( %3 + ( %2 << 8 ) + ( %1 << 16 ) )

    __dhud_color       = pack_color( clamp_byte( red ), clamp_byte( green ), clamp_byte( blue ) );
    __dhud_x           = _:x;
    __dhud_y           = _:y;
    __dhud_effect      = effects;
    __dhud_fxtime      = _:fxtime;
    __dhud_holdtime    = _:holdtime;
    __dhud_fadeintime  = _:fadeintime;
    __dhud_fadeouttime = _:fadeouttime;
    __dhud_reliable    = _:reliable;

    return 1;
}

stock show_dhudmessage( index, const message[], any:... )
{
    new buffer[ 128 ];
    new numArguments = numargs();

    if( numArguments == 2 )
    {
        send_dhudMessage( index, message );
    }
    else if( index || numArguments == 3 )
    {
        vformat( buffer, charsmax( buffer ), message, 3 );
        send_dhudMessage( index, buffer );
    }
    else
    {
        new playersList[ 32 ], numPlayers;
        get_players( playersList, numPlayers, "ch" );

        if( !numPlayers )
        {
            return 0;
        }

        new Array:handleArrayML = ArrayCreate();

        for( new i = 2, j; i < numArguments; i++ )
        {
            if( getarg( i ) == LANG_PLAYER )
            {
                while( ( buffer[ j ] = getarg( i + 1, j++ ) ) ) {}
                j = 0;

                if( GetLangTransKey( buffer ) != TransKey_Bad )
                {
                    ArrayPushCell( handleArrayML, i++ );
                }
            }
        }

        new size = ArraySize( handleArrayML );

        if( !size )
        {
            vformat( buffer, charsmax( buffer ), message, 3 );
            send_dhudMessage( index, buffer );
        }
        else
        {
            for( new i = 0, j; i < numPlayers; i++ )
            {
                index = playersList[ i ];

                for( j = 0; j < size; j++ )
                {
                    setarg( ArrayGetCell( handleArrayML, j ), 0, index );
                }

                vformat( buffer, charsmax( buffer ), message, 3 );
                send_dhudMessage( index, buffer );
            }
        }

        ArrayDestroy( handleArrayML );
    }

    return 1;
}

stock send_dhudMessage( const index, const message[] )
{
    message_begin( __dhud_reliable ? ( index ? MSG_ONE : MSG_ALL ) : ( index ? MSG_ONE_UNRELIABLE : MSG_BROADCAST ), SVC_DIRECTOR, _, index );
    {
        write_byte( strlen( message ) + 31 );
        write_byte( DRC_CMD_MESSAGE );
        write_byte( __dhud_effect );
        write_long( __dhud_color );
        write_long( __dhud_x );
        write_long( __dhud_y );
        write_long( __dhud_fadeintime );
        write_long( __dhud_fadeouttime );
        write_long( __dhud_holdtime );
        write_long( __dhud_fxtime );
        write_string( message );
    }
    message_end();
}

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

Konu Sahibi
Xau
Mesajlar: 217
Kayıt: Çrş Oca 23, 2019 10:03 pm
Server Ip/DNS: 213.238.173.12
Clan İsmi: Nostalji Gamers
İletişim:

Yasaklı Kod

Mesaj gönderen Xau »

Konu çözülmüştür.

Link:
Linklerini gizle
Linki Kopyala
Cevapla