Вопросы по созданию КЛЕО-скриптов
|
|
ILYALION | Дата: Суббота, 31.12.2011, 10:54 | Сообщение # 1096 |
Группа: Проверенные
Сообщений: 325
Статус: Offline
| Аксиома, этот опкод берёт случайное число из интервала, я хочу знать, входят ли границы в результат рандома
|
|
| |
izerli | Дата: Суббота, 31.12.2011, 12:26 | Сообщение # 1097 |
Группа: Проверенные
Сообщений: 90
Статус: Offline
| ILYALION, Code 0209: 17@ = random_int_in_ranges 0 10 0 входит, 10 нет.
|
|
| |
Аксиома | Дата: Суббота, 31.12.2011, 14:33 | Сообщение # 1098 |
Группа: Заблокированные
Сообщений: 81
Статус: Offline
| Я его использую для задержки
|
|
| |
Den_spb | Дата: Суббота, 31.12.2011, 14:54 | Сообщение # 1099 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Для задержки ты используешь wait, а random - для выбора случайного числа.
|
|
| |
Аксиома | Дата: Суббота, 31.12.2011, 14:59 | Сообщение # 1100 |
Группа: Заблокированные
Сообщений: 81
Статус: Offline
| А для чего в random записываешь числа? я пользуюсь им таким образом
0209: 1@ = random_int_in_ranges 100000 500000 wait 1@
|
|
| |
Den_spb | Дата: Суббота, 31.12.2011, 15:04 | Сообщение # 1101 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Аксиома, все уже поняли, что ты пользуешься рандомом для выбора времени задержки. Но случайные числа могут понадобиться и во многих других случаях - создание актёра со случайной моделью, создание машины в случайных координатах и т.д. Что тут непонятного?
|
|
| |
Аксиома | Дата: Суббота, 31.12.2011, 16:01 | Сообщение # 1102 |
Группа: Заблокированные
Сообщений: 81
Статус: Offline
| Den_spb, Ну может из за твоего уровня знаний, ты объясняешь умно и до меня не доходит. Сформулируй сообщение и если можно то с кодом может пойму.
|
|
| |
ILYALION | Дата: Суббота, 31.12.2011, 16:42 | Сообщение # 1103 |
Группа: Проверенные
Сообщений: 325
Статус: Offline
| Я не понимаю, как может вылет быть связан с командой return? SmLog "говорит", что последний опкод 0051, т.е. return
|
|
| |
Den_spb | Дата: Суббота, 31.12.2011, 16:43 | Сообщение # 1104 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Quote (ILYALION) Я не понимаю, как может вылет быть связан с командой return? SmLog "говорит", что последний опкод 0051, т.е. return Проверь, чтобы перед return обязательно выполнялся gosub.
|
|
| |
ILYALION | Дата: Суббота, 31.12.2011, 16:55 | Сообщение # 1105 |
Группа: Проверенные
Сообщений: 325
Статус: Offline
| Den_spb, посмотрите, пожалуйста, что не так. Часть кода прикрепил к сообщению.
|
|
| |
Den_spb | Дата: Суббота, 31.12.2011, 17:14 | Сообщение # 1106 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Лог лучше покажите.
|
|
| |
ILYALION | Дата: Суббота, 31.12.2011, 17:17 | Сообщение # 1107 |
Группа: Проверенные
Сообщений: 325
Статус: Offline
| А вот и лог
|
|
| |
Den_spb | Дата: Суббота, 31.12.2011, 19:10 | Сообщение # 1108 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Code 3@ == 0 4@ == 0 ... 15@ == 0 return После проверок должна стоять команда jump или jf (else_jump), а не return.
|
|
| |
ILYALION | Дата: Суббота, 31.12.2011, 19:42 | Сообщение # 1109 |
Группа: Проверенные
Сообщений: 325
Статус: Offline
| Den_spb, заменил, результат тот же.
Закомментировав строкиCode 0AF0: 16@ = get_int_from_ini_file "CLEO\POEZD.INI" section 29@v key "TYPE" //IF and SET if 16@ == 1 else_jump @TYPE_2 у меня получилось. Вылетов не было. Но почему же был вылет? Проверок не может быть, пока работает gosub?
Сообщение отредактировал ILYALION - Суббота, 31.12.2011, 20:43 |
|
| |
Den_spb | Дата: Суббота, 31.12.2011, 21:03 | Сообщение # 1110 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Quote (ILYALION) Проверок не может быть, пока работает gosub? Проверки могут быть, но необходимо избегать jump-ов из "gosub-ного" кода в "общий" код, т.к. в результате gosub может выполниться много раз подряд и лимит вложенности gosub может быть превышен. Поясню: допускается вызвать gosub 8 раз подряд - после этого нельзя вызвать gosub ещё раз до того, как будет вызван return. Если вызвать gosub 9 и более раз, а затем вызвать return, то игра вылетит - видимо это и есть причина ошибки в данном случае.
|
|
| |