XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
PROSHELDOTU
Здесь и сейчас.
offline
Опыт: 21,887
Активность:
Юниты не выполняют приказы
Как сделать так, чтобы владелец не мог отдавать приказы своим войскам, но сами они могли делать что угодно (атаковать, применять скилы, ходить), как в Castle Fight.
Старый 28.12.2011, 15:43
MyRtZ

offline
Опыт: 6,530
Активность:
Ghostbuster:
Как сделать так, чтобы владелец не мог отдавать приказы своим войскам, но сами они могли делать что угодно (атаковать, применять скилы, ходить), как в Castle Fight.
Можно сделать систему которая снимает выделение при выборке юнита.
Старый 28.12.2011, 15:45
DaeDR

offline
Опыт: 8,074
Активность:
А поиском пользоваться не пробовал
Старый 28.12.2011, 15:47
PROSHELDOTU
Здесь и сейчас.
offline
Опыт: 21,887
Активность:
Поиск.
легко сказать там им дофига
ты бы подсказал название
DaeDR, ща посмотрим
Ghostbuster добавил:
DaeDR, в общем так ничего полезного я там не нашёл
Старый 28.12.2011, 15:57
DaeDR

offline
Опыт: 8,074
Активность:
Вопрос вроде был таким. Что конкретно тебе надо?
DaeDR добавил:
Такой функции, как неподчинение юнитов нет, к сожалению (
Старый 28.12.2011, 16:00
MyRtZ

offline
Опыт: 6,530
Активность:
DaeDR:
Такой функции, как неподчинение юнитов нет, к сожалению (
Почему? Можно убирать на время выдиления юнита убирать "контроль" игроку через "SetPlayerAlliance"-типа функции
Событие триггера будет примерно таким:
        TriggerRegisterPlayerUnitEvent(trig, whichPlayer, EVENT_PLAYER_UNIT_SELECTED, null)
        TriggerRegisterPlayerUnitEvent(trig, whichPlayer, EVENT_PLAYER_UNIT_DESELECTED, null)
Отрывок из действий так:
      SetPlayerAlliance(a,a,ALLIANCE_SHARED_SPELLS, false)
Старый 28.12.2011, 16:05
LuNa_aDa
Trolling For Ever
offline
Опыт: 12,610
Активность:
омг
E;Player - Player 1 (Red) Selects a unit
C;(Owner of (Triggering unit)) Equal to (Triggering player)
A;Selection - Clear selection for Player 1 (Red)
Определенным триггером при необходимости выключать или включать этот
Старый 28.12.2011, 16:21
PROSHELDOTU
Здесь и сейчас.
offline
Опыт: 21,887
Активность:
Да кстати, если отменять выбор юнитов, то невозможно будет нормально посмотреть их статы.
к тому же в Castle Fight отмены выбора нет!
Старый 28.12.2011, 16:40
MyRtZ

offline
Опыт: 6,530
Активность:
Вот наделал делов.
Сделал карту-пример(по моему вышеописанному принципу работы).
Минус моей "системы" в том, что она стирает все сообщения выведенные на экран
» System code (cJass + vJass elements)
library ControlLost initializer Init
//Код понятный, нужно только трезво посмотреть
   define { UnitID = 'ogru' }

   private nothing ControlSet (player c, boolean b)
      { 
      SetPlayerAlliance(c,c,ALLIANCE_SHARED_CONTROL,b)
      
      if GetLocalPlayer() == c then
         ClearTextMessages()
      endif
   }

   private boolean ControlRemove()
      {
      if GetTriggerEventId() == EVENT_PLAYER_UNIT_SELECTED and \
         GetUnitTypeId(GetTriggerUnit()) == UnitID 
         {
         ControlSet(GetOwningPlayer(GetTriggerUnit()), false)
         return false
      }
        
      ControlSet(GetOwningPlayer(GetTriggerUnit()), true)
        
      return false
   }

    //===========================================================================
   private nothing Init() {
        trigger t = CreateTrigger()
        TriggerRegisterPlayerUnitEvent(t, Player(0), EVENT_PLAYER_UNIT_SELECTED, null)
        TriggerRegisterPlayerUnitEvent(t, Player(0), EVENT_PLAYER_UNIT_DESELECTED, null)
        TriggerAddCondition(t, Condition(function ControlRemove) )
        t = null
   }
    
endlibrary
Прикрепленные файлы
Тип файла: w3x ControlSystem.w3x (12.3 Кбайт, 9 просмотров )
Старый 28.12.2011, 16:42
PROSHELDOTU
Здесь и сейчас.
offline
Опыт: 21,887
Активность:
Кстати я даже с очищением выборки после пика умудрился дать юниту приказ не через буквы, а правой кнопкой мышки.
Старый 28.12.2011, 16:42
PROSHELDOTU
Здесь и сейчас.
offline
Опыт: 21,887
Активность:
MyRtZ, конечно прости, но это полный боян, который мне не нужен.
Ghostbuster добавил:
Ahotnik001, что что?
Старый 28.12.2011, 16:46
Clamp
Lost in space
offline
Опыт: 71,158
Активность:
Akvarium:
Решалась добавлением одной способности
нет, не только
MyRtZ:
SetPlayerAlliance
ужас какой
LuNa_aDa:
Clear selection for Player 1
мои глаза, мои глаза!
Короче.
  1. В РО юниту - возможные способности - страж (ward).
  2. В коде - юнит игрока получает приказ. Если игрок-владелец юнита держит выделение на юните, то отдать приказ цель-точка атаковать в куда надо.
Старый 28.12.2011, 16:56
MyRtZ

offline
Опыт: 6,530
Активность:
к тому же в Castle Fight отмены выбора нет!
в Castle Fight все делалось через приказ
SetPlayerAlliance
ужас
Почему? Не оптимально может, но работает на ура
Старый 28.12.2011, 17:00
Clamp
Lost in space
offline
Опыт: 71,158
Активность:
MyRtZ:
в Castle Fight
всё делалось именно так, как я и написал, как ты метко подметил.
MyRtZ:
Почему?
окей, опишем этот клинический случай подробнее...
  1. Чистятся сообщения на экране.
  2. Нельзя использовать как игровые слоты все 12 слотов, 2 слота уходят под ИИ.
  3. Значительное повышение лагов, даже без утечек, которых там и быть не может, ибо игрока, кстати, нулить не надо.
Старый 28.12.2011, 17:04
MyRtZ

offline
Опыт: 6,530
Активность:
Нельзя использовать как игровые слоты все 12 слотов, 2 слота уходят под ИИ.
Где же я там задействовал ИИ?)
окей, опишем этот клинический случай подробнее...
Как говорят "Пафос потек"
Старый 28.12.2011, 17:14
DaeDR

offline
Опыт: 8,074
Активность:
Где же я там задействовал ИИ?)
Смена игрока. Следовательно этот игрок должен быть компьютером(для последующего "неуправления").
Старый 28.12.2011, 17:20
MyRtZ

offline
Опыт: 6,530
Активность:
private nothing ControlSet (player c, boolean b)
      { 
      SetPlayerAlliance(c,c,ALLIANCE_SHARED_CONTROL,b)
      
      if GetLocalPlayer() == c then
         ClearTextMessages()
      endif
   }
Ну где здесь смена игрока?
Следовательно этот игрок должен быть компьютером(для последующего "неуправления").
"Триггерно" приказ отдается игроку-компьютеру чтобы он дал приказ юниту??
что за жуть вы пишите
Старый 28.12.2011, 17:25
PROSHELDOTU
Здесь и сейчас.
offline
Опыт: 21,887
Активность:
Clamp,
В коде - юнит игрока получает приказ. Если игрок-владелец юнита держит выделение на юните, то отдать приказ цель-точка атаковать в куда надо.
Но это ведь может повлиять на выполнение юнитом различных скилов.
Старый 28.12.2011, 17:59
LuNa_aDa
Trolling For Ever
offline
Опыт: 12,610
Активность:
» оффтоп (см-ам не смотреть)
меня так умиляет, когда MyRtZ начинает "отстаивать" свои познания в джассе. 10+ тем наблюдаю, а парень с критикой смирится не может
p.s
если начнешь делать собственную карту, вернее захочешь ее выложить в КиП, сделай ее на 150%, что бы ни один хгмовец не смог написать что то плохое, а то это тебя морально уничтожит
Старый 28.12.2011, 18:06
MyRtZ

offline
Опыт: 6,530
Активность:
Ghostbuster:
Но это ведь может повлиять на выполнение юнитом различных скилов.
По-другому как не этими способами в теме реализовать систему не получится, это ясно как день.
Тут у тебя выбор:
  • Clear selection
  • Remove control
  • Reorder
  • Воздействие внешних программ / редактирование клиента игроков
Другие способы есть конечно, но они не будут настолько оптимальны, как выложенные здесь
LuNa_aDa
Мне не стоит отвечать на критику? Убегать сразу?
Старый 28.12.2011, 18:09
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 16:42.