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

Баг с моделью [SPECTATORS]

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

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

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

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

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

Баг с моделью [SPECTATORS]

Сообщение limbooc » 14 окт 2018, 00:14

Добрый день!

Прошу ваши помощи,
Давно уже стоит данный баг
Суть следующий при заходе игрока за спектр, то у живых игроков под ногами багается моделька спектатора (именно когда переходит за спектатором)

Видео прилагается:
Вы должны зарегистрироваться, чтобы видеть ссылки.

пробовал следующие:
Код: Выделить всё
#include < amxmodx >  

 

public plugin_init
( ) {

    register_plugin( "Remove Dead Bodies", "1.0", "Amxx Community" );

     

    set_msg_block
( get_user_msgid( "ClCorpse" ), BLOCK_SET );

}


Код: Выделить всё
register_message(MsgId_ClCorpse, "Message_ClCorpse");

public Message_ClCorpse() return PLUGIN_HANDLED;


Без результативно
Благодарю за помощь
Аватара пользователя
limbooc
 
Сообщения: 71
Зарегистрирован: 15 мар 2017, 07:45
Благодарил (а): 13 раз.
Поблагодарили: 1 раз.
Опыт программирования: Около года
Языки программирования: Pawn

Re: Баг с моделью [SPECTATORS]

Сообщение артист666 » 14 окт 2018, 18:52

Без кода, можешь сам искать.

Труп никак не может следовать за прицелом, это объект с моделью.

В финке смотри.

Или какой-то неведомый косяк с pev_iuser..
Если вы хотите чему-то научиться, пробуйте, задавайте вопросы.
Иначе компенсируйте потраченное время на ваши "проблемы".
Аватара пользователя
артист666
 
Сообщения: 2706
Зарегистрирован: 09 апр 2013, 17:46
Благодарил (а): 284 раз.
Поблагодарили: 639 раз.
Опыт программирования: Больше трех лет
Языки программирования: С, C++
Delphi
HTML, CSS, Java Script
Pawn

Re: Баг с моделью [SPECTATORS]

Сообщение limbooc » 14 окт 2018, 19:54

артист666,

я так полагаю что виновник меню эмоции

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

#define PLUGIN "CSO Emotion"
#define VERSION "2.3"
#define AUTHOR "Dias"

#define MAX_EMOTION 6
#define BUTTON_HOLDTIME 0.5
#define USE_TYPE 1 // 1 = J Button (Cheer); 2 = Hold R Button

#define MsgId_ClCorpse                             122

#define TASK_EMOTION 1962
#define TASK_HOLDTIME 1963
native jbe_is_user_not_alive(id)
new const 
p_model[] = "models/jb_engine/cso_emotion2.mdl"
new const v_model[] = "models/jb_engine/v_cso_emotion_v23.mdl"
new const Resource_Sound[MAX_EMOTION][] = 
{
    
"cso_emotion/man_angry.wav",
    
"cso_emotion/man_dance.wav",
    
"cso_emotion/man_hi.wav",
    
"cso_emotion/man_joy.wav",
    
"cso_emotion/man_procoke.wav",
    
"cso_emotion/man_special.wav"
}

new 
Emotion_Name[MAX_EMOTION][] = 
{
    
"Дать честь",
    
"Указать кто лузер",
    
"Радоваться",
    
"Показать злость",
    
"Танцевать",
    
"Бодибилдинг"
}

native jbe_get_day_mode()


new 
Float:Emotion_Time[MAX_EMOTION] = 
{
    
3.0,
    
7.0,
    
4.5,
    
3.8,
    
6.7,
    
6.0
}

enum
{
    
EMO_HI 0,
    
EMO_PROVOKE,
    
EMO_JOY,
    
EMO_ANGRY,
    
EMO_DANCE,
    
EMO_SPECIAL1
}

new 
g_InDoingEmo[33], g_AnimEnt[33], g_AvtEnt[33], g_OldWeapon[33], g_OldKnifeModel[33][128]
new 
g_MaxPlayersg_HoldingButton[33], g_UseType

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_event("HLTV""Event_NewRound""a""1=0""2=0")
    
register_event("DeathMsg""Event_DeathMsg""a")
    
    
register_forward(FM_CmdStart"fw_CmdStart")
    
register_forward(FM_AddToFullPack"fw_AddToFullPack_Post"1)
    
register_forward(FM_Think"fw_Think")

    
    
//RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)
    
    
g_UseType USE_TYPE
    
//if(g_UseType == 1) register_clcmd("asdsad", "Open_EmoMenu")
    
    
g_MaxPlayers get_maxplayers()
}


public 
plugin_natives() 
{
    
register_native(    "jbe_open_emotion_menu""jbe_open_emotion_menu"1    );                            // Натив на открытие менюхи
}
public 
jbe_open_emotion_menu(id) return Open_EmoMenu(id)
public 
plugin_precache()
{
    
engfunc(EngFunc_PrecacheModelp_model)
    
engfunc(EngFunc_PrecacheModelv_model)
    
    for(new 
0sizeof(Resource_Sound); i++)
        
engfunc(EngFunc_PrecacheSoundResource_Sound[i])
}

public 
Event_NewRound()
{
    for(new 
0g_MaxPlayersi++)
    {
        if(!
is_user_connected(i))
            continue
            
        
Reset_Var(i)
    }
}

public 
Event_DeathMsg()
{
    static 
VictimVictim read_data(2)
    
Do_Reset_Emotion(Victim)
}

/*public fw_PlayerSpawn_Post(id)
{
    if(g_UseType == 1)
        client_printc(id, "!g[Эмоции]!n Нажмите !g[J]!n tчтобы использовать меню !tEmotion!n")
    else if(g_UseType == 2)
        client_printc(id, "!g[Эмоции]!n Hold !g[R]!n to use !tEmotion!n")
}
*/
public Reset_Var(id)
{
    if(!
is_user_connected(id))
        return
        
    if(
g_InDoingEmo[id])
    {
        if(
get_user_weapon(id) == CSW_KNIFE)
            
set_pev(idpev_viewmodel2g_OldKnifeModel[id])
    }
        
    if(
task_exists(id+TASK_EMOTION)) remove_task(id+TASK_EMOTION)    
        
    
Set_Entity_Invisible(id0)
    
    if(
pev_valid(g_AnimEnt[id])) engfunc(EngFunc_RemoveEntityg_AnimEnt[id])
    if(
pev_valid(g_AvtEnt[id])) engfunc(EngFunc_RemoveEntityg_AvtEnt[id])
    
    
g_InDoingEmo[id] = 0
    g_AnimEnt
[id] = g_AvtEnt[id] = 0    
    g_HoldingButton
[id] = 0
}

public 
Open_EmoMenu2(id)
{
    
id -= TASK_HOLDTIME
    Open_EmoMenu
(id)
}

public 
Open_EmoMenu(id)
{
    if((
jbe_get_day_mode() != && jbe_get_day_mode() != 2) && g_InDoingEmo[id] && pev(id,pev_waterlevel)>&& !is_user_alive(id))
        return 
PLUGIN_HANDLED;
        
    static 
menuNumberId[6]
    
menu menu_create("Меню эмоции""MenuHandle_Emo")
    
    for(new 
0MAX_EMOTIONi++)
    {
        
num_to_str(iNumberIdsizeof(NumberId))
        
menu_additem(menuEmotion_Name[i], NumberId)
    }
    
    
menu_setprop(menuMPROP_EXITMEXIT_ALL)
    
menu_display(idmenu0)    
    return 
PLUGIN_HANDLED;
}

public 
MenuHandle_Emo(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        return
    }
    if(!
is_user_alive(id))
        return
    if(
g_InDoingEmo[id])
        return
        
    static 
Data[6], Name[64], AccessCallback
    menu_item_getinfo
(menuitemAccessDatacharsmax(Data), Namecharsmax(Name), Callback)
    
    static 
EmoIdEmoId str_to_num(Data)
    
    if(
EmoId >= MAX_EMOTION)
        return
        
    
Set_Emotion_Start(idEmoId)
}

public 
Set_Emotion_Start(idEmoId)
{
    
g_InDoingEmo[id] = 1
    Set_Entity_Invisible
(id1)
    
    
Create_AvtEnt(id)
    
Create_AnimEnt(id)
    
    if(!
Check_Avalible(id)) return
    
    
Do_Set_Emotion(idEmoId)
}

public 
Create_AvtEnt(id)
{
    if(
pev_valid(g_AvtEnt[id]))
        return
    
    
g_AvtEnt[id] = engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))

    if(!
pev_valid(g_AvtEnt[id])) 
        return    
    
    static 
entent g_AvtEnt[id]
    
set_pev(entpev_classname"avatar")
    
set_pev(entpev_ownerid)
    
set_pev(entpev_movetypeMOVETYPE_FOLLOW)
    
set_pev(entpev_solidSOLID_NOT)

    
// Set Model
    
static PlayerModel[64]
    
fm_cs_get_user_model(idPlayerModelsizeof(PlayerModel))
    
    
format(PlayerModelsizeof(PlayerModel), "models/player/%s/%s.mdl"PlayerModelPlayerModel)
    
engfunc(EngFunc_SetModelg_AvtEnt[id], PlayerModel)    
    
    
// Set Avatar
    
set_pev(entpev_bodypev(idpev_body))
    
set_pev(entpev_skinpev(idpev_skin))
    
    
set_pev(entpev_renderamtpev(idpev_renderamt))
    static 
Float:Color[3]; pev(idpev_rendercolorColor)
    
set_pev(entpev_rendercolorColor)
    
set_pev(entpev_renderfxpev(idpev_renderfx))
    
set_pev(entpev_rendermodepev(idpev_rendermode))
    
    
Set_Entity_Invisible(ent0)
}

public 
Create_AnimEnt(id)
{
    if(
pev_valid(g_AnimEnt[id]))
        return
            
    
g_AnimEnt[id] = engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
    if(!
pev_valid(g_AnimEnt[id])) 
        return
        
    static 
entent g_AnimEnt[id]
    
set_pev(entpev_classname"AnimEnt")
    
set_pev(entpev_ownerid)
    
set_pev(entpev_movetypeMOVETYPE_TOSS)
    
    
engfunc(EngFunc_SetModelentp_model)
    
engfunc(EngFunc_SetSizeent, {-16.0, -16.00.0}, {16.016.072.0})
    
set_pev(entpev_solidSOLID_BBOX)
    
    
engfunc(EngFunc_DropToFloorent)
    
Set_Entity_Invisible(ent0)
    
    
set_pev(entpev_nextthinkget_gametime() + 0.1)
}

public 
Check_Avalible(id)
{
    if(!
pev_valid(g_AnimEnt[id]) || !pev_valid(g_AvtEnt[id]))
    {
        
Do_Reset_Emotion(id)
        return 
0
    
}
        
    return 
1
}

public 
Do_Set_Emotion(idEmoId)
{
    
// Set Player Emotion
    
static Float:Origin[3], Float:Angles[3], Float:Velocity[3]
        
    
pev(idpev_originOrigin); pev(idpev_anglesAngles); pev(idpev_velocityVelocity)
        
    
Origin[2] -= 36.0
    set_pev
(g_AnimEnt[id], pev_originOrigin)
        
    
Angles[0] = 0.0Angles[2] = 0.0
    set_pev
(g_AnimEnt[id], pev_anglesAngles)
    
set_pev(g_AnimEnt[id], pev_velocityVelocity)
        
    
set_pev(g_AvtEnt[id], pev_aimentg_AnimEnt[id])
    
Set_Entity_Anim(g_AnimEnt[id], EmoId1)
    
    
// Set Hand Emotion
    
g_OldWeapon[id] = get_user_weapon(id)
    
fm_give_item(id"weapon_knife")
    
engclient_cmd(id"weapon_knife")
    
    
pev(idpev_viewmodel2g_OldKnifeModel[id], 127)
    
set_pev(idpev_viewmodel2v_model)
    
Set_Weapon_Anim(idEmoId)
    
    static 
KnifeEntKnifeEnt fm_get_user_weapon_entity(idCSW_KNIFE)
    if(
pev_valid(KnifeEnt)) set_pdata_float(KnifeEnt48Emotion_Time[EmoId], 4)
    
    if(
task_exists(id+TASK_EMOTION)) remove_task(id+TASK_EMOTION)
    
set_task(Emotion_Time[EmoId], "Reset_Emotion"id+TASK_EMOTION)
}

public 
Reset_Emotion(id)
{
    
id -= TASK_EMOTION
    
    
if(!is_user_connected(id))
        return
    if(!
g_InDoingEmo[id])
        return
        
    
Do_Reset_Emotion(id)
}

public 
Do_Reset_Emotion(id)
{
    if(!
is_user_connected(id))
        return
    if(!
g_InDoingEmo[id])
        return
        
    if(
task_exists(id+TASK_EMOTION)) remove_task(id+TASK_EMOTION)
    
Set_Entity_Invisible(id0)
    
    if(
pev_valid(g_AnimEnt[id])) engfunc(EngFunc_RemoveEntityg_AnimEnt[id])
    if(
pev_valid(g_AvtEnt[id])) engfunc(EngFunc_RemoveEntityg_AvtEnt[id])
    
    
g_AnimEnt[id] = g_AvtEnt[id] = 0
    
    
if(is_user_alive(id))
    {
        if(
get_user_weapon(id) == CSW_KNIFE)
            
set_pev(idpev_viewmodel2g_OldKnifeModel[id])
        
        static 
MyOldWeaponMyOldWeapon g_OldWeapon[id]
        static 
Classname[64]; get_weaponname(MyOldWeaponClassnamesizeof(Classname))
        
engclient_cmd(idClassname)
    }
    
    
g_InDoingEmo[id] = 0
}

public 
fw_CmdStart(iduc_handleseed)
{
    if(!
is_user_alive(id))
        return

    
    if(!
g_InDoingEmo[id] && g_UseType == 2)
    {
        static 
UseButtonUseOldButton
        UseButton 
= (get_uc(uc_handleUC_Buttons) & IN_RELOAD)
        
UseOldButton = (pev(idpev_oldbuttons) & IN_RELOAD)
        
        if(
UseButton)
        {
            if(!
UseOldButton && !g_InDoingEmo[id])
            {
                
g_HoldingButton[id] = 1
                set_task
(BUTTON_HOLDTIME"Open_EmoMenu2"id+TASK_HOLDTIME)
            }
        } else {
            if(
UseOldButton && g_HoldingButton[id])
            {
                if(
task_exists(id+TASK_HOLDTIME)) 
                {
                    
remove_task(id+TASK_HOLDTIME)
                    
g_HoldingButton[id] = 0
                
}
            }
        }    
        
        return
    }
        
    static 
CurButtonCurButton get_uc(uc_handleUC_Buttons)
    
    if((
CurButton IN_ATTACK) || (CurButton IN_ATTACK2) || (CurButton IN_DUCK) || (CurButton IN_JUMP))
    {
        
Do_Reset_Emotion(id)
        return
    }
    
    static 
Float:Velocity[3], Float:Vector
    pev
(idpev_velocityVelocity); Vector vector_length(Velocity)
    
    if(
Vector != 0.0)
    {
        
Do_Reset_Emotion(id)
        return
    }
    
    
/*
    if(get_user_weapon(id) != CSW_KNIFE)
    {
        Do_Reset_Emotion(id)
        return
    }*/
}

public 
fw_AddToFullPack_Post(es_handleenthosthostflagsplayerpSet)
{
    if(!
is_user_alive(host) && !pev_valid(ent))
        return 
FMRES_IGNORED
    
if(g_AnimEnt[host] != ent)
        return 
FMRES_IGNORED
            
    set_es
(es_handleES_Effectsget_es(es_handleES_Effects) | EF_NODRAW)
    return 
FMRES_IGNORED
}

public 
fw_Think(ent)
{
    if(!
pev_valid(ent))
        return
        
    static 
Classname[64]
    
pev(entpev_classnameClassnamesizeof(Classname))
    
    if(
equal(Classname"AnimEnt"))
    {
        static 
idid pev(entpev_owner)
        if(!
is_user_alive(id))
            return
            
        
// Set Player Emotion
        
static Float:Angles[3], Float:Angles2[3]
        
        
pev(idpev_anglesAngles)
        
pev(entpev_anglesAngles2)
        
        
Angles[0] = 0.0Angles[2] = 0.0
        
        
if(Angles[1] != Angles2[1]) set_pev(entpev_anglesAngles)
        
set_pev(entpev_nextthinkget_gametime() + 0.05)
        
        if(
pev(entpev_effects) == (pev(entpev_effects) | EF_NODRAW)) Set_Entity_Invisible(ent0)
    }
}

stock fm_cs_get_user_model(idModel[], Len)
{
    if(!
is_user_connected(id))
        return
        
    
engfunc(EngFunc_InfoKeyValueengfunc(EngFunc_GetInfoKeyBufferid), "model"ModelLen)
}

stock Set_Entity_Invisible(entInvisible 1)
{
    if(!
pev_valid(ent))
        return
        
    
set_pev(entpev_effectsInvisible == pev(entpev_effects) & ~EF_NODRAW pev(entpev_effects) | EF_NODRAW)
}

stock Set_Entity_Anim(entAnimResetFrame)
{
    if(!
pev_valid(ent))
        return
        
    
set_pev(entpev_animtimeget_gametime())
    
set_pev(entpev_framerate1.0)
    
set_pev(entpev_sequenceAnim)
    if(
ResetFrameset_pev(entpev_frame0)
}


stock Set_Weapon_Anim(idAnim)
{
    if(!
is_user_alive(id))
        return
        
    
set_pev(idpev_weaponanimAnim)

    
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM_id)
    
write_byte(Anim)
    
write_byte(pev(idpev_body))
    
message_end()
}

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

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

    if(
index == 0)
    {
        for(new 
0g_MaxPlayersi++)
        {
            if(!
is_user_connected(i))
                continue
            
            
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _i)
            
write_byte(i)
            
write_string(szMsg)
            
message_end()
        }        
    } else {
        
message_begin(MSG_ONE_UNRELIABLEget_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\\ lang1033\\ f0\\ fs16 \n\\ par }
*/
 
Аватара пользователя
limbooc
 
Сообщения: 71
Зарегистрирован: 15 мар 2017, 07:45
Благодарил (а): 13 раз.
Поблагодарили: 1 раз.
Опыт программирования: Около года
Языки программирования: Pawn

Re: Баг с моделью [SPECTATORS]

Сообщение артист666 » 14 окт 2018, 22:35

Отключать пробовал?
Если вы хотите чему-то научиться, пробуйте, задавайте вопросы.
Иначе компенсируйте потраченное время на ваши "проблемы".
Аватара пользователя
артист666
 
Сообщения: 2706
Зарегистрирован: 09 апр 2013, 17:46
Благодарил (а): 284 раз.
Поблагодарили: 639 раз.
Опыт программирования: Больше трех лет
Языки программирования: С, C++
Delphi
HTML, CSS, Java Script
Pawn

Re: Баг с моделью [SPECTATORS]

Сообщение limbooc » 15 окт 2018, 17:19

артист666, если проблема решаема то отключать думаю не вижу смысла, без данного плагина, проблема не замечались
Аватара пользователя
limbooc
 
Сообщения: 71
Зарегистрирован: 15 мар 2017, 07:45
Благодарил (а): 13 раз.
Поблагодарили: 1 раз.
Опыт программирования: Около года
Языки программирования: Pawn

Re: Баг с моделью [SPECTATORS]

Сообщение артист666 » 16 окт 2018, 17:40

limbooc писал(а):артист666, если проблема решаема то отключать думаю не вижу смысла

Я про это имел ввиду:
limbooc писал(а):без данного плагина, проблема не замечались
Если вы хотите чему-то научиться, пробуйте, задавайте вопросы.
Иначе компенсируйте потраченное время на ваши "проблемы".
Аватара пользователя
артист666
 
Сообщения: 2706
Зарегистрирован: 09 апр 2013, 17:46
Благодарил (а): 284 раз.
Поблагодарили: 639 раз.
Опыт программирования: Больше трех лет
Языки программирования: С, C++
Delphi
HTML, CSS, Java Script
Pawn


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

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

Сейчас этот форум просматривают: Google [Bot] и гости: 11