Суббота, 20.04.2024, 02:51
Качественные скрипты, моды и дополнения для GTA без регистрации
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Форум » Игры серии ГТА » Скриптинг » Вопросы по созданию КЛЕО-скриптов (Вопросы по опкодам, кодингу и др.)
Вопросы по созданию КЛЕО-скриптов
DK22PacДата: Понедельник, 21.06.2010, 17:57 | Сообщение # 286
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Как симитировать арест игрока (гта3)?
И где взять эту базу Листенера, и есть ли такая для гта3?
 
Den_spbДата: Понедельник, 21.06.2010, 21:53 | Сообщение # 287
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Quote (DK22Pac)
Как симитировать арест игрока (гта3)?
Не знаю. Если подходящих опкодов нет, то через память.

Quote (DK22Pac)
И где взять эту базу Листенера, и есть ли такая для гта3?
Базу gta_sa.exe можно взять здесь: http://public.sannybuilder.com/gtasa_exe_idb/ - качай свежую версию (смотри по дате). Смотреть базу надо с помощью IDA 5.2 (старые версии IDA читать базу не будут).

Для ГТА III база тоже есть - смотреть по той же ссылке, что и СА.

 
DK22PacДата: Вторник, 06.07.2010, 23:32 | Сообщение # 288
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
И ещё вопрос
Вот конструкция миссии
:Mission
thread "Mission"
gosub @Start
if
wasted_or_busted
then
gosub @Failed
end
gosub @Clean
end_thread

Как-бы проверка "умер-арест" должна выполняться после return из :WIN или :FAILED, но она выполняется на протяжении всей миссии? Туда же можно поставить ещё свои проверки (например - not Player.Money > 1000 (что будет значить если денег станет меньше на протяжении миссии то будет провал) ?

Пишу в скрипте
0011: 1@ *= 4.355
после декомпиляции
0011: 1@ *= 4.1235

???

Сообщение отредактировал DK22Pac - Среда, 07.07.2010, 20:22
 
Den_spbДата: Среда, 07.07.2010, 22:39 | Сообщение # 289
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Quote (DK22Pac)
Как-бы проверка "умер-арест" должна выполняться после return из :WIN или :FAILED, но она выполняется на протяжении всей миссии? Туда же можно поставить ещё свои проверки (например - not Player.Money > 1000 (что будет значить если денег станет меньше на протяжении миссии то будет провал) ?
Если написать проверку один раз, то всё время она работать не будет - тут дело в другом: если игрок умер или арестован, то осуществляется return, соответствующий gosub @Start. В этом случае выполнение кода до блока успешного прохождения не доходит (ведь надпись "миссия пройдена" никогда не появляется, если игрок арестован или умер). Осуществляется проверка wasted_or_busted и осуществляется переход на блок провала. Другие проверки (на время, деньги и др.) надо осуществлять в цикле в теле миссии (см. примеры миссий в СБ справке).
Quote (DK22Pac)
Пишу в скрипте 0011: 1@ *= 4.355 после декомпиляции 0011: 1@ *= 4.1235

Попробовал скомпилировать это выражение у себя - число не изменилось. С чем может быть связан глюк у тебя - не знаю.
Есть замечание: для арифметических операций надо употреблять опкоды, которые точно соответствуют данной ситуации. Здесь ты применяешь опкод для глобальных переменных, хотя в опкоде у тебя локальная переменная. Проще и лучше не писать номер опкода (если переменная умножается на постоянную) - компилятор сам подставит нужный опкод. Т.е. попробуй написать 1@ *= 4.355 и скомпилировать код, если глюк останется, то можешь обратиться сюда: http://sannybuilder.com/forums/viewtopic.php?id=17&p=1
 
DK22PacДата: Четверг, 08.07.2010, 02:11 | Сообщение # 290
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Может это с настройками СБ связано? Я никогда не пишу код опкода если там не переменная а число.
Я уже не первый раз это замечаю, дробные числа уменьшаются, если писать например 4.0 то ничего не изменяется. Может это связано с тем что это гта3?


Сообщение отредактировал DK22Pac - Четверг, 08.07.2010, 02:11
 
Den_spbДата: Четверг, 08.07.2010, 02:17 | Сообщение # 291
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Попробуй скомпилировать такой вариант:
1@ *= 4355.0E-3
 
AlienДата: Четверг, 08.07.2010, 09:42 | Сообщение # 292
Группа: Проверенные
Сообщений: 1
Статус: Offline
Компилировать для gta3 надо только в режиме gta3. Если в VC и SA дробное в скриптинге представляется 4-байтовым float'ом, то в gta3 оно представляется 2-байтвым целым , которое надо разделить на 8.0, чтобы получить нужное число.
 
DK22PacДата: Четверг, 08.07.2010, 12:55 | Сообщение # 293
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Quote
Если написать проверку один раз, то всё время она работать не будет - тут дело в другом: если игрок умер или арестован, то осуществляется return, соответствующий gosub @Start. В этом случае выполнение кода до блока успешного прохождения не доходит (ведь надпись "миссия пройдена" никогда не появляется, если игрок арестован или умер). Осуществляется проверка wasted_or_busted и осуществляется переход на блок провала. Другие проверки (на время, деньги и др.) надо осуществлять в цикле в теле миссии (см. примеры миссий в СБ справке).

Спасибо, понял.

-----------------------------
Не работает 05ED: 0@ = thread 'MAIN' pointer на гта3
После декомпиляции
05ED: = thread
-----------------------------

У меня создалось такое ощущение, что эти опкоды поплутаны.

02F6: 9@ = cosine 7@
02F7: 8@ = sine 7@
???
------------------------------
Обьясни как действует этот опкод
86BD: not no_obstacles_between 0@ 1@ 2@ and 16@ 17@ 18@ solid 1 car 1 actor 1 object 1 particle 0

Он проверяет находится ли ЦЕНТР чего-либо (напр.мне надо обьект) или коллизия?
И параметры 1-0, это я так понимаю, 0 - вкл., 1 - выкл.?
И что такое solid.

Сообщение отредактировал DK22Pac - Вторник, 13.07.2010, 12:30
 
ole-docenkoДата: Суббота, 24.07.2010, 20:19 | Сообщение # 294
Группа: Проверенные
Сообщений: 11
Статус: Offline
Здравствуйте ! Я хотел спросить : как правильно создавать внешние скрипты ? А то я пишу скрипт (создание припаркованого транспортного средства)
компилирую его , помещаю в папку cleo , и в лучшем случае в игре неработает маркер сохранения , в худшем незапускаются ни сохранения ни новая игра ... Скажите , пожалуйста , что я делаю не так ?
 
d88Дата: Вторник, 27.07.2010, 19:05 | Сообщение # 295
Группа: Проверенные
Сообщений: 113
Статус: Offline
Quote (ole-docenko)
что я делаю не так ?

Как говорят некоторые пользователи - экстрасенсов здесь нет, не видя кода мы не можем знать что ты делаешь не так.
 
Den_spb1257Дата: Понедельник, 16.08.2010, 17:44 | Сообщение # 296
Группа: Администраторы
Сообщений: 6
Статус: Offline
@DK22Pac
В sascm.ini, поставляемом с SB 3.04, sin и cos перепутаны местами. В sascm.ini, поставляемом с клео4 это исправлено.
06BD проверяет, пересекается ли отрезок между двумя точками с объектом опред. типа. Те объекты, для которых выставлен 0, проверка будет игнорировать. Solid - статические объекты (объекты карты).
 
ole-docenkoДата: Суббота, 21.08.2010, 22:50 | Сообщение # 297
Группа: Проверенные
Сообщений: 11
Статус: Offline
Quote (d88)
Как говорят некоторые пользователи - экстрасенсов здесь нет, не видя кода мы не можем знать что ты делаешь не так.

Спасибо , я уже с этим разобрался ... Но возникла новая проблема: можете посмотреть что не так в этом скрипте ...

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---------------
thread -7  

:NONAME_4
wait 500  
if and
   $ONMISSION == 0  
    not Actor.Dead($PLAYER_ACTOR)
    Actor.DrivingVehicleType($PLAYER_ACTOR, #SECURICA)
    not Player.WantedLevel($PLAYER_CHAR) > 0
else_jump @NONAME_4  
Player.Money($PLAYER_CHAR) += 150000
Player.WantedLevel($PLAYER_CHAR) = 4
0A95: enable_thread_saving  

... и имеет ли он вообще право на жизнь ?

 
Den_spb1257Дата: Пятница, 27.08.2010, 14:20 | Сообщение # 298
Группа: Администраторы
Сообщений: 6
Статус: Offline
1.В конец кода необходимо добавить команду завершения скрипта 0A93, иначе будет вылетать игра.
2.thread -7 надо убрать.
3.Для большей надежности желательно добавить проверку на существование игрока после wait 500
IF
Player.Defined($Player_char)
JF @NONAME_4
 
d88Дата: Среда, 15.09.2010, 17:00 | Сообщение # 299
Группа: Проверенные
Сообщений: 113
Статус: Offline
Den_spb, я понимаю почему в клео нельзя использовать свои глобальные переменные, типа им там присваивается ID и из-за этого может возникнуть путаница при компиляции.
Но я не пойму почему тогда их можно использовать в мэйне? Разве здесь не та же ситуация?
 
Den_spbДата: Среда, 15.09.2010, 21:00 | Сообщение # 300
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
"... В main.scm все новые переменные получают имена при компиляции начиная с $10948, т.к. $10947 наибольшая переменная, использованная в оригинальном main.scm.

Теперь вернемся к CLEO-скриптам. Каждый раз, когда мы компилируем новый скрипт, компилятор не знает ничегошеньки про состояние main.scm и сколько переменных в нем использовалось. Он именует переменные с нуля каждый раз. ..."

 
Форум » Игры серии ГТА » Скриптинг » Вопросы по созданию КЛЕО-скриптов (Вопросы по опкодам, кодингу и др.)
Поиск: