|
|
|
|
Наработка передвиженя крипов под таймер.
|
|
lawson | Дата: Суббота, 22 Октября 2011, 19:40:06 | Сообщение # 1 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| И так сидя и дорабатывая свою карту я вот вспомнил что какой то хороший человек писал что самая идельная система перемещения крипов по карте без потери курса - это перемещения с помощью периодического триггера, ну так как мы более продвинутые только сейчас до меня дошло, а почему бы не сделать такую муишную систему на таймере. Возможно я изобрел велосипед, но а может кому та будет полезно. И вот вам простейший пример наработки. Вот сам код и пример использования. Code globals hashtable Hash = InitHashtable() endglobals
function CreepMove takes nothing returns nothing local timer t = GetExpiredTimer() local group g = LoadGroupHandle(Hash, GetHandleId(t), 0) call GroupPointOrder(g, "attack", GetRectCenterX(LoadRectHandle(Hash, GetHandleId(t)), 1), GetRectCenterY(LoadRectHandle(Hash, GetHandleId(t)), 1)) if (FirstOfGroup(g) == null) then call DestroyGroup(g) call FlushChildHashtable(Hash, GetHandleId(t)) call DestroyTimer(t) endif set t = null set g = null endfunction
function UnitMoveTo takes integer id, integer n, rect s, rect t, integer p returns nothing local group g = CreateGroup() local timer k = CreateTimer() loop exitwhen n == 0 call GroupAddUnit(g, CreateUnit(Player(p - 1), id, GetRectCenterX(s), GetRectCenterY(s), 0)) set n = n - 1 endloop call GroupPointOrder(g, "attack", GetRectCenterX(t), GetRectCenterY(t)) call TimerStart(k, 5, true, function CreepMove) call SaveGroupHandle(Hash, GetHandleId(k), 0, g) call SaveRectHandle(Hash, GetHandleId(k), 1, t) set g = null set k = null set s = null set t = null endfunction Пример использования: Просто впихните это код в свою карту в нестандарный код, для использования пишите так UnitMoveTo(@@@@, ####, $$$$, %%%%, &&&&) @@@@ - рав код юнита которого хотите создать(узнать можно: зайти в раздел войска и нажать ctrl+ d) #### - ваше кол-во юнитов для создания $$$$ - область создания юнитов принимают значени gg_rct_область %%%% - область куда надо юнитов послать тоже принимает значение gg_rct_ область &&&& - номер игрока для которого хотите создать юнита, принимает значения от 1 - 12 ПРИМЕР: UnitMoveTo('edoc', 3, gg_rct_base, gg_rct_base2, 1) Это создаст нам 3 юнита в области base для красного игрока и пошлет его в область base2 нападая на противников, без потери курса или возвращения как иногда бывает. Удачи.Всего наилучшего Lawson.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Воскресенье, 23 Октября 2011, 14:35:40 |
|
|
|
Ty3uK | Дата: Суббота, 22 Октября 2011, 19:47:35 | Сообщение # 2 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Плз код из под спойлера в личку
|
|
|
|
lawson | Дата: Суббота, 22 Октября 2011, 19:50:55 | Сообщение # 3 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Ty3uK, а тебе то зачем?
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Суббота, 22 Октября 2011, 20:14:56 |
|
|
|
Ty3uK | Дата: Суббота, 22 Октября 2011, 20:15:31 | Сообщение # 4 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Лавс, зачет. Но гетхэндл можно было бы вынести в переменную- и код лучше выглядит, и компу легче. И периодический таймер перед уничтожением надо паузить- избежишь трабл (по своему опыту говорю). А вообще- молодец
|
|
|
|
lawson | Дата: Суббота, 22 Октября 2011, 20:19:42 | Сообщение # 5 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (Ty3uK) по своему опыту говорю По своему опыту говорю, у меня с таймерами все в порядке, даже если я их не паужу.Quote (Ty3uK) А вообще- молодец Та пфф делать было нечего, вдруг открыл свою карту и думал чеб еще добавить вот решил сделать такую системку перемещения, так как бывало что крипы возвращались назад.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Суббота, 22 Октября 2011, 20:20:41 |
|
|
|
Ty3uK | Дата: Суббота, 22 Октября 2011, 20:23:17 | Сообщение # 6 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Ну, дело твое наработка подойдет нубам, но есть одно но- вынеси глобалки из кастом кода в редактор переменных, ибо некоторые не юзают jngp, а как переделать- у них мозгов не хватит
|
|
|
|
lawson | Дата: Суббота, 22 Октября 2011, 20:30:57 | Сообщение # 7 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (Ty3uK) подойдет нубам Нубам не нубам, но а всетаки в любой практически АоС есть крипы, чтобы свою систему не изобретать или не делать 100500 триггер(это я про гуишников) вот готовое решение в виде одной функции.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
Ty3uK | Дата: Суббота, 22 Октября 2011, 20:32:39 | Сообщение # 8 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Я знаю но глобалки лучше перенести
|
|
|
|
vov68 | Дата: Среда, 26 Октября 2011, 15:45:33 | Сообщение # 9 |
10 уровень
Группа: Проверенные
Сообщений: 1329
Награды: 3
Блокировки:
| Quote (lawson) не делать 100500 триггер(это я про гуишников)
всё-таки интересно, почему он который раз выдаёт такое количество триггеров? не мильон, не тысчу, а именно это: 100500?
кстати, а с поворотом чего делать будем? а если поворовов несколько?
Зачем делать для других новые карты... ... лучше устроить коту божественный почесон. :)
|
|
|
|
Ty3uK | Дата: Среда, 26 Октября 2011, 16:59:36 | Сообщение # 10 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| В теле таймера чекать регион, например. Не?
|
|
|
|
lawson | Дата: Среда, 26 Октября 2011, 21:43:06 | Сообщение # 11 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (vov68) а если поворовов несколько? твои предложения? Эта система на перемещение из А в Б, без посторонних точек. Добавлено (26 Октябрь 2011, 21:41:46) --------------------------------------------- Quote (vov68) он который раз выдаёт Эт почему?
Добавлено (26 Октябрь 2011, 21:43:06) --------------------------------------------- Ty3uK, Кстати сделал всю системку через структурку. Но думаю выкладывать нет смысла так как сложно будет разобраться с ее созданием.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Среда, 26 Октября 2011, 21:44:25 |
|
|
|
Ty3uK | Дата: Среда, 26 Октября 2011, 22:24:52 | Сообщение # 12 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Бee, Лавс... Структуры, либы, методы... Говножасс же... Чем не угодил обычный жасс2?
|
|
|
|
lawson | Дата: Среда, 26 Октября 2011, 23:14:19 | Сообщение # 13 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Ty3uK, Ха знаешь как удобно оперировать структурами, это как писать свои классы, где угодно можешь использовать, вместо прописывания кучи глобалок и передачи данных им чезер триггер(включая любимый хеш), передавать любым переменным любые свойтсва, конечно жасс не такой мощный язык, но всеравно использую структуру, намного облегчает работу.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Среда, 26 Октября 2011, 23:17:09 |
|
|
|
Ty3uK | Дата: Четверг, 27 Октября 2011, 07:07:06 | Сообщение # 14 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Знаю, но знаешь, как потом не удобно людям это без jngp использовать? А точнее не возможно. А упростить себе жизнь структурами до невозможности не есть грамотный подход. Всякие cjass и vjass... Говножассы Добавлено (27 Октябрь 2011, 07:07:06) --------------------------------------------- Хэш работает быстрее структур, если что. И глобалки я уже давно не использую.
|
|
|
|
lawson | Дата: Четверг, 27 Октября 2011, 10:05:52 | Сообщение # 15 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (Ty3uK) И глобалки я уже давно не использую. Я тоже "пытаюсь" у меня на карте 4 глобалки все они направлены на работу ИИ без них не обойтись. Глоблки как сама структура, я имел ввиду и локалки , вместо каждого раза записывания в хеш данных ты просто можешь одной строкой передать их структурой любой другой переменной в любом триггере. Ты просто не пробовал это очень удобно, даже чем хеш.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Четверг, 27 Октября 2011, 10:15:51 |
|
|
|
Ty3uK | Дата: Четверг, 27 Октября 2011, 10:29:55 | Сообщение # 16 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Я пробовал - писал библиотеку векторов. Это с одной стороны удобно, но палка о двух концах.
|
|
|
|
vov68 | Дата: Пятница, 28 Октября 2011, 12:38:14 | Сообщение # 17 |
10 уровень
Группа: Проверенные
Сообщений: 1329
Награды: 3
Блокировки:
| а вот это у себя спрашивай... ты в третий раз выдаёшь это число. это что: привычка или параноя?Quote (lawson) твои предложения? я то здесь при чём? это ж ты наработку выставил...
а маршрут крипов может быть и извилистым...Quote (lawson) а всетаки в любой практически АоС есть крипы,
Зачем делать для других новые карты... ... лучше устроить коту божественный почесон. :)
|
|
|
|
lawson | Дата: Пятница, 28 Октября 2011, 16:13:38 | Сообщение # 18 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (vov68) крипов может быть и извилистым... я знаю, а может еще 1500 условий передвиженя крипов, мне все их учитывать!?
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
Ajaccio | Дата: Пятница, 28 Октября 2011, 18:25:01 | Сообщение # 19 |
7 уровень
Группа: Проверенные
Сообщений: 299
Награды: 1
Репутация: 239
Блокировки:
| Quote (Ty3uK) Всякие cjass и vjass... Говножассы. Quote (Ty3uK) Хэш работает быстрее структур, если что. Было неоднократно доказано обратное (и даже на этом форуме).
XOR EAX, EAX MOV EAX, 00H ;; NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.
|
|
|
|
Ty3uK | Дата: Пятница, 28 Октября 2011, 18:43:07 | Сообщение # 20 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| ХАТ ещё не "наше всё", если он работает на какие-то 100500 стопицотых доли секунды быстрее. и массивы ограничивают максимум объектов до 8192
|
|
|
|
Ajaccio | Дата: Пятница, 28 Октября 2011, 19:15:13 | Сообщение # 21 |
7 уровень
Группа: Проверенные
Сообщений: 299
Награды: 1
Репутация: 239
Блокировки:
| Да всё равно на самом деле, кто из них быстрее и на сколько мгновений. Quote (Ty3uK) Хэш работает быстрее структур, если что. Просто заметил не верное утверждение.
XOR EAX, EAX MOV EAX, 00H ;; NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.
|
|
|
|
Ty3uK | Дата: Пятница, 28 Октября 2011, 20:09:24 | Сообщение # 22 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Ajaccio, ну оно не неверно в корне. С этим можно поспорить)
|
|
|
|
Diabfall | Дата: Понедельник, 31 Октября 2011, 07:26:12 | Сообщение # 23 |
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
| Quote (lawson) без потери курса или возвращения как иногда бывает. А ты обычным способом тоже через группы их двигаться заставлял? Если да, то возможно проблема из-за этого.
|
|
|
|
vov68 | Дата: Понедельник, 31 Октября 2011, 13:40:24 | Сообщение # 24 |
10 уровень
Группа: Проверенные
Сообщений: 1329
Награды: 3
Блокировки:
| Quote (lawson) может еще 1500 условий передвиженя
у тебя мания больших чисел - там количество условий и до десятка не дотянет.
но если серьёзно, то основная проблема не в том, по какой механике направить крипов по прямой, а в том, чтобы они шли по установленному маршруту, иногда извилистому, и что линий возможно больше чем одна и их длинна различна.
Зачем делать для других новые карты... ... лучше устроить коту божественный почесон. :)
|
|
|
|
SirNikolas | Дата: Вторник, 01 Ноября 2011, 12:48:27 | Сообщение # 25 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (Ty3uK) Всякие cjass и vjass... Говножассы Да вы расист, друг мой.Quote (Ty3uK) и массивы ограничивают максимум объектов до 8192 Можно увеличить максимум вручную, допустим, в четыре раза:Code struct abc[32768] //... endstruct vov68, поищи на сайте систему от РаЗаРт'а, в ней крипы могут ходить по произвольной траектории.
|
|
|
|
|
|
|
|
|
|
|