#1 Вопросы по скриптингу » Патроны в пикапе при подборе » 09-03-2020 18:36

wmysterio
Replies: 0

Привет, форум. Вот и моя очередь задать вопрос по скриптингу ) В общем, суть такова, что я хочу изменить количество патронов в пикапе, которые создаются при смерти актёров. Собственно, изменить то я изменил, но клавиша TAB при смене оружия в слоте начинает бесится и даёт либо стандартное количество патронов, либо пикап не исчезает и даёт бесконечное количество патронов (по новому количеству патронов примерно за 250 ms). Сам скрипт:

{$CLEO}   
if
0AA9:   is_game_version_original
jf @end_script

// вспомогательный мусор: начало
Model.Load(#SAWNOFF)
038B: load_requested_models

0376: 0@ = create_random_actor_at 2484.2766 -1672.1981 13.3359
01B2: give_actor 0@ weapon 26 ammo 100
0A27: set_actor 0@ death_pickups_persist 1
Model.Destroy(#SAWNOFF)
// вспомогательный мусор: конец


while true
wait 0 // 250

    for 0@ = 0 to 620        
        0A90: 1@ = 0@ * 32          // int [INDEX IN POOL] 
        0A8E: 1@ = 0x9788C0 + 1@    // int [ADDRESS IN POOL]  

        0A8E: 2@ = 1@ + 4           // int [OBJECT HANDLE]
        0A8D: 2@ = read_memory 2@ size 4 virtual_protect 0  

        if
        2@ == 0                     // <if object not exist>
        then
        continue
        end   

        0A8E: 2@ = 1@ + 28          // int [TYPE]
        0A8D: 2@ = read_memory 2@ size 1 virtual_protect 0

        if
        not 2@ == 4                 // <if type is not deadman pickup>
        then
        continue
        end    
     
        0A8E: 2@ = 1@ + 24          // int [MODEL ID]
        0A8D: 2@ = read_memory 2@ size 2 virtual_protect 0  
        4@ = 0                      // <NEW COUNT>   
        if
        2@ == #SAWNOFF // 350
        then                  
        4@ = 2  
        end  
        if
        2@ == #CHROMEGUN // 349
        then                  
        4@ = 3  
        end
        if or
        2@ == #DESERT_EAGLE // 348
        2@ == #SHOTGSPA// 351
        2@ == #SNIPER// 358
        then                  
        4@ = 4  
        end    
        if
        2@ == #CUNTGUN // 357
        then                  
        4@ = 6  
        end
        if or
        2@ == #COLT45 // 346
        2@ == #SILENCED// 347
        then                  
        4@ = 11
        end        
        if
        2@ == #MP5LNG // 353
        then                  
        4@ = 14    
        end     
        if
        2@ == #MICRO_UZI // 352
        then                  
        4@ = 21    
        end
        if
        2@ == #M4 // 356
        then                  
        4@ = 22   
        end  
        if
        2@ == #TEC9 // 372
        then                  
        4@ = 33    
        end 
        if
        2@ == #AK47 // 355
        then                  
        4@ = 41     
        end      
        0A8E: 3@ = 1@ + 8           // int [COUNT]      
        //0A8D: 2@ = read_memory 3@ size 4 virtual_protect 0  
        //if
        //003B:   2@ == 4@  // (int)
        //then
        //continue
        //end 
        0A8C: write_memory 3@ size 4 value 4@ virtual_protect 0
    end    
end

:end_script
0ACE: show_formatted_text_box "GAME VERSION IS NOT ORIGINAL"
0A93: end_custom_thread

Откуда берёт игра количество новых патронов при смене оружия в слоте?

#2 Re: Вопросы по скриптингу » Как создать свой .scm скрипт? » 11-11-2019 11:43

Krackeen_777 wrote:

Помогите, пожалуйста, кто знает, как это сделать!

Либо MAIN.SCM, либо CLEO-скрипты. Определись что конкретно ты пытаешься сделать. В MAIN никаих CLEO-скриптов ты не добавишь. Их надо будет переписать специально под MAIN: заменить некоторые опкоды, директивы удалить и писать стартер для скрипта.

#3 Re: Sanny Builder и CLEO » [Sanny Builder] БЕСПЛАТНЫЙ КОД (OPEN SOURCE) » 24-10-2019 21:05

MatiDragon wrote:

"Почему они не делают Sanny Builder открытым исходным кодом?"

Может чтобы не было всякой блевотной херни, как с Linux?

И "бесплатный код" — НЕ РАВНО "open source".

#4 Re: Sanny Builder и CLEO » Sanny Builder v3.xx » 21-10-2019 09:25

Seemann wrote:

Спасибо за детальные репорты , пофикшено.

Спасибо за оперативность wink

Seemann wrote:

Если еще что-то обнаружишь, пиши.

Хорошо.

#5 Re: Sanny Builder и CLEO » Sanny Builder v3.xx » 20-10-2019 18:59

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

***

Нашел ещё один баг... На этот раз пострадали внешние скрипты. Добавил рапорт в баг-трекер.

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

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

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

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

Seemann wrote:

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

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

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

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

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

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

90286759.png

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

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

Seemann wrote:

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

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

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

XEPOMAHT007 wrote:

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

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

Seemann wrote:

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

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

#11 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.

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

XEPOMAHT007 wrote:

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

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

XEPOMAHT007 wrote:

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

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

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

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

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

Ostin wrote:

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

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

#15 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

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

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

TrushinVlad wrote:

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

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

#17 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-миссий он вообще бесценен.

#18 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@. Этого лучше избегать - может игра зависнуть, если цикл будет слишком долго выполнятся.

#19 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

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

4lifeGTA wrote:

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

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

4lifeGTA wrote:

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

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

#21 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                      

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

Grox wrote:

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

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

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

Grox wrote:

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

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

#24 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).

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

Kim wrote:

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

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

Board footer

Powered by FluxBB