You are not logged in.
Pages: 1
Здравствуйте. Как вывести список компонентов тюнинга, словно я заехал в Transfender или другой вид тюнинга (нужны разные списки для разных типов машин)?
Offline
Offline
@3Doomer -
я не возьмусь за это!
А тебя никто и не просит.
@GTASA - просто вытащи простой скрипт трансфендера и удали из него команды, которые телепортируют тачку в интерьер гаража и обратно. Если тебе надо на клео, то воспользуйся прогой CleoOptimizer
Специально для тех, кто не умеет читать по английски. Мой ник читается как "ГИР"!!!
Народная мудрость:
Прежде чем задавать вопросы,ПОЧИТАЙ СПРАВКУ!!!!
Offline
А разве скрипт траснсфендера находится в мэйне? Что-то я его там не нашел.
Offline
Я искал так: ввел в мэин слово какое-то, которым называется зап часть, и ответа не было. Может, все-таки не в мэине оно? Надо какой-то адрес памяти, который вызывает то меню.
Offline
Я искал так: ввел в мэин слово какое-то, которым называется зап часть, и ответа не было. Может, все-таки не в мэине оно? Надо какой-то адрес памяти, который вызывает то меню.
Неужели так трудно посмотреть внешние скрипты? External script 66 (CARMOD1), например. Все вам адрес памяти подавай.
Offline
Через память всё-таки можно, вот скрипт:
thread 'AnyTrasfender' {$CLEO} {$I stdconsts.txt} var $Player_Char: Player $Player_Actor: Actor $419: Integer end wait 1000 $419=0 0@s='MAIN' 0AB1: call_scm_func @InjectJumpOpcode 4 0@ 1@ 60194 @MainIfInject 0AB1: call_scm_func @SetIfNumber 4 thread_name 0@ 1@ offset 60190 number 25 0@s='CARMOD' while true if $Player_Char.Defined then if and 0AB0: key_pressed VK_CONTROL 0AB0: key_pressed VK_T $Player_Actor.Driving 09E7: player $PLAYER_CHAR not_frozen then 0926: $Script_Status = external_script_status 66 (CARMOD1) if $Script_Status == 0 then 32@=0 $419=1 while 88AB: not external_script 66 (CARMOD1) loaded 08A9: load_external_script 66 (CARMOD1) wait 0 end 0913: run_external_script 66 (CARMOD1) 32@=0 wait 0 0AAA: 5@ = pointer_to_thread 'CARMOD' if 5@==0 then 0513: show_text_box_1number 'NUMBER' number 666 // ~1~ end 0AB1: call_scm_func @SetIfNumber 4 thread_name 0@ 1@ offset 1584 number 23 0AB1: call_scm_func @InjectJumpOpcode 4 0@ 1@ 1588 @CarmodInject1 0AB1: call_scm_func @InjectJumpOpcode 4 0@ 1@ 3972 @CarmodInject3 0AB1: call_scm_func @InjectJumpOpcode 4 0@ 1@ 9765 @CarmodInjectLoadPos 0AB1: call_scm_func @ReplaceLabelInOpcode 4 0@ 1@ 2148 @CarmodInjectStorePos 0AB1: call_scm_func @ReplaceLabelInOpcode 4 0@ 1@ 1803 @CarmodInject4 else end_thread_named 'CARMOD' 090F: end_external_script 66 (CARMOD1) end wait 200 end end wait 0 end :MainIfInject 03B0: garage 'BODLAWN' door_open 03B0: garage 'MODLAST' door_open 03B0: garage 'MDSSFSE' door_open 03B0: garage 'MDS1SFS' door_open 03B0: garage 'VECMOD' door_open $419 == 1 jump 60249 :CarmodInjectEF 00D6: if 0 0256: player $2 defined 004D: jump_if_false -13936 if and $419==1 33@>5000 09E7: player $PLAYER_CHAR not_frozen jf -1426 01EB: set_traffic_density_multiplier_to 1.0 end_thread :CarmodInject4 if $419==1 jf -2356 jump -1810 :CarmodInject3 if $419<>1 jf -7392 00D6: if 0 096F: car $10431 street_racing_car 004D: jump_if_false -5615 jump -3988 :CarmodInjectStorePos 00aa: store_car $CARMOD_Car position_to $10428 $10429 $10430 0A97: 0@ = car $CARMOD_Car struct 0@+=0x14 0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0 0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0 //right.x 0@+=4 0A8D: 2@ = read_memory 0@ size 4 virtual_protect 0 //right.y 0@+=4 0A8D: 3@ = read_memory 0@ size 4 virtual_protect 0 //right.z 0@+=8 0A8D: 4@ = read_memory 0@ size 4 virtual_protect 0 //top.x 0@+=4 0A8D: 5@ = read_memory 0@ size 4 virtual_protect 0 //top.y 0@+=4 0A8D: 6@ = read_memory 0@ size 4 virtual_protect 0 //top.z 0@+=8 0A8D: 7@ = read_memory 0@ size 4 virtual_protect 0 //at.x 0@+=4 0A8D: 8@ = read_memory 0@ size 4 virtual_protect 0 //at.y 0@+=4 0A8D: 9@ = read_memory 0@ size 4 virtual_protect 0 //at.z jump -2185 :CarmodInjectLoadPos 04E4: unknown_refresh_game_renderer_at $10428 $10429 03CB: set_rendering_origin_at $10428 $10429 $10430 00AB: put_car $10431 at $10428 $10429 $10430 if $419<>0 jf -9779 $419=0 0A97: 0@ = car $10431 struct 0@+=0x14 0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0 0A8C: write_memory 0@ size 4 value 1@ virtual_protect 0 //right.x 0@+=4 0A8C: write_memory 0@ size 4 value 2@ virtual_protect 0 //right.y 0@+=4 0A8C: write_memory 0@ size 4 value 3@ virtual_protect 0 //right.z 0@+=8 0A8C: write_memory 0@ size 4 value 4@ virtual_protect 0 //top.x 0@+=4 0A8C: write_memory 0@ size 4 value 5@ virtual_protect 0 //top.y 0@+=4 0A8C: write_memory 0@ size 4 value 6@ virtual_protect 0 //top.z 0@+=8 0A8C: write_memory 0@ size 4 value 7@ virtual_protect 0 //at.x 0@+=4 0A8C: write_memory 0@ size 4 value 8@ virtual_protect 0 //at.y 0@+=4 0A8C: write_memory 0@ size 4 value 9@ virtual_protect 0 //at.z jump -9869 :CarmodInject1 0103: actor $3 in_sphere 1042.01294 -1019.92700 31.12700 radius 4.00000 4.00000 2.00000 sphere 1 stopped_in_car 0103: actor $3 in_sphere -1935.52795 247.02901 33.56100 radius 4.00000 4.00000 2.00000 sphere 1 stopped_in_car 0103: actor $3 in_sphere 2387.07495 1050.51099 9.81200 radius 4.00000 4.00000 2.00000 sphere 1 stopped_in_car $419 == 1 //<<< jump -1699 :SetIfNumber{SetFirstByteConstOpcodeParam} var //0@s - InNameThread 2@: Integer //Offset 3@: Integer //IfNumber 6@: Integer //Pointer to thread 4@: Integer 5@: Integer end 0AAA: 6@ = pointer_to_thread 0@s if 6@ == 0 then 0AB2: ret 0 end 6@+=16 0A8D: 6@ = read_memory 6@ size 4 virtual_protect 0 if 6@==0 then 6@=0xA49960 end 4@=6@ 4@+=2@ //0A8C: write_memory 4@ size 2 {word} value 0x00D6 {if opcode} virtual_protect 1 4@+=2 //0A8C: write_memory 4@ size 1 {byte} value 0x04 {signed byte type} virtual_protect 1 4@+=1 0A8C: write_memory 4@ size 1 {byte} value 3@ {IfNumber} virtual_protect 0 0AB2: ret 0 :ReplaceLabelInOpcode var //0@s - InNameThread 2@: Integer //Offset 3@: Integer //InLabel 6@: Integer //Pointer to thread 4@: Integer 5@: Integer end 0AAA: 6@ = pointer_to_thread 0@s if 6@ == 0 then 0AB2: ret 0 end 6@+=16 0A8D: 6@ = read_memory 6@ size 4 virtual_protect 0 if 6@==0 then 6@=0xA49960 end 4@=6@ 4@+=2@ //0A8C: write_memory 4@ size 2 {word} value 0x0002 {jump opcode} virtual_protect 1 4@+=2 0A8C: write_memory 4@ size 1 {byte} value 0x01 {label type} virtual_protect 1 4@+=1 0A9F: 5@ = current_thread_pointer 5@+=16 0A8D: 5@ = read_memory 5@ size 4 virtual_protect 0 5@-=0xA49960 5@-=3@ 0A8C: write_memory 4@ size 4 {dword} value 5@ {label} virtual_protect 0 0AB2: ret 0 :InjectJumpOpcode var //0@s - InNameThread 2@: Integer //Offset 3@: Integer //InLabel 6@: Integer //Pointer to thread 4@: Integer 5@: Integer end 0AAA: 6@ = pointer_to_thread 0@s if 6@ == 0 then 0AB2: ret 0 end 6@+=16 0A8D: 6@ = read_memory 6@ size 4 virtual_protect 0 if 6@==0 then 6@=0xA49960 end 4@=6@ 4@+=2@ 0A8C: write_memory 4@ size 2 {word} value 0x0002 {jump opcode} virtual_protect 1 4@+=2 0A8C: write_memory 4@ size 1 {byte} value 0x01 {label type} virtual_protect 1 4@+=1 0A9F: 5@ = current_thread_pointer 5@+=16 0A8D: 5@ = read_memory 5@ size 4 virtual_protect 0 5@-=0xA49960 5@-=3@ 0A8C: write_memory 4@ size 4 {dword} value 5@ {label} virtual_protect 0 0AB2: ret 0
Используется run-time изменение оригинального скрипта трансфендера через редактирование памяти. Правда, иногда глючит, пропадает траффик.
Last edited by VcSaJen (04-12-2009 04:55)
[small][/small]
Offline
Через память все можно, хоть карту с ног на голову повернуть. Спасибо.
Last edited by GTASA (05-12-2009 04:02)
Offline
Pages: 1