|
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
|
|
|
|