Пятница, 19.04.2024, 02:27
Качественные скрипты, моды и дополнения для GTA без регистрации
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Форум » Игры серии ГТА » Скриптинг » Вопросы по созданию КЛЕО-скриптов (Вопросы по опкодам, кодингу и др.)
Вопросы по созданию КЛЕО-скриптов
ILYALIONДата: Суббота, 31.12.2011, 21:06 | Сообщение # 1111
Группа: Проверенные
Сообщений: 325
Статус: Offline
Да, но если будет jump, то там у меня предусматривается return.
И в чём же всё-таки причина вылета?


Сообщение отредактировал ILYALION - Суббота, 31.12.2011, 21:13
 
Den_spbДата: Суббота, 31.12.2011, 21:16 | Сообщение # 1112
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Я отредактировал предыдущее сообщение. Повторюсь: вылет скорей всего из-за превышения лимита количества gosub, выполненных подряд, вызванного этой конструкцией:
Code
if
     16@ == 1  
else_jump @START

П.С.Одна из причин, по которой код рекомендуется писать конструкциями, а не метками - то, что с метками код становится очень запутанным.
 
ILYALIONДата: Суббота, 31.12.2011, 21:54 | Сообщение # 1113
Группа: Проверенные
Сообщений: 325
Статус: Offline
Den_spb, но в моём полном коде только 2 вложенных gosub(до этого я прикреплял отрывок), и всё равно вылет из-за return. Прикреплю свой полный запутанный код.

Добавлено (31.12.2011, 21:54)
---------------------------------------------
Den_spb, большое Вам спасибо за все разъяснения. Заменил последнюю строку на return-вылеты прекратились. И код работает так, как я и хотел. Осталась одна часть-и "подарок" на Новый год будет готов.

Прикрепления: 4616776.log (162.2 Kb) · 7905757.txt (16.3 Kb) · poezd.ini (0.4 Kb)


Сообщение отредактировал ILYALION - Суббота, 31.12.2011, 21:45
 
Den_spbДата: Суббота, 31.12.2011, 22:43 | Сообщение # 1114
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Пожалуйста.
Советую ещё изучить темы массивов и циклов - с их помощью можно уменьшать объём кода. Пример - данную конструкцию:
Code
0@ = -382234
0085: &0(0@,1i) = 1@                    // vagon 1
0@ = -382233
0085: &0(0@,1i) = 2@                    // vagon 2
0@ = -382232
0085: &0(0@,1i) = 3@                    // vagon 3
0@ = -382231
0085: &0(0@,1i) = 4@                    // vagon 4
0@ = -382230
0085: &0(0@,1i) = 5@                    // vagon 5
0@ = -382229
0085: &0(0@,1i) = 6@                    // vagon 6
0@ = -382228
0085: &0(0@,1i) = 7@                    // vagon 7
0@ = -382227
0085: &0(0@,1i) = 8@                    // vagon 8
0@ = -382226
0085: &0(0@,1i) = 9@                    // vagon 9
0@ = -382225
0085: &0(0@,1i) = 10@                    // vagon 10
0@ = -382224
0085: &0(0@,1i) = 11@                    // vagon 11
0@ = -382223
0085: &0(0@,1i) = 12@                    // vagon 12
0@ = -382222
0085: &0(0@,1i) = 13@                    // vagon 13
0@ = -382221
0085: &0(0@,1i) = 14@                    // vagon 14
0@ = -382220
0085: &0(0@,1i) = 15@                    // vagon 15

можно заменить на:
Code
0@ = -382234
for 31@ = 0 to 14
       0085: &0(0@,1i) = 1@(31@,15i)
       0@ += 1
end
 
АксиомаДата: Воскресенье, 01.01.2012, 00:43 | Сообщение # 1115
Группа: Заблокированные
Сообщений: 81
Статус: Offline
Почему после взрыва объект не удаляется

Code
// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007

{$VERSION 3.1.0027}
{$CLEO .cs}

//-------------MAIN---------------
0001: wait 100 ms  

:NONAME_4
0001: wait 100 ms  
0866: get_object_in_sphere -671.859 2057.96 58.3469 radius 2.0 handle_as 1@  
0866: get_object_in_sphere -781.859 2057.96 58.3469 radius 2.0 handle_as 2@  
0866: get_object_in_sphere -777.821 2089.92 58.3469 radius 2.0 handle_as 3@  
0866: get_object_in_sphere -654.32 2095.82 58.3469 radius 2.0 handle_as 4@  
0866: get_object_in_sphere -650.256 2136.68 58.3469 radius 2.0 handle_as 5@  
0866: get_object_in_sphere -781.273 2140.52 58.3469 radius 2.0 handle_as 6@  
0002: jump @NONAME_165  

:NONAME_165
0001: wait 0 ms  
00D6: if  
0102:   actor $PLAYER_ACTOR in_sphere -841.345 1855.68 58.4219 radius 3.2 3.2 3.0 sphere 1 stopped_on_foot  
004D: jump_if_false @NONAME_165  
0001: wait 1000 ms  
020C: create_explosion_with_radius 6 at -671.859 2057.96 58.3469  
0948: create_explosion_at -671.859 2057.96 58.3469 type 10 camera_shake 1  
020C: create_explosion_with_radius 6 at -781.859 2057.96 58.3469  
0948: create_explosion_at -781.859 2057.96 58.3469 type 10 camera_shake 1  
020C: create_explosion_with_radius 6 at -777.821 2089.92 58.3469  
0948: create_explosion_at -777.821 2089.92 58.3469 type 10 camera_shake 1  
020C: create_explosion_with_radius 6 at -654.32 2095.82 58.3469  
0948: create_explosion_at -654.32 2095.82 58.3469 type 10 camera_shake 1  
020C: create_explosion_with_radius 6 at -650.256 2136.68 58.3469  
0948: create_explosion_at -650.256 2136.68 58.3469 type 10 camera_shake 1  
020C: create_explosion_with_radius 6 at -781.273 2140.52 58.3469  
0948: create_explosion_at -781.273 2140.52 58.3469 type 10 camera_shake 1  
020C: create_explosion_with_radius 6 at -697.498 2037.7 19.5469  
0948: create_explosion_at -697.498 2037.7 19.5469 type 10 camera_shake 1  
020C: create_explosion_with_radius 6 at -797.498 2017.7 19.5469  
0948: create_explosion_at -797.498 2017.7 19.5469 type 10 camera_shake 1  
0108: destroy_object 1@  
0108: destroy_object 2@  
0108: destroy_object 3@  
0108: destroy_object 4@  
0108: destroy_object 5@  
0108: destroy_object 6@  
0001: wait 20000 ms  
0002: jump @NONAME_4
 
Den_spbДата: Воскресенье, 01.01.2012, 01:33 | Сообщение # 1116
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
В зоне взрыва были динамические объекты? Дело в том, что скриптом можно "поймать" только динамические объекты - это перемещаемые и ломающиеся объекты, прописанные в object.dat, а также любые объекты, созданные скриптами.
Статический объект скриптом "поймать" нельзя.
Перед произведением действия над объектом (в данном случае - удаление) надо проверить, существует ли этот объект - иначе игра может вылететь.
 
АксиомаДата: Воскресенье, 01.01.2012, 17:20 | Сообщение # 1117
Группа: Заблокированные
Сообщений: 81
Статус: Offline
У меня игра не вылетела но просто объект не убрался

Добавлено (01.01.2012, 16:50)
---------------------------------------------
В чём ошибка?

Code
0001: wait 100 ms  

:NONAME_4
00D6: if  
0ADC:   test_cheat "B"  
004D: jump_if_false @NONAME_4  
0247: load_model 1636  
038B: load_requested_models  
00A0: store_actor $PLAYER_ACTOR position_to 1@ 2@ 3@  
0107: 0@ = create_object 1636 at 1@ 2@ 3@  
0392: make_object 0@ moveable 1  
01BB: store_object 0@ position_to 4@ 5@ 6@  
0004: $TIME = 5000  
014E: set_timer_to $TIME type 1 // global_variable  
0002: jump @NONAME_101  

:NONAME_101
0001: wait 0 ms  
00D6: if  
8028:   not  $TIME >= 1  
004D: jump_if_false @NONAME_101  
0108: destroy_object 0@  
0001: wait 1000 ms  
020C: create_explosion_with_radius 0 at 4@ 5@ 6@  
0948: create_explosion_at 4@ 5@ 6@ type 1 camera_shake 1  
0001: wait 900 ms  
020C: create_explosion_with_radius 2 at 4@ 5@ 6@  
0948: create_explosion_at 4@ 5@ 6@ type 3 camera_shake 1  
0001: wait 900 ms  
020C: create_explosion_with_radius 4 at 4@ 5@ 6@  
0948: create_explosion_at 4@ 5@ 6@ type 5 camera_shake 1  
0001: wait 900 ms  
020C: create_explosion_with_radius 6 at 4@ 5@ 6@  
0948: create_explosion_at 4@ 5@ 6@ type 7 camera_shake 1  
0001: wait 900 ms  
020C: create_explosion_with_radius 8 at 4@ 5@ 6@  
0948: create_explosion_at 4@ 5@ 6@ type 9 camera_shake 1  
0001: wait 900 ms  
020C: create_explosion_with_radius 6 at 4@ 5@ 6@  
0948: create_explosion_at 4@ 5@ 6@ type 10 camera_shake 1  
0001: wait 4000 ms  
0002: jump @NONAME_4  

Игра не запускается

Добавлено (01.01.2012, 17:20)
---------------------------------------------
Хотя не надо уже, нашёл ошибку и всё работает

 
DK22PacДата: Воскресенье, 01.01.2012, 23:23 | Сообщение # 1118
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Вот столкнулся с такой проблемой. Допустим, надо повернуть матрицу на сколько-то градусов. Не выставить значение угла, а именно повернуть.
Как быть? Вариант "записать углы -> добавить -> перезаписать" в 3D не проходит.
 
Den_spbДата: Понедельник, 02.01.2012, 00:13 | Сообщение # 1119
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Попробуй воспользоваться пересчётом координат:
М результирующая = М углов доворота * М исходная
Описанный тобой метод тоже по идее должен работать - возможно что-то неправильно сделал.
 
АксиомаДата: Понедельник, 02.01.2012, 11:09 | Сообщение # 1120
Группа: Заблокированные
Сообщений: 81
Статус: Offline
Вот есть хорошие звуки из Quake а вот при каком действий в моде их вписать не знаю

А можно ли сделать что если игрок убьёт 10 человек любых то будет звук проигрываться
 
444andrei444Дата: Понедельник, 02.01.2012, 11:55 | Сообщение # 1121
Группа: Проверенные
Сообщений: 15
Статус: Offline
Можно. Считывай значение убитых людей с адреса памяти(или стата) при старте скрипта(в переменную 1@ например), затем циклом считывай значение адреса памяти в другую переменную(напрмер 2@) и вычитай 3@ = 2@ - 1@(нужно использовать опкод клео3 или клео 4)
Затем проверяй равно ли значение 10
3@ == 10
Если нет снова записывай значение в переменную 2@, если да, то воспроизводи музыку.
 
АксиомаДата: Понедельник, 02.01.2012, 12:43 | Сообщение # 1122
Группа: Заблокированные
Сообщений: 81
Статус: Offline
444andrei444, Я ещё в адресах памяти слабо понимаю и не понял что ты сказал, по легче скажи
 
444andrei444Дата: Понедельник, 02.01.2012, 13:46 | Сообщение # 1123
Группа: Проверенные
Сообщений: 15
Статус: Offline
Забыл вот сам адресок, если что вечером готовый код кину 12029956
Code
0A8D: 2@ = read_memory 12029956 size 1 virtual_protect 0

Добавлено (02.01.2012, 13:46)
---------------------------------------------
в этом адресе хранится общее число убийств

 
АксиомаДата: Понедельник, 02.01.2012, 17:10 | Сообщение # 1124
Группа: Заблокированные
Сообщений: 81
Статус: Offline
Мне интересно знать если использовать такой тип проверки оружия

Code
0470: 0@ = actor $PLAYER_ACTOR current_weapon
if
0@ = 38


Для этого нужно загружать модель оружия?

Добавлено (02.01.2012, 17:10)
---------------------------------------------
И ещё вопрос
Как узнать координаты частей тела Игрока если надо прицепить эффект

 
Den_spbДата: Понедельник, 02.01.2012, 17:43 | Сообщение # 1125
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Quote (Аксиома)
Для этого нужно загружать модель оружия?
Не надо. А проверка должна быть написана с двумя знаками равно: 0@ == 38
 
Форум » Игры серии ГТА » Скриптинг » Вопросы по созданию КЛЕО-скриптов (Вопросы по опкодам, кодингу и др.)
Поиск: