Half-Life и Adrenaline Gamer форум
http://aghl.ru/forum/

Satchels
http://aghl.ru/forum/viewtopic.php?f=28&t=270
Страница 1 из 1

Автор:  STas [ 28 янв 2011, 01:46 ]
Заголовок сообщения:  Satchels

Всем доброго времени суток.
Меня интересует плагин, который фиксит "проходимость" сквозь сатчелы.
Все, наверное, знают о баге, когда можно заблокировать взрывпакетами тот или иной проход, так вот мне нужно это как-то устранить.
Не завалялся ли у кого-то данный фикс?

Автор:  Anikes [ 28 янв 2011, 02:02 ]
Заголовок сообщения:  Re: Satchels

То есть хочется, что бы через них все проходили? А как же лулзы всякие связанные с ними? Или наоборот, что бы и для тебя самого они были тоже материальны? :)

Автор:  STas [ 28 янв 2011, 04:10 ]
Заголовок сообщения:  Re: Satchels

Нет, мне нужно чтобы они были для всех НЕ материальны.

Автор:  /dev/null [ 28 янв 2011, 05:40 ]
Заголовок сообщения:  Re: Satchels

Интересный запрос. Подождем ответов наших замечательных кодеров, мне самому интересно :)
Однако мне приходит в голову мысль, что даже если сатчел можно сделать нематериальным, то лаг при прохождении сквозь сатчел все равно останется, наверняка это проблема самого движка.
А в качестве обходных путей можно посоветовать лишь Satchels Remover от Lev или Destroyable Satchel Charge.

Автор:  KORD_12.7 [ 28 янв 2011, 06:13 ]
Заголовок сообщения:  Re: Satchels

STas, попробуй это:
Код:
/* AMX Mod X
*   Immaterial Satchels
*
* http://aghl.ru/forum/ - Russian Half-Life and Adrenaline Gamer Community
*
* This file is provided as is (no warranties)
*/

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "Immaterial Satchels"
#define VERSION "0.1"
#define AUTHOR "KORD_12.7"

public plugin_init()
{
   register_plugin(PLUGIN, VERSION, AUTHOR)

   RegisterHam(Ham_Think, "monster_satchel", "fw_HamThinkSatchel")   
}
         
public fw_HamThinkSatchel(ent)
{
   if(pev_valid(ent))
   {
      static Float: velocity[3]
      pev(ent, pev_velocity, velocity)
      
      if(!(velocity[0] || velocity[1] || velocity[2]) && (pev(ent, pev_solid) != SOLID_NOT))
         set_pev(ent, pev_solid, SOLID_NOT)   
   }
}

Автор:  /dev/null [ 28 янв 2011, 12:16 ]
Заголовок сообщения:  Re: Satchels

Работает, и даже вроде нет лага при прохождении, но сатчелы нельзя положить друг на друга столбиком как раньше =)
KORD_12.7 спасибо =)

Автор:  STas [ 29 янв 2011, 05:06 ]
Заголовок сообщения:  Re: Satchels

Огромное спасибо :)
Еще вопрос:
Можно ли написать плагин, который "сбрасывал бы" (то есть нельзя было бы их поставить) от места респа, в радиусе 1 метра, к примеру, растяжки?

Автор:  /dev/null [ 29 янв 2011, 07:09 ]
Заголовок сообщения:  Re: Satchels

Это уже другой топик. Думаю, если это возможно, то сложно. На каждую карту наверняка нужна своя карта респов для плагина. Плюс, а что плохого в минировании респов, если используется вышеприведенный плагин? Разве он вызывает застревание?
Если серьезно беспокоит тема сатчелов, то лучше использовать Satchels Remover.

Автор:  STas [ 29 янв 2011, 13:21 ]
Заголовок сообщения:  Re: Satchels

с сатчелами уже все решено благодаря этому плагину.
ремувер стоит и он тоже очень помогает.
но вот растяжки. они ведь тоже могут блокировать, и зачастую блокируют ими места респа.

Автор:  KORD_12.7 [ 29 янв 2011, 14:41 ]
Заголовок сообщения:  Re: Satchels

STas, насчет мин попробуй это:
Код:
/* AMX Mod X
*   Tripmine Blocker
*
* http://aghl.ru/forum/ - Russian Half-Life and Adrenaline Gamer Community
*
* This file is provided as is (no warranties)
*/

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "Tripmine Blocker"
#define VERSION "0.1"
#define AUTHOR "KORD_12.7"

#define BLOCK_RADIUS 50.0

public plugin_init()
{
   register_plugin(PLUGIN, VERSION, AUTHOR)
   
   RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_tripmine", "fw_TripminePrimaryAttackPre")
}

public fw_TripminePrimaryAttackPre(ent)
{
   if(!pev_valid(ent))
      return HAM_IGNORED
   
   static origin[3], classname[32]
   pev(ent, pev_origin, origin)
   
   ent = -1
   while((ent = engfunc(EngFunc_FindEntityInSphere, ent, origin, BLOCK_RADIUS)) != 0)
   {
      if(pev_valid(ent))
      {
         pev(ent, pev_classname, classname, charsmax(classname))
         
         if(equal(classname, "info_player_deathmatch") || equal(classname, "info_player_start"))
            return HAM_SUPERCEDE
      }
   }
   return HAM_IGNORED
}
#define BLOCK_RADIUS 50.0 - радиус (в юнитах), в котором ищется ближайший респ, если оный найден, то не даем поставить трипмину.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/