#51 Re: Sanny Builder и CLEO » Sanny Builder v3.xx » 13-11-2013 14:37

wmysterio wrote:
Voron295 wrote:

@wmysterio, может права администратора нужны?

Я пробовал по разному - всё также. Возможно опять Windows 8 диктует свои условия.

Я еле уговорил себя перейти на семёрку после XP из-за 6 гигов оперативки, но win8...

#52 Re: Sanny Builder и CLEO » Sanny Builder v3.xx » 12-11-2013 21:40

@wmysterio, может права администратора нужны?

#53 Re: Sanny Builder и CLEO » Sanny Builder v3.xx » 10-11-2013 19:51

Seemann wrote:

@Voron295 - в настройках указан глобальный путь к файлу INI или относительный

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

#54 Re: Вопросы по скриптингу » Один вопрос » 10-11-2013 19:48

alex323 wrote:

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

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

alex323 wrote:

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

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

#55 Re: Вопросы по скриптингу » Один вопрос » 10-11-2013 10:11

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

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

#56 Re: Sanny Builder и CLEO » Sanny Builder v3.xx » 10-11-2013 00:08

Чисто случайно обнаружил баг - если открыть текстовый файл сани билдером (ПКМ -> Открыть с помощью), то он будет ругаться на то, что SASCM.INI не был найден и компиляция невозможна. Вероятно, SASCM.INI ищется исходя из рабочей папки, а не из папки с программой.

#57 Re: Вопросы по скриптингу » Один вопрос » 18-10-2013 20:23

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

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

#58 Re: Вопросы по скриптингу » Один вопрос » 18-10-2013 16:14

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@ для всего остального.

#59 Re: Вопросы по скриптингу » Один вопрос » 17-10-2013 20:42

d88 wrote:

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

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

#60 Re: Вопросы по скриптингу » Один вопрос » 17-10-2013 16:01

d88 wrote:

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

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

#61 Re: Вопросы по скриптингу » Один вопрос » 17-10-2013 13:57

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

#62 Re: Вопросы по скриптингу » Один вопрос » 16-10-2013 19:00

d88 wrote:

Я просто говорил, что когда я использую в скрипте глобальные стринговые переменные, то всё работает отлично, а когда локальные - ничего не работает. Если дело не в размере, то как тогда это объяснить?

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

d88 wrote:

Я когда-то пробовал создать в одном скрипте глобальную переменную а в другом проверить её значение. И ничего не получилось. Кроме того, в клео у меня не получилось работать даже с теми глобальными переменными, которые я сам создал в main.scm.

Я уже сказал, что если ты просто назовёшь переменные как хочешь, то они получат какой-нибудь произвольный номер из незанятых (ну, почти). Компилятор не знает, какой номер получила переменная в майне, чтобы потом использовать его в скрипте клео для того же имени. Почитай в справке раздел CLEO 3 Code Library -> FAQ по CLEO 3. Там есть вопрос "Почему в CLEO-скриптах нельзя использовать глобальные переменные? Что тогда использовать?" и подробный ответ на него.

d88 wrote:

Появились ещё такие вопросы:
1. Есть проверка, что экран потемнел полностью? Проверка fading срабатывает сразу же, когда он ещё начинает темнеть.
2. Можно ли записать в переменные координаты положения камеры?
3. Как заставить игрока повернуться спиной к камере?

1)

0A8D: 0@ = read_memory 0xB6FC24 size 4 virtual_protect 0

Когда экран полностью тёмный, значение 0@ будет равно 255. Тип - float.

2) Опкод 068D

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

068D: get_camera_position_to 0@ 1@ 2@
068E: get_camera_target_point_to 2@ 3@ 4@
0063: 2@ -= 0@
0063: 3@ -= 1@
0604: get_Z_angle_for_point 2@ 3@ store_to 4@

В данном случае, угол запишется в переменную 4@. Я не проверял, но должно работать.

#63 Re: Вопросы по скриптингу » Один вопрос » 16-10-2013 05:40

d88 wrote:

Тем и удобнее, что в глобальную можно записать текст длиной больше 4 символов, а в локальные, как оказалось, нельзя.

В глобальную переменную точно так же можно записать текст длиной 4 символа. А если больше - символы пишутся в следующие переменные, как и в случае с локальными. Суть в том, что глобальные переменные на самом деле не имеют названий и тоже нумеруются, как и локальные. Просто для них были введены имена, чтобы было удобнее с ними работать. К примеру, можно посмотреть соответствие имён и номеров в файле CustomVariables.ini. Когда ты используешь именные переменные в скрипте, то СБ смотрит в этот файл и находит там последний использованный номер и даёт твоей переменной следующий номер. Если в другом скрипте тоже будет использоваться глобальная переменная, то и номер у неё будет тот же. Таким образом, оба скрипта будут использовать одну и ту же переменную под разными именами. Это может вызвать конфликт между скриптами.
Поэтому я тебе и посоветовал использовать номерные глобальные переменные (если уж ты так хочешь их использовать) при чём, брать номера побольше.

#64 Re: Вопросы по скриптингу » Один вопрос » 15-10-2013 17:41

d88 wrote:

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

Не советую использовать стринговые переменные в опкодах анимации. Бывают названия анимаций больше 15 символов.
Вообще глобальные переменные использовать можно, но тогда лучше брать номера побольше (>$9000).

#65 Re: Вопросы по скриптингу » Один вопрос » 15-10-2013 14:26

d88 wrote:

Можно ли в cleo использовать глобальные стринговые переменные (v$)? Я пробовал локальные, но они не работают, текст в них не записывался. Но как только я заменил их на глобальные, всё стало работать как надо.

Локальные тоже прекрасно работают. Синтаксис типа этого - 0@v. Стоит учесть, что стринговая переменная по сути занимает несколько последовательных переменных. В каждой переменной может храниться до 4-ёх символов. Однако текст из тех же 4-ёх символов будет занимать место под 5 символов (т.е. уже 2 переменные), так как нужен ещё и завершающий нуль. Таким образом, максимальный размер текста, хранящегося в стринговой переменной равен 15 символам. Он будет занимать 4 последовательных переменных. Если ты, к примеру, используешь 0@v и запишешь туда текст из 15 символов, то ты не имеешь права использовать переменные 0@ 1@ 2@ 3@ в своём скрипте, после присвоения текста, иначе они перезапишут твой текст.
А вообще, лучше использовать возможности CLEO 4 для работы со строками - выделять память под нужную длину строки и пользоваться функцией format для присвоения текста.

#66 Re: Вопросы по скриптингу » Один вопрос » 09-10-2013 21:30

RitrS wrote:

а что на счет урона? Как мне его записать в @? Мне нужен урон от кулаков, от оружия и урон получаемый игроком.

Разве что отслеживанием кол-ва ХП. Других вариантов не вижу.

#67 Re: Вопросы по скриптингу » Один вопрос » 08-10-2013 13:02

RitrS wrote:

и какие цвета можно использовать и их номера:

0169: set_fade_color 0 0 0

Здесь указывается цвет в формате RGB. Т.е. первый параметр - красный цвет, второй - синий, третий - зелёный. Максимум для каждого цвета - 255.
Вот, например, неплохой сайт для получения необходимых параметров RGB - http://www.colorspire.com/rgb-color-wheel/

#68 Re: Вопросы по скриптингу » Один вопрос » 07-10-2013 14:42

RitrS wrote:

А как на счет собейта? Там ведь замедление возможно.

В последних версиях тоже? Тогда не знаю.

#69 Re: Вопросы по скриптингу » Один вопрос » 05-10-2013 22:47

RitrS wrote:
Voron295 wrote:
RitrS wrote:

Как сделать что бы скрипт работал в сампе?

А что у тебя за скрипт?

да замедление времени.
В сингле работает а в сампе нет. Что то посоветуешь?

Хах) А как ты себе представляешь замедление времени в мультиплеере? Такое в принципе невозможно. Точнее, в ранних версиях сампа это работало. Но в последних версиях изменение скорости игры исключено.

d88 wrote:

Можно сделать, чтоб игрок стал неуправляем, как при использовании опкода 01B4:, но чтоб при этом камера не поворачивалась к игроку, и если игрок выполняет анимацию, то она не прерывалась?

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

#70 Re: Вопросы по скриптингу » Один вопрос » 01-10-2013 17:59

RitrS wrote:

Как сделать что бы скрипт работал в сампе?

А что у тебя за скрипт?

#71 Re: Sanny Builder и CLEO » CLEO 4 для GTA San Andreas » 13-09-2013 20:11

@d88, плагин NewOpcodes от DK22Pac вроде содержит необходимые тебе опкоды для работы с mp3-файлами.

#72 Re: Вопросы по скриптингу » Один вопрос » 04-09-2013 17:14

XEPOMAHT007 wrote:

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

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

XEPOMAHT007 wrote:

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

Скорости, на которых способны работать ЦП и видеокарта, значительно превышают скорость работы того же жёсткого диска.

XEPOMAHT007 wrote:

В третьих стриминг закорочен в экзэшнике под минимальную конфигурацию ПК, на топовом ПК и середнячке GTA3 будет работать одинаково (например известны случаи, когда GTA3 устанавливалась на крутой игровой комп и безбожно на нём тормозила).

Я тебе указал на твою неправоту относительно скорости поиска в оперативной памяти и скорости поиска в файловой системе, а не на то, что игра оптимизирована как-то не так.

#73 Re: Вопросы по скриптингу » Один вопрос » 04-09-2013 14:10

XEPOMAHT007 wrote:

На стриминг особо не влияет (поиск текстуры в памяти компенсируется поиском TXD в IMG архиве, может быть поиск в оперативе будет происходить чуточку быстрее, х.з.).

А вот это ты зря. Если сравнивать скорости жёсткого диска и оперативной памяти, то разница выйдет примерно в 30 раз. Пропускная способность SATA 2.0 - 300 МБайт/сек. Пропускная способность DDR3 - около 10 ГБайт/сек. Всё завязывается на количестве оперативной памяти и файле подкачки - абсолютно всё в оперативной памяти не хранится - то, что не используется, сливается в файл подкачки на жёстком диске. Когда слитое снова необходимо - оно подгружается обратно в оперативную память. Поэтому, чем меньше объём оперативной памяти, тем чаще компьютеру приходится обращаться к жёсткому диску, что существенно снижает скорость работы приложения - возникают зависания в "тяжёлых" играх и т.п.
Википедия о файле подкачки

#74 Re: Вопросы по скриптингу » Один вопрос » 29-08-2013 11:23

Ну, загрузка текстур происходит один раз в память. Интенсивное использование текстур не означает их постоянную загрузку. Они уже есть в памяти и к ним игра обращается в нужное время.

#75 Re: Вопросы по скриптингу » Один вопрос » 26-08-2013 20:26

@Yoda, что за "дженерик", я что-то не понял?

Board footer

Powered by FluxBB