Сейчас 00:49:57 Суббота, 23 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Передача предмета/Потеря
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, ой ё. Скинь картой? crazy
 

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], класс. спасибо. лови +
 

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

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