Перейти к содержанию

Обсуждение и публикация Cleo-скриптов


Рекомендуемые сообщения

В общем разобрался я, что за фигня с сохранением потока, вопрос возник, можно как то задать проверку, создан буфер памяти или нет? Походу вылет из-за того, что скрипт пытается обратиться к несуществующей памяти. 

Ссылка на комментарий
Поделиться на другие сайты

Буфер создаётся при запуске скрипта. Скрипт запускается после старта игры. Буфер в сохранение не записывается. При другом старте игры создаётся другой буфер и он будет пустым пока не запишешь туда данные. Тебе надо использовать либо локальные переменные (как это было сделано в моём скрипте), но их количество ограничено, либо использовать глобальные переменные var (как в том примере, что ты изначально показывал), либо записывать данные в ini файл (подобный скрипт в сети тоже был), а при старте другой игры считывать данные оттуда в переменные и дальше записывать в буфер.

Ссылка на комментарий
Поделиться на другие сайты

Буфер создаётся при запуске скрипта. Скрипт запускается после старта игры. Буфер в сохранение не записывается. При другом старте игры создаётся другой буфер и он будет пустым пока не запишешь туда данные. 

 

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

Ссылка на комментарий
Поделиться на другие сайты

Я имел ввиду не загрузку другого (или этого же) сохранения повторно или начало новой игры, а выход из игры полностью и запуск игры опять. Тогда буфер создастся заново. 
 

Ссылка на комментарий
Поделиться на другие сайты

Я имел ввиду не загрузку другого (или этого же) сохранения повторно или начало новой игры, а выход из игры полностью и запуск игры опять. Тогда буфер создастся заново. 

 

 

Только что проверил. Если в скрипте стоит  0A95: enable_thread_saving , то поток сохраняется там где он был на момент сохранения. Т.е. команды

 0AC6: 0@ = label @label offset или 0AC8: 0@ = allocate_memory_size 260 не отрабатываются. Причем не важно где они стоят. Чтобы создать буфер, надо что бы поток прошелся по этим опкодам, тогда буфер создастся. Такие дела. 

Причем попытка записать данные в несуществующий буфер проскакивает, а попытка прочитать приводит к вылету. Сначала думал если перезапустить игру, переменная буфера принимает нулевое значение, но нифига, проверка 

if

0@ == 0

then

0AC6: 0@ = label @label offset не прокатила. 

В общем думаю придется отказаться от сохранения прицепов, или делать для них отдельный скрипт и потом как то пытаться прицепить прицеп из одного скрипта к машине из другого.

Ссылка на комментарий
Поделиться на другие сайты

А зачем тебе ставить опкод 0A95 в этом скрипте? Повторяю - буфер и его данные в сохранение не записываются. Тебе надо записать данные в ini файл. При старте скрипта считывать из ini данные в буфер и потом спокойно с этими данными работать.

Ссылка на комментарий
Поделиться на другие сайты

А зачем тебе ставить опкод 0A95 в этом скрипте? Повторяю - буфер и его данные в сохранение не записываются. Тебе надо записать данные в ini файл. При старте скрипта считывать из ini данные в буфер и потом спокойно с этими данными работать.

 

Я хотел все основные данные хранить просто в переменных, а второстепенную информацию скидывать в ini. Тогда будет меньше строк кода, и не будет глюков, например игрок сохранил авто, потом сохранил игру, потом сел в авто и через сколько-то времени вылетел, ибо gta частенько этим страдает. Загрузился, а машины то и нету. Да и как выше писал, меньше циклов перезаписи, мотоциклам например вообще данные о тюнинге не нужны, лодкам и самолетам тоже. 

В общем фиг с ним с буфером, если можно как то положительно решить другое: я рядом с машиной спавню прицеп. Можно его как то захватить и прицепить к машине? В смысле, что скрипт не знает о прицепе, прицеп как бы отдельно создался.

Изменено пользователем svyatogor2007
Ссылка на комментарий
Поделиться на другие сайты

Если ты создаёшь прицеп в этом же скрипте, то можно сразу после создания прицепа прицепить его к тягачу. В моём скрипте для сохранения авто есть это, посмотри. Если ты создаёшь прицеп в другом скрипте, то надо "захватить" прицеп в переменную. Для этого есть несколько опкодов. Здесь почитай.

Ссылка на комментарий
Поделиться на другие сайты

Если ты создаёшь прицеп в этом же скрипте, то можно сразу после создания прицепа прицепить его к тягачу. В моём скрипте для сохранения авто есть это, посмотри. Если ты создаёшь прицеп в другом скрипте, то надо "захватить" прицеп в переменную. Для этого есть несколько опкодов. Здесь почитай.

 

Спасиб, только уже разобрался. Мне только под вечер вчера мысля пришла, что на грузовики все равно тюнинг не поставишь, соответственно можно переменные тюнинга использовать для прицепа. В общем буфер удалил, скрипт переделал, теперь с сохранением проблем нет, правда скрипт потолстел, уже за 30кб весит  :facepalm:

------- Добавлено:

У меня уже реально мозги кипят, но я не понимаю что можно сделать. В общем разобрался со всем, прицепы сделал, сохранения сделал, вылеты победил... А нифига не победил, при попытке сохранить тягач без прицепа, игра вылетат, так как пытается узнать у него детали тюнинха. Весь вечер бьюсь, но никак не соображу, как указать скрипту, что тюнинга тут быть не может, или придется все модели указывать в скрипте?

Изменено пользователем svyatogor2007
Ссылка на комментарий
Поделиться на другие сайты

А нифига не победил, при попытке сохранить тягач без прицепа, игра вылетат, так как пытается узнать у него детали тюнинха.

Ну так а я о чём писал изначально? troll.png  Помню, что там была какая-то проблема, поэтому и сделал сохранение с тюнингом и без на разные клавиши.

 

Можно попробовать перед опкодами считывания деталей тюнинга сделать проверку считывания первого адреса для записи номеров ID деталей тюнинга в структуре транспорта. В случае нулевого значения, пропускать запись тюнинга.

Ссылка на комментарий
Поделиться на другие сайты

Всем привет. А есть какой скрипт на добавление новых полицейских машин. коп+ не предлагать. нужно что бы менты катались на новых, а не я. Мои поиске в яндексе пока ни к чему не привели. Нашел DLC BigCop ща потестим. Ну и потестить его тоже не удалось. Начало новой игры и сражу же вылет.

Изменено пользователем Constantines
Ссылка на комментарий
Поделиться на другие сайты

DLC BigCop

По моим наблюдениям в игре, просто на добавленных позициях машины типа полицейских, и педы типа копы. По факту никак не полезны и ничего не дают.

ШОК-СЕНСАЦИЯ! Утки научились читать DVD!

 

 

Ссылка на комментарий
Поделиться на другие сайты

Всем привет. А есть какой скрипт на добавление новых полицейских машин. коп+ не предлагать. нужно что бы менты катались на новых, а не я. Мои поиске в яндексе пока ни к чему не привели. Нашел DLC BigCop ща потестим. Ну и потестить его тоже не удалось. Начало новой игры и сражу же вылет.

Здесь на форуме кто-то советовал Wanted Level Editor. http://www.mediafire.com/file/1sw54joaw4tuc1a/Wanted_Level_Editor_1.08.rar Там относительно непросто настроить (все через ini, инструкций нет, но если чуток владеть аглицким, по названиям параметров все понятно). Машины, мотоциклы и новых копов добавлять получалось, но относительно безглючности и отказоустойчивости не было времени протестировать.

Ссылка на комментарий
Поделиться на другие сайты

Ну так а я о чём писал изначально? troll.png  Помню, что там была какая-то проблема, поэтому и сделал сохранение с тюнингом и без на разные клавиши.

 

Можно попробовать перед опкодами считывания деталей тюнинга сделать проверку считывания первого адреса для записи номеров ID деталей тюнинга в структуре транспорта. В случае нулевого значения, пропускать запись тюнинга.

 

Все, получилось. Если брать данные о тюнинге из структуры проблем не возникает, можно сохранять что угодно, хоть трактор.

Я у себя предохранитель поставил, в случае успеха он работает, но меня больше волнует, сработает ли в случае провала. Вот код:

[spoiler=предохранитель]

if

not 17@ == 65535

then

06E9: load_car_component 17@

13@ = 0

gosub @SVRSAVE_117

end

jump 14@

 

:SVRSAVE_117

wait 13@

gosub @SVRSAVE_133

if and

13@ < 200

not 14@ == @SVRSAVE_105

then

if

06EA: car_component 17@ available

then

06E7: 15@ = add_car_component 17@ to_car 1@

06EB: release_car_component 17@

else

jump @SVRSAVE_117

end

end

return

 

:SVRSAVE_133

13@ += 10

if

056E: car 1@ defined

then

14@ = @SVRSAVE_108

else

14@ = @SVRSAVE_105

13@ = 201

end

return

 

 

В данном случае: если компонент не загрузился сразу, мы даем время подумать 20 проходов с ожиданием увеличивающимся на 10 миллисекунд, если так и не загрузился, значит просто его игнорируем и переходим на метку _108. После каждого wait проверяем наличие транспорта, если транспорт пропал, значит сразу уходим на метку _105. 

Ссылка на комментарий
Поделиться на другие сайты

Ну в общем он вылупился и стал бабочкой.

Пару дней потестировал, проблем вроде не наблюдается. 

 

Что изменилось по сравнению с первой бета версией:

1)Теперь можно сохранять до десяти машин, добавлено сохранение прицепов и маркеры на карте. Весь транспорт сохраняется между игровыми сессиями. Так что можно смело брать Икарус с гармошкой и ехать на миссию  :wink:

 

2)Немного изменил поведение скрипта, теперь транспорт не перезагружается если зайти в помещение или далеко уехать, игра сама определяет когда можно удалить автомобиль, а скрипт загружает модель только при необходимости.

 

3)Настройки кнопок вынес в ini файл и добавил время удерживания кнопки для сохранения. По умолчанию сохранение происходит по принципу GTA4, просто нажали F, персонаж вышел из машины, нажали и удерживаем F 0.3 с, персонаж глушит мотор, автомобиль сохраняется. Еще 9 машин сохраняются кнопками 1-9 на доп клавиатуре с задержкой 0.

 

От сохранения номеров отказался в пользу иконок, все равно сохранялся только один номер и только на не поврежденной детали, но если кому надо, могу выложить версию с номерами. Если к авто прицеплен прицеп, то тюнинг не сохраняется, возможно решу в следующих версиях. Так-же надо понимать, что при спавне авто с прицепом, угол прицепа не сохраняется, поэтому не стоит парковать тягач с прицепом в тесных местах, транспорт может куда нибудь ускакать или застрять в стене. :troll: . Ну и осталась задержка в наложении цвета под покрасочную работу, в зависимости от обстоятельств цвет может примениться только через несколько секунд, тут опять же ограничение игры, без написания дополнительных библиотек от этого не уйти. 

 

В общем кого заинтересовало, прошу: https://yadi.sk/d/DwkgP0uZ3Rdhqd 

ЗЫ. Если у кого-то возникнут проблемы, убедительная просьба сообщить мне, дабы сразу поправить, ибо пока нет возможности протестировать скрипт на разных конфигах и системах. 

Ссылка на комментарий
Поделиться на другие сайты

Всем привет. И так вопрос. Как привязать новую иконку к объекту на карте? То что надо пихнуть иконки в hud.txt, прописать их в gtasa_radarBlipSpriteFilenames.dat и добавить лимит в FLA. Тут понятно. Идея в том, чтобы к устрицам на карте привязать одну и ту же иконку. Но, чтобы после взятия устрицы иконка на карте пропадала. Этот же вопрос задал в разделе  FLA, пока тишина.

Ссылка на комментарий
Поделиться на другие сайты

Всем привет. и так удалось добавить иконку на карту в указанную точку с помощью Icons_adderа и небольшого скрипта с местоположением иконки. Теперь вопрос как сделать так, чтобы иконка пропадала при взятии ракушки? 

[spoiler=Скрины]http://www.imageup.ru/img42/thumb/0022983846.jpg

http://www.imageup.ru/img42/thumb/0012983847.jpg

 

Ссылка на комментарий
Поделиться на другие сайты

Всем привет. и так удалось добавить иконку на карту в указанную точку с помощью Icons_adderа и небольшого скрипта с местоположением иконки. Теперь вопрос как сделать так, чтобы иконка пропадала при взятии ракушки? 

[spoiler=Скрины]http://www.imageup.ru/img42/thumb/0022983846.jpg

 

http://www.imageup.ru/img42/thumb/0012983847.jpg

 

А,сам скрипт можешь выложить?

Мой форум http://bosikom.mybb.ru

Ссылка на комментарий
Поделиться на другие сайты

А,сам скрипт можешь выложить?

[spoiler=Скрипт]{$CLEO .cs}

 

//-------------MAIN---------------

thread 'ADDON_FOR_ICONS'

wait 0

0A95: enable_thread_saving

0@ = Marker.CreateIconWithoutSphere(22, 2032.642, -1411.018, 16.9986)

1@ = Marker.CreateIconWithoutSphere(22, 1178.483, -1322.602, 14.1223)

2@ = Marker.CreateIconWithoutSphere(30, 1552.463, -1675.474, 16.1953)

3@ = Marker.CreateIconWithoutSphere(20, 1753.736, -1457.757, 13.5469)

4@ = Marker.CreateIconWithoutSphere(22, -2666.912, 632.8978, 14.4531)

5@ = Marker.CreateIconWithoutSphere(30, -1605.792, 716.8598, 12.028)

6@ = Marker.CreateIconWithoutSphere(20, -2025.462, 82.1209, 28.2495)

7@ = Marker.CreateIconWithoutSphere(22, 1579.752, 1769.011, 10.8203)

8@ = Marker.CreateIconWithoutSphere(30, 2337.151, 2455.799, 14.9687)

9@ = Marker.CreateIconWithoutSphere(22, 629.3868, -571.8307, 16.7559)

10@ = Marker.CreateIconWithoutSphere(22, -1514.731, 2526.364, 55.7585)

11@ = Marker.CreateIconWithoutSphere(22, 1242.502, 328.2486, 19.7555)

12@ = Marker.CreateIconWithoutSphere(22, -319.9307, 1054.889, 19.7422)

13@ = Marker.CreateIconWithoutSphere(30, -217.718, 979.1064, 19.5033)

14@ = Marker.CreateIconWithoutSphere(49, 2309.416, -1644.109, 18.5078)

15@ = Marker.CreateIconWithoutSphere(48, 1834.752, -1681.689, 13.4184)

16@ = Marker.CreateIconWithoutSphere(48, -2553.875, 193.371, 6.1625)

17@ = Marker.CreateIconWithoutSphere(49, -2244.323, -88.1736, 35.3203)

18@ = Marker.CreateIconWithoutSphere(49, 2441.229, 2063.527, 10.8203)

19@ = Marker.CreateIconWithoutSphere(48, 2507.519, 1244.969, 10.8203)

20@ = Marker.CreateIconWithoutSphere(7, -1449.655, 2593.723, 55.8359)

21@ = Marker.CreateIconWithoutSphere(29, 1364.994, 249.687, 19.5669)

22@ = Marker.CreateIconWithoutSphere(77, 1966.454, -1203.6244, 17.45)

23@ = Marker.CreateIconWithoutSphere(9, 154.253, -1946.623, 5.3902)

24@ = Marker.CreateIconWithoutSphere(9, -2385, 6042, 2216)

 

 

:ADDON_FOR_ICONS_569

wait 0

jf @ADDON_FOR_ICONS_569

wait 5000

Marker.Disable(0@)

Marker.Disable(1@)

Marker.Disable(2@)

Marker.Disable(3@)

Marker.Disable(4@)

Marker.Disable(5@)

Marker.Disable(6@)

Marker.Disable(7@)

Marker.Disable(8@)

Marker.Disable(9@)

Marker.Disable(10@)

Marker.Disable(11@)

Marker.Disable(12@)

Marker.Disable(13@)

Marker.Disable(14@)

Marker.Disable(15@)

Marker.Disable(16@)

Marker.Disable(17@)

Marker.Disable(18@)

Marker.Disable(19@)

Marker.Disable(20@)

Marker.Disable(21@)

Marker.Disable(22@)

Marker.Disable(23@)

Marker.Disable(24@)

0A93: end_custom_thread

 

Взято где то с просторов  интернета, и изменена одна строка, а именно @22. Сам в скриптинге дуб дерево.

Изменено пользователем Constantines
Ссылка на комментарий
Поделиться на другие сайты

[spoiler=Попробуй так]{$CLEO .cs}

//-------------MAIN---------------
thread 'ADDON_FOR_ICONS'
wait 0
0A95: enable_thread_saving
0@ = Marker.CreateIconWithoutSphere(22, 2032.642, -1411.018, 16.9986)
1@ = Marker.CreateIconWithoutSphere(22, 1178.483, -1322.602, 14.1223)
2@ = Marker.CreateIconWithoutSphere(30, 1552.463, -1675.474, 16.1953)
3@ = Marker.CreateIconWithoutSphere(20, 1753.736, -1457.757, 13.5469)
4@ = Marker.CreateIconWithoutSphere(22, -2666.912, 632.8978, 14.4531)
5@ = Marker.CreateIconWithoutSphere(30, -1605.792, 716.8598, 12.028)
6@ = Marker.CreateIconWithoutSphere(20, -2025.462, 82.1209, 28.2495)
7@ = Marker.CreateIconWithoutSphere(22, 1579.752, 1769.011, 10.8203)
8@ = Marker.CreateIconWithoutSphere(30, 2337.151, 2455.799, 14.9687)
9@ = Marker.CreateIconWithoutSphere(22, 629.3868, -571.8307, 16.7559)
10@ = Marker.CreateIconWithoutSphere(22, -1514.731, 2526.364, 55.7585)
11@ = Marker.CreateIconWithoutSphere(22, 1242.502, 328.2486, 19.7555)
12@ = Marker.CreateIconWithoutSphere(22, -319.9307, 1054.889, 19.7422)
13@ = Marker.CreateIconWithoutSphere(30, -217.718, 979.1064, 19.5033)
14@ = Marker.CreateIconWithoutSphere(49, 2309.416, -1644.109, 18.5078)
15@ = Marker.CreateIconWithoutSphere(48, 1834.752, -1681.689, 13.4184)
16@ = Marker.CreateIconWithoutSphere(48, -2553.875, 193.371, 6.1625)
17@ = Marker.CreateIconWithoutSphere(49, -2244.323, -88.1736, 35.3203)
18@ = Marker.CreateIconWithoutSphere(49, 2441.229, 2063.527, 10.8203)
19@ = Marker.CreateIconWithoutSphere(48, 2507.519, 1244.969, 10.8203)
20@ = Marker.CreateIconWithoutSphere(7, -1449.655, 2593.723, 55.8359)
21@ = Marker.CreateIconWithoutSphere(29, 1364.994, 249.687, 19.5669)
22@ = Marker.CreateIconWithoutSphere(77, 1966.454, -1203.6244, 17.45)
23@ = Marker.CreateIconWithoutSphere(9, 154.253, -1946.623, 5.3902)
24@ = Marker.CreateIconWithoutSphere(9, -2385, 6042, 2216)


:ADDON_FOR_ICONS_569
wait 0
jf @ADDON_FOR_ICONS_569
wait 5000

0A93: end_custom_thread

 

Мой форум http://bosikom.mybb.ru

Ссылка на комментарий
Поделиться на другие сайты

Если так, то иконка тоже есть на карте, но при открытии легенды крашит. Не помню проверял ли легенду в прошлый раз. Проверил. При открытии легенды игра все равно падает. Вообще в идеале мне пока хватает [spoiler=этого:]{$CLEO .cs}

//-------------MAIN---------------
thread 'ADDON_FOR_ICONS'
wait 0
0A95: enable_thread_saving

1@ = Marker.CreateIconWithoutSphere(77, 1966.454, -1203.6244, 17.45)



:ADDON_FOR_ICONS_569
wait 0
jf @ADDON_FOR_ICONS_569
wait 5000

0A93: end_custom_thread

Т.к. иконку добавил одну, ее просто надо будет размножить по сане, но тут опять вопрос. После кучи просмотров видео уроков по скриптингу наткнулся на то, что в скрипте может быть только 33 переменные. А самих ракушек на карте, по моему, 50. 

Изменено пользователем Constantines
Ссылка на комментарий
Поделиться на другие сайты

Если так, то иконка тоже есть на карте, но при открытии легенды крашит. Не помню проверял ли легенду в прошлый раз. Проверил. При открытии легенды игра все равно падает. Вообще в идеале мне пока хватает [spoiler=этого:]{$CLEO .cs}

//-------------MAIN---------------

thread 'ADDON_FOR_ICONS'

wait 0

0A95: enable_thread_saving

 

1@ = Marker.CreateIconWithoutSphere(77, 1966.454, -1203.6244, 17.45)

 

 

 

:ADDON_FOR_ICONS_569

wait 0

jf @ADDON_FOR_ICONS_569

wait 5000

 

0A93: end_custom_thread

Т.к. иконку добавил одну, ее просто надо будет размножить по сане, но тут опять вопрос. После кучи просмотров видео уроков по скриптингу наткнулся на то, что в скрипте может быть только 33 переменные. А самих ракушек на карте, по моему, 50. 

Да.переменных 33 значит ты ничего не сделаешь.

Мой форум http://bosikom.mybb.ru

Ссылка на комментарий
Поделиться на другие сайты

Да.переменных 33 значит ты ничего не сделаешь.

2 скрипта создать? К примеру поделить по 25 иконок. Это уже второстепенный вопрос. В первую очередь хотелось бы узнать как сделать так, чтобы иконка на карте пропадала после того, как взяли ракушку.

Изменено пользователем Constantines
Ссылка на комментарий
Поделиться на другие сайты

Помогите с карспанером! Установил спанер от The Core ( G+H активируется), но некоторые ID ( 2 конкретные ) зависают игру. Проблема не в моделях, т.к. без использования скрипта они нормально спанятся. Как решить проблему? 

Ссылка на комментарий
Поделиться на другие сайты

Помогите с карспанером! Установил спанер от The Core ( G+H активируется), но некоторые ID ( 2 конкретные ) зависают игру. Проблема не в моделях, т.к. без использования скрипта они нормально спанятся. Как решить проблему? 

Какие ID имеются в виду? Поезда или Бравура с Буффало? :wink: Есть вот такая http://www.mediafire.com/file/grq5oqw7nigunhs/CarSp.rar asi-шка (к сожалению и стыду, не помню автора). Спавнит все, кроме поездов, с добавленными ID работает.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...