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

Помогите включить бокс по своим мод JBE

Все вопросы по работе и настройке AMXX и его плагинов.

Модератор: liFe iS GoOD

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

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

Помогите включить бокс по своим мод JBE

Сообщение thezolotoi » 17 янв 2019, 13:09

Я столкнулся с проблемой и не могу её решить помогите
Код: Выделить всё
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <jbm_api>
#include <dhudmessage>

#pragma semicolon 1

#define SetBit(%0,%1) ((%0) |= (1 << (%1)))
#define ClearBit(%0,%1) ((%0) &= ~(1 << (%1)))
#define IsSetBit(%0,%1) ((%0) & (1 << (%1)))
#define InvertBit(%0,%1) ((%0) ^= (1 << (%1)))
#define IsNotSetBit(%0,%1) (~(%0) & (1 << (%1)))

#define MsgId_CurWeapon 66
#define MsgId_SayText 76
#define MsgId_ScreenFade 98
#define TASK_REGENERATION_HEALTH 756867
#define TASK_TEAM_SPIRIT 867456
#define jbm_is_user_valid(%0) (%0 && %0 <= g_iMaxPlayers)
#define TASK_AMBIENCE_SOUND 124567

new g_iDayModeSparta, bool:g_bDayModeStatus, g_iMaxPlayers, g_pSpriteWave, g_iCommanderId, g_iBitUserTeamSpirit,
HamHook:g_iHamHookForwards[16];
new const g_szHamHookEntityBlock[][] =
{
    "func_vehicle", // Управляемая машина
    "func_tracktrain", // Управляемый поезд
    "func_tank", // Управляемая пушка
    "game_player_hurt", // При активации наносит игроку повреждения
    "func_recharge", // Увеличение запаса бронижелета
    "func_healthcharger", // Увеличение процентов здоровья
    "game_player_equip", // Выдаёт оружие
    "player_weaponstrip", // Забирает всё оружие
    "trigger_hurt", // Наносит игроку повреждения
    "trigger_gravity", // Устанавливает игроку силу гравитации
    "armoury_entity", // Объект лежащий на карте, оружия, броня или гранаты
    "weaponbox", // Оружие выброшенное игроком
    "weapon_shield" // Щит
};

public plugin_precache()
{
    engfunc(EngFunc_PrecacheModel, "models/jb_engine/days_mode/sparta/v_sword_shield.mdl");
    engfunc(EngFunc_PrecacheModel, "models/jb_engine/days_mode/sparta/p_sword_shield.mdl");
    engfunc(EngFunc_PrecacheModel, "models/player/jbm_dm_sparta_b1/jbm_dm_sparta_b1.mdl");
    engfunc(EngFunc_PrecacheSound, "jb_engine/days_mode/sparta/team_spirit.wav");
    engfunc(EngFunc_PrecacheGeneric, "sound/jb_engine/days_mode/sparta/ambience.mp3");
    g_pSpriteWave = engfunc(EngFunc_PrecacheModel, "sprites/shockwave.spr");
}

public plugin_init()
{
    register_plugin("[JailMode] Sparta", "1.1", "Freedo.m");
    new i;
    for(= 0; i <= 7; i++) DisableHamForward(g_iHamHookForwards[i] = RegisterHam(Ham_Use, g_szHamHookEntityBlock[i], "HamHook_EntityBlock", 0));
    for(= 8; i <= 12; i++) DisableHamForward(g_iHamHookForwards[i] = RegisterHam(Ham_Touch, g_szHamHookEntityBlock[i], "HamHook_EntityBlock", 0));
    DisableHamForward(g_iHamHookForwards[13] = RegisterHam(Ham_Touch, "weapon_shield", "HamHook_Touch_Shield_Post", 1));
    DisableHamForward(g_iHamHookForwards[14] = RegisterHam(Ham_Killed, "player", "HamHook_Killed_Player_Post", 1));
    DisableHamForward(g_iHamHookForwards[15] = RegisterHam(Ham_TakeDamage, "player", "HamHook_TakeDamage_Player_Pre", 0));
    register_clcmd("drop", "ClCmd_Drop");
    g_iDayModeSparta = jbm_register_day_mode("JBM_DAY_MODE_MANIAK", 1, 120);
    g_iMaxPlayers = get_maxplayers();
}

public client_disconnect(id)
{
    if(g_iCommanderId == id)
    {
        if(task_exists(TASK_TEAM_SPIRIT))
        {
            remove_task(TASK_TEAM_SPIRIT);
            emit_sound(g_iCommanderId, CHAN_STATIC, "jb_engine/days_mode/sparta/team_spirit.wav", VOL_NORM, ATTN_NORM, SND_STOP, PITCH_NORM);
            for(new i = 1; i <= g_iMaxPlayers; i++)
            {
                if(IsSetBit(g_iBitUserTeamSpirit, i))
                {
                    ClearBit(g_iBitUserTeamSpirit, i);
                    fm_set_user_rendering(i, kRenderFxNone, 0.0, 0.0, 0.0, kRenderNormal, 0.0);
                    UTIL_ScreenFade(i, 0, 0, 0, 0, 0, 0, 0, 1);
                }
            }
        }
        g_iCommanderId = 0;
    }
}

public HamHook_EntityBlock() return HAM_SUPERCEDE;
public HamHook_Touch_Shield_Post(iEntity) set_pev(iEntity, pev_nextthink, get_gametime());
public HamHook_Killed_Player_Post(iVictim)
{
    if(jbm_get_user_team(iVictim) == 1)
    {
        if(g_iCommanderId == iVictim)
        {
            g_iCommanderId = 0;
            fm_set_user_rendering(iVictim, kRenderFxNone, 0.0, 0.0, 0.0, kRenderNormal, 0.0);
            UTIL_ScreenFade(iVictim, 0, 0, 0, 0, 0, 0, 0, 1);
        }
        if(IsSetBit(g_iBitUserTeamSpirit, iVictim))
        {
            ClearBit(g_iBitUserTeamSpirit, iVictim);
            fm_set_user_rendering(iVictim, kRenderFxNone, 0.0, 0.0, 0.0, kRenderNormal, 0.0);
            UTIL_ScreenFade(iVictim, 0, 0, 0, 0, 0, 0, 0, 1);
        }
    }
}

public HamHook_TakeDamage_Player_Pre(iVictim, iInflictor, iAttacker, Float:flDamage, iBitDamage)
{
    if(jbm_is_user_valid(iAttacker) && jbm_get_user_team(iVictim) == 2)
    {
        if(IsSetBit(g_iBitUserTeamSpirit, iAttacker)) SetHamParamFloat(4, flDamage * 4);
        else SetHamParamFloat(4, flDamage * 2);
    }
}

public ClCmd_Drop(id)
{
    if(g_bDayModeStatus)
    {
        if(g_iCommanderId == id && !task_exists(TASK_TEAM_SPIRIT))
        {
            new Float:fOrigin[3], Float:fOrigin2[3], Float:fDistance;
            pev(g_iCommanderId, pev_origin, fOrigin);
            for(new i = 1; i <= g_iMaxPlayers; i++)
            {
                if(g_iCommanderId != i && is_user_alive(i) && jbm_get_user_team(i) == 1)
                {
                    pev(i, pev_origin, fOrigin2);
                    fDistance = get_distance_f(fOrigin, fOrigin2);
                    if(fDistance < 250.0)
                    {
                        SetBit(g_iBitUserTeamSpirit, i);
                        fm_set_user_rendering(i, kRenderFxGlowShell, 212.0, 175.0, 55.0, kRenderNormal, 0.0);
                        UTIL_ScreenFade(i, 0, 0, 4, 212, 175, 55, 100, 1);
                    }
                }
            }
            CREATE_BEAMCYLINDER(fOrigin, 250, g_pSpriteWave, _, _, 5, 100, _, 212, 175, 55, 255, _);
            emit_sound(id, CHAN_STATIC, "jb_engine/days_mode/sparta/team_spirit.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
            set_task(11.0, "jbm_dm_team_spirit", TASK_TEAM_SPIRIT);
        }
        return PLUGIN_HANDLED;
    }
    return PLUGIN_CONTINUE;
}

public jbm_dm_team_spirit()
{
    for(new i = 1; i <= g_iMaxPlayers; i++)
    {
        if(IsSetBit(g_iBitUserTeamSpirit, i))
        {
            ClearBit(g_iBitUserTeamSpirit, i);
            fm_set_user_rendering(i, kRenderFxNone, 0.0, 0.0, 0.0, kRenderNormal, 0.0);
            UTIL_ScreenFade(i, 0, 0, 0, 0, 0, 0, 0, 1);
        }
    }
}

public jbm_day_mode_start(iDayMode, iAdmin)
{
    if(iDayMode == g_iDayModeSparta)
    {
        set_dhudmessage(0, 255, 0, -1.0, 0.4, 0, 0.0, 6.0, 0.5, 0.5); 
        show_dhudmessage
(0, "Сейчас играет песня:^n Tyler Bates - Come And Get Them");
        
        new iPlayers
[32], iNum, i;
        for(= 1; i <= g_iMaxPlayers; i++)
        {
            if(!is_user_alive(i)) continue;
            switch(jbm_get_user_team(i))
            {
                case 1:
                {
                    fm_strip_user_weapons(i);
                    iPlayers[iNum++] = i;
                    set_pev(i, pev_health, 50.0);
                    UTIL_SayText(i, "!y[!gJBM!y] Держитесь в месте с другими выжившими.");
                }
                case 2:
                {
                    fm_strip_user_weapons(i);
                    iPlayers[iNum++] = i;
                    set_pev(i, pev_health, 50.0);
                    UTIL_SayText(i, "!y[!gJBM!y] Держитесь в месте с другими выжившими.");
                }
            }
        }
        g_iCommanderId = iPlayers[random_num(0, iNum - 1)];
        set_pev(g_iCommanderId, pev_health, 350.0);
        fm_give_item(i, "weapon_knife");
        UTIL_SayText(g_iCommanderId, "!y[!gJBM!y] Вы выбраны маньяком , ваша задачя убить всех.");
        client_cmd(0, "mp3 play sound/jb_engine/days_mode/sparta/ambience.mp3");
        for(= 0; i < sizeof(g_iHamHookForwards); i++) EnableHamForward(g_iHamHookForwards[i]);
        g_bDayModeStatus = true;
    }
}

public jbm_day_mode_ended(iDayMode, iWinTeam)
{
    if(iDayMode == g_iDayModeSparta)
    {
        new i, iEntity;
        for(= 0; i < sizeof(g_iHamHookForwards); i++) DisableHamForward(g_iHamHookForwards[i]);
        for(= 1; i <= g_iMaxPlayers; i++)
        {
            if(is_user_alive(i))
            {
                switch(jbm_get_user_team(i))
                {
                    case 1:
                    {
                        if(!iWinTeam) ExecuteHamB(Ham_Killed, i, i, 0);
                        else fm_strip_user_weapons(i, 1);
                        if(g_iCommanderId == i || IsSetBit(g_iBitUserTeamSpirit, i))
                        {
                            ClearBit(g_iBitUserTeamSpirit, i);
                            fm_set_user_rendering(i, kRenderFxNone, 0.0, 0.0, 0.0, kRenderNormal, 0.0);
                            UTIL_ScreenFade(i, 0, 0, 0, 0, 0, 0, 0, 1);
                        }
                    }
                    case 2: fm_strip_user_weapons(i, 1);
                }
            }
        }
        remove_task(TASK_REGENERATION_HEALTH);
        if(task_exists(TASK_TEAM_SPIRIT))
        {
            remove_task(TASK_TEAM_SPIRIT);
            emit_sound(g_iCommanderId, CHAN_STATIC, "jb_engine/days_mode/sparta/team_spirit.wav", VOL_NORM, ATTN_NORM, SND_STOP, PITCH_NORM);
        }
        client_cmd(0, "mp3 stop");
        while((iEntity = engfunc(EngFunc_FindEntityByString, iEntity, "classname", "weapon_shield")))
        {
            if(!pev_valid(iEntity)) continue;
            if(jbm_is_user_valid(pev(iEntity, pev_owner))) set_pev(iEntity, pev_flags, pev(iEntity, pev_flags) | FL_KILLME);
        }
        g_bDayModeStatus = false;
    }
}

public jbm_dm_regeneration_health()
{
    new Float:fOrigin[3], Float:fOrigin2[3], Float:fDistance;
    if(g_iCommanderId) pev(g_iCommanderId, pev_origin, fOrigin);
    for(new i = 1, iHealth; i <= g_iMaxPlayers; i++)
    {
        if(g_iCommanderId != i && is_user_alive(i) && jbm_get_user_team(i) == 1)
        {
            if(g_iCommanderId)
            {
                pev(i, pev_origin, fOrigin2);
                fDistance = get_distance_f(fOrigin, fOrigin2);
                if(fDistance < 400.0)
                {
                    iHealth = get_user_health(i);
                    if(iHealth < 150)
                    {
                        iHealth += 5;
                        if(IsSetBit(g_iBitUserTeamSpirit, i)) iHealth += 5;
                        if(iHealth > 150) iHealth = 150;
                        set_pev(i, pev_health, float(iHealth));
                    }
                }
                else
                
{
                    iHealth = get_user_health(i);
                    if(iHealth > 1) set_pev(i, pev_health, iHealth - 1.0);
                    else ExecuteHamB(Ham_Killed, i, i, 0);
                }
            }
            else
            
{
                iHealth = get_user_health(i);
                if(iHealth > 1) set_pev(i, pev_health, iHealth - 1.0);
                else ExecuteHamB(Ham_Killed, i, i, 0);
            }
        }
    }
}

stock fm_give_item(id, const szItem[])
{
    new iEntity = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, szItem));
    if(!pev_valid(iEntity)) return 0;
    new Float:fOrigin[3];
    pev(id, pev_origin, fOrigin);
    set_pev(iEntity, pev_origin, fOrigin);
    set_pev(iEntity, pev_spawnflags, pev(iEntity, pev_spawnflags) | SF_NORESPAWN);
    dllfunc(DLLFunc_Spawn, iEntity);
    new iSolid = pev(iEntity, pev_solid);
    dllfunc(DLLFunc_Touch, iEntity, id);
    if(pev(iEntity, pev_solid) == iSolid)
    {
        engfunc(EngFunc_RemoveEntity, iEntity);
        return -1;
    }
    return iEntity;
}

stock fm_strip_user_weapons(id, iType = 0)
{
    new iEntity;
    static iszWeaponStrip;
    if(iszWeaponStrip || (iszWeaponStrip = engfunc(EngFunc_AllocString, "player_weaponstrip"))) iEntity = engfunc(EngFunc_CreateNamedEntity, iszWeaponStrip);
    if(!pev_valid(iEntity)) return 0;
    if(iType && get_user_weapon(id) != CSW_KNIFE)
    {
        engclient_cmd(id, "weapon_knife");
        message_begin(MSG_ONE_UNRELIABLE, MsgId_CurWeapon, _, id);
        write_byte(1);
        write_byte(CSW_KNIFE);
        write_byte(0);
        message_end();
    }
    dllfunc(DLLFunc_Spawn, iEntity);
    dllfunc(DLLFunc_Use, iEntity, id);
    engfunc(EngFunc_RemoveEntity, iEntity);
    return 1;
}

stock fm_set_user_rendering(id, iRenderFx, Float:flRed, Float:flGreen, Float:flBlue, iRenderMode,  Float:flRenderAmt)
{
    new Float:fRenderColor[3];
    fRenderColor[0] = flRed;
    fRenderColor[1] = flGreen;
    fRenderColor[2] = flBlue;
    set_pev(id, pev_renderfx, iRenderFx);
    set_pev(id, pev_rendercolor, fRenderColor);
    set_pev(id, pev_rendermode, iRenderMode);
    set_pev(id, pev_renderamt, flRenderAmt);
}

stock fm_set_user_bpammo(id, iWeapon, iAmount)
{
    new iOffset;
    switch(iWeapon)
    {
        case CSW_AWP: iOffset = 377; // ammo_338magnum
        case CSW_SCOUT, CSW_AK47, CSW_G3SG1: iOffset = 378; // ammo_762nato
        case CSW_M249: iOffset = 379; // ammo_556natobox
        case CSW_FAMAS, CSW_M4A1, CSW_AUG, CSW_SG550, CSW_GALI, CSW_SG552: iOffset = 380; // ammo_556nato
        case CSW_M3, CSW_XM1014: iOffset = 381; // ammo_buckshot
        case CSW_USP, CSW_UMP45, CSW_MAC10: iOffset = 382; // ammo_45acp
        case CSW_FIVESEVEN, CSW_P90: iOffset = 383; // ammo_57mm
        case CSW_DEAGLE: iOffset = 384; // ammo_50ae
        case CSW_P228: iOffset = 385; // ammo_357sig
        case CSW_GLOCK18, CSW_MP5NAVY, CSW_TMP, CSW_ELITE: iOffset = 386; // ammo_9mm
        case CSW_FLASHBANG: iOffset = 387;
        case CSW_HEGRENADE: iOffset = 388;
        case CSW_SMOKEGRENADE: iOffset = 389;
        case CSW_C4: iOffset = 390;
        default: return;
    }
    set_pdata_int(id, iOffset, iAmount);
}

stock UTIL_ScreenFade(id, iDuration, iHoldTime, iFlags, iRed, iGreen, iBlue, iAlpha, iReliable = 0)
{
    switch(id)
    {
        case 0:
        {
            message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, MsgId_ScreenFade);
            write_short(iDuration);
            write_short(iHoldTime);
            write_short(iFlags);
            write_byte(iRed);
            write_byte(iGreen);
            write_byte(iBlue);
            write_byte(iAlpha);
            message_end();
        }
        default:
        {
            message_begin(iReliable ? MSG_ONE : MSG_ONE_UNRELIABLE, MsgId_ScreenFade, _, id);
            write_short(iDuration);
            write_short(iHoldTime);
            write_short(iFlags);
            write_byte(iRed);
            write_byte(iGreen);
            write_byte(iBlue);
            write_byte(iAlpha);
            message_end();
        }
    }
}

stock CREATE_BEAMCYLINDER(Float:fOrigin[3], iRadius, pSprite, iStartFrame = 0, iFrameRate = 0, iLife, iWidth, iAmplitude = 0, iRed, iGreen, iBlue, iBrightness, iScrollSpeed = 0)
{
    engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, fOrigin, 0);
    write_byte(TE_BEAMCYLINDER);
    engfunc(EngFunc_WriteCoord, fOrigin[0]);
    engfunc(EngFunc_WriteCoord, fOrigin[1]);
    engfunc(EngFunc_WriteCoord, fOrigin[2]);
    engfunc(EngFunc_WriteCoord, fOrigin[0]);
    engfunc(EngFunc_WriteCoord, fOrigin[1]);
    engfunc(EngFunc_WriteCoord, fOrigin[2] + 16.0 + iRadius * 2);
    write_short(pSprite);
    write_byte(iStartFrame);
    write_byte(iFrameRate); // 0.1's
    write_byte(iLife); // 0.1's
    write_byte(iWidth);
    write_byte(iAmplitude); // 0.01's
    write_byte(iRed);
    write_byte(iGreen);
    write_byte(iBlue);
    write_byte(iBrightness);
    write_byte(iScrollSpeed); // 0.1's
    message_end();
}

stock UTIL_SayText(id, const szMessage[], any:...)
{
    new szBuffer[190];
    if(numargs() > 2) vformat(szBuffer, charsmax(szBuffer), szMessage, 3);
    else copy(szBuffer, charsmax(szBuffer), szMessage);
    while(replace(szBuffer, charsmax(szBuffer), "!y", "^1")) {}
    while(replace(szBuffer, charsmax(szBuffer), "!t", "^3")) {}
    while(replace(szBuffer, charsmax(szBuffer), "!g", "^4")) {}
    switch(id)
    {
        case 0:
        {
            for(new i = 1; i <= g_iMaxPlayers; i++)
            {
                if(!is_user_connected(i)) continue;
                message_begin(MSG_ONE_UNRELIABLE, MsgId_SayText, _, i);
                write_byte(i);
                write_string(szBuffer);
                message_end();
            }
        }
        default:
        {
            message_begin(MSG_ONE_UNRELIABLE, MsgId_SayText, _, id);
            write_byte(id);
            write_string(szBuffer);
            message_end();
        }
    }
}


Требуется включить в данной игре бокс . Заранее благодорю .
Аватара пользователя
thezolotoi
 
Сообщения: 75
Зарегистрирован: 17 янв 2019, 13:04
Благодарил (а): 4 раз.
Поблагодарили: 4 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: AMXX / PAWN

Вернуться в Вопросы по AMXX и его плагинам

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

cron