Code:
#pragma semicolon 1
#include <sourcemod>
#include <sdkhooks>
public OnPluginStart()
{
for(new i = 1; i <= MaxClients; i++)
{
if(IsClientValid(i))
{
SDKHook(i, SDKHook_OnTakeDamage, OnTakeDamage);
SDKHook(i, SDKHook_WeaponCanUse, OnWeapon);
SDKHook(i, SDKHook_WeaponSwitch, OnWeapon);
}
}
}
public OnClientPutInServer(i)
{
SDKHook(i, SDKHook_OnTakeDamage, OnTakeDamage);
SDKHook(i, SDKHook_WeaponCanUse, OnWeapon);
SDKHook(i, SDKHook_WeaponSwitch, OnWeapon);
}
public Action:OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype, &weapon, Float:damageForce[3], Float:damagePosition[3])
{
return Plugin_Handled;
}
public Action:OnWeapon(client, weapon)
{
return Plugin_Handled;
}
stock bool:IsClientValid(client)
{
if(client > 0 && client <= MaxClients && IsClientInGame(client))
{
return true;
}
return false;
}
Bewirkt das man kein Schaden macht ( durch ein Bug das man tzd. kein dmg macht), keine Waffen wechseln kann ( falls man mit Waffen spawnt) und keine Waffen aufheben.
Man könnte das ganze noch erweitern, z.B. das nur Knife erlaubt ist:
Code:
#pragma semicolon 1
#include <sourcemod>
#include <sdkhooks>
public OnPluginStart()
{
for(new i = 1; i <= MaxClients; i++)
{
if(IsClientValid(i))
{
SDKHook(i, SDKHook_OnTakeDamage, OnTakeDamage);
SDKHook(i, SDKHook_WeaponCanUse, OnWeapon);
SDKHook(i, SDKHook_WeaponSwitch, OnWeapon);
}
}
}
public OnClientPutInServer(i)
{
SDKHook(i, SDKHook_OnTakeDamage, OnTakeDamage);
SDKHook(i, SDKHook_WeaponCanUse, OnWeapon);
SDKHook(i, SDKHook_WeaponSwitch, OnWeapon);
}
public Action:OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype, &weapon, Float:damageForce[3], Float:damagePosition[3])
{
decl String:sWeapon[32];
GetClientWeapon(attacker, sWeapon, sizeof(sWeapon));
if(StrEqual(sWeapon[6], "knife"))
{
return Plugin_Continue;
}
return Plugin_Handled;
}
public Action:OnWeapon(client, weapon)
{
decl String:sWeapon[64];
GetEntityClassname(weapon, sWeapon, sizeof(sWeapon));
if(StrEqual(sWeapon[6], "knife"))
{
return Plugin_Continue;
}
return Plugin_Handled;
}
stock bool:IsClientValid(client)
{
if(client > 0 && client <= MaxClients && IsClientInGame(client))
{
return true;
}
return false;
}