You are not logged in.
@Seemann - sat? о вкусах не спорят, но по-моему в 2D карте, где каждый пиксел - это 20 метров невозможно расставлять актёров и тем более кубов.
Идея: при создании нового файла появлялась окошко с выбором действия:
1. Создать новый чистый файл
2. Создать скрипт на основе stripped (SB просто открывает stripped.txt и предлагает сохранить)
3. Создать скрипт на основе оригинального main.scm (SB декомпилирует Main.scm)
4. Создать CLEO-скрипт (SB создает файл с {$CLEO} строчкой в начале)
5. Создать CLEO-миссию (SB открывает заготовку миссии из справки и с директивой {$CLEO .cm})
И ещё: из SB невозможно напрямую скопировать в Блокнот, браузер и т. д.. Это из-за SynEdit? Это можно поправить?
[small][/small]
Offline
VcSaJen
Для быстрого написания заголовка можно использовать макросы. И быстро, и понятно, и не раздражает
Например
Cleo=Cleo Script ={$CLEO} =0000: = =|
Offline
1. Какова готовность новой версии SB? (почти готово/не готово/наполовину готово)
[small][/small]
Offline
Почти. Осталось прикрутить только одну штуку - поиск по INCLUDE-файлам при нажатии Ctrl+Space. Если не считать этого, то новая версия уже готова.
Offline
@Seemann, какие изменения, если не секрет, будут в новом SB?
Offline
@Agenzvell
Добавь в файл keywords.txt (\SB3\data\sa)
038B=loadmodels
и готово. А можно добавить в файл classes.db (открывается блокнотом, лежит тамже)
LoadRequest,038B,0,0
Но первый вариант лучше
Offline
@flashTrash - самим добавлять кейворды и классы не рекомендуется из-за проблем с совместимостью скриптов.
[small][/small]
Offline
@VcSaJen
Это если их опубликовывать, то да, будет несовместимость(если только не заменить на стандартные опкоды). А так никаких проблем.=)
Offline
А что, если сделать так, что-бы к cleo переменным обращаться не через ID, а через строку-имя переменной.
Last edited by VcSaJen (10-08-2008 06:25)
[small][/small]
Offline
Можно ещё добавить ключевое слово Debug
пример:
debug ON debug Actor.PutAt($Player_Actor, 555.0, 555.0, -100.0) // выполняется при отладке if 00ec: actor $Player_actor 1 near_point 555.0 555.0 radius 1.0 1.0 then ...
Это может быть полезно для многих скриптеров. одним изменением Debug на OFF выключаем весь отладочный код.
[small][/small]
Offline
Можно ещё добавить ключевое слово Debug
то, что ты предложил, в обычных языках программирования реализуется через директивы DEFINE и IFDEF. В todo-листе санника такая фича была прописана уже давным-давно, но не знаю, дойдет ли это когда-нибудь до релиза.
А что, если сделать так, что-бы к cleo переменным обращаться не через ID, а через строку-имя переменной.
идея интересная, стоит подумать.
Насчет задержки выхода - мой домашний комп сломался, поэтому выложить новую версию смогу только, когда куплю новый комп, возможно на этой неделе.
Offline
@flashTrash - самим добавлять кейворды и классы не рекомендуется из-за проблем с совместимостью скриптов.
Добавлять может и не рекомендуется, но перевод на русский рулит:crazy:
Я делал, очень всё понятно стало
Надеюсь в новом релизе увидеть русифицированные опкоды
Мой пример:
0464: поместить_чела 99@ в_туррель_на_машину 68@ с_оффсетом 266@ 267@ 268@ позиция 0
GIMS developer
Offline
Вот написал статью "Зачем нужен wait или устройство thread'ов" для справки SB. Я там длинно и путанно объяснял, но кажется нормально. Скачать можно из прикреплённого архива, или смотреть Здесь. Сообщите мне, если найдёте ошибки.
И ещё: из SB невозможно напрямую скопировать в Блокнот, браузер и т. д.. Это из-за SynEdit? Это можно поправить?
Уточнение - если перед копированием в буфер обмена в SB переключить раскладку на английскую, то все русские буквы превращаются в мешанину западных символов (проблема с кодировкой). При копировании если включена русская расскладка, то всё по-нормальному.
@3Doomer - это опкод, а не класс (кейворд).
P.S. Что-то на русском форуме 0 новых постов уже неделю (отпуска у всех закончились?).
Last edited by VcSaJen (16-08-2008 12:01)
[small][/small]
Offline
Есть несколько замечаний.
1) Почему для непрерывных циклов не рекомендуется ставить вэйт 0 ? Сколько не ставил - всегда работало как часы.
2) Помоему очевидно зачем ставит вэйт, например, 250, а вот зачем ставить вэйт 0 - непонятно, ведь что такое 0 мс? Вот на этот вопрос новички ответа не найдут.
Offline
@flashTrash -
1) Не рекомендуется если скрипт никуда не торопится, потому-что он будет слишком часто прерывать остальные потоки. Например, при проверке загруженности модели wait 0 приветствуется.
Хотя, я пробовал загрузить в cleo папку 1800 с лишним скриптов с задержкой 0 ms. И игра не зависла, хотя тормозила. Так что пять скриптов с нулевой задержкой не будут тормозить игру. (немного подкорректировал)
2) Немного исправил то предложение.
@All - в последнем скрипте была грубейшая ошибка. Я её исправил. Перекачайте заново.
[small][/small]
Offline
При копировании если включена русская расскладка, то всё по-нормальному.
Угу, хорошее замечание.
Статья хорошая, особенно понравилась схема со стрелками.
Wait 0 означает, что поток будет исполняться без задержек с максимальной частотой. Учитывая, что игра выполняет все подпрограммы (траффик, скрипты, графика, звук и т.д.) за ~16мс (на моем компе), особой разницы между wait 0 и, например, wait 10 нету.
Offline
он будет слишком часто прерывать остальные потоки
первый раз такое слышу. я вообще то думал(и думаю) что каждый тред(поток) обрабатывается отдельно и вэйт нужен для того, чтобы опкод после вэйта обрабатывался через определённый промежуток времени, а не для того чтобы работали другие потоки. Вобщем без бутылки не разобратцо
Offline
Важный эффект команды в том, что в результате ее выполнения управление передается от текущего скриптового потока обратно планировщику потоков скриптовой машины, которая таким образом получает возможность дать поработать другим потокам исполнения и, в конце концов, возвратить управление обратно игре.
Offline
@Seemann - Спасибо
@Fess - Скажи пожалуйста источник, а то я узнал по SCMLog, а хочется знать в оригинале (и подкорректировать статью, если есть расхождения)
[---]
Edit:
Подкорректировал.
Last edited by VcSaJen (16-08-2008 12:02)
[small][/small]
Offline
Любая игра изпользующая скрипты использует подобнуб команду (wait, sleep). Пример из игры HOMMV.
sleep
sleep — приостановить на время текущий поток исполнения
Синтаксисsleep(number-of-segments);
Описание
Останавливает работу текущего потока исполнения на указанное время. Время задается в игровых сегментах.
Значение параметра number-of-segments должно быть ≥ 1.
Команда sleep необходима для создания скриптов, которые должны выполнять периодические действия в течение долгого времени (например, скрипты, реализующие сценарии карт):
while 1 do sleep(100) print("another 100 game segments has passed") endВажный эффект команды sleep в том, что в результате ее выполнения управление передается от текущего скриптового потока обратно планировщику потоков скриптовой машины, которая таким образом получает возможность дать поработать другим потокам исполнения и, в конце концов, возвратить управление обратно игре.
Например, если приведенный выше скрипт запустить на исполнение, убрав из него вызов sleep(100), то игра "зависнет" – поток, в котором будет исполняться скрипт, никогда не вернет управление скриптовой машине, а та – не вернет управление игре.
Offline
Насчет задержки выхода - мой домашний комп сломался, поэтому выложить новую версию смогу только, когда куплю новый комп, возможно на этой неделе.
Итак, проблема с компом решена. Поэтому сегодня выложил-таки версию 3.04 (включает CLEO 3.0.950). Изменения незначительные, в основном повышает удобство работы с cleo-скриптами.
Поскольку мне пришлось переустанавливать Delphi и перенастраивать все заново, то возможно что в новой версии что-то не будет работать из старых фич. Просьба сразу же отписываться о подобных вещах.
Старую версию 3.03 можно найти в архиве.
Offline
Качаю...
Хотя размер небольшой, с 1 килобитом до завтра докачаю .
В списке изменений нет о расширенном подставке названий из ide моделей (конкурс ещё же был).
Это забыто в списке или его нет?
Last edited by VcSaJen (17-08-2008 09:06)
[small][/small]
Offline