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


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

Переход по темам
<< Пред. След. >>
Единственная страница этой темы

 
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
binyan
Пользователь

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

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

А в самом ткстишном файле создать нельзя?

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

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

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

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

В том то и дело, что нельзя. Txt - это не скрипт, скриптовый синтаксис тут не работает - собственная кухня (никаких while, никакой математики и переменных). Я написал, что тут можно (используемые в оригинале вещи я не трогал, там всё понятно), если чего-то не написал и этого нет в оригинале (разкомментированого), значит нет такой возможности. Если мне не верят, то направляю по 000FD2C8-000FD852 (US exe). То-есть например работают условия If(days_played > 10), If(time_of_day == 824), If(Global(700) < 1). Второе значение (10, 824, 1) - число и только число (гвара не проходит). В этом и ступор для еды, машин с топливом. То-есть статично это, раз указал и всё. единственная динамика в изменение гвар, но на If(<гвара> <условие> <число> ) не разгуляешься.

По "worn". Похоже это аналог "wielded", разницы между ними я не заметил (одинаково работают).

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

Отправлено: 8:00 - 15 Июля, 2005
binyan
Пользователь

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

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

Ну ладно. Если есть условие, значит должно быть и следствие. Т.е. если есть иф, то можно и зен поставить.Нет?
А, и вот ещё что. Когда чузен отравлен, то он останавливается во время его похода по ворлдмап, и над ним всплывает что нибудь типа "Ой, как мне плохо"
Как он останавливается? Может с помощью этого можно реализовать еду?

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

Отправлено: 17:32 - 15 Июля, 2005
Dar
Пользователь

Откуда: Воронеж
Регистрация: Дек. 2004

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

>>Попробовал If(days_played > 4) и УРА!!!, после четвертого дня все сработало (по идее, отсчет идет от 25 июля).

Пишем - это дело на 13 лет , может лучше хакнуть двиг на предмет длительности спасения деревни в 1год ?(если оно возможно.), так чтобы через каждые семь дней вызывалась локация какая-нибудь(пустышка) , а там скриптово определяем степень накормленности и состояние здоровья.
Намучившись игрок сам будет 3 раза в день останавливаться и кормиться.

>>А, и вот ещё что. Когда чузен отравлен, то он >>останавливается во время его похода по ворлдмап, >>и над ним всплывает что нибудь типа "Ой, как мне >>плохо"
>>Как он останавливается? Может с помощью этого >>можно реализовать еду?

Гм, у меня он либо не умирал, либо умирал -
возможно есть смертельное и несмертельное количество яда , возможно(не помню) выносливость на это влияет.

Отправлено: 1:51 - 16 Июля, 2005
Aman
Пользователь

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

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

to binyan

>> Если есть условие, значит должно быть и следствие. Т.е. если есть иф, то можно и зен поставить.Нет?

Читай топик внимательней, посмотри хоть раз worldmap.txt. Это не скрипт. If сам по себе. Then сам энкаутер, его встреча, если If верен.
Отравлением движок занимается. Приспособить это под что-то другое очень проблематично. Короче, можешь не фантазировать. Из того что пока знаем, еда не получится.

to Dar

>>Пишем - это дело на 13 лет

Вот веришь, никогда столько не получалось в одного перса играть . Maximum, вроде, года два было.

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

Да ну, грубо это. Да и за 7 дней встретишь кого-то и так (только не надо спор разводить по частоте встреч ).

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

Отправлено: 14:04 - 16 Июля, 2005
Dar
Пользователь

Откуда: Воронеж
Регистрация: Дек. 2004

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


>>Да ну, грубо это. Да и за 7 дней встретишь кого-то и так (только не надо спор разводить по частоте встреч ).

Не буду, так как кого мы встретим за 7 дней, а то и за месяц нам побоку - Вопрос ведь: Как сделать еду необходимой  и реалистичной и используемой?.

-> Дуд временами должен умирать от истошения и терять сознание - делается оно скриптово. (сам знаешь

А вызов пустышки-карты, только для того - чтобы
До СФ из ГУ добежать было нельзя не умерев с голодухи. т.е в СФ не прибывал давно труп.

И как разрулишь ситуацию "Дуд мрет с голода/потерял сознание" с "вы встретили Деадклавов".
гм,
- Вас кушали теплым и бесчувственным, довольное мырлыканье детенышей Когтя означало, что еще один сейв-лоад прожит....
-Рейдеры с душой вытирали ноги об полного дистрофика и вошли в город в блестяших сапогах.
-Недавно у Мерцгера мог появится новый раб, но к сожалению Мерцгера  "мог" был окончательно истощен пустошью, поэтому в приступе жалости он позволил недомерку Сдохнуть Свободным.
?

Отправлено: 19:22 - 18 Июля, 2005
 

Переход по темам
<< Пред. След. >>
Единственная страница этой темы


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