Контакты Поиск

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

  • Страница 1 из 2
  • 1
  • 2
  • »
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Предметы.
Предметы.
Naykon Дата: Четверг, 15.03.2012, 12:15:40 | Сообщение # 1
Сообщений: 439
Репутация: -4 [ +/- ]
Подскажите код аптечки которая восстанавливает здоровье.... Хочу чтоб при написании команды !m игрок x мог дать аптечку а ей воспользоваться могли только Теры =)
 
Scarface_slv Дата: Четверг, 15.03.2012, 14:21:24 | Сообщение # 2
Сообщений: 738
Репутация: 61 [ +/- ]
Naykon хочешь?) так напиши если хочешь =)
 
Naykon Дата: Четверг, 15.03.2012, 17:47:02 | Сообщение # 3
Сообщений: 439
Репутация: -4 [ +/- ]
Code
Подскажите код аптечки которая восстанавливает здоровье.
Повторяю для Scarface_slv отдельно!
 
_wS_ Дата: Четверг, 15.03.2012, 18:22:08 | Сообщение # 4
Naykon, он прав, ты готовое хочешь получить =) Нет такой аптечки, которая здоровье восстанавливает. Есть проп модель, которой устанавливается скин аптечки. Ловится момент, когда игрок к ней прикасается

Code
HookSingleEntityOutput(entity, const String:output[], EntityOutput:callback , bool:once=false);
HookEntityOutput(const String:classname[], const String:output[], EntityOutput:callback);

OnBreak в основном используют.


Игрок прикоснулся, аптечка удалилась, у тебя есть его индекс и ты делаешь с ним что хочешь.
 
Naykon Дата: Пятница, 16.03.2012, 01:14:10 | Сообщение # 5
Сообщений: 439
Репутация: -4 [ +/- ]
СПС. А кто ж не хочет готовое =) но нет мне бы научиться писать все самому но для этого мне нужны некоторые примеры... - чего у меня вроде уже достаточно =)) сейчас мне хватит думаю этого... будут вопросы обращусь) СПС +))

Добавлено (15.03.2012, 20:30:06)
---------------------------------------------
GetClientHealth - если не ошибаюсь предмет нужно прицепить к этому??? Эта команда 100 хп возвращяет.. правильно?
подскажите где можно взять весь список props ... если такое возможно то с картинками =)))

Добавлено (16.03.2012, 01:14:10)
---------------------------------------------
Дайт пожалуйста пример когда игрок докасается к предмету (аптечка).... и как относится
OnBreak к предполагаемому скрипту? Я ж хочу чтоб игрок докаснувшись до аптечки востановил здоровье а не когда поламает предмет..

Code

HookSingleEntityOutput(entity, const String:output[], EntityOutput:callback , bool:once=false)
{
      GetClientHealth(entity);
}


Сам я в этом не смогу разобраться дайте пример ПЖЛсто =)!
 
_wS_ Дата: Пятница, 16.03.2012, 12:21:04 | Сообщение # 6
Смотри эту тему.
 
Naykon Дата: Пятница, 16.03.2012, 13:42:49 | Сообщение # 7
Сообщений: 439
Репутация: -4 [ +/- ]
1. Создал меню
2. Хочу чтоб при выборе menu1 создавался предмет при касании которого восстанавливалось ХП
В отдельности меню работает проверял menu1 на PrintToChat..

Сервер вылетает когда я нажимаю menu1 с ошибкой... "85/ - prop_dynamic: UTIL_SetModel: not precached: models/props/cs_office/vending_machine.mdl"

Code
ublic Com_Select(Handle:menu, MenuAction:action, ct_client, option)
{
       if (action == MenuAction_Select)
       {
           decl String:Info[25];
           GetMenuItem(menu, option, Info, sizeof(Info));
     if (StrEqual(Info, "menu1"))
     {
     CreateTimer(1.0, CreateEnt_Timer, ct_client);  
           }  
     else PrintToChatAll("Какашонок");
           Com_Menu(ct_client);
       }
       else if (action == MenuAction_End) CloseHandle(menu);
}

public Action:CreateEnt_Timer(Handle:timer, any:ct_client)
{
      GetClientAbsOrigin(ct_client, wS_Pos);

      // Немного изменяем координату 'x', чтобы предмет был создан рядом с игроком, а не на его месте
      wS_Pos[0] += 80.0;

      new index = CreateEntityByName("prop_dynamic");
      if (index > 0)
      {
          SetEntityModel(index, "models/props/cs_office/vending_machine.mdl");
          DispatchKeyValueVector(index, "origin", wS_Pos);

          // Устанавливаем предмету флаг '16 : Break on Touch'
          DispatchKeyValue(index, "spawnflags", "16");

          // Ловим момент, когда игрок дотрагивается до предмета и он ломается
          HookSingleEntityOutput(index, "OnBreak", EntityOutput:OnBreak_Func, true);  
      }
}  

public OnBreak_Func(const String:output[], caller, activator, Float:delay)
{
      if (activator > 0 && activator <= MaxClients)
      {
          // Предмет удалился, устанавливаем игроку 1 hp
          SetEntProp(activator, Prop_Send, "m_iHealth", 100);
      }
}
 
_wS_ Дата: Пятница, 16.03.2012, 14:14:46 | Сообщение # 8
Quote (Naykon)
Сервер вылетает когда я нажимаю menu1 с ошибкой... "85/ - prop_dynamic: UTIL_SetModel: not precached: models/props/cs_office/vending_machine.mdl"

Потому что невнимательный, не сделал:

Code
public OnMapStart()
{
     PrecacheModel("models/props/cs_office/vending_machine.mdl", true);
}


И зачем CreateTimer? В твоем случае он не нужен - опять не понимаешь смысл кода.
 
Naykon Дата: Суббота, 17.03.2012, 19:53:11 | Сообщение # 9
Сообщений: 439
Репутация: -4 [ +/- ]
Сервер не падает. предмет появляется но при косанию к нему хп не востанавливается... в чем же дело? ?

Добавлено (17.03.2012, 19:53:11)
---------------------------------------------
До сих про не получилось решить проблемму. у кажите где ошибка?

 
_wS_ Дата: Суббота, 17.03.2012, 20:25:01 | Сообщение # 10
Как? Если ты код не дал (тот что выше не весь, да и не ublic Com_Select, а public Com_Select).
 
Naykon Дата: Суббота, 17.03.2012, 20:29:19 | Сообщение # 11
Сообщений: 439
Репутация: -4 [ +/- ]
Code
#include <sourcemod>
#include <cstrike>
#include <sdktools>

new Float:wS_Pos[3];  

public OnPluginStart()
{
  HookEvent("player_say", Say);  
}

public OnMapStart()
{
PrecacheModel("models/props/cs_office/vending_machine.mdl", true);  
}

public Say(Handle:event, const String:name[], bool:dontBroadcast)
{
       new i = GetClientOfUserId(GetEventInt(event, "userid"));
       decl String:text[5];
       GetEventString(event, "text", text, sizeof(text));
       if (StrEqual(text, "fuck")) Com_Menu(i);
}

Com_Menu(i)
{
       new Handle:pMenu = CreateMenu(Com_Select);
       SetMenuTitle(pMenu, "Командная панель!\n \n");
       AddMenuItem(pMenu, "menu1", "Да");
       AddMenuItem(pMenu, "menu2", "Нет");
       AddMenuItem(pMenu, "menu3", "Нет");
       SetMenuExitButton(pMenu, true);
       DisplayMenu(pMenu, i, 0);
}

public Com_Select(Handle:menu, MenuAction:action, i, option)
{
       if (action == MenuAction_Select)
       {
           decl String:Info[25];
           GetMenuItem(menu, option, Info, sizeof(Info));
     if (StrEqual(Info, "menu1"))
     {
     CreateTimer(1.0, CreateEnt_Timer, i);
           }  
     else PrintToChatAll("Какашонок");
           Com_Menu(i);
       }
       else if (action == MenuAction_End) CloseHandle(menu);
}

public Action:CreateEnt_Timer(Handle:timer, any:i)
{
      GetClientAbsOrigin(i, wS_Pos);

      // Немного изменяем координату 'x', чтобы предмет был создан рядом с игроком, а не на его месте
      wS_Pos[0] += 80.0;

      new index = CreateEntityByName("prop_dynamic");
      if (index > 0)
      {
          SetEntityModel(index, "models/props/cs_office/vending_machine.mdl");
          DispatchKeyValueVector(index, "origin", wS_Pos);
     
          // Если бы это не сделали, то через предмет можно было проходить (solid 0) и OnTakeDamage не работало бы
          DispatchKeyValue(index, "solid", "6");  

          // Устанавливаем предмету флаг '16 : Break on Touch'
          DispatchKeyValue(index, "spawnflags", "16");

          // Ловим момент, когда игрок дотрагивается до предмета и он ломается
          HookSingleEntityOutput(index, "OnBreak", EntityOutput:OnBreak_Func, true);  
      }
}  

public OnBreak_Func(const String:output[], caller, activator, Float:delay)
{
      if (activator > 0 && activator <= MaxClients)
      {
          // Предмет удалился, устанавливаем игроку 1 hp
          SetEntProp(activator, Prop_Send, "m_iHealth", 100);
      }
}
 
_wS_ Дата: Суббота, 17.03.2012, 20:49:55 | Сообщение # 12
Перед твоими глазами готовый четкий пример, но ты все равно делаешь ошибки.
Где DispatchSpawn(index); ?

И я говорил, что в твоем случае нет необходимости использовать CreateTimer.
Вот в моем примере, в той ситуации, он был нужен.
 
Naykon Дата: Воскресенье, 18.03.2012, 12:13:43 | Сообщение # 13
Сообщений: 439
Репутация: -4 [ +/- ]
Почему когда я пробыую то же самое в эти models/items/healthkit.mdl тредмет не появляется?7
 
_wS_ Дата: Воскресенье, 18.03.2012, 12:18:54 | Сообщение # 14
Пробуй prop_physics, prop_physics_override
 
Naykon Дата: Четверг, 29.03.2012, 17:48:26 | Сообщение # 15
Сообщений: 439
Репутация: -4 [ +/- ]
спс по 2 урокам сделел скрипт востановления здоровья если ты x игрок =) аптечка вызывается через меню и появляется там де прицел =)

Добавлено (29.03.2012, 17:48:26)
---------------------------------------------

Code
    {
    decl Float:wS_Pos[3];
    wS_GetLookPos(ct_client, wS_Pos);

    new index = CreateEntityByName("prop_physics");
    if (index > 0)
    {
    SetEntityModel(index, "models/items/healthkit.mdl");
    DispatchKeyValueVector(index, "origin", wS_Pos);
     
    // Если бы это не сделали, то через предмет можно было проходить (solid 0) и OnTakeDamage не работало бы
    DispatchKeyValue(index, "solid", "6");  

    // Устанавливаем предмету флаг '16 : Break on Touch'
    DispatchKeyValue(index, "spawnflags", "16");
    DispatchSpawn(index);
     
    // Ловим момент, когда игрок дотрагивается до предмета и он ломается
    HookSingleEntityOutput(index, "OnBreak", EntityOutput:OnBreak_Func, true);  
    }
     }


Как установить таймер на предмет чтоб предмет пропал через 5 секунд после появления?????
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Предметы.
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: