Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Ищу плагин который не даёт убить в спину с ножа
Levchik97 Дата: Пятница, 05.12.2014, 13:04:37 | Сообщение # 1
Сообщений: 4
Репутация: 0 [ +/- ]
Ищу плагин который не даёт убить в спину с ножа. Где-то на просторах интернета видел, но забыл где.
Пожалуйста, помогите найти.
Заранее благодарен!
 
dron216 Дата: Пятница, 05.12.2014, 20:53:28 | Сообщение # 2
Сообщений: 151
Репутация: 18 [ +/- ]
Дык его легко и самому написать... Хукаешь урон по игроку, проверяешь с кого-го оружия нанесен урон, если с ножа И урон более 100: то удар нанесен в спину и зная это можешь изменить урон на 65...
 
BarD Дата: Суббота, 06.12.2014, 16:31:44 | Сообщение # 3
Сообщений: 943
Репутация: 137 [ +/- ]
Код

#pragma semicolon 1

#include <sourcemod>
#include <sdktools>
#include <sdkhooks>

public OnClientPostAdminCheck(client) // Когда игрок заходит, то начинаем ловить событие получения урона
{
   if (IsClientInGame(client) && client) SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);  
}

public Action:OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype, &weapon, Float:damageForce[3], Float:damagePosition[3]) //Когда игрок получает урон
{
   decl String:weap[20];
   GetClientWeapon(attacker, weap, sizeof(weap));
   if (StrContains(weap, "weapon_knif") != -1) //Если с ножа
   {
     if (damage > 100) // Если урон больше 100 (со спины)
     {
     damage = 65.0; //Ставим 65  
  return Plugin_Changed; //Применяем изменения
      }
   }
   return Plugin_Continue; //Продолжаем
}

public OnClientDisconnect(client) //когда игрок выходит, перестаем ловить событие получения урона
{
   if (IsClientInGame(client) && client) SDKUnhook(client, SDKHook_OnTakeDamage, OnTakeDamage);  
}
 
_wS_ Дата: Суббота, 06.12.2014, 17:35:13 | Сообщение # 4
BarD, зачем такой грязный код даешь? :\

1. В OnClientPostAdminCheck это лишнее "if (IsClientInGame(client) && client)", а если бы и нужно было,
то наоборот "if (client > 0 && IsClientInGame(client))"

2. Перед GetClientWeapon attacker'а не проверяешь, может там индекс 0 и тд
3. Делать Unhook после выхода игрока не нужно, SDKHooks сам это делает, и опять делаешь проверку наоборот

Цитата dron216 ()
если с ножа И урон более 100: то удар нанесен в спину

Не так все просто, а если он левой бьет? С координатами мудрить надо.
 
serm Дата: Воскресенье, 07.12.2014, 05:34:50 | Сообщение # 5
Сообщений: 137
Репутация: 7 [ +/- ]
Цитата BarD ()
if (StrContains(weap, "weapon_knif") != -1) //Если с ножа

weapon_knif
pipec
 
BarD Дата: Воскресенье, 07.12.2014, 08:25:35 | Сообщение # 6
Сообщений: 943
Репутация: 137 [ +/- ]
_wS_,
Цитата _wS_ ()
1. В OnClientPostAdminCheck это лишнее "if (IsClientInGame(client) && client)", а если бы и нужно было,
то наоборот "if (client > 0 && IsClientInGame(client))"

После нескольких случаев ошибок в логах "Client index is not in game", я ставлю проверки буквально везде. Лишняя не помешает)

Цитата _wS_ ()
2. Перед GetClientWeapon attacker'а не проверяешь, может там индекс 0 и тд

Согласен. Здесь забыл проверку.

Цитата _wS_ ()
3. Делать Unhook после выхода игрока не нужно, SDKHooks сам это делает

Этого не знал. Спасибо за ценный совет.

Цитата _wS_ ()
Не так все просто, а если он левой бьет? С координатами мудрить надо.
 

Я так понял, что ему нужно, чтоб игрока с 1 удара ножом, т.е. в спину, убить было нельзя. Если урон больше 100, то это в любом случае удар ножом в спину. Следовательно, превращаем его в 65.

serm, я пробовал через StrEqual делать, как положено, но, по каким-то непонятным причинам, урон либо не проходил, либо не изменялся. Пришлось импровизировать.
 
Levchik97 Дата: Вторник, 09.12.2014, 00:08:18 | Сообщение # 7
Сообщений: 4
Репутация: 0 [ +/- ]
Спасибо
 
REgion Дата: Вторник, 17.02.2015, 08:39:31 | Сообщение # 8
Сообщений: 31
Репутация: -2 [ +/- ]
BarD, Барт ты спешил походу?

Я подправил код, вот держи.

Гости не могут скачивать файлы
 
SourceSamil Дата: Вторник, 17.02.2015, 09:55:32 | Сообщение # 9
Сообщений: 237
Репутация: [ +/- ]
Я же выкладывал мод с настройками
Код
http://world-source.ru/forum/129-4133-1
 
REgion Дата: Вторник, 17.02.2015, 10:05:49 | Сообщение # 10
Сообщений: 31
Репутация: -2 [ +/- ]
SourceSamil, Ну а он хочет чтобы было отдельно)
 
SourceSamil Дата: Вторник, 17.02.2015, 10:15:03 | Сообщение # 11
Сообщений: 237
Репутация: [ +/- ]
А не проще выключить другие функции?
 
REgion Дата: Вторник, 17.02.2015, 12:05:30 | Сообщение # 12
Сообщений: 31
Репутация: -2 [ +/- ]
SourceSamil, Ну это то да
 
  • Страница 1 из 1
  • 1
Поиск: