[ Новые сообщения · Участники · Правила форума · Поиск · 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)

BoPoH
Друзья
11.11.14 02:13
Offline
Цитата Slivkin-Sergey ()
Меня интересует, как можно выделить один массив под флаги объектов и жить спокойно, если у объекта их явно >1 (взрывоустойчивость, физика...)? Сомневаюсь, что флаги хранятся в битах элементов, т.к. не припомню такого в БД адресов памяти.
Во-первых, обычно флаги в битах и хранятся. Во-вторых, в данном случае речь идёт не о флагах объектов, как о физических объектах, а как об объектах структуры.
Рассмотрим структуру tPoolObjectFlags:

Код
struct tPoolObjectFlags
{
         char seed : 7;                  // used to validate SCM handles
         char bIsFreeSlot : 1;
};
Она занимает один байт, т.к. первые 7 битов используются под поле seed, а последний - под флаг, из которого можно узнать, используется ли слот.
Отредактировал BoPoH - Вторник, 11.11.14, 02:16

Slivkin-Sergey
Модераторы
12.11.14 20:45
Offline
Ладно-с, потом на досуге поразмыслю над этим. Сейчас возник другой вопрос. Когда я ставлю актёру анимацию, а в опред. момент анимации даю ему оружие/объект, то он не воспроизводит анимацию вообще. Делает, только если сразу дать что-то. А сразу - вообще никак нельзя, в анимации персонаж берёт оружие со стола, если ему сразу дать ствол - глупо будет смотреться. Есть ли какая-то лазейка? Тактику давания невидимого объекта с последующим деланьем его видимым пробовал. Итог тот же - нет анимации, и всё тут.
Отредактировал Slivkin-Sergey - Среда, 12.11.14, 20:51

BoPoH
Друзья
13.11.14 02:22
Offline
Цитата Slivkin-Sergey ()
Когда я ставлю актёру анимацию, а в опред. момент анимации даю ему оружие/объект
Как ты даёшь ему объект? Опкодом 070A? Он же сам по себе как-бы воспроизводит актёру анимацию, не удивительно, что твоя анимация сбрасывается.
А вот насчёт оружия - довольно странно.
Можно попробовать дать оружие в самом начале, но "скрыть" его:

Код
01B9: set_actor 2@ armed_weapon_to 0
А в нужный момент тем же опкодом вернуть ему оружие в руки.
Отредактировал BoPoH - Четверг, 13.11.14, 02:22

Slivkin-Sergey
Модераторы
21.11.14 18:55
Offline
Отбой. Выгрузка и загрузка файла анимаций повторно всё решила 0_о.

Добавлено (21.11.14, 17:55)
---------------------------------------------
Ещё один вопросец возник. Возможно ли сделать так, чтоб игрок не мог двигаться, но при этом можно было вращать мышкой и оглядываться?

Отредактировал Slivkin-Sergey - Четверг, 13.11.14, 11:09

BoPoH
Друзья
22.11.14 13:34
Offline
Цитата Slivkin-Sergey ()
Возможно ли сделать так, чтоб игрок не мог двигаться, но при этом можно было вращать мышкой и оглядываться?
Можно, но только занопив процесс обработки эвентов клавиатуры и мыши. Т.е. нопим так:

Код
0A8C: write_memory 0x541DF5 size 0x90 value 5 virtual_protect 1
0A8C: write_memory 0x541DFF size 0x90 value 5 virtual_protect 1

А восстанавливаем так:

Код
0A8C: write_memory 0x541DF5 size 0xFEF346E8 value 4 virtual_protect 1
0A8C: write_memory 0x541DF9 size 0xFF value 1 virtual_protect 1
0A8C: write_memory 0x541DFF size 0xFEF69CE8 value 4 virtual_protect 1
0A8C: write_memory 0x541E03 size 0xFF value 1 virtual_protect 1

Slivkin-Sergey
Модераторы
22.11.14 14:02
Offline
Спасибо, полезно. Пригодится для всяких небольших сценок.
Кстати, ещё такой вопрос: LockInCurrentPosition замораживает текущий кадр анимации актёра, или только координаты и угол разворота? Просто интересно, как ты так нашаманил, что в том зимнем моде актёры застывают.
И ещё довольно интересно, как сделать проверку, выстрелил ли игрок в актёра, которая будет работать даже без прицела (!).

Блин, BoPoH, откуда ты знаешь столько адресов и функций?! Это же нереально столько всего держать в голове!
Отредактировал Slivkin-Sergey - Суббота, 22.11.14, 14:03

BoPoH
Друзья
22.11.14 17:29
Offline
Цитата Slivkin-Sergey ()
Кстати, ещё такой вопрос: LockInCurrentPosition замораживает текущий кадр анимации актёра, или только координаты и угол разворота?
Нет, LockInCurrentPosition никак не влияет на анимацию актёра, точнее даже наоборот - сбрасывает её.
Цитата Slivkin-Sergey ()
И ещё довольно интересно, как сделать проверку, выстрелил ли игрок в актёра, которая будет работать даже без прицела (!).
Можно так:

Код
051A:   actor 1@ damaged_by_actor $PLAYER_ACTOR

Хотя, это будет работать не только для выстрелов, а для любого урона, который актёр нанесёт другому актёру.

Цитата Slivkin-Sergey ()
Просто интересно, как ты так нашаманил, что в том зимнем моде актёры застывают.
О каком зимнем моде идёт речь?

Цитата Slivkin-Sergey ()
Блин, BoPoH, откуда ты знаешь столько адресов и функций?! Это же нереально столько всего держать в голове!
Я же не запоминаю адреса функций. Адреса я беру из базы в IDA. А помню я только примерное имя и расположение некоторых основных функций.

Slivkin-Sergey
Модераторы
22.11.14 22:17
Offline
Цитата BoPoH ()
О каком зимнем моде идёт речь?

Который ты делал для Alexey1999.

Добавлено (22.11.14, 19:19)
---------------------------------------------

Цитата BoPoH ()
051A:   actor 1@ damaged_by_actor $PLAYER_ACTOR

o_0 Это новый опкод CLEO 4? Первый раз его вижу.

Добавлено (22.11.14, 21:17)
---------------------------------------------
Кстати, ещё вопросец. Я когда хочу, чтобы актёр выполнял анимацию во время ходьбы, вызываю 0605 (в остальных случаях - 0812). Но он останавливается и отказывается идти дальше по окончанию анимации. Это так и задумано, или мою ГТАшку опять клинит?

Цитата BoPoH ()
0A8C: write_memory 0x541DF9 size 0xFF value 1 virtual_protect 1

Цитата BoPoH ()
0A8C: write_memory 0x541E03 size 0xFF value 1 virtual_protect 1

А это что за адреса, их же не нопили? Они как-то связаны с обработкой эвентов?

BoPoH
Друзья
23.11.14 06:58
Offline
Цитата Slivkin-Sergey ()
Который ты делал для Alexey1999.
Я ему лишь помог по части хранения данных в памяти. Основную часть скрипта он писал сам.
Кстати, там используется просто несколько рандомных анимаций "заморозки" для актёров.

Цитата Slivkin-Sergey ()
o_0 Это новый опкод CLEO 4? Первый раз его вижу.
Вовсе нет. Стандартный, игровой.

Цитата Slivkin-Sergey ()
Кстати, ещё вопросец. Я когда хочу, чтобы актёр выполнял анимацию во время ходьбы, вызываю 0605 (в остальных случаях - 0812). Но он останавливается и отказывается идти дальше по окончанию анимации. Это так и задумано, или мою ГТАшку опять клинит?
Попробуй 0A1A.

Цитата Slivkin-Sergey ()
А это что за адреса, их же не нопили? Они как-то связаны с обработкой эвентов?
Нопили. Смотри внимательно. Мы нопили 5 байтов, соответственно восстановить должны тоже 5.

Slivkin-Sergey
Модераторы
25.11.14 16:39
Offline
Цитата BoPoH ()
Кстати, там используется просто несколько рандомных анимаций "заморозки" для актёров.

Это как, анимация заморозки?
Цитата BoPoH ()
Я ему лишь помог по части хранения данных в памяти.

В смысле массив замороженных педов?
Цитата BoPoH ()
0A8C: write_memory 0x541E03 size 0xFF value 1 virtual_protect 1

Вот тут кстати точно не надо size и value менять местами?

BoPoH
Друзья
25.11.14 20:52
Offline
Цитата Slivkin-Sergey ()
Вот тут кстати точно не надо size и value менять местами?
Ох лооол :DD
Везде поменяй size и value местами biggrin
Эпик фэйл biggrin
Цитата Slivkin-Sergey ()
В смысле массив замороженных педов?
Да.
Цитата Slivkin-Sergey ()
Это как, анимация заморозки?
Ну он сделал несколько своих анимаций, где педы стоят в одной позе.

SINGER
Проверенные
26.11.14 17:07
Offline
Всем снова привет! 
Скачал несколько глобальных модов, а в них есть одна и та же проблема - отсутствие заработка (такси, медик, пожарный, дальнобойщик, мусор). 
Теперь вопрос: можно ли как-то эти мисси сделать в CLEO, чтобы потом посадив файл ив такой глоб. мод и поменяв несколько координат (куда везти пассажира (к примеру)) можно было выполнять мисси такси, мусора, медика и т.д. 
Думаю такие скрипты много кому пригодились бы. Если они существуют то сбросьте ссылку... ПЛИЗ 

Slivkin-Sergey
Модераторы
08.12.14 16:14
Offline
А у меня ещё одна проблема. Вот такой адрес нашёл:
Цитата
+0x588 = [dword] Текстура номерного знака (RwTexture)

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

Добавлено (08.12.14, 15:14)
---------------------------------------------
Кстати, я ещё где-то видел адрес или экзешник, с помощью которого можно отключить использование кодов.


wmysterio
Администраторы
Скриптер
08.12.14 16:32
Offline
Цитата Slivkin-Sergey ()
Кстати, я ещё где-то видел адрес или экзешник, с помощью которого можно отключить использование кодов.
Если дело касается чит-кодов, то отключаються они в Сан Андреас так:
Код
0A8C: write_memory 0x0053BFB8 size 4 value 0x90909090 virtual_protect 1
0A8C: write_memory 0x0053BFBC size 1 value 0x90 virtual_protect 1
Сам планировал в "Карьерист"а впихнуть, но нестал этого делать.

BoPoH
Друзья
10.12.14 22:54
Offline
Цитата Slivkin-Sergey ()
А то я ставлю опкод 0674, а он не работает. Не ставится нужный знак.
Это работает, если применить опкод перед созданием машины (а может даже и перед загрузкой модели, не уверен). Но номерной знак поменяется у всех машин такой модели.
В МТА и SAMP номерной знак для каждой отдельной машины делается при помощи хука в рендере машины. Там перед рендером ставится соответствующая текстура, рендерится машина, а потом стандартная текстура возвращается на место.

Sweeper
Проверенные
14.12.14 10:36
Offline
Что означает

Код
Actor.LockInCurrentPosition(8@)

и

Код
Actor.DestroyInstantly(27@)
?

Добавлено (14.12.14, 09:36)
---------------------------------------------
Что тут не так? Мне нужно создать 2 машины и грузовик в некоторых координатах, но корда подхожу в радиус создания, игра вылетает

Отредактировал Sweeper - Воскресенье, 14.12.14, 10:37

wmysterio
Администраторы
Скриптер
14.12.14 11:13
Offline
Цитата Sweeper ()
if and
00FE: not actor $PLAYER_ACTOR sphere 0 in_sphere -74.9369 74.8745 3.1172 radius 200.0 200.0 100.0
actor.Dead($PITER)
car.Destroy(1@)
car.Destroy(2@)
then
car.RemoveReferences(1@)
car.RemoveReferences(2@)
actor.RemoveReferences($PITER)
end
Вот здесь накосячено. В условиях ты удаляшь транспорты, а потом обращаешься к несуществующим машинам. Нужно так:
Код
if and   
   00FE: not actor $PLAYER_ACTOR sphere 0 in_sphere -74.9369 74.8745 3.1172 radius 200.0 200.0 100.0   
   actor.Dead($PITER)   
   //car.Destroy(1@) - здесь ПРОВЕРКА, например "wrecked"
   //car.Destroy(2@) - здесь ПРОВЕРКА, например "wrecked"
   then   
   car.RemoveReferences(1@)   
   car.RemoveReferences(2@)   
   actor.RemoveReferences($PITER)   
   end
Код
Actor.LockInCurrentPosition(8@)
Закрепляет актёра на одном месте.
Код
Actor.DestroyInstantly(27@)
Немедлено удаляет актёра из игры

Sweeper
Проверенные
14.12.14 11:41
Offline
Цитата wmysterio ()
Вот здесь накосячено. В условиях ты удаляшь транспорты, а потом обращаешься к несуществующим машинам.
Изменил, но все равно вылетает.


wmysterio
Администраторы
Скриптер
14.12.14 11:49
Offline
Цитата Sweeper ()
но все равно вылетает
Я понял. Нужно метку поставить:
Код
:cozdanie_2  
wait 0   
  if and   
  80FE: not actor $PLAYER_ACTOR sphere 0 in_sphere -74.9369 74.8745 3.1172 radius 200.0 200.0 100.0   
  actor.Dead($PITER)   
  car.wrecked(1@)   
  car.wrecked(2@)   
jf @cozdanie_2
  car.RemoveReferences(1@)   
  car.RemoveReferences(2@)   
  actor.RemoveReferences($PITER)   
  end
И нужно удалить return. Он там не нужен.

На счёт условий, то мне нужно уточнить: нужно выполнять RemoveReferences когда игрок не в зоне и убит актёр,транспорт 1@,2@ ?

Sweeper
Проверенные
14.12.14 12:00
Offline
Цитата wmysterio ()
На счёт условий, то мне нужно уточнить: нужно выполнять RemoveReferences когда игрок не в зоне и убит актёр,транспорт 1@,2@ ?
Ну, если я напишу, то ничего особо не изменится? Короче, если игрок не в зоне, то транспорт нужно убрать.

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