#51 07-06-2008 14:18

flashTrash
From: Н.Новгород
Registered: 21-02-2007
Posts: 260
Website

Re: FAQ по CLEO 3

У меня работает=)

Offline

#52 07-06-2008 18:53

Centrino Duo
Registered: 08-05-2008
Posts: 99

Re: FAQ по CLEO 3

Мне нуно чтоб тачи ходили по определенным координатам. гворят этими опкодами мона 05D7
07E7..

Offline

#53 07-06-2008 19:07

Seemann
Registered: 07-08-2006
Posts: 2,099

Re: FAQ по CLEO 3

Для таких вопросов есть соответствующий форум
http://sannybuilder.com/forums/viewforum.php?id=5

В этой теме обсуждается только CLEO 3

Offline

#54 07-06-2008 20:02

flashTrash
From: Н.Новгород
Registered: 21-02-2007
Posts: 260
Website

Re: FAQ по CLEO 3

А я вот что-то забыл. CLEO скриптам можно давать имена потоков опкодом 03A4:?
P.S. вроде вопрос касается клео:D

Last edited by flashTrash (07-06-2008 20:03)

Offline

#55 08-06-2008 08:47

Seemann
Registered: 07-08-2006
Posts: 2,099

Offline

#56 08-06-2008 17:31

AlphaOmega
Registered: 02-06-2008
Posts: 98

Re: FAQ по CLEO 3

Seemann wrote:
0ABA: end_custom_thread_named 'BENZIN'

Если будут ошибки в новой версии - пишите.

Пишу -
когда доходит до этого опкода - гта са вылетает.
возможно будет работать если эта THREAD будет в том же скрипте, но если в другом - то вылетает sad

кстати вопрос в тему: допустим, есть два клео скрипта с двумя thread`ами (по одному в каждом).
как их объединить (что нужно в начале общего скрипта написать) чтобы не пришлось ничего переписывать чтобы не запутаться wink ?

Offline

#57 08-06-2008 17:44

Seemann
Registered: 07-08-2006
Posts: 2,099

Re: FAQ по CLEO 3

Удивительно, перепроверил опкод еще раз - у меня работает (в один скрипт добавил 03A4: 'FLOWER', во второй 0ABA: 'FLOWER'. Первый поток прекратился). Покажи свой код.

Народ, у кого-нибудь еще есть проблемы с новым опкодом?


допустим, есть два клео скрипта с двумя thread`ами (по одному в каждом).
как их объединить

задача не ясна. Зачем их объединять?

Last edited by Seemann (08-06-2008 17:50)

Offline

#58 08-06-2008 17:46

flashTrash
From: Н.Новгород
Registered: 21-02-2007
Posts: 260
Website

Re: FAQ по CLEO 3

2AlphaOmega.
У меня опкод работает замечательно. Завершает один поток из другого. Напиши, как называется поток, который ты пытаешься завершить? У меня имя потока небыло задано, соответственно имя давалось по названию .cs файла, и 0ABA: прекрасно работает.=)

Добавленно.
Опаздал на 2 минуты:D

Last edited by flashTrash (08-06-2008 17:48)

Offline

#59 08-06-2008 17:48

AlphaOmega
Registered: 02-06-2008
Posts: 98

Re: FAQ по CLEO 3

Seemann wrote:

перепроверил опкод еще раз - у меня работает. Покажи свой код.

Дело в том, что у меня ДВА СКРИПТА. Я из ПЕРВОГО хочу завершить ВТОРОЙ.
Код завершения - одна строчка как у тебя в цитате, только с именем THREAD которая заана во втором скрипте.

Seemann wrote:

допустим, есть два клео скрипта с двумя thread`ами (по одному в каждом).
как их объединить

задача не ясна. Зачем их объединять?

Ну если нельзя из одного script1.cs остановить thread второго script2.cs - тогда нужно их объединить чтобы можно было завершить thread....

p.s.: скрипт два - один регулирует траффик по времени суток, а другой - ядерный взрыв после которого в радиусе нескольких километров плотность трафика становится равным нулю.....   да вот только первый скрипт мешает второму sad

Offline

#60 08-06-2008 17:52

AlphaOmega
Registered: 02-06-2008
Posts: 98

Re: FAQ по CLEO 3

в файле nuclear.cs прописываю где надо
0ABA: end_custom_thread_named 'TRAFFIC'
второй называется traffic.cs
вылетает sad

Offline

#61 08-06-2008 18:00

Seemann
Registered: 07-08-2006
Posts: 2,099

Re: FAQ по CLEO 3

Я создал файл traffic.cs с бесконечным циклом, в котором давались деньги игроку. В другом скрипте вызвал 0ABA: end_custom_thread_named 'TRAFFIC'. Деньги прекратили капать => поток Traffic прекратился.

Проблема скорее всего не в опкоде, а в скриптах. Попробуй проверить на другом скрипте.

Offline

#62 08-06-2008 18:10

AlphaOmega
Registered: 02-06-2008
Posts: 98

Re: FAQ по CLEO 3

Seemann wrote:

Я создал файл traffic.cs с бесконечным циклом, в котором давались деньги игроку. В другом скрипте вызвал 0ABA: end_custom_thread_named 'TRAFFIC'. Деньги прекратили капать => поток Traffic прекратился.

Приведи скрипт с твоим трафиком - посмотрю как он у тебя задан там поток...

Offline

#63 08-06-2008 18:15

Seemann
Registered: 07-08-2006
Posts: 2,099

Re: FAQ по CLEO 3

traffic.cs

{$CLEO}

0000:
while true
  wait 0
    0109: player $PLAYER_CHAR money += 1 
end

smile


В другом файле

if
    0AB0:  key_pressed 84  // t
then
    0ABA: 'TRAFFIC'
end

Last edited by Seemann (08-06-2008 18:17)

Offline

#64 13-06-2008 10:43

Seemann
Registered: 07-08-2006
Posts: 2,099

Re: FAQ по CLEO 3

Версия CLEO 3.0.950 с тремя новыми опкодами готова для тестирования.
http://cleo.sannybuilder.com/cleo3.rar

Новые опкоды:

0ABD:   vehicle 0@ siren_on

проверяет, включена ли сирена (мигалки) на машине 0@

0ABE:   vehicle 0@ engine_on

проверяет, запущен ли двигатель у машины 0@

0ABF: set_vehicle 0@ engine_state_to 0

включает/выключает двигатель машины 0@

Для компиляции опкодов нужно добавить в конец SASCM.INI следующие строки:

0ABD=1,  vehicle %1d% siren_on
0ABE=1,  vehicle %1d% engine_on
0ABF=2,set_vehicle %1d% engine_state_to %2d%

Данное обновление содержит в себе ряд исправлений, связанных с опкодами 0AB1, 0AB2. В частности, теперь можно вызывать одну функцию из другой (раньше такой вызов приводил к "затиранию" значений локальных переменных).

Также в архив включен новый ASI Loader от listener'а.

Качаем, тестируем, отписываемся. smile

P.S. Кстати, стоит отметить, что CLEO 3 достиг рубежа в 50 рабочих опкодов (+2 зарезервированных). А максимальное число опкодов, которое в принципе можно добавить в CLEO, равно 100.

Last edited by Seemann (20-07-2008 04:27)

Offline

#65 13-06-2008 11:38

svetka
Registered: 29-12-2006
Posts: 222

Re: FAQ по CLEO 3

Пока всё супер! Это хорошо, что можно видеть сколько скриптов подключено. А то я их иной раз пересчитываю smile

Offline

#66 13-06-2008 12:41

svetka
Registered: 29-12-2006
Posts: 222

Re: FAQ по CLEO 3

Ответьте мне пожалуйста.
Почему в cleo нельзя использовать глобальные переменные? Хочу уяснить себе это раз и навсегда.

Offline

#67 13-06-2008 12:56

AlphaOmega
Registered: 02-06-2008
Posts: 98

Re: FAQ по CLEO 3

Seemann wrote:

0ABA: 'TRAFFIC'

Всё. Теперь работает. Прична неработоспособности была (как оказалось) в старой версии клео sad
Кстати о новой версии - а можно ли убрать снизу надпись версии скрипта и кол-ва загруженных скриптов?

Offline

#68 13-06-2008 13:19

Seemann
Registered: 07-08-2006
Posts: 2,099

Re: FAQ по CLEO 3

Ответьте мне пожалуйста.
Почему в cleo нельзя использовать глобальные переменные? Хочу уяснить себе это раз и навсегда.

Когда мы компилируем main.scm вместе со всеми миссиями и скриптами, все глобальные переменные получают свой ID (порядковый номер). Часть из них получает ID всегда один и тот же (например, $PLAYER_CHAR компилируется как $2, $PLAYER_ACTOR - $3 и т.п.). Это справедливо для всех глобальных переменных, которые определены в CustomVariables.ini

Этот порядковый номер означает номер ячейки в памяти игры, где хранится значение переменной. Понятное дело, этот номер должен быть уникальным для каждой переменной. Иными словами, каждая переменная должна быть скомпилирована с уникальным ID.

Все остальные переменные компилируются следующих образом. Если имя переменной не найдено в CustomVariables.ini, то она компилируется с номером, который идет следом за наибольшей использованной переменной в скрипте. Звучит сложновато, поэтому пояcню на примере:

Простой скрипт из 2х строк:

$PLAYER_CHAR = 1
$MYVAR = 1

$PLAYER_CHAR компилируется как $2. Значит, переменная $MYVAR, которая не содержится в CustomVariables.ini и имя которой не числовое, будет скомпилирована как $3.
(на самом деле там будет не $3, потому что $3 зарезервировано для $PLAYER_ACTOR, поэтому $MYVAR получит первое свободное имя - $4

Другой пример

$PLAYER_CHAR = 1
$MYVAR = 1
$100 = 1

Наибольшая переменная в скрипте теперь $100, поэтому $MYVAR станет $101.

Такой механизм позволяет присвоить каждой переменной свое уникальное имя.

В main.scm все новые переменные получают имена при компиляции начиная с $10948, т.к. $10947 наибольшая переменная, использованная в оригинальном main.scm.

Теперь вернемся к CLEO-скриптам. Каждый раз, когда мы компилируем новый скрипт, компилятор не знает ничегошеньки про состояние main.scm и сколько переменных в нем использовалось. Он именует переменные с нуля каждый раз. Это значит, что если ты сделаешь два скрипта, в которых будет:

в одном скрипте

$MYVAR = 1

в другом скрипте

$MYVAR1 = 1

то обе переменные будут скомпилированы как:

$4 = 1

несмотря на то, что имена у них разные. И каждый раз компилятор будет в новом клео-скрипте именовать переменные, начиная с $4. Эффект, думаю, ясен. Переменные будут использовать одну и ту же ячейку памяти и менять значения друг друга. Если ты в одном скрипте запишешь актера в $MYVAR, а в другом в $MYVAR1 = 0, то когда первый скрипт обратится к $MYVAR, он прочитает не актера, а 0, т.к. обе переменные используют 4-ю ячейку памяти.

Другая ситуация - это выход за пределы памяти для глобальных переменных. Например, обычный stripped имеет размер памяти для глобальных переменных в 409 ячеек, поскольку наибольшая использованная переменная $ONMISSION это $409. Предположим, мы создали клео-скрипт:

$ONMISSION = 1
$MYVAR = 0

Как будет скомпилирована переменная $MYVAR, если вы поняли, о чем я говорил выше ? Правильный ответ $411. $ONMISSION это $409, поэтому переменная должна бы стать $410, но этот ID уже зарезервирован для $Help_SprayCan_Shown (см. CustomVariables.ini). Поэтому первый свободный номер это $411.

Вернемся теперь к stripped. Размер памяти-то у него так и остался - 409 (если бы $MYVAR = 0 компилировалась в майне, то память была бы увеличена до 411). Поэтому когда клео-скрипт будет работать с переменной $MYVAR, ее значения будут читаться и писаться за пределами дозволенной области памяти. В худшем случае, такие переменные будут менять код самого main.scm (опкоды и параметры), что неминуемо повлечет вылет.

Offline

#69 13-06-2008 13:26

Seemann
Registered: 07-08-2006
Posts: 2,099

Re: FAQ по CLEO 3

AlphaOmega wrote:
Seemann wrote:

0ABA: 'TRAFFIC'

Всё. Теперь работает. Прична неработоспособности была (как оказалось) в старой версии клео sad
Кстати о новой версии - а можно ли убрать снизу надпись версии скрипта и кол-ва загруженных скриптов?

Убрать нельзя. А чем она мешает?

Offline

#70 13-06-2008 14:18

svetka
Registered: 29-12-2006
Posts: 222

Re: FAQ по CLEO 3

Спасибо, Seemann. Очень доходчиво) И если я всё правильно поняла, то если main без прохождения миссий, я могу в cleo использовать незадействованные переменные, например, $ACTOR_RYDER. Да?

Offline

#71 13-06-2008 14:23

Seemann
Registered: 07-08-2006
Posts: 2,099

Re: FAQ по CLEO 3

Лучше этого не делать. Потому что например у меня в моем майне эта переменная может использоваться wink

Offline

#72 13-06-2008 14:33

svetka
Registered: 29-12-2006
Posts: 222

Re: FAQ по CLEO 3

Ну, мне-то это не грозит. Потому-что main от Seemannа я еще не встречала ) Даже как-то странно...
Но в любом случае я перепроверила бы - задействована переменная или нет. А то ведь у меня теперь такой простор для поля деятельности образовался...)
В общем, как я поняла, пользоваться можно smile

Offline

#73 13-06-2008 14:51

Seemann
Registered: 07-08-2006
Posts: 2,099

Re: FAQ по CLEO 3

Ошибаешься, мой майн поставляется вместе с Sanny Builder и зовется stripped.txt grin

В общем, как я поняла, пользоваться можно

ну, мое дело предупредить...

Offline

#74 13-06-2008 17:27

AlphaOmega
Registered: 02-06-2008
Posts: 98

Re: FAQ по CLEO 3

Seemann wrote:
AlphaOmega wrote:

Кстати о новой версии - а можно ли убрать снизу надпись версии скрипта и кол-ва загруженных скриптов?

Убрать нельзя. А чем она мешает?

В принципе ни чем, только как-то крупно она. Может просто уменшьить? до размеров системного 6 - 8 пунктов. А то выглядит как 12-14 - крупновато. Бросается в глаза (я просто люблю чтобы было эстетично и красиво).

Offline

#75 14-06-2008 08:26

Seemann
Registered: 07-08-2006
Posts: 2,099

Re: FAQ по CLEO 3

@AlphaOmega - надпись слегка уменьшил и сделал ее масштабируемой (т.е. теперь она на всех разрешениях выглядит одинаково). Совсем мелкой ее сделать тоже нельзя, ибо на маленьких игровых разрешениях (640x480, 800x600) надпись становится нечитабельной.

Перезалил архив с CLEO 3 v3.0.950.

Last edited by Seemann (14-06-2008 08:31)

Offline

Board footer

Powered by FluxBB