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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Мультиприменяемость
vlad4427Дата: Понедельник, 09 Марта 2015, 15:40:05 | Сообщение # 1
1 уровень
Группа: Пользователи
Сообщений: 18
Награды: 0
Репутация: 0
Блокировки:
Ребят такая тема, сделал триггер чтобы кровотечение у персонажа было, но тут такая штука, что у персонажа кровотечение,но как только кровотечение получает другой персонаж у первого автоматом пркращается, как исправить?
 

ExtrematorДата: Понедельник, 09 Марта 2015, 19:33:14 | Сообщение # 2
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
Нужно записывать каждого юнита отдельно.
 

НаклзДата: Четверг, 12 Марта 2015, 18:34:58 | Сообщение # 3
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
Цитата vlad4427 ()
как исправить?

Для начала нужно видеть где ошибка, что бы сказать "как исправить".

Подозреваю дело в том, что ты заносишь юнита в переменную, а когда кровотечение получает другой юнит то перезаписываешь туже самую переменную
 

sumertДата: Пятница, 13 Марта 2015, 03:17:34 | Сообщение # 4
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
сразу ясно, что он использует глобальные переменные. А надо локальные.
 

SirNikolasДата: Пятница, 13 Марта 2015, 03:35:18 | Сообщение # 5
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
sumert, локальные переменные позволяют организовать мультиприменяемость только в связке с wait'ом. А это зло.

 

sumertДата: Пятница, 13 Марта 2015, 08:30:11 | Сообщение # 6
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
Цитата SirNikolas ()
sumert, локальные переменные позволяют организовать мультиприменяемость только в связке с wait'ом. А это зло.

а если в пределах одного триггера использовать хэш-таблицу для переноса значений переменных вместе с таймером, эти переменные разве не считаются локальными?
 

Q1wAseДата: Пятница, 13 Марта 2015, 09:26:24 | Сообщение # 7
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
Цитата sumert ()
а если в пределах одного триггера использовать хэш-таблицу для переноса значений переменных вместе с таймером, эти переменные разве не считаются локальными?

Записывая на ID таймера, будет всё работать локально.


 

ExtrematorДата: Пятница, 13 Марта 2015, 10:00:52 | Сообщение # 8
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
Цитата sumert ()
а если в пределах одного триггера использовать хэш-таблицу для переноса значений переменных вместе с таймером, эти переменные разве не считаются локальными?
хэш-таблица - это уже глобалка, но более тяжёлая (ибо разбита на поля и значения)
а в качестве номера обычно используется хэндл созданного таймера,
т.к. в один и тот же момент времени ничего не может иметь одинаковые хэндлы
таким образом при срабатывании таймера, этот самый таймер запускает функцию которая высчитает по его личному номерку данные из нужного слота таблицы
это как в гардеробе - твой номерок, твои вещи на крючке с этим номером, и пока ты не удалил таймер - никто не займёт твой крючок
для выгрузки да, обычно юзают локалки - просто надо куда-то это всё выгружать, можно канеш и в глобалки, но... Jass же, локалки сподручнее во всех смыслах

но подход это топорный
такие скиллы обычно не рассчитываются как настакивающиеся, но по факту именно это и происходит
в этом принципиальная разница яда дазла и квопы - первый стакается (будет наносить много дамага в один момент времени),
а второй - нет (будет рассчитывать новую длительность).
 

BiboДата: Пятница, 13 Марта 2015, 10:12:34 | Сообщение # 9
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
Цитата SirNikolas ()
а если в пределах одного триггера использовать хэш-таблицу для переноса значений переменных вместе с таймером, эти переменные разве не считаются локальными?

Локальный и глобальный, это область видимости, а не тип переменной. Задача заключается в передачи значений переменных из одной области видимости в другую.
Цитата Extremator ()
но подход это топорный
такие скиллы обычно не рассчитываются как настакивающиеся, но по факту именно это и происходит

Нет, не топорный. Нет, именно настакивающимися они и рассчитываются. Таймер, отвечающий за нанесение урона можно создавать заново, при каждом применении способности, а можно перезапускать, что дает привычный эффект стандартного кинжала. Это несложно.
 

ExtrematorДата: Пятница, 13 Марта 2015, 11:08:44 | Сообщение # 10
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
Цитата Bibo ()
Нет, не топорный. Нет, именно настакивающимися они и рассчитываются. Таймер, отвечающий за нанесение урона можно создавать заново, при каждом применении способности, а можно перезапускать, что дает привычный эффект стандартного кинжала. Это несложно.
У них там везде такая реализация... Даже на БМе/госте/БКБ - тоже скажешь "так задумано" ?

Так то не сложно перезапускать, это да... но вешать отдельный таймер на каждый факт наложения баффа... и порой и пару ивентов (мол умер и всё такое)
то ещё удовольствие...
 

Q1wAseДата: Пятница, 13 Марта 2015, 11:09:57 | Сообщение # 11
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
Цитата Extremator ()
и пока ты не удалил таймер - никто не займёт твой крючок

Не совсем точно.
Пока ты не пропишешь Флуш на ИД в таблице, все переменные которые были забиты на ИД таймера будут там храниться. Если тупо удалить таймер то переменные останутся висеть на его ИД.


 

MelodiaДата: Пятница, 13 Марта 2015, 11:12:08 | Сообщение # 12
Группа: Проверенные
Сообщений: 8026
Награды: 5
Репутация: 5051
Блокировки:
Пук

CM wars 1.15
ЭПОХА АНИМИРОВАННЫХ ТРИГГИРАФ ПРЕШЛА
 

ExtrematorДата: Пятница, 13 Марта 2015, 11:12:21 | Сообщение # 13
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
Цитата Q1wAse ()
Не совсем точно. Пока ты не пропишешь Флуш на ИД в таблице, все переменные которые были забиты на ИД таймера будут там храниться. Если тупо удалить таймер то переменные останутся висеть на его ИД.
я это говорил не про хэп-таблицу, а про сам хендл таймера
т.е. я имел ввиду не конкретный номер/ячейку в самой таблице
а некой номер/ячейку в самой памяти игры (и эту ячейку занимает объект - таймер).
 

  • Страница 1 из 1
  • 1
Поиск:

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