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

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

  • Страница 1 из 1
  • 1
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » OnEntityCreated
OnEntityCreated
Sunday Дата: Понедельник, 03.06.2013, 01:03:49 | Сообщение # 1
Сообщений: 186
Репутация: 24 [ +/- ]
Мужики, подскажите пожалуйста. Есть функция в СДК Хукс: public OnEntityCreated(entity, const String:classname[]) Отлавливает создание Ентити.

Например игрок написал команду sm_p, теперь только при его выстреле из crossbow_bolt срабатывает PrintToChatAll функция. Как можно это сделать?

Код
#pragma semicolon 1
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>

public OnPluginStart()
{
      RegConsoleCmd("sm_p", CommandSay);
}

public Action:CommandSay(client, args)
{

}

public OnEntityCreated(entity, const String:classname[])
{
      if (StrEqual(classname, "crossbow_bolt", true))
      {
             PrintToChatAll("Только на мне :)))");
      }
}
 
horr0r Дата: Понедельник, 03.06.2013, 09:18:37 | Сообщение # 2
Сообщений: 149
Репутация: 40 [ +/- ]
Код
new Debug = 0;
public Action:CommandSay(client, args)  
{  
  if(debug == 0) debug = 1;
  else debug = 0;
}
public OnEntityCreated(entity, const String:classname[])  
{  
       if (StrEqual(classname, "crossbow_bolt", true))  
       {  
              if(debug > 0) PrintToChatAll("Только на мне :)))");  
       }  
}
 
TEIN Дата: Понедельник, 03.06.2013, 09:31:28 | Сообщение # 3
Сообщений: 563
Репутация: 78 [ +/- ]
Как узнать кто создал crossbow_bolt? Было бы проще
 
Sunday Дата: Понедельник, 03.06.2013, 11:48:25 | Сообщение # 4
Сообщений: 186
Репутация: 24 [ +/- ]
Цитата (DoK_1997)
Как узнать кто создал crossbow_bolt? Было бы проще

Док, как раз таки мне так и надо.

Сверху я всего лишь пример написал что бы было проще понять. А это я делаю для функции, игрок покупает в меню функцию для арбалета, функция поджигает стрелы))). Вся проблема в том что когда он покупает её, то всем дается эта функция, потому что отлов глобальный. Как же все таки сделать что бы только он мог пользоваться?


Сообщение отредактировал Sunday - Понедельник, 03.06.2013, 11:53:54
 
TEIN Дата: Понедельник, 03.06.2013, 11:52:44 | Сообщение # 5
Сообщений: 563
Репутация: 78 [ +/- ]
crossbow_bolt - что это? создается когда?
 
Sunday Дата: Понедельник, 03.06.2013, 11:54:31 | Сообщение # 6
Сообщений: 186
Репутация: 24 [ +/- ]
Цитата (DoK_1997)
crossbow_bolt - что это? создается когда?


Это стрела от Арбалета, которая в дальнейшем летит и убивает. Создается в момент выстрела по идеи.


Сообщение отредактировал Sunday - Понедельник, 03.06.2013, 11:54:53
 
TEIN Дата: Понедельник, 03.06.2013, 11:55:24 | Сообщение # 7
Сообщений: 563
Репутация: 78 [ +/- ]
А зачем тебе отлавливать создание?
 
Sunday Дата: Понедельник, 03.06.2013, 12:12:21 | Сообщение # 8
Сообщений: 186
Репутация: 24 [ +/- ]
мне нужно всего лишь понять как сделать, что бы эта функция

public OnEntityCreated(entity, const String:classname[])
{
if (StrEqual(classname, "crossbow_bolt", true))
{
if(debug > 0) PrintToChatAll("Только на мне :)))");
}
}

работала лишь для одного игрока.
 
horr0r Дата: Понедельник, 03.06.2013, 13:23:36 | Сообщение # 9
Сообщений: 149
Репутация: 40 [ +/- ]
Цитата (DoK_1997)
Как узнать кто создал crossbow_bolt? Было бы проще

Не гарантирую что получится
Код

public OnEntityCreated(entity, const String:classname[])  
{  
       new client = GetEntPropEnt(entity, Prop_Send, "m_hOwnerEntity");
       if (StrEqual(classname, "crossbow_bolt", true))  
       {  
              PrintToChat(client, "Только на мне :)))");  
       }  
}


Сообщение отредактировал horr0r - Понедельник, 03.06.2013, 13:24:38
 
Scarface_slv Дата: Понедельник, 03.06.2013, 13:35:24 | Сообщение # 10
Сообщений: 737
Репутация: 61 [ +/- ]
У меня вот так только получалось получить индекс игрока


Сообщение отредактировал Scarface_slv - Понедельник, 03.06.2013, 13:59:47
 
Sunday Дата: Понедельник, 03.06.2013, 21:30:16 | Сообщение # 11
Сообщений: 186
Репутация: 24 [ +/- ]
Цитата (Scarface_slv)

У меня вот так только получалось получить индекс игрока

Код

public OnEntityCreated(entity, const String:classname[])
{
if(StrEqual(classname, "crossbow_bolt"))
{
CreateTimer(0.01, Timer_Entity, entity);
}
}

public Action:Timer_Entity(Handle:timer, any:entity)
{
decl client;
client = GetEntPropEnt(entity, Prop_Send, "m_hThrower");
if(!IsValidEntity(client)) return Plugin_Stop;
if (client > 0 && client <= MaxClients)
{
PrintToChatAll("====>%N", client);
}
return Plugin_Stop;
}

не работает.

По гранате так можно найти потому что гранату выпускает человек. А тут стрелу выпускает арбалет,
client = GetEntPropEnt(entity, Prop_Send, "m_hThrower");
может по этому не работает.

Добавлено (03.06.2013, 21:30:16)
---------------------------------------------
Цитата (Scarface_slv)
Scarface_slv

За место:
Код
decl client;     
client = GetEntPropEnt(entity, Prop_Send, "m_hThrower");

изменил на:
Код
new client = GetEntPropEnt(entity, Prop_Send, "m_hOwnerEntity");


И все заработало! Спасибо Scarface_slv за помощь!


Сообщение отредактировал Sunday - Понедельник, 03.06.2013, 21:32:59
 
_wS_ Дата: Понедельник, 03.06.2013, 21:32:31 | Сообщение # 12
Thanks
Я впервый раз слышу о crossbow_bolt, т.к. не играл в эту игру, но у стрелы должны быть свои параметры (datamaps.txt), и если удастся узнать из какого она арбалета выпущена, то и удастся узнать владельца арбалета. Смотри параметры с именем owner.

------
А все, вопрос решил смотрю, ок.
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » OnEntityCreated
  • Страница 1 из 1
  • 1
Поиск: