вопросик один
#11
Код:
возвращает истину = 1- если объект: Unit труп, и ложь =0 - в противном случае. Если объект поднят? если объект не существует?, если ввести код предмета,  например ключ от пирамиды?
Пример: Гоблин Дозорный до Убийства. В консоли будут следующие значения:
@ConsoleFloat(IsAlive(GetObject(4747)))          = 1
@ConsoleFloat(Not(IsAlive( GetObject(4747))))  =0
@ConsoleFloat(IsDead( GetObject(4747)))        =0
@ConsoleFloat(Not(IsDead(GetObject(4747))))  =1
После убийства Гоблина:
@ConsoleFloat(IsAlive(GetObject(4747)))         = 0
@ConsoleFloat(Not(IsAlive( GetObject(4747))))  =1
@ConsoleFloat(IsDead( GetObject(4747)))        =1
@ConsoleFloat(Not(IsDead(GetObject(4747))))  =0
После поднятия трупа:
@ConsoleFloat(IsAlive(GetObject(4747)))         = 0
@ConsoleFloat(Not(IsAlive( GetObject(4747))))  =1
@ConsoleFloat(IsDead( GetObject(4747)))        =0
@ConsoleFloat(Not(IsDead(GetObject(4747))))  =1
С функцией IsDead могут быть проблемы, так если очень быстро поднять тело убитого врага (в старых версиях) напрмер после стены огня, то игра моджет не засчитать квест. Лучше использовать  Not(IsAlive(Object)).


С функцией isAlive и isDead не так все просто, в коде может быть не явным образом сделано отрицание, через ELSEIF и проверяться игровые моменты, которые не заменишь друг на друга этими функциями. Я не стал исправлять сразу все ошибки в ПЗ, так как каждый такой случай нужно интеллектуально оценить. Вернее, даже исправил, то о чем пишет Твистер, но потом закомментировал, так как, опять же, нужно будет «руками» все править.
Таблица процедур, что я написал - команды, функции, которые встречаются в ПЗ, это не все функции, которые мы поддержим.
Вообще, Мы собираемся ввести в конструктор ПЗ несколько больше логических команд и функций. Мы очень сильно упростили язык ПЗ, на столько сильно, что в нашем макроязыке нет вообще работы с группами, а соответственно и организации циклов. Группы обрабатывается по определенной логике. Логика нового скрипта построена на основе проверки функциями состояния переменных как: «ИСТИНА» и никогда: «ЛОЖЬ»! Дизайнеру уровней игры ненужно будет задумываться, как убить группу, просто указать: «удалить», и все. Все объекты и группы должны будут объявляться предварительно, и наш компилятор будет определять, какому объекту какой метод применен. Вот как планируется обрабатывать скрипт, и что подразумевается под понятием функций: isDead, isAlive




<TABLE BORDER=1 CELLPADDING=1>
<tr><td> Правило </td><td> Функция </td><td> Описание </td><td> <B>Пример </B></td></tr>
<tr><td> 1 </td><td> IsInAreaObj </td><td> любой из группы в любой области - истина </td><td> Any </td></tr>
<tr><td> 2 </td><td> iaNotDead </td><td> В группе нет ни единого трупа(мертвеца) </td><td> Any(i,s1,IsDead(i)) </td></tr>
<tr><td> 3 </td><td> IsEnemy </td><td> в группе хоть один враг игроку - истина (вся группа враги!) </td><td> Any(i,Peasans,IsEnemy(i,0)) </td></tr>
<tr><td> 4 </td><td> IsFriend </td><td> в группе нет ни единого врага игроку - то истина (вся группа друзья). </td><td> Not(Any(i,Peasans,IsEnemy(i,0))) </td></tr>
<tr><td> 5 </td><td> isDead </td><td> в группе хоть один трупп (мертвец) на карте! </td><td> Every </td></tr>
<tr><td> 6 </td><td> isAlive </td><td> в группе жив хоть один член группы, тогда истина </td><td> </td></tr>
<tr><td> 7 </td><td> IsLessDistanceUnitUnit </td><td> любой из группы ближе к юниту на указанное расстояние - истина </td><td> AnyIsLessDistanceUnitUnit(Heroes,BoarCage,7) </td></tr>
<tr><td> 8 </td><td> IsGreaterDistanceUnitUnit </td><td> любой из группы дальше от юнита на указанное расстояние - истина </td><td> Any </td></tr>
<tr><td> 9 </td><td> IsGreaterDistanceUnitPoint </td><td> любой из группы дальше указанного расстояния - истина. Обратное, если нужно чтобы вся группа была ближе к указанной точке. Аналог через ELSE (Every(i,Dkins,IsLess(DistanceUnitPoint(i,6,160),7)) - переделана структура на ELSE) </td><td> Any </td></tr>
<tr><td> 10 </td><td> isNotAlive </td><td> в группе убиты все , тогда истина. </td><td> </td></tr>
<tr><td> 11 </td><td> isPresent </td><td> присутствует юнит на карте. </td><td> </td></tr>
<tr><td> 12 </td><td> isAbsence </td><td> отсутствует юнит на карте. </td><td> </td></tr>
</table>

P.S: Это рабочая табличка и примеры могут не соответствовать действительности. Но, так в общих чертах...
Ответ


Сообщения в этой теме
вопросик один - от Twister - 23.07.2003, 15:52
вопросик один - от sun - 23.07.2003, 20:27
вопросик один - от Twister - 24.07.2003, 00:04
вопросик один - от sun - 24.07.2003, 11:24
вопросик один - от Twister - 24.07.2003, 13:18
вопросик один - от sun - 24.07.2003, 18:26
вопросик один - от Twister - 24.07.2003, 22:58
вопросик один - от Jet - 24.07.2003, 23:18
вопросик один - от Twister - 25.07.2003, 21:19
вопросик один - от Jet - 25.07.2003, 21:34
вопросик один - от sun - 26.07.2003, 13:26

Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)