Переделать плагин

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
4
Реакции
0
Здравствуйте.Нужно сделать плагин Screen_Fade только для игроков с флагом "t"


Код:
// *************************************************************************************//
// Плагин загружен с www.neugomon.ru //
// Автор: Neygomon [ https://neugomon.ru/members/1/ ] //
// Официальная тема поддержки: https://neugomon.ru/threads/123/ //
// При копировании материала ссылка на сайт www.neugomon.ru ОБЯЗАТЕЛЬНА! //
// *************************************************************************************//

/*
neygomon created ^_^ | http://www.neugomon.ru
*/

#include <amxmodx>

new g_ScreenMsg;

public plugin_init()
{
register_plugin("Screen Fade", "0.1", "neygomon");
register_event("DeathMsg", "eDeathMsg", "a", "1>0");
g_ScreenMsg = get_user_msgid("ScreenFade");
}

public eDeathMsg()
{
static id;
if((id = read_data(1)) == read_data(2))
return;

message_begin(MSG_ONE, g_ScreenMsg, {0, 0, 0}, id);
write_short(1<<10);
write_short(1<<10);
write_short(0x0000);
write_byte(0);
write_byte(0); // R
write_byte(200); // G
write_byte(75); // B
message_end();
}
 

Вложения

Последнее редактирование модератором:
Сообщения
342
Реакции
65
Помог
6 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
в cmdaccess поставить не варик?
 
Сообщения
443
Реакции
319
Помог
13 раз(а)
mb tak

Код:
// *************************************************************************************//
// Плагин загружен с www.neugomon.ru //
// Автор: Neygomon [ https://neugomon.ru/members/1/ ] //
// Официальная тема поддержки: https://neugomon.ru/threads/123/ //
// При копировании материала ссылка на сайт www.neugomon.ru ОБЯЗАТЕЛЬНА! //
// *************************************************************************************//

/*
neygomon created ^_^ | http://www.neugomon.ru
*/

#include <amxmodx>

new g_ScreenMsg;

public plugin_init()
{
register_plugin("Screen Fade", "0.1", "neygomon");
register_event("DeathMsg", "eDeathMsg", "a", "1>0");
g_ScreenMsg = get_user_msgid("ScreenFade");
}

public eDeathMsg()
{
static id;id = read_data(1);
if(id != read_data(2) && get_user_flags(id) & ADMIN_LEVEL_H){
message_begin(MSG_ONE, g_ScreenMsg, {0, 0, 0}, id);
write_short(1<<10);
write_short(1<<10);
write_short(0x0000);
write_byte(0);
write_byte(0); // R
write_byte(200); // G
write_byte(75); // B
message_end();
}
}
 

Вложения

Последнее редактирование модератором:
Сообщения
1,031
Реакции
827
Помог
10 раз(а)
shelru, как мне разок сказал духовка, зачем др*ч*ть нативы каждый раз, поэтому можно попробовать вот так: :dntknw:
C++:
// *************************************************************************************//
// Плагин загружен с www.neugomon.ru //
// Автор: Neygomon [ https://neugomon.ru/members/1/ ] //
// Официальная тема поддержки: https://neugomon.ru/threads/123/ //
// При копировании материала ссылка на сайт www.neugomon.ru ОБЯЗАТЕЛЬНА! //
// *************************************************************************************//

/*
neygomon created ^_^ | http://www.neugomon.ru
*/

#include <amxmodx>

#pragma semicolon 1

#if !defined MAX_PLAYERS
const MAX_PLAYERS = 32;
#endif

new g_ScreenMsg;
new bool:g_bIsPlayerVIP[MAX_PLAYERS+1];

public plugin_init()
{
register_plugin("Screen Fade", "0.1", "neygomon");
register_event("DeathMsg", "eDeathMsg", "a", "1>0");
g_ScreenMsg = get_user_msgid("ScreenFade");
}

public client_putinserver(id)
{
g_bIsPlayerVIP[id] = (get_user_flags(id) & ADMIN_LEVEL_H) ? true : false;
}

public eDeathMsg()
{
static id;id = read_data(1);
if(id != read_data(2) && g_bIsPlayerVIP[id]){
message_begin(MSG_ONE, g_ScreenMsg, {0, 0, 0}, id);
write_short(1<<10);
write_short(1<<10);
write_short(0x0000);
write_byte(0);
write_byte(0); // R
write_byte(200); // G
write_byte(75); // B
message_end();
}
}
 
Сообщения
443
Реакции
319
Помог
13 раз(а)
Javekson, как я разок сказал у нас нет форварда изменения флагов, вдруг ненормальный админ решит снять у кого то випку не меняя карту, хех.(и его не кикнет)
12 Мар 2017
кеширование не всегда полезно
(хотя и очень полезно)
 
Сообщения
654
Реакции
560
Помог
9 раз(а)
В плагине ево имя больше чем кода.

кеширование не всегда полезно
Ну это же МЕГАКРУТАЯОПТИМИЗАЦИЯ плагина.

Кешировать надо там где мнократный вызов. А некоторые МЕГАКРУТЫЕСКРИПТЕРЫ которые делают МЕГАКРУТУЮОПТИМИЗАЦИЮ
даже в килл'е, спавне и.т.д
12 Мар 2017
еще модно использовать биты типа:
Код:
#define CheckFlag(%1,%2) (%1 & (1 << (%2 & 31)))
#define SetBit(%1,%2) (%1 |= (1 << (%2 & 31)))
#define ClearBi(%1,%2) (%1 &= ~(1 << (%2 & 31)))

говорят она 100 раз быстрее чем типа:
Код:
new bool:g_bHasFlag[MAX_CLIENTS + 1]
 
Сообщения
1,031
Реакции
827
Помог
10 раз(а)
Vaqtincha, =D Но и плохого ничего в оптимизации я не вижу, да и не скриптер я вовсе, поэтому не сочтите мой пост за оскорбления или на указания какого-либо недостатка. )
 
  • Нравится
Реакции: Shel
Сообщения
2,491
Реакции
2,795
Помог
61 раз(а)
public client_putinserver(id) { g_bIsPlayerVIP[id] = (get_user_flags(id) & ADMIN_LEVEL_H) ? true : false; }
могут возникнуть проблемы с админлоадерами. лучше уж тогда слушать их форварды (amxx_admin_access(id, flags, expired) или amx_admin_connected(id))
 
Сообщения
654
Реакции
560
Помог
9 раз(а)
fantom, нормальные админлоадеры выдают флаги прямо в client_authorized(id) (те раньше client_putinserver(id))
 
Сообщения
96
Реакции
139
Офф-топ
А можно сделать так, чтобы экран моргал при нажатии на Е ?
 
Сообщения
271
Реакции
348
Помог
15 раз(а)
arenanfk, да
C++:
// *************************************************************************************//
// Плагин загружен с  www.neugomon.ru                                                   //
// Автор: Neygomon  [ https://neugomon.ru/members/1/ ]                                  //
// Официальная тема поддержки: https://neugomon.ru/threads/123/                         //
// При копировании материала ссылка на сайт www.neugomon.ru ОБЯЗАТЕЛЬНА!                //
// *************************************************************************************//

/*
    neygomon created ^_^ | http://www.neugomon.ru
*/

#include <amxmodx>
#include <engine>

new g_ScreenMsg;

public plugin_init()
{
    register_plugin("Screen Fade", "0.1", "neygomon");
    //register_event("DeathMsg", "eDeathMsg", "a", "1>0");
    g_ScreenMsg = get_user_msgid("ScreenFade");
}
    
public client_PreThink(id)
{
    if(!is_user_alive(id))
        return;
        
    if(entity_get_int(id,EV_INT_button) & IN_USE)
    {
        message_begin(MSG_ONE, g_ScreenMsg, {0, 0, 0}, id);
        write_short(1<<10);
        write_short(1<<10);
        write_short(0x0000);
        write_byte(0);
        write_byte(0);        // R
        write_byte(200);        // G
        write_byte(75);        // B
        message_end();
    }
}
 
Сообщения
1,420
Реакции
2,511
Помог
58 раз(а)
Denzer, думаю лучше бы было через FM_CmdStart
 

hajimura

Е777КХ05
Сообщения
290
Реакции
228
Помог
6 раз(а)
w0w,
Код:
register_clcmd("+use", "func_ScreenFade");
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу