[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Форум » Игры серии GTA » GTA San Andreas » Вопросы по скриптингу Sanny Builder (Вы можете получить ответы на вопросы по SB)
Вопросы по скриптингу Sanny Builder
wmysterio
Администраторы
Скриптер
22.11.11 21:52
Offline
Если у вас возник вопрос по скриптингу Sanny Builder, обращайтесь! Мы постараемся решить вашу проблему wink Это ещё не значит, что все прям бросятся решать во чтобы то не стало, но ответ вы сможете вы получить как вариант решения или как невозможность или сложность решения.
УВАЖАЕМЫЕ ПОЛЬЗОВАТЕЛИ! ПРОСЬБА КОД СКРИПТОВ ПОМЕЩАТЬ В КОНСТРУКЦИЮ КОДА:

или

Также указывайте полный код скрипта, иначе причина ошибок может быть и не выявлена.
Прикрепления: 0248203.png(0.9 Kb) · 9085525.png(0.2 Kb)

Slivkin-Sergey
Модераторы
14.06.14 20:40
Offline
Постоянно забываю про функции в классах... Так что насчёт
Цитата BoPoH ()
int a;
int *b = &a; // Переменная b в данном случае будет являться указателем на переменную a
*b = 0x11111;

Будет ли это значить, что
Цитата Slivkin-Sergey ()
я помещу переменную в ячейку по адресу 0x11111

?

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

BoPoH
Друзья
15.06.14 02:00
Offline
Цитата Slivkin-Sergey ()
нужно читать адрес и потом что-то делать, или сразу прибавлять смещение?
К адресу нужно прибавлять смещение а потом читать/записывать.

Цитата Slivkin-Sergey ()
я помещу переменную в ячейку по адресу 0x11111
Нельзя поместить переменную куда-то в память. Да и смысла в этом нет. Можно изменить адрес указателя. Т.е. у тебя есть переменная-указатель "b". Исходя из того кода можно увидеть, что сперва мы присваиваем ей адрес переменной "a", а потом записываем по этому адресу (т.е. фактически, в переменную "a") значение 0x11111.

Slivkin-Sergey
Модераторы
15.06.14 08:18
Offline
Да ёпт, как так, опяь чего-то не то написал. Я говорил, что не помню точно синтаксис. Я имел ввиду:
Код
&b = 0x11111;

Sweeper
Проверенные
15.06.14 12:40
Offline
У меня возник вопрос из-за любопытства: реально ли в GTA SA добавлять свои машины, оружия, одежду не заменяя имеющихся?

BoPoH
Друзья
15.06.14 13:13
Offline
Цитата Slivkin-Sergey ()
&b = 0x11111;

Вспомнил, что есть такая вещь, как ссылка.
Код
int &b = a;

Ну или
Код
int &b = *(int *)0x11111;

Добавлено (15.06.14, 12:13)
---------------------------------------------

Цитата Sweeper ()
У меня возник вопрос из-за любопытства: реально ли в GTA SA добавлять свои машины, оружия, одежду не заменяя имеющихся?

Теоретически - да.
Отредактировал BoPoH - Воскресенье, 15.06.14, 13:12

Slivkin-Sergey
Модераторы
15.06.14 17:18
Offline
Цитата BoPoH ()
*(int *)0x11111;

Во! Я такую запись в иде уже раз сто встречал, только там было похлеще, типа *(void *)(DWORD * *(DWORD PTR aReset_to_)).
И что тогда обозначает запись
Цитата BoPoH ()
int &b = *(int *)0x11111;
?
Отредактировал Slivkin-Sergey - Воскресенье, 15.06.14, 17:19

BoPoH
Друзья
15.06.14 17:33
Offline
Цитата Slivkin-Sergey ()
И что тогда обозначает запись

Это значит, что, когда ты будешь писать
Код
b = 150;

то по адресу 0x11111 будет записано 150. По сути, это то, что тебе и было нужно (я так понял, по крайней мере) - переменная b будет как-бы находиться в памяти по адресу 0x11111. Ну, это как указатель, но "без указателя". Вот эти два действия идентичны:
Код
b = 150;
*(int *)0x11111 = 150;
Отредактировал BoPoH - Воскресенье, 15.06.14, 17:33

)))DiMoN(((
Пользователи
16.06.14 17:43
Offline
Здравствуйте! Мне очень понравились ваши уроки, по ним и учусь! Скажите, а можно сделать, чтобы при выстреле в педа, пед как бы стал замороженным, то есть терял контроль?
Если да, то какой опкод за это отвечает?
Заранее спасибо!

Михан500
Пользователи
16.06.14 18:34
Offline
Цитата )))DiMoN((( ()
Здравствуйте! Мне очень понравились ваши уроки, по ним и учусь! Скажите, а можно сделать, чтобы при выстреле в педа, пед как бы стал замороженным, то есть терял контроль? Если да, то какой опкод за это отвечает?
Заранее спасибо!
Как именно замороженным, не мог двигаться?

Slivkin-Sergey
Модераторы
16.06.14 18:45
Offline
Цитата )))DiMoN((( ()
Скажите, а можно сделать, чтобы при выстреле в педа, пед как бы стал замороженным, то есть терял контроль?

Можно.
Цитата )))DiMoN((( ()
Если да, то какой опкод за это отвечает?

Actor.LockInCurrentPosition.

)))DiMoN(((
Пользователи
16.06.14 19:24
Offline
Цитата Михан500 ()
Как именно замороженным, не мог двигаться?
да

Добавлено (16.06.14, 18:24)
---------------------------------------------

Цитата Slivkin-Sergey ()
Actor.LockInCurrentPosition.
а как сделать чтобы этот опкод сработал на педа после выстрела?

Slivkin-Sergey
Модераторы
16.06.14 20:12
Offline
Цитата )))DiMoN((( ()
а как сделать чтобы этот опкод сработал на педа после выстрела?

Пиши в тему "Заказ скриптов". Но вот опкод, который проверяет, получил ли пед повреждения от оружия:
Код
031D: actor $ACTOR_RYDER hit_by_weapon 51

Перед этим узнаёшь номер текущего оружия игрока.

)))DiMoN(((
Пользователи
16.06.14 20:37
Offline
Цитата Slivkin-Sergey ()
Перед этим узнаёшь номер текущего оружия игрока.
 спасибо, попробую что нить сделать

Добавлено (16.06.14, 19:20)
---------------------------------------------
51 означает тип оружия?

Добавлено (16.06.14, 19:37)
---------------------------------------------
Slivkin-Sergey, кажется я понял как сделать, но как педу назначить переменную?


Slivkin-Sergey
Модераторы
17.06.14 13:19
Offline
Цитата )))DiMoN((( ()
Slivkin-Sergey, кажется я понял как сделать, но как педу назначить переменную?

Поищи в Opcode Search Tool по слову targeted, там будет опкод, который заносит в переменную педа, в которого целится игрок.

)))DiMoN(((
Пользователи
18.06.14 17:39
Offline
Цитата Slivkin-Sergey ()
Поищи в Opcode Search Tool по слову targeted, там будет опкод, который заносит в переменную педа, в которого целится игрок.
Нашел, добавил в скрипт, но при компиляции выдаёт ошибку: "Неизвестный опкод 0AD2" как это можно исправить?

Добавлено (17.06.14, 12:58)
---------------------------------------------
Спасла переустановка Cleo

Добавлено (17.06.14, 13:07)
---------------------------------------------
Slivkin-Sergey, спасибо огромное!!! Всё получилось как и хотел!

Добавлено (18.06.14, 16:39)
---------------------------------------------
Slivkin-Sergey, а можно такое же провернуть и с транспортом?


Slivkin-Sergey
Модераторы
19.06.14 06:46
Offline
Цитата )))DiMoN((( ()
Slivkin-Sergey, а можно такое же провернуть и с транспортом?

Вот с транспортом врятли, опкода-то нет. Но, помнится, два два пак выкладывал где-то код на построение прямой от прицела и нахождения объекта, с которым она сталкивается. Кажется, где-то на vol-gta.

Sweeper
Проверенные
19.06.14 14:06
Offline
Как сделать анимацию, чтобы актеры пожали друг другу руки?
И ещё вопрос у меня через SB координаты и угол поворота игрока не вставляются, почему?
Отредактировал Sweeper - Четверг, 19.06.14, 14:13

wmysterio
Администраторы
Скриптер
19.06.14 14:26
Offline
Цитата Sweeper ()
И ещё вопрос у меня через SB координаты и угол поворота игрока не вставляются, почему?
Возможно Санник нужно запустить от имени администратора.
Цитата Sweeper ()
чтобы актеры пожали друг другу руки?
 Урок. Анимацию найти думаю не составит труда
Цитата
Как сделать анимацию
Точно не путём скриптинга smile

Slivkin-Sergey
Модераторы
19.06.14 15:23
Offline
Цитата wmysterio ()
Точно не путём скриптинга

Хм-м, а кости-то вращать можно smile .

wmysterio
Администраторы
Скриптер
19.06.14 20:24
Offline
Цитата Slivkin-Sergey ()
Хм-м, а кости-то вращать можно
Ну так это уже готовый "продукт" так сказать, а меня спрашивали о том, как создать анимацию путём скриптинга. Во всяком случаи я так понял слово "сделать" smile

Форум » Игры серии GTA » GTA San Andreas » Вопросы по скриптингу Sanny Builder (Вы можете получить ответы на вопросы по SB)
Поиск: