RU
RU
UA
EN
PL
ГЛАВНАЯ
УСЛУГИ
ПЛАГИНЫ
КАРТЫ
REBUY
SCANMON
CASSA
SALE
ФОРУМ
МОНИТОР
HELP
КОНТАКТ
Главная
/
Plugins
/
[CS 1.6] Individual Weapon Restrictions
[CS 1.6] Individual Weapon Restrictions
Теги:
Скачать плагины cs
Админские
Плагин позволяет ограничить закупку определённого оружия конкретному игроку.
Компилятор: 1.8.3 Multibild
1085
Команды:
Консольная команда:
amx_restrictadd <ник> <оружие> - Добавить ограничение использования оружия (Пример: amx_restrictadd bugs gloc)
amx_restrictremove <ник> <оружие> - Убрать ограничение использования оружия (Пример: amx_restrictremove bugs gloc)
amx_restrictclear <ник> - Убрать все ограничения для данного игрока
Команда в чат:
/restrict - показать список игроков с их ограничениями
Список названия оружия:
ak47
aug
awp
deagle
elite
famas
fiveseven
flashbang
g3sg1
galil
glock18
hegrenade
m249
m3
m4a1
mac10
mp5navy
p228
p90
scout
sg550
sg552
smokegrenade
tmp
ump45
usp
xm1014
.sma / .sp
#include
#include
#include
#include
#include
#include
#define PLUGIN "Individual Weapon Restrictions" #define VERSION "0.5" #define AUTHOR "bugsy" #pragma semicolon 1 new g_NvID; //nVault handle new g_Restrictions[33]; //Weapon restrictions for players [bit-field] new g_JoinedBeforeAuth[33]; //Set to 1 if player joins a team before authorizing with steam. new g_Authorized[33]; //Set to 1 when authorizes. new Float:g_fMsgDelay[33]; //To prevent flooding with client_print on weapon purchases new iSaid[33]; new g_MaxClients; new g_MsgMoney; //Ham\FM Forward handles new HamHook:g_HamAddPlayerItem; new g_FMTouch; new g_ForwardsEnabled = 1; //Weapon Priority Switching [ven] #define WEAPONS 29 new const WEAPON_PRIORITY[WEAPONS] = {3, 5, 7, 8, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 27, 28, 30, 1, 10, 11, 16, 17, 26, 6, 4, 9, 25, 29}; //Fakemeta #define IsPlayer(%1) ( 1 <= %1 <= g_MaxClients ) #define OFFSET_AMMO_LINUXDIFF 5 #define EXTRAOFFSET_WEAPONS 4 #define OFFSET_WEAPONTYPE 43 #define OFFSET_CSMONEY 115 #define OFFSET_FLASH_AMMO 387 #define OFFSET_HE_AMMO 388 #define OFFSET_SMOKE_AMMO 389 new const g_WeaponPrice[33] = { 0, 600, 0, 2750, 300, 3000, 0, 1400, 3500, 300, 1000, 750, 1700, 4200, 2000, 2250, 500, 400, 4750, 1500, 5750, 1700, 3100, 1250, 5000, 200, 650, 3500, 2500, 0, 2350, 0, 0 }; new const g_WeaponNames[33][] = { "", "p228", "", "scout", "hegrenade", "xm1014", "", "mac10", "aug", "smokegrenade", "elite", "fiveseven", "ump45", "sg550", "galil", "famas", "usp", "glock18", "awp", "mp5navy", "m249", "m3", "m4a1", "tmp", "g3sg1", "flashbang", "deagle", "sg552", "ak47", "", "p90", "", ""}; public plugin_init() { register_plugin( PLUGIN , VERSION , AUTHOR ); register_cvar("iwr_plugin" , VERSION , FCVAR_SERVER ); register_concmd( "amx_restrictadd" , "AddRestrict" , ADMIN_CVAR , "-
- Add weapon restriction to player." ); register_concmd( "amx_restrictremove" ,"RemoveRestrict" , ADMIN_CVAR , "-
- Remove weapon restriction to player." ); register_concmd( "amx_restrictclear" , "ClearRestrict" , ADMIN_CVAR , "-
- Clear all weapon restrictions for player." ); register_concmd( "amx_restrictshow" , "ShowRestrict" , ADMIN_CVAR , "-
- Display a players weapon restrictions." ); register_clcmd( "say /restrict" , "NotifyPlayer" , ADMIN_ALL , "- Display your weapon restrictions" ); register_event( "TextMsg" , "PlayerJoinedTeam" , "a" , "2=#Game_join_terrorist" , "2=#Game_join_ct" ); g_HamAddPlayerItem = RegisterHam( Ham_AddPlayerItem ,"player" ,"fw_AddPlayerItem" ); g_FMTouch = register_forward( FM_Touch, "fw_Touch" ); g_MaxClients = global_get( glb_maxClients ); g_MsgMoney = get_user_msgid( "Money" ); g_NvID = nvault_open( "iwr_data" ); if ( g_NvID == INVALID_HANDLE ) set_fail_state( "Error opening nvault" ); } public plugin_end() { nvault_close( g_NvID ); } public client_putinserver(id) { if( is_user_bot(id) ) return PLUGIN_CONTINUE; new szAuthID[35]; new szKey[13]; new tmp; get_user_authid( id , szAuthID , 34 ); //Check vault for restriction entry and, if found, set # to g_Restrictions[] if ( nvault_lookup( g_NvID , szAuthID , szKey , 12 , tmp ) ) { g_Restrictions[id] = str_to_num(szKey); if( g_JoinedBeforeAuth[id] ) NotifyPlayer(id); CheckForwards(); } iSaid[id] = 0; g_Authorized[id] = 1; return PLUGIN_CONTINUE; } public client_disconnect(id) { if ( is_user_bot(id) ) return PLUGIN_CONTINUE; g_Authorized[id] = 0; g_JoinedBeforeAuth[id] = 0; g_Restrictions[id] = 0; CheckForwards(); return PLUGIN_CONTINUE; } public CheckForwards() { new iPlayers[32]; new iPlayersNum; get_players( iPlayers, iPlayersNum, "c" ); for ( new i = 0; i < iPlayersNum; i++ ) { if ( g_Restrictions[iPlayers[i]] ) { if ( !g_ForwardsEnabled ) { EnableHamForward( g_HamAddPlayerItem ); g_FMTouch = register_forward( FM_Touch, "fw_Touch" ); g_ForwardsEnabled = 1; } return PLUGIN_HANDLED; } } DisableHamForward( g_HamAddPlayerItem ); unregister_forward( FM_Touch, g_FMTouch ); g_ForwardsEnabled = 0; return PLUGIN_HANDLED; } public PlayerJoinedTeam() { new szName[33]; read_data ( 3 , szName , 32 ); new id = get_user_index ( szName ); if ( is_user_bot(id) ) return PLUGIN_CONTINUE; if ( !g_Authorized[id] ) { g_JoinedBeforeAuth[id] = 1; } else { if ( g_Restrictions[id] ) NotifyPlayer(id); } return PLUGIN_CONTINUE; } public NotifyPlayer(id) { static szHUD[256]; if ( g_Restrictions[id] ) { format( szHUD , 255 , "[Weapon Restrictions]^n" ); for ( new i = 1; i <= 30 ; i++ ) if( 1 & (g_Restrictions[id] >> i) ) format( szHUD , 255 , "%s^n%s" , szHUD , g_WeaponNames[i] ); } else { format( szHUD , 255 , "[Weapon Restrictions]^n^nYou have no weapon restrictions." ); } format( szHUD , 255 , "%s^n^nSay /restrict to see restrictions." , szHUD ); set_hudmessage( 255 , 255 , 255 , 0.10 , 0.55 , 0 , 6.0 , 6.0 , 0.5 , 0.15 , 3 ); show_hudmessage( id , szHUD ); return PLUGIN_HANDLED; } public AddRestrict(id, level, cid) { if ( !cmd_access(id,level,cid,1) ) return PLUGIN_HANDLED; if ( read_argc() != 3 ) { console_print( id , "* Insufficient parameters. Proper usage: amx_restrictadd
" ); return PLUGIN_HANDLED; } new argName[33]; new argWeap[20]; read_argv( 1, argName, 32 ); read_argv( 2, argWeap, 19 ); new iPlayer = cmd_target( id , argName , 8 ); if ( !iPlayer ) return PLUGIN_HANDLED; get_user_name( iPlayer , argName, 32 ); new iWeapon = GetWeaponIndex( argWeap , 2 ); if ( !iWeapon ) { console_print( id , "* Invalid weapon, please try again using part or all of the weapons name." ); return PLUGIN_HANDLED; } if ( 1 & (g_Restrictions[iPlayer] >> iWeapon) ) { console_print( id , "* %s already has %s as a weapon restriction." , argName , g_WeaponNames[iWeapon ] ); return PLUGIN_HANDLED; } //Add restriction flag bit to bit field g_Restrictions[iPlayer] |= (1 << iWeapon); //Display new restriction to player static szHUD[256]; format( szHUD , 255 , "[Weapon Restrictions]^n^nRestriction Added: %s^n^nSay /restrict to view restrictions." , g_WeaponNames[iWeapon] ); set_hudmessage( 255 , 255 , 255 , 0.10 , 0.55 , 0 , 6.0 , 6.0 , 0.5 , 0.15 , 3 ); show_hudmessage( iPlayer , szHUD ); console_print( id , "* Weapon restriction for %s has been added on player %s." , g_WeaponNames[iWeapon] , argName ); //If the user has the weapon we just added a restriction for, make player drop weapon. if ( user_has_weapon( iPlayer , iWeapon ) ) { new iCurrent = get_user_weapon(id); switch ( iWeapon ) { case CSW_HEGRENADE , CSW_FLASHBANG , CSW_SMOKEGRENADE: DropWeapon( iPlayer , iWeapon ); default: { format( argWeap , 19 , "weapon_%s" , g_WeaponNames[iWeapon] ); engclient_cmd( iPlayer, "drop", argWeap ); } } //If player was holding weapon we just restricted, set weapon according to priority if ( iCurrent == iWeapon ) SetWeaponPriority( id ); } SaveRestrict( id ); CheckForwards(); return PLUGIN_HANDLED; } public RemoveRestrict(id, level, cid) { if ( !cmd_access(id,level,cid,1) ) return PLUGIN_HANDLED; if ( read_argc() != 3 ) { console_print( id , "* Insufficient parameters. Proper usage: amx_restrictremove
" ); return PLUGIN_HANDLED; } new argName[33]; new argWeap[20]; static szAuthID[35]; static szHUD[256]; read_argv( 1 , argName , 32 ); read_argv( 2 , argWeap , 19 ); new iPlayer = cmd_target( id , argName , 8 ); if ( !iPlayer ) return PLUGIN_HANDLED; get_user_name( iPlayer , argName , 32 ); if ( !g_Restrictions[id] ) { console_print( id , "* %s currently has no weapon restrictions." , argName ); return PLUGIN_HANDLED; } new iWeapon = GetWeaponIndex( argWeap , 2 ); if ( !iWeapon ) { console_print( id , "* Invalid weapon, please try again using part or all of the weapons name." ); return PLUGIN_HANDLED; } if ( 1 & (g_Restrictions[iPlayer] >> iWeapon) ) { //Remove restriction bit from bit field g_Restrictions[iPlayer] &= ~(1 << iWeapon); } else { console_print( id , "* %s does not have the %s as a weapon restriction." , argName , g_WeaponNames[GetWeaponIndex(argWeap,2)]); return PLUGIN_HANDLED; } set_hudmessage( 255 , 255 , 255 , 0.10 , 0.55 , 0 , 6.0 , 6.0 , 0.5 , 0.15 , 3 ); if ( !g_Restrictions[iPlayer] ) { format( szHUD , 255 , "[Weapon Restrictions]^n^nAll of your weapon restrictions have been removed.^n^nSay /restrict to view restrictions." ); show_hudmessage( iPlayer , szHUD ); get_user_authid( iPlayer , szAuthID , 34 ); nvault_remove( g_NvID , szAuthID ); CheckForwards(); } else { format( szHUD , 255 , "[Weapon Restrictions]^n^nThe following restriction has been removed:^n^n%s^n^nSay /restrict to view restrictions" , g_WeaponNames[GetWeaponIndex(argWeap,2)] ); show_hudmessage( iPlayer , szHUD ); SaveRestrict( iPlayer ); } return PLUGIN_HANDLED; } public ClearRestrict(id, level, cid) { if ( !cmd_access(id,level,cid,1) ) return PLUGIN_HANDLED; if ( read_argc() != 2 ) { console_print( id , "* Insufficient parameters. Proper usage: amx_restrictclear
" ); return PLUGIN_HANDLED; } new argName[33]; new szAuthID[35]; read_argv( 1 , argName , 32 ); new iPlayer = cmd_target( id , argName , 8 ); if ( !iPlayer ) return PLUGIN_HANDLED; get_user_name( iPlayer , argName , 32 ); if ( g_Restrictions[iPlayer] ) { get_user_authid( iPlayer, szAuthID, 34); nvault_remove( g_NvID , szAuthID); g_Restrictions[iPlayer] = 0; static szHUD[256]; format( szHUD , 255 , "[Weapon Restrictions]^n^nAll of your weapon restrictions have been removed.^n^nSay /restrict to view restrictions." ); set_hudmessage( 255, 255, 255, 0.10, 0.55, 0, 6.0, 6.0, 0.5, 0.15, 3 ); show_hudmessage( iPlayer , szHUD ); console_print( id , "* Weapon restrictions for %s have been cleared." , argName ); CheckForwards(); } else { console_print( id , "* %s currently has no weapon restrictions." , argName ); } return PLUGIN_HANDLED; } public SaveRestrict(id) { new szAuthID[35]; new szSaveString[12]; get_user_authid( id , szAuthID , 34 ); format( szSaveString , 11 , "%d", g_Restrictions[id] ); nvault_set( g_NvID , szAuthID , szSaveString ); } public ShowRestrict(id , level, cid) { if ( !cmd_access(id,level,cid,1) ) return PLUGIN_HANDLED; if ( read_argc() != 2 ) { console_print( id , "* Insufficient parameters. Proper usage: amx_restrictshow
" ); return PLUGIN_HANDLED; } new argName[33]; new szWeapons[162]; read_argv( 1 , argName , 32 ); new iPlayer = cmd_target( id , argName , 8 ); if ( !iPlayer ) return PLUGIN_HANDLED; get_user_name( iPlayer , argName , 32 ); if ( g_Restrictions[iPlayer] ) { for( new i = 1 ; i <= 30 ; i++ ) if( 1 & (g_Restrictions[iPlayer] >> i) ) format( szWeapons , 161 , "%s %s" , szWeapons , g_WeaponNames[i] ); console_print( id , "* %s currently has the following weapon restrictions: %s" , argName , szWeapons ); } else { console_print( id , "* %s currently has no weapon restrictions." , argName ); } return PLUGIN_HANDLED; } public GetWeaponIndex(szPartial[], iType) { //Type1: Entire weapon name entered as param, check if g_WeaponNames is within //Type2: Partial weapon entered as param, check if found within g_WeaponNames if ( iType == 1 ) { for( new i = 0; i < 33; i++ ) if ( containi( szPartial , g_WeaponNames[i] ) != -1 ) return i; } else { for( new i = 0; i < 33; i++ ) if ( containi( g_WeaponNames[i] , szPartial ) != -1 ) return i; } return 0; } public DropWeapon(id, iWeapon) { if ( !user_has_weapon(id,iWeapon) ) return PLUGIN_HANDLED; new iOldWeapon = get_user_weapon(id); new iWeaponEnt = fm_get_user_weapon_entity(id, iWeapon); if ( !iWeaponEnt ) return PLUGIN_HANDLED; ExecuteHam(Ham_RemovePlayerItem, id, iWeaponEnt); ExecuteHam(Ham_Item_Kill, iWeaponEnt); set_pev(id,pev_weapons,pev(id,pev_weapons) & ~(1<
= g_fMsgDelay[id]) || (iSaid[id] <= 3) ) { if ( fGameTime >= g_fMsgDelay[id] ) iSaid[id] = 0; client_print( id , print_chat , "%s" , szMessage ); iSaid[id]++; g_fMsgDelay[id] = fGameTime + 0.5; } } public SetWeaponPriority(id) { for ( new j = 0 ; j < WEAPONS ; ++j ) { if ( user_has_weapon( id , WEAPON_PRIORITY[j] ) ) { new wname[20] ; get_weaponname( WEAPON_PRIORITY[j] , wname , 19 ) ; engclient_cmd( id , wname ); break; } } } public ReimburseMoney(param[2]) { new id = param[0]; new iMoney = param[1]; fm_set_user_money( id , clamp( (get_pdata_int(id, OFFSET_CSMONEY) + iMoney ) , 0 , 16000 ) , 1 ); } public fm_set_user_bpammo(id, iType, iAmt) { new iOffset; switch ( iType ) { case CSW_HEGRENADE: iOffset = OFFSET_HE_AMMO; case CSW_SMOKEGRENADE: iOffset = OFFSET_SMOKE_AMMO; case CSW_FLASHBANG: iOffset = OFFSET_FLASH_AMMO; } if( iOffset ) set_pdata_int( id, iOffset , iAmt ); } public fm_get_user_bpammo(id, iType) { new iOffset; switch ( iType ) { case CSW_HEGRENADE: iOffset = OFFSET_HE_AMMO; case CSW_SMOKEGRENADE: iOffset = OFFSET_SMOKE_AMMO; case CSW_FLASHBANG: iOffset = OFFSET_FLASH_AMMO; } if( iOffset ) return get_pdata_int( id , iOffset ); return 0; } public fm_set_user_money(index, money, flash) { set_pdata_int( index , OFFSET_CSMONEY , money ); message_begin( MSG_ONE_UNRELIABLE , g_MsgMoney , _ , index ); write_long( money ); write_byte( flash ? 1 : 0 ); message_end(); } //Block weapon from being purchased and reimburse players money. public fw_AddPlayerItem( iPlayer ,iItem ) { static szClassname[32]; pev( iItem , pev_classname , szClassname , 31 ); new iWeaponIndex = GetWeaponIndex( szClassname , 1 ); if( !iWeaponIndex ) return HAM_IGNORED; if ( 1 & (g_Restrictions[iPlayer] >> iWeaponIndex) ) { static szMsg[99]; new iParam[2]; iParam[0] = iPlayer; iParam[1] = g_WeaponPrice[iWeaponIndex]; set_task( 0.15 , "ReimburseMoney" ,_, iParam , 2 ); format( szMsg , 98 , "* You are restricted from using %s. Your money has been reimbursed. [$%d]" , szClassname[7] , g_WeaponPrice[iWeaponIndex] ); PrintMsg( iPlayer , szMsg ); SetHamReturnInteger( 1 ); return HAM_SUPERCEDE; } return HAM_IGNORED; } //Block weapon pickup when walked over. (When weapon has been dropped by a player) public fw_Touch( iEnt , iPlayer ) { if ( !( 1 <= iPlayer <= g_MaxClients ) || !g_Restrictions[iPlayer] || !pev_valid(iEnt ) || !( pev( iEnt , pev_flags ) & FL_ONGROUND ) ) return FMRES_IGNORED; static szEntModel[32]; pev( iEnt , pev_model , szEntModel , 31 ); return ( 1 & ( g_Restrictions[iPlayer] >> GetWeaponIndex( szEntModel , 1 ) ) ) ? FMRES_SUPERCEDE : FMRES_IGNORED; }
Отправить
Загрузил
FliNe
2019-03-21 12:34:05
0
23
Установить на сервер
Скачать
Нет оплаченых серверов
Купить сервер CS 1.6
Купить сервер CS:GO
Купить сервер CSS v34
Подключить свой VDS к панели
Данная иконка означает, что плагин был проверен администрацией хостинга на тестовом сервере, и проблем с ним не было выявлено. Рекомендуем ставить исключительно проверенные плагины.
Плагин загружен на сервер, но проверка еще не была проведена.
CSHOST.COM.UA 2012-2024 Хостинг игровых серверов