Скрипты
|
Alexandr_5 | Дата: Суббота, 09.03.2013, 23:52 | Сообщение # 121 |
Воитель
Группа: Проверенные
Сообщений: 1330
Награды: 4
Репутация: 33
Статус: Offline
| Ну и еще надо давать поражения тогда что использовать если не States.StatHouseTypeCount(0,11) = 0
тогда нужно функция разрушеных зданий а неколичество их
|
|
| | |
Jery | Дата: Воскресенье, 10.03.2013, 00:00 | Сообщение # 122 |
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
| Тебе нужно процедура, которая бы вызывалась при потере здания. Найди ее в предыдущем посте, заметь что среди них есть и OnTick, а ты ее уже использовал, остальные используются по аналогии, подумай как. Еще тебе нужна функция, которая бы провозглашала поражение нужному игроку. Это Actions.PlayerDefeat(player_index). Больше ничего нового не нужно, только проверяй кол-во нужных зданий при потере любого здания игроком, если их кол-во равно нулю, то делай поражение.
«Художник не тогда знает, что он достиг совершенства, когда нечего добавить, но когда нечего больше отнять». (Антуан де Сент-Экзюпери)
Сообщение отредактировал Jery - Воскресенье, 10.03.2013, 00:01 |
|
| | |
Alexandr_5 | Дата: Воскресенье, 10.03.2013, 00:12 | Сообщение # 123 |
Воитель
Группа: Проверенные
Сообщений: 1330
Награды: 4
Репутация: 33
Статус: Offline
| Jery, Тьфу ты сообщения это я уже писал ты предыдущий пост сделай нормально а то не разберешь Добавлено (10.03.2013, 00:12) --------------------------------------------- Jery, Ты хочешь сказать вместо OnTick
Надо использовать другое а разве так нельзя
Если здание склад у игрока 1 разрушено тогда поражение
|
|
| | |
Jery | Дата: Воскресенье, 10.03.2013, 00:20 | Сообщение # 124 |
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
| Ничего не мешает отслеживать несколько событий. Можно в OnTick делать одни действия, а в другом событии другие.
Цитата (AlexandrV) Если здание склад у игрока 1 разрушено тогда поражение Если здание склад разрушено - это твое событие. Далее ты проверяешь у какого игрока оно разрушено и какое здание, и даешь ему поражение. Но это нелепо потому, что у игрока может быть два склада, и если ему разрушат только один склад он проиграет по твоей логике. Я исправил тот пост, все что на английском для тебя не важно. Для начала, выбери подходящее для тебя событие. "ВАШ КОД" это твоя логика его обработки, то есть все проверки того что у нужного игрока и нужное здание и затем выдача поражения.
«Художник не тогда знает, что он достиг совершенства, когда нечего добавить, но когда нечего больше отнять». (Антуан де Сент-Экзюпери)
Сообщение отредактировал Jery - Воскресенье, 10.03.2013, 00:20 |
|
| | |
Alexandr_5 | Дата: Воскресенье, 10.03.2013, 00:31 | Сообщение # 125 |
Воитель
Группа: Проверенные
Сообщений: 1330
Награды: 4
Репутация: 33
Статус: Offline
| States.StatHouseTypeCount(0,11) = 0 Then поражение
Вот эта процедура подходит так как всегда когда начинаешь игру на развитие нужен склад а без склада и тех зданий которые бы могли заменить склад невозможно продолжать States.StatHouseTypeCount(0,11) = 0
это только пример для склада дополнения к этому надо написать например если нет лесопилки и каменаломни для постройки нового склада.
Нужно еще событие точнее вот это
если количество человек в определенной армии у определенного игрока составляет 0 тогда победа или поражение
Jery напиши еще типы солдат и тогда я смогу делать условия победы любые
Сообщение отредактировал AlexandrV - Воскресенье, 10.03.2013, 00:32 |
|
| | |
Jery | Дата: Воскресенье, 10.03.2013, 00:38 | Сообщение # 126 |
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
| States.GroupMemberCount(GroupID) возвращает кол-во человек в группе с номером GroupID. States.GroupDead(GroupID) проверяет мертва ли группа(результат true или false). States.GroupOwner(GroupID) возвращает индекс игрока владельца группы с номером GroupID. States.StatUnitTypeCount(Player_index, unit_type) возвращает кол-во юнитов типа unit_type у игрока player_index. States.StatArmyCount(player_index) возвращает число военных юнитов у игрока player_index. Думай как это приспособить. И я не знаю типов солдат =)
Это конечно правильно: if States.StatHouseTypeCount(0,11) = 0 Then поражение
Но ты так и не сказал куда это писать =)
«Художник не тогда знает, что он достиг совершенства, когда нечего добавить, но когда нечего больше отнять». (Антуан де Сент-Экзюпери)
Сообщение отредактировал Jery - Воскресенье, 10.03.2013, 00:42 |
|
| | |
Alexandr_5 | Дата: Воскресенье, 10.03.2013, 00:42 | Сообщение # 127 |
Воитель
Группа: Проверенные
Сообщений: 1330
Награды: 4
Репутация: 33
Статус: Offline
| ну можно в OnTick а лучше процедуру OnHouseDestroyed
|
|
| | |
Jery | Дата: Воскресенье, 10.03.2013, 00:43 | Сообщение # 128 |
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
| А лучше в OnHouseLost потому, что если игрок сам себе снесет единственный склад, то он тоже наверное должен проиграть =)
«Художник не тогда знает, что он достиг совершенства, когда нечего добавить, но когда нечего больше отнять». (Антуан де Сент-Экзюпери)
|
|
| | |
Alexandr_5 | Дата: Воскресенье, 10.03.2013, 00:50 | Сообщение # 129 |
Воитель
Группа: Проверенные
Сообщений: 1330
Награды: 4
Репутация: 33
Статус: Offline
| Да но надо будет дописать возможно ли будет построить его сново Добавлено (10.03.2013, 00:50) --------------------------------------------- OnUnitKilled - Возникает когда юнит убит. Called just before the unit is destroyed so UnitID is usable only during this event. Принимает: aUnitID: Integer; //UnitID убитого юнита. aKillerIndex: Integer; //Индекс убившего игрока.
А тут он может иметь кооличество убитых юнитов если да то можно допустим если умрет 10 юнитов то выдовать сообщения Мы столько не можем терять юнитов
а если будет уничтожено еще больше то порожение
|
|
| | |
Jery | Дата: Воскресенье, 10.03.2013, 01:00 | Сообщение # 130 |
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
| Объяви глобальную(вне всяких функций) целочисленную(integer) переменную. И увеличивай ее на 1 внутри OnUnitKilled, если убит юнит нужного игрока; и проверяй, если она стала равна 10, то пиши сообщение. Понадобятся: States.UnitOwner(UnitID) - возвращает индекс игрока владельца юнита. States.UnitType(UnitId) - возвращает тип юнита. Actions.ShowMsg(player_index, msg) - пишет сообщение игроку с индексом player_index, сообщение msg (обычная строка в кавычках, например "У вас большие потери").
«Художник не тогда знает, что он достиг совершенства, когда нечего добавить, но когда нечего больше отнять». (Антуан де Сент-Экзюпери)
Сообщение отредактировал Jery - Воскресенье, 10.03.2013, 01:01 |
|
| | |
Alexandr_5 | Дата: Воскресенье, 10.03.2013, 01:02 | Сообщение # 131 |
Воитель
Группа: Проверенные
Сообщений: 1330
Награды: 4
Репутация: 33
Статус: Offline
| Jery, а States.UnitOwner(UnitID) - возвращает индекс игрока владельца юнита. States.UnitType(UnitId) - возвращает тип юнита.
зачем
|
|
| | |
Jery | Дата: Воскресенье, 10.03.2013, 01:09 | Сообщение # 132 |
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
| Ну смотри OnUnitKilled вызывается при каждом убийстве юнита, независимо от того чей он был и какого типа. Внутри этой функции у тебя доступны все глобальные переменные, локальные переменные, которые ты объявишь внутри, и ЕЩЕ ДВЕ локальные переменные, которые передадутся в качестве аргументов. Эти две переменные aUnitID и aKillerIndex, в них сразу же будет содержаться ID убитого юнита и индекс игрока убийцы. Используя States.UnitOwner от aUnitID ты можешь узнать, кто был хозяином убитого юнита, а используя States.UnitType от aUnitID ты узнаешь какого типа он был, если тебе нужно например посчитать только убитых ополченцев.
А вообще я тут заметил, что мы изобретаем велосипед и есть функция States.StatUnitLostCount(player_index, unit_type), которая показывает потери юнитов типа unit_type игрока player_index.
«Художник не тогда знает, что он достиг совершенства, когда нечего добавить, но когда нечего больше отнять». (Антуан де Сент-Экзюпери)
Сообщение отредактировал Jery - Воскресенье, 10.03.2013, 01:10 |
|
| | |
Alexandr_5 | Дата: Воскресенье, 10.03.2013, 01:15 | Сообщение # 133 |
Воитель
Группа: Проверенные
Сообщений: 1330
Награды: 4
Репутация: 33
Статус: Offline
| Jery, Это в будущих миссиях в 6 это не надо так как там враг атакует и тебе не только надо сдержать врага но и построить определенные здания а также собрать необходимые ресурсы.
в 7 миссии скрипты не понадобится так как там просто уничтожить врага хотя раз скрипты Evt в новой версии ремейка не поддерживаются то такие скрипты в любом случаее прийдется писать
|
|
| | |
Jery | Дата: Воскресенье, 10.03.2013, 01:21 | Сообщение # 134 |
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
| Где тебе это нужно это твое дело. Я просто описываю возможности. Почти все, что можно вообразить, можно написать на новых скриптах, исключая любые действия с ландшафтом, что печально. Нельзя даже никак узнать есть ли близко каменная гора, чтобы заставить ИИ построить там каменоломню. Нельзя следить за действиями игрока, а только за их последствиями. И нельзя отследить юнита убийцу в OnUnitKilled, а только его владельца =)
«Художник не тогда знает, что он достиг совершенства, когда нечего добавить, но когда нечего больше отнять». (Антуан де Сент-Экзюпери)
Сообщение отредактировал Jery - Воскресенье, 10.03.2013, 01:22 |
|
| | |
Alexandr_5 | Дата: Воскресенье, 10.03.2013, 01:22 | Сообщение # 135 |
Воитель
Группа: Проверенные
Сообщений: 1330
Награды: 4
Репутация: 33
Статус: Offline
| Jery, Ну выдвени это в придложении по скриптам и думаю кром сделает
|
|
| |
|