Konu

#1
ARkadaşlar bbmod için dağılan bomba ve banka sistemi atarmısnız. Teşşekürler şimdiden
#2
(25-11-2020, 22:59)kartalemre Adlı Kullanıcıdan Alıntı: ARkadaşlar bbmod için dağılan bomba ve banka sistemi atarmısnız. Teşşekürler şimdiden

Dağılan bomba:


Kod:
#include < amxmodx >
#include < engine >
#include < fakemeta >
#include < hamsandwich >

#define NAME            "[ZL] ClusterGrenade"
#define VERSION            "Public [1.0]"
#define AUTHOR            "Alexander.3"

#define TRAIL            // Включить поддержку хвостика от осколок
#define SHOCKWAVE        // Включить поддержку обруча от осколок
#define SCREENFADE        // Включить поддержку затемнения экрана
#define SCREENSHACKE        // Включить поддержку тряски экрана
#define RANDOM            // Включить поддержку разных цветов ( цвета будут в рандомном порядке )

const cluster_num =        10    // Кол-во осколок
const Float:cluster_radius =     200.0    // Радиус разлета осколок
const Float:cluster_dradius =    240.0    // Радиус урона осколок
const Float:cluster_damage =    100.0    // Урон наносимый от осколок

new const cluster_models[] =    "models/w_hegrenade.mdl"    // Модель осколок
new const cluster_sprite[] =    "sprites/dexplo.spr"        // Спрайт взрыва осколок

// Настройка следа от гранаты
#if defined TRAIL
new g_Trail
new const cluster_trail[] =    "sprites/laserbeam.spr"        // Спрайт полосоки от осколок
new cluster_trail_red =        255    // Красный
new cluster_trail_green =    0    // Зеленый
new cluster_trail_blue =    50    // Синий
#endif

// Настройка обруча
#if defined SHOCKWAVE
new g_sw
new const cluster_sw[] =        "sprites/shockwave.spr"        // Спрайт-обруч от осколок
new cluster_sw_red =        255    // Красный
new cluster_sw_green =        0    // Зеленый
new cluster_sw_blue =        50    // Синий
#endif

// НАстройка затемнения экрана
#if defined SCREENFADE
new cluster_sf_red =        255    // Красный
new cluster_sf_green =        0    // Синий
new cluster_sf_blue =        50     // Зеленый
#endif

new g_Exlplosion

public plugin_init() {
    register_plugin(NAME, VERSION, AUTHOR)
    
    RegisterHam(Ham_Think, "grenade", "Hook_Grenade", 1)    // Регистрируем синк для гранат
    
    register_touch("cluster_bomb", "*", "Hook_Touch")    // Ловим прикосновение гранаты
}

public Hook_Grenade( Ent ) {
    if (!pev_valid( Ent ))    // Проверка на валидность
        return HAM_IGNORED
    
    static Float:dmgtime
    
    pev(Ent, pev_dmgtime, dmgtime)    // Получаем время взрыва гранаты
    
    if (dmgtime > get_gametime())    // Ловим момент взрыва гранаты
        return HAM_IGNORED
    
    new szModels[32]
    pev(Ent, pev_model, szModels, charsmax(szModels))    // Получаем модель
    
    if (!equal(szModels, "models/w_hegrenade.mdl"))        // Проверка на he_ гранату
        return HAM_IGNORED
    
    new Float:b_origin[3]
    pev(Ent, pev_origin, b_origin)    // Получаем координаты гранаты
    
    for (new i; i < cluster_num; i++) {
        #if defined RANDOM
        cluster_effect()
        #endif
        
        new bomb            
        bomb = create_entity("info_target")        // Создаем энтити
        engfunc(EngFunc_SetOrigin, bomb, b_origin)    // Устанавливаем координаты для созданной энтити
        engfunc(EngFunc_SetModel, bomb, cluster_models)    // Устанавливаем модельку
        set_pev(bomb, pev_solid, SOLID_TRIGGER)        // Солидность ставим на TRGGGER, что бы не взрывались раньше нужного времени
        set_pev(bomb, pev_classname, "cluster_bomb")    // Устанавливаем ClassName для проверки в Touch эвенте
        set_pev(bomb, pev_movetype, MOVETYPE_TOSS)    // Устанавливаем MOVETYPE_TOSS
        set_pev(bomb, pev_owner, pev(Ent, pev_owner))    // Устанавливаем индекс игрока для энтити
        
        // Работа с разбросом, будет рандомная в пределе лимита.
        new Float:velocity[3]
        velocity[0] = random_float(-(cluster_radius), cluster_radius)    
        velocity[1] = random_float(-(cluster_radius), cluster_radius)
        velocity[2] = cluster_radius + 185.0 // 185 - смещение
        
        set_pev(bomb, pev_velocity, velocity)    // Устанавливаем силу разлета осколок
        
        #if defined TRAIL
        message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
        write_byte(TE_BEAMFOLLOW)
        write_short(bomb)
        write_short(g_Trail)
        write_byte(13)
        write_byte(5)
        write_byte(cluster_trail_red)
        write_byte(cluster_trail_green)
        write_byte(cluster_trail_blue)
        write_byte(255)
        message_end()
        #endif
    }
    set_pev(Ent, pev_flags, FL_KILLME)    // Удаляем стандартную бомбу
    return HAM_HANDLED
}

public Hook_Touch(grenade, went) {
    if (!pev_valid( grenade ))    // Проверка на валидность
        return
    
    new szWEnt[32]
    pev(went, pev_classname, szWEnt, charsmax(szWEnt))    // Получаем ClassName нашего осколка
    
    if (equal(szWEnt, "cluster_bomb"))    // Проверка энтити на осколки
        return
    
    new Float:origin[3]    // Координаты осколок
    new victim = -1        // Игроки которые попадут в радиус
    
    pev(grenade, pev_origin, origin)    // Получаем координаты гранаты
    
    while((victim = engfunc(EngFunc_FindEntityInSphere, victim, origin, cluster_dradius))) {
        if (!is_user_alive( victim ))    // Проверка на валидность
            continue
            
        if (get_user_team(victim) == get_user_team(pev(grenade, pev_owner)))    // Проверка на команду, что бы не наносило урон членам по команде
            continue
    
        ExecuteHamB(Ham_TakeDamage, victim, 0, grenade, cluster_damage, (1<<24))    // Наносим урон игрокам которые попали в радиус действия взрыва
        
        // Болевая иконка
        message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("Damage"), {0,0,0}, victim)
        write_byte(0)
        write_byte(100)
        write_long(1<<1)
        engfunc(EngFunc_WriteCoord, origin[0])
        engfunc(EngFunc_WriteCoord, origin[1])
        engfunc(EngFunc_WriteCoord, origin[2])
        message_end()
        
        #if defined SCREENFADE
        ZL_ScreenFade(victim, 2, 1, cluster_sf_red, cluster_sf_green, cluster_sf_blue, 130, 1) // Окраска экрана
        #endif
        
        // Тряска экрана
        #if defined SCREENSHACKE        
        message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenShake"), {0,0,0}, victim)
        write_short(1<<14)
        write_short((1<<12) * 8)
        write_short((2<<12) * 7)
        message_end()
        #endif
    }
    
    // Волна от осколок
    #if defined SHOCKWAVE
    engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
    write_byte(TE_BEAMCYLINDER)
    engfunc(EngFunc_WriteCoord, origin[0])
    engfunc(EngFunc_WriteCoord, origin[1])
    engfunc(EngFunc_WriteCoord, origin[2])
    engfunc(EngFunc_WriteCoord, origin[0])
    engfunc(EngFunc_WriteCoord, origin[1])
    engfunc(EngFunc_WriteCoord, origin[2] + cluster_dradius)
    write_short(g_sw)
    write_byte(0)
    write_byte(0)
    write_byte(4)
    write_byte(20)
    write_byte(0)
    write_byte(cluster_sw_red)
    write_byte(cluster_sw_green)
    write_byte(cluster_sw_blue)
    write_byte(255)
    write_byte(0)
    message_end()
    #endif
    
    // Эмулируем взрыв
    engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
    write_byte(TE_EXPLOSION)
    engfunc(EngFunc_WriteCoord, origin[0])
    engfunc(EngFunc_WriteCoord, origin[1])
    engfunc(EngFunc_WriteCoord, origin[2] + 25.0)
    write_short(g_Exlplosion)
    write_byte(20)
    write_byte(10)
    write_byte(0)
    message_end()
    
    // Удаляем осколок
    engfunc(EngFunc_RemoveEntity, grenade)
}

// Загружаем ресурсы
public plugin_precache() {
    g_Exlplosion = precache_model(cluster_sprite)
    #if defined TRAIL
    g_Trail = precache_model(cluster_trail)
    #endif
    #if defined SHOCKWAVE
    g_sw = precache_model(cluster_sw)
    #endif
}

#if defined RANDOM
cluster_effect() {
    #if defined TRAIL
    cluster_trail_red = random(255)
    cluster_trail_green = random(255)
    cluster_trail_blue = random(255)
    #endif
    
    #if defined SHOCKWAVE
    cluster_sw_red = random(255)
    cluster_sw_green = random(255)
    cluster_sw_blue = random(255)
    #endif
    
    #if defined SCREENFADE
    cluster_sf_red = random(255)
    cluster_sf_green = random(255)
    cluster_sf_blue = random(255)
    #endif
}
#endif

stock ZL_ScreenFade(id, Timer, FadeTime, red, green, blue, Alpha, type) {
    if(id) if(!is_user_connected(id)) return

    if (Timer > 0xFFFF) Timer = 0xFFFF
    if (FadeTime <= 0) FadeTime = 4
    
    message_begin(id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, get_user_msgid("ScreenFade"), _, id);
    write_short(Timer * 1 << 12)
    write_short(FadeTime * 1 << 12)
    switch (type) {
        case 1: write_short(0x0000)        // IN ( FFADE_IN )
        case 2: write_short(0x0001)        // OUT ( FFADE_OUT )
        case 3: write_short(0x0002)        // MODULATE ( FFADE_MODULATE )
        case 4: write_short(0x0004)        // STAYOUT ( FFADE_STAYOUT )
        default: write_short(0x0001)
    }
    write_byte(red)
    write_byte(green)
    write_byte(blue)
    write_byte(Alpha)
    message_end()
}

.sma BombaEfekt.sma (Dosya Boyutu: 7,92 KB | İndirme Sayısı: 1)
#3
https://webailesi.com/konu-gelismis-banka-authid-12464
DISCORD: PawNod#6281 - Ücretli eklenti için ulaşabilirsiniz. : Eklentilerim - Discord Sunucum
#4
(25-11-2020, 23:11)PawNod\ Adlı Kullanıcıdan Alıntı: https://webailesi.com/konu-gelismis-banka-authid-12464
İndiremiyorum....
#5
Satılık olduğu için olabilir
#6
(25-11-2020, 23:16)suriyelikene Adlı Kullanıcıdan Alıntı: Satılık olduğu için olabilir
İstek bölümüne açtım yanlışmı açtım...
#7
(25-11-2020, 23:18)kartalemre Adlı Kullanıcıdan Alıntı:
(25-11-2020, 23:16)suriyelikene Adlı Kullanıcıdan Alıntı: Satılık olduğu için olabilir
İstek bölümüne açtım yanlışmı açtım...

Hayır fakat istiyorsunuz diye paralı bir menüyü size bedavaya veremezler.
#8
(25-11-2020, 23:33)Hüseyin Orkun Adlı Kullanıcıdan Alıntı:
(25-11-2020, 23:18)kartalemre Adlı Kullanıcıdan Alıntı: İstek bölümüne açtım yanlışmı açtım...

Hayır fakat istiyorsunuz diye paralı bir menüyü size bedavaya veremezler.
Paralı istiyorum demedim ki
#9
(25-11-2020, 23:33)kartalemre Adlı Kullanıcıdan Alıntı:
(25-11-2020, 23:33)Hüseyin Orkun Adlı Kullanıcıdan Alıntı: Hayır fakat istiyorsunuz diye paralı bir menüyü size bedavaya veremezler.
Paralı istiyorum demedim ki
Size sadece seçenek sundum.
DISCORD: PawNod#6281 - Ücretli eklenti için ulaşabilirsiniz. : Eklentilerim - Discord Sunucum
#10
Buyrun Biraz eski bir menü ama ücretsiz en fazla bu kadar ;
.sma banka.sma (Dosya Boyutu: 8,42 KB | İndirme Sayısı: 1)

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

Yorum yapmak için üye olmanız gerekiyor

ya da

Benzer Konular

Task
Kayıt Ol
Discord Adresimize Katılın