#26 Re: Sanny Builder и CLEO » Sanny Builder v3.xx » 15-09-2019 08:40

Заметил, что в поисковике опкодов в режиме III и VC первая строка пустая.

Давно хотел спросить, а почему нет ключевых слов "continue" и "break" в файле "keywords.ini"?

#27 Re: Sanny Builder и CLEO » Sanny Builder v3.xx » 14-09-2019 09:27

Seemann wrote:

у меня серьезные опасения, что с современными редакторами SB уже не потягаться и будет потенциально проще рассмотреть перенос дизассемблера и компилятора под капот готового редактора вроде VS Code.

Чем мне нравится SB, так это его независимость от сторонних редакторов, всё уже на месте и лёгкий вес установщика. Я лишь предложил немного упростить работу с макросами.

Не знаю стоит ли гнать компилятор по пути VS Code. И вес большой и тормозной он какой-то. Да и напоминает ситуацию с  MoonLoader, где новичок вот так сразу не разберётся что там и где настраивать. А в SB всё уже в коробке, два клика и всё готово, бери и пользуйся.

#28 Re: Sanny Builder и CLEO » Sanny Builder v3.xx » 10-09-2019 09:20

Догадывался, что нужно как-то так делать. Догадки подтвердились.

Как насчёт добавления панели/окна макросов, чтобы было как в "Панель элементов" в Visual Studio?

90286759.png

Удобно, когда они под рукой и одним кликом можно было вставить участок кода в нужное место. Как-то лень каждый раз нажимать CTRL+J и потом ещё искать нужный макрос стрелками в маленьком окошке, которое ещё и автоматически скрывается. Такое должно быть вообще раз плюнуть сделать. Сделать возможность прятать/показывать панель в меню.

#29 Re: Sanny Builder и CLEO » Sanny Builder v3.xx » 09-09-2019 20:36

Seemann wrote:

и он выполняется до тех пор, пока не встретит команду return

Для условий как определяется "true" и "false"?

#30 Re: Sanny Builder и CLEO » Sanny Builder v3.xx » 16-08-2019 09:16

XEPOMAHT007 wrote:

Мне быстрее перебрать всю базу вручную, чем изучать языки программирования

Пожалуй, ты прав. Почему-то подумал, что если я программист, то и все остальные здесь тоже программисты grin  Всё же перебор больших объёмов данными вручную та ещё работёнка.

Seemann wrote:

А можешь проверить те INI, на которые я дал ссылки, как у них с этим?

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

#31 Re: Sanny Builder и CLEO » Sanny Builder v3.xx » 15-08-2019 17:02

XEPOMAHT007 wrote:

нервов хватило

Ты чё вручную всё делал? wow А как же языки программирования, которые подобную рутину отлично выполняют?

XEPOMAHT007 wrote:

Потом перейти по полученному адресу в сам код

К какому адресу? Всё у меня открывалось без ошибок...

XEPOMAHT007 wrote:

Ну сам список всех опкодов вроде бы есть

Он не точный. Есть опкоды, которые для SA и VC(III) выполняют совершенно разные вещи и имеют разные параметры, но в списке в них одно и тоже имя. Да и INI-файлы взяты с генератора на gtagmodding.

#32 Re: Sanny Builder и CLEO » Sanny Builder v3.xx » 14-08-2019 19:38

XEPOMAHT007 wrote:

Sanny Builder выдаёт какую-то чушь в адресе неправильного/неизвестного опкода

Ни разу не сталкивался с этой "чушью" при открытии "main.scm" о_0.

XEPOMAHT007 wrote:

почему-то такую базу сделали только под СА

А ты помоги ему с этим вопросом. Он ведь не робот, чтобы всё самому делать.

#33 Re: GTA Modding » GTA IV on PC (Windows 10)? » 27-04-2019 21:23

Did this have problems? Create a local profile and play.

#34 Re: Вопросы по скриптингу » Не запускается Игра » 27-03-2019 21:18

Ostin wrote:

В чём может быть дело?

SB стал кривой или ОС Windows стала кривая. Игра с папки хоть запускается после нажатия F8? У меня - нет. Только если переименовать exe запускается. Не пользуйтесь F8 и запускайте с папки.

#35 Re: Вопросы по скриптингу » вопрос » 03-03-2019 18:00

04EF: release_animation "PED"

Это ни в кoeм cлyчae нельзя делать с анимацией "PED"

0AD2: 1@ = player $PLAYER_CHAR targeted_actor //IF and SET
if and
0184:   actor 1@ health <= 100

перед использованием актёра 1@ нужно проверить его существование, или использовать как проверку:

if
0AD2: 1@ = player $PLAYER_CHAR targeted_actor //IF and SET
then
    if
    0184:   actor 1@ health <= 100
    then
    // ...
    end
end

Ну и это собственно

10@ = 1

Это НЕ проверка, используйте == если нужно проверить, а не задать

#36 Re: Вопросы по скриптингу » Адреса, Структура объекта » 23-11-2018 20:50

TrushinVlad wrote:

Прошу, хоть пример какой приведите

Ну вот: Тык, Тык, Тык, Тык, Тык.

#37 Re: Вопросы по скриптингу » Один вопрос » 09-10-2018 16:43

Svyatogor2007 wrote:

Там дело в том, что игра прицеп удаляет рано, гораздо раньше автомобиля игрока

Если Вы думаете, что

0@ = Actor.CurrentCar($PLAYER_ACTOR)
29@ = Actor.CurrentCar($PLAYER_ACTOR)

захватывает прицеп и машину игрока, то это не так. Никакого прицепа там не запишется, а будет только машина игрока. Следовательно все проверки и действия с 29@ можно попросту убрать и использовать только 0@. Чем Вам не стирание лишних строк. Я не видел весь код, но тот что указан здесь можно сократить.

Svyatogor2007 wrote:

Меня чуток не поняли видимо

Я лично вообще не понял что нужно сделать smile Слишком мало подробностей, чтобы понять.

Svyatogor2007 wrote:

весь скрипт на 10кб поджал

Это ради чего? У меня мини-игра на 700+ строчек занимала 22 Кб. Не так у ж много. На быстродействие как-то не оказывает давления при грамотном подходе. Если это Cleo-скрипты, то можете добавить директиву {$NOSOURCE}, тогда ещё меньше получится. Для Cleo-миссий он вообще бесценен.

#38 Re: Вопросы по скриптингу » Один вопрос » 07-10-2018 14:59

Svyatogor2007 wrote:

можно ли одну и ту-же машину определить сразу в 2 переменные?

Можно хоть во все доступные smile

0@ = Actor.CurrentCar($PLAYER_ACTOR)
0085: 1@ = 0@ // (int)    <---- переменная 1@ будет указывать на машину 0@
0085: 2@ = 0@ // (int)    <---- переменная 2@ будет указывать на машину 0@
0085: 3@ = 0@ // (int)    <---- переменная 3@ будет указывать на машину 0@
...
0085: N = 0@ // (int)      <---- переменная N будет указывать на машину 0@

Если машина 0@ была удалена, то остальные переменные будут указывать "в никуда" и будут содержать только числа.

Svyatogor2007 wrote:

В общем будет ли оно такое работать?

Я не знаю, как Вы это себе представляете. В SB есть опкод, которые используются для прицепов. Можно это использовать, чтобы не танцевать с бубном:

// ...
0@ = Car.Create( #LINERUN, 0.0, 0.0, 0.0 )   
1@ = Car.Create( #ARTICT1, 10.0, 0.0, 0.0 )

:LOOP
wait 0

    if or
    856E:   not car 0@ defined
    856E:   not car 1@ defined
    then
    jump @CAR_NOT_FOUND
    end
    
    if
    07AB:   car 0@ has_attached_trailer 1@
    then
    0AD1: show_formatted_text_highpriority "Trailer attached!" time 1
    else
    0AD1: show_formatted_text_highpriority "Trailer NOT attached!" time 1
    end


jump @LOOP

:CAR_NOT_FOUND
// ...
Svyatogor2007 wrote:

компилятор пишет недостаточно параметров, ожидалось 4

Массив неправильно написан, уберите пробелы между скобок:

17@(15@,15i)
Svyatogor2007 wrote:

А тут вообще игра вылетает

Пишите комментарии того, что Вы делаете )

1) Что в было в массиве до вызова цикла?
2) Компоненты действительно можно прицепить к машине? Не на все тачки можно ставить компоненты.
3) Ещё заметил, что вы изменяете порядок счётчика 15@. Этого лучше избегать - может игра зависнуть, если цикл будет слишком долго выполнятся.

#39 Re: GTA Modding » help to generate parked car with components » 13-09-2018 11:25

TomasGL16 wrote:

I need help to generate auto parked with components like nitro or hydraulic

There is no such possibility. You must do this programmatically. Example:

{$CLEO}
0A95: enable_thread_saving // save car 0@ if need
014B: 0@ = init_parked_car_generator #SABRE color 86 0 1 alarm 0 door_lock 0 0 10000 at 2491.5752 -1680.6293 12.9457 angle 9093.2475
014C: set_parked_car_generator 0@ cars_to_generate_to 101 
1@ = 0 // check for added component

while true
wait 0
    if
    056E:   car 0@ defined
    then
        if and
        8119:   not car 0@ wrecked
        1@ == 0
        then  
        09E9: car 0@ add_single_nitro
        07FF: set_car 0@ hydraulics 1
        01C3: remove_references_to_car 0@ // if need
        1@ = 1
        end
    else
    1@ = 0
    end
end

#40 Re: Вопросы по скриптингу » Один вопрос » 19-08-2018 20:00

4lifeGTA wrote:

С твоей помощью получился рабочий скрипт, теперь все как надо

Что немного странно, так как gosub должен обязательно заканчиваться return-ом, а у тебя там прыжок стоит.

4lifeGTA wrote:

О, у тебя есть сайт, пойдука там пошарюсь...

Шарься, там есть полно информации. Только там акцент больше на MAIN.SCM, хотя сам скриптинг там ничем не отличается от CLEO, кроме некоторых моментов.

#41 Re: Вопросы по скриптингу » Один вопрос » 19-08-2018 13:37

4lifeGTA wrote:

хотя логически в нем все правильно

Это тот случай, когда знание побеждает логику. Переменная 32@ используется для таймеров и она постоянно изменяет своё значение. Классическая ошибка. Можно и так написать скрипт:

{$CLEO}
03BC: 0@ = create_sphere_at 2067.9 -1831.3 13.5 radius 7.0 
03BC: 1@ = create_sphere_at 1025.0 -1026.4 32.1 radius 7.0 
03BC: 2@ = create_sphere_at 487.6 -1738.1 11.1 radius 7.0
03BC: 3@ = create_sphere_at -1904.3 280.7 41.0 radius 7.0
03BC: 4@ = create_sphere_at -2425.6 1025.3 50.3 radius 7.0
03BC: 5@ = create_sphere_at 1971.7 2162.4 11.0 radius 7.0
03BC: 6@ = create_sphere_at -100.0 1114.2 19.7 radius 7.0
03BC: 7@ = create_sphere_at -1420.6 2587.9 55.8 radius 7.0
03BC: 8@ = create_sphere_at 720.1 -460.6 16.3 radius 7.0 

while true
wait 250
    if
    8256:   not player $PLAYER_CHAR defined
    then
    continue
    end
    01C0: 10@ = player $PLAYER_CHAR wanted_level
    if
    10@ == 0
    then
    continue
    end
    if or
    0100: actor $PLAYER_ACTOR in_sphere 2067.9 -1831.3 13.5 radius 7.0 7.0 7.0 sphere 1 in_car
    0100: actor $PLAYER_ACTOR in_sphere 1025.0 -1026.4 32.1 radius 7.0 7.0 7.0 sphere 1 in_car
    0100: actor $PLAYER_ACTOR in_sphere 487.6 -1738.1 11.1 radius 7.0 7.0 7.0 sphere 1 in_car
    0100: actor $PLAYER_ACTOR in_sphere -1904.3 280.7 41.0 radius 7.0 7.0 7.0 sphere 1 in_car
    0100: actor $PLAYER_ACTOR in_sphere -2425.6 1025.3 50.3 radius 7.0 7.0 7.0 sphere 1 in_car
    then
    gosub @WANTED_CLEAR
    end   
    if or
    0100: actor $PLAYER_ACTOR in_sphere 1971.7 2162.4 11.0 radius 7.0 7.0 7.0 sphere 1 in_car
    0100: actor $PLAYER_ACTOR in_sphere -100.0 1114.2 19.7 radius 7.0 7.0 7.0 sphere 1 in_car
    0100: actor $PLAYER_ACTOR in_sphere -1420.6 2587.9 55.8 radius 7.0 7.0 7.0 sphere 1 in_car
    0100: actor $PLAYER_ACTOR in_sphere 720.1 -460.6 16.3 radius 7.0 7.0 7.0 sphere 1 in_car
    then
    gosub @WANTED_CLEAR
    end     
    /* пишем другие проверки */                                                                   
end         

:WANTED_CLEAR
10@ *= 1000
0085: 9@ = 10@ // (int)
9@ -= 1
if
010A:   player $PLAYER_CHAR money > 9@
then
10@ *= -1
0110: clear_player $PLAYER_CHAR wanted_level
0109: player $PLAYER_CHAR money += 10@
end
return                      

#42 Re: Вопросы по скриптингу » Маркеры на радаре как в Madd Dogg's Rhymes » 29-07-2018 12:04

Grox wrote:

Жаль только, что, как я понял, капельки не работают, когда гг в машине.

Да. Во всяком случае я не смог повлиять на вид. Возможно, через игровую память можно это исправить, но это уже нужно более опытных спрашивать.

#43 Re: Вопросы по скриптингу » Маркеры на радаре как в Madd Dogg's Rhymes » 28-07-2018 21:00

Grox wrote:

Как сделать маркеры на радаре такие же, как в миссии Madd Dogg's Rhymes, где противники отмечаются так же, как и игрок?

Это типа в виде капелек? Вот статья, где указано как сделать маркеры в виде капелек.

#44 Re: GTA Modding » gta san andreas script » 18-06-2018 22:05

This is set up the relationship between two pedestrians types.
1 - it is relationship. The argument variants:
0 - respect
1 - like
2 - neutral
3 - dislike
4 - hate

8 and 0: pedestrian types. See Sanny Builder manual.

Briefly: Grove Street Families like the player (CJ).

#45 Re: Вопросы по скриптингу » Один вопрос » 13-06-2018 17:25

Kim wrote:

Еще раз помощь нужна, пишу вот так: 4@ = Actor.Create(24,#SFR1,-2443.4973, 501.8636, 30.0928). При этом создается два актера сразу.

Сам по себе он не создаёт несколько актёров. Скорее всего дубликат скрипта есть. По коду легче будет понять где что пошло не так. Покажите этот код, будем разгребать проблему smile

#46 Re: Вопросы по скриптингу » Один вопрос » 13-06-2018 12:44

kim wrote:

как написать скрипт на смену скина при загрузке?

Что-то типа этого:

:CJ_MODL
thread 'JC_MODL'
Model.Load(#WMYDRUG)  
038B: load_requested_models 
09C7: change_player $PLAYER_CHAR model_to #WMYDRUG
Model.Destroy(#WMYDRUG)

:CJ_MODL_CKECK
wait 0  
if
82F2:   not actor $PLAYER_ACTOR model == #WMYDRUG
jf @CJ_MODL_CKECK
jump @CJ_MODL

Если пишется в MAIN.SCM, то не забываем запустить поток.

#47 Re: Вопросы по скриптингу » Один вопрос » 13-06-2018 08:58

Kim wrote:

После сохранения скин остается, а после загрузки - нет.

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

Kim wrote:

При запуске новой игры он идет сначала, а если загрузить игру через сохранение, то откуда будет начинаться скрипт?

Вас это не должно беспокоить smile Там реализована своя система сохранения. Просто пишите код так, как будто скрипты будут выполняться за один подход.

#48 Re: Вопросы по скриптингу » Один вопрос » 10-06-2018 15:08

Kim wrote:

Можно подробнее как так сделать?

Можете почитать статью RRR-файлы в GTA SA на моём сайте. Там я более-менее рассказал как делать RRR-файлы. Маршрут будет гарантировать, что транспорт будет ехать строго по указанному маршруту.

#49 Re: Вопросы по скриптингу » Как узнать, что водитель автомобиля мертв? » 03-04-2018 21:47

Как-то так для всех водителей:

{$CLEO}
0000: NOP

while true
wait 0
    if
    0AE2: 0@ = random_vehicle_near_point 0.0 0.0 0.0 in_radius 10000.0 find_next 0
    then
        repeat
        wait 0
            if
            056E:   car 0@ defined
            then
            046C: 1@ = car 0@ driver
                if
                056D:   actor 1@ defined
                then
                    if
                    0118:   actor 1@ dead
                    then
                    gosub @action_driver
                    end
                end
            end
        until 8AE2: not 0@ = random_vehicle_near_point 0.0 0.0 0.0 in_radius 10000.0 find_next 1
    end
end

:action_driver
// что-делаем с мёртвым водилой
return

#50 Re: Вопросы по скриптингу » Реакция на взрыв авто » 03-02-2018 17:11

Есть проверка на существование взрывов в неком кубе. Это можно использовать для написания кода реакции педов на взрыв:

{$CLEO}
0000: NOP

while true
wait 0
    if
    8256:   not player $PLAYER_CHAR defined
    then
    continue
    end
    00A0: store_actor $PLAYER_ACTOR position_to 1@ 2@ 3@  
    0087: 4@ = 1@ // (float)
    0087: 5@ = 2@ // (float)
    0087: 6@ = 3@ // (float)
    1@ -= 30.0    
    2@ -= 30.0
    3@ -= 10.0    
    4@ += 30.0    
    5@ += 30.0
    6@ += 10.0
    if    
    8356:   not explosion_type -1 in_cube_cornerA 1@ 2@ 3@ cornerB 4@ 5@ 6@
    then
    continue
    end

    // далее ищем всех педов в нужном радиусе и даём им команду подбежать к машине и т.п.

end

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

Board footer

Powered by FluxBB