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

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

Ответ
 
DKIcekeeper
Кол6асня!!!
offline
Опыт: 1,243
Активность:
Запарка с SCV!!!
Народ хелп ми! Я кароч запарился с кэшем и всей этой лабудой!
Кароч суть вопроса в том что, Герой умирает, создается копия (юнит с моделью умирающего героя, за нейтралов и со способностью москиты!) героя на том месте где должен воскреснуть герой по истечении таймера. Таймер заканчивается копия удаляется, а вместо копии появляется герой. Надеюсь не грузанул Так вот, для одного игрока все прекрасно работает, а для нескольких нифига! Я знаю в чем проблема, но не могу её решить.

начинается триггер
local unit Hero = GetDyingUnit()
local unit HeroAnim


потом на HeroAnim создается юнит далее
call SetHandleInteger(Trigger, "Hero", H2I(Hero))
call SetHandleInteger(Trigger, "Unit"+I2S(GetUnitTypeId(Hero)), H2I(HeroAnim))


потом идет триггер с циклом в 1 секунду. и
local unit Hero = GetHandleUnit(Trigger, "Hero")
local unit HeroAnim = GetHandleUnit(Trigger, "Unit"+I2S(GetUnitTypeId(Hero)))


Так вот вся проблема в том что HeroAnim ссылается на Hero, а я не знаю "на какой объект" поставить ссылку для Hero.
Потому как если умрет сначала один герой, а потом следом за ним умрет второй герой, то для первого триггер дальше не будет работать.

Помогите пожалуйстааа!!!
Старый 30.12.2007, 21:08
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
мне кажется нужно проиндексировать всех героев игрока и вешать линк на игрока, а не на тригге, если уж так нужен кэш) Вообще много разных вариантов, но использование кеша себя не оправдывает в ряде случаев, гораздо практичнее работать с глобальными массивами
Старый 30.12.2007, 21:21
DKIcekeeper
Кол6асня!!!
offline
Опыт: 1,243
Активность:
Понятно. Тогда такой вопрос, а можно ли записать в кэш глобалку с массивом??
Старый 30.12.2007, 21:25
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
глобалка с массивом аналог кешу, ее не надо туда записывать)) кстати свои значения глобальный массив будет хранить и после загрузки карты
читай статьи
Старый 30.12.2007, 22:14
Harakternyk

offline
Опыт: 2,703
Активность:
FellGuard, именно поэтому (я выражаю солидарность), стоит избегать в подобных случаях SCV, а использовать специально предназначенные для этого средства - глобальным переменные, их массивы и функции, решающие конкретные задачи. Считаю, что SCV работает медленнее, хотя иногда им пользоваться потребность возникает, но это больше исключение.

DKIcekeeper, такие задачи ефективнее решать без SCV, используя функцию для воскрешения героя, а также функцию "спасения" юнита (см. вложение к этому посту).

Вот, что сказал Сергей по поводу создания массивов с помощью SCV (я не стал ничего выдумывать, ибо приведённая цитата даст тебе полный ответ и сыкономит мне время ).
» Цитата (см.)
Вы можете использовать данную систему для того, чтобы сопоставлять объектам массивы чисел или других объектов! К примеру, можно создать цикл вида:
---
For i=1 to n
call set_object_iparam(o, name+I2S(i), value)
---
Это позволит создать для объекта o записи "имя1", "имя2" ... "имяn", что по сути является массивом. Точно также вы можете прочесть значения элементов из массива:
set udg_i = udg_i + get_object_iparam(o, name+I2S(n))
- прочесть n-ый элемент массива.

Кроме того, вы можете использовать систему, SCV, чтобы создавать любое количество новых переменных и массивов с любым названием прямо по ходу игры! Переменная отличается от cv только тем, что переменная не сопоставлена никаким игровым объектам. Поэтому, если в качестве объекта вы выберите пустой объект null, по сути вы создадите переменную.
call set_object_iparam(null, name, value) - создать переменную
get_object_iparam(null, name) - получить значение переменной
Подробнее - см. пример из триггера Test2.
Прикрепленные файлы
Тип файла: w3x Changes og Heros.w3x (13.3 Кбайт, 9 просмотров )

Отредактировано Harakternyk, 30.12.2007 в 22:36.
Старый 30.12.2007, 22:24
DKIcekeeper
Кол6асня!!!
offline
Опыт: 1,243
Активность:
Все понял! Всем Большое спасибо! Тему Close
Старый 31.12.2007, 14:30
Ответ

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

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

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

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



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