» TeamX (Архив Форума)«


Форум TeamX » Тех. поддержка » worldmap.txt (Синтаксис условий встречи)

Переход по темам
<< Пред. След. >>
Страницы этой темы [ 1 2 ] Все собщения

 
Aman
Пользователь

Откуда: Киев
Регистрация: Апр. 2005

Всего: 208 сообщений

Как правильно писать и какие могут быть условия ?

Присутствуют в оригинале :
If (Rand(XX%));
If(Global(XXX) == X);
If(Player(Level) > X);
If(Global(X) > X) And If(Player(Level) > X) And If(Player(Level) < XX) и прочие подобные логические конструкции.

1. А вот будет ли работать сказанное как-то Raven'ом "if(days_played > global_var(x))" ?
2. Может надо "if(game_time > Global(XXX))" ?
3. Возможно ли например "If(Player(Perception) > X)" ?
4. Или тут совсем другая кухня и кроме того, что есть в оригинале ничего не работает ?

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

Отправлено: 19:56 - 9 Июля, 2005
Aman
Пользователь

Откуда: Киев
Регистрация: Апр. 2005

Всего: 208 сообщений

Нашёл Type Subinfo в worldmap.txt, но вопросы остаются:

; If:<something> -- conditionals, allows <,>,<=,>=,==,& as well as tests
;    on Player(<stat/attribute/skill/etc.> ), Enctr(Num_Critters),
;    Time, Global(<variable index> ), Rand(Chance%)

Пробовал If(Player(Perception) > 7) на Нарге (Perception = 6), энкаутер срабатывает :-(. С Time непонятно. В каком виде этот Time ? Пробовал с учётом, что Time в тиках или ЧЧММ, энкаутер срабатывает (по моему условию не должен был). Вот так было:
If(Time > Global(XXX)) и If(Time > ЧЧММ) And If(Time < ЧЧММ) - и не работает..

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

Отправлено: 13:40 - 10 Июля, 2005
Perceptron
Модератор

Откуда: Ivanovo
Регистрация: Май 2003

Всего: 502 сообщения

Aman, ты если чего накопаешь, сообщи. Можешь прямо в Исследования постить.

Отправлено: 0:19 - 13 Июля, 2005
Aman
Пользователь

Откуда: Киев
Регистрация: Апр. 2005

Всего: 208 сообщений

Продолжу тут, раз начал уже.

Еще немножко покопал. Разные фишки (текстовые договоренности и условия), которые есть в worldmap.txt, идут по 000FD2C8-000FD852 (US exe). Этот текстовый блок не полный правда, часть разных error'ov идет немного дальше, но вроде только error'ы не все тут.

Значит что бросается в глаза сразу:
1. возможные условия - только ==, !=, <, >. Что за развод ? Опять обманывают наивных фанатов :-( (отличие от Type Subinfo). Как-то я все-таки экзэшнику больше верю :-).
2. логика - только and и or (регистр вроде не влияет, не понял еще, в txt например идет And, в exe and).
3. регистр if'а тоже вроде не важен (не надо улыбаться, мне влом с большой буквы писать, поэтому хочу знать такие вещи :-) ), global(XXX), (player(level) - тоже с маленькой можно.

4. Теперь более интересное. По характеристикам player'а есть только player(level), никаких <stat/attribute/skill/etc.> не наблюдается :-(. Конечно все не проверял, пробовал только Player(Perception), до лазания по exe, но почти уверен что это ничего не даст (так как это txt, а не скрипт, нет соответственной фразы в exe, значит нет такой возможности).

5. По Time. Нет никакого Time. Есть две вещи: days_played и time_of_day. Попробовал If(days_played > 4) и УРА!!!, после четвертого дня все сработало (по идее, отсчет идет от 25 июля). С time_of_day не игрался, наверное это все таки ЧЧММ. Типо, ровно в полдень чузен встретил... Полдень вроде надо как 120 писать, а не 1200.

Есть кстати такая особенность ворлдмаппения: для проверки фишек, я занулил все шансы встреч (около Арройо), кроме Номадов (их на 100% поставил). Так вот, если у Номадов стояло условие не позволяющее их встретить, то срабатывал энкаутер перед ними (охотники Арройо), хотя он был 0%. То-есть можно сказать, что если сработал первоначальный Frequent, Common, Uncommon, Rare, то встреча будет по любому и если невозможна встреча с наибольшей вероятностью (и остальные имеют одинаковые шансы), то срабатывает первая к началу от той, что с наибольшей вероятностью :-). Ну это так, к слову.

Еще бы с процентными шансами разобраться (на предмет вероятности > 100%, возможно ли ?), чтобы можно было красиво чуза тормознуть, когда надо. Сдается мне, еда реальна ;-) (через If(days_played > Global(XXX)), а проблему еды "из инвентаря", я когда-то решил). Мечты, мечты.. Что кроме них, может так двигать нас к неизведанному :-) ?

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

Отправлено: 20:11 - 13 Июля, 2005
Perceptron
Модератор

Откуда: Ivanovo
Регистрация: Май 2003

Всего: 502 сообщения

Все это войдет в доку по worldmap.txt, если руки дойдут. Только сомневаюсь я, что скоро дойдут.
И одна мысль: что если движок берет названия статсов из STAT.MSG? Они ведь там на русском. Тогда будет не Perception, а Мудрость.

Отправлено: 23:19 - 13 Июля, 2005
Mynah
Модератор

Откуда: Пермь
Регистрация: Окт. 2004

Всего: 469 сообщений

2Aman:

Хм... Слово Player() - ещё понятно. Но вот названия статов действительно неизвестно откуда фолу брать. Из *.msg? Сомневаюсь.

Player(цифра) не пробовал?

-----
Scio me nihil scire

Отправлено: 23:39 - 13 Июля, 2005
Aman
Пользователь

Откуда: Киев
Регистрация: Апр. 2005

Всего: 208 сообщений

Player(цифра), Мудрость не пробовал (на всякий попробую). Если посмотреть exe, то можно увидеть "global(". То-есть встретив такую фразу, движок сразу читает номер за ней. А фразы "player(", просто "player" нет. Есть player(level), полностью. Не поймет движок другой вариант. Так что статсов тут просто нет. Кстати Player(Perception) в txt раза два встречается, но везде закомментирован, что опять наводит на мысль. Очередные недоделки.

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

Отправлено: 7:50 - 14 Июля, 2005
Aman
Пользователь

Откуда: Киев
Регистрация: Апр. 2005

Всего: 208 сообщений

Оказалось, что условие If(days_played > Global(XXX)) не работает :-((. Еда опять отпадает. Дело в том, что вторым значением похоже может быть только число и даже Global тут не проходит (то-есть работает If(days_played <,>,!=,==  1,2,3,4..). Это также и для остальных If'овых условий.

Вот, подытожил:

; Type Subinfo:
;-------------
; If:<something> -- conditionals, allows <,>,!=,==,& as well as tests
;    on Player(Level), Enctr(Num_Critters),
;    days_played, time_of_day, Global(<variable index> ), Rand(<Chance>%)

Вот этого:
; Spatial:<string> -- attaches a spatial script to the map
нет.

Ходят под If'ом:
- days_played - кол-во дней, считаются с 0 от дня начала игры (25 июля).
- time_of_day - время суток, ЧЧММ (полдень все-таки 1200, а 25 восьмого 825, лучше нужное время проверить в тестовом скрипте строкой: display_msg("My time=" + game_time_hour) ). Правда тут может быть засада.
- Enctr(Num_Critters) - кол-во криттеров при встрече (для встреч с рэндомным кол-вом криттеров).

Пример: If(days_played > 40) And If(time_of_day == 1535) Or If(Player(Level) != 5) And If(Enctr(Num_Critters) > 5) And If(Global(700) < 1)

Второе значение в If'е - только число (в примере 40, 1535..), гвару туда поставить не получится.

Влияние скобок на логику (используется and, or) неизвестно (возможно они вообще "испортят" ряд, то-есть совместное использование в одной строке and и or проблематично).

Есть ограничение на длину строки в worldmap.txt, приблизительно 255 символов.

Разницу, между шансом 100% и 300%, я не заметил.

Это то, что я проверил. Может еще некоторые возможности описанные в Type Subinfo не работают. Чтобы ориентироваться в оставшихся - если нет в оригинальном worldmap.txt (разкомментированых), значит они нерабочие.

Есть еще одна вещь. Вот известная фраза Item:8(Wielded), тобишь вооружение криттера вещью 8. А в exe рядом с wielded стоит worn (вроде изношенный-износ переводится ?). Не разоружение это ж наверное :-). Сначало подумал, что это отвечает за оружие без патронов, попробовал - никакого результата. В оригинальном worldmap.txt этот worn нигде не стоит.

P.S. Можно наверное в исследование тему переместить. Если надо.

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

Отправлено: 20:36 - 14 Июля, 2005
binyan
Пользователь

Откуда: Israel
Регистрация: Март 2005

Всего: 292 сообщения

А идея с едой не так уж и топадает. Что если сделать ето через time_of_day? Создаём переменную, и с условием while ставим проверку.Когда время = чему-то, добавляем в значение переменной +1. когда переменная достигает нужного значения, персонаж помирает с голоду.
P.S. Сильно не пинайте, у меня частенько проскакивают глупые идеи. Очевидно, если никто етого не предложил до сих пор, есть повод. А я просто не учёл что то наверное

-----
...выражая озадаченность, граничащую с озабоченностью..

Отправлено: 23:17 - 14 Июля, 2005
Mynah
Модератор

Откуда: Пермь
Регистрация: Окт. 2004

Всего: 469 сообщений

Во время передвижения по worldmap скрипты не работают.

-----
Scio me nihil scire

Отправлено: 23:50 - 14 Июля, 2005
 

Переход по темам
<< Пред. След. >>
Страницы этой темы [ 1 2 ] Все собщения


Powered by Ikonboard 2.1.9 RUS
Modified by RU.Board Team
© 2000 Ikonboard.com