Сейчас 16:59:06 Суббота, 4 мая, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Раздел картостроителя » Наработка передвиженя крипов под таймер. (Просто и без особых усилий)
Наработка передвиженя крипов под таймер.
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
Блокировки:
Плз код из под спойлера в личку

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

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
Блокировки:
Лавс, зачет. Но гетхэндл можно было бы вынести в переменную- и код лучше выглядит, и компу легче. И периодический таймер перед уничтожением надо паузить- избежишь трабл (по своему опыту говорю). А вообще- молодец :)

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

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, а как переделать- у них мозгов не хватит ^_^

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|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
Блокировки:
Я знаю :) но глобалки лучше перенести ;)

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

vov68Дата: Среда, 26 Октября 2011, 15:45:33 | Сообщение # 9
10 уровень
Группа: Проверенные
Сообщений: 1329
Награды: 3
Блокировки:
Quote (lawson)
не делать 100500 триггер(это я про гуишников)


всё-таки интересно, почему он который раз выдаёт такое количество триггеров? не мильон, не тысчу, а именно это: 100500?

кстати, а с поворотом чего делать будем? а если поворовов несколько?


Зачем делать для других новые карты...
... лучше устроить коту божественный почесон. :)
 

Ty3uKДата: Среда, 26 Октября 2011, 16:59:36 | Сообщение # 10
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
В теле таймера чекать регион, например. Не?

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

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?

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

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)
---------------------------------------------
Хэш работает быстрее структур, если что. И глобалки я уже давно не использую.


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

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
Блокировки:
Я пробовал - писал библиотеку векторов. Это с одной стороны удобно, но палка о двух концах.

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

vov68Дата: Пятница, 28 Октября 2011, 12:38:14 | Сообщение # 17
10 уровень
Группа: Проверенные
Сообщений: 1329
Награды: 3
Блокировки:
Quote (lawson)
Эт почему?

а вот это у себя спрашивай... :D
ты в третий раз выдаёшь это число. ^_^
это что: привычка или параноя?
Quote (lawson)
твои предложения?

я то здесь при чём? это ж ты наработку выставил... ;)

а маршрут :D крипов может быть и извилистым...
Quote (lawson)
а всетаки в любой практически АоС есть крипы,


Зачем делать для других новые карты...
... лучше устроить коту божественный почесон. :)
 

lawsonДата: Пятница, 28 Октября 2011, 16:13:38 | Сообщение # 18
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (vov68)
маршрут

Quote (vov68)
крипов может быть и извилистым...

я знаю, а может еще 1500 условий передвиженя крипов, мне все их учитывать!?


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

AjaccioДата: Пятница, 28 Октября 2011, 18:25:01 | Сообщение # 19
7 уровень
Группа: Проверенные
Сообщений: 299
Награды: 1
Репутация: 239
Блокировки:
Quote (Ty3uK)
Всякие cjass и vjass... Говножассы.

coolstory
Quote (Ty3uK)
Хэш работает быстрее структур, если что.

Было неоднократно доказано обратное (и даже на этом форуме).


XOR EAX, EAX
MOV EAX, 00H ;; NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.
 

Ty3uKДата: Пятница, 28 Октября 2011, 18:43:07 | Сообщение # 20
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
ХАТ ещё не "наше всё", если он работает на какие-то 100500 стопицотых доли секунды быстрее.
и массивы ограничивают максимум объектов до 8192


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

AjaccioДата: Пятница, 28 Октября 2011, 19:15:13 | Сообщение # 21
7 уровень
Группа: Проверенные
Сообщений: 299
Награды: 1
Репутация: 239
Блокировки:
Да всё равно на самом деле, кто из них быстрее и на сколько мгновений. dunno
Quote (Ty3uK)
Хэш работает быстрее структур, если что.

Просто заметил не верное утверждение.




XOR EAX, EAX
MOV EAX, 00H ;; NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.
 

Ty3uKДата: Пятница, 28 Октября 2011, 20:09:24 | Сообщение # 22
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Ajaccio, ну оно не неверно в корне. С этим можно поспорить)

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

DiabfallДата: Понедельник, 31 Октября 2011, 07:26:12 | Сообщение # 23
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
Quote (lawson)
без потери курса или возвращения как иногда бывает.

А ты обычным способом тоже через группы их двигаться заставлял? Если да, то возможно проблема из-за этого.
 

vov68Дата: Понедельник, 31 Октября 2011, 13:40:24 | Сообщение # 24
10 уровень
Группа: Проверенные
Сообщений: 1329
Награды: 3
Блокировки:
Quote (lawson)
может еще 1500 условий передвиженя


у тебя мания больших чисел - там количество условий и до десятка не дотянет. :D

но если серьёзно, то основная проблема не в том, по какой механике направить крипов по прямой, а в том, чтобы они шли по установленному маршруту, иногда извилистому, и что линий возможно больше чем одна и их длинна различна. ;)


Зачем делать для других новые карты...
... лучше устроить коту божественный почесон. :)
 

SirNikolasДата: Вторник, 01 Ноября 2011, 12:48:27 | Сообщение # 25
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Ty3uK)
Всякие cjass и vjass... Говножассы
Да вы расист, друг мой.
Quote (Ty3uK)
и массивы ограничивают максимум объектов до 8192
Можно увеличить максимум вручную, допустим, в четыре раза:
Code
struct abc[32768]
     //...
endstruct
vov68, поищи на сайте систему от РаЗаРт'а, в ней крипы могут ходить по произвольной траектории.


 

Форум о Warcraft 3 » Раздел для картостроителей » Раздел картостроителя » Наработка передвиженя крипов под таймер. (Просто и без особых усилий)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz