DFlyer
<3 MJ
offline
Опыт:
44,079Активность: |
SCV + Array
Можно ли прикреплять к объекту переменную? В частности, массив.
Главная задача - запись/чтение большого кол-ва юнитов, которые будут записаны в массив для дальнейших действий над ними.
Какие идеи по реализации этого? Конечно можно просто тупо каждого по-очереди записать и потом по одному считывать. Может есть что-то более рациональное? |
21.12.2007, 19:19 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Harakternyk
offline
Опыт:
2,703Активность: |
DFlyer, хотелось бы, чтоб ты более конкретно написал в задаче о том, что именно ты с большим количеством юнитов хочешь делать...
При работе с большим количеством юнитов можно использовать массив или группу, либо и то, и другое, но и в любом случае нужно заносить в них каждого из этих юнитов поочереди, т.е.: 1) Массив: Код:
2) Группа: Код:
3) Массив и группа: Код:
Замечания: 1) Последний вариант - массив с группой - расширяет состав возможных действий, которые ты можешь осуществить с юнитами этой "группы-массива". Например, можешь использовать количество юнитов в группе, для их перебора (ну, там, каждый 2-й, 3-й и т.п... + нематиматические условия "перебора", применимые к группе). 2)Можно, конечно, и cache использовать, но это от целей зависит... Повторюсь - напиши конретнее, что ты хочешь делать c большим количеством юнитов Отредактировано Harakternyk, 21.12.2007 в 21:54. |
21.12.2007, 20:37 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
df Hunter
Нападатель
offline
Опыт:
5,749Активность: |
саму переменную прикрепить нельзя, у вара нет функция для работы с переменными |
21.12.2007, 23:21 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DFlyer
<3 MJ
offline
Опыт:
44,079Активность: |
Harakternyk
Спасибо конечно за разъяснение, но ты меня не очень понял. Зри название темы. SCV. Короче, решение пришло само собой. Код:
Короче, что-то примерно так. Там уж по смыслу подогнать как надо. Тему можно клоз. |
22.12.2007, 00:25 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
df Hunter
Нападатель
offline
Опыт:
5,749Активность: |
ок, только ссыль на саму переменную ты никогда не получишь, у тебя здесь ссыль на обьект, записанный в данной переменной, с бесконечным циклом, еше раз подумай клоз или нет, но твой пример не рабочий, можно кэшем сделать массивы, они будут неограниченные по количеству слотов, ссыль на них можно получить, но они более медленные |
22.12.2007, 01:11 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Harakternyk
offline
Опыт:
2,703Активность: |
DFlyer, извини, но код этот неверный (без обид - я для пользы дела). А именно:
Цитата:
Код:
Теперь касательно самого решения. Вызываемое значение из кеша будет отображать только последний записанный в него юнит, т.к. параметры его вызова не будут отображать его ID в памяти игры. Для того, чтоб оно получалось надо записывать: (записывай в кешь вместе с заполнением массива) Код:
тогда вызов будет: Код:
P.S. Извини, что поправил, но я хотел просто помочь. Harakternyk добавил: df Hunter, да, тему пока не стоило бы закрывать... Отредактировано Harakternyk, 22.12.2007 в 03:56. |
|
22.12.2007, 02:20 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DFlyer
<3 MJ
offline
Опыт:
44,079Активность: |
Ну, да, я ж сказал, что надо доработать. Это просто я показал основной прицнцип.
Код:
Ты прикрепляешь к переменной udg_units юнитов. Как будто переменная - это некий игровой объект. Но это нитак. Вот, вроде, рабочий код. Код:
Т.е., создаём массив строк с именами и каждого записываем по своему адресу: Код:
Вроде ошибок нет (разве что Позже обязательно проверю. Да, тему пока не надо закрывать. Отредактировано DFlyer, 22.12.2007 в 03:40. |
22.12.2007, 03:23 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Harakternyk
offline
Опыт:
2,703Активность: |
DFlyer, я и не говорил, что приклепляю массив к объекту другому, хотя ты и просил об этом - я выложил то, что позволило бы ссылаться на записанный в кешь юнит из массива.
Относительно твоего кода. На вид рабочий, но, если б ты сразу сказал, что хочешь к типу string прицепить, то другое дело было бы - каждый елемент массива строк является отдельным объектом, согласен. |
22.12.2007, 03:40 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DFlyer
<3 MJ
offline
Опыт:
44,079Активность: |
Ты знаешь систему SCV?
set object_iparam(object,"string1",param) object - игровой объект (юнит, точка, и т.д.)(в частном случае мне нужен таймер) string1 - строка, являющаяся адресом. Названием, по которому мы прикрепляем к объекту нужное нам значение param. С get_object_iparam() тоже самое. А ты предлагаешь прикреплять к переменной какой-то другой объект. Ладно, имхо, мы друг-друга не понимаем. |
22.12.2007, 04:07 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
107,539Активность: |
scv и cache фтопку навеки... делается вообще елементарно, если скажем колво юнитов в масиве приблизительно известно. если нет просто доработать аллокатор...
Код:
для считывания Код:
правда следи за обнулением, иначе может быть попа) |
22.12.2007, 11:22 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
exploder
iOS zealot
offline
Опыт:
19,394Активность: |
Не понял смысла кода) зачем сохранение в кэш если извлечение
Код:
эквивалентно: Код:
Логическая ошибка? Что хранится в udg_units? Код:
Втф? type u_g == type integer? |
22.12.2007, 11:31 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
107,539Активность: |
эээ, кто о чем)))
я помойму написал самый простой вариант) ADOLF добавил: Цитата:
угу) впринципе можно и написать аллакатор деструктор вручную, но там он тоже неплохо реализован) хотя я походу неписал перевод динам массивов, но там примерно тот же алгоритм, что и на структурах, вобщем зрить рыдМи) |
|
22.12.2007, 11:36 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Harakternyk
offline
Опыт:
2,703Активность: |
ADOLF, я тоже не сторонник cache-а вообще, и SCV в частности. Можно и без них многое решать более продуктивно... Классный код! Т.е. его можно использовать как integer-ссылку на юнита из массива, без RB! Надо будет поробывать реализовать это через динамический массив, т.к. со структурами я ещё не разбирался...
____________________________________________ DFlyer, не буду вдаваться в подробности по поводу того, что объектом является..., но SCV я знаю, иначе не писал бы тебе об этом. А прицепить юнита из массива к текущему (какому-то иному) значению твоего таймера можно через условия. ____________________________________________ exploder, правильно говоришь. Нет смысла в записи в cache того, что можно прочитать и без него. Да и ошибки были, но я воздержался от замечаний, ибо код на стадии разработки был... Отредактировано Harakternyk, 22.12.2007 в 12:53. |
22.12.2007, 12:05 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DFlyer
<3 MJ
offline
Опыт:
44,079Активность: |
Дамн, тут я ещё ошибку допустил.
Код:
В общем, основная задача - периодическое движение юнитов. Хотел по старинке, юзая SCV прикреплять этот массив к таймеру и уже собсно двигать их. |
22.12.2007, 12:47 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Harakternyk
offline
Опыт:
2,703Активность: |
DFlyer, напиши как именно хочешь двигать (синхронно, хаотично, одновременно или с задержками и т.п.) - напишем код или образец дадим . Сразу бы сказал, что делать хочешь
|
22.12.2007, 12:51 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FellGuard
Losyash
offline
Опыт:
39,547Активность: |
пффф двигать, группу цепляй в ряде случаев EnumUnit быстрее цикла (во всяком случае с фильтром точно когда нужно сортировать) |
22.12.2007, 13:19 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
107,539Активность: |
Цитата:
зашел вообще не с того края=) смысл аттачить что то к таймеру, если таймер один!? тогда действительно юзать в жассовские структуры, в кастом валуе вешать номер ид структуры, а в самой структуре указывать вектор, и фор групом пикать всех и мувить, либо циклом проходиться по паралельному массиву, где содержаться ид структуры и уже тогда в структурах указывать юнита, которого мувить... зы если что то из сказанного немного неясно спрашуй, нестесняйсо) |
|
22.12.2007, 15:44 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DFlyer
<3 MJ
offline
Опыт:
44,079Активность: |
В принципе вроде всё понятно. Проблема в том, что я с вджаззом ещё не разбирался и ни разу не работал со структурами и прочими его фишками.
Тему можно закрыть. Данная задача оказалась ненужной. |
23.12.2007, 21:30 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|