You are not logged in.
Pages: 1
А как можно увеличить прайс для пикапа с опкодом
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 не стартует даже если перед выходом из игры был запущен и надо как то определить, что игра была перезагружена и поток надо заново запустить и передать параметры.
не могу найти указатель на второй номер, сохраняется только первый.
Какой номер ты имеешь ввиду?
Номер машины имеется ввиду. Один есть, а второй рандомный от игры.
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
, но у меня тоже бида, не могу найти указатель на второй номер, сохраняется только первый.
Опкод не подойдет, прицеп может быть, а может и не быть.
В структуре транспорта есть m_pTrailer адрес +0x4C8 (size 4), по которому можно определить есть у транспорта прицеп или нет. И предыдущий адрес +0x4C4 (size 4) - это m_pTractor
Меня чуток не поняли видимо. Я все свое сохранение для транспорта мучаю. Тут цимес не в наличии прицепа в принципе, а в том, что бы упростить скрипт и убрать лишние строки. Там дело в том, что игра прицеп удаляет рано, гораздо раньше автомобиля игрока, поэтому приходится проверять отдельно существует ли прицеп (если он был изначально) и существует ли автомобиль (если прицепа изначально не было), хотя в целом нынешний вариант тоже удачный получился, весь скрипт на 10кб поджал и добавил чего не хватало.
Тут новый вопрос возник, как пользоваться опкодом interceptor? Весь яндекс перерыл, нигде внятной справки нет, в стандартной справке билдера тоже тишина.
0AE2: почему-то глючит если много машин захватывать, а мне порядка 30-ти штук надо как то удержать от удаления... Бида.
Спасибо, с вылетом разобрался, оказывается массив вообще ни при чем был. Касаемо счетчика, там еще таймер есть, если скрипт будет скакать на одном месте таймер заполнится и прервет цикл.
Я не знаю, как Вы это себе представляете. В 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
Приветствую знатоков.
В общем решил немного сократить размер своего скрипта, в связи с чем возник вопрос, можно ли одну и ту-же машину определить сразу в 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
Pages: 1