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

Ошибка в плагине  [Решено]

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

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

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

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

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

Ошибка в плагине

Сообщение M1n1F3 » 13 фев 2020, 12:39

L 02/13/2020 - 11:00:09: [AMXX] Displaying debug trace (plugin "jbe_ghost.amxx", version "1.2")
L 02/13/2020 - 11:00:09: [AMXX] Run time error 4: index out of bounds
L 02/13/2020 - 11:00:09: [AMXX] [0] jbe_ghost.sma::TakeDamage (line 168)
Код: Выделить всё
public TakeDamage(victiminflicatorattacker
{
    if(
g_iUserGhost[victim] || g_iUserGhost[attacker])
    {
        return 
HAM_SUPERCEDE;
    }
    
    return 
HAM_IGNORED;
}
 
Аватара пользователя
M1n1F3
 
Сообщения: 9
Зарегистрирован: 22 мар 2016, 15:12
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Re: Ошибка в плагине

Сообщение xbass13 » 13 фев 2020, 13:08

Добавить в начало функции
Код: Выделить всё
if(!is_user_connected(victim))
                return 
HAM_IGNORED
if(!is_user_connected(attacker))
                return 
HAM_IGNORED
Аватара пользователя
xbass13
 
Сообщения: 96
Зарегистрирован: 13 июн 2012, 21:20
Благодарил (а): 36 раз.
Поблагодарили: 35 раз.
Опыт программирования: Больше трех лет
Языки программирования: pawn, c++, js, php

Re: Ошибка в плагине

Сообщение M1n1F3 » 13 фев 2020, 13:38

xbass13 писал(а):Добавить в начало функции
Код: Выделить всё
if(!is_user_connected(victim))
                return HAM_IGNORED
if(!is_user_connected(attacker))
                return HAM_IGNORED

Благодарю :thumbs_up
A тут что не так?

L 02/13/2020 - 11:00:36: [AMXX] Displaying debug trace (plugin "core.amxx", version "1.0")
L 02/13/2020 - 11:00:36: [AMXX] Run time error 4: index out of bounds
L 02/13/2020 - 11:00:36: [AMXX] [0] core.sma::Ham_PlayerKilled_Post (line 8710)
Line 8710
Код: Выделить всё
if(g_iUserQuest[iKiller][ENABLED] || iVictim != iKiller || g_iUserTeam[iKiller] == 1)
Аватара пользователя
M1n1F3
 
Сообщения: 9
Зарегистрирован: 22 мар 2016, 15:12
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Re: Ошибка в плагине

Сообщение httpeace// » 13 фев 2020, 15:00

массив за свой предел вылез
скромность украшает, но оставляет голодным
________________________________
Аватара пользователя
httpeace//
 
Сообщения: 179
Зарегистрирован: 01 окт 2013, 14:31
Откуда: Владивосток
Благодарил (а): 51 раз.
Поблагодарили: 15 раз.
Опыт программирования: Больше трех лет
Языки программирования: Lua

Re: Ошибка в плагине

Сообщение M1n1F3 » 13 фев 2020, 15:08

httpeace// писал(а):массив за свой предел вылез

Да я понял это, как исправить?
Код: Выделить всё
public Ham_PlayerKilled_Post(iVictimiKiller)
{
    if(
IsNotSetBit(g_iBitUserAliveiVictim)) return;
    
ClearBit(g_iBitUserAliveiVictim);
    
g_iAlivePlayersNum[g_iUserTeam[iVictim]]--;
    
    if(
g_iAlivePlayersNum[g_iUserTeam[iVictim]] >= && (g_iDayMode == || g_iDayMode == 2))
    {
        
UTIL_SayText(iVictim"%L %L"iVictim"JBE_CHAT_PREFIX"iVictim"JBE_CHAT_ID_GHOST_BACK");
    }
    
    switch(
g_iDayMode)
    {
        case 
12:
        {
            
g_iUserParaUse[iVictim] = false;
            
g_iUserParaEnt[iVictim] = 0;
            if(
pev_valid(g_iUserParaEnt[iVictim]))
            {
                
engfunc(EngFunc_RemoveEntityg_iUserParaEnt[iVictim]);
                
g_iUserParaEnt[iVictim] = 0;
            }
            if(
IsSetBit(g_iBitUserSocceriVictim))
            {
                
ClearBit(g_iBitUserSocceriVictim);
                if(
iVictim == g_iSoccerBallOwner)
                {
                    
CREATE_KILLPLAYERATTACHMENTS(iVictim);
                    
set_pev(g_iSoccerBallpev_solidSOLID_TRIGGER);
                    
set_pev(g_iSoccerBallpev_velocity, {0.00.00.1});
                    
g_iSoccerBallOwner 0;
                }
                if(
g_bSoccerGameremove_task(iVictim+TASK_SHOW_SOCCER_SCORE);
            }
            if(
g_iDuelStatus && IsSetBit(g_iBitUserDueliVictim)) jbe_duel_ended(iVictim);
            if(
pev(iVictimpev_renderfx) != kRenderFxNone || pev(iVictimpev_rendermode) != kRenderNormal)
            {
                
jbe_set_user_rendering(iVictimkRenderFxNone000kRenderNormal0);
                
g_eUserRendering[iVictim][RENDER_STATUS] = false;
            }
            if(
g_iUserTeam[iVictim] == 1)
            {
                if(
g_iAlivePlayersNum[1] == 1)
                {
                    if(
g_bSoccerStatusjbe_soccer_disable_all();
                    if(
g_bBoxingStatusjbe_boxing_disable_all();
                    for(new 
1<= g_iMaxPlayersi++)
                    {
                        if(
g_iUserTeam[i] != || IsNotSetBit(g_iBitUserAlivei)) continue;
                        
g_iLastPnId i;
                        
Show_LastPrisonerMenu(i);
                        
g_iLastPnTimer g_iAllCvars[LAST_PR_TIMER];
                        
set_task(1.0"jbe_last_prisoner_time"TASK_LAST_PRISONER_TIMER);
                    }
                }
                
// LVL SYSTEM
                
if(jbe_is_user_valid(iKiller) && iVictim != iKiller && g_iLevel[iKiller] < MAX_LEVEL && g_iUserTeam[iVictim] != g_iUserTeam[iKiller] && jbe_get_players_count(02) >= g_iLevelCvars[PLAYERS_NEED])
                {
                    if(
IsSetBit(g_iBitUserWantediVictim)) g_iExpName[iKiller] += g_iLevelCvars[KILL_WT];
                    else 
g_iExpName[iKiller] += g_iLevelCvars[KILL_TT];
                    if(
g_iExpName[iKiller] >= g_szExp[g_iLevel[iKiller] + 1])
                    {
                        
g_iLevel[iKiller]++;
                        
g_iExpName[iKiller] = 0;
                        new 
szName[32];
                        
get_user_name(iKillerszNamecharsmax(szName)); 
                        
UTIL_SayText(0"%L %L"iKiller"JBE_CHAT_PREFIX"iKiller"JBE_CHAT_ALL_NEW_RANK_NAME"szNameiKillerg_szRankName[g_iLevel[iKiller]]);
                        
UTIL_ScreenFade(iKiller51220140100200075);
                    }
                }
                
ClearBit(g_iBitUserBoxingiVictim);
                
ClearBit(g_iBitSharpeningiVictim);
                
ClearBit(g_iBitScrewdriveriVictim);
                
ClearBit(g_iBitBalisongiVictim);
                
ClearBit(g_iBitBayonetiVictim);
                
ClearBit(g_iBitWeaponStatusiVictim);
                
ClearBit(g_iBitLatchkeyiVictim);
                if(
task_exists(iVictim+TASK_REMOVE_SYRINGE)) remove_task(iVictim+TASK_REMOVE_SYRINGE);
                
ClearBit(g_iBitFrostNadeiVictim);
                
ClearBit(g_iBitClothingGuardiVictim);
                
ClearBit(g_iBitClothingTypeiVictim);
                
ClearBit(g_iBitHingJumpiVictim);
                
ClearBit(g_iBitMegaJumpiVictim);
                
ClearBit(g_iBitAuraiVictim);
                
ClearBit(g_iBitHookRoundiVictim);
                if(
task_exists(iVictim+TASK_BOSS_AURA)) remove_task(iVictim+TASK_BOSS_AURA);
                if(
IsSetBit(g_iBitUserWantediVictim))
                {
                    
jbe_sub_user_wanted(iVictim);
                    if(
jbe_is_user_valid(iKiller) && g_iUserTeam[iKiller] == 2jbe_set_user_money(iKillerg_iUserMoney[iKiller] + 401);
                }
                if(
IsSetBit(g_iBitUserFreeiVictim)) jbe_sub_user_free(iVictim);
                
ClearBit(g_iBitUserVoiceiVictim);
                if(
jbe_is_user_valid(iKiller) && g_iUserTeam[iKiller] == 2)
                {
                    if(
g_iBitKilledUsers[iKiller]) SetBit(g_iBitKilledUsers[iKiller], iVictim);
                    else
                    {
                        
g_iMenuTarget[iKiller] = iVictim;
                        
SetBit(g_iBitKilledUsers[iKiller], iVictim);
                        
Show_KillReasonsMenu(iKilleriVictim);
                    }
                }
            }
            if(
g_iUserTeam[iVictim] == 2)
            {
                
// LVL SYSTEM
                
if(jbe_is_user_valid(iKiller) && iVictim != iKiller && g_iLevel[iKiller] < MAX_LEVEL && jbe_get_players_count(02) >= g_iLevelCvars[PLAYERS_NEED])
                {
                    if(
iVictim == g_iChiefIdg_iExpName[iKiller] += g_iLevelCvars[KILL_CHIEF];
                    else 
g_iExpName[iKiller] += g_iLevelCvars[KILL_CT];
                    if(
g_iExpName[iKiller] >= g_szExp[g_iLevel[iKiller] + 1])
                    {
                        
g_iLevel[iKiller]++;
                        
g_iExpName[iKiller] = 0;
                        new 
szName[32];
                        
get_user_name(iKillerszNamecharsmax(szName)); 
                        
UTIL_SayText(0"%L %L"iKiller"JBE_CHAT_PREFIX"iKiller"JBE_CHAT_ALL_NEW_RANK_NAME"szNameiKillerg_szRankName[g_iLevel[iKiller]]);
                        
UTIL_ScreenFade(iKiller51220140100200075);
                    }
                }
                
                if(
iVictim == g_iChiefId)
                {
                    
g_iChiefId 0;
                    
g_iChiefStatus 2;
                    
g_szChiefName "";
                    if(
g_bSoccerGameremove_task(iVictim+TASK_SHOW_SOCCER_SCORE);
                    if(
jbe_is_user_valid(iKiller) && g_iUserTeam[iKiller] == 1jbe_set_user_money(iKillerg_iUserMoney[iKiller] + g_iAllCvars[KILLED_CHIEF_MONEY], 1);
                }
                else if(
jbe_is_user_valid(iKiller) && g_iUserTeam[iKiller] == 1jbe_set_user_money(iKillerg_iUserMoney[iKiller] + g_iAllCvars[KILLED_GUARD_MONEY], 1);
                if(
IsSetBit(g_iBitUserFrozeniVictim))
                {
                    
ClearBit(g_iBitUserFrozeniVictim);
                    if(
task_exists(iVictim+TASK_FROSTNADE_DEFROST)) remove_task(iVictim+TASK_FROSTNADE_DEFROST);
                }
            }
            
ClearBit(g_iBitKokainiVictim);
            
ClearBit(g_iBitFastRuniVictim);
            
ClearBit(g_iBitDoubleJumpiVictim);
            if(
IsSetBit(g_iBitRandomGlowiVictim)) ClearBit(g_iBitRandomGlowiVictim);
            
ClearBit(g_iBitAutoBhopiVictim);
            
ClearBit(g_iBitDoubleDamageiVictim);
            if((
IsSetBit(g_iBitUserHookiVictim) || IsSetBit(g_iBitUserHookTimeiVictim) || IsSetBit(g_iBitHookRoundiVictim)) && task_exists(iVictim+TASK_HOOK_THINK))
            {
                
remove_task(iVictim+TASK_HOOK_THINK);
                
emit_sound(iVictimCHAN_STATICg_szHookSound[g_iHookSound[iVictim]][1], VOL_NORMATTN_NORMSND_STOPPITCH_NORM);
            }
            if(
g_iUserQuest[iKiller][ENABLED] || iVictim != iKiller || g_iUserTeam[iKiller] == 1)
            {
                switch(
g_iUserQuest[iKiller][INDEX]) 
                {
                    case 
0:    
                    {
                        if(
g_iUserQuest[iKiller][PROGRESS] < 12 && get_pdata_int(iVictim755) == HIT_HEAD
                        {
                            
g_iUserQuest[iKiller][PROGRESS]++;
                        }
                    }
                    case 
1
                    {    
                        if(
g_iUserQuest[iKiller][PROGRESS] < && g_iUserTeam[iVictim] == 2)
                        {
                            
g_iUserQuest[iKiller][PROGRESS]++;
                        }
                    }
                }
            }
        }
        case 
3:
        {
            if(
IsSetBit(g_iBitUserVoteDayModeiVictim))
            {
                
ClearBit(g_iBitUserVoteDayModeiVictim);
                
ClearBit(g_iBitUserDayModeVotediVictim);
                
show_menu(iVictim0"^n");
                
jbe_menu_unblock(iVictim);
                
UTIL_ScreenFade(iVictim51251200002551);
            }
        }
        case 
4:
        {
            if(
g_iAlivePlayersNum[1] == 1)
            {
                for(new 
isizeof(g_iHamHookForwards); i++) DisableHamForward(g_iHamHookForwards[i]);
                
g_iGlobalGame false;
                
jbe_set_day_mode(1);
                
set_lights("#OFF");
                
client_cmd(0"mp3 stop");
                for(new 
1<= g_iMaxPlayersi++)
                {
                    if(
g_iUserTeam[i] == 2set_pev(ipev_takedamageDAMAGE_YES);
                    if(
g_iUserTeam[i] == && IsSetBit(g_iBitUserAlivei))
                    {
                        
g_iLastPnId i;
                        
Show_LastPrisonerMenu(i);
                        
g_iLastPnTimer g_iAllCvars[LAST_PR_TIMER];
                        
set_task(1.0"jbe_last_prisoner_time"TASK_LAST_PRISONER_TIMER);
                    }
                    new 
szName[32]; get_user_name(iszNamecharsmax(szName));
                    
set_dhudmessage(127255212, -1.00.200.13.0);
                    
show_dhudmessage(0"%L^nПобедитель: %s"LANG_PLAYER"JBE_DHUD_ALL_GLOBAL_GAME_END"LANG_PLAYERg_szGlobalType[g_iGlobalType], szName);
                }
            }
        }
    }
Аватара пользователя
M1n1F3
 
Сообщения: 9
Зарегистрирован: 22 мар 2016, 15:12
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Re: Ошибка в плагине

Сообщение httpeace// » 13 фев 2020, 15:17

Ну раз понятно, вопросы излишне, логично??
iVictim, "%L %L", iVictim, "JBE_CHAT_PREFIX", iVictim
скромность украшает, но оставляет голодным
________________________________
Аватара пользователя
httpeace//
 
Сообщения: 179
Зарегистрирован: 01 окт 2013, 14:31
Откуда: Владивосток
Благодарил (а): 51 раз.
Поблагодарили: 15 раз.
Опыт программирования: Больше трех лет
Языки программирования: Lua

Re: Ошибка в плагине

Сообщение fl0wer » 13 фев 2020, 16:47

xbass13 писал(а):Добавить в начало функции
Код: Выделить всё
if(!is_user_connected(victim))
                return HAM_IGNORED
if(!is_user_connected(attacker))
                return HAM_IGNORED

виктима-то зачем?
Аватара пользователя
fl0wer
 
Сообщения: 1687
Зарегистрирован: 27 фев 2011, 21:35
Откуда: Россия, Ижевск
Благодарил (а): 240 раз.
Поблагодарили: 508 раз.
Опыт программирования: Больше трех лет
Языки программирования: C++, Java, PAWN

Re: Ошибка в плагине

Сообщение M1n1F3 » 14 фев 2020, 01:49

httpeace// писал(а):Ну раз понятно, вопросы излишне, логично??
iVictim, "%L %L", iVictim, "JBE_CHAT_PREFIX", iVictim

не излишни, если бы я знал скриптинг на уровень выше, я бы и сам исправил, а тут у людей попросил помощь, что бы поправили, а я бы потом посмотрел, почему так и разобрался бы.
Аватара пользователя
M1n1F3
 
Сообщения: 9
Зарегистрирован: 22 мар 2016, 15:12
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Re: Ошибка в плагине  [Решено]

Сообщение httpeace// » 14 фев 2020, 03:28

Я указал ошибку -_-
У тебя iVictim слишком много раз используется, вместо одного раза
скромность украшает, но оставляет голодным
________________________________
Аватара пользователя
httpeace//
 
Сообщения: 179
Зарегистрирован: 01 окт 2013, 14:31
Откуда: Владивосток
Благодарил (а): 51 раз.
Поблагодарили: 15 раз.
Опыт программирования: Больше трех лет
Языки программирования: Lua


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

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

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