#4376 17-10-2013 13:57

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

d88 wrote:

Спасибо за ответы, вроде всё работает.

Voron295 wrote:

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

Я тут поэкспериментировал с переменными, и вот что получилось. У меня там проверка -   not Actor.Animation($PLAYER_ACTOR) == 29@v. Т.е. скрипт должен идти дальше только кодга игрок завершит анимацию. Так вот, когда я подставлял переменные 0@v и 1@v, скрипт шёл дальше раньше времени. Когда я подставил 2@v, то всё стало работать как надо. Я проверил мэйн, там использовалась переменная 28@v. С ней тоже работает нормально, так же как и с 29@v. А вот с 30@v получается то же самое, что и с @v и 1@v. Другие значения не проверял.

Следует заметить, что если проверка используется сразу же после воспроизведения этой же анимации, то она не сработает. Нужен разрыв хотя бы в один кадр (wait 0). Как я уже сказал, нельзя использовать эти же переменные для работы с другими типами данных. К примеру, такой код работать не будет:

0@v = "LOWRIDER"
0@ = 25
1@ = 36
04ED: load_animation 0@v

Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#4377 17-10-2013 14:51

d88
Registered: 15-12-2009
Posts: 254
Website

Re: Один вопрос

Вайт там есть, эта проверка у меня в цикле, так что без него там всё равно никак.

Offline

#4378 17-10-2013 16:01

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

d88 wrote:

Вайт там есть, эта проверка у меня в цикле, так что без него там всё равно никак.

Пробовал ставить задерку побольше, сразу после воспроизведения?
Я тоже использовал подобные конструкции, но обычно ставил после воспроизведения задержку в 50-100 мс.


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#4379 17-10-2013 20:29

d88
Registered: 15-12-2009
Posts: 254
Website

Re: Один вопрос

Voron295 wrote:
d88 wrote:

Вайт там есть, эта проверка у меня в цикле, так что без него там всё равно никак.

Пробовал ставить задерку побольше, сразу после воспроизведения?
Я тоже использовал подобные конструкции, но обычно ставил после воспроизведения задержку в 50-100 мс.

Поставил на 100. Но вроде и так нормально работало.

Оказалось, что при использовании 29@v не со всеми анимациями проверка срабатывает. Пока заменил на 28@v, стало лучше. Но возможно, ещё выяснится, что и с ней не всё так гладко. Может, действительно не стоит использовать стринговые переменные для кодов с анимациями, но если делать вообще без них, то придётся делать отдельную проверку для каждой анимации, а это будет очень запарно да и просто неудобно.


Кто-нибуль работал с кодами рестарта? Я пытаюсь сделать, чтоб, например, когда игрок погиб или был арестован в пустыне, то он появлялся в том месте, которое я указал опкодами 016C: и 016D:. Это срабатывало только иногда, в основном он появлялся в местах, указанных в мэйне. Я так понимаю, 016E: отменяет рестарт в определённых координатах. Я попробовал применить его ко всем координатам рестартов, которые нашёл в мэйне. Но после этого игрок стал появляться возле полицейского участка в Лас Вентурасе либо возле больницы в том же городе. Можно ли решить эту проблему? Кстати, нашёл ещё опкод 09FF:, но не очень понял, зачем он нужен.

Offline

#4380 17-10-2013 20:42

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

d88 wrote:

Оказалось, что при использовании 29@v не со всеми анимациями проверка срабатывает. Пока заменил на 28@v, стало лучше.

Если использовать 29@v, то можно использовать только тексты длиной до 11 символов, так как переменные 32@ и 33@ являются таймерами и изменяют своё значение. "Безопасные" стринговые переменные - от 0@v до 28@v.


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#4381 18-10-2013 13:04

d88
Registered: 15-12-2009
Posts: 254
Website

Re: Один вопрос

Voron295 wrote:
d88 wrote:

Оказалось, что при использовании 29@v не со всеми анимациями проверка срабатывает. Пока заменил на 28@v, стало лучше.

Если использовать 29@v, то можно использовать только тексты длиной до 11 символов, так как переменные 32@ и 33@ являются таймерами и изменяют своё значение. "Безопасные" стринговые переменные - от 0@v до 28@v.

Про 0@v и 1@v я уже говорил, что с ними тоже "небезопасно".
А можно узнать, в какую пересенную можно вписать самое большое число символов? Вдруг 28@v таковой не является?
Разве стринговые переменные могут быть таймерами? Они же для текста предназначены.

Offline

#4382 18-10-2013 16:14

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

d88 wrote:

Разве стринговые переменные могут быть таймерами? Они же для текста предназначены.

Ты так ничего и не понял. По сути, типов переменных в скриптинге нет. Одну и ту же переменную можно использовать и для целых чисел и для дробных и для текста. Если ты используешь 0@v, значит ты, по сути, используешь 0@. Конечно у тебя 0@v и 1@v не будут "безопасными", если ты будешь записывать в 0@ и 1@ что-либо (целое или дробное число, или хендл какой-нибудь).
Я ведь тебе сказал, что каждая переменная - 4 байта. И целые и дробные числа занимают по 4 байта, поэтому они используют только одну переменную для хранения значения.
Если же ты используешь переменные для хранения текста, то в каждой переменной может поместиться не более 4 символов. Записывая в 0@v текст, к примеру, длиной 15 символов, ты занимаешь переменные 0@, 1@, 2@ и 3@, так как весь текст занимает 15 байтов + 1 байт знака завершения строки (ноль), а в каждой переменной может быть не больше 4 байтов. Всего байтов в 4 переменных - 16. У нас строка как раз занимает эти 16 байтов.
Можно сказать, что 0@v и 0@ - это одно и то же. Если ты запишешь в 0@v = "A", а потом возьмёшь значение из 0@ как целочисленное, то получишь номер ASCII буквы A.

Из этого всего следует, что нужно следить за тем, чтобы переменные, используемые для хранения чисел/хендлов, не пересекались со стринговыми переменными. Использовал 0@v для хранения строки? Не используй 0@, 1@, 2@, 3@ для всего остального.


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#4383 18-10-2013 18:20

DK22Pac
From: Ukraine
Registered: 26-03-2010
Posts: 447
Website

Re: Один вопрос


Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Offline

#4384 18-10-2013 18:54

d88
Registered: 15-12-2009
Posts: 254
Website

Re: Один вопрос

Voron295 wrote:

Ты так ничего и не понял.

Ну да, мне даже после всего вышесказанного так и не понятно, что же произойдёт, если в 32@v или в 33@v попробовать записать текст.

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

Offline

#4385 18-10-2013 19:33

Seemann
Registered: 07-08-2006
Posts: 2,156

Re: Один вопрос

Хм, какой-то странный плагиат на этом форуме. Оригинал статьи тут
http://sannybuilder.com/forums/viewtopi … 4124#p4124

Что это за тип gtasbigfoot? Я знаю только одного скриптера из "Russia, Irkutsk" - себя smile)

edit: там на форуме все мои сообщения накопированы отсюда)

Last edited by Seemann (18-10-2013 19:35)

Offline

#4386 18-10-2013 20:23

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

Ну да, мне даже после всего вышесказанного так и не понятно, что же произойдёт, если в 32@v или в 33@v попробовать записать текст.

Смотря какого размера текст записать. По сути, с каждым выполнением скриптового движка (после каждого wait) значение 32@ и 33@ изменяется. Как минимум, в них нельзя хранить текст дольше одного кадра. Если использовать их только в текущем кадре (между wait'ами), то в 32@v можно записать 7 символов, а в 33@v - 3 символа. Если записать больше - зайдёшь за пределы памяти локальных переменных. Наверняка вылетит.

Last edited by Voron295 (18-10-2013 20:23)


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#4387 19-10-2013 19:31

Picnic
Registered: 19-10-2013
Posts: 3

Re: Один вопрос

Всем доброго времени суток!
Ребята, я пока что только начинаю разбираться с SB, поэтому не ругайтесь за нубские вопросы smile
Вот в SB есть такой опкод (Vice City)

02D4: car 0@ turn_off_engine

которым можно принудительно заглушить двигатель автомобиля. Вопрос собственно в том, как можно также принудительно завести двигатель, не выходя из автомобиля??
Есть ли для Vice City опкод аналогичный опкоду 0918: для San Andreas?? Или, возможно ли реализовать старт двигателя записью значений в какие либо адреса функций gta-vc.exe (с помощью оп-кода 05DF:) ?? Если да, то подскажите пожалуйста, как найти эти адреса, потому как сам я с IDA пока что "на вы" smile Заранее спасибо!

Offline

#4388 10-11-2013 09:30

d88
Registered: 15-12-2009
Posts: 254
Website

Re: Один вопрос

Можно ли скриптом заставить объект вращаться? Я пробовал экспериментировать с анимациями для объектов (для баскетбольного мяча вроде была подходящая), но не получилось. При попытке присвоить анимацию некоторым объектам игра вообще вылетает, а с другими просто ничего не происходит.

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

Offline

#4389 10-11-2013 10:11

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

05A1: set_object 225@ rotation_velocity_about_an_axis 0.0 151@ 0.0 through_center_of_body
05A2: set_object 82@ rotation_velocity_about_an_axis $TEMPVAR_FLOAT_2 0.0 $TEMPVAR_FLOAT_1 through_center_of_mass

Анимация для объектов работает только для тех объектов, для которых она была сделана (в большинстве случаев). Не каждый объект можно анимировать - только те, которые своей структуре содержат дамми или вообще имеют скелет.


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#4390 10-11-2013 15:07

alex323
Registered: 10-11-2013
Posts: 3

Re: Один вопрос

SASCM.ini не найден  Компилятор будет не работать. ЧТо делать ?

Offline

#4391 10-11-2013 15:10

alex323
Registered: 10-11-2013
Posts: 3

Re: Один вопрос

Хочу сделать, чтобы в определенных координатах воспроизводился звук
{$CLEO .cs}
create_thread @Sound
:Sound
03CF: load_wav 11802 as 3

:Sound2
wait 0 ms
if
03D0: wav 3 loaded
jf @Sound2
03D7: set_wav 3 location 316.3344 -1774.5536 4.7667
wait 134000 ms
040D: unload_wav 3 
jump @Sound



Написал такой вот скрипт, но после чего игра перестала запускаться. Где я ошибся ?

Offline

#4392 10-11-2013 15:23

Lego
Registered: 18-08-2009
Posts: 24
Website

Re: Один вопрос

чисто в плане логики - зачем выгружать звук и тут же его загружать?

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

Offline

#4393 10-11-2013 15:29

alex323
Registered: 10-11-2013
Posts: 3

Re: Один вопрос

Lego wrote:

чисто в плане логики - зачем выгружать звук и тут же его загружать?

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

Скажи, что нужно исправить

Offline

#4394 10-11-2013 19:48

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

alex323 wrote:

Написал такой вот скрипт, но после чего игра перестала запускаться. Где я ошибся

Насколько я знаю, CLEO не поддерживает потоки. В этом ошибка.

alex323 wrote:

SASCM.ini не найден  Компилятор будет не работать. ЧТо делать ?

Сперва открой SB, а потом открывай файлы (txt или cs). Это баг, я уже о нём отписал в соответствующую тему. Сам вчера с ним столкнулся.


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#4395 13-11-2013 15:42

d88
Registered: 15-12-2009
Posts: 254
Website

Re: Один вопрос

Voron295 wrote:
05A1: set_object 225@ rotation_velocity_about_an_axis 0.0 151@ 0.0 through_center_of_body
05A2: set_object 82@ rotation_velocity_about_an_axis $TEMPVAR_FLOAT_2 0.0 $TEMPVAR_FLOAT_1 through_center_of_mass

Анимация для объектов работает только для тех объектов, для которых она была сделана (в большинстве случаев). Не каждый объект можно анимировать - только те, которые своей структуре содержат дамми или вообще имеют скелет.

С этими опкодами если сначала задать объекту угол поворота, то при вращении он меняется.

Offline

#4396 13-11-2013 18:00

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

d88 wrote:

С этими опкодами если сначала задать объекту угол поворота, то при вращении он меняется.

Эм... а что тебе именно нужно? Для чего тебе?


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#4397 14-11-2013 09:16

d88
Registered: 15-12-2009
Posts: 254
Website

Re: Один вопрос

Voron295 wrote:
d88 wrote:

С этими опкодами если сначала задать объекту угол поворота, то при вращении он меняется.

Эм... а что тебе именно нужно? Для чего тебе?

Ты Мортал Комбат знаешь? Я делаю мод МК для ГТА. Есть, к примеру, модель стального веера Китаны, так вот я хочу сделать возможность бросать этот объект, но он должен вращаться на лету.

Offline

#4398 14-11-2013 13:20

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

d88 wrote:

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

А чем тебе мешает изменение угла поворота объекта? Как ты себе представляешь вращение объекта без изменения угла поворота объекта?
Нет, есть, конечно, вариант с анимированием объекта... Но это уж если осилишь...


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#4399 16-11-2013 16:12

d88
Registered: 15-12-2009
Posts: 254
Website

Re: Один вопрос

Voron295 wrote:

А чем тебе мешает изменение угла поворота объекта?

Видимо, так и придётся сделать. Просто хотел сначала поискать способ, чтоб вращение было плавным.

Voron295 wrote:

Как ты себе представляешь вращение объекта без изменения угла поворота объекта?

Мне казалось, это естественно. С какой стати этот угол поворота меняется? Объект ведь должен просто вращаться вокруг одной из своих осей, а не повернуться одновременно по ещё одной.

Last edited by d88 (16-11-2013 16:14)

Offline

#4400 16-11-2013 21:43

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

d88 wrote:

Мне казалось, это естественно. С какой стати этот угол поворота меняется? Объект ведь должен просто вращаться вокруг одной из своих осей, а не повернуться одновременно по ещё одной.

Видимо мы друг-друга не поняли. Ты считаешь, что "угол поворота" - это угол в горизонтальной плоскости (ось Z). Суть в том, что при вращении по оси X (я так понял, именно это тебе нужно) вращение по оси Z на самом деле не происходит. Но функция получения угла Z объекта использует такой метод, который возвращает неправильное значение угла из-за вращения по другой оси (по идее он меняется на угол с разницей в 180 градусов).

d88 wrote:

Просто хотел сначала поискать способ, чтоб вращение было плавным.

Я так и не понял, почему вращение тем способом, который я указал, не плавное? Что ты имеешь ввиду?

Способ в любом случае есть. Можно даже вручную это делать опкодом 0453, если правильно его использовать.


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

Board footer

Powered by FluxBB