Вопросы по созданию скриптов
| |
dim1988 |
Дата: Воскресенье, 19.07.2009, 18:43 | Сообщение # 1 |
Создатель
Группа: Администраторы
Сообщений: 2242
Статус: Offline |
Ответы на самые часто задаваемые вопросы
Как сохранить (компилировать) скрипт? Почему не следует использовать в клео скриптах глобальные переменные? Как узнать координаты мест, через какую прогу? Как поместить игрока в интерьер? Опкод, который открывает все дома в СА Запись в переменную ближайшего педа и проверка его модели Как заставить актёров ходить по определённым координатам Проверка нажатия определённой клавиши Пак пути с анимацией Как сделать так, чтоб 2 миссии следовали друг за другом? Как актёру дать оружие? Как создать транспорт Как создать жёлтый маркер для входа в интерьер? При компиляции выдаёт ошибку перехода на нулевой оффсет,что это и как исправить? Как транспорту присвоить определённый цвет? Что делать если пишет ожидалось 'x' параметров? Как написать цветной текст? Номера костей актёра Что такое gosub? Опкоды, связанные с созданием огня Как изменить оружие банд? Образец добавления в игру объектов Проверка нажатия клавиши в игре и список значений Путь или scmpath Как изменить цвет затемнения экрана? Как записать в переменную случайное число из интервала Список стилей боя Как привязать эффект к кости актёра? Как произвести действия, над педами, созданными игрой Как заменить модель игрока Как заставить актёра поднять руки, как при аресте Сброс анимации Как метнуть объект? Как из одного скрипта запустить другой?
+ файл от пользователя нашего сайта Absolute . Здесь перечислены все вопросы из этой этой темы и ответы на них. Скачать |
|
| |
dim1988 |
Дата: Воскресенье, 27.10.2013, 15:46 | Сообщение # 3721 |
Создатель
Группа: Администраторы
Сообщений: 2242
Статус: Offline |
И как ты себе это представляешь?
Mortal Kombat Conquest for GTA SA V2.0 GTA Invasion V2.0 Частная собственность |
|
| |
Nico |
Дата: Воскресенье, 27.10.2013, 16:41 | Сообщение # 3722 |
Группа: Проверенные
Сообщений: 91
Замечания: 0%
Статус: Offline |
Ну например Сделать значки Когда ты в ИХ бане чтобы было понятно где твои члены Банды подхордишь к ним и нажимаешь Кнопку Определённую и тебя наняли и ты Должен с ними ходить )))Добавлено (27.10.2013, 16:40) --------------------------------------------- Я думаю Прикольно было бы ) Добавлено (27.10.2013, 16:41) --------------------------------------------- dim1988, Ты разве не думал об этом? |
|
| |
dim1988 |
Дата: Воскресенье, 27.10.2013, 16:43 | Сообщение # 3723 |
Создатель
Группа: Администраторы
Сообщений: 2242
Статус: Offline |
Цитата Nico ( ) чтобы было понятно где твои члены Банды Они нигде не находятся. Педы появляются только при появлении к ним игрока.
Цитата Nico ( ) тебя наняли и ты Должен с ними ходить ))) Не знаю, может, и получится записать игрока в группу. Но есть проблема - я на знаю, как получить переменную этой группы.
Mortal Kombat Conquest for GTA SA V2.0 GTA Invasion V2.0 Частная собственность |
|
| |
Nico |
Дата: Воскресенье, 27.10.2013, 16:49 | Сообщение # 3724 |
Группа: Проверенные
Сообщений: 91
Замечания: 0%
Статус: Offline |
put_PLAYER_CHAR_in_group_GANG2 например ) Я знаю что они появляються при Игроке Ну да Пусть появляються вот и Тогда и наймутДобавлено (27.10.2013, 16:49) --------------------------------------------- А возможно ли Сделать CJ Педом ?? |
|
| |
RuXman |
Дата: Понедельник, 28.10.2013, 16:38 | Сообщение # 3725 |
Группа: Проверенные
Сообщений: 109
Замечания: 0%
Статус: Offline |
Цитата dim1988 ( ) Не получается - пробуй ещё, исправляй ошибки. А то так никогда и не научишься. Это первое правило скриптера. =)
Nico, я не понимаю тебя... Одно дело когда ТЫ управляешь бандой, ты царь, ты бог... че сказал, то они и сделали. А теперь ответь, как это стадо баранов с очень тупым ИИ сможет нанять Cj и приказывать ему... Цитирую...Цитата Nico ( ) тебя наняли и ты Должен с ними ходить ))) В том-то и дело, что с таким тупым ИИ только и можно просто ходить Даже не представляю как ты собираешь это сделать...
Мой вопросик... в обычной игре нажмешь на G и вся банда бежит к тебе. Как заставить делать что-то сразу всю банду? Так и не нашел опкод... Или придется сканировать ближайших педов и проверять в банде ли они? И только потом действие... Хотелось бы одним опкодом бандой повелевать...
Сообщение отредактировал RuXman - Понедельник, 28.10.2013, 16:49 |
|
| |
dim1988 |
Дата: Понедельник, 28.10.2013, 18:07 | Сообщение # 3726 |
Создатель
Группа: Администраторы
Сообщений: 2242
Статус: Offline |
Цитата RuXman ( ) Мой вопросик... в обычной игре нажмешь на G и вся банда бежит к тебе. Как заставить делать что-то сразу всю банду? Так и не нашел опкод... Или придется сканировать ближайших педов и проверять в банде ли они? И только потом действие... Хотелось бы одним опкодом бандой повелевать... Есть такой опкод 07B3: set_group $PLAYER_GROUP give_command 1
Команды: 0 и 1 - идут за лидером 2 и 4 - просто стоят 3 - болтают друг с другом 5 - лидер набирает людей в группу.
Mortal Kombat Conquest for GTA SA V2.0 GTA Invasion V2.0 Частная собственность |
|
| |
Nico |
Дата: Вторник, 29.10.2013, 22:09 | Сообщение # 3727 |
Группа: Проверенные
Сообщений: 91
Замечания: 0%
Статус: Offline |
RuXman, dim1988, Так значит можно сделать? Добавлено (29.10.2013, 22:09) --------------------------------------------- ау ? |
|
| |
RuXman |
Дата: Среда, 30.10.2013, 14:43 | Сообщение # 3728 |
Группа: Проверенные
Сообщений: 109
Замечания: 0%
Статус: Offline |
Цитата Nico ( ) Так значит можно сделать? Может и можно, но лично я не знаю как...
Цитата dim1988 ( ) 07B3: set_group $PLAYER_GROUP give_command 1 Плохо, что команд всего 5.Добавлено (30.10.2013, 14:43) --------------------------------------------- Ходят слухи.. ) Что в новых версиях SB появилась директива $OPCODE, которая позволяет создать свой опкод. Как это создать свой? И знаешь ли ты как пользоваться этой директивой? |
|
| |
dim1988 |
Дата: Среда, 30.10.2013, 22:21 | Сообщение # 3729 |
Создатель
Группа: Администраторы
Сообщений: 2242
Статус: Offline |
Цитата Nico ( ) Так значит можно сделать? Если про то, чтоб заставить CJ-я ходить по пути обычных педов, то вроде это 05DE: AS_actor 54@ walk_around_ped_path
Цитата RuXman ( ) Что в новых версиях SB появилась директива $OPCODE, которая позволяет создать свой опкод. Как это создать свой? И знаешь ли ты как пользоваться этой директивой? Есть, но не видел подробной информации об этом. У тебя же новая версия есть, поищи в справке.
Mortal Kombat Conquest for GTA SA V2.0 GTA Invasion V2.0 Частная собственность |
|
| |
Nico |
Дата: Среда, 30.10.2013, 23:45 | Сообщение # 3730 |
Группа: Проверенные
Сообщений: 91
Замечания: 0%
Статус: Offline |
Кто нибудь сомжешь Смастерить попробывать? |
|
| |
RuXman |
Дата: Четверг, 31.10.2013, 11:24 | Сообщение # 3731 |
Группа: Проверенные
Сообщений: 109
Замечания: 0%
Статус: Offline |
Допустим у меня есть 5 актеров и нужно с каждым из них сделать одно и тоже действие. Я не хочу писать 5 одинаковых опкодов в ряд. Можно ли сделать действие со всеми актерами сразу одним опкодом? Я слышал, что можно, вот пример опкода Код 089F: get_actor 35@(37@,2i) pedtype_to 519@
35@ и 37@ это переменные актеров как я понял. А вот что означает 2i ? Такие параметры я видел во многих опкодах.
Сообщение отредактировал RuXman - Четверг, 31.10.2013, 11:24 |
|
| |
DK22Pac |
Дата: Четверг, 31.10.2013, 14:16 | Сообщение # 3732 |
Группа: Проверенные
Сообщений: 205
Замечания: 0%
Статус: Offline |
Это синтаксис, который используется при обращении к элементу массива. 089F: get_actor <переменная-массив>(<индекс элемента в массиве>,<размер массива><тип элементов массиве>) pedtype_to 519@ Запись 0@(1@, 5f) означает, что мы обращаемся к элементу №1@ массива 0@ (который состоит из 5 float - элементов). Номер элемента (в данном случае - 1@) можно указать только через переменную. Нумерация элементов начинается с 0. (0 - первый элемент, 1 - второй и т.д.). Важно понять, что использование массива не расширяет кол-во переменных в скрипте. Например, выше рассмотренный массив (он состоит из 5 элементов) будет "занимать" переменные 0@ - 4@ включно. Код 0@ - 1ый элемент 1@ - второй элемент 2@ - третий элемент 3@ - четвертый элемент 4@ - пятый элемент Запись [code]1@ = 2 089F: get_actor 10@(1@,10i) pedtype_to 0@ Показывает обращение к третьему (нумерация с нуля) элементу массива 10@ (размерность которого - 10 элементов типа int (целое). Фактически, мы обращаемся к переменной 12@. Код 10@ - 1ый элемент 11@ - 2ой элемент 12@ - 3ий элемент Удобство массивов - в том, что мы можем в цикле менять индекс (номер) элемента, и, таким образом, применить код для всех элементов в массиве: Код for 0@ = 0 to 20 089F: get_actor 10@(0@,10i) pedtype_to 20@(0@,10i) end В данном примере, мы получаем педтип актёров, хендлы которых записаны в массиве 10@ (10 элементов), т.е. в переменных 10@ - 19@, в массив 20@ (переменные 20@ - 29@), а переменная 0@ выполняет роль счётчика. В SB есть свой синтаксис для работы с массивами. Он предполагает обьявление массива в блоке var...end: Код var 10@ : array 10 of Int 20@ : array 10 of Int end
Мои скрипты Grand Theft Auto III HD Development Team
Сообщение отредактировал DK22Pac - Четверг, 31.10.2013, 14:17 |
|
| |
RuXman |
Дата: Четверг, 31.10.2013, 14:58 | Сообщение # 3733 |
Группа: Проверенные
Сообщений: 109
Замечания: 0%
Статус: Offline |
Спасибо, надо бы поподробней почитать про массивы. |
|
| |
Nico |
Дата: Четверг, 31.10.2013, 19:26 | Сообщение # 3734 |
Группа: Проверенные
Сообщений: 91
Замечания: 0%
Статус: Offline |
Люди кто нибудь сможешь понять? |
|
| |
dim1988 |
Дата: Четверг, 31.10.2013, 20:40 | Сообщение # 3735 |
Создатель
Группа: Администраторы
Сообщений: 2242
Статус: Offline |
Цитата Nico ( ) Кто нибудь сомжешь Смастерить попробывать? Цитата Nico ( ) Люди кто нибудь сможешь понять? Формулируй понятнее, так может кто-то и поймёт, что ты говоришь
Mortal Kombat Conquest for GTA SA V2.0 GTA Invasion V2.0 Частная собственность |
|
| |
Nico |
Дата: Четверг, 31.10.2013, 21:34 | Сообщение # 3736 |
Группа: Проверенные
Сообщений: 91
Замечания: 0%
Статус: Offline |
dim1988, Наверное я думаю Нельзя сделать это Трудно очень ) А и ещё Надо опкод чтобы Когда я нанимаю кого нибудь ему ставилось Точность 100% и Анти ХедШот ))) |
|
| |
dim1988 |
Дата: Четверг, 31.10.2013, 22:13 | Сообщение # 3737 |
Создатель
Группа: Администраторы
Сообщений: 2242
Статус: Offline |
А почему бы не поискать эти опкоды в справке? Там всё есть.
Mortal Kombat Conquest for GTA SA V2.0 GTA Invasion V2.0 Частная собственность |
|
| |
RuXman |
Дата: Пятница, 01.11.2013, 11:15 | Сообщение # 3738 |
Группа: Проверенные
Сообщений: 109
Замечания: 0%
Статус: Offline |
Цитата Nico ( ) А и ещё Надо опкод чтобы Когда я нанимаю кого нибудь ему ставилось Точность 100% и Анти ХедШот ))) Код Actor.WeaponAccuracy(1@) = 100 Опкод устанавливает точность стрельбы в процентах актеру 1@ (в данном случае точность будет 100%)
Код 054A: set_actor $Actor immune_to_car_headshots 0 Устанавливает иммунитет к headshot'у актеру $Actor. Вроде нужно ставить 1, вместо 0, чтобы был иммунитет. Я точно не знаю, но этот опкод может работать только когда актер в авто. Если пальнуть ему в голову, то ничего не будет. Может будет работать и для пешеходов...
Эти опкоды я нашел в справке SB, в главе "Типы пешеходов"... так что дерзай.
Сообщение отредактировал RuXman - Пятница, 01.11.2013, 11:16 |
|
| |
dim1988 |
Дата: Пятница, 01.11.2013, 12:59 | Сообщение # 3739 |
Создатель
Группа: Администраторы
Сообщений: 2242
Статус: Offline |
Цитата RuXman ( ) Я точно не знаю, но этот опкод может работать только когда актер в авто. Так и есть. Чтоб было не только в машине, нужно использовать опкод 0446: set_actor 0@ immune_to_headshots 1
И проще пользоваться поиском опкодов. В СБ нажимаем Сервис->Инструменты->Поиск опкодов, далее вводим слово headshot и получаем список опкодов, где оно используется.
Mortal Kombat Conquest for GTA SA V2.0 GTA Invasion V2.0 Частная собственность |
|
| |
Nico |
Дата: Пятница, 01.11.2013, 15:29 | Сообщение # 3740 |
Группа: Проверенные
Сообщений: 91
Замечания: 0%
Статус: Offline |
RuXman, dim1988, Чуваки погодите Я немного понял Короче незнаю чем начать скрипт Нужно Если актёр в банде моей ему это даёться Скрипт смастерить сможете я пробывал не не то |
|
| |
dim1988 |
Дата: Пятница, 01.11.2013, 16:37 | Сообщение # 3741 |
Создатель
Группа: Администраторы
Сообщений: 2242
Статус: Offline |
Надо записать в переменную актёра, который находится в группе игрока: 092B: 0@ = group $PLAYER_GROUP member 0
Последний параметр - это номер члена группы. У того, кого ты первым добавил в банду, будет номер 0. У второго нанятого будет номер 1, и так далее.
Потом делаем проверку, обнаружен ли этот актёр. if Actor.Defined(0@)
Если обнаружен, то мы можем делать с ним что угодно.
Mortal Kombat Conquest for GTA SA V2.0 GTA Invasion V2.0 Частная собственность |
|
| |
Nico |
Дата: Пятница, 01.11.2013, 19:13 | Сообщение # 3742 |
Группа: Проверенные
Сообщений: 91
Замечания: 0%
Статус: Offline |
dim1988, Вот смотри я сделал чё то ))) {$CLEO .cs}
thread 'BANDA'
:BANDA_1 wait 0 092B: 0@ = group $PLAYER_GROUP member 0 092B: 1@ = group $PLAYER_GROUP member 1 092B: 2@ = group $PLAYER_GROUP member 2 092B: 3@ = group $PLAYER_GROUP member 3 092B: 4@ = group $PLAYER_GROUP member 4 092B: 5@ = group $PLAYER_GROUP member 5 092B: 6@ = group $PLAYER_GROUP member 6 if Actor.Defined(0@) Actor.Defined(1@) Actor.Defined(2@) Actor.Defined(3@) Actor.Defined(4@) Actor.Defined(5@) Actor.Defined(6@) jump @BANDA_1
:BANDA_2 0446: set_actor 0@ immune_to_headshots 0 0446: set_actor 1@ immune_to_headshots 0 0446: set_actor 2@ immune_to_headshots 0 0446: set_actor 3@ immune_to_headshots 0 0446: set_actor 4@ immune_to_headshots 0 0446: set_actor 5@ immune_to_headshots 0 0446: set_actor 6@ immune_to_headshots 0 jump @BANDA_2 end_threadДобавлено (01.11.2013, 19:08) --------------------------------------------- А просто токо Учусь со Скриптами =) Добавлено (01.11.2013, 19:13) --------------------------------------------- Не работает =( |
|
| |
dim1988 |
Дата: Суббота, 02.11.2013, 16:40 | Сообщение # 3743 |
Создатель
Группа: Администраторы
Сообщений: 2242
Статус: Offline |
Тебе же сказали, что чтоб дать иммунитет, надо ставить не 0, а 1. 0446: set_actor 0@ immune_to_headshots 1
И если у тебя несколько условий, надо писать не просто if, а if and. Но при таком коде скрипт иммунитеты у твоей банды появятся только когда в ней будет 7 человек.
Mortal Kombat Conquest for GTA SA V2.0 GTA Invasion V2.0 Частная собственность |
|
| |
Nico |
Дата: Суббота, 02.11.2013, 17:26 | Сообщение # 3744 |
Группа: Проверенные
Сообщений: 91
Замечания: 0%
Статус: Offline |
dim1988, Ну а как сделать то ? в чём прикол то? |
|
| |
dim1988 |
Дата: Суббота, 02.11.2013, 19:06 | Сообщение # 3745 |
Создатель
Группа: Администраторы
Сообщений: 2242
Статус: Offline |
В чём, делаем для каждого члена группы отдельно. Примерно так: Код 092B: 0@ = group $PLAYER_GROUP member 0 if Actor.Defined(0@) jf @1 0446: set_actor 0@ immune_to_headshots 1
:1 После метки :1 делаем то же самое, но уже для второго актёра. Потом для третьего, и так далее.
Mortal Kombat Conquest for GTA SA V2.0 GTA Invasion V2.0 Частная собственность |
|
| |
d13m1 |
Дата: Суббота, 02.11.2013, 19:56 | Сообщение # 3746 |
Группа: Проверенные
Сообщений: 10
Замечания: 0%
Статус: Offline |
{$CLEO .cs} 0000: 0@ = 0 // в эту перемунную будем записывать номер актера (отсчет начинаем с 0)
:banda // делаем метку точки, с которой будет начинаться наш цикл wait 0 092B: 1@ = group $PLAYER_GROUP member 0@ // записываем в переменную 1@ актера под номером 0@ 0@ += 1 // прибавляем к номеру актера 1, чтобы на следующем обороте цикла в переменную был записан актер //под следующим номером if 0@ > 7 // 7 - максимальное число актеров в банде, если прошлое действие превысило это число then // тогда 0@ = 0 // запускаем счетчик актеров заного end // обозначение конца действий после условия if Actor.Defined(1@) // ранее мы записали в переменную актера, проверяем существует ли он then // если существует то... 0446: set_actor 1@ immune_to_headshots 1 // 1-вкл. 0-выкл end jump @banda // и прыгаем в начало, чтобы цикл повторился
Сообщение отредактировал d13m1 - Суббота, 02.11.2013, 20:10 |
|
| |
Nico |
Дата: Суббота, 02.11.2013, 20:19 | Сообщение # 3747 |
Группа: Проверенные
Сообщений: 91
Замечания: 0%
Статус: Offline |
d13m1, Норм напиши скрипт Не понятно {$CLEO .cs} 0000: 0@ = 0 // в эту перемунную будем записывать номер актера (отсчет начинаем с 0)
:banda // делаем метку точки, с которой будет начинаться наш цикл wait 0 092B: 1@ = group $PLAYER_GROUP member 0@ // записываем в переменную 1@ актера под номером 0@ 0@ += 1 // прибавляем к номеру актера 1, чтобы на следующем обороте цикла в переменную был записан актер //под следующим номером if 0@ > 7 // 7 - максимальное число актеров в банде, если прошлое действие превысило это число then // тогда 0@ = 0 // запускаем счетчик актеров заного end // обозначение конца действий после условия if Actor.Defined(1@) // ранее мы записали в переменную актера, проверяем существует ли он then // если существует то... 0446: set_actor 1@ immune_to_headshots 1 // 1-вкл. 0-выкл end jump @banda // и прыгаем в начало, чтобы цикл повторился
Добавлено (02.11.2013, 20:12) --------------------------------------------- d13m1, скайп есть?
Добавлено (02.11.2013, 20:18) --------------------------------------------- Nico, Работает спс
Добавлено (02.11.2013, 20:19) --------------------------------------------- А как подбавить точней куда написать чтобы сделать меткость 100 % куда писать то?
Сообщение отредактировал Nico - Воскресенье, 03.11.2013, 13:11 |
|
| |
RuXman |
Дата: Воскресенье, 03.11.2013, 12:59 | Сообщение # 3748 |
Группа: Проверенные
Сообщений: 109
Замечания: 0%
Статус: Offline |
Код 092B: 0@ = group $PLAYER_GROUP member 0 Че вы фигнёй страдаете??? Делаете такие сложные проверки... Зачем? Этот опкод не требует проверки на существование актера. Сам лично проверял! То есть, независимо от того, есть у вас банда или нет, иммунитет будет даваться только тем актерам в банде, которые существуют. Короче игра не вылетит, если актер под определенным номером не найден, игра просто будет игнорировать все действия, которые мы пытаемся с ним сделать.
Цитата dim1988 ( ) И проще пользоваться поиском опкодов. В СБ нажимаем Сервис->Инструменты->Поиск опкодов, далее вводим слово headshot и получаем список опкодов, где оно используется. Я знаю, просто у меня нет такого опкода в списке...Добавлено (03.11.2013, 12:59) ---------------------------------------------
Цитата Nico ( ) А как подбавить точней куда написать чтобы сделать меткость 100 % куда писать то? После объявления переменной. То есть, как только мы записали в переменную какого-либо актера, можно сразу делать над ним любые действия.
Сообщение отредактировал RuXman - Воскресенье, 03.11.2013, 12:57 |
|
| |
Nico |
Дата: Воскресенье, 03.11.2013, 13:11 | Сообщение # 3749 |
Группа: Проверенные
Сообщений: 91
Замечания: 0%
Статус: Offline |
RuXman, Чё ты в скайп Не заходишь ? Добавлено (03.11.2013, 13:11) --------------------------------------------- у меня всё Норм работает
{$CLEO .cs} 0000: 0@ = 0 // в эту перемунную будем записывать номер актера (отсчет начинаем с 0)
:banda // делаем метку точки, с которой будет начинаться наш цикл wait 0 092B: 1@ = group $PLAYER_GROUP member 0@ // записываем в переменную 1@ актера под номером 0@ 0@ += 1 // прибавляем к номеру актера 1, чтобы на следующем обороте цикла в переменную был записан актер //под следующим номером if 0@ > 7 // 7 - максимальное число актеров в банде, если прошлое действие превысило это число then // тогда 0@ = 0 // запускаем счетчик актеров заного end // обозначение конца действий после условия if Actor.Defined(1@) // ранее мы записали в переменную актера, проверяем существует ли он then // если существует то... 0446: set_actor 1@ immune_to_headshots 1 // 1-вкл. 0-выкл end jump @banda // и прыгаем в начало, чтобы цикл повторился |
|
| |
RuXman |
Дата: Воскресенье, 03.11.2013, 13:15 | Сообщение # 3750 |
Группа: Проверенные
Сообщений: 109
Замечания: 0%
Статус: Offline |
Цитата Nico ( ) Чё ты в скайп Не заходишь ? Времени нет.
Разве я сказал, что эта проверка нерабочая? Она конечно же рабочая, но зачем писать 20 лишних строк, когда можно обойтись и без проверки?
Сообщение отредактировал RuXman - Воскресенье, 03.11.2013, 13:15 |
|
| |
|