#1 Re: Вопросы по скриптингу » Один вопрос » 13-10-2018 16:42

А как можно увеличить прайс для пикапа с опкодом

0518: $BUY_ASSET_PICKUPS[8] = create_available_asset_pickup 'PROP_3' at $X_PROPERTY_TO_BUY[8] $Y_PROPERTY_TO_BUY[8] $Z_PROPERTY_TO_BUY[8] price $1661

?
Если поставить $1661 больше 200тыс над пикапом красуется вообще левая стоимость, хотя денег с игрока снимают сколько нужно.

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

0ABA: end_custom_thread_named 'SVRSWS2'

0A92: create_custom_thread "svrsws2.s"

После перезугрузки svrsws2.s не стартует даже если перед выходом из игры был запущен и надо как то определить, что игра была перезагружена и поток надо заново запустить и передать параметры.

#2 Re: Вопросы по скриптингу » Один вопрос » 11-10-2018 02:49

kenking wrote:

не могу найти указатель на второй номер, сохраняется только первый.

Какой номер ты имеешь ввиду?

Номер машины имеется ввиду. Один есть, а второй рандомный от игры.

#3 Re: Вопросы по скриптингу » Один вопрос » 09-10-2018 19:49

kenking wrote:

0AE2: почему-то глючит если много машин захватывать, а мне порядка 30-ти штук надо как то удержать от удаления... Бида.

Дело не в количестве. Возможно код неправильно написан.

Да, переписал заново, теперь работает.  Только с рандомом проблема:

... 00BF: 0@ = current_time_hours, 2@ = current_time_minutes
if and
0@ == 23
0@ == 0
0@ == 1
0@ == 2
0@ == 3
0@ == 4
0@ == 5
then
0@ = 60
else
0@ = 100
end 

// ... //

0209: 10@ = random_int_in_ranges 0 0@

// ... // 

if and
10@ < 55
8AE2: not 2@ = random_vehicle_near_point 2162.47 -1807.2 13.1119 in_radius 3.0 find_next 0 pass_wrecked 1
then
03C5: create_random_car_for_carpark 2162.47 -1807.2 12.3119 z_angle 180.723
end
2@ = 0

И днем и ночью почти ничего не меняется, т.е. сам рандом работает, но машин в среднем одинаково появляется.
Кстати в вашем скрипте не весь тюнинг сохраняется, и еще вы же мне сами писали, проверяй наличие авто после wait, а у вас:

:AVTO1_1024
wait 0 
06EA:   car_component 25@ available 
else_jump @AVTO1_1024 
06E7: 6@ = add_car_component 25@ to_car 9@ 
06EB: release_car_component 25@ 
jump @AVTO1_1371 

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

#4 Re: Вопросы по скриптингу » Один вопрос » 09-10-2018 14:13

kenking wrote:

Опкод не подойдет, прицеп может быть, а может и не быть.

В структуре транспорта есть m_pTrailer адрес +0x4C8 (size 4), по которому можно определить есть у транспорта прицеп или нет. И предыдущий адрес +0x4C4 (size 4) - это m_pTractor

Меня чуток не поняли видимо. Я все свое сохранение для транспорта мучаю. Тут цимес не в наличии прицепа в принципе, а в том, что бы упростить скрипт и убрать лишние строки.  Там дело в том, что игра прицеп удаляет рано, гораздо раньше автомобиля игрока, поэтому приходится проверять отдельно существует ли прицеп (если он был изначально) и существует ли автомобиль (если прицепа изначально не было), хотя в целом нынешний вариант тоже удачный получился, весь скрипт на 10кб поджал и добавил чего не хватало.

Тут новый вопрос возник, как пользоваться опкодом interceptor? Весь яндекс перерыл, нигде внятной справки нет, в стандартной справке билдера тоже тишина.
0AE2: почему-то глючит если много машин захватывать, а мне порядка 30-ти штук надо как то удержать от удаления... Бида.

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

Спасибо, с вылетом разобрался, оказывается массив вообще ни при чем был. Касаемо счетчика, там еще таймер есть, если скрипт будет скакать на одном месте таймер заполнится и прервет цикл.

wmysterio wrote:

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

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

if
    056E: car 0@ defined
    then
        if
        not 29@ == 0
        then
            if
            856E: not car 29@ defined
            then
            car.destroy(0@)
            Car.RemoveReferences(0@)
            jump @SVRSAVE_106
            end
        end    
        if 
        Actor.InCar($PLAYER_ACTOR, 0@)
        then
        Car.SetImmunities(0@, 0, 0, 0, 0, 0)
        Car.LockInCurrentPosition(0@) = False
        041E: set_radio_station 7@
        Marker.Disable(28@)
        Car.RemoveReferences(0@)
        if
        not 29@ == 0
        then
        Car.SetImmunities(29@, 0, 0, 0, 0, 0)
        Car.LockInCurrentPosition(29@) = False
        Car.RemoveReferences(29@)
        end
        jump @SVRSAVE_90
        end
    else
    if
    not 29@ == 0
    then
    if
    056E: car 29@ defined
    then
    car.destroy(29@)
    Car.RemoveReferences(29@)
    end
    end
    jump @SVRSAVE_106
    end

#6 Re: Вопросы по скриптингу » Один вопрос » 06-10-2018 09:56

Приветствую знатоков.

В общем решил немного сократить размер своего скрипта, в связи с чем возник вопрос, можно ли одну и ту-же машину определить сразу в 2 переменные?
Например есть проверка:

if
29@ == 0
then
0@ = Actor.CurrentCar($PLAYER_ACTOR)
29@ = Actor.CurrentCar($PLAYER_ACTOR)
end
if and 
    056E: car 0@ defined
    056E: car 29@ defined 
    then
        if 
        Actor.InCar($PLAYER_ACTOR, 0@)
        then
        Car.SetImmunities(0@, 0, 0, 0, 0, 0)
        Car.LockInCurrentPosition(0@) = False
        041E: set_radio_station 7@
        Marker.Disable(28@)
        Car.RemoveReferences(0@)
        if
        not 29@ == 0
        then
        Car.SetImmunities(29@, 0, 0, 0, 0, 0)
        Car.LockInCurrentPosition(29@) = False
        Car.RemoveReferences(29@)
        end
        jump @SVRSAVE_90
        end
    else
    if
    056E: car 0@ defined
    then
    car.destroy(0@)
    Car.RemoveReferences(0@)
    end
    if
    056E: car 29@ defined
    then
    car.destroy(29@)
    Car.RemoveReferences(29@)
    end
    end

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

Вторая проблема с массивами. При попытке записать

0A8D: 17@(15@, 15i) = read_memory 9@ size 2 virtual_protect 0

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

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

15@ = 0
for 15@ = 0 to 14
        if 
        not 17@(15@,15i) == 65535 
        then 
        06E9: load_car_component 17@(15@,15i)
        31@ = 0
        wait 13@
        13@ += 10
        if and
        13@ < 200 
        06EA:   car_component 17@(15@,15i) available
        then
        if
        056E: car 1@ defined
        then
        06E7: 9@ = add_car_component 17@(15@,15i) to_car 1@
        06EB: release_car_component 17@(15@,15i)
        else
        15@ = 14
        jump @SVRSAVE_105
        end
        else
        if
        13@ < 200
        then
        15@ -= 1
        end
        end
        end
end

Board footer

Powered by FluxBB