Дата: Воскресенье, 10.01.2010, 14:46 | Сообщение # 1301
Школьник I
Группа: Пользователи
Сообщений: 14
Статус: Offline
Lost_Forever, спасибо большое)))))
Добавлено (10.01.2010, 14:46) --------------------------------------------- Lost_Forever, а не можешь дать ссылочку на эти проги??хотя бы на одну из них.....
Дата: Воскресенье, 10.01.2010, 20:50 | Сообщение # 1305
Школьник I
Группа: Пользователи
Сообщений: 14
Статус: Offline
и ещё у меня почему то с помощью Anim Manager анимации не открываются...я вроде делаю все правильно,выбираю путь до папки gta sa>>anim и там много файлов...а как их открыть???
Дата: Понедельник, 11.01.2010, 14:38 | Сообщение # 1306
Мажор сайта
Группа: Команда CG
Сообщений: 338
Статус: Offline
Загрузи модель в начале что бы просматривать анимации,Preview => Load Model и загружаешь модель в формате .dff ,можно использовать любую модель,любого персонажа.
Далее в папке anim открываешь файл anim.img,там будут файлы анимаций в формате .ifp,выбираешь любой,открываешь его(два щелчка лкм) далее выбираешь анимацию и проигрываешь)
А можно поставить человека в определенное место??что б он просто стоял..
Можно,для того что бы создать актера нужно загрузить его модель,после чего сделать проверку(Model.Available) и создать актера.
Вот,я написал небольшой скрипт,там всё написано:
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---------------
0000:NOP
:Actor // начало потока wait 0 // ждём 0 сек. , бывает если не подождать , то может вылететь ... Model.Load(#WMYBU) 038b: load requested models // загружаем ранее объявленные модели ... jump @Actor_2
:Actor_2 wait 0 // ждём 0 мс , если не напишем , может вылететь . if //если Model.Available(#WMYBU) // проверка на загруженность jf @Actor_2 //если нет, идём в начало wait 0 actor.create(1@,5,#WMYBU, 2497.3948 -1676.3357 13.3399) // создаём актёра 1@-хэндл актера,5 - тип пешехода, #WMYBU - модель, X Y Z - координаты. jump @Actor_3
:Actor_3 wait 0 // Ждем 0 сек if //Если Actor.Dead(1@) // Актер 1@ мертв jf @Actor_3 //если нет то идем на метку Actor_3 Actor.DestroyWithFade(1@) //Удаляем актера Model.Destroy(#WMYBU) //Выгружаем модель 0A93: end_custom_thread
Вот что долнжо получится:
Если тебе нужно создать специального актера(Свит,Смоук,Райдер и т.п) то читай статью в SB Manual'e
Вот типы пешеходов (Взяты из SB Help'a):
0 Игрок 1 1 Игрок 2 2 Игрок 3 3 не используется 4 мужчина 5 женщина 6 полицейский 7 гангстер 1 (Ballas) 8 гангстер 2 (Grove Street Families) 9 гангстер 3 (Los Santos Vagos) 10 гангстер 4 (San Fierro Rifa) 11 гангстер 5 (Da Nang Boys) 12 гангстер 6 (Mafia) 13 гангстер 7 (Mountain Cloud Triad) 14 гангстер 8 (Varrio Los Aztecas) 15 гангстер 9 (unused) 16 гангстер 10 (unused) 17 чувак, который продаёт наркоту 18 врач 19 пожарник 20 криминал 21 не нашёл 22 проститутка 23 специальный, как Смоук, Свит, Райдер и другие, которые используются в миссиях. 24 миссия 1 25 миссия 2 26 миссия 3 27 миссия 4 28 миссия 5 29 миссия 6 30 миссия 7 31 миссия 8
А вообще если ты хочешь побольше узнать о создании актеров то зайди в SB,нажми F12 => Документация по SCM =>GTA SA => Типы пешеходов,ниже,после типов пешеходов есть статья по созданию актеров.
Lost_Forever, выскажу пару замечаний. Во-первых, модели желательно загружать непосредственно перед применением, а удалять сразу после использования. В данном случае модель можно удалить из памяти сразу после того, как актер создан. Во-вторых, касательно ожидания (wait) информация в СБ справке устарела. Ожидание не обязательно ставить после каждой метки, но оно необходимо в циклически выполняющихся участках кода, иначе игра зависнет. Правило такое - если выполнение кода началось с какой-то метки, а потом вернулось наверх на эту же метку, то за это время должна была быть выполнена хотя бы одна команда wait. От того, что вы добавите лишний wait вреда конечно не будет, особенно в небольшом коде. Но если вы добавляете много лишних wait-ов, то выполнение кода будет сильно замедляться. Дело в том, что все установленные в игру скрипты выполняются по очереди, при команде wait происходит переключение на следующий скрипт в очереди, а выполнение текущего скрипта приостанавливается. В-третьих, перед тем, как проводить какие-то операции над объектами, актерами и транспортными средствами, настоятельно рекомендуется делать проверку на существование, т.к. попытка провести операцию над несуществующим игровым объектом (он может быть удален игрой или другим скриптом) приведет к вылету. Вообще, простейший код для создания актера выглядит так:
Дата: Четверг, 14.01.2010, 14:27 | Сообщение # 1311
Генерал Профессор
Группа: Проверенные
Сообщений: 1540
Статус: Offline
Quote (Den_spb)
В-третьих, перед тем, как проводить какие-то операции над объектами, актерами и транспортными средствами, настоятельно рекомендуется делать проверку на существование
Но если мы сами создали объек, актера или транспорт, то нет сомнений в его существовании. Куда они денутся, ну разве что мы сами удалим сведения о них.
Дата: Четверг, 14.01.2010, 15:05 | Сообщение # 1312
Мажор сайта
Группа: Проверенные
Сообщений: 396
Статус: Offline
Снова повторяю, что актер/объект/транспорт могут быть удалены другим скриптом или самой игрой (например, игра всегда удаляет уничтоженный транспорт, даже если он записан в переменную). Так что советую всегда добавлять проверки - труда это особого не составит и на работу скрипта влиять не будет, зато вы будете уверены в том, что игра не вылетит из-за вашего скрипта или из-за конфликта вашего скрипта с другим скриптом.
Дата: Вторник, 19.01.2010, 15:37 | Сообщение # 1315
Школьник I
Группа: Пользователи
Сообщений: 14
Статус: Offline
Всем привет) У меня назрел такой вопрос: можно ли скриптом прицепить партикл эффект к какой-либо части автомобиля, в частности хочу, чтоб при нажатии кнопки к дамми выхлопной трубы цеплялся дым... Я такой опкод в СБ через поиск искал, но, то ли криво искал, то ли чё, вощем не нашёл. Но в принципе, я думаю, такое возможно, ведь при включении нитро огоньки у трубы появляются. Кто нидь знает какой опкод это делает?
Сообщение отредактировал Семён - Вторник, 19.01.2010, 15:38
Дата: Вторник, 19.01.2010, 18:51 | Сообщение # 1317
Мажор сайта
Группа: Проверенные
Сообщений: 396
Статус: Offline
Quote (Семён)
Всем привет) У меня назрел такой вопрос: можно ли скриптом прицепить партикл эффект к какой-либо части автомобиля, в частности хочу, чтоб при нажатии кнопки к дамми выхлопной трубы цеплялся дым... Я такой опкод в СБ через поиск искал, но, то ли криво искал, то ли чё, вощем не нашёл. Но в принципе, я думаю, такое возможно, ведь при включении нитро огоньки у трубы появляются. Кто нидь знает какой опкод это делает?
Семён, это уже давно сделано. Посмотрите код Alien-a в этой теме: http://sannybuilder.com/forums/viewtopic.php?id=304 В 066C подставляете название нужного партикл-эффекта (см. справку к SB: Документация по СКМ - ГТА СА - Эффекты частиц)
Lost_Forever, перед одиночной проверкой if можно не ставить, да и 0000:NOP в external-скрипте не нужен совсем можно просто написать: {$CLEO} thread 'name'
:name wait 0 и т.д.
да, и когда пишешь сам код, можно не писать Model.Load(#ARMY). вместо этого лучше писать #ARMY.load - так проще, по-моему лишние wait'ы в коде + ошибка во втором thread'е вместо if надо if and + выгрузить анимацию забыл
Дата: Четверг, 21.01.2010, 08:08 | Сообщение # 1325
Генерал Профессор
Группа: Проверенные
Сообщений: 1540
Статус: Offline
Quote (Drift_Legend)
0000:NOP в external-скрипте не нужен совсем можно просто написать: {$CLEO}
Либо thread 'name' , либо 0000:NOP. Если их не писать, то при компиляции напишет "переход на нулевой офсет" Ну по крайней мере от thread 'name' пользы нет, а если не написать 0000:NOP, то игра может пойти сначала.
Дата: Четверг, 21.01.2010, 15:52 | Сообщение # 1329
>>>Drift Master Class<<<
Группа: Проверенные
Сообщений: 287
Статус: Offline
X-k0fr, все верно, если написать 0109: player $PLAYER_CHAR money += -1500 то при выполнении какого-либо условия у игрока вычитается n-ное количество денег (в данном случае 1500$) Colt_8, для этого совсем не обязательно прописывать в переменную количество денег актёра опкодом 3@ = Player.Money($PLAYER_CHAR) d88, все время пишу thread 'name' и ни разу не писал 0000: NOP - и все без проблем и новых игр, а про переход на нулевой оффсет я знаю, но все равно спс
Дата: Четверг, 21.01.2010, 22:22 | Сообщение # 1337
Школьник I
Группа: Пользователи
Сообщений: 36
Статус: Offline
ЧИтЕР, Проверь строку! 0102: actor $PLAYER_ACTOR in_sphere 2570.9224 -1723.6279 1.6406 radius 2570.9224_10 -1723.6279_10 -1723.6279 sphere 1 stopped_on_foot Красное это размер сферы а не коорденаты ее места расположения. Отсебятину писать нежелательно.
И еще СБ выдовая подобную ошибку ставит курсор на ту строку где эта ошибка!
GTA SA Лучшая игра!!!!!!!!
Сообщение отредактировал clac8 - Четверг, 21.01.2010, 22:42
Дата: Четверг, 21.01.2010, 22:50 | Сообщение # 1338
>>>Drift Master Class<<<
Группа: Проверенные
Сообщений: 287
Статус: Offline
еще ошибка во втором thread'е: if and и 05E2: actor $MyAct attak_actor $PLAYER_ACTOR' // проверь внимательно Еще не плохо бы добавлять проверки, типа Player.Defined($PLAYER_CHAR)
Дата: Суббота, 23.01.2010, 11:01 | Сообщение # 1343
Профессор
Группа: Проверенные
Сообщений: 459
Статус: Offline
Quote (M@trix)
И можно ли дать ему миниган и чтоб он с него мог стрелять из машины?
Врядли можно из минигана из машины стрелять Я один раз пытался заставить чувака из минигана на корточках стрелять
Quote (M@trix)
Дайте опкод создающий машину с определ. актёром
Создавай мшину и суй в нее актера командой 0129: 41@ = create_actor_pedtype 23 model #SPECIAL02 in_car 35@ driverseat или 01C8: 40@ = create_actor_pedtype 23 model #SPECIAL01 in_car 35@ passenger_seat 0 return
Дата: Суббота, 23.01.2010, 12:54 | Сообщение # 1349
Мажор сайта
Группа: Проверенные
Сообщений: 396
Статус: Offline
Любой опкод состоит из номера с двоеточием, описательной части и параметров. В описательной части вы можете писать что хотите или можете вообще её не писать - билдер её не воспринимает (поэтому и менять знак больше на меньше или плюс на минус в описательной части абсолютно бессмысленно). Главное, чтобы был написан номер опкода (с двоеточием)* и были записаны все параметры. При записи параметров необходимо следить за правильностью их количества, типа и порядка перечисления. Теперь - что делать, если есть только проверка А > Б, а нам нужна проверка А < Б ? Делается очень просто:
Code
if A > B then else // тут пишем, что надо делать, если А < B end
Или с метками:
Code
A > B jump @Metka // тут пишем, что надо делать, если А < B :Metka
-------------------------------- *-номер опкода можно не писать для наиболее распространённых опкодов (wait, математические операции с числами и т.п.). При употреблении опкодов, производящих математические операции с числами билдер распознает знак операции и самостоятельно назначает нужный опкод. Так, запись 1@ += 1.0 при компиляции будет автоматически заменена на 000B: 1@ += 1.0 , а запись 2@ -= 2.0 будет заменена на 000F: 2@ -= 2.0
Сообщение отредактировал Den_spb - Суббота, 23.01.2010, 13:07