Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

No Fall Death

, Только для флага Reservation
Статус пользователя svh0st
сообщение 9.1.2012, 19:26
Сообщение #1


Стаж: 16 лет

Сообщений: 275
Благодарностей: 21
Полезность: 81

Помогите сделать плагин только для флага Reservation
Что бы падать и не розбиваться могли только люди с флагов ADMIN_RESERVATION

Код
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

// ------------------------------------
new const PLUGIN[] =  "No Fall Death"
#define VERSION          "1.0"
// ------------------------------------

#define RANDOM_MIN_VALUE        1.0
#define REGENERATE_MIN_VALUE    1.0

new Float: Health[ 33 ];

new toggle_plugin, toggle_interval, toggle_amount;
new p_plugin, p_int, p_amount;
new g_msghealth;

public plugin_init()
{
        register_plugin( PLUGIN, VERSION, "anakin_cstrike" );
      
        register_logevent( "roundstart", 2, "1=Round_Start" );
        RegisterHam( Ham_TakeDamage, "player", "ham_damage" );
      
        toggle_plugin = register_cvar( "nfd_plugin", "1" );
        toggle_interval = register_cvar( "nfd_interval", "5" );
        toggle_amount = register_cvar( "ndf_amount", "3" );
      
        g_msghealth = get_user_msgid( "Health" );
}
public roundstart()
{
        p_plugin = get_pcvar_num( toggle_plugin );
        p_int = get_pcvar_num( toggle_interval );
        p_amount = get_pcvar_num( toggle_amount );
}

public ham_damage( this, inflictor, attacker, Float:damage, damagebits )
{
        if( !p_plugin )
                return FMRES_IGNORED;
        if( !( damagebits & DMG_FALL ) )
                return HAM_IGNORED;
      
        if( task_exists( this+123 ) )
                remove_task( this+123 );      
      
        pev( this, pev_health, Health[ this ] );      
      
        switch( p_plugin )
        {
                case 1: return HAM_SUPERCEDE;
                case 2:
                {
                        if( Check( damage, Health[ this ] ) )
                        {
                                SetHealth( this, random_float( RANDOM_MIN_VALUE, Health[ this ] ) );
                                return HAM_SUPERCEDE;
                        }
                }
                case 3:
                {
                        if( Check( damage, Health[ this ] ) )
                        {
                                if( task_exists( this+123 ) )
                                        remove_task( this+123 );
              
                                SetHealth( this, REGENERATE_MIN_VALUE );
                                set_task( float( p_int ), "give", this+123, _, _, "b" );
              
                                return HAM_SUPERCEDE;
                        }
                }
        }
      
        return HAM_IGNORED;
}

public give( index )
{
        index -= 123;
      
        new Float: hp;
        pev( index, pev_health, hp );
      
        new Float: total = hp + float( p_amount );
        SetHealth( index, total );
              
        if( hp >= Health[ index ] )
        {
                SetHealth( index, Health[ index ] );
                remove_task( index );
                return 0;
        }
      
        return 0;
}

SetHealth( index, Float: hp )
{
        message_begin( MSG_ONE, g_msghealth, {0,0,0}, index );
        write_byte( floatround( hp ) );
        message_end();
      
        set_pev( index, pev_health, hp );
}

bool: Check( Float:value, Float:compare )
        return ( value >= compare ) ? true : false;
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Grape Fruit
сообщение 9.1.2012, 20:22
Сообщение #2


Стаж: 16 лет

Сообщений: 505
Благодарностей: 286
Полезность: 802

код
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

// ------------------------------------
new const PLUGIN[] = "No Fall Death"
#define VERSION "1.0"
// ------------------------------------

#define RANDOM_MIN_VALUE 1.0
#define REGENERATE_MIN_VALUE 1.0

new Float: Health[ 33 ];

const PermissionFlag = ADMIN_RESERVATION
new HasPermissions[32]

new toggle_plugin, toggle_interval, toggle_amount;
new p_plugin, p_int, p_amount;
new g_msghealth;

public plugin_init()
{
register_plugin( PLUGIN, VERSION, "anakin_cstrike" );

register_logevent( "roundstart", 2, "1=Round_Start" );
RegisterHam( Ham_TakeDamage, "player", "ham_damage" );

toggle_plugin = register_cvar( "nfd_plugin", "1" );
toggle_interval = register_cvar( "nfd_interval", "5" );
toggle_amount = register_cvar( "ndf_amount", "3" );

g_msghealth = get_user_msgid( "Health" );
}
public roundstart()
{
p_plugin = get_pcvar_num( toggle_plugin );
p_int = get_pcvar_num( toggle_interval );
p_amount = get_pcvar_num( toggle_amount );
}

public client_authorized(id)
{
HasPermissions[id] = get_user_flags(id) & PermissionFlag
}

public ham_damage( this, inflictor, attacker, Float:damage, damagebits )
{
if( !p_plugin )
return FMRES_IGNORED;
if (!HasPermissions[this])
return HAM_IGNORED;
if( !( damagebits & DMG_FALL ) )
return HAM_IGNORED;

if( task_exists( this+123 ) )
remove_task( this+123 );

pev( this, pev_health, Health[ this ] );

switch( p_plugin )
{
case 1: return HAM_SUPERCEDE;
case 2:
{
if( Check( damage, Health[ this ] ) )
{
SetHealth( this, random_float( RANDOM_MIN_VALUE, Health[ this ] ) );
return HAM_SUPERCEDE;
}
}
case 3:
{
if( Check( damage, Health[ this ] ) )
{
if( task_exists( this+123 ) )
remove_task( this+123 );

SetHealth( this, REGENERATE_MIN_VALUE );
set_task( float( p_int ), "give", this+123, _, _, "b" );

return HAM_SUPERCEDE;
}
}
}

return HAM_IGNORED;
}

public give( index )
{
index -= 123;

new Float: hp;
pev( index, pev_health, hp );

new Float: total = hp + float( p_amount );
SetHealth( index, total );

if( hp >= Health[ index ] )
{
SetHealth( index, Health[ index ] );
remove_task( index );
return 0;
}

return 0;
}

SetHealth( index, Float: hp )
{
message_begin( MSG_ONE, g_msghealth, {0,0,0}, index );
write_byte( floatround( hp ) );
message_end();

set_pev( index, pev_health, hp );
}

bool: Check( Float:value, Float:compare )
return ( value >= compare ) ? true : false;


Аналогично предыдущему, если в том нигде не ошибся.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя svh0st
сообщение 10.1.2012, 10:12
Сообщение #3


Стаж: 16 лет

Сообщений: 275
Благодарностей: 21
Полезность: 81

тот норма пашет, но я сюда писал тоже, но я не знаю или правеельно. там работало для всех
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Grape Fruit
сообщение 10.1.2012, 13:11
Сообщение #4


Стаж: 16 лет

Сообщений: 505
Благодарностей: 286
Полезность: 802

svhost,
Ничего в итоге не понял pardon.gif

Работают оба как ты и просил или нет?

Поправить быстро.

Отредактировал: alesned, - 10.1.2012, 13:15
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя svh0st
сообщение 10.1.2012, 15:18
Сообщение #5


Стаж: 16 лет

Сообщений: 275
Благодарностей: 21
Полезность: 81

Ура работает спасибо огромное

Отредактировал: svhost, - 10.1.2012, 15:25
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя svh0st
сообщение 10.1.2012, 18:52
Сообщение #6


Стаж: 16 лет

Сообщений: 275
Благодарностей: 21
Полезность: 81

Теперь что ты добавил?
Вот это только всюда
И скажи куда надо правельно добавлять. А то я ж надоем тебе :biggrin: а хочу хороший вип сделать pardon.gif
Код
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

// ------------------------------------
new const PLUGIN[] = "No Fall Death"
#define VERSION "1.0"
// ------------------------------------

#define RANDOM_MIN_VALUE 1.0
#define REGENERATE_MIN_VALUE 1.0

new Float: Health[ 33 ];

const PermissionFlag = ADMIN_RESERVATION
new HasPermissions[32]
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Grape Fruit
сообщение 10.1.2012, 20:33
Сообщение #7


Стаж: 16 лет

Сообщений: 505
Благодарностей: 286
Полезность: 802

Код
if (!HasPermissions[this])
return HAM_IGNORED;


Это проверка. Но она разная в зависимости от плагина. Если логику кода не понимаешь, воткнуть правильно не сможешь.

Есчо это.

Код
public client_authorized(id)
HasPermissions[id] = get_user_flags(id) & PermissionFlag
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя svh0st
сообщение 10.1.2012, 20:36
Сообщение #8


Стаж: 16 лет

Сообщений: 275
Благодарностей: 21
Полезность: 81

Мдя спасибо я не шарю нечего... Буду обращаться сюда

Отредактировал: svhost, - 10.1.2012, 20:54
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: