Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Информационная доска

Данный раздел предназначен для обсуждения, а также решения технических проблем связанных с серверной частью. Обсуждения касательно игровых клиентов ведутся здесь.

1. Во время создания новой темы аккуратно оформляйте её, не допускайте грамматических ошибок.
2. Описывая проблему старайтесь, как можно больше рассказать о ней, а так же о действиях с сервером после которых она возникла, по возможности подкрепите информацию логами.
3. Если вопрос касается проблемы в работе сервера, то обязательно прикрепляйте список плагинов (введите в консоли сервера: meta list и amxx plugins), настройки server.cfg, логи. Так же указывайте операционную систему, версию HLDS (введите к консоли сервера: version) и где хостится сервер.

Длинную информацию скрывайте под спойлер.

Добавить спрайт.

Статус пользователя kidnick98
сообщение 29.9.2011, 22:08
Сообщение #1


Стаж: 14 лет

Сообщений: 239
Благодарностей: 12
Полезность: < 0

Помогите добавить спрайт в этот плагин(Спрйт внизу)...Очень нужно пожалуйста!

Код
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <engine>
#include <fun>
#include <zombieplague>

#define ADMIN_PRESENT_SPAWN ADMIN_RCON // access level for zp_ps_spawn command
#define ADMIN_PRESENT_REMOVE ADMIN_RCON // access level for zp_ps_remove command
#define ADMIN_PRESENT_STOP ADMIN_RCON // access level for zp_ps_stop command
#define ADMIN_PRESENT_START ADMIN_RCON // access level for zp_ps_start command

#define PRESENT_LIMIT 40 // maximum amount of presents

new const present_model[] = "models/zombie_plague/presents.mdl" // present model

enum Color {
    NORMAL = 1,
    GREEN,
    TEAM_COLOR,
    GREY,
    RED,
    BLUE,
}

new TeamName[][] = {
    "",
    "TERRORIST",
    "CT",
    "SPECTATOR"
}

new file[78],total_presents, Float:present_data[PRESENT_LIMIT + 1][3],
present_glow,present_light,present_light_radius,present_rot,
spawn_time,min_presents,max_presents,
value_ap,value_armor,value_hp_h,value_hp_z
public plugin_precache()
{
    precache_model(present_model)
    precache_sound("zombie_plague/present_spawn.wav")
    precache_sound("zombie_plague/get_present.wav")
}

public plugin_init() {
    register_plugin("[ZP] Addon: Present Spawner", "1.1", "Bill=Thailand=[UP] , <VeCo>")
    register_cvar("zp_addon_present_spawner_version","1.1",FCVAR_SERVER | FCVAR_SPONLY)
    
    register_logevent("round_end",2,"1=Round_End")
    register_logevent("round_start",2,"1=Round_Start")
    
    present_glow = register_cvar("zp_ps_present_glow","1")
    present_light = register_cvar("zp_ps_present_light","1")
    present_light_radius = register_cvar("zp_ps_present_light_radius","8")
    present_rot = register_cvar("zp_ps_present_rotate","1")
    
    spawn_time = register_cvar("zp_ps_spawn_presents_time","30.0")
    min_presents = register_cvar("zp_ps_min_spawn_presents","5")
    max_presents = register_cvar("zp_ps_max_spawn_presents","5")
    
    value_ap = register_cvar("zp_ps_present_ammo_pack_value","1")
    value_armor = register_cvar("zp_ps_present_armour_value","10")
    value_hp_h = register_cvar("zp_ps_present_human_health_value","20")
    value_hp_z = register_cvar("zp_ps_present_zombie_health_value","100")
    
    register_concmd("zp_ps_spawn","admin_present_spawn",ADMIN_PRESENT_SPAWN)
    register_concmd("zp_ps_remove","admin_present_remove",ADMIN_PRESENT_REMOVE)
    register_concmd("zp_ps_stop","admin_present_stop",ADMIN_PRESENT_STOP)
    register_concmd("zp_ps_start","admin_present_start",ADMIN_PRESENT_START)
    
    register_touch("info_present","player","present_touch")
    register_think("info_present","present_think")
    
    new mapname[32]
    get_mapname(mapname,31)
    format(file,77,"addons/amxmodx/configs/presents/%s.ini",mapname)
    
    load_presents()
}

public admin_present_spawn(id,level,cid)
{
    if(!cmd_access(id,level,cid,1)) return PLUGIN_HANDLED
    
    if(total_presents == PRESENT_LIMIT)
    {
        console_print(id,"[ZP] Present limit exceeded! Maximum amount of presents is %i.",PRESENT_LIMIT)
        return PLUGIN_HANDLED
    }
    
    new Float:origin[3]
    entity_get_vector(id,EV_VEC_origin,origin)
    
    origin[2] -= 30.0
    
    save_present(id,origin)
    
    return PLUGIN_HANDLED
}

public admin_present_remove(id,level,cid)
{
    if(!cmd_access(id,level,cid,1)) return PLUGIN_HANDLED
    
    remove_all_presents()
    console_print(id,"[ZP] All presents were removed for this round.")
    
    return PLUGIN_HANDLED
}

public admin_present_stop(id,level,cid)
{
    if(!cmd_access(id,level,cid,1)) return PLUGIN_HANDLED
    
    remove_all_presents()
    total_presents = 0
    console_print(id,"[ZP] All presents were removed for this map.")
    
    return PLUGIN_HANDLED
}

public admin_present_start(id,level,cid)
{
    if(!cmd_access(id,level,cid,1) || total_presents > 0) return PLUGIN_HANDLED
    
    remove_all_presents()
    load_presents()
    console_print(id,"[ZP] All presents were loaded for this map.")
    
    return PLUGIN_HANDLED
}

public round_end()
{
    if(!total_presents) return
    remove_all_presents()
}

public round_start()
{
    if(!total_presents) return
    remove_task(1337)
    set_task(get_pcvar_float(spawn_time),"spawn_random_presents",1337)
}

public spawn_random_presents()
{
    new num = random_num(get_pcvar_num(min_presents),get_pcvar_num(max_presents))
    if(num != 0) for(new ii=0;ii<num;ii++) spawn_present(present_data[random(total_presents)])
}

public present_touch(ent,id)
{
    if(zp_get_user_nemesis(id) || zp_get_user_survivor(id)) return
    give_random_present(ent,id)
}

public give_random_present(ent,id)
{
    new num = random_num(1,19)
    switch(num)
    {
        case 1:
        {
            ColorChat(id,GREEN,"[ZP]^x01 You get^x04 %i^x01 ammo packs!",get_pcvar_num(value_ap))
            zp_set_user_ammo_packs(id,zp_get_user_ammo_packs(id) + get_pcvar_num(value_ap))
        }
        case 2:
        {
            if(zp_get_user_zombie(id))
            {
                give_random_present(ent,id)
            } else {
                ColorChat(id,GREEN,"[ZP]^x01 You get^x04 %i^x01 armor!",get_pcvar_num(value_armor))
                cs_set_user_armor(id,get_pcvar_num(value_armor),CS_ARMOR_KEVLAR)
            }
        }
        case 3:
        {
            if(zp_get_user_zombie(id))
            {
                give_random_present(ent,id)
            } else {
                ColorChat(id,GREEN,"[ZP]^x01 You get a nightvision!")
                zp_set_user_nightvision(id,1)
            }
        }
        case 4:
        {
            if(zp_get_user_zombie(id))
            {
                give_random_present(ent,id)
            } else {
                ColorChat(id,GREEN,"[ZP]^x01 You get a hegrenade!")  
                give_item(id,"weapon_hegrenade")
        }
        }
        case 5:
        {
            if(zp_get_user_zombie(id))
            {
                give_random_present(ent,id)
            } else {
                ColorChat(id,GREEN,"[ZP]^x01 You get a flashbang!")
                give_item(id,"weapon_flashbang")
            }
        }
        case 6:
        {
            if(zp_get_user_zombie(id))
            {
                give_random_present(ent,id)
            } else {
                ColorChat(id,GREEN,"[ZP]^x01 You get a smokegrenade!")
                give_item(id,"weapon_smokegrenade")
            }
        }
        case 7:
        {
            if(zp_get_user_zombie(id))
            {
                give_random_present(ent,id)
            } else {
                ColorChat(id,GREEN,"[ZP]^x01 You get a smokegrenade!")
        give_item(id, "item_longjump")
            }
        }
        case 8:
        {
            if(zp_get_user_zombie(id))
            {
                ColorChat(id,GREEN,"[ZP]^x01 You get^x04 %i^x01 health!",get_pcvar_num(value_hp_z))
                set_user_health(id,get_user_health(id) + get_pcvar_num(value_hp_z))
            } else {
                ColorChat(id,GREEN,"[ZP]^x01 You get^x04 %i^x01 health!",get_pcvar_num(value_hp_h))
                set_user_health(id,get_user_health(id) + get_pcvar_num(value_hp_h))
            }
        }
        case 9:
        {
            if(zp_get_user_zombie(id))
            {
                give_random_present(ent,id)
            } else {
                ColorChat(id,GREEN,"[ZP]^x01 You get a weapon -^x04 m249^x01!")
                give_item(id,"weapon_m249")
                cs_set_user_bpammo(id,CSW_M249,100)
            }
        }
        case 10:
        {
            if(zp_get_user_zombie(id))
            {
                give_random_present(ent,id)
            } else {
                ColorChat(id,GREEN,"[ZP]^x01 You get a weapon -^x04 sg550^x01!")
                give_item(id,"weapon_sg550")
                cs_set_user_bpammo(id,CSW_SG550,30)
            }
        }
        case 11:
        {
            if(zp_get_user_zombie(id))
            {
                give_random_present(ent,id)
            } else {
                ColorChat(id,GREEN,"[ZP]^x01 You get a weapon -^x04 g3sg1^x01!")
                give_item(id,"weapon_g3sg1")
                cs_set_user_bpammo(id,CSW_G3SG1,20)
            }
        }
        case 12:
        {
            if(zp_get_user_zombie(id))
            {
                give_random_present(ent,id)
            } else {
                ColorChat(id,GREEN,"[ZP]^x01 You get a weapon -^x04 mp5^x01!")
                give_item(id,"weapon_mp5navy")
                cs_set_user_bpammo(id,CSW_MP5NAVY,80)
            }
        }
        case 13:
        {
            if(zp_get_user_zombie(id))
            {
                give_random_present(ent,id)
            } else {
                ColorChat(id,GREEN,"[ZP]^x01 You get a weapon -^x04 m3^x01!")
                give_item(id,"weapon_m3")
                cs_set_user_bpammo(id,CSW_M3,10)
            }
        }
        case 14:
        {
            if(zp_get_user_zombie(id))
            {
                give_random_present(ent,id)
            } else {
                ColorChat(id,GREEN,"[ZP]^x01 You get a weapon -^x04 elite^x01!")
                give_item(id,"weapon_elite")
                cs_set_user_bpammo(id,CSW_ELITE,80)
            }
        }
        case 15:
        {
            if(zp_get_user_zombie(id))
            {
                give_random_present(ent,id)
            } else {
                ColorChat(id,GREEN,"[ZP]^x01 You get a weapon -^x04 deagle^x01!")
                give_item(id,"weapon_deagle")
                cs_set_user_bpammo(id,CSW_DEAGLE,21)
            }
        }
        case 16:
        {
            if(zp_get_user_zombie(id))
            {
                give_random_present(ent,id)
            } else {
                ColorChat(id,GREEN,"[ZP]^x01 You get a weapon -^x04 xm1014^x01!")
                give_item(id,"weapon_xm1014")
                cs_set_user_bpammo(id,CSW_XM1014,14)
            }
        }
        case 17:
        {
            if(zp_get_user_zombie(id))
            {
                give_random_present(ent,id)
            } else {
                ColorChat(id,GREEN,"[ZP]^x01 You get a weapon -^x04 mac10^x01!")
                give_item(id,"weapon_mac10")
                cs_set_user_bpammo(id,CSW_MAC10,21)
            }
        }
        case 18:
        {
            if(zp_get_user_zombie(id))
            {
                give_random_present(ent,id)
            } else {
                ColorChat(id,GREEN,"[ZP]^x01 You get a weapon -^x04 tmp^x01!")
                give_item(id,"weapon_tmp")
                cs_set_user_bpammo(id,CSW_TMP,80)
            }
        }
        case 19:
        {
            if(zp_get_user_zombie(id))
            {
                give_random_present(ent,id)
            } else {
                ColorChat(id,GREEN,"[ZP]^x01 You get a weapon -^x04 p228^x01!")
                give_item(id,"weapon_p228")
                cs_set_user_bpammo(id,CSW_P228,30)
            }
        }
    }
    
    emit_sound(ent,CHAN_AUTO,"zombie_plague/get_present.wav",VOL_NORM,ATTN_NORM,0,PITCH_NORM)
    remove_entity(ent)
}

public present_think(ent)
{
    if(get_pcvar_num(present_light))
    {
        static Float:origin[3]
        entity_get_vector(ent,EV_VEC_origin,origin)
        
        engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
        write_byte(TE_DLIGHT)
        engfunc(EngFunc_WriteCoord, origin[0])
        engfunc(EngFunc_WriteCoord, origin[1])
        engfunc(EngFunc_WriteCoord, origin[2])
        write_byte(get_pcvar_num(present_light_radius))
        write_byte(entity_get_int(ent,EV_INT_iuser1))
        write_byte(entity_get_int(ent,EV_INT_iuser2))
        write_byte(entity_get_int(ent,EV_INT_iuser3))
        write_byte(2)
        write_byte(0)
        message_end()
    }
    
    if(get_pcvar_num(present_rot))
    {
        static Float:angles[3]
        entity_get_vector(ent,EV_VEC_angles,angles)
        
        angles[1]--
        
        entity_set_vector(ent,EV_VEC_angles,angles)
    }
    
    entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.01)
}

public remove_all_presents() remove_entity_name("info_present")


public load_presents()
{
    total_presents = 0
    
    new buffer[128], x[12],y[12],z[12]
    if(file_exists(file))
    {
        new save = fopen(file,"rt")
        
        if(!save) return
        
        while(!feof(save))
        {
            fgets(save,buffer,127)
            
            if(buffer[0] == ';' || !buffer[0]) continue
            
            parse(buffer, x,11, y,11, z,11)
            
            present_data[total_presents][0] = str_to_float(x)
            present_data[total_presents][1] = str_to_float(y)
            present_data[total_presents][2] = str_to_float(z)
            
            total_presents++
        }
        
        fclose(save)
    }    
}

public spawn_present(Float:origin[3])
{
    new ent = create_entity("info_target")
    if(ent)
    {
        entity_set_string(ent,EV_SZ_classname,"info_present")
        entity_set_model(ent,present_model)
        
        entity_set_int(ent,EV_INT_solid,SOLID_TRIGGER)
        entity_set_int(ent,EV_INT_movetype,MOVETYPE_TOSS)
        
        entity_set_float(ent,EV_FL_gravity,1.0)
        
        if(get_pcvar_num(present_glow))
        {
            entity_set_int(ent,EV_INT_iuser1,random(255))
            entity_set_int(ent,EV_INT_iuser2,random(255))
            entity_set_int(ent,EV_INT_iuser3,random(255))
            
            set_rendering(ent,kRenderFxGlowShell,entity_get_int(ent,EV_INT_iuser1),entity_get_int(ent,EV_INT_iuser2),entity_get_int(ent,EV_INT_iuser3),kRenderNormal,60)
        }
        
        entity_set_origin(ent,origin)
        
        entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.01)
        
        emit_sound(ent,CHAN_AUTO,"zombie_plague/present_spawn.wav",VOL_NORM,ATTN_NORM,0,PITCH_NORM)
    }
}

public save_present(id,Float:origin[3])
{
    new save = fopen(file,"at")
    if(save)
    {
        fprintf(save,"%.2f %.2f %.2f^n",origin[0],origin[1],origin[2])
        fclose(save)
        
        console_print(id,"[ZP] Present Spawn: successfully added at x:y:z(%.2f : %.2f : %.2f).",origin[0],origin[1],origin[2])
        load_presents()
    }
}

ColorChat(id, Color:type, const msg[], {Float, Sql, Result,_}:...) {
    new message[256]

    switch(type) {
        case NORMAL: message[0] = 0x01
        case GREEN: message[0] = 0x04
        default: message[0] = 0x03
    }

    vformat(message[1], 251, msg, 4)

    message[192] = '^0'

    new team, ColorChange, index, MSG_Type

    if(id) {
        MSG_Type = MSG_ONE
        index = id
    } else {
        index = FindPlayer()
        MSG_Type = MSG_ALL
    }

    team = get_user_team(index)
    ColorChange = ColorSelection(index, MSG_Type, type)

    ShowColorMessage(index, MSG_Type, message)

    if(ColorChange)
        Team_Info(index, MSG_Type, TeamName[team])
}

ShowColorMessage(id, type, message[]) {
    static bool:saytext_used
    static get_user_msgid_saytext

    if(!saytext_used) {
        get_user_msgid_saytext = get_user_msgid("SayText")
        saytext_used = true
    }

    message_begin(type, get_user_msgid_saytext, _, id)
    write_byte(id)
    write_string(message)
    message_end()
}

Team_Info(id, type, team[]) {
    static bool:teaminfo_used
    static get_user_msgid_teaminfo

    if(!teaminfo_used) {
        get_user_msgid_teaminfo = get_user_msgid("TeamInfo")
        teaminfo_used = true
    }

    message_begin(type, get_user_msgid_teaminfo, _, id)
    write_byte(id)
    write_string(team)
    message_end()

    return 1
}

ColorSelection(index, type, Color:Type) {
    switch(Type) {
        case RED: return Team_Info(index, type, TeamName[1])
        case BLUE: return Team_Info(index, type, TeamName[2])
        case GREY: return Team_Info(index, type, TeamName[0])
    }

    return 0
}

FindPlayer() {
    new i = -1

    while(i <= get_maxplayers()) {
        if(is_user_connected(++i))
            return i
    }

    return -1
}

Прикрепленные файлы:
Прикрепленный файл  gift.rar ( 876 байт ) Кол-во скачиваний: 4
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: