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

Alive When Dead: error 088

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

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

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

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

Alive When Dead: error 088

Сообщение Enterval » 17 авг 2018, 01:02

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

#define VERSION "1.1"

new const g_szPluginPrefix[] = "[AMXX]";

#pragma semicolon 1;

#define IsPlayer(%1)            (1 <= %1 <= g_iMaxPlayers)

#define SB_ATTRIB_DEAD          1<<0

// --| Macros
#define get_bit(%1,%2)         ( %1 &   1 << ( %2 & 31 ) )
#define set_bit(%1,%2)         %1 |=  ( 1 << ( %2 & 31 ) )
#define clear_bit(%1,%2)    %1 &= ~( 1 << ( %2 & 31 ) )

#define GetPlayerHullSize(%1)  ( ( pev ( %1, pev_flags ) & FL_DUCKING ) ? HULL_HEAD : HULL_HUMAN )
//Credits to Emp`
#define LoopThroughAlivePlayers(%1) new %1;while( (%1=NextAlivePlayer(%1)) )

// --| The first search distance for finding a free location in the map.
#define START_DISTANCE    32   
// --| How many times to search in an area for a free space.
#define MAX_ATTEMPTS      128  

// --| Just for readability.
enum Coord_e Float:xFloat:yFloat:};

new 
g_iMaxPlayers;
new 
g_iMsgSayText;
new 
g_iItemsMenu;
new 
g_iLargestPlayer;
new 
g_iDeathFlag;
new 
g_iScoreBoard;

new 
g_bUserDead;
new 
g_bUserReady;
new 
g_bIsNoMore;
new 
g_bHasMenuOpen;
new 
g_bGravity;
new 
g_bNoClip;
new 
g_bSpeed;

new 
bool:g_bRoundEnd;

new 
Float:vecOrigin[3];

public 
plugin_init()
{
    
register_plugin("Alive When Dead"VERSION"Pastout!");
    
register_cvar("author""Pastout!"FCVAR_SPONLY);
    
register_cvar("version"VERSIONFCVAR_SPONLY);
    
    
RegisterHam(Ham_Killed"player""Ham_PlayerKilled_Post"1);
    
RegisterHam(Ham_Spawn"player""Ham_PlayerSpawn_Post"1);
    
RegisterHam(Ham_Player_PreThink"player""Ham_CBasePlayer_PreThink_Post"1);
    
    
register_forward(FM_AddToFullPack"Fwd_AddToFullPack_Post"1);
    
    
// --| Variables
    
g_iMaxPlayers get_maxplayers();
    
g_iMsgSayText get_user_msgid("SayText");
    
g_iScoreBoard get_user_msgid("ScoreAttrib");
    
    
register_message(g_iScoreBoard"MsgScoreBoard");
    
    
// --| Client Commands
    
new command[] = "CmdMainMenu";
    
register_clcmd("say /fs"command);
    
register_clcmd("say_team /fs"command);
    
    
register_event("HLTV""ev_NewRound""a""1=0""2=0");
    
register_logevent("ev_RoundEnd",2,"1=Round_End");
}

public 
ev_NewRound()
    
g_bRoundEnd false;
    
public 
ev_RoundEnd()
    
g_bRoundEnd true;

public 
client_disconnect(id)
{
    
Reset_all(id);
    if( 
g_iLargestPlayer == id )
    {
        
g_iLargestPlayer 0;
        for( new 
id 10i-- )
        {
            
g_iLargestPlayer i;
            break;
        }
    }
}

public 
client_putinserver(id)
{
    
Reset_all(id);
    
g_iLargestPlayer maxg_iLargestPlayerid );
}

public 
MsgScoreBoard()
{
    new 
id get_msg_arg_int(1);
    
    if(
get_bit(g_bUserDeadid))
        
set_msg_arg_int(2ARG_BYTESB_ATTRIB_DEAD);
}

public 
Ham_PlayerKilled_Post(victimattackershouldgib)
{    
    if (!
is_user_connected(victim))
        return 
HAM_IGNORED;
    
    
// --| Update the scoreboard
    
new szDeaths;
    
szDeaths cs_get_user_deaths(victim);
    
cs_set_user_deaths(victimszDeaths);

    if(
is_user_connected(attacker))
    {
        
szDeaths cs_get_user_deaths(attacker);
        
cs_set_user_deaths(attackerszDeaths);
    }
    
    if(!
g_bRoundEnd)
    {
        if(
victim == attacker)
        {
            if (
get_bit(g_bUserDeadvictim))
            {
                
clear_bit(g_bGravityvictim);
                
clear_bit(g_bNoClipvictim);
                
clear_bit(g_bSpeedvictim);
                if (
get_bit(g_bHasMenuOpenvictim))
                {
                    if(
player_menu_info(victimg_iItemsMenug_iItemsMenu))
                    {
                        
menu_cancel(victim);
                        
client_cmd(victim"slot1");
                    }
                    
clear_bit(g_bHasMenuOpenvictim);
                }    
            }
        }
        else
        {
            if(!
get_bit(g_bUserDeadvictim) && !get_bit(g_bIsNoMorevictim))
            {
                
                
entity_get_vector(victimEV_VEC_originvecOrigin);
                
                if(
GetPlayerHullSize(victim) == HULL_HEAD)
                    
vecOrigin[2] += 15;
                else
                    
vecOrigin[2] += 30;
                    
                
set_task(2.0"RespawnPlayer"victim);
            }
        }
    }
    
    return 
HAM_IGNORED;
}

public 
RespawnPlayer(victim)
{
    if(!
g_bRoundEnd)
    {
        
set_bit(g_iDeathFlagvictim);    
        
        
set_bit(g_bUserDeadvictim);
        
clear_bit(g_bUserReadyvictim);
        
        
// --| Respawn Player at Deadbody
        
ExecuteHamB(Ham_CS_RoundRespawnvictim);
        
        
entity_set_vector(victimEV_VEC_originvecOrigin);
        
        
ClientCommand_UnStuck(victim);
        
        
// --| Show Dead Menu Items
        
CmdMainMenu(victim);
    
        
// --| Set The Victims Flags to DEAD_RESPAWNABLE
        
entity_set_int(victimEV_INT_deadflagDEAD_RESPAWNABLE);
    }
}

public 
Ham_PlayerSpawn_Post(id)

    if (!
is_user_alive(id))
        return 
HAM_IGNORED;        
        
    if (
get_bit(g_iDeathFlagid))
        
entity_set_int(idEV_INT_deadflagDEAD_RESPAWNABLE);    

    if (
get_bit(g_bUserReadyid))
    {
        
clear_bit(g_bUserDeadid);
        
clear_bit(g_bIsNoMoreid);
        
clear_bit(g_bGravityid);
        
clear_bit(g_bNoClipid);
        
clear_bit(g_bSpeedid);
        
message_begin(MSG_ONE_UNRELIABLEg_iScoreBoard_id);
        
write_byte(id);
        
write_byte(0);
        
message_end();
        if (
get_bit(g_bHasMenuOpenid))
        {
            if(
player_menu_info(idg_iItemsMenug_iItemsMenu))
            {
                
menu_cancel(id);
                
client_cmd(id"slot1");
            }
            
clear_bit(g_bHasMenuOpenid);
        }
    }

    
set_bit(g_bUserReadyid);
    
clear_bit(g_iDeathFlagid);
    return 
HAM_IGNORED;
}

public 
Fwd_AddToFullPack_Post(eseiEntidhostflagsplayerpSet)
{
    if( 
player && id != iEnt )
    {
        if(
get_bit(g_bUserDeadid))
        {
            
set_es(esES_SolidSOLID_NOT);
            if( 
get_bit(g_bUserDeadiEnt) )
            {
                
set_es(esES_RenderModekRenderTransAdd);
                
set_es(esES_RenderAmt80);
                
set_es(esES_RenderColor000);
                
set_es(esES_RenderFxkRenderFxDeadPlayer);
            }
        }
        else if(
get_bit(g_bUserDeadiEnt) )
        {
            
set_es(esES_SolidSOLID_NOT);
            
set_es(esES_Effectsget_es(esES_Effects) | EF_NODRAW);
            
set_es(esES_OriginFloat:{99999.9,99999.9,99999.9});
        }
    }
}

public 
Ham_CBasePlayer_PreThink_Post(id)
{
    
// --| Is alive, ignore.
    
if( !get_bit(g_bUserDeadid) )
        return;
    
    if(
get_bit(g_bUserDeadid))
        
set_pevidpev_solidSOLID_NOT );
        
    
LoopThroughAlivePlayersiPlayer )
        if( 
id != iPlayer )
            
set_peviPlayerpev_solidSOLID_NOT );
}

public 
client_PostThink(id)
{
    
// --| Is alive, ignore.
    
if( !get_bit(g_bUserDeadid) )
        return;
        
    if(
get_bit(g_bUserDeadid))
        
set_pevidpev_solidSOLID_SLIDEBOX );

    
LoopThroughAlivePlayersiPlayer )
        if( 
id != iPlayer )
            
set_peviPlayerpev_solidSOLID_SLIDEBOX );
}

public 
ClientCommand_UnStuck( const id )
{
    new 
i_Value;

    if ( ( 
i_Value UTIL_UnstuckPlayer idSTART_DISTANCEMAX_ATTEMPTS ) ) != )
        switch ( 
i_Value )
        {
            case 
0ColorPrint(id"Couldn't find a free spot to move you too");
            case -
1ColorPrint(id"You cannot free yourself as alive player");
        }

    return 
PLUGIN_CONTINUE;
}


UTIL_UnstuckPlayer( const id, const i_StartDistance, const i_MaxAttempts )
{
    
// --| Is alive, ignore.
    
if ( !get_bit(g_bUserDeadid) )  return -1;
    
    static 
Float:vf_OriginalOriginCoord_e ], Float:vf_NewOriginCoord_e ];
    static 
i_Attemptsi_Distance;
    
    
// --| Get the current player's origin.
    
pev idpev_originvf_OriginalOrigin );
    
    
i_Distance i_StartDistance;

    while ( 
i_Distance 1000 )
    {
        
i_Attempts i_MaxAttempts;
    
        while ( 
i_Attempts-- )
        {
            
vf_NewOrigin] = random_float vf_OriginalOrigin] - i_Distancevf_OriginalOrigin] + i_Distance );
            
vf_NewOrigin] = random_float vf_OriginalOrigin] - i_Distancevf_OriginalOrigin] + i_Distance );
            
vf_NewOrigin] = random_float vf_OriginalOrigin] - i_Distancevf_OriginalOrigin] + i_Distance );
        
            
engfunc EngFunc_TraceHullvf_NewOriginvf_NewOriginDONT_IGNORE_MONSTERSGetPlayerHullSize id ), id);
        
            
// --| Free space found.
            
if ( get_tr2 0TR_InOpen ) && !get_tr2 0TR_AllSolid ) && !get_tr2 0TR_StartSolid ) )
            {
                
// --| Set the new origin .
                
engfunc EngFunc_SetOriginidvf_NewOrigin );
                return 
1;
            }
        }
    
        
i_Distance += i_StartDistance;
    }

    
// --| Could not be found.
    
return 0;
}  

NextAlivePlayer(id)
{
    do 
id++;
    while( 
id <= g_iLargestPlayer && !is_user_aliveid ) );
    return ( 
id <= g_iLargestPlayer ) ? id 0;
}

public 
CmdMainMenu(id)
{
    if(!
get_bit(g_bUserDeadid) && is_user_alive(id))
    {
        
ColorPrint(id"Sorry you have to be^3 dead^1 to view this menu");
        return 
PLUGIN_HANDLED;
    }
        
    
set_bit(g_bHasMenuOpenid);
    
    
// --| Menu Title
    
new szText[777 char];
    
formatex(szTextcharsmax(szText), "\rFree surf меню");
    
    
// --| Create the menu
    
g_iItemsMenu menu_create(szText"StartMenu_Handle");
    
    
formatex(szTextcharsmax(szText), "Гравитация: %s"get_bit(g_bGravityid) ? "\r[\yВкл\r]" "\rВыкл" );
    
menu_additem(g_iItemsMenuszText"1"0);
    
    
formatex(szTextcharsmax(szText), "Нет преград: %s"get_bit(g_bNoClipid) ? "\r[\yВкл\r]" "\r[\yВыкл\r]" );
    
menu_additem(g_iItemsMenuszText"2"0);
    
    
formatex(szTextcharsmax(szText), "Скорость: %s"get_bit(g_bSpeedid) ? "\r[\yВкл\r]" "\r[\yВыкл\r]" );
    
menu_additem(g_iItemsMenuszText"3"0);
    
    
formatex(szTextcharsmax(szText), "Застрял? Жми сюда!^n^n");
    
menu_additem(g_iItemsMenuszText"4"0);
    
    
formatex(szTextcharsmax(szText), "\y%s? \rЖми сюда!"get_bit(g_bUserDeadid) ? "Надоело быть призраком?" "Хочешь вернуться в мир мертвых?" );
    
menu_additem(g_iItemsMenuszText"5"0);
    
    
menu_display(idg_iItemsMenu);
    
    return 
PLUGIN_HANDLED;
}

public 
StartMenu_Handle(idg_iItemsMenuitem)
{
    if(
item == MENU_EXIT)
    {
        
clear_bit(g_bHasMenuOpenid);
        
menu_destroy(g_iItemsMenu);
        return 
PLUGIN_HANDLED;
    }
    
    if(!
get_bit(g_bUserDeadid) && is_user_alive(id))
    {
        
clear_bit(g_bHasMenuOpenid);
        
ColorPrint(id"Sorry you have to be dead to view this menu");
        return 
PLUGIN_HANDLED;
    }
    
    new 
data[6], iName[64];
    new 
accesscallback;
    
    
menu_item_getinfo(g_iItemsMenuitemaccessdata5iName63callback);
    
    new 
key str_to_num(data);
    switch(
key)
    {
        case 
1:{ ToggleGravity(id);CmdMainMenu(id); }
        case 
2:{ ToggleNoClip(id);CmdMainMenu(id); }
        case 
3:{ ToggleSpeed(id);CmdMainMenu(id); }
        case 
4:{ ClientCommand_UnStuck(id);CmdMainMenu(id); }
        case 
5:{ ToggleGhost(id);CmdMainMenu(id); }
    }
    return 
PLUGIN_HANDLED;
}

ToggleGravity(id)
{
    
// --| Make sure player is dead
    
if (get_bit(g_bUserDeadid))
        
// --| If player has gravity
        
if (get_bit(g_bGravityid))
        {
            
// --| Turn off gravity for player
            
set_user_gravity(id1.0);
            
clear_bit(g_bGravityid);
        }
        else
        {
            
// --| Turn on gravity for player
            
set_user_gravity(id0.5);
            
set_bit(g_bGravityid);
        }
}

ToggleNoClip(id)
{
    
// --| Make sure player is dead
    
if (get_bit(g_bUserDeadid))
        
// --| If player has noclip
        
if (get_user_noclip(id))
        {
            
// --| Turn off noclip for player
            
set_user_noclip(id0);
            
clear_bit(g_bNoClipid);
            
// --| Check if player is stuck
            
ClientCommand_UnStuck(id);
        }
        else
        {
            
// --| Turn on noclip for player
            
set_user_noclip(id1);
            
set_bit(g_bNoClipid);
        }
}

ToggleSpeed(id)
{
    
// --| Make sure player is dead
    
if (get_bit(g_bUserDeadid))
        
// --| If player has speed
        
if (get_bit(g_bSpeedid))
        {
            
// --| Turn off speed for player
            
set_user_maxspeed(id250.0);
            
clear_bit(g_bSpeedid);
        }
        else
        {
            
// --| Turn on speed for player
            
set_user_maxspeed(id600.0);
            
set_bit(g_bSpeedid);
        }
}
        
ToggleGhost(id)
{
    if (
get_bit(g_bUserDeadid))
    {
        
clear_bit(g_bUserDeadid);
        
set_bit(g_bIsNoMoreid);
        new 
szFragsszDeaths;
        
szFrags get_user_frags(id);
        
szDeaths cs_get_user_deaths(id);
        
set_user_frags(idszFrags+1);
        
cs_set_user_deaths(idszDeaths-1);
        
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET);
        
client_cmd(id"kill");
        
set_task(2.0"Allow_Reset"id);
    }
    else if(!
get_bit(g_bIsNoMoreid))
        
RespawnPlayer(id);
}

public 
Allow_Reset(id)
    
clear_bit(g_bIsNoMoreid);

public 
Reset_all(id)
{     
    
clear_bit(g_iDeathFlagid);
    
clear_bit(g_bUserDeadid);
    
clear_bit(g_bUserReadyid);
    
clear_bit(g_bIsNoMoreid);
    
clear_bit(g_bHasMenuOpenid);
    
clear_bit(g_bGravityid);
    
clear_bit(g_bNoClipid);
    
clear_bit(g_bSpeedid);
}

ColorPrint(id, const Msg[], {FloatSqlResult,_}:...) {
    new 
Buffer[190], Buffer2[192];
    
formatex(Buffer2sizeof(Buffer2)-1"^4%s^1 %s"g_szPluginPrefixMsg);
    
vformat(Buffersizeof(Buffer)-1Buffer23);

    if (!
id) {
        for (new 
1<= g_iMaxPlayersi++) {
            if (!
is_user_connected(i))
                continue;

            
message_begin(MSG_ONE_UNRELIABLEg_iMsgSayText,_i);
            
write_byte(i);
            
write_string(Buffer);
            
message_end();
        }
    }
    else {
        if (!
is_user_connected(id))
            return;

        
message_begin(MSG_ONE_UNRELIABLEg_iMsgSayText,_id);
        
write_byte(id);
        
write_string(Buffer);
        
message_end();
    }
    





    
RegisterHam(Ham_Killed"player""Ham_PlayerKilled"false);
}

public 
Ham_PlayerKilled(iVictim)
{
    
StartMenu_Handle(iVictim);

Неинформативное название темы (исправлено) // Subb98
Аватара пользователя
Enterval
 
Сообщения: 1
Зарегистрирован: 17 авг 2018, 00:51
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Я ничего не знаю

Re: Не компилируется меню , пожалуйста помогите

Сообщение Subb98 » 17 авг 2018, 15:58

Enterval, добрый день. Пожалуйста, измените название темы на информативное, в соответствии с Вы должны зарегистрироваться, чтобы видеть ссылки.. Если вы не сделаете этого в течение суток, я сделаю это сам, однако в этом случае вам будет выдано предупреждение в профиль.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP


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

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

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