Передача предмета/Потеря
|
|
DarkCote | Дата: Воскресенье, 17 Октября 2010, 12:58:16 | Сообщение # 1 |
Кот
Группа: Проверенные
Сообщений: 948
Награды: 0
Репутация: 176
Блокировки:
| Как запретить юниту передавать предметы другому юниту, но при этом выкинуть на землю их можно?
|
|
|
|
Gr0m | Дата: Воскресенье, 17 Октября 2010, 13:30:56 | Сообщение # 2 |
8 уровень
Группа: Проверенные
Сообщений: 729
Награды: 0
Репутация: 249
Блокировки:
| А смысл если нельзя передавать то можно скинуть ==>герой 1 скинул на землю герой 2 взял А вот нельзя брать чужие предметы воето оно наверо(как в доте)! (только незнаю как)
Сообщение отредактировал Gr0m - Воскресенье, 17 Октября 2010, 13:31:52 |
|
|
|
MrEkko | Дата: Воскресенье, 17 Октября 2010, 14:25:54 | Сообщение # 3 |
4 уровень
Группа: Заблокированные
Сообщений: 99
Награды: 0
Репутация: 3
Блокировки:
| Quote (Gr0m) А вот нельзя брать чужие предметы воето оно наверо(как в доте)! (только незнаю как)
|
|
|
|
Enforcer | Дата: Воскресенье, 17 Октября 2010, 15:08:58 | Сообщение # 4 |
Энф Когда-то смотрел за порядком
Группа: Ветераны
Сообщений: 3127
Награды: 7
Репутация: 981
Блокировки:
| Для этого нужно будет делать массив предметов скажем до 100 и массив игроков, то же до 100. Получится своего рода двумерный массив. Делаем 2 триггера. Юнит Бросает предмет. Создаем цикл где Ищем свободное поле для записи предмета и игрока который выбросил. Второй триггер: Юнит получает предмет. Создаем цикл где Ищем предмет который подобрали и проверяем тот же игрок его выбросил или нет. Если игроки разные то заставляем выбросить, если нет, то очищаем запись о предмете и игрока в массивах. Так же если нет данных в массиве о предмете (игрок передал другому игроку) то тоже выбросить предмет.
Сообщение отредактировал Enforcer - Воскресенье, 17 Октября 2010, 16:29:22 |
|
|
|
DarkCote | Дата: Воскресенье, 17 Октября 2010, 16:28:05 | Сообщение # 5 |
Кот
Группа: Проверенные
Сообщений: 948
Награды: 0
Репутация: 176
Блокировки:
| Enforcer, ой ё. Скинь картой?
|
|
|
|
Enforcer | Дата: Воскресенье, 17 Октября 2010, 16:30:47 | Сообщение # 6 |
Энф Когда-то смотрел за порядком
Группа: Ветераны
Сообщений: 3127
Награды: 7
Репутация: 981
Блокировки:
| Картой не скидываю. Если что то подобное реализовывал, то ссылаюсь или на ШиО или на ETS. Возможно буду делать подобное с посохами, где можно будет переводить или в Тележке для волшебника, но герои не должны их носить.
|
|
|
|
DarkCote | Дата: Воскресенье, 17 Октября 2010, 16:33:21 | Сообщение # 7 |
Кот
Группа: Проверенные
Сообщений: 948
Награды: 0
Репутация: 176
Блокировки:
| Enforcer, я не совсем понял что ты сказал просто) Вот и прошу, ибо мне на примере намного понятней, чем словами. И ещё ты что имел ввиду конкретно? Это на каждого юнита получается или на 1 только? Мне надо чтобы конкретный тип юнита.
|
|
|
|
Enforcer | Дата: Воскресенье, 17 Октября 2010, 19:49:36 | Сообщение # 8 |
Энф Когда-то смотрел за порядком
Группа: Ветераны
Сообщений: 3127
Награды: 7
Репутация: 981
Блокировки:
| DarkCote, заменяешь тогда массив игрока на массив типов юнитов. Получится скажем что то вроде такого примера Оба триггера скорее всего лучше писать на jass, так как у меня нету варика под рукой синтаксис будет похож на Dephi и C++ Событие: Юнит бросил предмет Действие: // MassiveItems [1..100] Это Глобальная переменная типа Предмет // MassiveTypeUnit [1..100] Это Глобальная переменная типа Тип Юнита local int I =1 // Переменная целочисленная для прогона цикла while I < 100 do If MassiveItems [I] = null then // Ищем пустой слот для записи set MassiveItems [I] = (Сброшенный предмет) //Присваиваем брошеный предмет в переменную массива set MassiveTypeUnit [I] = (Тип Юнита TriggerUnit) //Присваиваем тип юнита который бросил предмет set I = 100 //Заставляем выйти из цикла, что бы не прогонять впустую оставшиеся поля в массиве endif set I = I + 1 //Проверка следующего поля если текущее занято другим предметом end loop Событие: Юнит получил предмет Действие: // MassiveItems [1..100] Это Глобальная переменная типа Предмет // MassiveTypeUnit [1..100] Это Глобальная переменная типа Тип Юнита local int I =1 // Переменная целочисленная для прогона цикла local boolean FlagItem // Понадобится если нужный предмет не был найден. while I < 100 do If MassiveItems [I] = (Подобранный предмет) and MassiveTypeUnit [I] = (Тип Юнита TriggerUnit) then // Ищем подобранный предмет в массиве и проверяем что его выбросил такой же тип юнита set MassiveItems [I] = null //Обнуляем поле set MassiveTypeUnit [I] = null //Обнуляем set I = 100 //Заставляем выйти из цикла, что бы не прогонять впустую оставшиеся поля в массиве set FlagItem = True endif set I = I + 1 //Проверка следующего поля если текущее занято другим предметом end loop If FlagItem = False (Приказать выбросить подобранный предмет TriggerUnit) //Если предмет был не обнаружен в списке или тип юнита не совпал с текущим предметом то он будет выброшен. Короче что то будет примерно типа этого. Добавлено (17-10-2010, 19:49) --------------------------------------------- Ах да. Один нюанс. До включения триггеров предметы у них должны уже быть, иначе они не смогут подбирать вообще никакие предметы.
Сообщение отредактировал Enforcer - Воскресенье, 17 Октября 2010, 17:03:13 |
|
|
|
DarkCote | Дата: Воскресенье, 17 Октября 2010, 20:19:55 | Сообщение # 9 |
Кот
Группа: Проверенные
Сообщений: 948
Награды: 0
Репутация: 176
Блокировки:
| Enforcer, стоп. Предмет "должен" быть? А если его нет в наличии, то что тогда? Добавлено (17-10-2010, 20:19) --------------------------------------------- Enforcer, и вообще мне по идее надо для тех триггеров, которые указывались в моей прошлой теме(Problem). А то почему-то предмет можно передавать союзникам и у них сразу например 2 автомата или 2 брони...
|
|
|
|
[san9] | Дата: Воскресенье, 17 Октября 2010, 20:20:23 | Сообщение # 10 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| Enforcer, Чёто у тя замароченно) Так легче. Имхо.
|
|
|
|
Enforcer | Дата: Воскресенье, 17 Октября 2010, 20:29:08 | Сообщение # 11 |
Энф Когда-то смотрел за порядком
Группа: Ветераны
Сообщений: 3127
Награды: 7
Репутация: 981
Блокировки:
| DarkCote, я реализовал то что ты просил, надо было тогда запрещать/разрешать передавать ТИП предмета определенным ТИПАМ юнмтов. А ты просил КОНКРЕТНЫЙ предмет.
Сообщение отредактировал Enforcer - Воскресенье, 17 Октября 2010, 20:29:37 |
|
|
|
DarkCote | Дата: Воскресенье, 17 Октября 2010, 20:48:44 | Сообщение # 12 |
Кот
Группа: Проверенные
Сообщений: 948
Награды: 0
Репутация: 176
Блокировки:
| [san9], класс. спасибо. лови +
|
|
|
|