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

jbe_core: ложится сервер когда выключаешь футбол

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

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

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

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

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

jbe_core: ложится сервер когда выключаешь футбол

Сообщение ADR1AN » 03 окт 2016, 22:47

Доброго времени суток, уважаемые форумчане! У меня появился проблема, которую как ни кручу, не могу найти решение, помогите пожалуйста. В общем суть такова: я включаю футбол и все прекрасно работает, можно устанавливать мяч, изменять счет и т.д., но как только выключаю футбол - сервер ложится и в консоле нет никаких ошибок по этому поводу. Помогите пожалуйста разобраться. :dntknw:

Исходник меню футбола:
Код: Выделить всё
Show_SoccerMenu(id)
{
    if(g_iDayMode != 1 && g_iDayMode != 4 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
    new szMenu[512], iKeys = (1<<0|1<<8|1<<9), iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_SOCCER_TITLE");
    if(g_bSoccerStatus)
    {
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[1] \w %L^n", id, "JBE_MENU_SOCCER_DISABLE"); //включение\выключение футбола.
        if(g_iSoccerBall)
        {
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[2] \w %L^n", id, "JBE_MENU_SOCCER_SUB_BALL");
        }
        else
        
{
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[2] \w %L^n", id, "JBE_MENU_SOCCER_ADD_BALL");
        }
        if(g_bSoccerGame)
        {    
            iLen 
+= formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[3] \w %L^n", id, "JBE_MENU_SOCCER_WHISTLE");
            iKeys |= (1<<2);
        }
        else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[3] \d %L^n", id, "JBE_MENU_SOCCER_WHISTLE");
        if(g_bSoccerGame)
        {
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[4] \d %L^n", id, "JBE_MENU_SOCCER_TEAMS");
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[5] \w %L^n^n", id, "JBE_MENU_SOCCER_SCORE");
            iKeys |= (1<<4);
        }
        else
        
{
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[4] \w %L^n", id, "JBE_MENU_SOCCER_TEAMS");
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[5] \d %L^n^n", id, "JBE_MENU_SOCCER_SCORE");
            iKeys |= (1<<5);
        }
        iKeys |= (1<<1);
    }
    else
    
{
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[1] \w %L^n", id, "JBE_MENU_SOCCER_ENABLE");
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[2] \d %L^n", id, "JBE_MENU_SOCCER_ADD_BALL");
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[3] \d %L^n", id, "JBE_MENU_SOCCER_WHISTLE");
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[4] \d %L^n", id, "JBE_MENU_SOCCER_TEAMS");
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[5] \d %L^n^n", id, "JBE_MENU_SOCCER_SCORE");
    }
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r9. \w %L", id, "JBE_MENU_BACK");
    formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r0. \w %L", id, "JBE_MENU_EXIT");
    return show_menu(id, iKeys, szMenu, -1, "Show_SoccerMenu");
}

public Handle_SoccerMenu(id, iKey)
{
    if(g_iDayMode != 1 && g_iDayMode != 4 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
    switch(iKey)
    {
        case 0:
        {
            if(g_bSoccerStatus) jbe_soccer_disable_all();
            else 
            
{
                jbe_soccer_game_start(id);
            }
        }
        case 1:
        {
            if(g_iSoccerBall) jbe_soccer_remove_ball();
            else 
            
{
                jbe_soccer_create_ball(id);
            }
        }
        case 2:
        {
            if(g_bSoccerGame && g_iSoccerBall)
            {
                emit_sound(id, CHAN_AUTO, "j_ekoplaycs/football/whistle.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
            }
        }
        case 3: if(!g_bSoccerGame) return Show_SoccerTeamMenu(id);
        case 4: if(g_bSoccerGame) return Show_SoccerScoreMenu(id);
        case 8: return Show_MiniGameMenu(id);
        case 9: return PLUGIN_HANDLED;
    }
    return Show_SoccerMenu(id);
}
 


Паблик jbe_soccer_game_start
Код: Выделить всё
jbe_soccer_game_start(pPlayer)
{
    g_bSoccerStatus = true;
    for(new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++) if(IsSetBit(g_iBitUserAlive, iPlayer) || iPlayer == g_iChiefId) set_task(1.0, "jbe_soccer_score_informer", iPlayer+TASK_SHOW_SOCCER_SCORE, _, _, "b");
    g_bSoccerGame = true;
    set_hudmessage(0, 255, 0, -1.0, 0.55, 0, 6.0, 3.0, 0.1, 0.2, -1);
    new szName[34];
    get_user_name(pPlayer, szName, charsmax(szName));
    show_hudmessage(0, "%s включил футбол", szName);


Паблик jbe_soccer_disable_all
Код: Выделить всё
jbe_soccer_disable_all()
{
    jbe_soccer_remove_ball();
    for(new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++)
    {
        if(IsSetBit(g_iBitClothingGuard, iPlayer) && IsSetBit(g_iBitClothingType, iPlayer)) jbe_set_user_model(iPlayer, g_szPlayerModel[GUARD]);
        else jbe_default_player_model(iPlayer);
        set_pdata_int(iPlayer, m_bloodColor, 247);
        new iActiveItem = get_pdata_cbase(iPlayer, m_pActiveItem);
        if(iActiveItem > 0)
        {
            ExecuteHamB(Ham_Item_Deploy, iActiveItem);
            UTIL_WeaponAnimation(iPlayer, 3);
        }
        if(g_bSoccerGame) remove_task(iPlayer+TASK_SHOW_SOCCER_SCORE);
    }
    if(g_bSoccerGame)
    {
        if(g_iChiefStatus == 1) remove_task(g_iChiefId+TASK_SHOW_SOCCER_SCORE);
    }
    g_iSoccerScore = {0, 0};
    g_bSoccerGame = false;
    g_bSoccerStatus = false;


Если нужны еще какие то данные, я могу скинуть

Добавлено спустя 1 час 47 минут 56 секунд:
Потом и кровью нашёл проблему, в паблике jbe_soccer_disable_all нужно было удалить установку моделей игрокам. Простите, думал, уже тупик :-[
Аватара пользователя
ADR1AN
 
Сообщения: 79
Зарегистрирован: 20 июл 2016, 14:57
Благодарил (а): 19 раз.
Поблагодарили: 2 раз.
Опыт программирования: Около года
Языки программирования: PAWN

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

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

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