Русское сообщество по скриптингу

[Pumpkin Grenade ] Неработает Плагин

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

[Pumpkin Grenade ] Неработает Плагин

Сообщение MayroN » 13 мар 2018, 21:54

Есть данный исход Кластеров Гранат и Pumpkin Grenade .Почему-то в игре абсолютно неработают плагины и каких либо ошибок тоже нет.
Просто прогляньте ,что там не так.И заодно,если есть время - проверьте у себя (будут ли у Вас работать)

Может для их нужно более старые модули?

Код: Выделить всё
#include <amxmodx>
#include <fun>
#include <hamsandwich>
#include <fakemeta_util>

#define PLUGIN "Cluster Grenade"
#define VERSION "3.0"
#define AUTHOR "Chrescoe1"

#if defined ZombiePlague
#include <zombieplague>
#endif

//Resource
new const v_model_pumpkin[] =     "models/blood_bomb/v_blood_bomb.mdl"
new const p_model_pumpkin[] =     "models/blood_bomb/p_blood_bomb.mdl"
new const w_model_pumpkin[] =     "models/blood_bomb/w_blood_bomb.mdl"
new const cluster_models[] =    "models/blood_bomb/w_blood_bomb.mdl"
new const g_soundexpl[] =         "weapons/hegrenade-3.wav"
new const blast_sprite[] =     "sprites/shockwave.spr"
new const cluster_trail[] =    "sprites/laserbeam.spr"    
new const exp_sprite
[] =         "sprites/dexplo.spr"

//Settings
const Float:expl_damage =  45.0 // Урон наносимый гранатой
const Float:expl_damage_ent = 60.0 // Урон наносимый ентити \ нпц
const Float:expl_radius =  180.0 // Радиус урона гранаты
const Float:cluster_damage = 10.0 // Урон наносимый осколками
const Float:cluster_damage_ent = 15.0 // Урон наносимый ентити \ нпц
const Float:cluster_radius = 120.0 // Радиус урона осколок

const cluster_num_min = 8 // Мин кол-во осколков
const cluster_num_max = 16 // Макс кол-во осколков
const Float:cluster_rad_min =  200.0 // Мин радиус разлета осколок
const Float:cluster_rad_max =  250.0 // Макс радиус разлета осколок
const Float:cluster_up_min =  200.0 // Мин взлёт осколков вверх
const Float:cluster_up_max =  300.0 // Макс взлёт осколков вверх

#define weapon_name "weapon_hegrenade"
#define Bomb_Classname "Pumpkin_Grenade"
#define Cluster_Classname "Pumpkin_ClusterBomb"
#define weaponlist_name "weapon_pumpkin"
#define weaponlist_original "weapon_hegrenade"


#if defined ZombiePlague
new g_itemid_pumpkin
#endif

new bool:g_has_pumpkin[32]
new g_sprRing,spriteexpl,g_Trail
new Msg_Weaponlist
,Msg_ScreenShake,Msg_ScreenFade
public plugin_precache
()
{
    
    precache_model
(w_model_pumpkin)
    precache_model(v_model_pumpkin)
    precache_model(p_model_pumpkin)
    precache_model(cluster_models)
    precache_sound(g_soundexpl)
    
    spriteexpl    
= precache_model(exp_sprite)
    g_Trail        = precache_model(cluster_trail)
    g_sprRing    = precache_model(blast_sprite)
}
public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    Msg_Weaponlist 
= get_user_msgid("WeaponList")
    Msg_ScreenShake = get_user_msgid("ScreenShake")
    Msg_ScreenFade = get_user_msgid("ScreenFade")
    
    
//Ham
    RegisterHam(Ham_Item_AddToPlayer, weapon_name, "Ham_AddToPlayer_Post", 1)
    RegisterHam(Ham_Item_Deploy, weapon_name, "Ham_Item_Deploy_Post", 1)
    
    
//Fakemeta
    register_forward(FM_SetModel, "Fakemeta_SetModel")
    register_forward(FM_Touch, "Fakemeta_Touch")
    
    
//Hook Weapon
    register_clcmd(weaponlist_name, "hook_weapon")
    
    
#if defined ZombiePlague
        //Register item in ZP
        g_itemid_pumpkin = zp_register_extra_item("Pumpkin Grenade", 5, ZP_TEAM_HUMAN)
    #else
        //Get with chat command
        register_clcmd("say /get_pumpkin","zp_extra_item_selected")
    #endif
    // Add your code here...
}
public zp_extra_item_selected(id,itemid)
{
    #if defined ZombiePlague
    if(itemid!=g_itemid_pumpkin)return PLUGIN_HANDLED
    if
(g_has_pumpkin[id])return ZP_PLUGIN_HANDLED
    
#endif
    g_has_pumpkin[id]=true
    give_item
(id, weapon_name)
    return PLUGIN_HANDLED
}
public hook_weapon(id){client_cmd(id,weaponlist_original);return PLUGIN_HANDLED;}

//Ham
public Ham_AddToPlayer_Post(ent, id)
{
    if(!pev_valid(ent))return HAM_IGNORED    
    
//Update WeaponList
    message_begin(MSG_ONE_UNRELIABLE, Msg_Weaponlist, _, id)
    write_string(g_has_pumpkin[id]? weaponlist_name : weaponlist_original)
    write_byte(12)
    write_byte(1)
    write_byte(-1)
    write_byte(-1)
    write_byte(3)
    write_byte(1)
    write_byte(CSW_HEGRENADE)
    write_byte(24)
    message_end()            
    return HAM_HANDLED        
}
public Ham_Item_Deploy_Post(ent)
{
    if(!pev_valid(ent))return
    
    new id 
= get_pdata_cbase(ent, 41, 4)
    
    if 
(is_user_alive(id))
    if(g_has_pumpkin[id])
    {
        set_pev(id, pev_viewmodel2, v_model_pumpkin)
        set_pev(id, pev_weaponmodel2, p_model_pumpkin)
    }
}
//Fakemeta
public Fakemeta_SetModel(ent, const Model[])
{
    if(!pev_valid(ent))return FMRES_IGNORED
    if
(equal(Model, "models/blood_bomb/w_blood_bomb.mdl"))    //If model HE Grenade
    {
        new id = pev(ent, pev_owner)
        if(g_has_pumpkin[id])    //if owner has bomb
        {
            Trail(ent,g_Trail,12,8,255,155,55,255)
            set_pev(ent, pev_classname, Bomb_Classname)    //Set classname    
            set_pev(ent, pev_dmgtime, 9999999.0)        //Block Explode
            engfunc(EngFunc_SetModel, ent, w_model_pumpkin)    //Change Model
            g_has_pumpkin[id]=false                //Remove bomb on player

            return FMRES_SUPERCEDE
        
}
    }
    return FMRES_IGNORED    
}
public Fakemeta_Touch(ent, touch)
{
    if(!pev_valid(ent))return HAM_IGNORED
    
    new EntClassname
[32],TouchClassname[32]
    pev(ent, pev_classname, EntClassname, sizeof(EntClassname))
    
    if
(pev_valid(touch))
        pev(touch, pev_classname, TouchClassname, sizeof(TouchClassname))
    
    if
(equal(EntClassname, Bomb_Classname))
    {
        if(pev_valid(touch))
        {
            if(equal(TouchClassname, Cluster_Classname))return HAM_SUPERCEDE
            if
(equal(TouchClassname, Bomb_Classname))return HAM_SUPERCEDE
        
}
        Pumpkin_Explode(ent)
        return HAM_SUPERCEDE
    
}
    
    if
(equal(EntClassname, Cluster_Classname))
    {
        if(pev_valid(touch))
        {
            if(equal(TouchClassname, Cluster_Classname))return HAM_SUPERCEDE
            if
(equal(TouchClassname, Bomb_Classname))return HAM_SUPERCEDE
        
}
        Cluster_Explode(ent)
        return HAM_SUPERCEDE
    
}
    return HAM_IGNORED
}
//Public Func
public Pumpkin_Explode(ent)
{
    new Float:ExpOrigin[3],owner= pev(ent, pev_owner)
    pev(ent,pev_origin,ExpOrigin)
        
    engfunc
(EngFunc_EmitSound, ent, CHAN_WEAPON,g_soundexpl, 1.0, ATTN_NORM, 0, PITCH_NORM)
    
    
//Explode    
    engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, ExpOrigin, 0)
    write_byte(TE_EXPLOSION)
    engfunc(EngFunc_WriteCoord, ExpOrigin[0])
    engfunc(EngFunc_WriteCoord, ExpOrigin[1])
    engfunc(EngFunc_WriteCoord, ExpOrigin[2]+50.0)
    write_short(spriteexpl)
    write_byte(30)
    write_byte(10)
    write_byte(0)
    message_end()
    
    ExplodeDecals
(ExpOrigin)
    Light(ExpOrigin,45,250,150,50,15)    
    Ring
(ExpOrigin,20,80)
    Ring(ExpOrigin,40,60)
    Ring(ExpOrigin,60,40)
    Ring(ExpOrigin,80,20)
    
    static victim 
= -1
    while
((victim = engfunc(EngFunc_FindEntityInSphere, victim, ExpOrigin, expl_radius)) != 0)
    {
        if(victim>0&&pev(victim, pev_takedamage)!=DAMAGE_NO&&pev(victim, pev_solid)!=SOLID_NOT)
        {    
            if
(is_user_connected(victim))
            {
                #if defined ZombiePlague
                if(zp_get_user_zombie(victim))
                #else
                if(get_user_team(victim)!=get_user_team(owner))
                #endif
                    ExecuteHamB(Ham_TakeDamage, victim, ent, owner,expl_damage , DMG_NERVEGAS),
                    ScreenFadeAndShake(victim)
            }
            else ExecuteHamB(Ham_TakeDamage, victim, ent, owner,expl_damage_ent , DMG_NERVEGAS)
        }
    }
    
    
//Make Cluster Grenade
    //Code by Alexander.3 - http://forum.zombielite.ru/index.php?/topic/81-clustergrenade/
    for (new i=0;i<random_num(cluster_num_min,cluster_num_max); i++)
    {    
        new bomb            
        bomb 
= engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))    // Создаем энтити
        engfunc(EngFunc_SetOrigin, bomb, ExpOrigin)    // Устанавливаем координаты для созданной энтити
        engfunc(EngFunc_SetModel, bomb, cluster_models)    // Устанавливаем модельку
        set_pev(bomb, pev_solid, SOLID_TRIGGER)        // Солидность ставим на TRGGGER, что бы не взрывались раньше нужного времени
        set_pev(bomb, pev_classname, Cluster_Classname)    // Устанавливаем ClassName для проверки в Touch эвенте
        set_pev(bomb, pev_movetype, MOVETYPE_TOSS)    // Устанавливаем MOVETYPE_TOSS
        set_pev(bomb, pev_owner, pev(ent, pev_owner))    // Устанавливаем индекс игрока для энтити
        Util_PlayAnimation(bomb,1,0.6)    //Play Anim
        // Работа с разбросом, будет рандомная в пределе лимита.
        new Float:velocity[3]
        velocity[0] = random_float(-random_float(cluster_rad_min,cluster_rad_max), random_float(cluster_rad_min,cluster_rad_max))    
        velocity
[1] = random_float(-random_float(cluster_rad_min,cluster_rad_max), random_float(cluster_rad_min,cluster_rad_max))    
        velocity
[2] = random_float(-random_float(cluster_rad_min,cluster_rad_max), random_float(cluster_rad_min,cluster_rad_max))+ random_float(cluster_up_min,cluster_up_max)
        
        
// Устанавливаем силу разлета осколок
        set_pev(bomb, pev_velocity, velocity)
        
        new Float
: Angles[3]
        Angles[1]=random_float(0.0,360.0)
        set_pev(bomb,pev_angles,Angles)
        
        Trail
(bomb,g_Trail,4,4,255,155,55,255)
    }
    //And remove pumkin...
    if(pev_valid(ent))engfunc(EngFunc_RemoveEntity, ent)
}
public Cluster_Explode(ent)
{
    if (!pev_valid( ent ))return
    
    new Float
:ExpOrigin[3],victim = -1
    
    pev
(ent, pev_origin, ExpOrigin)
    
    Ring
(ExpOrigin,20,40)
    Ring(ExpOrigin,40,20)
    Light(ExpOrigin,15,250,150,50,15)
    
    
//Explode
    engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, ExpOrigin, 0)
    write_byte(TE_EXPLOSION)
    engfunc(EngFunc_WriteCoord, ExpOrigin[0])
    engfunc(EngFunc_WriteCoord, ExpOrigin[1])
    engfunc(EngFunc_WriteCoord, ExpOrigin[2] + 15.0)
    write_short(spriteexpl)
    write_byte(5)
    write_byte(10)
    write_byte(0)
    message_end()
    
    while
((victim = engfunc(EngFunc_FindEntityInSphere, victim, ExpOrigin, cluster_radius)) != 0)
    {
        if(victim>0&&pev(victim, pev_takedamage)!=DAMAGE_NO&&pev(victim, pev_solid)!=SOLID_NOT)
        {    
            if
(is_user_connected(victim))
            {
                #if defined ZombiePlague
                if(zp_get_user_zombie(victim))
                #else
                if(get_user_team(victim)!=get_user_team(pev(ent,pev_owner)))
                #endif
                    ExecuteHamB(Ham_TakeDamage, victim, ent, pev(ent,pev_owner),cluster_damage , DMG_NERVEGAS),
                    ScreenFadeAndShake(victim)
            }
            else ExecuteHamB(Ham_TakeDamage, victim, ent, pev(ent,pev_owner),cluster_damage_ent , DMG_NERVEGAS)
        }
    }
    if(pev_valid(ent))engfunc(EngFunc_RemoveEntity, ent)    //and remove entity
}
//Stocks
stock Trail(ent,sprite,life,size,R,G,B,F)
{
        message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
        write_byte(TE_BEAMFOLLOW)
        write_short(ent)
        write_short(sprite)
        write_byte(life)
        write_byte(size)
        write_byte(R)
        write_byte(G)
        write_byte(B)
        write_byte(F)
        message_end()
}
stock ExplodeDecals(Float:Origin[3])
{
    engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, Origin, 0)
    write_byte(TE_WORLDDECAL)
    engfunc(EngFunc_WriteCoord, Origin[0])
    engfunc(EngFunc_WriteCoord, Origin[1])
    engfunc(EngFunc_WriteCoord, Origin[2])
    write_byte(engfunc(EngFunc_DecalIndex,"{scorch3"))
    message_end()
}

stock Light(Float:Origin[3],RAD,R,G,B,Life)
{
    message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
    write_byte(TE_DLIGHT)
    engfunc(EngFunc_WriteCoord, Origin[0])
    engfunc(EngFunc_WriteCoord, Origin[1])
    engfunc(EngFunc_WriteCoord, Origin[2])
    write_byte(RAD)    //Radius
    write_byte(R)    // r
    write_byte(G)    // g
    write_byte(B)    // b
    write_byte(Life)    //Life
    write_byte(10)
    message_end() 
}
stock Ring(Float:flOrigin[3],Size,width)
{
    engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, flOrigin, 0)
    write_byte(TE_BEAMCYLINDER)            // TE id
    engfunc(EngFunc_WriteCoord, flOrigin[0])        // x
    engfunc(EngFunc_WriteCoord, flOrigin[1])        // y
    engfunc(EngFunc_WriteCoord, flOrigin[2]-20.0)        // z
    engfunc(EngFunc_WriteCoord, flOrigin[0])        // x axis
    engfunc(EngFunc_WriteCoord, flOrigin[1])        // y axis
    engfunc(EngFunc_WriteCoord, flOrigin[2] + Size)    // z axis
    write_short(g_sprRing)     // sprite
    write_byte(0)         // startframe
    write_byte(0)         // framerate
    write_byte(10)         // life
    write_byte(width)     // width
    write_byte(0)         // noise
    write_byte(255)         // red
    write_byte(155)         // green
    write_byte(55)         // blue
    write_byte(255)         // brightness
    write_byte(0)         // speed
    message_end()
}
stock ScreenFadeAndShake(victim)
{
    // ScreenShake        
    message_begin(MSG_ONE_UNRELIABLE, Msg_ScreenShake, {0,0,0}, victim)
    write_short(1<<14)
    write_short((1<<12) * 8)
    write_short((2<<12) * 7)
    message_end()
            
    
//ScreenFade
    message_begin(MSG_ONE_UNRELIABLE, Msg_ScreenFade, _, victim)
    write_short(6<<8)
    write_short(6<<10)
    write_short(1<<1)
    write_byte(255)
    write_byte(155)
    write_byte(55)
    write_byte(255)
    message_end()    
}
stock Util_PlayAnimation(index, sequence, Float: framerate = 1.0)
{
      set_pev(index, pev_animtime, get_gametime())
      set_pev(index, pev_framerate,  framerate)
      set_pev(index, pev_frame, 0.0)
      set_pev(index, pev_sequence, sequence)
}
МультиМод CS
Аватара пользователя
MayroN
 
Сообщения: 673
Зарегистрирован: 10 окт 2010, 18:23
Откуда: Украина, г. Белая Церковь
Благодарил (а): 149 раз.
Поблагодарили: 86 раз.
Опыт программирования: Около года
Языки программирования: На которых говорю...

Re: [Pumpkin Grenade ] Неработает Плагин

Сообщение iplague » 15 мар 2018, 14:40

В любой непонятной ситуации выводи переменную.
Наставь в разных местах кода client_print(0,print_console,"название функции")
Посмотри что не выводится и там ищи ошибку.
vk.com/amxxdevelopment
Аватара пользователя
iplague
 
Сообщения: 46
Зарегистрирован: 23 май 2016, 13:50
Благодарил (а): 2 раз.
Поблагодарили: 13 раз.
Опыт программирования: Около года
Языки программирования: pawn


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot], xhewal и гости: 14