Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Shagg_E

Страницы: [1] 2 3 ... 32
1
Идеи / Re: Отражения воды
« : Декабрь 17, 2017, 06:04:04 pm »
Крутяк :D

2
Общие вопросы / Re: Помощь с CLEO
« : Ноябрь 11, 2017, 01:48:10 am »
Цитировать
Есть Вы не против, буду выкладывать свои поделки по lua.
Да я не против) Главное - чтобы в соответствующем разделе ;)

Цитировать
Очень интересна разница между опкодами создающими и завершающими поток.
Код: Text
  1. 0A92: create_custom_thread "ShowTextBox.s"
этот опкод запускает .s скрипт. Это обычный CLEO-скрипт, но с расширением ".s". Разница в том, что .s скрипты не запускаются автоматически при старте игры(в отличии от .cs скриптов). Т.е. данный способ используется, чтобы запустить какой-то скрипт ровно тогда, когда тебе нужно. Просто смени расширение нужного скрипта на ".s" и используй данный опкод запуска в другом скрипте.

Код: Text
  1. 00D7: create_thread @HJ without_parameters
Обычный create_thread(опкод 004F) в main.scm может вызываться с параметрами, точно так же, как как scm функция, а этот опкод - нет. Зато в потоках, которые создаются этим опкодом, в отличии от 004F, может вызываться опкод
Код: Text
  1. 00D8: mission_cleanup
, который "подчищает" некоторые действия, созданные другими опкодами(так же, как в миссиях). Подробнее тут.

Код: Text
  1. 05DE: create_custom_thread 'ct.s'
То же самое, что и опкод 0A92.

Код: Text
  1. 03A4: name_thread 'MAIN'
Задает имя потоку/CLEO-скрипту.
 
Код: Text
  1. 004E: end_thread
Завершает текущий поток в main.scm.

Код: Text
  1. 0A93: end_custom_thread
Завершает текущий CLEO-скрипт.

Код: Text
  1. 0459: end_thread_named 'mythread'
Завершает в main.scm поток с именем "mythread"(именно для этого и нужно объявлять имена потокам опкодом 03A4).

Код: Text
  1. 0ABA: end_custom_thread_named 'BENZIN'
Завершает CLEO-скрипт с именем "BENZIN"(если у того есть имя, заданное опкодом 03A4).

Цитировать
Хотел бы научиться писать плагины на C++, жаль пока нет инструкции в видео формате…..
Это не ко мне(я сам пока с этим профан). Но по C++ есть достаточно материала в интернете(да и на этом сайте, кстати).

Цитировать
Увидел у Vital на канале, что он использовал.
Я знаю одно - при декомпиляции это превращается в белиберду, значит тут что-то не так. Проверь сам и увидишь. Я уже писал, что с высокоуровневым кодингом в scm-скриптинге могут быть большие проблемы, поэтому сам им не пользуюсь, и помочь с этим не могу.

Цитировать
Насчет опкода 0AD9: write_formatted_text "XYZ: %f %f %f" in_file 0@ 1@ 2@ 3@
Почему пишется %f %f %f? Что это дает и почему именно так?
%f означает, что вместо этого символа будет вставлено float число(дробное), которое записано далее(переменная 1@).
Т.е. если это написано 3 раза - это означает, что будут вставлены 3 float числа, и они там передаются в переменные 1@ 2@ 3@.
Т.е. запись
Код: Text
  1. 1@ = 1.2
  2. 2@ = 4.5
  3. 3@ = 3.7
  4. 0AD9: write_formatted_text "XYZ: %f %f %f" in_file 0@ 1@ 2@ 3@
означает, что в файл 0@ запишется текст:
XYZ: 1.2 4.5 3.7Также можно вставлять не только float, но и integer. Для этого вместо %f нужно писать %d
В некоторых случаях также можно добавлять целые слова или строки: %s

Цитировать
Помогло избавиться от вылетов при подбирание денег 004E: end_thread // Завершение потока, но при провале или выполнении миссии, приходится перезагружать сэйв. Думаю решить эту проблему перезагрузкой из другого файла, методом  0A9A.
Зачем, если можно вместо завершения(end_thread) скрипта сделать "прыжок"(jump) на его начало?

По поводу миссии - сожалею, но тут я не могу помочь. Я уже писал об этом когда-то: что придет время, когда этот час настанет(тавтология). Твой код слишком объемный, так что я буду слишком долго в него вникать. Ты сам видел - я заходил на форум несколько раз с момента написания тобой этого сообщения, но отвечаю лишь сейчас.
У меня патологическая нехватка времени.
Помимо объёмности, твой код написан совершенно не так, как писал бы его я. Не в смысле "хуже" или "лучше", а в смысле в другом стиле. У каждого скриптера свой стиль, каждый пишет так, как удобно ему, а не другим. Нет единого стандарта и это мешает взаимопониманию.
Мне кажется, я рассказал тебе практически всё, что знал сам, а дальше дело уже за тобой. Ну и ребятами с sannybuilder.
Могу только посредством беглого анализа сказать, что в записи
Код: Text
  1. 004E: end_thread // Завершение потока  
  2. jump @MISSION_1 // Чтобы можно пройти заново    
  3. return
последние 2 строчки не выполняются, поскольку первая строчка завершает весь скрипт. Также в CLEO-скриптах вместо опкода 004E юзается 0A93(о котором я написал в начале этого сообщения).
Даже если ты удалишь первую строчку, то опять же - последняя никогда не выполнится, поскольку jump - это безоговорочный "прыжок", без выполнения кода, написанного ниже.
Т.е., чтобы выполнился return - тебе нужно удалить 2 верхние строчки.

3
Все хитрости с поворотом заканчиваются на искажении объектов, к сожалению...

4
Общие вопросы / Re: Помощь с CLEO
« : Октябрь 27, 2017, 03:43:10 pm »
По lua скриптам - есть спец. раздел.

Цитировать
при 6 прохождении начала вылетать с этой ошибкой странно
Ну тут точно проблема в коде, судя по скрину. Но не факт, что в коде миссии - пробуй перепроходить, удалив все сторонние скрипты. Вообще, тестирование - это очень времязатратный процесс, поэтому тут уж вряд ли тебе кто-то поможет. Тратить большую часть времени на тесты -  это бремя скриптера/программиста.

Цитировать
Есть вопрос в чем отличия между этими опкодами
Ни в чем, это одинаковые опкоды. Просто изначально сделали второй, а первый добавили для упрощения переноса скриптов из SA.

Цитировать
Plugin SDK. Это круто! Но что это такое? Как пользоваться? Что может? не понятно. Боюсь писать туда, бан получу за тупость еще.
Если вкратце, то с помощью этого упрощается написание плагинов для III/VC/SA на языке C++. Всё остальное написано тут.

Цитировать
Написал скрипт
А теперь скомпилируй и декомпилируй его. И увидишь, что в конце скрипт "обрублен", что вызовет краш игры, если игрок не существует.
Всегда проверяй декомпиляцией, чтобы отсечь такие элементарные ошибки.
1) Если хочешь командой while создать бесконечный цикл в начале - делай это с помощью while true.
Далее.
2) player.Defined работает ТОЛЬКО с $PLAYER_CHAR, а не $PLAYER_ACTOR!
3) Проверяй, что клавиша не только нажата, но и отпущена! Иначе, если игрок не отпустит клавишу - скрипт будет выполняться множество раз подряд зря.
4) Опкод 0AAB - это проверка существования файла. А ты написал её как обычную команду.


Цитировать
А как записать координаты в одну строчку? Чтобы удобнее копировать их.


Короче, с учетом вышесказанного, вот готовый код:
Код: Text
  1. {$CLEO}
  2. 0000:                    
  3. while true
  4.     wait 0
  5.     if  player.Defined($PLAYER_CHAR)
  6.     then
  7.         if  80E0: not player $PLAYER_CHAR driving
  8.         then      
  9.             if  0AB0: key_pressed 0x46 // f
  10.             then
  11.                 while 0AB0: key_pressed 0x46 // f
  12.                     wait 0
  13.                 end                  
  14.                 if  0A9A: 0@ = openfile "CLEO/coordinate.ini" mode 0x77  // IF and SET
  15.                 then
  16.                     0054: store_player $PLAYER_CHAR position_to 1@ 2@ 3@
  17.                     0AD9: write_formatted_text "XYZ: %f %f %f" in_file 0@ 1@ 2@ 3@
  18.                     0A9B: closefile 0@
  19.                     0ACD: show_text_high_priority "~r~coordinates recorded" time 1000  
  20.                 end  
  21.             end
  22.         end
  23.     end
  24. end

5
Общие вопросы / Re: Помощь с CLEO
« : Октябрь 23, 2017, 01:05:04 pm »
Цитировать
Раньше придерживался девиз "Главное, чтоб работало", сейчас с опытом, хочется переписать все скрипты, начиная с первого, теперь вижу все свои недочеты и серьезные огрехи, которые тогда не замечал.
Твой прогресс меня радует - немногие так быстро углубляются в скриптинг, да еще и прислушиваются к советам. Если продолжишь в том же темпе - скоро я тебе уже буду бесполезен ;)
Повторюсь - я практически во всех аспектах моддинга Вайса нахожусь примерно на среднем уровне, моё отличие от многих других лишь в том, что я в своё время наделал миллиарды ошибок и порой годами доходил до решения той или иной проблемы, зачастую не додумываясь(или просто упираясь) банально спросить совета более опытного человека. А бывало, что и спросить было не у кого...
Именно по этой причине я сейчас стараюсь помогать людям, у которых вижу желание изучать что-то новое: просто не хочу, чтобы они тратили на решения отдельных проблем столько же времени, сколько когда-то угробил на это я. А не потому что я супер-мега эксперт.
Уже сталкивался несколько раз, когда некоторые модмейкеры, которым я когда-то помогал осваивать новые трюки в какой-либо области моддинга, публикуют что-то в этой самой области, до чего я бы и не додумался. Что-то, что вдохновляет других, включая и меня самого.
Поэтому я надеюсь, что когда-нибудь и ты будешь также помогать другим.

6
Общие вопросы / Re: Помощь с CLEO
« : Октябрь 19, 2017, 10:08:34 pm »
Цитировать
В принципе cleo миссия работает, ее можно использовать как шаблон для написание миссии, путем внесения изменений.
Если просто "работает" - это еще не значит, что всё сделано правильно, будь пожалуйста внимательнее к коду, чтобы не было таких моментов:
Код: Text
  1. jump @MISSION_START // Старт миссии    
  2. jump @MISSION_1  // Чтобы можно пройти заново
  3. return
После первого jump второй jump и return не выполнятся!
Jump - это не gosub. Jump - это безоговорочный прыжок, и код после него не выполняется!

Цитировать
Вы как один из лучших модеров по гта, прекрасно знакомы с языком lua.
Я "середнячок" в моддинге(просто относительно эрудирован), а Lua я не знаю совершенно...

7
Хмм, действительно) Фантастика какая-то...

8
Общие вопросы / Re: Помощь с CLEO
« : Октябрь 18, 2017, 02:25:34 pm »
Пробуй ставить задержки в несколько секунд по очереди с начала скрипта до его конца и тестируй. Т.е. сначала после первого опкода и тестируй, потом после второго и т.д. Я так часто ищу участки скриптов, вызывающие ошибку.

9
Насчет педов - хз, я просто объединяю вертексы в тех местах, где не нужен "угол". С плагином экспорта не пробовал заниматься педами, так что ничего по этому поводу сказать не могу...

10
Общие вопросы / Re: Помощь с CLEO
« : Октябрь 09, 2017, 02:25:33 pm »
Цитировать
зачем нужен поток в скрипте?
Каждый скрипт это и есть поток. А вот задание имени потока действительно необязательно. Оно действительно нужно лишь в том случае, если ты потом захочешь где-нибудь удаленно закрыть этот поток, и это можно сделать лишь по его имени(если оно у него есть).


Цитировать
Создавал маркер перед потоком, чтобы избежать вреда сохранениям.
Так какая разница, если игрок может пойти и сохраниться в тот период, когда маркер уже создан, а миссия еще не начата и этот маркер в итоге сохранится в файле сохранения(навредит ему)? Не советую вообще создавать какие-либо маркеры вне миссии, лучше сделай так, чтобы миссия активировалась чит-кодом или еще каким действием. Ведь CLEO-миссии - это лишь баловство(тут и чит-код сойдет). Если хочешь написать полноценную красивую сюжетную линию с кучей миссий и маркерами, как в оригинале, то и делать это стоит как в оригинале - в main.scm. Там уже можно и маркеры, и пикапы, и парковки и прочее создавать и юзать глобальные переменные.


Цитировать
Скажите, пожалуйста, как записать в константы $player_char как ch.
Странный вопрос, ведь ты уже записал $ONMISSION в ONM


Цитировать
Скажите, пожалуйста, как записать в константы имя модели- медик
"имена моделей" - это лишь упрощение SannyBuilder, на самом деле при компиляции они заменяются на соответствующие ID из IDE файлов.
То есть #MEDIC - это номер 5 в default.ide, т.е. вместо
Цитировать
1@ = actor.Create(16, #MEDIC, 77.3075, -879.1083, 10.4481
можно писать
Цитировать
1@ = actor.Create(16, 5, 77.3075, -879.1083, 10.4481
Соответственно, в константы тоже следует записывать номер, а можно и также имя модели:
Цитировать
MEDICMODEL = #MEDIC


Цитировать
Как цикл For использовать в качестве условие, что актер 1@ убить 3 раза?
Я не практикую высокоуровневый скриптинг для подобных запутанных вещей, и тебе того же советую. Высокоуровневый код хорош только для несложных скриптов и то - чисто для эстетики. И чем сложнее миссии ты будешь писать, тем запутаннее будут эти твои циклы for, while и until. Конечно, Рокстары вроде как писали подобным типом кода, но это их дело. Я скинул примеры моего способа написания миссий, а ты уже смотри, как тебе будет удобно.


Цитировать
Циклом for создаем нужно их количество, так как в vc нет массива.
При установки здоровье 150, вылетать
При подъеме денег с убитых врагов идет вылет, что странно.
Я показал на примере тех двух миссий, как работать с массивами - всё там работает отлично. У тебя же все 5 актеров записываются в одну и ту же переменную 3@, соответственно работать в дальнейшем ты сможешь только с последним созданным, а других даже удалить не сможешь.
Попробуй взять за основы те миссии и хорошенько их "распотрошить", чтобы было удобнее понять, как работать с массивами в Вайсе "на практике".


Цитировать
Как правильно загружать несколько моделей? Через request_model или model.Load()?

Это одно и то же.
Есть опкод:
Цитировать
0247: request_model #ARMY
Для него есть кейворд:
Цитировать
request_model #ARMY
А также - команда класса:
Цитировать
model.Load(#ARMY)
- все три способа абсолютно легитимны. Просто юзай тот, который тебе кажется наиболее удобным. При компиляции будет один результат.

11
Общие вопросы / Re: Помощь с CLEO
« : Октябрь 03, 2017, 08:37:21 pm »
Цитировать
Все сделал как Вы сказали, все же выдает ошибку при компиляция
Очень странно - кейворды(а именно их отсутствие и вызвало эту ошибку, судя по скрину) должны устанавливаться вместе с Sanny Builder.
Попробуй поставить мои(в аттаче) - кидать также в Sanny Builder 3\data\vc\.

Цитировать
Работают над скриптом по изменению цвета авто, думал за 5 мин напишу, а она вылетает.
Не знаю почему
Опкод 00DA используется только в миссиях, так что замени его на 03C1:
Код: Text
  1. 03C1: 0@ = player $player_char car_no_save

И последняя строчка
Код: Text
  1. 0ABA: end_custom_thread_named 'U'
- лишняя(во-первых, выше уже есть jump, а во-вторых - поток не может закрыть сам себя таким способом!)

12
Общие вопросы / Re: Помощь с CLEO
« : Октябрь 03, 2017, 02:21:44 pm »
Цитировать
к сожалению, он не компилируется.


Странно: у меня и другого чела(автора второй миссии) всё компилируется отлично.
Поставь последний Sanny Builder v3.2.2, а затем поставь актуальные VCSCM.INI и opcodes.txt для SannyBuilder(кинь эти файлы в Sanny Builder 3\data\vc\)

13
Общие вопросы / Re: Помощь с CLEO
« : Октябрь 02, 2017, 03:34:14 pm »
Так нельзя делать. Поскольку CLEO для Вайса не поддерживает CLEO-миссии - нужно писать миссию и её стартер в виде одного скрипта.
Также повторю то, что писал когда-то в начале темы: нельзя создавать маркеры в cleo-скриптах таким путем, поскольку это портит сохранения.

Добавил в аттаче пример миссии(SimpleMission.txt), которая запускается с помощью чит-кода "SMISSION".
Код миссии прокомментирован практически построчно.
Помимо самой миссии, в скрипте продемонстрировано выделение памяти под новые переменные(поскольку для большой миссии в дальнейшем могут понадобиться больше переменных, чем 16 стандартных локальных).
К сожалению, у меня нет времени на более подробные объяснения, так что надеюсь, что принцип будет понятен.

Также добавил еще один пример миссии(Mission.txt), который активируется с чит-кода "MISSIONSTART". Этот пример уже не мой, но написан по тому же принципу.

14
Флуд / Re: Флудильная
« : Октябрь 01, 2017, 12:52:41 pm »
Написал дешифровщик .mse MAX скриптов:


Взять тут
Также залил в аттач.
Сурсы в архиве(кому интересно).
Работает с алгоритмом шифрования 3ds Max со 2 по 9 версию, вещи типа скриптов KAMа расшифровывает.

15
Общие вопросы / Re: Помощь с CLEO
« : Сентябрь 26, 2017, 02:24:41 pm »
Глянул мельком... зачем ты создаешь актера 2 раза?
Тут:
Код: Text
  1. 009A: 13@ = create_actor_pedtype 15@ model 0@ at 0.0 0.0 0.0
и тут:
Код: Text
  1. 0129: 13@ = create_actor 15@ 0@ in_car 12@ driverseat
Затем еще удаляешь несуществующего актера:
Код: Text
  1. Actor.RemoveReferences(14@)

Насчет типа педа: попробуй поменять на civmale(номер 4).
Если после всех этих манипуляций вылеты не прекратятся - будем думать дальше...

Страницы: [1] 2 3 ... 32