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

https://discord.gg/43gGDQe6tS

ZP Refleks & SupplyBox Hataları

Eklenti sorunlarınız ve özel eklenti istekleriniz

Moderatör: Moderatörler


Konu Sahibi
TheAsTeRiX
Mesajlar: 718
Kayıt: Cmt Oca 14, 2017 5:30 pm
Konum: Makedonya
Clan İsmi: Skull Gaming

ZP Refleks & SupplyBox Hataları

Mesaj gönderen TheAsTeRiX »

Refleks Eklentisinde 4 Hata,SupplyBox eklentisinde de kutu düşmeme sorunu var.Eklenti sadece uyarı veriyor.Düzeltebilecek Varmı ?
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.

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

MRX3565
Mesajlar: 1667
Kayıt: Çrş Nis 26, 2017 12:19 am
Konum: Bilinmiyor.

ZP Refleks & SupplyBox Hataları

Mesaj gönderen MRX3565 »

...
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
TheAsTeRiX
Mesajlar: 718
Kayıt: Cmt Oca 14, 2017 5:30 pm
Konum: Makedonya
Clan İsmi: Skull Gaming

ZP Refleks & SupplyBox Hataları

Mesaj gönderen TheAsTeRiX »

MRX3565 yazdı:...
Eklenti çalıştı fakat elle başlatmam gerekiyor.Otomatik başlamıyor.Ayarladığım ammo miktarı 5 ile 20 arasında olacak fakat ammo miktarını kendisi ayarlamaya devam ediyor.

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

MRX3565
Mesajlar: 1667
Kayıt: Çrş Nis 26, 2017 12:19 am
Konum: Bilinmiyor.

ZP Refleks & SupplyBox Hataları

Mesaj gönderen MRX3565 »

...
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
TheAsTeRiX
Mesajlar: 718
Kayıt: Cmt Oca 14, 2017 5:30 pm
Konum: Makedonya
Clan İsmi: Skull Gaming

ZP Refleks & SupplyBox Hataları

Mesaj gönderen TheAsTeRiX »

MRX3565 yazdı:...
Eklentiyi düzelttiğin için teşekkürler çalışıyor :)

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
TheAsTeRiX
Mesajlar: 718
Kayıt: Cmt Oca 14, 2017 5:30 pm
Konum: Makedonya
Clan İsmi: Skull Gaming

ZP Refleks & SupplyBox Hataları

Mesaj gönderen TheAsTeRiX »

SupplyBox eklentisini düzeltebilecek var mı ? Sanırsam versiyon uyumlu değil fakat en güncel bulabildiğim versiyonu buydu.

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

uzman59
Mesajlar: 624
Kayıt: Çrş Nis 06, 2016 7:40 pm
Konum: Tekirdağ İlçesi
Server Ip/DNS: cs11.csduragi.net
Clan İsmi: HospitaL 卍 KLan

ZP Refleks & SupplyBox Hataları

Mesaj gönderen uzman59 »

@TheAsTeRiX

Deneyiniz..

Sorun varsa bildiriniz..

Kod: Tümünü seç

/* ======================================================
Plugin Name: [ZP] Addon: SupplyBox
Type: Addon
Version: 1.0
Author: Dias
Description: This plugin can make supplybox in random location, 
to support human team to fight back the zombie
Credits:
- Dias | Made Plugin
- Sontung0 | For Some Stock and config for Supplybox (Special Thank)
- Twilight Suzuka | For Some Stock
- CSO | For Model, Sound, Sprite of SupplyBox
- 4eRT | For Read ini file code i got from plugin "[ZP] Random Extra On New Round"
====================================================== */
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <zombieplague>
#include <xs>
#include <refol>

#define PLUGIN "[ZP] Addon: SupplyBox"
#define VERSION "1.1"
#define AUTHOR "Dias"

// ======================= SUPPLYBOX CONFIG ======================== // 
#define SUPPLYBOX_CLASSNAME "supplybox"
#define TASK_SUPPLYBOX 128256
#define TASK_SUPPLYBOX2 138266
#define TASK_SUPPLYBOX_HELP 129257
#define TASK_SUPPLYBOX_WAIT 130259
const MAX_SUPPLYBOX_ENT = 100
new const supplybox_spawn_file[] = "%s/zp_supplybox/%s.cfg"
new const supplybox_item_file[] = "%s/zp_supplybox.ini"
new const supplybox_icon_spr[] = "sprites/zombie_plague/icon_supplybox.spr"
new const supplybox_model[][] = {
    "models/zombie_plague/supplybox.mdl"
}
new const supplybox_drop_sound[][] = {
    "zombie_plague/supplybox_drop.wav"
}
new const supplybox_pickup_sound[][] = {
    "zombie_plague/supplybox_pickup.wav"
}
// ======================= END OF SUPPLYBOX CONFIG ======================== // 

// Below here is hard code. Don't edit anything except cvars
new g_supplybox_num, g_supplybox_wait[33], supplybox_count, Array:supplybox_item, 
supplybox_ent[MAX_SUPPLYBOX_ENT], g_supplybox_icon_id, Float:g_supplybox_spawn[MAX_SUPPLYBOX_ENT][3],
g_total_supplybox_spawn
new cvar_supplybox_icon, cvar_supplybox_max, cvar_supplybox_num, cvar_supplybox_totalintime, 
cvar_supplybox_time, cvar_supplybox_delaytime, cvar_supplybox_icon_size, cvar_supplybox_icon_light
new bool:made_supplybox, Float:g_icon_delay[33], g_newround, g_endround

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)

    register_event("HLTV", "event_newround", "a", "1=0", "2=0")
    register_logevent("logevent_round_end", 2, "1=Round_End")
    
    register_forward(FM_Touch, "fw_supplybox_touch")
    
    cvar_supplybox_max = register_cvar("zp_supplybox_max", "99")
    cvar_supplybox_num = register_cvar("zp_supplybox_num", "1")
    cvar_supplybox_totalintime = register_cvar("zp_supplybox_totalintime", "4")
    cvar_supplybox_time = register_cvar("zp_supplybox_time", "30")
    cvar_supplybox_icon = register_cvar("zp_supplybox_icon", "1")
    cvar_supplybox_delaytime = register_cvar("zp_supplybox_icon_delay_time", "0.03")    
    cvar_supplybox_icon_size = register_cvar("zp_supplybox_icon_size", "2")
    cvar_supplybox_icon_light = register_cvar("zp_supplybox_icon_light", "100")
    
    set_task(2.0, "update_radar", _, _, _, "b")
}

public plugin_precache()
{
    supplybox_item = ArrayCreate(64, 1)
    
    load_supplybox_spawn()
    load_supplybox_item()
    
    static i
    for(i = 0; i < sizeof(supplybox_model); i++)
        engfunc(EngFunc_PrecacheModel, supplybox_model[i])
    for(i = 0; i < sizeof(supplybox_drop_sound); i++)
        engfunc(EngFunc_PrecacheSound, supplybox_drop_sound[i])        
    for(i = 0; i < sizeof(supplybox_pickup_sound); i++)
        engfunc(EngFunc_PrecacheSound, supplybox_pickup_sound[i])
        
    g_supplybox_icon_id = engfunc(EngFunc_PrecacheModel, supplybox_icon_spr)
    precache_sound("perm3.wav")
}

public plugin_cfg()
{
    set_task(0.5, "event_newround")
}

public load_supplybox_spawn()
{
    // Check for spawns points of the current map
    new cfgdir[32], mapname[32], filepath[100], linedata[64]
    get_configsdir(cfgdir, charsmax(cfgdir))
    get_mapname(mapname, charsmax(mapname))
    formatex(filepath, charsmax(filepath), supplybox_spawn_file, cfgdir, mapname)
    
    // Load spawns points
    if (file_exists(filepath))
    {
        new file = fopen(filepath,"rt"), row[4][6]
        
        while (file && !feof(file))
        {
            fgets(file, linedata, charsmax(linedata))
            
            // invalid spawn
            if(!linedata[0] || str_count(linedata,' ') < 2) continue;
            
            // get spawn point data
            parse(linedata,row[0],5,row[1],5,row[2],5)
            
            // origin
            g_supplybox_spawn[g_total_supplybox_spawn][0] = floatstr(row[0])
            g_supplybox_spawn[g_total_supplybox_spawn][1] = floatstr(row[1])
            g_supplybox_spawn[g_total_supplybox_spawn][2] = floatstr(row[2])

            g_total_supplybox_spawn++
            if (g_total_supplybox_spawn >= MAX_SUPPLYBOX_ENT) 
                break
        }
        if (file) fclose(file)
    }
}

public load_supplybox_item() 
{
    new filepath[64]
    get_configsdir(filepath, charsmax(filepath))
    format(filepath, charsmax(filepath), supplybox_item_file, filepath)
    
    if (!file_exists(filepath))    
    {
        new error_msg[100]
        formatex(error_msg, charsmax(error_msg), "[ZP-SupplyBox][Error] Item File Not Found")
        set_fail_state(error_msg)
        return
    }
    
    new line[1024], key[64], value[960]
    new file = fopen(filepath, "rt")
    
    while (!feof(file) && file)
    {
        fgets(file, line, charsmax(line));
        replace(line, charsmax(line), "^n", "")
        
        if (!line[0] || line[0] == ';')
            continue
        
        strtok(line, key, charsmax(key), value, charsmax(value), '=')
        trim(key)
        trim(value)
        
        if (equali(key, "SUPPLYBOX_ITEM")) 
        {
            while (value[0] != 0 && strtok(value, key, charsmax(key), value, charsmax(value), ',')) 
            {
                trim(key)
                trim(value)
                ArrayPushString(supplybox_item, key)
            }
        }
    }
}

public update_radar()
{    
    for (new id = 1; id <= get_maxplayers(); id++)
    {
        if (!is_user_alive(id) || !supplybox_count || zp_get_user_zombie(id)) 
            continue
        
        static i, next_ent
        i = 1
        while(i <= supplybox_count)
        {
            next_ent = supplybox_ent[i]
            if (next_ent && is_valid_ent(next_ent))
            {
                static Float:origin[3]
                pev(next_ent, pev_origin, origin)
                
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("HostagePos"), {0,0,0}, id)
                write_byte(id)
                write_byte(i)        
                write_coord(floatround(origin[0]))
                write_coord(floatround(origin[1]))
                write_coord(floatround(origin[2]))
                message_end()
            
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("HostageK"), {0,0,0}, id)
                write_byte(i)
                message_end()
            }

            i++
        }
    }
}

public event_newround()
{
    made_supplybox = false
    g_newround = 1
    g_endround = 0
    
    remove_supplybox()
    supplybox_count = 0
    
    if(task_exists(TASK_SUPPLYBOX)) remove_task(TASK_SUPPLYBOX)
    if(task_exists(TASK_SUPPLYBOX2)) remove_task(TASK_SUPPLYBOX2)
    if(task_exists(TASK_SUPPLYBOX_HELP)) remove_task(TASK_SUPPLYBOX_HELP)
}

public logevent_round_end() g_endround = 1

public zp_user_infected_post()
{
    if(!made_supplybox)
    {
        g_newround = 0
        made_supplybox = true
        
        if(task_exists(TASK_SUPPLYBOX)) remove_task(TASK_SUPPLYBOX)
        
        if(!g_total_supplybox_spawn)
        {
            client_print(0, print_console, "[ZP - SupplyBox][Error] Spawn Point Not Found. Please Create Spawn Point")
        } else {
            set_task(get_pcvar_float(cvar_supplybox_time), "create_supplybox", TASK_SUPPLYBOX)
        }
    }
}

public client_PostThink(id)
{
    if (!get_pcvar_num(cvar_supplybox_icon) || !is_user_alive(id) || zp_get_user_zombie(id))
        return
    if((g_icon_delay[id] + get_pcvar_float(cvar_supplybox_delaytime)) > get_gametime())
        return
        
    g_icon_delay[id] = get_gametime()

    if (supplybox_count)
    {
        static i, box_ent
        i = 1
        
        while (i <= supplybox_count)
        {
            box_ent = supplybox_ent[i]
            create_icon_origin(id, box_ent, g_supplybox_icon_id)
            i++
        }
    }
}

public create_supplybox()
{
    if (supplybox_count >= get_pcvar_num(cvar_supplybox_max) || g_newround || g_endround) 
        return

    if (task_exists(TASK_SUPPLYBOX)) remove_task(TASK_SUPPLYBOX)
    set_task(get_pcvar_float(cvar_supplybox_time), "create_supplybox", TASK_SUPPLYBOX)
    
    if (get_total_supplybox() >= get_pcvar_num(cvar_supplybox_totalintime)) 
        return
    
    g_supplybox_num = 0
    create_supplybox2()
    
    static random_sound
    random_sound = random_num(0, charsmax(supplybox_drop_sound))
    client_cmd(0, "spk ^"%s^"", supplybox_drop_sound[random_sound])
    
    for(new i = 0; i < get_maxplayers(); i++)
    {
        if(is_user_alive(i) && is_user_connected(i) && !zp_get_user_zombie(i))
            client_print(i, print_chat, "Supplybox has appeared. Find it")
    }
    
    if (task_exists(TASK_SUPPLYBOX_HELP)) remove_task(TASK_SUPPLYBOX_HELP)
    set_task(3.0, "show_supplybox_help", TASK_SUPPLYBOX_HELP)

    if (task_exists(TASK_SUPPLYBOX2)) remove_task(TASK_SUPPLYBOX2)
    set_task(0.5, "create_supplybox2", TASK_SUPPLYBOX2, _, _, "b")    
}

public create_supplybox2()
{
    if (supplybox_count >= get_pcvar_num(cvar_supplybox_max)
    || get_total_supplybox() >= get_pcvar_num(cvar_supplybox_totalintime) || g_newround || g_endround)
    {
        remove_task(TASK_SUPPLYBOX2)
        return
    }
    
    supplybox_count++
    g_supplybox_num++

    static item
    item = random(ArraySize(supplybox_item))

    new ent = create_entity("info_target")
    
    entity_set_string(ent, EV_SZ_classname, SUPPLYBOX_CLASSNAME)
    entity_set_model(ent, supplybox_model[random_num(0, charsmax(supplybox_model))])    
    entity_set_size(ent,Float:{-2.0,-2.0,-2.0},Float:{5.0,5.0,5.0})
    entity_set_int(ent,EV_INT_solid,1)
    entity_set_int(ent,EV_INT_movetype,6)
    entity_set_int(ent, EV_INT_iuser1, item)
    entity_set_int(ent, EV_INT_iuser2, supplybox_count)
    
    static Float:Origin[3]
    collect_spawn_point(Origin)
    engfunc(EngFunc_SetOrigin, ent, Origin)
    
    supplybox_ent[supplybox_count] = ent

    if ((g_supplybox_num >= get_pcvar_num(cvar_supplybox_num)) && task_exists(TASK_SUPPLYBOX2)) 
        remove_task(TASK_SUPPLYBOX2)
}

public get_total_supplybox()
{
    new total
    for (new i = 1; i <= supplybox_count; i++)
    {
        if (supplybox_ent[i]) total += 1
    }
    return total
}

public show_supplybox_help()
{
    for(new i = 0; i < get_maxplayers(); i++)
    {
        if(is_user_alive(i) && is_user_connected(i) && !zp_get_user_zombie(i))
            client_print(i, print_chat, "You can see Supplybox Location in the Radar")
    }
}

public remove_supplybox()
{
    remove_ent_by_class(SUPPLYBOX_CLASSNAME)
    new supplybox_ent_reset[MAX_SUPPLYBOX_ENT]
    supplybox_ent = supplybox_ent_reset
}

public fw_supplybox_touch(ent, id)
{
    if (!pev_valid(ent) || !is_user_alive(id) || zp_get_user_zombie(id)
    || zp_get_user_survivor(id) || zp_get_user_nemesis(id) || g_supplybox_wait[id]) 
        return FMRES_IGNORED
    
    static classname[32]
    entity_get_string(ent,EV_SZ_classname,classname,31)
    
    if (equal(classname, SUPPLYBOX_CLASSNAME))
    {
        static item_id, item[64]
        item_id = entity_get_int(ent, EV_INT_iuser1)
        ArrayGetString(supplybox_item, item_id, item, charsmax(item))
        
        zp_force_buy_extra_item(id, zp_get_extra_item_id(item), 1)
            
        static name[32]
        get_user_name(id, name, sizeof(name))
        
        
        if(equal(item, "Magazine Sets") && !codebox1(id) && jumlah_cyclone() <= 4)
        {
            client_printc(0, "!t[Attention]*****Selamat. %s telah memenangkan sebuah 'Cyclone' [Permanent]", name)
            client_printc(0, "!tsebuah item High Class dari codebox.******")
        }
        
        else if(equal(item, "Free Costume")&& !codebox2(id) && jumlah_cannon() <= 1)
        {
            client_printc(0, "!t[Attention]*****Selamat. %s telah memenangkan sebuah 'Black Dragon Cannon' [Permanent]", name)
            client_printc(0, "!tsebuah item High Class dari codebox.******")
        }
        
        else if(equal(item, "Free C0stumes")&& !codebox3(id) && jumlah_rail() <= 2)
        {
            client_printc(0, "!t[Attention]*****Selamat. %s telah memenangkan sebuah 'Rail Cannon' [Permanent]", name)
            client_printc(0, "!tsebuah item High Class dari codebox.******")
        }
        
        else
        {
            client_print(0, print_center, "%s telah mendapatkan %s dari SupplyBox !!!", name, item)
            client_cmd( id, "spk sound/perm3.wav")
        }
                
        static random_sound
        random_sound = random_num(0, charsmax(supplybox_pickup_sound))
        emit_sound(id, CHAN_VOICE, supplybox_pickup_sound[random_sound], 1.0, ATTN_NORM, 0, PITCH_NORM)

        new num_box = entity_get_int(ent, EV_INT_iuser2)
        supplybox_ent[num_box] = 0
        remove_entity(ent)

        g_supplybox_wait[id] = 1
        if (task_exists(id+TASK_SUPPLYBOX_WAIT)) remove_task(id+TASK_SUPPLYBOX_WAIT)
        set_task(2.0, "remove_supplybox_wait", id+TASK_SUPPLYBOX_WAIT)
    }
    
    return FMRES_IGNORED
}

public remove_supplybox_wait(id)
{
    id -= TASK_SUPPLYBOX_WAIT
    
    g_supplybox_wait[id] = 0
    if (task_exists(id+TASK_SUPPLYBOX_WAIT)) remove_task(id+TASK_SUPPLYBOX_WAIT)
}

stock collect_spawn_point(Float:origin[3]) // By Sontung0
{
    for (new i = 1; i <= g_total_supplybox_spawn *3 ; i++)
    {
        origin = g_supplybox_spawn[random(g_total_supplybox_spawn)]
        if (check_spawn_box(origin)) return 1;
    }

    return 0;
}
stock check_spawn_box(Float:origin[3]) // By Sontung0
{
    new Float:originE[3], Float:origin1[3], Float:origin2[3]
    new ent = -1
    while ((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", SUPPLYBOX_CLASSNAME)) != 0)
    {
        pev(ent, pev_origin, originE)
        
        // xoy
        origin1 = origin
        origin2 = originE
        origin1[2] = origin2[2] = 0.0
        if (vector_distance(origin1, origin2) <= 32.0) return 0;
    }
    return 1;
}

stock create_icon_origin(id, ent, sprite) // By sontung0
{
    if (!pev_valid(ent)) return;
    
    new Float:fMyOrigin[3]
    entity_get_vector(id, EV_VEC_origin, fMyOrigin)
    
    new target = ent
    new Float:fTargetOrigin[3]
    entity_get_vector(target, EV_VEC_origin, fTargetOrigin)
    fTargetOrigin[2] += 40.0
    
    if (!is_in_viewcone(id, fTargetOrigin)) return;

    new Float:fMiddle[3], Float:fHitPoint[3]
    xs_vec_sub(fTargetOrigin, fMyOrigin, fMiddle)
    trace_line(-1, fMyOrigin, fTargetOrigin, fHitPoint)
                            
    new Float:fWallOffset[3], Float:fDistanceToWall
    fDistanceToWall = vector_distance(fMyOrigin, fHitPoint) - 10.0
    normalize(fMiddle, fWallOffset, fDistanceToWall)
    
    new Float:fSpriteOffset[3]
    xs_vec_add(fWallOffset, fMyOrigin, fSpriteOffset)
    new Float:fScale
    fScale = 0.01 * fDistanceToWall
    
    new scale = floatround(fScale)
    scale = max(scale, 1)
    scale = min(scale, get_pcvar_num(cvar_supplybox_icon_size))
    scale = max(scale, 1)

    te_sprite(id, fSpriteOffset, sprite, scale, get_pcvar_num(cvar_supplybox_icon_light))
}

stock te_sprite(id, Float:origin[3], sprite, scale, brightness) // By sontung0
{    
    message_begin(MSG_ONE, SVC_TEMPENTITY, _, id)
    write_byte(TE_SPRITE)
    write_coord(floatround(origin[0]))
    write_coord(floatround(origin[1]))
    write_coord(floatround(origin[2]))
    write_short(sprite)
    write_byte(scale) 
    write_byte(brightness)
    message_end()
}

stock normalize(Float:fIn[3], Float:fOut[3], Float:fMul) // By sontung0
{
    new Float:fLen = xs_vec_len(fIn)
    xs_vec_copy(fIn, fOut)
    
    fOut[0] /= fLen, fOut[1] /= fLen, fOut[2] /= fLen
    fOut[0] *= fMul, fOut[1] *= fMul, fOut[2] *= fMul
}

stock str_count(const str[], searchchar) // By Twilight Suzuka
{
    new count, i, len = strlen(str)
    
    for (i = 0; i <= len; i++)
    {
        if(str[i] == searchchar)
            count++
    }
    
    return count;
}

stock remove_ent_by_class(classname[])
{
    new nextitem  = find_ent_by_class(-1, classname)
    while(nextitem)
    {
        remove_entity(nextitem)
        nextitem = find_ent_by_class(-1, classname)
    }
}

stock client_printc(index, const text[], any:...)
{
    new szMsg[128];
    vformat(szMsg, sizeof(szMsg) - 1, text, 3);

    replace_all(szMsg, sizeof(szMsg) - 1, "!g", "^x04");
    replace_all(szMsg, sizeof(szMsg) - 1, "!n", "^x01");
    replace_all(szMsg, sizeof(szMsg) - 1, "!t", "^x03");

    if(index == 0)
    {
        for(new i = 0; i < get_maxplayers(); i++)
        {
            if(!is_user_connected(i))
                continue
            
            message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, i)
            write_byte(i)
            write_string(szMsg)
            message_end()
        }        
    } else {
        message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, index);
        write_byte(index);
        write_string(szMsg);
        message_end();
    }
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1066\\ f0\\ fs16 \n\\ par }
*/

Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
TheAsTeRiX
Mesajlar: 718
Kayıt: Cmt Oca 14, 2017 5:30 pm
Konum: Makedonya
Clan İsmi: Skull Gaming

ZP Refleks & SupplyBox Hataları

Mesaj gönderen TheAsTeRiX »

uzman59 yazdı:@TheAsTeRiX

Deneyiniz..

Sorun varsa bildiriniz..

Kod: Tümünü seç

/* ======================================================
Plugin Name: [ZP] Addon: SupplyBox
Type: Addon
Version: 1.0
Author: Dias
Description: This plugin can make supplybox in random location, 
to support human team to fight back the zombie
Credits:
- Dias | Made Plugin
- Sontung0 | For Some Stock and config for Supplybox (Special Thank)
- Twilight Suzuka | For Some Stock
- CSO | For Model, Sound, Sprite of SupplyBox
- 4eRT | For Read ini file code i got from plugin "[ZP] Random Extra On New Round"
====================================================== */
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <zombieplague>
#include <xs>
#include <refol>

#define PLUGIN "[ZP] Addon: SupplyBox"
#define VERSION "1.1"
#define AUTHOR "Dias"

// ======================= SUPPLYBOX CONFIG ======================== // 
#define SUPPLYBOX_CLASSNAME "supplybox"
#define TASK_SUPPLYBOX 128256
#define TASK_SUPPLYBOX2 138266
#define TASK_SUPPLYBOX_HELP 129257
#define TASK_SUPPLYBOX_WAIT 130259
const MAX_SUPPLYBOX_ENT = 100
new const supplybox_spawn_file[] = "%s/zp_supplybox/%s.cfg"
new const supplybox_item_file[] = "%s/zp_supplybox.ini"
new const supplybox_icon_spr[] = "sprites/zombie_plague/icon_supplybox.spr"
new const supplybox_model[][] = {
    "models/zombie_plague/supplybox.mdl"
}
new const supplybox_drop_sound[][] = {
    "zombie_plague/supplybox_drop.wav"
}
new const supplybox_pickup_sound[][] = {
    "zombie_plague/supplybox_pickup.wav"
}
// ======================= END OF SUPPLYBOX CONFIG ======================== // 

// Below here is hard code. Don't edit anything except cvars
new g_supplybox_num, g_supplybox_wait[33], supplybox_count, Array:supplybox_item, 
supplybox_ent[MAX_SUPPLYBOX_ENT], g_supplybox_icon_id, Float:g_supplybox_spawn[MAX_SUPPLYBOX_ENT][3],
g_total_supplybox_spawn
new cvar_supplybox_icon, cvar_supplybox_max, cvar_supplybox_num, cvar_supplybox_totalintime, 
cvar_supplybox_time, cvar_supplybox_delaytime, cvar_supplybox_icon_size, cvar_supplybox_icon_light
new bool:made_supplybox, Float:g_icon_delay[33], g_newround, g_endround

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)

    register_event("HLTV", "event_newround", "a", "1=0", "2=0")
    register_logevent("logevent_round_end", 2, "1=Round_End")
    
    register_forward(FM_Touch, "fw_supplybox_touch")
    
    cvar_supplybox_max = register_cvar("zp_supplybox_max", "99")
    cvar_supplybox_num = register_cvar("zp_supplybox_num", "1")
    cvar_supplybox_totalintime = register_cvar("zp_supplybox_totalintime", "4")
    cvar_supplybox_time = register_cvar("zp_supplybox_time", "30")
    cvar_supplybox_icon = register_cvar("zp_supplybox_icon", "1")
    cvar_supplybox_delaytime = register_cvar("zp_supplybox_icon_delay_time", "0.03")    
    cvar_supplybox_icon_size = register_cvar("zp_supplybox_icon_size", "2")
    cvar_supplybox_icon_light = register_cvar("zp_supplybox_icon_light", "100")
    
    set_task(2.0, "update_radar", _, _, _, "b")
}

public plugin_precache()
{
    supplybox_item = ArrayCreate(64, 1)
    
    load_supplybox_spawn()
    load_supplybox_item()
    
    static i
    for(i = 0; i < sizeof(supplybox_model); i++)
        engfunc(EngFunc_PrecacheModel, supplybox_model[i])
    for(i = 0; i < sizeof(supplybox_drop_sound); i++)
        engfunc(EngFunc_PrecacheSound, supplybox_drop_sound[i])        
    for(i = 0; i < sizeof(supplybox_pickup_sound); i++)
        engfunc(EngFunc_PrecacheSound, supplybox_pickup_sound[i])
        
    g_supplybox_icon_id = engfunc(EngFunc_PrecacheModel, supplybox_icon_spr)
    precache_sound("perm3.wav")
}

public plugin_cfg()
{
    set_task(0.5, "event_newround")
}

public load_supplybox_spawn()
{
    // Check for spawns points of the current map
    new cfgdir[32], mapname[32], filepath[100], linedata[64]
    get_configsdir(cfgdir, charsmax(cfgdir))
    get_mapname(mapname, charsmax(mapname))
    formatex(filepath, charsmax(filepath), supplybox_spawn_file, cfgdir, mapname)
    
    // Load spawns points
    if (file_exists(filepath))
    {
        new file = fopen(filepath,"rt"), row[4][6]
        
        while (file && !feof(file))
        {
            fgets(file, linedata, charsmax(linedata))
            
            // invalid spawn
            if(!linedata[0] || str_count(linedata,' ') < 2) continue;
            
            // get spawn point data
            parse(linedata,row[0],5,row[1],5,row[2],5)
            
            // origin
            g_supplybox_spawn[g_total_supplybox_spawn][0] = floatstr(row[0])
            g_supplybox_spawn[g_total_supplybox_spawn][1] = floatstr(row[1])
            g_supplybox_spawn[g_total_supplybox_spawn][2] = floatstr(row[2])

            g_total_supplybox_spawn++
            if (g_total_supplybox_spawn >= MAX_SUPPLYBOX_ENT) 
                break
        }
        if (file) fclose(file)
    }
}

public load_supplybox_item() 
{
    new filepath[64]
    get_configsdir(filepath, charsmax(filepath))
    format(filepath, charsmax(filepath), supplybox_item_file, filepath)
    
    if (!file_exists(filepath))    
    {
        new error_msg[100]
        formatex(error_msg, charsmax(error_msg), "[ZP-SupplyBox][Error] Item File Not Found")
        set_fail_state(error_msg)
        return
    }
    
    new line[1024], key[64], value[960]
    new file = fopen(filepath, "rt")
    
    while (!feof(file) && file)
    {
        fgets(file, line, charsmax(line));
        replace(line, charsmax(line), "^n", "")
        
        if (!line[0] || line[0] == ';')
            continue
        
        strtok(line, key, charsmax(key), value, charsmax(value), '=')
        trim(key)
        trim(value)
        
        if (equali(key, "SUPPLYBOX_ITEM")) 
        {
            while (value[0] != 0 && strtok(value, key, charsmax(key), value, charsmax(value), ',')) 
            {
                trim(key)
                trim(value)
                ArrayPushString(supplybox_item, key)
            }
        }
    }
}

public update_radar()
{    
    for (new id = 1; id <= get_maxplayers(); id++)
    {
        if (!is_user_alive(id) || !supplybox_count || zp_get_user_zombie(id)) 
            continue
        
        static i, next_ent
        i = 1
        while(i <= supplybox_count)
        {
            next_ent = supplybox_ent[i]
            if (next_ent && is_valid_ent(next_ent))
            {
                static Float:origin[3]
                pev(next_ent, pev_origin, origin)
                
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("HostagePos"), {0,0,0}, id)
                write_byte(id)
                write_byte(i)        
                write_coord(floatround(origin[0]))
                write_coord(floatround(origin[1]))
                write_coord(floatround(origin[2]))
                message_end()
            
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("HostageK"), {0,0,0}, id)
                write_byte(i)
                message_end()
            }

            i++
        }
    }
}

public event_newround()
{
    made_supplybox = false
    g_newround = 1
    g_endround = 0
    
    remove_supplybox()
    supplybox_count = 0
    
    if(task_exists(TASK_SUPPLYBOX)) remove_task(TASK_SUPPLYBOX)
    if(task_exists(TASK_SUPPLYBOX2)) remove_task(TASK_SUPPLYBOX2)
    if(task_exists(TASK_SUPPLYBOX_HELP)) remove_task(TASK_SUPPLYBOX_HELP)
}

public logevent_round_end() g_endround = 1

public zp_user_infected_post()
{
    if(!made_supplybox)
    {
        g_newround = 0
        made_supplybox = true
        
        if(task_exists(TASK_SUPPLYBOX)) remove_task(TASK_SUPPLYBOX)
        
        if(!g_total_supplybox_spawn)
        {
            client_print(0, print_console, "[ZP - SupplyBox][Error] Spawn Point Not Found. Please Create Spawn Point")
        } else {
            set_task(get_pcvar_float(cvar_supplybox_time), "create_supplybox", TASK_SUPPLYBOX)
        }
    }
}

public client_PostThink(id)
{
    if (!get_pcvar_num(cvar_supplybox_icon) || !is_user_alive(id) || zp_get_user_zombie(id))
        return
    if((g_icon_delay[id] + get_pcvar_float(cvar_supplybox_delaytime)) > get_gametime())
        return
        
    g_icon_delay[id] = get_gametime()

    if (supplybox_count)
    {
        static i, box_ent
        i = 1
        
        while (i <= supplybox_count)
        {
            box_ent = supplybox_ent[i]
            create_icon_origin(id, box_ent, g_supplybox_icon_id)
            i++
        }
    }
}

public create_supplybox()
{
    if (supplybox_count >= get_pcvar_num(cvar_supplybox_max) || g_newround || g_endround) 
        return

    if (task_exists(TASK_SUPPLYBOX)) remove_task(TASK_SUPPLYBOX)
    set_task(get_pcvar_float(cvar_supplybox_time), "create_supplybox", TASK_SUPPLYBOX)
    
    if (get_total_supplybox() >= get_pcvar_num(cvar_supplybox_totalintime)) 
        return
    
    g_supplybox_num = 0
    create_supplybox2()
    
    static random_sound
    random_sound = random_num(0, charsmax(supplybox_drop_sound))
    client_cmd(0, "spk ^"%s^"", supplybox_drop_sound[random_sound])
    
    for(new i = 0; i < get_maxplayers(); i++)
    {
        if(is_user_alive(i) && is_user_connected(i) && !zp_get_user_zombie(i))
            client_print(i, print_chat, "Supplybox has appeared. Find it")
    }
    
    if (task_exists(TASK_SUPPLYBOX_HELP)) remove_task(TASK_SUPPLYBOX_HELP)
    set_task(3.0, "show_supplybox_help", TASK_SUPPLYBOX_HELP)

    if (task_exists(TASK_SUPPLYBOX2)) remove_task(TASK_SUPPLYBOX2)
    set_task(0.5, "create_supplybox2", TASK_SUPPLYBOX2, _, _, "b")    
}

public create_supplybox2()
{
    if (supplybox_count >= get_pcvar_num(cvar_supplybox_max)
    || get_total_supplybox() >= get_pcvar_num(cvar_supplybox_totalintime) || g_newround || g_endround)
    {
        remove_task(TASK_SUPPLYBOX2)
        return
    }
    
    supplybox_count++
    g_supplybox_num++

    static item
    item = random(ArraySize(supplybox_item))

    new ent = create_entity("info_target")
    
    entity_set_string(ent, EV_SZ_classname, SUPPLYBOX_CLASSNAME)
    entity_set_model(ent, supplybox_model[random_num(0, charsmax(supplybox_model))])    
    entity_set_size(ent,Float:{-2.0,-2.0,-2.0},Float:{5.0,5.0,5.0})
    entity_set_int(ent,EV_INT_solid,1)
    entity_set_int(ent,EV_INT_movetype,6)
    entity_set_int(ent, EV_INT_iuser1, item)
    entity_set_int(ent, EV_INT_iuser2, supplybox_count)
    
    static Float:Origin[3]
    collect_spawn_point(Origin)
    engfunc(EngFunc_SetOrigin, ent, Origin)
    
    supplybox_ent[supplybox_count] = ent

    if ((g_supplybox_num >= get_pcvar_num(cvar_supplybox_num)) && task_exists(TASK_SUPPLYBOX2)) 
        remove_task(TASK_SUPPLYBOX2)
}

public get_total_supplybox()
{
    new total
    for (new i = 1; i <= supplybox_count; i++)
    {
        if (supplybox_ent[i]) total += 1
    }
    return total
}

public show_supplybox_help()
{
    for(new i = 0; i < get_maxplayers(); i++)
    {
        if(is_user_alive(i) && is_user_connected(i) && !zp_get_user_zombie(i))
            client_print(i, print_chat, "You can see Supplybox Location in the Radar")
    }
}

public remove_supplybox()
{
    remove_ent_by_class(SUPPLYBOX_CLASSNAME)
    new supplybox_ent_reset[MAX_SUPPLYBOX_ENT]
    supplybox_ent = supplybox_ent_reset
}

public fw_supplybox_touch(ent, id)
{
    if (!pev_valid(ent) || !is_user_alive(id) || zp_get_user_zombie(id)
    || zp_get_user_survivor(id) || zp_get_user_nemesis(id) || g_supplybox_wait[id]) 
        return FMRES_IGNORED
    
    static classname[32]
    entity_get_string(ent,EV_SZ_classname,classname,31)
    
    if (equal(classname, SUPPLYBOX_CLASSNAME))
    {
        static item_id, item[64]
        item_id = entity_get_int(ent, EV_INT_iuser1)
        ArrayGetString(supplybox_item, item_id, item, charsmax(item))
        
        zp_force_buy_extra_item(id, zp_get_extra_item_id(item), 1)
            
        static name[32]
        get_user_name(id, name, sizeof(name))
        
        
        if(equal(item, "Magazine Sets") && !codebox1(id) && jumlah_cyclone() <= 4)
        {
            client_printc(0, "!t[Attention]*****Selamat. %s telah memenangkan sebuah 'Cyclone' [Permanent]", name)
            client_printc(0, "!tsebuah item High Class dari codebox.******")
        }
        
        else if(equal(item, "Free Costume")&& !codebox2(id) && jumlah_cannon() <= 1)
        {
            client_printc(0, "!t[Attention]*****Selamat. %s telah memenangkan sebuah 'Black Dragon Cannon' [Permanent]", name)
            client_printc(0, "!tsebuah item High Class dari codebox.******")
        }
        
        else if(equal(item, "Free C0stumes")&& !codebox3(id) && jumlah_rail() <= 2)
        {
            client_printc(0, "!t[Attention]*****Selamat. %s telah memenangkan sebuah 'Rail Cannon' [Permanent]", name)
            client_printc(0, "!tsebuah item High Class dari codebox.******")
        }
        
        else
        {
            client_print(0, print_center, "%s telah mendapatkan %s dari SupplyBox !!!", name, item)
            client_cmd( id, "spk sound/perm3.wav")
        }
                
        static random_sound
        random_sound = random_num(0, charsmax(supplybox_pickup_sound))
        emit_sound(id, CHAN_VOICE, supplybox_pickup_sound[random_sound], 1.0, ATTN_NORM, 0, PITCH_NORM)

        new num_box = entity_get_int(ent, EV_INT_iuser2)
        supplybox_ent[num_box] = 0
        remove_entity(ent)

        g_supplybox_wait[id] = 1
        if (task_exists(id+TASK_SUPPLYBOX_WAIT)) remove_task(id+TASK_SUPPLYBOX_WAIT)
        set_task(2.0, "remove_supplybox_wait", id+TASK_SUPPLYBOX_WAIT)
    }
    
    return FMRES_IGNORED
}

public remove_supplybox_wait(id)
{
    id -= TASK_SUPPLYBOX_WAIT
    
    g_supplybox_wait[id] = 0
    if (task_exists(id+TASK_SUPPLYBOX_WAIT)) remove_task(id+TASK_SUPPLYBOX_WAIT)
}

stock collect_spawn_point(Float:origin[3]) // By Sontung0
{
    for (new i = 1; i <= g_total_supplybox_spawn *3 ; i++)
    {
        origin = g_supplybox_spawn[random(g_total_supplybox_spawn)]
        if (check_spawn_box(origin)) return 1;
    }

    return 0;
}
stock check_spawn_box(Float:origin[3]) // By Sontung0
{
    new Float:originE[3], Float:origin1[3], Float:origin2[3]
    new ent = -1
    while ((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", SUPPLYBOX_CLASSNAME)) != 0)
    {
        pev(ent, pev_origin, originE)
        
        // xoy
        origin1 = origin
        origin2 = originE
        origin1[2] = origin2[2] = 0.0
        if (vector_distance(origin1, origin2) <= 32.0) return 0;
    }
    return 1;
}

stock create_icon_origin(id, ent, sprite) // By sontung0
{
    if (!pev_valid(ent)) return;
    
    new Float:fMyOrigin[3]
    entity_get_vector(id, EV_VEC_origin, fMyOrigin)
    
    new target = ent
    new Float:fTargetOrigin[3]
    entity_get_vector(target, EV_VEC_origin, fTargetOrigin)
    fTargetOrigin[2] += 40.0
    
    if (!is_in_viewcone(id, fTargetOrigin)) return;

    new Float:fMiddle[3], Float:fHitPoint[3]
    xs_vec_sub(fTargetOrigin, fMyOrigin, fMiddle)
    trace_line(-1, fMyOrigin, fTargetOrigin, fHitPoint)
                            
    new Float:fWallOffset[3], Float:fDistanceToWall
    fDistanceToWall = vector_distance(fMyOrigin, fHitPoint) - 10.0
    normalize(fMiddle, fWallOffset, fDistanceToWall)
    
    new Float:fSpriteOffset[3]
    xs_vec_add(fWallOffset, fMyOrigin, fSpriteOffset)
    new Float:fScale
    fScale = 0.01 * fDistanceToWall
    
    new scale = floatround(fScale)
    scale = max(scale, 1)
    scale = min(scale, get_pcvar_num(cvar_supplybox_icon_size))
    scale = max(scale, 1)

    te_sprite(id, fSpriteOffset, sprite, scale, get_pcvar_num(cvar_supplybox_icon_light))
}

stock te_sprite(id, Float:origin[3], sprite, scale, brightness) // By sontung0
{    
    message_begin(MSG_ONE, SVC_TEMPENTITY, _, id)
    write_byte(TE_SPRITE)
    write_coord(floatround(origin[0]))
    write_coord(floatround(origin[1]))
    write_coord(floatround(origin[2]))
    write_short(sprite)
    write_byte(scale) 
    write_byte(brightness)
    message_end()
}

stock normalize(Float:fIn[3], Float:fOut[3], Float:fMul) // By sontung0
{
    new Float:fLen = xs_vec_len(fIn)
    xs_vec_copy(fIn, fOut)
    
    fOut[0] /= fLen, fOut[1] /= fLen, fOut[2] /= fLen
    fOut[0] *= fMul, fOut[1] *= fMul, fOut[2] *= fMul
}

stock str_count(const str[], searchchar) // By Twilight Suzuka
{
    new count, i, len = strlen(str)
    
    for (i = 0; i <= len; i++)
    {
        if(str[i] == searchchar)
            count++
    }
    
    return count;
}

stock remove_ent_by_class(classname[])
{
    new nextitem  = find_ent_by_class(-1, classname)
    while(nextitem)
    {
        remove_entity(nextitem)
        nextitem = find_ent_by_class(-1, classname)
    }
}

stock client_printc(index, const text[], any:...)
{
    new szMsg[128];
    vformat(szMsg, sizeof(szMsg) - 1, text, 3);

    replace_all(szMsg, sizeof(szMsg) - 1, "!g", "^x04");
    replace_all(szMsg, sizeof(szMsg) - 1, "!n", "^x01");
    replace_all(szMsg, sizeof(szMsg) - 1, "!t", "^x03");

    if(index == 0)
    {
        for(new i = 0; i < get_maxplayers(); i++)
        {
            if(!is_user_connected(i))
                continue
            
            message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, i)
            write_byte(i)
            write_string(szMsg)
            message_end()
        }        
    } else {
        message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, index);
        write_byte(index);
        write_string(szMsg);
        message_end();
    }
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1066\\ f0\\ fs16 \n\\ par }
*/

 
Hata verdi.

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

uzman59
Mesajlar: 624
Kayıt: Çrş Nis 06, 2016 7:40 pm
Konum: Tekirdağ İlçesi
Server Ip/DNS: cs11.csduragi.net
Clan İsmi: HospitaL 卍 KLan

ZP Refleks & SupplyBox Hataları

Mesaj gönderen uzman59 »

@TheAsTeRiX

Ne hata verdiyse buraya yaz yada ekran görüntüsünü yükle..

log dosyasına yazıyorsa hataları buraya paylaşın..

sys.error log dosyasına da bakınız hata var ise paylaşınız..

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
TheAsTeRiX
Mesajlar: 718
Kayıt: Cmt Oca 14, 2017 5:30 pm
Konum: Makedonya
Clan İsmi: Skull Gaming

ZP Refleks & SupplyBox Hataları

Mesaj gönderen TheAsTeRiX »

(21) : fatal error 100: cannot read from file: "refol"
//
// Compilation aborted.
// 1 Error.
// Could not locate output file compiled\zp_addon_supplybox_v1.1.amx (compile failed).

Link:
Linklerini gizle
Linki Kopyala
Cevapla