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

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

Ответ
 
EvilAvil
Караульный смерти
offline
Опыт: 3,721
Активность:
Wave generation

Wave Generation


Вступление:

Данная система может быть использована в таких жанрах как: TD, Defense, Survival, Rpg, Aeon, Aos, CreepWars и во всех где требуется динамично создавать врагов.

В системе есть множество достойнств например:

Скорость работы: система не тормозит даже на компьютерах с тактовой частотой 1ггц.
Обширность волн: система поддерживает до 8000 волн одновременно от 1 до 999 юнитов в каждой (также бесконечные волны).
Удобство использования: чтобы создать волну достаточно просто задать нужные параметры.
Приятный вид: юниты не создаются кучей, а аккуратно и быстро появляются по одному.
Разносторонее применение: систему можно использовать во всех картах, где имеются юниты.

Но конечно в системе присутствуют и недостатки:

Боссов приходится создавать отдельной волной.

Инструкция:

Если вы хотите использовать эту наработку в своей карте скопируйте Custome Code карты и создайте (или опять же скопируйте) триггер WaveInI, ну и добавить меня в благодарности :)
ник: Avilll или EvilAvil как Вам удобнее.

Успехов !

» WGen
Это основная функция с которой вам придётся работать, с помошью неё вы сможете сгенерировать любую волну.
WGen (gg_rct_1,'hfoo',999,-333,-555,Player(13))
1. gg_rct_1
Регион, где будут создаватся юниты
2. 'hfoo'
Тип создаваемых юнитов
3. 999
Число создаваемых юнитов на волну. (если 999 юнитов и болша волна становится вечной)
4. -333
Координата цели по оси X
5. -555
Координата цели по оси Y
6. Player(13)
Игрок которому будут принадлежать созданные юниты

» Код:
((код jass
globals
integer array sput [8000]
integer array spnu [8000]
integer array spx [8000]
integer array spy [8000]
player array sppl [8000]
rect array spre [8000]
integer splast=0
timer t=CreateTimer()
endglobals
function WGen takes rect re,integer ut,integer nu,integer x,integer y,player pl returns nothing
splast=splast+1
sput[splast]=ut
spnu[splast]=nu
spre[splast]=re
sppl[splast]=pl
spx[splast]=x
spy[splast]=y
endfunction
function WNull takes integer num returns nothing
sput[num]=0
spnu[num]=0
sput[num]=sput[splast]
spnu[num]=spnu[splast]
spre[num]=spre[splast]
sppl[num]=sppl[splast]
splast=splast-1
endfunction
function Wave takes nothing returns nothing
if splast>0
location l
unit u
integer A
real x,y
A=0;loop;exitwhen A>splast
x=GetRandomReal(GetRectMinX(spre[A]),GetRectMaxX(spre[A]))
y=GetRandomReal(GetRectMinY(spre[A]),GetRectMaxY(spre[A]))
l=Location(x,y);x=0;y=0
u=CreateUnitAtLoc(sppl[A],sput[A],l,bj_UNIT_FACING)
IssuePointOrder(u,"attack",spx[A],spy[A])
u=null;l=null
if spnu[A]<999
spnu[A]=spnu[A]-1;if spnu[A]<1;WNull(A);endif
else
spnu[A]=999
endif
A=A+1;endloop;A=0;
RemoveLocation(l)
endif
TimerStart(t,2,false,function Wave)
endfunction
))

Отредактировано EvilAvil, 16.07.2011 в 01:17.
Старый 15.07.2011, 18:40
Doc

offline
Опыт: 63,163
Активность:
Мешанина сжасса и жасса - заведомая хрень. bj - заведомая хрень. один рект и тип юнита на волну - нывыпоняли.
Старый 15.07.2011, 18:43
EvilAvil
Караульный смерти
offline
Опыт: 3,721
Активность:
Мешанина сжасса и жасса - заведомая хрень.
тыкни где тут cJass
предложения по улучшению > критики
Старый 15.07.2011, 18:47
Doc

offline
Опыт: 63,163
Активность:
тыкни где тут cJass
facepalm.
отсутствие local, call и set, semicolons using -> cjass.
Предложения? Делаешь все красиво, через структуры, с возможностью спавна в нескольких ректах нескольких типов юнитов в одной волне, убираешь все бж и оптимизируешь, доводишь до полноценной системы в общем.
Старый 15.07.2011, 19:52
EvilAvil
Караульный смерти
offline
Опыт: 3,721
Активность:
local, call и set
лишняя писанина, всё и так работает таки
с возможностью спавна в нескольких ректах нескольких типов юнитов в одной волне
не проще ли создать просто несколько волн ? (не думаю, что кто то сможет использовать однавременно более 8к волн)
насчёт структур, да мысль
Старый 15.07.2011, 20:01
prog

offline
Опыт: 32,865
Активность:
EvilAvil, возможность не писать local,call, set это ТОЛЬКО БЛАГОДАРЯ CJASS
если это та штука которую ты мне кидал в скайпе, то реализовано так себе
Старый 15.07.2011, 21:07
silumin

offline
Опыт: 11,153
Активность:
EvilAvil, уже не свежо... Подобную наработку я делал оч давно, правда по некоторым причинам удалил с сайта, но это не важно.

Я использовал текст-программу в которой можно было задавать: кол-во волн, относительная задержка каждой волны, типы юнитов в одной волне и их кол-во, позиции накоторых будут создаваться юниты.

И это была версия с функционалом, реализованным на 60-70%...

Вот пример текст-программы:
Цитата:
22.005.r3.000.005.000_050.hfoo.-180x+180_101.orai.+180x-180_030.hkni.+180x+180*
Старый 15.07.2011, 21:14
EvilAvil
Караульный смерти
offline
Опыт: 3,721
Активность:
таки не удобно же ... я создавал для упрощения создания волн не для расширения функционала ...
Старый 16.07.2011, 00:23
Master_chan
Полуночный командир
offline
Опыт: 15,660
Активность:
Моё мнение что это не нужно. Создайте систему с кнопкой "Сделать доту" и получите поток говнокарт по типу "Дота но с моей мега фишечкой".
За системы буду признавать только именно системы как то дгуи или полноэкранный инвентарь. А не одну функцию выполненную черти как и ориентированную на сказочных ... персонажей (каких тут кстати в достатке).
Старый 16.07.2011, 01:47
EvilAvil
Караульный смерти
offline
Опыт: 3,721
Активность:
Создайте систему с кнопкой "Сделать доту" и получите поток говнокарт по типу "Дота но с моей мега фишечкой".
Чего и добиваюсь.
Допустим я обычный пользователь, в моих руках лишь небольшие познания в редакторе и триггерах но огромное желание сделать свою карту. Что я буду делать ? Годами учится и познавать чтобы создать одну из
говнокарт
? Нет мне нужна кнопка !
И я сделаю им такую кнопку для TD и HD.
Старый 16.07.2011, 02:11
Doc

offline
Опыт: 63,163
Активность:
пока-что твоя кнопка коричневого цвета.
Старый 16.07.2011, 03:01
EvilAvil
Караульный смерти
offline
Опыт: 3,721
Активность:
бывает что уж
Старый 16.07.2011, 03:16
Helpmeplz

offline
Опыт: 11,738
Активность:
либо пиши все только на vJass либо только на cJass. код нечитабельный.
названия настраиваемых переменных должны говорить о том для чего они служат. чтобы не заглядывать в "мануал системы" каждый раз когда присваиваешь этой переменной значение.
Старый 16.07.2011, 04:03
EvilAvil
Караульный смерти
offline
Опыт: 3,721
Активность:
sput = sp+unit type
spnu = sp+number
spx = sp+x
spy = sp+y
sppl = sp+player
spre = sp+rect
splast = sp+last
таки недостаточно понятные названия ?
Старый 16.07.2011, 11:11
SomeFire
Всего 20 символов...
offline
Опыт: 26,884
Активность:
EvilAvil, тем, кто разбирается в jass, твоя система не нужна, т.к. сами себе могут сделать. А тем, кто не может сделать, надо всё разжевывать.
Старый 16.07.2011, 12:17
EvilAvil
Караульный смерти
offline
Опыт: 3,721
Активность:
SomeFire, мануал довольно подробный и система просто в установке(писал именно для тех кто не разбирается в jass (смотрим ап пост))
Старый 16.07.2011, 16:22
Elf_Stratigo

offline
Опыт: 4,699
Активность:
EvilAvil:
довольно подробный
то что ничего не произойдёт пока не будет вызвана функция Wave нигде не сказано
причём дальше это самое будет происходить без какой либо возможности контроля
с очень большой вероятностью у jass-новичка не будет cjass
следующей проблемой станет дублирование декларации переменной с именем t
ну а читаемости нету никакой: блоки кода не выделены, развилки оформлены по разному, имена не несут какого-либо смысла
далее идёт утечка точки, которая создаётся зачемто...
имхо, реализация ужас
ха, спалил обнуление инта под конец))))
рандом кста не делает появление аккуратным, ну ни как, только разве что рандомным, но не аккуратным

Отредактировано Elf_Stratigo, 16.07.2011 в 19:02.
Старый 16.07.2011, 18:56
EvilAvil
Караульный смерти
offline
Опыт: 3,721
Активность:
то что ничего не произойдёт пока не будет вызвана функция Wave нигде не сказано
создайте (или опять же скопируйте) триггер WaveInI
идёт утечка точки, которая создаётся зачемто...
исправлю не заметил
имхо, реализация ужас
встань в очередь )
придётся переделать чисто на vJass ._."
Старый 16.07.2011, 22:38
prog

offline
Опыт: 32,865
Активность:
EvilAvil, vjass новичка тоже не будет)
Старый 16.07.2011, 23:04
EvilAvil
Караульный смерти
offline
Опыт: 3,721
Активность:
думаю мануал и gui триггер, помогут как то исправить положение
Старый 17.07.2011, 01:36
Ответ

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

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

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

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



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