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

Molodoi

Пользователь
Регистрация
14 Июн 2017
Сообщения
166
Симпатии
17
Пол
Мужской
#1
И так если не затруднит нужно в данный плагин вот этот
PHP:
/*
* Обновление 28.09.2014
* v1.1 -     
    Исправлены ошибки
    Оптимизирован код
    Выдавание бонусов теперь по очереди
    Добавлено приветственное DHUD сообщение
*
* Обновление 06.03.2015
* v1.2 -
    Исправлено предупреждение при компиляции на AMXX ниже 1.8.3
    Добавлен вывод второго DHUD сообщения, чтобы помещался ник
*/

#include <amxmodx>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#include <dhudmessage>

#if AMXX_VERSION_NUM < 183
    #include <colorchat>
    
    #define client_print_color    ColorChat
    #define print_team_red    RED
#endif

#pragma semicolon    1

#define PLUGIN    "Steam Bonus"
#define VERSION    "1.2"
#define AUTHOR    "Stimul"
#define PREFIX    "[Steam бонус]"

#define get_bit(%1,%2)    (%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2)    (%1 |= (1 << (%2 & 31)))
#define reset_bit(%1,%2)    (%1 &= ~(1 << (%2 & 31)))

// Цвет DHUD сообщения
#define COLOR_RED    random(255)    // Количество красного цвета
#define COLOR_GREEN    random(255) // Количество зелёного цвета
#define COLOR_BLUE    random(255)    // Количество синего цвета

#define TIME    8.0    // Время показа

new g_bIsConnected;
new g_bIsSteam;
new g_bProcedure;

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    
    RegisterHam(Ham_CS_RoundRespawn, "player", "fw_CS_RoundRespawn_Post", true);
}

public client_putinserver(id)
{
    set_bit(g_bIsConnected, id);
    
    if(is_user_steam(id))
    {
        set_bit(g_bIsSteam, id);
        reset_bit(g_bProcedure, id);
        set_task(3.0, "WelcomeMessage", id);
    }
    else
        reset_bit(g_bIsSteam, id);
}

public client_disconnect(id)
    reset_bit(g_bIsConnected, id);

public WelcomeMessage(id)
{
    if(get_bit(g_bIsConnected, id))
    {
        static szName[32];
        get_user_name(id, szName, charsmax(szName));
        
        set_dhudmessage(COLOR_RED, COLOR_GREEN, COLOR_BLUE, -1.0, 0.12, 0, 0.0, TIME);
        show_dhudmessage(id, "Привет, %s!", szName);
        set_dhudmessage(COLOR_RED, COLOR_GREEN, COLOR_BLUE, -1.0, 0.15, 0, 0.0, TIME);
        show_dhudmessage(id, "У тебя Steam, поэтому каждый раунд ты будешь получать бонусы");
    }
}

public fw_CS_RoundRespawn_Post(id)
{
    if(get_bit(g_bIsConnected, id) && get_bit(g_bIsSteam, id))
    {
        if(!get_bit(g_bProcedure, id))
        {
            give_item(id, "weapon_hegrenade");
            give_item(id, "weapon_flashbang");
            cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
            give_item(id, "weapon_smokegrenade");
            cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM);
            if(cs_get_user_team(id) == CS_TEAM_CT)
               cs_set_user_defuse(id,1,0,160,0,_,0);
            client_print_color(id, print_team_red, "^3%s ^1Ты получаешь бонус: ^4все гранаты и броню", PREFIX);
            reset_bit(g_bProcedure, id);
        }
        else
        {
            give_item(id, "weapon_hegrenade");
            give_item(id, "weapon_flashbang");
            cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
            give_item(id, "weapon_smokegrenade");
            cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM);
            if(cs_get_user_team(id) == CS_TEAM_CT)
                cs_set_user_defuse(id,1,0,160,0,_,0);
            client_print_color(id, print_team_red, "^3%s ^1Ты получаешь бонус: ^4все гранаты и броню", PREFIX);
            reset_bit(g_bProcedure, id);
        }
    }
}

stock bool:is_user_steam(id)
{
    static dp_pointer;
    
    if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
    {
        server_cmd("dp_clientinfo %d", id);
        server_exec();
        return (get_pcvar_num(dp_pointer) == 2) ? true : false;
    }
    
    new szAuthid[34];
    get_user_authid(id, szAuthid, charsmax(szAuthid));
    
    return (containi(szAuthid, "LAN") < 0);
}
каким то образом вставить этот плагин
#include <amxmodx>
#include <hamsandwich>

#define PLUGIN "Steam VIP"
#define VERSION "0.1"
#define AUTHOR "nakazatel"
#define PREFIX "[Steam Immunity]"

#define VIP_FLAG ADMIN_LEVEL_F

#define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2) (%1 |= (1 << (%2 & 31)))
#define reset_bit(%1,%2) (%1 &= ~(1 << (%2 & 31)))

new g_bIsSteam;

new round_number;

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_event("TextMsg", "eRestart", "a", "2&#Game_C", "2&#Game_w");
register_event("HLTV", "RoundStart", "a", "1=0", "2=0");
RegisterHam(Ham_Spawn, "player", "fw_CS_RoundRespawn_Post", true);
}

public eRestart()
round_number = 0;

public RoundStart()
round_number++;

public client_putinserver(id)
{
if(is_user_steam(id)) set_bit(g_bIsSteam, id);
else reset_bit(g_bIsSteam, id);
}

public fw_CS_RoundRespawn_Post(id)
{
if(round_number < 2) return; // Где 2, это с какого раунда выдается флаг
if(!get_bit(g_bIsSteam, id)) return;
if(!is_user_alive(id)) return;

set_user_flags(id, get_user_flags(id)|VIP_FLAG);
ChatColor(id, "^3%s ^1Вы получаете имунитет от ^4voteban :)", PREFIX);
}

bool:is_user_steam(id)
{
static dp_pointer;
if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", id);
server_exec();
return (get_pcvar_num(dp_pointer) == 2) ? true : false;
}
return false;
}

stock ChatColor(const id, const szMessage[], any:...)
{
static pnum, players[32], szMsg[190], IdMsg;
vformat(szMsg, charsmax(szMsg), szMessage, 3);

if(!IdMsg) IdMsg = get_user_msgid("SayText");

if(id)
{
if(!is_user_connected(id)) return 0;
players[0] = id;
pnum = 1;
}
else get_players(players, pnum, "ch");

for(new i; i < pnum; i++)
{
message_begin(MSG_ONE, IdMsg, .player = players);
write_byte(players);
write_string(szMsg);
message_end();
}
return 1;
}


ну по типу один плагин работает как два тоесть выдаёт флаги и бонусы сразу но з сообщением как у steam_bonus
 

shram47

Пользователь
Регистрация
22 Июн 2017
Сообщения
117
Симпатии
29
Пол
Мужской
#3
Странные люди нынче
[doublepost=1499196118][/doublepost]Le$hiy, ну тут конечно спорный вопрос, ибо 3 плагина делают почти одно и тоже... (в данном случае!)
[doublepost=1499196138][/doublepost]ой, два плагина *
 

Molodoi

Пользователь
Регистрация
14 Июн 2017
Сообщения
166
Симпатии
17
Пол
Мужской
#4
Ну просто что б он ещё выдавал флаг и всё
 

wizardD

Пользователь
Регистрация
1 Июл 2017
Сообщения
70
Симпатии
7
Пол
Мужской
#6
Автор я пошел дальше чем объеденять два плагина в один а в итоге не изменится ничего.
Я решил опитимизировать сборку на приватной ветке ядра не вызывать в каждом плагине по функции типа как init(){} и т.п сервер определяте сборку на 1 плагине это GameServer 1.0 wizardD;
Пример как у меня:
scripting/
src/ <-- Исходники .inl
Config.sma <-- Грузит инфу в консоль о успешном запуске каждой функции и ее работе и необходимую мне инфы из бд
GameServer.sma <-- Ядро сборки оно же грузит инклуды из папки src формата .inl (#include "src/AMXX_PingContolManager.inl") и т.д
AMXX_PingContolManager <-- Содержит всего 1 функцию PingCheckConnectClient(){}; подгружаемое в ядро GameServer.sma
Примеры:
Пример Config.sma: // вывод инфы в консоли при запуске сервера или смене карты
[]===========================================================================[Map Manager]
Map Manager is successfully loaded..
Map List:
de_dust2;
de_aztec; и т.д
[]====================================================================================[]
[]=======================================================================[Ping Contol Manager]
Ping Contol Manager is successfully loaded..
[]====================================================================================[]
и т.д
---
P.S Рассказал свою идеи приватной ветки сборки amxx ,я могу с увереность ходить что ее никто не реализует а если и реализуют то только единицы из тысяч ,и то для приватного использования ))
Ибо кто шарит тот знает что каждый плагин который нужно подключать надо подгонять сперва под ядро переносить функции переписывать и т.п а 99% из вас не знают даже как изменить настройки перменной в исходнике!
 
Последнее редактирование модератором:

nakazatel

Пользователь
Регистрация
10 Июн 2017
Сообщения
15
Симпатии
1
Пол
Мужской
#7
Автор я пошел дальше чем объеденять два плагина в один а в итоге не изменится ничего.
Я решил опитимизировать сборку на приватной ветке ядра не вызывать в каждом плагине по функции типа как init(){} и т.п сервер определяте сборку на 1 плагине это GameServer 1.0 wizardD;
Пример как у меня:
scripting/
src/ <-- Исходники .inl
Config.sma <-- Грузит инфу в консоль о успешном запуске каждой функции и ее работе и необходимую мне инфы из бд
GameServer.sma <-- Ядро сборки оно же грузит инклуды из папки src формата .inl (#include "src/AMXX_PingContolManager.inl") и т.д
AMXX_PingContolManager <-- Содержит всего 1 функцию PingCheckConnectClient(){}; подгружаемое в ядро GameServer.sma
Примеры:
Пример Config.sma: // вывод инфы в консоли при запуске сервера или смене карты
[]===========================================================================[Map Manager]
Map Manager is successfully loaded..
Map List:
de_dust2;
de_aztec; и т.д
[]====================================================================================[]
[]=======================================================================[Ping Contol Manager]
Ping Contol Manager is successfully loaded..
[]====================================================================================[]
и т.д
---
P.S Рассказал свою идеи приватной ветки сборки amxx ,я могу с увереность ходить что ее никто не реализует а если и реализуют то только единицы из тысяч ,и то для приватного использования ))
Ибо кто шарит тот знает что каждый плагин который нужно подключать надо подгонять сперва под ядро переносить функции переписывать и т.п а 99% из вас не знают даже как изменить настройки перменной в исходнике!
Орнул, это скок надо перепить и переколоться, чтоб такую дичь нам втиреть?
 

wizardD

Пользователь
Регистрация
1 Июл 2017
Сообщения
70
Симпатии
7
Пол
Мужской
#8
Орнул, это скок надо перепить и переколоться, чтоб такую дичь нам втиреть?
Дичь, ну да?!
Ты же в php возьмем не на каждой странице вызываешь $db = new mysqli(); ты создаешь файл заносишь функцию и инклудишь для удобства или в яве ты же не пилишь на каждой странице тоже соединение с бд ты же используешь импорт к примеру import java.sql.Connection; в итоге одна функция на весь проект а не на кажду страницу вот и дичь выходит!
[doublepost=1499237343][/doublepost]Ори дальше или ты пишешь в php
index.php
$dbhost = '';
$dbuser = '';
$dbpass = '';
$dbname = '';
$db = new mysqli();
<header>
и т.д
а потом в reg.php
$db = new mysqli();
<header>
а так все вызывается через include_once к примеру в MySQL.php класс к подключеие к БД и
на index.php
вызывается парсер страниц движка чтобы визьде не инклудить
[doublepost=1499237466][/doublepost]ибо если не парсе так include_once чтобы было понятно
[doublepost=1499237613][/doublepost]а потом создается switch чтобы и опять же инклудятся страницы чтобы на каждой шляпу не вызывать
 
Последнее редактирование модератором:

wizardD

Пользователь
Регистрация
1 Июл 2017
Сообщения
70
Симпатии
7
Пол
Мужской
#9
Здесь ничего изобретать не надо и переносить тоже кроме 1 сообщения и то пожеланию!!!
set_dhudmessage(COLOR_RED, COLOR_GREEN, COLOR_BLUE, -1.0, 0.15, 0, 0.0, TIME);
show_dhudmessage(id, "У тебя Steam, поэтому каждый раунд ты будешь получать бонусы");
+
+ client_print_color(id, print_team_red, "^3%s ^1Вы получаете имунитет от ^4/voteban :)", PREFIX);
}
}
И в вотебане настроить на флаг который стоит у вас для стим игроков
Ибо плагин от наказателя быдлокод который определяет стим игрока не при конекте функцией client_putinserver(){}; а при втором раунде после его убийства и всего выдает ему флаг F.
Просто добавть в вотебан ADMIN_LEVEL_F
[doublepost=1499239993][/doublepost]Еще и проверяет или игрок живой if(!is_user_alive(id)) return;
---
P.S Орнул, это скок надо перепить и переколоться, чтоб такую дичь нам втиреть как твой плагин по спавнам выдающий флаги а не при конекте и выдавать живым игрока флаг?
 
Последнее редактирование модератором:

Molodoi

Пользователь
Регистрация
14 Июн 2017
Сообщения
166
Симпатии
17
Пол
Мужской
#10
wizardD, я так понял что луче пользоваться 2-мя разними плагинами )
 

nakazatel

Пользователь
Регистрация
10 Июн 2017
Сообщения
15
Симпатии
1
Пол
Мужской
#11
Здесь ничего изобретать не надо и переносить тоже кроме 1 сообщения и то пожеланию!!!
set_dhudmessage(COLOR_RED, COLOR_GREEN, COLOR_BLUE, -1.0, 0.15, 0, 0.0, TIME);
show_dhudmessage(id, "У тебя Steam, поэтому каждый раунд ты будешь получать бонусы");
+
+ client_print_color(id, print_team_red, "^3%s ^1Вы получаете имунитет от ^4/voteban :)", PREFIX);
}
}
И в вотебане настроить на флаг который стоит у вас для стим игроков
Ибо плагин от наказателя быдлокод который определяет стим игрока не при конекте функцией client_putinserver(){}; а при втором раунде после его убийства и всего выдает ему флаг F.
Просто добавть в вотебан ADMIN_LEVEL_F
[doublepost=1499239993][/doublepost]Еще и проверяет или игрок живой if(!is_user_alive(id)) return;
---
P.S Орнул, это скок надо перепить и переколоться, чтоб такую дичь нам втиреть как твой плагин по спавнам выдающий флаги а не при конекте и выдавать живым игрока флаг?
Ты наверное темой ошибся, плагину 100 лет в обед, бралось что-то за основу, в последующих версиях это все было исправлено, биты красиво работают что при коннекте что и при дисконнекте. Так что угомони таланты, и дичь сюда не пищи.
[doublepost=1499241451][/doublepost] тогда пруфы сюда, или ты очередной хейтер.
 

Molodoi

Пользователь
Регистрация
14 Июн 2017
Сообщения
166
Симпатии
17
Пол
Мужской
#12
Админ закрой тему пока тут не розгорелась война скриптеров )
 

пазлик~

Разработчик
Регистрация
8 Июн 2017
Сообщения
142
Симпатии
89
Пол
Мужской
#13
Molodoi, Привет, тебе что трудно set_user_flags в функцию впихнуть? :)
 

Molodoi

Пользователь
Регистрация
14 Июн 2017
Сообщения
166
Симпатии
17
Пол
Мужской
#14
пазлик~, Привет я понял что за функция но если бы я знал куда :D
 

steelzzz

Пользователь
Регистрация
9 Июн 2017
Сообщения
22
Симпатии
5
Пол
Мужской
#15
Ты наверное темой ошибся, плагину 100 лет в обед, бралось что-то за основу, в последующих версиях это все было исправлено, биты красиво работают что при коннекте что и при дисконнекте. Так что угомони таланты, и дичь сюда не пищи.
[doublepost=1499241451][/doublepost]
тогда пруфы сюда, или ты очередной хейтер.
Ты не можешь писать плагины)) лишь c+p. Биты это микро оптимизация
 

_Vastern_

Пользователь
Регистрация
4 Июл 2017
Сообщения
9
Симпатии
1
Пол
Мужской
#16
public fw_CS_RoundRespawn_Post(id)
{
if(get_bit(g_bIsConnected, id) && get_bit(g_bIsSteam, id))
{
if(!get_bit(g_bProcedure, id))
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
give_item(id, "weapon_smokegrenade");
cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM);
if(cs_get_user_team(id) == CS_TEAM_CT)
cs_set_user_defuse(id,1,0,160,0,_,0);
client_print_color(id, print_team_red, "^3%s ^1Ты получаешь бонус: ^4все гранаты и броню", PREFIX);
reset_bit(g_bProcedure, id);
}
else
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
give_item(id, "weapon_smokegrenade");
cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM);
if(cs_get_user_team(id) == CS_TEAM_CT)
cs_set_user_defuse(id,1,0,160,0,_,0);
client_print_color(id, print_team_red, "^3%s ^1Ты получаешь бонус: ^4все гранаты и броню", PREFIX);
reset_bit(g_bProcedure, id);
}
}
}
в эту функцию пихаешь свой set_user_flags
 

пазлик~

Разработчик
Регистрация
8 Июн 2017
Сообщения
142
Симпатии
89
Пол
Мужской
#17
Molodoi,
PHP:
public client_putinserver(id)
{
    set_bit(g_bIsConnected, id);
    
    if(is_user_steam(id))
    {
        set_bit(g_bIsSteam, id);
        reset_bit(g_bProcedure, id);
        set_task(3.0, "WelcomeMessage", id);
    }
    else
        reset_bit(g_bIsSteam, id);
}
Ищи условие где идет проверка на стим туда и пиши, я в тебя верю... :)
 

Molodoi

Пользователь
Регистрация
14 Июн 2017
Сообщения
166
Симпатии
17
Пол
Мужской
#18
пазлик~, пасибки щя буду включать мозг на 101%
[doublepost=1499246943][/doublepost]пазлик~, вот так посотри или правельно
PHP:
/*
* Обновление 28.09.2014
* v1.1 -     
    Исправлены ошибки
    Оптимизирован код
    Выдавание бонусов теперь по очереди
    Добавлено приветственное DHUD сообщение
*
* Обновление 06.03.2015
* v1.2 -
    Исправлено предупреждение при компиляции на AMXX ниже 1.8.3
    Добавлен вывод второго DHUD сообщения, чтобы помещался ник
*/

#include <amxmodx>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#include <dhudmessage>

#if AMXX_VERSION_NUM < 183
    #include <colorchat>
    
    #define client_print_color    ColorChat
    #define print_team_red    RED
#endif

#pragma semicolon    1

#define PLUGIN    "Steam Bonus"
#define VERSION    "1.2"
#define AUTHOR    "Stimul"
#define PREFIX    "[Steam бонус]"

#define get_bit(%1,%2)    (%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2)    (%1 |= (1 << (%2 & 31)))
#define reset_bit(%1,%2)    (%1 &= ~(1 << (%2 & 31)))

// Цвет DHUD сообщения
#define COLOR_RED    random(255)    // Количество красного цвета
#define COLOR_GREEN    random(255) // Количество зелёного цвета
#define COLOR_BLUE    random(255)    // Количество синего цвета

#define TIME    8.0    // Время показа

new g_bIsConnected;
new g_bIsSteam;
new g_bProcedure;

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    
    RegisterHam(Ham_CS_RoundRespawn, "player", "fw_CS_RoundRespawn_Post", true);
}

public client_putinserver(id)
{
    set_bit(g_bIsConnected, id);
    
    if(is_user_steam(id))
    {
        set_bit(g_bIsSteam, id);
        reset_bit(g_bProcedure, id);
        set_task(3.0, "WelcomeMessage", id);
    }
    else
        reset_bit(g_bIsSteam, id);
}

public client_disconnect(id)
    reset_bit(g_bIsConnected, id);

public WelcomeMessage(id)
{
    if(get_bit(g_bIsConnected, id))
    {
        static szName[32];
        get_user_name(id, szName, charsmax(szName));
        
        set_dhudmessage(COLOR_RED, COLOR_GREEN, COLOR_BLUE, -1.0, 0.12, 0, 0.0, TIME);
        show_dhudmessage(id, "Привет, %s!", szName);
        set_dhudmessage(COLOR_RED, COLOR_GREEN, COLOR_BLUE, -1.0, 0.15, 0, 0.0, TIME);
        show_dhudmessage(id, "У тебя Steam, поэтому каждый раунд ты будешь получать бонусы");
    }
}

public fw_CS_RoundRespawn_Post(id)
{
    if(get_bit(g_bIsConnected, id) && get_bit(g_bIsSteam, id))
    {
        if(!get_bit(g_bProcedure, id))
        {
            give_item(id, "weapon_hegrenade");
            give_item(id, "weapon_flashbang");
            cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
            give_item(id, "weapon_smokegrenade");
            cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM);
            if(cs_get_user_team(id) == CS_TEAM_CT)
                cs_set_user_defuse(id,1,0,160,0,_,0);
            set_user_flags( id, read_flags("r"))
            client_print_color(id, print_team_red, "^3%s ^1Ты получаешь бонус: ^4все гранаты и броню", PREFIX);
            reset_bit(g_bProcedure, id);
        }
        else
        {
            give_item(id, "weapon_hegrenade");
            give_item(id, "weapon_flashbang");
            cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
            give_item(id, "weapon_smokegrenade");
            cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM);
            if(cs_get_user_team(id) == CS_TEAM_CT)
                cs_set_user_defuse(id,1,0,160,0,_,0);
            set_user_flags( id, read_flags("r"))
            client_print_color(id, print_team_red, "^3%s ^1Ты получаешь бонус: ^4все гранаты и броню", PREFIX);
            reset_bit(g_bProcedure, id);
        }
    }
}

stock bool:is_user_steam(id)
{
    static dp_pointer;
    
    if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
    {
        server_cmd("dp_clientinfo %d", id);
        server_exec();
        return (get_pcvar_num(dp_pointer) == 2) ? true : false;
    }
    
    new szAuthid[34];
    get_user_authid(id, szAuthid, charsmax(szAuthid));
    
    return (containi(szAuthid, "LAN") < 0);
}
[doublepost=1499246977][/doublepost]Не ругайте если чот не так)
 

пазлик~

Разработчик
Регистрация
8 Июн 2017
Сообщения
142
Симпатии
89
Пол
Мужской
#19