Вопросы по созданию КЛЕО-скриптов 2
|
|
EmilioDurhamCop | Дата: Четверг, 30.08.2012, 17:16 | Сообщение # 226 |
Группа: Пользователи
Сообщений: 33
Статус: Offline
| Code Actor.WeaponAccuracy(3@) = 50 Actor.WeaponAccuracy(4@) = 50 Actor.WeaponAccuracy(5@) = 50 Actor.WeaponAccuracy(6@) = 50 Скажите, вот эти опкоды устанавливают процентное содержание аима у актёра? Если да, то какой процент попадания высокий?
Сообщение отредактировал EmilioDurhamCop - Четверг, 30.08.2012, 17:17 |
|
| |
Vital | Дата: Четверг, 30.08.2012, 18:10 | Сообщение # 227 |
Группа: Проверенные
Сообщений: 206
Статус: Offline
| EmilioDurhamCop, это точность в процентах. 100 - наивысшая, снайперская точность, 50 - средняя (примерно на уровне товарищей по банде). Если хочешь игру потяжелее, ставь примерно 65-75, если выше, то, возможно, будет вообще невозможно увернуться от выстрелов.
SCRIPTER
Сообщение отредактировал Vital - Четверг, 30.08.2012, 18:35 |
|
| |
EmilioDurhamCop | Дата: Четверг, 30.08.2012, 19:11 | Сообщение # 228 |
Группа: Пользователи
Сообщений: 33
Статус: Offline
| Vital, спасибо тебе большое. Я точно такое же предполагал, только перестраховался этим вопросом.
|
|
| |
Vital | Дата: Пятница, 31.08.2012, 16:22 | Сообщение # 229 |
Группа: Проверенные
Сообщений: 206
Статус: Offline
| End_thread может остановить работу потока в любом его месте? Т.е. можно ли это использовать в проверках, находящихся в потоке?
SCRIPTER
|
|
| |
Den_spb | Дата: Пятница, 31.08.2012, 18:11 | Сообщение # 230 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| При выполнении end_thread поток всегда завершается. Насчёт проверок не понял - приведи пример кода.
|
|
| |
Vital | Дата: Пятница, 31.08.2012, 21:12 | Сообщение # 231 |
Группа: Проверенные
Сообщений: 206
Статус: Offline
| Den_spb, я имел в виду - вставить end_thread в проверку. Т.е. вот так: Code if условие then ... else end_thread end
Я попробовал так со скриптом, который повторялся (шёл с конца на начало, как цикл), вылетала игра. Но если сделать так: Code if ... then ... else jump @Finish end ... :Finish end_thread То вылетов нет.
SCRIPTER
|
|
| |
Den_spb | Дата: Пятница, 31.08.2012, 21:45 | Сообщение # 232 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Vital, это не "проверка", а конструкция. При компиляции конструкцияCode if <проверка> then <команды 1> else <команды 2> end заменяется на:Code if <проверка> jf @Metka <команды 1> jump @Metka_1 :Metka <команды 2> :Metka_1 Подозреваю, что вылет произошёл из-за неожиданного обрыва скрипта. Любой скрипт должен или выполняться бесконечно, или завершаться командой завершения потока. А у тебя ситуация следующая: во втором коде команда завершения потока выполнится в любом случае, а в первом коде - только если условие ложно.
|
|
| |
BoPoH | Дата: Суббота, 01.09.2012, 16:05 | Сообщение # 233 |
Группа: Проверенные
Сообщений: 53
Статус: Offline
| Может быть дело в том, что в CLEO нужно использовать опкод 0A93, вместо end_thread?
First-Person mode 85% done Добро всегда побеждает зло. Кто победил, тот и добрый!
|
|
| |
Vital | Дата: Суббота, 01.09.2012, 16:28 | Сообщение # 234 |
Группа: Проверенные
Сообщений: 206
Статус: Offline
| BoPoH, это не cleo, а .scm. Поэтому и странность. Den_spb, во втором случае конец потока идёт, когда условие ложно. (после else стоит jump @Finish, а сам скрипт повторяется постоянно, т.е. так: Code :1 ... if ... then ... else jump @2 end jump @1
:2 end_thread )
SCRIPTER
|
|
| |
Den_spb | Дата: Суббота, 01.09.2012, 16:51 | Сообщение # 235 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Могу точно сказать, в чём причина проблемы, если предоставишь полный код (с которым вылетает игра).
|
|
| |
Vital | Дата: Суббота, 01.09.2012, 21:27 | Сообщение # 236 |
Группа: Проверенные
Сообщений: 206
Статус: Offline
| Den_spb, я вылетающий код изменил, вот изменённый вариант (в нём в виде комментария есть пометка) Code :Text wait 0 if player.Defined(0) jf @Text if and 876F: not text_priority_displayed 88FE: not text_box_displayed $DEAD == 0 $OFF == 0 then var 0@ : Array 10 of String end 30@ = 0 0@[30@] = 'TX1' 30@ += 1 0@[30@] = 'TX2' 30@ += 1 0@[30@] = 'TX3' 0@ += 1 0@[30@] = 'TX4' 30@ += 1 0@[30@] = 'TX5' 30@ += 1 0@[30@] = 'TX6' 30@ += 1 0@[30@] = 'TX7' 30@ += 1 0@[30@] = 'TX8' 30@ += 1 0@[30@] = 'TX9' 30@ += 1 0@[30@] = 'TX10' 0209: $R1 = random_int_in_ranges 0 10 00BC: show_text_highpriority GXT 0@[$R1] time 7000 flag 1 0209: $RT = random_int_in_ranges 1 4 $RT *= 60000 wait $RT jump @Text else if or $DEAD == 1 $OFF == 1 then jump @Finish2 //здесь было end_thread вместо jump end end jump @Text end_thread
Метка Finish2 :Finish2 end_thread
Вот и всё.
SCRIPTER
Сообщение отредактировал Vital - Суббота, 01.09.2012, 23:22 |
|
| |
Den_spb | Дата: Воскресенье, 02.09.2012, 20:15 | Сообщение # 237 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Если правильно понял, первоначальный вариант был таким:Code :Text wait 0 if player.Defined(0) jf @Text if and 876F: not text_priority_displayed 88FE: not text_box_displayed $DEAD == 0 $OFF == 0 then var 0@ : Array 10 of String end 30@ = 0 0@[30@] = 'TX1' 30@ += 1 0@[30@] = 'TX2' 30@ += 1 0@[30@] = 'TX3' 0@ += 1 0@[30@] = 'TX4' 30@ += 1 0@[30@] = 'TX5' 30@ += 1 0@[30@] = 'TX6' 30@ += 1 0@[30@] = 'TX7' 30@ += 1 0@[30@] = 'TX8' 30@ += 1 0@[30@] = 'TX9' 30@ += 1 0@[30@] = 'TX10' 0209: $R1 = random_int_in_ranges 0 10 00BC: show_text_highpriority GXT 0@[$R1] time 7000 flag 1 0209: $RT = random_int_in_ranges 1 4 $RT *= 60000 wait $RT jump @Text else if or $DEAD == 1 $OFF == 1 then end_thread // jump @Finish2 end end jump @Text end_thread Причин для вылета я здесь не вижу, возможно ошибка была вызвана другим скриптом (можно посмотреть scm-log). П.С. Здесь видимо должно быть 30@, а не 0@:Quote 0@[30@] = 'TX3' 0@ += 1
|
|
| |
EmilioDurhamCop | Дата: Вторник, 04.09.2012, 15:12 | Сообщение # 238 |
Группа: Пользователи
Сообщений: 33
Статус: Offline
| Наткнулся на скрипт на тему взлома машин, помимо этого скрипта, есть бонусные темки. Из них при жестком приземлении машина взрывается (чуть ли не обделался), за ментовские авто можно получить 2 звезды (у меня стоит скрипт погони за машинами) и только что поймал минус, это когда зайдешь в кафешку захавать и машины не видать. Такое я поймал 3 раза. С чего начать или прописать, чтобы без проблем можно было взломать все машины?
Сообщение отредактировал EmilioDurhamCop - Вторник, 04.09.2012, 15:13 |
|
| |
Den_spb | Дата: Вторник, 04.09.2012, 15:30 | Сообщение # 239 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Quote (EmilioDurhamCop) это когда зайдешь в кафешку захавать и машины не видать. Так данный скрипт тут не причём. Игра может удалять машины и актёров, если они какое-то время находятся вне поля видимости игрока - это относится к машинам и актёрам, созданным игрой. Если машина (или актёр) создана скриптом, то она имеет "уникальный" статус, благодаря которому игра сама удалить её не сможет. Отключить уникальный статус машины можно с помощью команды Code 01C3: remove_references_to_car $IMPORT_CAR // Like turning a car into any random car Включить уникальный статус машины можно так: Code 0A97: 2@ = car 0@ struct 0AA6: call_method 0x6D5D70 struct 2@ num_params 1 pop 0 2
|
|
| |
EmilioDurhamCop | Дата: Вторник, 04.09.2012, 15:42 | Сообщение # 240 |
Группа: Пользователи
Сообщений: 33
Статус: Offline
| Не, а как взломать любую машину? Вот что мне надо.
|
|
| |