You are not logged in.
Pages: 1
ivwpnpckpsvc.cs
{$CLEO} 0000: //v 0.7.07.04.2011 wait 2000 05DE: create_custom_thread 'pkpbl.s' 05E5: 0@ = game_version if 0@ == 0 then 9@ = 0x945D5E 10@ = 0x94A13C else 9@ = 0x945D66 10@ = 0x94A144 end while true wait 0 for 0@ = 9@ {0x945D5E} to 10@ {0x94A13C} step 0x34 05E0: 1@ = read_memory 0@ size 1 virtual_protect 0 if or 0039: 1@ == 8 //money //0039: 1@ == 15 //scm 0039: 1@ == 4 //ped pickups then 0085: 2@ = 0@ // handles 2@ -= 0x2A 05E0: 3@ = read_memory 2@ size 4 virtual_protect 0 //RwV3d x Y z if 3@ <> -801.1 then 0085: 4@ = 2@ // handles 000A: 4@ += 0x0C 05E0: 5@ = read_memory 4@ size 4 virtual_protect 0 //5@ - pointer to object 000A: 4@ += 0x12 //mdlid 05E0: 6@ = read_memory 4@ size 2 virtual_protect 0 //6@ - model id 05EB: 7@ = object_struct 5@ handle if 03CA: object 7@ exists then 01BB: store_object 7@ position_to 12@ 13@ 14@ 000A: 4@ += -0x1E //RwV3d x Y z 05DF: write_memory 4@ size 4 value -801.1 virtual_protect 0 000A: 4@ += -0x4 //RwV3d X y z 05DF: write_memory 4@ size 4 value -801.1 virtual_protect 0 000A: 4@ += 0x8 //RwV3d x y Z 05DF: write_memory 4@ size 4 value -801.1 virtual_protect 0 if 1@ == 4 then 14@ -= 0.99 else if 1@ == 8 then 14@ -= 0.90 else if 1@ == 15 then 14@ -= 1.2 end end end if 6@ == 337 then 6@ = 376 end 0107: 8@ = create_object 6@ at 12@ 13@ 14@ //8@ - landed pickup 0382: set_object 8@ collision_detection 0 0208: 11@ = random_float 0.0 360.0 if not 6@ == 376 then 0453: object 8@ set_rotation 90.0 0.0 11@ else 0453: object 8@ set_rotation 0.0 0.0 11@ end 05E8: 15@ = object 8@ struct 15@ += 0x174 05F5: call_scm_func @model2wpnid params_count 1 6@ 6@ 05DF: write_memory 15@ size 4 value 6@ virtual_protect 0 //wpn id 15@ += 0x4 05DF: write_memory 15@ size 4 value 13 virtual_protect 0 //flag for .s 01C4: remove_references_to_object 8@ end end end end end :model2wpnid for 1@ = 1 to 36 05E2: call_function 0x4418B0 num_params 1 pop 1 1@ 2@ //weapon id to model id if 003B: 2@ == 0@ // (int) then 05F6: ret 1 1@ //model id to weapon id end end 05F6: ret 1 40
pkpbl.s
{$CLEO .s} 0000: while true wait 0 if and 84A8: not player $player_char driving_boat 84C9: not player $player_char driving_flying_vehicle 80E0: not player $player_char driving then 0054: store_player $player_char position_to 0@ 1@ 2@ //0437: scatter_particle 55 size 0.52 at 0@ 1@ 2@ speed_XYZ 0.0 0.0 0.0 //03F0: enable_text_draw 1 //045B: draw_text_2numbers 320.0 390.0 GXT 'AMMO' numbers 9@ 9@ // ~1~:~1~ if 05F1: 3@ = random_object_near_point 0@ 1@ 2@ in_radius 1.5 find_next 0 //IF and SET then 7@ = 1 05E8: 4@ = object 3@ struct 4@ += 0x174 05E0: 5@ = read_memory 4@ size 4 virtual_protect 1 //weapon id 4@ += 0x4 05E0: 8@ = read_memory 4@ size 4 virtual_protect 1 //flag if and not 5@ == 0 not 5@ == 40 8@ == 13 0490: player $player_char has_weapon 5@ then 03E6: remove_text_box 0209: 9@ = random_int_in_ranges 4 40 //046F: store_player $player_char currently_armed_weapon_to 6@ //01B2: give_actor $PLAYER_ACTOR weapon 5@ ammo 20 // Load the weapon model before using this //01B8: set_player $player_char armed_weapon_to 6@ 0114: set_actor $PLAYER_ACTOR weapon 5@ add_ammo 9@ 0108: destroy_object 3@ end if and 8@ == 13 not 5@ == 0 not 5@ == 40 8490: not player $player_char has_weapon 5@ then 0512: show_permanent_text_box 'PU_CF1' if 00E1: key_pressed 0 4 then 03E6: remove_text_box 0209: 9@ = random_int_in_ranges 10 70 046F: store_player $player_char currently_armed_weapon_to 6@ 05E2: call_function 0x4418B0 num_params 1 pop 1 5@ 10@ //weapon id to model id if 8248: not model 10@ available then 0247: request_model 10@ 038B: load_requested_models end 01B2: give_actor $PLAYER_ACTOR weapon 5@ ammo 9@ // Load the weapon model before using this if 0248: model 10@ available then 0249: release_model 10@ end 01B8: set_player $player_char armed_weapon_to 6@ 0108: destroy_object 3@ end end if and not 5@ == 0 5@ == 40 8@ == 13 then 0209: 9@ = random_int_in_ranges 10 500 0109: player $player_char money += 9@ 0108: destroy_object 3@ end else if 7@ == 1 then 03E6: remove_text_box 7@ = 0 end end end end
Видео - http://www.youtube.com/watch?v=0WaoHo7qSQ4
Скачать - http://www.gtagarage.com/mods/show.php?id=15721
Last edited by Sergey81 (07-04-2011 12:12)
Offline
В принципе, я переделал код до работающего состояния, правда есть вылеты иногда, надо дальше разбираться. Просьба перенести тему в форум модификаций. Также добавил небольшую видео демонстрацию.
Offline
А почему два скрипта? Чёта по коду не пойму, в одном пикапы рядом с ГГ изображаются лежащими на земле, а в другом их можно подобрать?
Offline
for 0@ = 0x945D5E to 0x94A13C step 0x34 05E0: 1@ = read_memory 0@ size 1 virtual_protect 1 if //or //0039: 1@ == 8 //money //0039: 1@ == 15 //scm 0039: 1@ == 4 //ped pickups then 0085: 8@ = 1@ // integer values and handles 000A: 0@ += -0x1E 05E0: 1@ = read_memory 0@ size 4 virtual_protect 1 000A: 0@ += 0x1E if 8039: not 1@ == 0 then 05EB: 2@ = object_struct 1@ handle
Я так понял, здесь ты проверяешь есть-ли по близости игрока пикапы оставленные педами.
А если раскоментировать 1@ == 8 и 15, то каким будет эффект?
Offline
@Sw[ee]t
Если раскомментировать, то по идее будут проверяться пикапы денег и труляля. Однако в самом скрипте это не продумано еще. Т.к там все сосредоточено пока на оружии, насколько я понял в скрипте.
Проверил на версии 1.1 не работает
И еще такой косяк, когда у игрока нет оружия, то приходиться нажимать "ответить на звонок".
I know everything and nothing...
Offline
А почему два скрипта? Чёта по коду не пойму, в одном пикапы рядом с ГГ изображаются лежащими на земле, а в другом их можно подобрать?
Ага, в первом прячем сами пикапы(опкода 0750 нету, так что просто меняю координату Х на -1000.0), создаём на их месте объекты с той же моделью и двумя флагами(model id и и число 0.13 для идентификации во втором скрипте). Во втором скрипте(в SA можно было бы уместить всё в один, но тут всего 16 локальных переменных, поэтому решил разделить) ищем модели, если они рядом с гг, проверяем флаги(чтобы не подбирать пикапы, которые не являются оружием) и либо даём ему оружие и удаляем модель, либо ждём нажатия кнопки Tab.
t]Я так понял, здесь ты проверяешь есть-ли по близости игрока пикапы оставленные педами.
А если раскоментировать 1@ == 8 и 15, то каким будет эффект?
Здесь надо тоже доделывать код, делать проверку на то, что модель оружие, а не бронежилет например.
А ещё у этих пикапов разная высота, т.е. если оружие будет на земле, броня будет невидимая под землёй.
Пря нажатии таб естественно вылет.
У денег вобще какой то странный эффект получается...
Я кстати пробовал оптимизировать метку model2id,
if or 4@ == *** 4@ == *** 4@ == *** 4@ == *** *** then 4@ -= *** end
Правда таким образом вылезали глюки на пустом месте, когда вместо дубинки копов игроку давалась бейсбольная бита(естественно расчёт был правильный), поэтому сделал максимально наглядно чтоб ничего не перепуталось.
@mfisto - Да, пока все адреса от 1.0, возможно сделаю и под 1.1 позже.
Насчёт косяка, что именно имеешь в виду, а то я не совсем понял. Неверный GXT отображается?
UPD. Выложил обновлённую версию с поддержкой версии 1.1 и некоторыми улучшениями.
Last edited by Sergey81 (02-04-2011 14:59)
Offline
Проблема в том, что когда, например, у игрока нет пистолетов или оружия ближнего боя итд, т.е. определенного типа. Тогда для того, чтобы подобрать оружие, надо всегда нажимать "ответить на звонок".
Однако, если оружие уже есть, например, colt45, то тогда оно просто подберется.
Скажем у игрока вообще нет пистолетов, то, например, лежит оружие python, подходишь к нему, а вместо того чтоб подобраться, выскакивает сообщение нажмите "ответить на звонок".
I know everything and nothing...
Offline
@mfisto - А, ну да, есть такое, я правда незнаю почему так происходит.
Offline
И кстате еще такое. Ты можешь использовать буфер в качестве переменных, которых не хватает тебе в скрипте. Я так всегда поступаю, т.к. мне даже 34-х то в сане не канает.
05F7: 0@ = label @label offset
I know everything and nothing...
Offline
Сделал пикап денег, тем же способом что и DK22Pac, моделька кстати тоже из его мода. Также добавил условий, теперь созданные игрой пикапы тоже лежат на земле, кроме этих:
#ADRENALINE
#info
#health
#bodyarmour
#briefcase
#package1
#BRIBE
#PICKUPSAVE
По прежнему натыкаюсь на рандомные вылеты(хоть и не так часто), по прежнему без понятия почему так происходит.
Last edited by Sergey81 (02-04-2011 19:08)
Offline
@mfisto - возможно, хотя же вроде если пикап существует, его модель уже загружена. Впрочем добавлю на всякий случай.
Ошибка по адресу 0x462197 кстати.
Last edited by Sergey81 (02-04-2011 23:50)
Offline
Бета 7 в первом посте. Убрал воздействие скрипта на скм пикапы, сделал gosub model id to weapon id в виде скм функции, код стал компактнее теперь. Вылеты и прочие глюки вроде не наблюдаются.
То, что оружие, которого нет у игрока нужно поднимать по кнопке, наверно так и оставлю.
Offline
Pages: 1