|
|
|
Канал X2: The Threat: «Скрипты - это легко...» |
|
Нужен ли этот проект? |
Да |
|
96% |
[ 215 ] |
Нет |
|
0% |
[ 1 ] |
Мне все равно |
|
2% |
[ 6 ] |
|
Всего проголосовало : 222 |
|
|
|
DragonP 281 EGP
Рейтинг канала: 3(27) Репутация: 108 Сообщения: 527 Откуда: Новосибирск Зарегистрирован: 18.12.2004 |
|
RAider : |
искал гдебы в виже архивчика скачать целиком информацию. не нашел...или плохо искал?...уже думаю - а не выкачать ли целиком все твои странички с народа.кстати, сколько такой архивчик весить будет - с той инфой,что есть на данный момент?
|
На сегодня в архиве 2.44 мб, не выкладываю архив потому, что проект не завершен. Как закончу, есть договоренность со Starck, он оформит под распечатку и под просмотр, а Виталий выложит на ЕГ готовый учебник.
Но если надо, могу выложить в архиве то, что есть. Но все же, лучше не торопиться. Если в январе конца не было видно (сори, за не правильные асоциации ), то сейчас сделано не меньше 70%. Думаю к концу месяца завершить.
_________________ Звезды зовут... |
|
|
DragonP 281 EGP
Рейтинг канала: 3(27) Репутация: 108 Сообщения: 527 Откуда: Новосибирск Зарегистрирован: 18.12.2004 |
|
Все поправки, что обсуждались выше внесены в проект.
_________________ Звезды зовут... |
|
|
XenonTomb 250 EGP
Рейтинг канала: 2(16) Репутация: 66 Сообщения: 867 Откуда: Николаев, Украина Зарегистрирован: 17.03.2004 |
|
Поддерживаю!
2DragonP
Намылил тебе небольшую статейку для новичков "Использование циклов".
_________________ Будут предложения - присылайте на расчетный счет :) |
|
|
XenonTomb 250 EGP
Рейтинг канала: 2(16) Репутация: 66 Сообщения: 867 Откуда: Николаев, Украина Зарегистрирован: 17.03.2004 |
|
Уточнение для команды create flying ware. Если указать время существования null, то контейнер будет существовать неограниченно долго (если ему не помешают )
_________________ Будут предложения - присылайте на расчетный счет :) |
|
|
XenonTomb 250 EGP
Рейтинг канала: 2(16) Репутация: 66 Сообщения: 867 Откуда: Николаев, Украина Зарегистрирован: 17.03.2004 |
|
Важное уточнение для торговых команд find station: product/resource/sells. Эти команды не могут найти верфь, продающую определенный корабль или станцию. Это либо баг, либо так задумано.
_________________ Будут предложения - присылайте на расчетный счет :) |
|
|
DragonP 281 EGP
Рейтинг канала: 3(27) Репутация: 108 Сообщения: 527 Откуда: Новосибирск Зарегистрирован: 18.12.2004 |
|
Антон спасибо за такое кол-во инфы. Огромный респект !!! Сегодня все поправлю. В статье, взял на себя смелость немного подправить, для сохранения стиля. Надеюсь ты не в обиде.
Akm, очень рад что ты опять с нами !!! Надеюсь ты тоже подключишся к работе. Еще раз, очень рад, что ты вернулся.
_________________ Звезды зовут... |
|
|
akm 470 EGP
Рейтинг канала: 1(4) Репутация: 173 Сообщения: 1638 Откуда: Паразит Прайм Зарегистрирован: 23.10.2002 |
|
Чем на дольше уходишь, тем больше рады
Тут меня General уже попросил по AL-плагинам доку написать. Если там через недельку еще надо будет, то напишу.
Пока что не было времени почитать текущую версию пособия, но обязательно посмотрю его в будущем и тоже поправки/дополнения дам.
|
|
|
XenonTomb 250 EGP
Рейтинг канала: 2(16) Репутация: 66 Сообщения: 867 Откуда: Николаев, Украина Зарегистрирован: 17.03.2004 |
|
2DragonP
Вчера обнаружил ловкий баг команды <RetVar/IF> <station> trades with ware <ware>. Оказывается, если применить эту команду при проверке, торгует ли верфь определенным кораблем, то команда возвращает [TRUE] в ЛЮБОМ случае, даже если реально верфь не торгует таким кораблем! Если проверять, торгует ли верфь такой-то станцией, то результат корректный. Что-то тут ЭГОСОФТ недоглядел...
akm : |
General уже попросил по AL-плагинам доку написать. Если там через недельку еще надо будет, то напишу.
|
В любом случае было бы неплохо.
_________________ Будут предложения - присылайте на расчетный счет :) |
|
|
DragonP 281 EGP
Рейтинг канала: 3(27) Репутация: 108 Сообщения: 527 Откуда: Новосибирск Зарегистрирован: 18.12.2004 |
|
Отчет о изменениях от 11\3\2005
1. Внесены поправки в описание "Команды работы с объектами"
2. Добавлено в приложение «Сводная таблица Типов и Субтипов товаров и объектов.»
3. Добавлено в приложение описание типов специальных объектов (create special).
4. Поправки в описании Торговых команд
5. Добавлена статья XenonTomb’a «Принципы использования циклов»
6. Исправлены ошибки в описании команд add product, create station, set pilot speaker
___________________________________________________________________
Страница проекта «Скрипты- это легко» http://www.Ссылки на narod.ru запрещены! Используйте пожалуйста другие, более нормальные хостинги./
_________________ Звезды зовут... |
|
|
XenonTomb 250 EGP
Рейтинг канала: 2(16) Репутация: 66 Сообщения: 867 Откуда: Николаев, Украина Зарегистрирован: 17.03.2004 |
|
2DragonP
Вот у тебя еще маленькая неточность (вернее в MSCI Handbook )
<ship> -> set pilot speaker: voice=<voic1e>, face=<face>, Pirate subrace=[TRUE]|[FALSE], Argon female=[TRUE]|[FALSE]
Здесь надо указать <race> - это именно псевдо-раса пирата. Реально у него раса "Пират", но сам пилот внешне будет расы <race>, и соответственно у него будет имя, характерное для указанной расы.
_________________ Будут предложения - присылайте на расчетный счет :) |
|
|
Shadowman 265 EGP
Рейтинг канала: 1(1) Репутация: 42 Сообщения: 1392 Откуда: Альфа Центавра Зарегистрирован: 03.12.2003 |
|
2DragonP
Отличное дело делаешь! Респект
Могу помочь с хтмл-кодированием. Очень уж ФронтПэйдж тяжеловесный код делает. Я бы взял ДримВэвер для этих целей - у него на выходе код почти идеальный (конечно, вручную все равно лучше можно сделать ). Хотя, должен признать, что текстовые вставки с форматированием (как в игровом редакторе) и графические диаграммы просто бесподобны. Остальной код можно облегчить раза в 3 как минимум.
Если интересует - пиши в ПМ (заодно можно будет потом и chm-версию забацать, когда проект завершится).
|
|
|
XenonTomb 250 EGP
Рейтинг канала: 2(16) Репутация: 66 Сообщения: 867 Откуда: Николаев, Украина Зарегистрирован: 17.03.2004 |
|
Поправка к торговым командам
<RetVar/IF> <ship> buy [sell,load,unload] <count> units of <ware>
Они не работают для больших кораблей, пристыкованных снаружи станции.
_________________ Будут предложения - присылайте на расчетный счет :) |
|
|
XenonTomb 250 EGP
Рейтинг канала: 2(16) Репутация: 66 Сообщения: 867 Откуда: Николаев, Украина Зарегистрирован: 17.03.2004 |
|
Поправка к навигационной команде
у тебя : |
<RetVar>=<ship> find nearest missile aiming to me
Возвращает ближайшую ракету <ship>, наведённую на объект <RefObj> или null если таких ракет нет. Инструкцию можно использовать только для поиска ракет.
|
Надо: возвращает в <RetVar> ближайшую ракету, наведённую на объект <ship>... Кстати, <ship> здесь не обязательно корабль, лучше написать <RefObj>.
_________________ Будут предложения - присылайте на расчетный счет :) |
|
|
DragonP 281 EGP
Рейтинг канала: 3(27) Репутация: 108 Сообщения: 527 Откуда: Новосибирск Зарегистрирован: 18.12.2004 |
|
XenonTomb : |
Поправка к навигационной команде
|
Ок. Сегодня поправлю.
_________________ Звезды зовут... |
|
|
DragonP 281 EGP
Рейтинг канала: 3(27) Репутация: 108 Сообщения: 527 Откуда: Новосибирск Зарегистрирован: 18.12.2004 |
|
Отчет о изменениях от 19\3\2005
1. Написана статья в раздел «Интерпретатор скриптовых команд «Сигналы»»
Xenon и akm жду ваших комментариев. Никакой инфы не нашел, кроме статьи в MSCI, копал сам. Скорее всего, что нибудь упустил.
___________________________________________________________________
Страница проекта «Скрипты- это легко» http://www.Ссылки на narod.ru запрещены! Используйте пожалуйста другие, более нормальные хостинги./
_________________ Звезды зовут... |
|
|
akm 470 EGP
Рейтинг канала: 1(4) Репутация: 173 Сообщения: 1638 Откуда: Паразит Прайм Зарегистрирован: 23.10.2002 |
|
Первый абзац:
Цитата: |
Данный сигнал прервет скрипт выполняемый на атакуемом корабле в данный момент и передаст управление специальному скрипту обработчику сигнала.
|
Лучше так:
"Данный сигнал прервет скрипт выполняемый в нулевом стеке на атакуемом корабле в данный момент и передаст управление специальному скрипту обработчику сигнала, который в свою очередь будет выполняться в этом же стеке. Прерывание произойдет только при условии, что приоритет прерывающего скрипта выше приоритета текущего выполняемого на корабле скрипта."
Про приоритеты ты рассказываешь в самом низу, думаю все же не лишним будет упоминание в основном описании.
Цитата: |
Изначально, в игре за назначение обработчиков сигналов, отвечает служебный скрипт !init.ship.globalscriptmap.std.xml
|
Лучше ссылаться на скрипт "!init.ship.globalscriptmap" Из него пу сути вызов целого ряда инициализирующих скриптов.
В наименованиях колонок таблицы лучше будет "Приоритет по умолчанию" т.к. приоритет скрипта-обработчика сигнала может меняеться даже в ходе его выполнения.
Еще бы добавить к статье:
Будте предельно аккуратны при вызове каких-либо скриптов из скрипта-обработчика сигнала! Если вы выполните вызов с префиксом START на [THIS], то вероятнее всего произойдет зависание игры. Если решили использовать START - лучше запускайте скрипт глобально, т.е. на null. Или же не используйте префикс START, но тогда выполнение скрипта-обработчика сигнала (а следовательно и всех до этого прерванных им скриптов) будет приостановлено вплоть до завершения этого дополнительного вызванного скрипта.
Цитата: |
Теперь, в стек добавился еще один скрипт. Это назначенный нами обработчик сигнала SIGNAL_ATTACKED и т.к. его приоритет выше всех остальных скриптов находящихся в нулевом стеке объекта, то все остальные скрипты находящиеся в стеке будут приостановлены до того момента пока signal.ATTACKED не закончит свою работу.
|
Не совсем верное утверждение. Выполняться будет не тот скрипт, приоритет которого выше, а тот, что в самом низу стека! Приоритеты в ScE управляют лишь добавлением в этот самый низ стека И если нижний скрипт вдруг снизит свой приоритет, то для остальных скриптов в стеке ничего не извенится. Зачем это надо? - Позволить прервать весь стек скриптам с определенными приоритетами. Можно даже было бы разобрать стандартный обработчик SIGANL_ATTACKED для ТС. Там такая интересная штука заложена:
1) Почти при каждом попадании в ТС запускается этот скрипт и производится проверка уровня щитов и корпуса. При определенных условиях корабль производит запуск дронов и защитный маневр.
2) Если дело совсем дрянь, прямо в этом обработчике, запускается (5) бегство на ближайшую станцию.
Пока "бегство" не завершено, скрипт-обработчик естественно все еще выполняется и блокирует запуск п.1 при каждом попадании по кораблю и корабль прекратил бы маневрировать и очень скоро был бы добит, если бы не:
4) понижается приоритет текущего скрипта обработчика с 100 до 50
А чтобы "бегство" не запустилось повторно:
3) используется проверка "if not is script with prio 50 on stack"
И вот только затем:
5) бегство на ближайшую станцию
Т.е. даже если где-то вверху или в середине стека есть скрипт с приоритетом 90, он все равно не возобновит свое выполнение, даже если нижний скрипт вдруг сменит свой приоритет на 50
И еще, начал было читать с самого начала про "Многозадачность", наверное стоит упоминуть ряд багов встроенного редактора:
Цитата: |
Когда вы открываете встроенный в игру редактор скриптов и нажимаете PgDn, перед вами появляется длинный список скриптов - в нем присутствуют все скрипты, хотя бы один раз исполнявшиеся с начала игры.
|
Эх, хорошо если там хотя бы половина запускавшихся скриптов будет отображаться. Даже выполняемые в данный момент скрипты не все отображаются
Цитата: |
Их имена - в первой колонке списка. Во второй и третьей колонке вы видите некие числа. Они показывают - сколько экземпляров этого скрипта исполняется в данный момент.
|
И тут есть весьма серьезный глюк.
Если в скрипте "С1" производится запуск скрипта "С2" в текущем стеке с вытеснением текущего скрипта, т.е. командой:
START [THIS]-> call script 'C2'
или
START [THIS] -> command ...
в этом случае счетчики количества запусков скрипта во всех колонках 2, 3 и 4 как бы не заметят, что скрипт "С2" вовсе запускался, более того, будут показывать, что все еще выполняется "С1"
Ну на сегодня хватит
ЗЫ. Я тут подумал. Наверное не стоит заграмождать те или иные статьи описанием всех известных багов (как бы не получилось что текста про баги будет больше чем основного содержания статьи) и у человека, читающего будет кружиться голова (или еще хуже - испугается и плюнет на все это скриптописание ) Лучше сделать отдельную статейку про известные баги и там их пронумеровать и расставить метки. Далее в тематических статьях просто вставлять ссылки.
Более того, заграмождать статью лишними деталями тоже дурной тон. Тяжело читать будет даже профессионалу. Надо в полной мере использовать HTML/CHM и просто вставлять нужные ссылки на эти "детали", т.к. скорее всего эти детали уже подробно объяснялись в какой-то другой статье.
|
|
|
DragonP 281 EGP
Рейтинг канала: 3(27) Репутация: 108 Сообщения: 527 Откуда: Новосибирск Зарегистрирован: 18.12.2004 |
|
akm : |
Более того, заграмождать статью лишними деталями тоже дурной тон. Тяжело читать будет даже профессионалу. Надо в полной мере использовать HTML/CHM и просто вставлять нужные ссылки на эти "детали", т.к. скорее всего эти детали уже подробно объяснялись в какой-то другой статье.
|
Согласен.
Между работой над разделом и последней статьей большой промежуток по времени получился и следствие - развал информативной целостности и повтор того о чем говорилось в предыдущей статье.
Поправки по статье учел, статью подредактирую
_________________ Звезды зовут... |
|
|
akm 470 EGP
Рейтинг канала: 1(4) Репутация: 173 Сообщения: 1638 Откуда: Паразит Прайм Зарегистрирован: 23.10.2002 |
|
Статейка хорошая получилась С примерами, и вроде доступно все расписано. Убирать ничего не надо из нее. Это я по отношению к некоторым своим дополненим говорил, что эти детали лучше в других местах изложить, а в статье делать сноски
Вот еще пока не забыл. Касательно wait. Есть такой пожалуй наиболее мерзский баг: если какой-то непрерывно выполняющийся кусок скрипта (т.е. между двумя ближайшими прерываемыми командами @) выполняется на протяжении более 200 мс, то игра необратимо повиснет Это одна из основных причин повисания казалось бы идеально написанного скрипта. Причем, если на быстром проце скрипт может отмолотить за 50 мс, это не гарантирует, что на компе с более слабым процом этот же скрипт не подвесит игру. Но это еще не самое страшное. Как известно, весь движек игры есть один единственный процесс, где графика, экономика, скрипты и многое другое выполняется поочередно Итог - стоит проглючить анимации в интенсивном бою и это незамедлительно отражается на скорости исполнения скриптов. Не вместились в окно 200 мс - и кранты игре И этот баг фиг отловишь, т.к. он может иметь место 1 раз за 20 часов игры.
Так что не экономьте на командах wait! Даже "wait 1 ms" здорово помогает избегать подобных инцидентов. Т.е. обязательно внутри любого цикла должен быть "wait 1 ms", если только этот цикл не велик и вы абсолютно уверены, что он завершится при любых обстоятельствах.
|
|
|
DragonP 281 EGP
Рейтинг канала: 3(27) Репутация: 108 Сообщения: 527 Откуда: Новосибирск Зарегистрирован: 18.12.2004 |
|
Выложил новый вариант статьи "Сигналы", да так еще по разделу кое что поправил.
_________________ Звезды зовут... |
|
|
XenonTomb 250 EGP
Рейтинг канала: 2(16) Репутация: 66 Сообщения: 867 Откуда: Николаев, Украина Зарегистрирован: 17.03.2004 |
|
XenonTomb : |
баг команды <RetVar/IF> <station> trades with ware <ware>
|
Это стоит упомянуть
_________________ Будут предложения - присылайте на расчетный счет :) |
|
|
|
|
|
Канал X2: The Threat: «Скрипты - это легко...» |
|