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

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

  • Страница 1 из 1
  • 1
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Подарок
Подарок
panorama Дата: Понедельник, 26.08.2013, 09:56:09 | Сообщение # 1
Сообщений: 203
Репутация: 2 [ +/- ]
Здравствуйте !
Я пытаюсь узнать название модели подарка , но не как не получается !

Код

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

new Float:Pos[3];   

public OnPluginStart()   
{   
   RegConsoleCmd("prop", create_prop);    
}   

   

public Action:create_prop(i, args)   
{   
   GetClientAbsOrigin(i, Pos);   
   new String:buffer_modelsname[PLATFORM_MAX_PATH];
   Pos[0] += 80.0;   
   new index = CreateEntityByName("holiday_gift");   
   if (index > 0)   
   {   
    DispatchKeyValueVector(index, "origin", Pos);   
    GetEntPropString(index, Prop_Data, "m_ModelName", buffer_modelsname, sizeof(buffer_modelsname));
    DispatchSpawn(index);   
    CreateTimer(30.0, Prop_delete, index);   
    HookSingleEntityOutput(index, "OnStartTouch", OnStartTouch);
   }   
   PrintToChatAll("%s", buffer_modelsname);
   return Plugin_Handled;    
}   

public OnStartTouch(const String:output[], ent, activator, Float:delay)
{
      if(activator > 0){
    if(IsClientInGame(activator) && IsPlayerAlive(activator)){
     PrintToChatAll("Игрок %N Нашел подарок !", activator);
    }
   }
}

public Action:Prop_delete(Handle:event, any:index)   
{   
   ExtinguishEntity(index);   
   decl String:target[32];   
   Format(target, sizeof(target), "target_%d", index);   
   new ent = CreateEntityByName("env_entity_dissolver");     
   if (ent > 1)   
   {   
    DispatchKeyValue(index, "targetname", target);    
    DispatchKeyValue(ent, "dissolvetype", "3");   
    DispatchKeyValue(ent, "target", target);    
    AcceptEntityInput(ent, "Dissolve");   
    AcceptEntityInput(ent, "kill");    
   }   
}   

Этот пример немного изменен и был взят с этого форума ...


Сообщение отредактировал panorama - Понедельник, 26.08.2013, 09:56:21
 
_wS_ Дата: Понедельник, 26.08.2013, 10:10:10 | Сообщение # 2
Thanks
Код
new index = CreateEntityByName("holiday_gift");
DispatchSpawn(index);
decl String:model[PLATFORM_MAX_PATH]; model[0] = '\0';
GetEntPropString(index, Prop_Data, "m_ModelName", model, PLATFORM_MAX_PATH);
PrintToServer("-> '%s'", model);

-> 'models/items/cs_gift.mdl'
 
panorama Дата: Понедельник, 26.08.2013, 10:25:58 | Сообщение # 3
Сообщений: 203
Репутация: 2 [ +/- ]
Цитата (_wS_)

new index = CreateEntityByName("holiday_gift");
DispatchSpawn(index);
decl String:model[PLATFORM_MAX_PATH]; model[0] = '\0';
GetEntPropString(index, Prop_Data, "m_ModelName", model, PLATFORM_MAX_PATH);
PrintToServer("-> '%s'", model);

-> 'models/items/cs_gift.mdl'


Спасибо !
 
Geny Дата: Вторник, 27.08.2013, 23:05:32 | Сообщение # 4
Сообщений: 110
Репутация: 0 [ +/- ]
Закомпелировал пример из 1 поста и сам с помощью HookSingleEntityOutput(index, "OnBreak", EntityOutput:OnBreak_Func, true); пытаюсь чтоб "cs_gift.mdl" отлавливал момент кто поднимает его но ниче не получается.Дайте плиз пример с другим mdl все получается а с этим нет(((( карма наверно. дайте пример пожалуйсто.
 
panorama Дата: Среда, 28.08.2013, 07:04:07 | Сообщение # 5
Сообщений: 203
Репутация: 2 [ +/- ]
Цитата (Geny)
Закомпелировал пример из 1 поста и сам с помощью HookSingleEntityOutput(index, "OnBreak", EntityOutput:OnBreak_Func, true); пытаюсь чтоб "cs_gift.mdl" отлавливал момент кто поднимает его но ниче не получается.Дайте плиз пример с другим mdl все получается а с этим нет(((( карма наверно. дайте пример пожалуйсто.

Дело в том что вы пытаетесь создать не проп а подарок уже готовый .
Код

  new index = CreateEntityByName("holiday_gift");    

замени на
Код

new index = CreateEntityByName("prop_dynamic");  
 
Geny Дата: Среда, 28.08.2013, 13:05:43 | Сообщение # 6
Сообщений: 110
Репутация: 0 [ +/- ]
Код
DispatchKeyValue(index, "solid", "6");
как можно заменить чтоб игрок не приостанавливался когда касался предмета, а он сразу изчезал при чем чтоб
Код
HookSingleEntityOutput(index, "OnBreak", EntityOutput:OnBreak_Func, true);
работал

Добавлено (28.08.2013, 12:59:33)
---------------------------------------------

Код
public OnBreak_Func(const String:output[], index, activator, Float:delay)
{
      if (activator > 0 && activator <= MaxClients)
      {
    PrintToChatAll("Предмет поднял %N", activator);
      }
   else PrintToChatAll("FUCK");
}

Почему когда срабатывает эта функция всегда пишит FUCK. Такое чуство что воздух\Оружие\стены тоже могут касаться к предмету.... так как можно поставить условие чтоб мог поднять только человек.

Добавлено (28.08.2013, 13:05:43)
---------------------------------------------
Предмет создается в моменте playerDeath

 
ThRunningMan Дата: Среда, 28.08.2013, 15:50:38 | Сообщение # 7
Сообщений: 140
Репутация: 12 [ +/- ]
Мне кажется тут вообще никто не поинимает что ты хочешь...
Причем тут ломание прдмета и его качание и вообще как это можео был освязать...
Зачем вообще ломание прдмета....
Хукать качание и все, прикоснулся к нужному предмету удалил предмет коснувшемуся игроку дал пряник...


Сообщение отредактировал ThRunningMan - Среда, 28.08.2013, 15:53:05
 
Geny Дата: Четверг, 29.08.2013, 11:25:25 | Сообщение # 8
Сообщений: 110
Репутация: 0 [ +/- ]
Код
[11:23:39] Создатель JailBreake CSS Server: #include <sourcemod>
#include <cstrike>
#include <sdktools>
#include <sdktools_entoutput>
#include <sdktools_functions>
#include <sdkhooks>  
#include <clientprefs>
new Float:wS_PosBox[3];
public OnPluginStart()
{
  HookEvent("player_death", playerDeath);
}
public Action:playerDeath(Handle:event, const String:name[], bool:dontBroadcast)  
{
  new client = GetClientOfUserId(GetEventInt(event, "userid"));
  new killer = GetClientOfUserId(GetEventInt(event, "attacker"));
      GetClientAbsOrigin(client, wS_PosBox);
      new index = CreateEntityByName("prop_dynamic");
       if (index > 0)
       {
        SetEntityModel(index, "models/items/cs_gift.mdl");
        DispatchKeyValueVector(index, "origin", wS_PosBox);
        DispatchKeyValue(index, "solid", "6");
        DispatchKeyValue(index, "spawnflags", "16");
        DispatchSpawn(index);
        HookSingleEntityOutput(index, "OnBreak", EntityOutput:OnBreak_Func, true);
       }
}

public OnBreak_Func(const String:output[], index, activator, Float:delay)
{
      if (activator > 0 && activator <= MaxClients)
      {
    PrintToChatAll("Предмет поднял %N", activator);
      }
   else PrintToChatAll("ОШИБКА!!!!");
}

Цель. когда игрок умирает на его месте коробка. Но происходит всегда ошибка коробка создается и сразу изчезает и пишит PrintToChatAll("ОШИБКА!!!!");

помогите понять в чем дело?
 
_wS_ Дата: Четверг, 29.08.2013, 15:55:34 | Сообщение # 9
Thanks
"spawnflags" "16"

Код
16 : Break on Touch
32 : Break on Pressure

16 - как только к подарку что-то касается, он удаляется (я проверил щас, activator'ом был weapon_usp - поч сам не проверил?)
32 - удалится, только если на него встать/надавить

- или spawnflags 32 ставь
- или добавь к Y/X координатам немного, чтобы подарок создался в стороне
- или создай подарок с задержкой
- др.
 
Geny Дата: Пятница, 30.08.2013, 12:29:48 | Сообщение # 10
Сообщений: 110
Репутация: 0 [ +/- ]
Проврял оружием.. неуспел отписать. с "32" все вроде бы как норм но, хотелось бы чтобы при касании Террористов к подарку он не исчезал, только когда на него давят КТ он реагировал... условия в
Код
public OnBreak_Func типа if (activator > 0 && activator <= MaxClients && IsClientInGame(activator) && (GetClientTeam(activator) == 3) && IsPlayerAlive(activator))
не помогают как быть.
В идеале хотелось бы чтоб игрок живой за КТ касался - да имено касался "16" к подарку и происходило действие, но когда касаются Т то подарок не пропадал (игнорировал касание)
 
_wS_ Дата: Пятница, 30.08.2013, 12:53:04 | Сообщение # 11
Thanks
Нельзя так, SDKHook_StartTouch в помощь (хотя может там фильтр как-то настроить можно, не зн).
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Подарок
  • Страница 1 из 1
  • 1
Поиск: