Можно костылями сделать, это будет куда лучше чем постоянно OnTakeDamage трогатьа как можно иначе?
Продеманстрируйте пожалуйста и пользователи спасибо скажутМожно костылями сделать, это будет куда лучше чем постоянно OnTakeDamage трогать![]()
По идеи больше минусов будет, чем толку. Или распишите подробнее@Nekro, Есть возможность добавить чтобы реген хп был, а то свои спецом кидают молотов и гранаты под своих.
Разве в ксго нет стандартных кваров защиты при появлении игрока?I have a suggestion! Add spawn protection with a timer. For example 10 seconds from the round start you can't damage teammates.
This would be nice protection against spawn griefers.
Добавить проверку, если client > 0L 05/20/2021 - 09:00:54: [SM] Exception reported: Client index 0 is invalid
L 05/20/2021 - 09:00:54: [SM] Blaming: dmg_molotov.smx
L 05/20/2021 - 09:00:54: [SM] Call stack trace:
L 05/20/2021 - 09:00:54: [SM] [0] GetClientTeam
L 05/20/2021 - 09:00:54: [SM] [1] Line 36, dmg_molotov.sp::OnTakeDamage
Че делать? Засоряет /logs
куда добавить ?)Добавить проверку, если client > 0
Сейчас скину строку и что нужно заменитькуда добавить ?)
if ((iVictim || iAttacker) < 1) return Plugin_Handled
компилировать нужно или просто закинуть в /scripting и все?Сейчас скину строку и что нужно заменить
Сообщения автоматически склеены:
После 27 строки вставить
C-подобный:if ((iVictim || iAttacker) < 1) return Plugin_Handled
Скомпилироватькомпилировать нужно или просто закинуть в /scripting и все?
Каждую секунду спамит
Можно попробовать вот этот код:Че делать? Засоряет /logs
#pragma semicolon 1
#pragma newdecls required
#include <sdkhooks>
#include <sdktools_gamerules>
public void OnPluginStart()
{
for(int i = 1; i <= MaxClients; i++) if(IsClientInGame(i)) OnClientPutInServer(i);
}
public void OnClientPutInServer(int client)
{
SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
}
public Action OnTakeDamage(int victim, int& attacker, int& inflictor, float& damage, int& damagetype)
{
return attacker > 0 && attacker <= MaxClients && !(damagetype & (DMG_BURN|DMG_BLAST))
&& !GameRules_GetProp("m_bWarmupPeriod") && IsClientInGame(attacker)
&& GetClientTeam(victim) == GetClientTeam(attacker) ? Plugin_Handled : Plugin_Continue;
}
А чего victim на 0 не проверяешь?Можно попробовать вот этот код:C-подобный:#pragma semicolon 1 #pragma newdecls required #include <sdkhooks> #include <sdktools_gamerules> public void OnPluginStart() { for(int i = 1; i <= MaxClients; i++) if(IsClientInGame(i)) OnClientPutInServer(i); } public void OnClientPutInServer(int client) { SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage); } public Action OnTakeDamage(int victim, int& attacker, int& inflictor, float& damage, int& damagetype) { return attacker > 0 && attacker <= MaxClients && !(damagetype & (DMG_BURN|DMG_BLAST)) && !GameRules_GetProp("m_bWarmupPeriod") && IsClientInGame(attacker) && GetClientTeam(victim) == GetClientTeam(attacker) ? Plugin_Handled : Plugin_Continue; }
ЕвентПродеманстрируйте пожалуйста и пользователи спасибо скажут
Сообщения автоматически склеены:
По идеи больше минусов будет, чем толку. Или распишите подробнее
Сообщения автоматически склеены:
Разве в ксго нет стандартных кваров защиты при появлении игрока?
player_hurt
хукаешь, и выдаёшь потерянное HP. Вот тебе костыль, который на стрельбу никак не влияет =)Исправление ошибки
C-подобный:05/18/2021 - 00:54:48: [SM] Exception reported: Client index -1 is invalid L 05/18/2021 - 00:54:48: [SM] Blaming: dmg_molotov.smx L 05/18/2021 - 00:54:48: [SM] Call stack trace: L 05/18/2021 - 00:54:48: [SM] [0] IsClientInGame L 05/18/2021 - 00:54:48: [SM] [1] Line 28, dmg_molotov.sp::OnTakeDamage