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

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

Ответ
 
bugmaker
invulnerable
offline
Опыт: 2,282
Активность:
локальный радар aka GPS
Я обещал, я сделал =).
Локальный радар засекает близснырящих юнитов(пока только юнитов) от героя (пока синглплеер).
Чтобы запустить радар надо: ввести "-" и число ##, которое должно быть нечентным (больше 0 и меньше 16) . После откроется радар (советую набрать 9 или 11, а то тормозит -()
вы можите давать кустом айконс каждому типу войск ('xxxx') и вабще любому юниту в игре (позже я хочу сделать так, чтоб можно было давать иконки дестрактяблям, регионам и точкам).
Ну в общем так, если есть какие вопросы - спрашивайте :)

bugmaker добавил:
да и хотельсобы узнать мнение кодеров:
я хачу избавится от узжацных лагов (у меня при 11 и выше), есть ли какойнибудь другой способ передавать данные о нахождении юнитов на мультиборд (тут использую метод создания регионов 256x256 (т.е. число которое вы написали возведенное в квадрат - 1 есть число регионов которое создается (минус 1 потамучто не создается регион под хиром)))


последнее обновление 24. January 2006
прямая ссылка
Прикрепленные файлы
Тип файла: w3x GPS 2.56 beta.w3x (137.9 Кбайт, 296 просмотров )

Отредактировано bugmaker, 17.06.2006 в 20:37.
Старый 23.01.2006, 20:09
bugmaker
invulnerable
offline
Опыт: 2,282
Активность:
Рад что понравилось,
создай переменную кеш udg_cache
вот этот код вставь в кустом скрипт:
<<сдесь был грамозткай код>>
эээх жаль мультиборд не реагирует на наведение и нажатии мышки на итем, а то щабы такое забацал... =)
ЗЫКА этот скрипт я писал довольно давно и там остались строчки с созданием лишних переменных (наверное)

Отредактировано bugmaker, 23.01.2006 в 22:06.
Старый 23.01.2006, 20:49
bugmaker
invulnerable
offline
Опыт: 2,282
Активность:
гыгы, забыл две функы указать
<<сдесь тоже был код, но поменьше =)>>
  • вставь выше функы TXT_TimerExp_show_prt_text
чоб можно было звуки регистрировать

Отредактировано bugmaker, 23.01.2006 в 22:06.
Старый 23.01.2006, 21:19
bugmaker
invulnerable
offline
Опыт: 2,282
Активность:
подажди ща я мапу выложу

bugmaker добавил:
ну вот, скорее всего я там чето пропустил как всегда )
Старый 23.01.2006, 21:49
TiM
Старичок
offline
Опыт: 8,594
Активность:
Радар - супер. на 15 без тормозов. Имхо, будет лучше, если он как-нибудь подальше показывал. Регионы 256*15 и на экране видно ;(.
Также приходилось пару раз скрывать/показывать мультибоард из-за его постепенной автоматической настройки. Это не хорошо.
Афтару респект!
Старый 24.01.2006, 02:29
bugmaker
invulnerable
offline
Опыт: 2,282
Активность:
в кустом коде папробуй изменить значение в функции GetCellSize (в разделе константы) на нужный тебе.

bugmaker добавил:
правда это всеголишь изменит размер 1 квадрата, что еще хуже ))). Я бы с радостьб сделалбы больше 15 квадратов, но у мя например мультиборт жутко глючит, если ставлю 16 например (да и тормоза). хотя можно триг module модифицировать

bugmaker добавил:
Цитата:
на 15 без тормозов

это че у мя одного комп такой тормазнутый чель ^)
Старый 24.01.2006, 02:42
TiM
Старичок
offline
Опыт: 8,594
Активность:
Оперативка 256мб, Процессор 1.7гц, что-то не так? ;)

TiM добавил:
ой, вру. оперативка тута 512
Старый 24.01.2006, 02:55
TiM
Старичок
offline
Опыт: 8,594
Активность:
и не могу не похвастаться radeon'ом Х700
Старый 24.01.2006, 03:02
bugmaker
invulnerable
offline
Опыт: 2,282
Активность:
Ы виж какие глюки у мя с ректами, если поставлю на 15 (правый верхний угол) они какбы недостраиваются.
2Тим а у мя 2,4 ГЦ, и тожа 512 оперативка )
Старый 24.01.2006, 03:02
TiM
Старичок
offline
Опыт: 8,594
Активность:
ммм, это у тебя что? ;)

TiM добавил:
всмысле у меня тама только мультиборд, на котором высвечивается мини-мапа мини-иконок.
Старый 24.01.2006, 03:13
bugmaker
invulnerable
offline
Опыт: 2,282
Активность:
упс оказыца я забыл коечо(ну как всегда =)) Короче функция GPS_CreateRectXY будет всегда создавать квадраты 256x256, т.к. я забыл исправить его, если кто может сам то конечная функа должна выглядеть так:
Код:
function GPS_CreateRectXY takes real x, real y returns rect 
local rect r = Rect(-GetCellSize()/2, -GetCellSize()/2, GetCellSize()/2, GetCellSize()/2)
call MoveRectTo(r, x, y)
return r
endfunction

Или мне лучше мапу выложить?

bugmaker добавил:
2 Тим открой триггер module и сними коммент со следующих строк (да и лучше не трогай функу createMB, а updateMB) call RemoveLightningAroundRect(r) и call AddLightningAroundRect(r, "DRAM", 'sqre', true)
т.е. квадрат будет "выделятся"

bugmaker добавил:
короче это выделение для дебага (будет утечка памяти изза lightning'ов)
Старый 24.01.2006, 03:19
TiM
Старичок
offline
Опыт: 8,594
Активность:
Ну вообщем вроде все также...
В первый раз ввел -11, построилась сетка из квадратов, она не двигалась(полагаю так и должно быть) в месте с героем, однако с мини-картой все ок. потом ввел -1, немного поглючило и ввел -15 -комп чуть не задохнулся. вообщем steel норм ;)
П.С. сейчас не отвечу, буду спать 3:33 как-никак
Старый 24.01.2006, 03:33
bugmaker
invulnerable
offline
Опыт: 2,282
Активность:
вообщето они должны двигатся, просто коммент надобыло убрать у двух строк только в функции update, а ты наверно из фанкы create

bugmaker добавил:
короче я ее на серче обновлять буду, ссылка в первом посте, а вообще я тожа щас на боковую пойду (эдак на недельку))
Старый 24.01.2006, 03:43
J
expert
offline
Опыт: 48,447
Активность:
Я беру предмет, он исчезает с радара, вроде все нормально, я выбрасываю предмет, он на радаре не появляется, вроде не нормально.
Старый 24.01.2006, 15:46
TiM
Старичок
offline
Опыт: 8,594
Активность:
поидее тот предмет, который бросаешь, должен появиться под тобой, на радаре на твоем месте можешь быть только ты. От предмета Отходить пробовал?
Старый 24.01.2006, 16:18
J
expert
offline
Опыт: 48,447
Активность:
Ты че думаеш что я совсем дурак? Конечно пробывал.
Старый 24.01.2006, 16:21
Iron
Листовой
offline
Опыт: 24,427
Активность:
bugmaker Было влом копаться в твоем туго закрученном скрипте. Так что если я не прав, то извини. Предлогаю в целях оптимизации карты небольшую переделку. Как я понял у тебя регеоны создаются непосредственно при вводе числа и при перемещении героя. Это не очень практично с точки зрения мультиплеера (виснуть будет жестоко). Лучше при инициализации карты создавать сетку регионов на всюкарту, и заносить их все в кешь как координаты. Потомотслеживатьперемещение каждого героя в отдельности и в зависимости от того, в каком регеоне он находится, отслеживать необходимый квадрат регеонов вокруг него. Так ты избавишься от огромного кол-ва процессов перестройки регеонов.
Старый 24.01.2006, 18:10
bugmaker
invulnerable
offline
Опыт: 2,282
Активность:
2Jon то что валяется на земле и показывается на радаре как предмет - обычный юнит с моделькой предмета (после того как ты тыкаешь на него с расстояния не более 256, он удаляется а для героя создается случайный предмет))) (на радаре показывается только юниты (пока)), поэтому выбрашенный тобой "предмет" не виден на радаре
2Iron вообще я с тобой согласен, но представь себе лаг который будет при инициализации, а что если карта будет 316 на 316, т.е. регионов будет всеголишь около ..ммм.. <<где калькулятор мать его )>> так 316 * 32 = 10112, разделить на 216 .. 46 с лишним.. ммм.. 46 в квадрат Оо всего какихто 2116 регионов, конечно... никаких тормазов ваще не будет =) (я ж правильно посчитал да?)
bugmaker добавил:
хмм, скажите кто нить, какая из функций по вашему меньше лагает и не засоряет память? (я склоняюсь к 1-ой)

1
Код:
function GPS_GetUnitFromRect takes rect r returns unit
local rect rc = RectFromCenterSizeBJ(GetRectCenter(r), GetCellSize()+24, GetCellSize()+24)
local group gp = GetUnitsInRectAll(rc)
local group gu = GetRandomSubGroup(1, gp)
local unit u = GroupPickRandomUnit(gu)
call RemoveRect(rc)
call DestroyGroup(gp)
call DestroyGroup(gu)
return u
endfunction


2
Код:
function GPS_GetUnitFromRect takes rect r returns unit
return GroupPickRandomUnit(GetRandomSubGroup(1, GetUnitsInRectAll(RectFromCenterSizeBJ(GetRectCenter(r), GetCellSize()+24, GetCellSize()+24))))
endfunction


bugmaker добавил:
я просто не знаю, когда обращаешси к например GetUnitsInRectAll(), он ведь создает группу, да? потаму как если их не удалять будет "засор"

bugmaker добавил:
кста айрон, когда я задумывал радар, я тоже так подумал (это было бы гут т.к. на радаре все будет четко ровнинько по квадратикам (а то у мя даже если юниты стоят неподвижно - на радаре "плавают") )

Отредактировано bugmaker, 24.01.2006 в 20:43.
Старый 24.01.2006, 20:45
TiM
Старичок
offline
Опыт: 8,594
Активность:
Ы, а есть третий вариант?
Старый 24.01.2006, 21:03
bugmaker
invulnerable
offline
Опыт: 2,282
Активность:
ну я просто ненаю как без помощи ректов можно определить местонахождение и отправить его в таблицу (т.к. системы координат(имхо) отличаются). я сегодня еще подумаю че можно сделать
Старый 24.01.2006, 21:11
Ответ

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

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

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

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



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