Дублирует сообщение и нет сообщения о подключении.@Wightjeck, я тебе предложил вариант уже. Ты его пробовал использовать?
[CS:GO] Noblock for players and nades. - AlliedModdersМожет кто-то помочь? Нужен плагин для CSGO, который будет делать no block для игроков, но чтобы гранаты не пролетали сквозь них. Уже разные noblock плагины пробовал, во всех гранаты пролетают сквозь игрока.
С консоли если писать, не грузитПробовать так:
sm plugins reload "vip/VIP_Chat_3.1.2_scp".
Это не шутка и не бред. Это реально работает.
Не работает[CS:GO] Noblock for players and nades. - AlliedModders
с параметром sm_nonadeblock_enabled 0 попробуйте
Весь список
Работает, но мне не подходит этот вариант :З@Wightjeck, попробуй так, может поможет от дублирования
Чтобы как только игрок зашел на сервер, писало в чат о коннекте.@Wightjeck, а какой тебе нужен тогда?
С консоли если писать, не грузит
Да нет. Просто сообщение о подключении выводить, когда игрока еще не на сервере.@Wightjeck, а что вас конкретно интересует, кастомный ивент коннекта/дисконнекта и входа за команду или что то большее?
Никто не откликнулся,это сложный в написании плагин??Ребят сделайте кто нибудь простенький плагин который будет выдавать !glock !usp к примеру для csgo,и чтобы нельзя спамить было командой,например раз в 30 секунд могли писать
#include <sourcemod>
#include <cstrike>
#include <sdktools>
#include <influx/core>
#undef REQUIRE_PLUGIN
#include <influx/help>
enum
{
SLOT_PRIMARY,
SLOT_SECONDARY,
SLOT_MELEE
};
float g_flLastAllowed[INF_MAXPLAYERS];
bool g_bIsCSGO;
int g_Offset_hMyWeapons;
public Plugin myinfo =
{
author = INF_AUTHOR,
url = INF_URL,
name = INF_NAME..." - Give Weapons",
description = "Give or drop weapons.",
version = INF_VERSION
};
public void OnPluginStart()
{
g_bIsCSGO = ( GetEngineVersion() == Engine_CSGO );
if ( (g_Offset_hMyWeapons = FindSendPropInfo( "CCSPlayer", "m_hMyWeapons" )) == -1 )
{
SetFailState( INF_CON_PRE..."Couldn't find offset for m_hMyWeapons!" );
}
RegConsoleCmd( "sm_scout", Cmd_Scout );
RegConsoleCmd( "sm_usp", Cmd_Usp );
RegConsoleCmd( "sm_glock", Cmd_Glock );
RegConsoleCmd( "sm_knife", Cmd_Knife );
RegConsoleCmd( "sm_drop", Cmd_Drop );
RegConsoleCmd( "sm_dropweapon", Cmd_Drop );
RegConsoleCmd( "sm_removeweapon", Cmd_Drop );
RegConsoleCmd( "sm_removeweapons", Cmd_Drop );
if ( g_bIsCSGO )
{
RegConsoleCmd( "sm_hkp", Cmd_Hpk );
RegConsoleCmd( "sm_hkp2000", Cmd_Hpk );
}
}
public void Influx_RequestHelpCmds()
{
Influx_AddHelpCommand( "drop", "Remove all weapons." );
}
public void OnClientPutInServer( int client )
{
g_flLastAllowed[client] = 0.0;
}
public Action Cmd_Drop( int client, int args )
{
if ( client && IsPlayerAlive( client ) )
{
if ( Inf_HandleCmdSpam( client, 1.0, g_flLastAllowed[client], true ) )
{
return Plugin_Handled;
}
int wep;
for ( int i = 0; i < 128; i += 4 )
{
if ( (wep = GetEntDataEnt2( client, g_Offset_hMyWeapons + i )) > 0 )
{
RemovePlayerItem( client, wep );
}
}
}
return Plugin_Handled;
}
public Action Cmd_Scout( int client, int args )
{
GiveWeapon( client, g_bIsCSGO ? "weapon_ssg08" : "weapon_scout", SLOT_PRIMARY );
return Plugin_Handled;
}
public Action Cmd_Hpk( int client, int args )
{
GiveWeapon( client, "weapon_hkp2000", SLOT_SECONDARY );
return Plugin_Handled;
}
public Action Cmd_Usp( int client, int args )
{
GiveWeapon( client, g_bIsCSGO ? "weapon_usp_silencer" : "weapon_usp", SLOT_SECONDARY );
return Plugin_Handled;
}
public Action Cmd_Glock( int client, int args )
{
GiveWeapon( client, "weapon_glock", SLOT_SECONDARY );
return Plugin_Handled;
}
public Action Cmd_Knife( int client, int args )
{
GiveWeapon( client, "weapon_knife", SLOT_MELEE );
return Plugin_Handled;
}
stock void GiveWeapon( int client, const char[] wepname, int slot )
{
if ( !client ) return;
if ( !IsPlayerAlive( client ) ) return;
if ( Inf_HandleCmdSpam( client, 1.0, g_flLastAllowed[client], true ) )
{
return;
}
int wep;
if ( (wep = GetPlayerWeaponSlot( client, slot )) > 0 && IsValidEdict( wep ) )
{
RemovePlayerItem( client, wep );
}
GivePlayerItem( client, wepname );
// Equipping the weapon will for some reason delete it.
//if ( wep > 0 ) EquipPlayerWeapon( client, wep );
}
При этом плагине будет выводится стандартное сообщение о подключении ?В общем решил использовать OnClientPostAdminCheck так будет вовремя выводить сообщение при коннекте. Спасибо @Faya™ за помощь с новым синтаксисом. Держите, может кому пригодится.
P.S. Заметил правда одну штуку при коннекте, появляется пустая строка вверху чата (только у подключившегося игрока), не знаю из-за чего это. Может кто знает, отпишите, пожалуйста.
--- Добавлено позже ---
Добавил проверку дисконнекта на нахождение игрока в игре. Игрок мог грузиться, а потом выйти из загрузки и при этом в чат писало отключение игрока, хотя его на сервере даже не было.
а оно есть?При этом плагине будет выводится стандартное сообщение о подключении ?
Никто не откликнулся,это сложный в написании плагин??
Может кто нибудь тогда отвяжет его просто от influx ?
C-подобный:#include <sourcemod> #include <cstrike> #include <sdktools> #include <influx/core> #undef REQUIRE_PLUGIN #include <influx/help> enum { SLOT_PRIMARY, SLOT_SECONDARY, SLOT_MELEE }; float g_flLastAllowed[INF_MAXPLAYERS]; bool g_bIsCSGO; int g_Offset_hMyWeapons; public Plugin myinfo = { author = INF_AUTHOR, url = INF_URL, name = INF_NAME..." - Give Weapons", description = "Give or drop weapons.", version = INF_VERSION }; public void OnPluginStart() { g_bIsCSGO = ( GetEngineVersion() == Engine_CSGO ); if ( (g_Offset_hMyWeapons = FindSendPropInfo( "CCSPlayer", "m_hMyWeapons" )) == -1 ) { SetFailState( INF_CON_PRE..."Couldn't find offset for m_hMyWeapons!" ); } RegConsoleCmd( "sm_scout", Cmd_Scout ); RegConsoleCmd( "sm_usp", Cmd_Usp ); RegConsoleCmd( "sm_glock", Cmd_Glock ); RegConsoleCmd( "sm_knife", Cmd_Knife ); RegConsoleCmd( "sm_drop", Cmd_Drop ); RegConsoleCmd( "sm_dropweapon", Cmd_Drop ); RegConsoleCmd( "sm_removeweapon", Cmd_Drop ); RegConsoleCmd( "sm_removeweapons", Cmd_Drop ); if ( g_bIsCSGO ) { RegConsoleCmd( "sm_hkp", Cmd_Hpk ); RegConsoleCmd( "sm_hkp2000", Cmd_Hpk ); } } public void Influx_RequestHelpCmds() { Influx_AddHelpCommand( "drop", "Remove all weapons." ); } public void OnClientPutInServer( int client ) { g_flLastAllowed[client] = 0.0; } public Action Cmd_Drop( int client, int args ) { if ( client && IsPlayerAlive( client ) ) { if ( Inf_HandleCmdSpam( client, 1.0, g_flLastAllowed[client], true ) ) { return Plugin_Handled; } int wep; for ( int i = 0; i < 128; i += 4 ) { if ( (wep = GetEntDataEnt2( client, g_Offset_hMyWeapons + i )) > 0 ) { RemovePlayerItem( client, wep ); } } } return Plugin_Handled; } public Action Cmd_Scout( int client, int args ) { GiveWeapon( client, g_bIsCSGO ? "weapon_ssg08" : "weapon_scout", SLOT_PRIMARY ); return Plugin_Handled; } public Action Cmd_Hpk( int client, int args ) { GiveWeapon( client, "weapon_hkp2000", SLOT_SECONDARY ); return Plugin_Handled; } public Action Cmd_Usp( int client, int args ) { GiveWeapon( client, g_bIsCSGO ? "weapon_usp_silencer" : "weapon_usp", SLOT_SECONDARY ); return Plugin_Handled; } public Action Cmd_Glock( int client, int args ) { GiveWeapon( client, "weapon_glock", SLOT_SECONDARY ); return Plugin_Handled; } public Action Cmd_Knife( int client, int args ) { GiveWeapon( client, "weapon_knife", SLOT_MELEE ); return Plugin_Handled; } stock void GiveWeapon( int client, const char[] wepname, int slot ) { if ( !client ) return; if ( !IsPlayerAlive( client ) ) return; if ( Inf_HandleCmdSpam( client, 1.0, g_flLastAllowed[client], true ) ) { return; } int wep; if ( (wep = GetPlayerWeaponSlot( client, slot )) > 0 && IsValidEdict( wep ) ) { RemovePlayerItem( client, wep ); } GivePlayerItem( client, wepname ); // Equipping the weapon will for some reason delete it. //if ( wep > 0 ) EquipPlayerWeapon( client, wep ); }