You are not logged in.
Скрипт даёт возможность использования указателей поворота на автомобилях и мотоциклах.
Источники света создаются рядом с передними и задними фарами, координаты которых скрипт определяет автоматически. Поэтому скрипт можно использовать с любыми моделями транспорта - при этом не требуется устанавливать никакие дополнительные файлы или прописывать настройки. Если у автомобиля имеется прицеп, то поворотники будут действовать и на нём. При движении на большой скорости источники света не будут дёргаться или отставать от машины.
В версии 1.1 поворотники продолжают мигать, если игрок вышел из машины - но до тех пор,
пока он не сядет в другую машину.
В версии 2.0 поворотники работают не только на автомобиле игрока, но и на машинах, управляемых ботами.
В версии 2.1 устранены недоработки предыдущих версий:
- исправлена уязвимость, из-за которой в определённых случаях была вероятность вылета игры со скриптом версии 2.0;
- теперь поворотники не работают на пустых машинах (исключение - машина, которую вёл игрок), а также на "приаттаченных" к чему-либо машинах;
- уменьшена "проникающая способность" короны (теперь корона не просвечивает сквозь водителя мотоцикла или сквозь весь корпус машины);
- уменьшена инертность короны (последовательные вспышки не сливаются в одну, что иногда могло наблюдаться раньше);
- теперь скрипт работает во время миссий.
В версии 2.2 боты включают поворотники не только при поворотах на перекрестках, но и при перестроениях на шоссе.
Управление:
Z - левые поворотники, C - правые поворотники, X - аварийная сигнализация.
Повторное нажатие этих клавиш выключает выбранные режимы (в v.2. отключение кнопкой Shift).
Установка:
1.Скачать и установить библиотеку КЛЕО 4 с сайта cleo.sannybuilder.com
2.Поместить файл turn_indicators.cs (имеется в архиве, присоединённом к сообщению) в папку cleo.
Last edited by Den_spb (20-03-2016 12:56)
Offline
Не работает. Вылетает при посадке в авто. (Оригинальный SA; stripped MAIN; не SAMP)
Last edited by Gyr (07-01-2011 07:36)
Специально для тех, кто не умеет читать по английски. Мой ник читается как "ГИР"!!!
Народная мудрость:
Прежде чем задавать вопросы,ПОЧИТАЙ СПРАВКУ!!!!
Offline
Проверь версию игры. Она должна быть 1.0 us. Установи самую свежую версию КЛЕО4 - 4.1.1.30. Если эти пункты выполнены, то не знаю что ещё посоветовать - у меня пока вылетов не было.
П.С. В scmlog ещё можно заглянуть.
Last edited by Den_spb (07-01-2011 07:41)
Offline
Ты скорее всего прав. У меня v1.01. Ставить 1.0 не буду, монитор не позволяет.
P.S.: Постарайся оптимизировать этот скрипт под 1.01.
Специально для тех, кто не умеет читать по английски. Мой ник читается как "ГИР"!!!
Народная мудрость:
Прежде чем задавать вопросы,ПОЧИТАЙ СПРАВКУ!!!!
Offline
@Den_spb - Нет, я тебя не заставляю, просто было-бы прикольно и для 1.01 сделать.
Специально для тех, кто не умеет читать по английски. Мой ник читается как "ГИР"!!!
Народная мудрость:
Прежде чем задавать вопросы,ПОЧИТАЙ СПРАВКУ!!!!
Offline
Дэн, ты реально крут! Супер![---]Эээ... Всё классно, но для мотоциклов лучше пока отключить. Как сделать ненавязчивую надпись? Это достаёт...
0ACD: show_text_highpriority "Use Z to switch left turn indicators, C - right, X - emergency indicators." time 3000
Last edited by ~AquaZ~ (07-01-2011 13:00)
Offline
Отлично
Offline
+1:D
Заменил cleo4 опкоды аналогичными конструкциями в клео3, не вылетает, но и не работает тоже.
Попробовал с New Opcode Project, который с папкой CLEO_TEXT кстати не запускает игру вобще, там вылет на 0AA5: call 22@ num_params 0 pop 0
Опкоды ессесно подставлял правильные(ну, вроде как:D).
Вобще можно было бы вместо клео 4 ставить нужный опкод отдельным плагином, глядишь и глюков было бы меньше, и совместимость была бы лучше.
Offline
Спасибо за отзывы. В свою очередь благодарю listener-а и Alien-а за информацию по вычислению координат думмисов. Мне оставалось только подумать, как прицепить корону к машине, и собрать всё в единый код.
Эээ... Всё классно, но для мотоциклов лучше пока отключить.
Просто надо заменить:
if and 31@ <> 0 // автомобиль или самолёт (самолёты отсечены в начале кода проверкой 84C8) 31@ <> 9 // мотоцикл then continue end
на
if 31@ <> 0 // автомобиль или самолёт (самолёты отсечены в начале кода проверкой 84C8) then continue end
там вылет на 0AA5: call 22@ num_params 0 pop 0
Надо проверить правильность замены опкодов 0AC6 и 0AC7.
Вобще можно было бы вместо клео 4 ставить нужный опкод отдельным плагином, глядишь и глюков было бы меньше, и совместимость была бы лучше.
У меня КЛЕО4 работает отлично (чего я не мог сказать о New Opcode Project). Советую всем переходить на КЛЕО4, а не пытаться переделывать новые скрипты под КЛЕО3.
Last edited by Den_spb (07-01-2011 17:54)
Offline
@Den_spb - у меня игра с cleo4 запускается, если не использовать этот скрипт:
{$CLEO .cs} 0000: NOP 0A95: enable_thread_saving 0AA2: 0@ = load_library "radio.dll" // IF and SET 0AA2: 1@ = load_library "StreamMemFix.dll" // IF and SET wait 1000 0AA3: free_library 0@ 0AA3: free_library 1@ 0A93: end_custom_thread
а если использовать - краш. Реалтайм карта так и не починена, а без мыши пользы от неё никакой. Missiles не работают.
Выкидывать часть скриптов чтоб использовать новые как-то не очень хочется, как и ломать то, что работает. + неизвестно какие глюки/вылеты ещё в процессе проявятся. А так с удовольствием бы перешёл
Вместо опкодов я использую:
0A9F: 22@ = current_thread_pointer 22@ += 0x10 0A8D: 22@ = read_memory 22@ size 4 virtual_protect 0 22@ -= @Attach_corona_to_car
и
0A9F: RwV3D = current_thread_pointer RwV3D += n
n - смещение до 7@ и 13@. Максимум чего удалось добиться - мигающей короны в центре машины.
Я подозреваю что здесь где то и есть ошибка, по моим подсчётам прибавлять надо 0x1C0 и 0x340, но так не работает.
Offline
ломать то, что работает. + неизвестно какие глюки/вылеты ещё в процессе проявятся. А так с удовольствием бы перешёл
Переделать старые скрипты под КЛЕО4 нужно один раз, а новые скрипты под КЛЕО3 придётся переделывать постоянно (некоторые новые скрипты конвертировать будет очень сложно, плагин SANO - плохой вариант, т.к. глючный)
Максимум чего удалось добиться - мигающей короны в центре машины.
Тут 2 варианта: либо неправильно передаются указатели на переменные 7@ и 13@, либо в переменных 7@-12@ на самом деле нулевые значения (чего тоже не должно быть). Надо проверить значения переменных 7@-12@ (вывести на экран) и из этого делать выводы.
Last edited by Den_spb (07-01-2011 19:32)
Offline
@Den_spb - это то понятно, но в клео 4 не работает 0AA5: call 0x7469A0 num_params 0 pop 0 //mouse(а это значит опять нужно использовать режим совместимости с win98),
как это переписать можно я не представляю. Также не представляю как загрузить radio.dll и сделать missile.cs работающим.
SANO не использую, ибо он крашит игру из за папки cleo_text, там просто для теста он был.
******************************************** thread turn_in Local variables dump: 1281 0 226689928 0 1 226689928 0 1059716484 1075894591 -1117015093 1058067641 -1072171403 1035799665 0 0 0 0 0 0 194230292 0 0 194250541 0 0 0 226690092 0 0 2 0 1 ********************************************
Корона в центре создаётся если написать
0A9F: RwV3D = current_thread_pointer RwV3D += 0x10 RwV3D += 0x1C0
и
0A9F: RwV3D = current_thread_pointer RwV3D += 0x10 RwV3D += 0x340
******************************************** thread turn_in Local variables dump: 1 0 226349328 0 3 226349328 0 1059716484 1075894591 -1117015093 1058067641 -1072171403 1035799665 0 0 0 0 0 0 193902692 0 2 193922812 0 0 193902212 226349496 1 2 2 0 1 ********************************************
UPD.
Получилось вроде, через 0AB1: call_scm_func @__VarToOffset 1 varnumber 7[13] result RwV3D
Вот cleo3-совместимый код, если надо кому - http://pastebin.com/R9PJ2iEJ
-------------------------
Кстати, ещё реквест, сделать(как опцию например) включение-отключение в стиле mafia, т.е. зажимаешь на пару секунд клавишу влево - вкл. левые повортники, отпускаешь - выключаются и т.п.
Last edited by Sergey81 (07-01-2011 22:05)
Offline
@Den_spb - А как кстати сделать задержку небольшую? Я прописал так:
if and 0AB0: key_pressed 65 // A 8AB0: not key_pressed 68 // D then MODE = LEFT end if and 0AB0: key_pressed 68 // D 8AB0: not key_pressed 65 // A then MODE = RIGHT end if and 0AB0: key_pressed 68 // D 0AB0: key_pressed 65 // A then MODE = TOGETHER end if and MODE <> 0 8AB0: not key_pressed 65 // A 8AB0: not key_pressed 68 // D then MODE = 0 end
работает, но куда ни пытаюсь вставить wait, поворотники перестают отображаться.
Offline
@Den_spb - как всегда на высоте.:^
В свою очередь благодарю listener-а и Alien-а за информацию по вычислению координат думмисов.
Меня-то в каком месте?:crazy:
@Den_spb - у меня игра с cleo4 запускается, если не использовать этот скрипт:
{$CLEO .cs} 0000: NOP 0A95: enable_thread_saving 0AA2: 0@ = load_library "radio.dll" // IF and SET 0AA2: 1@ = load_library "StreamMemFix.dll" // IF and SET wait 1000 0AA3: free_library 0@ 0AA3: free_library 1@ 0A93: end_custom_thread
0A95 использован не по назначению. По хорошему radio.dll и StreamMemFix.dll надо переименовать в cleo или asi. Тогда они будут загружаться когда надо.
Offline
@Alien - но в клео 3 то работает. А в .asi и .cleo изначально всё и было, с ними у меня игра также не запускается, краш при старте(см. например аналогичную проблему тут). Поэтому и загружаю через клео. Я проверил, фикс работает(в том смысле, если убрать загрузку radio.dll из скрипта), radio.cleo сейчас тоже получилось запустить, что странно, ибо оно не работало когда я его только установил. Ну, м.б. одной проблемой меньше, а остальные пока никуда не делись
Так то багов не так уж и много, немного улучшить совместимость со старыми скриптами, причём какими бы они не были, и будет замечательно.
PS. А 0A95 используется чтоб не грузить длл-ки по нескольку раз. Если его убрать, они будут грузиться при загрузке каждого сейва, насколько я понимаю. Или нет?
Last edited by Sergey81 (08-01-2011 13:17)
Offline
Меня-то в каком месте?
За этот примерчик: http://sannybuilder.com/forums/viewtopi … 6933#p6933
Offline
Корона должна создаваться через небольшие промежутки времени, иначе она будет невидна. Поэтому второй wait в цикл вставлять нельзя, а нужно использовать таймер (33@).
А где именно, при проверке клавиши или ещё как? Может запостишь примерчик, а то не выходит у меня.
Offline
Offline
@Den_spb - ну я выше писал, что поставил включение поворотников на клавиши A и D. Мне надо, чтоб когда A нажата - прошла например секунда, а потом поворотники начинали работать. Т.е. как то так, но чтоб работало:D
if and 0AB0: key_pressed 65 // A 8AB0: not key_pressed 68 // D then *здесь задержка* MODE = LEFT // тут поворотники включаются end
Offline
Offline
@Den_spb - Спасибо, всё получилось.
if and 33@ >= 0 0AB0: key_pressed 65 // A 8AB0: not key_pressed 68 // D then 33@ = -2000 end if and 33@ > -1500 33@ < 0 then MODE = LEFT 33@ = 0 end if and 33@ >= -2000 0AB0: key_pressed 68 // D 8AB0: not key_pressed 65 // A then 33@ = -4000 end if and 33@ > -3500 33@ < -2000 then MODE = RIGHT 33@ = 0 end if and MODE <> 0 8AB0: not key_pressed 65 // A 8AB0: not key_pressed 68 // D then MODE = 0 end if and MODE == LEFT 8AB0: not key_pressed 65 // A 0AB0: key_pressed 68 // D then MODE = 0 end if and MODE == RIGHT 0AB0: key_pressed 65 // A 8AB0: not key_pressed 68 // D then MODE = 0 end if and 0AB0: key_pressed 68 // D 0AB0: key_pressed 65 // A then MODE = TOGETHER end
http://pastebin.com/pBaFLTMU - полный код для клео 3.
Поротники работают как в мафии, по зажатию клавиши.
Offline
Скрипт обновлён до версии 1.1.
+ Теперь поворотники продолжают мигать, если игрок вышел из машины - но до тех пор, пока он не сядет в другую машину.
+ Оптимизирован код, благодаря удалению асмо-вставки и сопутствующих операций.
Итак, если вам нужно прицепить корону к транспортному средству, то можно использовать команду:
0AA5: 0x6FC580 21 21 1 0 0x41700000 0 0x3FC00000 0 0 0 0 0 attach_corona_flare 0 type 0 0x43160000 radius 0.3 with_offsets RwV3D intensity 255 blue 0 green 128 red 255 to_vehicle_struct 20@ unical_number 26@
RwV3D - указатель на вектор, показывающий положение короны в системе координат машины;
20@ - адрес структуры машины;
26@ - уникальный номер. Если 2 короны имеют одинаковый номер, то та корона, которая была создана раньше, будет удалена. Поэтому все короны в игре должны иметь разные номера. Смысл остальных параметров думаю ясен (неподписанные параметры можно не менять).
Offline