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

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

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

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

Ban Sheild v0.2 by Flash

, Запрет щита на сервере
Статус пользователя Surf
сообщение 16.6.2013, 7:04
Сообщение #1


Стаж: 14 лет

Сообщений: 1089
Благодарностей: 501
Полезность: 583

Простенький плагин который запрещает щит на сервере.

Название: Ban Shield
Версия: 0.2
Автор: Flash

Описание: Запрещает покупать щит

Установка: Скомпилить, результат кинуть в папку plugins

Скачать: Прикрепленный файл  banshield_v0.2.zip ( 1,17 килобайт ) Кол-во скачиваний: 34


Нужный кусок кода взят из No Shield by ConnorMcLeod. Ссылка: http://forums.alliedmods.net/showpost.php?...amp;postcount=1

Исходник
Код:
#include <amxmodx>
#include <fakemeta>
#include <cstrike>

#define m_iMenuCode 205

#define cs_get_user_menu(%0) get_pdata_int(%0, m_iMenuCode, 5)
#define cs_set_user_menu(%0,%1) set_pdata_int(%0, m_iMenuCode, %1, 5)

#define Menu_BuyItem 10

public plugin_init()
{
register_plugin("Ban Shield", "0.2", "Flash");

register_clcmd("menuselect 8", "ClCmd_MenuSelect_8");

register_clcmd("shield", "Block");
}


// Thx to ConnorMcLeod for his code
public ClCmd_MenuSelect_8(id)
{
if(is_user_alive(id) && cs_get_user_menu(id) == Menu_BuyItem && cs_get_user_team(id) == CS_TEAM_CT)
{
new iOldMenu, iNewMenu;
player_menu_info(id, iOldMenu, iNewMenu);

if(iOldMenu > 0 || iNewMenu != -1)
{
cs_set_user_menu(id, 0);
}
else
{
client_print(id, print_center, "Щит запрещен!");
return PLUGIN_HANDLED;
}
}

return PLUGIN_CONTINUE;
}

public Block(id)
{
if(is_user_alive(id))
{
client_print(id, print_center, "Щит запрещен!");
return PLUGIN_HANDLED;
}

return PLUGIN_CONTINUE;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   Цитировать сообщение
Статус пользователя mazdan
сообщение 16.6.2013, 7:18
Сообщение #2


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

как чужое сделать своим

Берем чужой плагин, выкидываем несколько "лишних" кусков, и вуаля: ConnorMcLeod => Flash
Часть 1
Код:
/*	Formatright © 2010, ConnorMcLeod
This plugin is free software;
you can redistribute it and/or modify it under the terms of the
GNU General Public License as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this plugin; if not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/

#include <amxmodx>
#include <cstrike>
#include <fakemeta>


Код:
new const PLUGIN[] = "No Shield"
#define VERSION "0.2.1"
new const AUTHOR[] = "ConnorMcLeod"
new const shield[] = "shield"

new g_iTextMsg

const m_iMenuCode = 205

#define cs_get_user_menu(%0) get_pdata_int(%0, m_iMenuCode)
#define cs_set_user_menu(%0,%1) set_pdata_int(%0, m_iMenuCode, %1)
#define Menu_BuyItem 10
часть 3

Код:
public plugin_precache()
{
if( !CheckGamePlayerEquip() )
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_forward(FM_PrecacheModel, "PrecacheModel")
}
else
{
register_plugin("No Shield (Auto-Disabled)", VERSION, AUTHOR)
pause("a")
}
}
Код:

public plugin_init()
{
g_iTextMsg = get_user_msgid("TextMsg")

register_clcmd("menuselect 8", "ClCmd_MenuSelect_8")
}
Часть 5

Код:
public plugin_cfg()
{
server_cmd("amx_pausecfg add %s", PLUGIN)
}

CheckGamePlayerEquip()
{
new szMapFile[64]
get_mapname(szMapFile, charsmax(szMapFile))
format(szMapFile, charsmax(szMapFile), "maps/%s.bsp", szMapFile)

new szBuffer[64], szKey[16], szValue[32]
new bool:bInEntityDatas, bool:bIsPlayerEquip, bool:bHasShield
new fp = fopen(szMapFile, "rb")
if( !fp )
{
return 0 // default map oO
}

new iOffset, iLength, iMaxPos
fseek(fp, 4, SEEK_SET)
fread(fp, iOffset, BLOCK_INT)
fread(fp, iLength, BLOCK_INT)
iMaxPos = iOffset + iLength
fseek(fp, iOffset, SEEK_SET)

while( ftell(fp) < iMaxPos )
{
fgets(fp, szBuffer, charsmax(szBuffer))
trim(szBuffer)

if( bInEntityDatas )
{
if( szBuffer[0] == '}' )
{
if( bIsPlayerEquip && bHasShield )
{
break
}
}
else
{
parse(szBuffer, szKey, charsmax(szKey), szValue, charsmax(szValue))
if( equal(szKey, "classname") )
{
bIsPlayerEquip = !!equal(szValue, "game_player_equip")
}
else if( equal(szKey, "weapon_shield") )
{
bHasShield = !!equal(szValue, "1")
}
}
}
else if( szBuffer[0] == '{' )
{
bInEntityDatas = true
bIsPlayerEquip = false
bHasShield = false
}
}
fclose(fp)

return ( bIsPlayerEquip && bHasShield )
}

public PrecacheModel(const szModel[])
{
if( containi(szModel, shield) != -1 )
{
forward_return(FMV_CELL, 0)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}
Код:
public ClCmd_MenuSelect_8( id )
{
if( is_user_alive(id) && cs_get_user_menu(id) == Menu_BuyItem && cs_get_user_team(id) == CS_TEAM_CT )
{
new iOldMenu, iNewMenu
player_menu_info(id, iOldMenu, iNewMenu)
if( iNewMenu != -1 || iOldMenu > 0 ) // no check against BuyMenus because amxx menu system is too global.
{
cs_set_user_menu(id, 0)
}
else
{
Message_No_Shield(id)
return PLUGIN_HANDLED
}
}
return PLUGIN_CONTINUE
}
часть 7
Код:
public client_command(id)
{
static szCommand[8] // shield

if( read_argv(0, szCommand, charsmax(szCommand)) == 6 && equali(szCommand, shield) )
{
Message_No_Shield(id)
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}

public CS_InternalCommand(id, const szCommand[])
{
if( equali(szCommand, shield) )
{
Message_No_Shield(id)
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
Код:
Message_No_Shield(id)
{
message_begin(MSG_ONE_UNRELIABLE, g_iTextMsg, .player=id)
write_byte( print_center )
write_string( "#Weapon_Not_Available" )
write_string( "#TactShield" )
message_end()
}


Или это случайное совпадение? из отличий только register_clcmd("shield", "Block"); и строка хардкодом, а не игровым сообщением.


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Surf
сообщение 16.6.2013, 7:32
Сообщение #3


Стаж: 14 лет

Сообщений: 1089
Благодарностей: 501
Полезность: 583

mazdan,
Взят кусок кода, откуда - уже не помню, плагину более полугода. Во всяком случае сделан плагин как "легкая" альтернатива, под себя.

p.s
Перезалил
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя sambo
сообщение 16.6.2013, 7:42
Сообщение #4


Стаж: 14 лет

Сообщений: 847
Благодарностей: 200
Полезность: 477

Стандартно на сервере запрещают и скорострелки , было бы хорошо добавить и их .
Тогда можно стандартный плагин офать.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 16.6.2013, 7:42
Сообщение #5


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

ну может быть и так - раньше за вами такого не замечалось такого вроде как.
Ну вы не указали реального автора - я указал, пользователям не помешает видеть оригинал, может им он будет удобнее. Я еще понимаю если бы кусок кода взят, а то наоборот - выкинут. У меня вот тот же плагин и тоже я его немного правил, но при этом он
Цитата
[ 10] No Shield 0.2.0 ConnorMcLeod noshield.amxx running
да и не выкладываю под своим авторством вроде. Ну это личное дело каждого.

UPD: вопросов не имею больше. Спасибо.


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Surf
сообщение 16.6.2013, 7:47
Сообщение #6


Стаж: 14 лет

Сообщений: 1089
Благодарностей: 501
Полезность: 583

mazdan,
Для сравнения:
No Shield by ConnorMcLeod - 180 строк кода
Ban Shield by Flash (?) - 53 строки кода

Итого: Сурс меньше более чем в 3 раза, дак я убрал лишнее или все так-и взял кусок?

p.s Еще такая тема: поправили плагин другого автора без пометок кем и зачем он правлен, в итоге обнаруживается баг в плагине, льется *** на автора оригинального плагина, оно ему надо?

p.s2 Во всякому случае спасибо то что тыкнули носом
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 16.6.2013, 8:03
Сообщение #7


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

Surf, ну моё мнение тема должна быть что-то вроде облегченный "NoShild от ConnorMcLeod."
Для сравнения я привел сурс ConnorMcLeod
Цитата
Берем чужой плагин, выкидываем несколько "лишних" кусков, и вуаля: ConnorMcLeod => Flash

Цитата
Я еще понимаю если бы кусок кода взят, а то наоборот - выкинут.

Цитата
Итого: Сурс меньше более чем в 3 раза, дак я убрал лишнее или все так-и взял кусок?

Выглядит именно так - убрали то что вам было не нужно и плагин уже ваш, а не коннора. Пойду возьму первую главу из Онегина и опубликую под своим авторством. Всё это балобольство - факт я привел в первом сообщении.

UPD: в любом случае нечего разводить демагогию. Вы добавили ссылку на Коннора. Все довольны, всё такое, а мне на работу ехать надо. Кроме того я в курсе что вы в состоянии написать такой плагин с нуля и согласен что ситуация "когда-то взял, откуда не помню" вполне могла возникнуть.


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ds57042
сообщение 16.6.2013, 13:21
Сообщение #8
Стаж: 13 лет

Сообщений: 209
Благодарностей: 20
Полезность: 89

эмм а не лугче использовать стандартный плагин из амхмода
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Surf
сообщение 16.6.2013, 13:34
Сообщение #9


Стаж: 14 лет

Сообщений: 1089
Благодарностей: 501
Полезность: 583

ds57042,
данный плагин гораздо проще
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 16.6.2013, 14:05
Сообщение #10


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

ds57042, стандартный плагин обходят


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя sambo
сообщение 16.6.2013, 15:09
Сообщение #11


Стаж: 14 лет

Сообщений: 847
Благодарностей: 200
Полезность: 477

Цитата(sambo @ 16.6.2013, 8:42) *
Стандартно на сервере запрещают и скорострелки , было бы хорошо добавить и их .
Тогда можно стандартный плагин офать.

help.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ds57042
сообщение 16.6.2013, 19:56
Сообщение #12
Стаж: 13 лет

Сообщений: 209
Благодарностей: 20
Полезность: 89

Цитата(mazdan @ 16.6.2013, 16:05) *
ds57042, стандартный плагин обходят

Ого не знал, таких мвло мне кажется
А есть еще и на скорострелки?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: