You are not logged in.
Pages: 1
Бензо-спидометро-мод. Написан с нуля(кроме кусков относящихся к спидометру, которые скопи-пастил).
Как ясно из названия - добавляет бензин и спидометр.
{$CLEO} var 2@ :Integer 3@ :Integer 4@ :Integer 5@ :Integer 6@ :Integer 7@ :Integer 9@ :Array 7 of Integer 16@ :Integer 17@ :Integer 18@ :Array 7 of Integer 19@ :Integer 20@ :Integer 21@ :Integer 22@ :Integer 23@ :Integer 24@ :Integer 25@ :Integer 26@ :Integer 32@ :Integer 33@ :Integer 30@ :Integer end // var const playerCar = 9@ BenzoBak = 4@ rashod = 6@ gear = 30@ GasolineCost = 17@ WantedMultyple = 26@ end // const 03A4: name_thread 'GASOLINE' 0A92: create_custom_thread "A3C.s" 18@ = random(4, 98) 19@ = random(4, 98) 20@ = random(4, 98) 21@ = random(4, 98) 22@ = random(4, 98) 23@ = random(4, 98) 24@ = random(4, 98) :benzin while true wait 0 if Player.Defined($PLAYER_CHAR) then if and Actor.Driving($PLAYER_ACTOR) not Actor.DrivingBoat($PLAYER_ACTOR) not Actor.DrivingFlyingVehicle($PLAYER_ACTOR) not Actor.DrivingVehicleType($PLAYER_ACTOR,#BMX) not Actor.DrivingVehicleType($PLAYER_ACTOR,#BIKE) not Actor.DrivingVehicleType($PLAYER_ACTOR,#MTBIKE) not $ONMISSION == 1 jf @benzin 03F0: enable_text_draw 1 0390: load_txd_dictionary "SPEED2" 038F: load_texture "1" as 1 // Load dictionary with 0390 first 038F: load_texture "2" as 2 // Load dictionary with 0390 first 038F: load_texture "3" as 3 // Load dictionary with 0390 first 038F: load_texture "4" as 4 // Load dictionary with 0390 first 038F: load_texture "5" as 5 // Load dictionary with 0390 first 038F: load_texture "r" as 6 // Load dictionary with 0390 first 038F: load_texture "sp" as 7 // Load dictionary with 0390 first 038F: load_texture "spnight" as 8 // Load dictionary with 0390 first 038F: load_texture "spar" as 9 // Load dictionary with 0390 first 038F: load_texture "sparnight" as 10 // Load dictionary with 0390 first 038F: load_texture "1n" as 11 // Load dictionary with 0390 first 038F: load_texture "2n" as 12 // Load dictionary with 0390 first 038F: load_texture "3n" as 13 // Load dictionary with 0390 first 038F: load_texture "4n" as 14 // Load dictionary with 0390 first 038F: load_texture "5n" as 15 // Load dictionary with 0390 first 038F: load_texture "rn" as 16 // Load dictionary with 0390 first 038F: load_texture "gasar" as 17 // Load dictionary with 0390 first 038F: load_texture "gasover" as 18 // Load dictionary with 0390 first 01BD: 5@ = current_time_in_ms 3@ = -1 :benzo1 if 856E: not car playerCar[16@] defined jf @benzo2 goto @benzin22_52 :benzo2 if 80DB: not actor $PLAYER_ACTOR in_car playerCar[16@] jf @benzin2_5 if not 16@ == 6 jf @benzo3 16@ += 1 goto @benzo1 :benzo3 16@ = 25@ 0209: 18@[16@] = random_int_in_ranges 4 98 25@ += 1 if not 25@ == 6 0AA0: gosub_if_false @benzo4 wait 0 goto @benzin22_52 :benzo4 25@ = 0 0AA1: return_if_false :benzin22_52 Actor.Car(playerCar[16@],$PLAYER_ACTOR) :benzin2_5 4@ = 18@[16@] 09C4: set_car playerCar[16@] gas_tank_explosion_enabled 1 :benzin1_5 32@ = 0 :benzin2 wait 0 if not Car.Wrecked(playerCar[16@]) jf @benzin45 if and 00DB: actor $PLAYER_ACTOR in_car playerCar[16@] not $ONMISSION == 1 jf @benzin4 0AB1: call_scm_func @speedometer 3 4@ 5@ 3@ 5@ 3@ gosub @zapravko if not 0 >= 4@ jf @benzin5 0ABE: vehicle playerCar[16@] engine_on 0AA0: gosub_if_false @engine_on 0AB8: get_vehicle playerCar[16@] current_gear_to gear if not gear == 5 0AA0: gosub_if_false @gear5 if not gear == 4 0AA0: gosub_if_false @gear4 if not gear == 3 0AA0: gosub_if_false @gear3 if not gear == 2 0AA0: gosub_if_false @gear2 if not gear == 1 0AA0: gosub_if_false @gear1 if not gear == 0 //rear 0AA0: gosub_if_false @gear0 if 81C1: not car playerCar[16@] stopped 0AA0: gosub_if_false @carstopped if 32@ >= rashod jf @benzin2 4@ -= 1 goto @benzin1_5 :engine_on 09C4: set_car playerCar[16@] gas_tank_explosion_enabled 1 0ABF: set_vehicle playerCar[16@] engine_state_to 1 0AA1: return_if_false :gear0 // rashod = 10800 // rear 0AA1: return_if_false // :gear1 rashod = 6000 0AA1: return_if_false :gear2 rashod = 7000 0AA1: return_if_false :gear3 rashod = 8500 0AA1: return_if_false :gear4 rashod = 9600 0AA1: return_if_false :gear5 rashod = 108000 0AA1: return_if_false :carstopped rashod = 125000 0AA1: return_if_false :benzin4 18@[16@] = 4@ goto @benzin :benzin45 0391: release_txd_dictionary goto @benzin :benzin5 02D4: car playerCar[16@] turn_off_engine 09C4: set_car playerCar[16@] gas_tank_explosion_enabled 0 18@[16@] = 4@ :benzin6 //wait 0 if not Actor.Driving($PLAYER_ACTOR) jf @benzin2 0391: release_txd_dictionary end end //while :speedometer var 12@ :Integer end // var//8@ = 7 9@ = 9 3@ = 6 4@ = 1 5@ = 2 6@ = 3 7@ = 4 8@ = 5 008F: 0@ = integer 0@ to_float 0@ /= 2.0 0@ += 155.0 03C0: 10@ = actor $PLAYER_ACTOR car 03E3: set_texture_to_be_drawn_antialiased 1 038D: draw_texture 7 position 550.0 360.0 size 180.0 160.0 RGBA 255 255 255 255 03E3: set_texture_to_be_drawn_antialiased 1 074B: draw_texture 17 position 550.0 356.0 scale 90.0 80.0 angle 0@ color_RGBA 255 255 255 255 if or 0@ > 167.5 2@ == 1 jf @speedometer4 0@ > 155.0 jf @speedometer4 03E3: set_texture_to_be_drawn_antialiased 1 038D: draw_texture 18 position 558.0 391.0 size 11.25 10.0 RGBA 255 255 255 60 :speedometer5 01BD: 12@ = current_time_in_ms 0062: 12@ -= 1@ // (int) 12@ >= 1750 jf @speedometer3 2@ *= -1 01BD: 1@ = current_time_in_ms goto @speedometer3 :speedometer4 03E3: set_texture_to_be_drawn_antialiased 1 038D: draw_texture 18 position 558.0 391.0 size 11.25 10.0 RGBA 190 0 0 255 0@ > 155.0 jf @speedometer3 goto @speedometer5 :speedometer3 02E3: 17@ = car 10@ speed 17@ *= 3.7 17@ += 40.0 0AB8: get_vehicle 10@ current_gear_to 11@ 03E3: set_texture_to_be_drawn_antialiased 1 038D: draw_texture 3@(11@,6i) position 542.0 392.0 size 39.375 35.0 RGBA 255 255 255 255 //038D: draw_texture 1@(11@,6i) position 540.0 391.0 size 67.5 60.0 RGBA 255 255 255 255 03E3: set_texture_to_be_drawn_antialiased 1 not 17@ > 320.0 jf @speedometer6 074B: draw_texture 9@ position 550.0 360.0 scale 225.0 200.0 angle 17@ color_RGBA 255 255 255 255 //1,125 0AB2: ret 2 1@ 2@ :speedometer6 0208: 17@ = random_float_in_ranges 310.0 330.0 074B: draw_texture 9@ position 550.0 360.0 scale 225.0 200.0 angle 17@ color_RGBA 255 255 255 255 //1,125 0AB2: ret 2 1@ 2@ :zapravko if and 81AB: not car playerCar[16@] sphere 0 in_rectangle_cornerA 2123.3806 928.5721 cornerB 2106.8508 911.447 stopped 81AB: not car playerCar[16@] sphere 0 in_rectangle_cornerA 2156.116 2755.251 cornerB 2139.3486 2740.3503 stopped 81AB: not car playerCar[16@] sphere 0 in_rectangle_cornerA 2194.8752 2484.6067 cornerB 2210.6038 2466.6272 stopped 81AB: not car playerCar[16@] sphere 0 in_rectangle_cornerA 1587.3915 2205.6235 cornerB 1604.3937 2191.3142 stopped 81AB: not car playerCar[16@] sphere 0 in_rectangle_cornerA -1690.4707 409.2204 cornerB -1661.2582 417.7699 stopped 81AB: not car playerCar[16@] sphere 0 in_rectangle_cornerA -2406.9104 965.6361 cornerB -2415.9421 986.1729 stopped 81AB: not car playerCar[16@] sphere 0 in_rectangle_cornerA -1322.9725 2686.8352 cornerB -1335.1208 2666.2117 stopped jf @zapravko2 if and 81AB: not car playerCar[16@] sphere 0 in_rectangle_cornerA -2240.0842 -2567.7544 cornerB -2245.656 -2554.0215 stopped 81AB: not car playerCar[16@] sphere 0 in_rectangle_cornerA -1616.8291 -2719.7837 cornerB -1595.7903 -2707.2815 stopped 81AB: not car playerCar[16@] sphere 0 in_rectangle_cornerA -100.651 -1178.0348 cornerB -81.0769 -1162.0487 stopped 81AB: not car playerCar[16@] sphere 0 in_rectangle_cornerA 652.7013 -575.2865 cornerB 658.194 -555.3245 stopped 81AB: not car playerCar[16@] sphere 0 in_rectangle_cornerA 1937.6512 -1784.6312 cornerB 1945.447 -1762.0051 stopped 81AB: not car playerCar[16@] sphere 0 in_rectangle_cornerA -1482.6179 1871.4877 cornerB -1458.9929 1854.3845 stopped jf @zapravko2 return :zapravko2 if and 33@ >= 500 not 4@ >= 100 0AA1: return_if_false 0AB1: call_scm_func @speedometer 3 4@ 5@ 3@ 5@ 3@ if not Actor.InZone($PLAYER_ACTOR,'VE') then if and not Actor.InZone($PLAYER_ACTOR,'BONE') not Actor.InZone($PLAYER_ACTOR,'FLINTC') not Actor.InZone($PLAYER_ACTOR,'RED') then GasolineCost = 1000 WantedMultyple = Player.WantedLevel($PLAYER_CHAR) WantedMultyple += 1 GasolineCost *= WantedMultyple else GasolineCost = 900 WantedMultyple = Player.WantedLevel($PLAYER_CHAR) WantedMultyple += 1 GasolineCost *= WantedMultyple goto @add_gasoline end else GasolineCost = 1200 WantedMultyple = Player.WantedLevel($PLAYER_CHAR) WantedMultyple += 1 GasolineCost *= WantedMultyple goto @add_gasoline end :add_gasoline GasolineCost -= 1 if 010A: player $PLAYER_CHAR money > GasolineCost jf @nomoneys GasolineCost += 1 GasolineCost *= -1 4@ += 1 Player.Money($PLAYER_CHAR) += GasolineCost 32@ = 0 33@ = 0 goto @zapravko :nomoneys if 88FE: not text_box_displayed 0AA1: return_if_false 03E5: show_text_box 'NOMONEY' return
Файл A3C.s
{$CLEO .s} 0000: :A3C wait 0 0@ = 0 04CE: 1@ = create_icon_marker_without_sphere 55 at -1673.3113 415.5818 6.8497 // san fierro east bassein 04CE: 2@ = create_icon_marker_without_sphere 55 at -2407.5476 974.9628 44.9663 // chinatown 04CE: 3@ = create_icon_marker_without_sphere 55 at -1329.8654 2665.9988 49.6674 //el q1 04CE: 4@ = create_icon_marker_without_sphere 55 at 603.6575 1703.6644 7.1044 //bone c1 04CE: 5@ = create_icon_marker_without_sphere 55 at 2114.6245 920.1982 10.8203 //lv 1 icon 04CE: 6@ = create_icon_marker_without_sphere 55 at 2148.3494 2747.8782 10.8203 // lv 2 icon 04CE: 7@ = create_icon_marker_without_sphere 55 at 2202.2673 2473.8806 10.8203 //lv 3 icon 04CE: 8@ = create_icon_marker_without_sphere 55 at 1596.6096 2198.6833 10.8203 //lv 4 ic 04CE: 9@ = create_icon_marker_without_sphere 55 at -2243.6313 -2559.158 31.9219 // san fierro east bassein 04CE: 10@ = create_icon_marker_without_sphere 55 at -1606.2698 -2714.0828 48.5335 // chinatown 04CE: 11@ = create_icon_marker_without_sphere 55 at -90.1793 -1169.6742 2.3974 //el q1 04CE: 12@ = create_icon_marker_without_sphere 55 at 655.2332 -565.256 16.3359 //bone c1 04CE: 13@ = create_icon_marker_without_sphere 55 at 1943.4669 -1773.2439 13.3906 //lv 1 icon 04CE: 14@ = create_icon_marker_without_sphere 55 at -1469.8339 1864.4039 32.6328 //lv 1 icon :A3C_save wait 0 0A8D: 0@ = read_memory 0xBA68A7 size 1 virtual_protect 1 if not 0@ == 0 jf @A3C_save 0164: disable_marker 1@ 0164: disable_marker 2@ 0164: disable_marker 3@ 0164: disable_marker 4@ 0164: disable_marker 5@ 0164: disable_marker 6@ 0164: disable_marker 7@ 0164: disable_marker 8@ 0164: disable_marker 9@ 0164: disable_marker 10@ 0164: disable_marker 11@ 0164: disable_marker 12@ 0164: disable_marker 13@ //0A93: end_custom_thread :A3C_save_done wait 0 if or 09FA: is_menu_closed 03D9: save_done jf @A3C_save_done goto @A3C
В любой файл .fxt, по желанию, добавить:
LG_57 A3C
Жду конструктивной критики=)
Last edited by flashTrash (01-08-2008 10:55)
Offline
Компилироовать 3 скрипта? Или какой из них?
Offline
Первые два компилить обязательно. Строку
LG_57 A3C
можно добавить в ЛЮБОЙ файл .fxt (этакие Клео-gxt файлы). Прочитай инструкцию к плагину gxthook и всё поймёшь.
Offline
Скриншот можно? у мну прост шас нема чистого сана,поставил на сейв ал,вылетает
Offline
@flashTrash -
9@ :Array 7 of Integer
18@ :Array 7 of Integer
плохие новости. массивы хранятся там же где и переменные. это значит, что 9@[1] это тоже самое что 10@. Поэтому когда ты пишешь в массив, ты на самом деле меняешь локальные переменные, а значит затираешь предыдущие значения.
Offline
@Seemann
для меня это не новостьт . В переменных 9@ - 15@ хранятся машины. Использовал для "памяти", что-то типо запоминания у какой машины скока бензина осталось. Аналогично с 18@ и иже с ними, только там хранятся числа значение бензина
Offline
а че у меня игра вылетает када сажусь в тачу:cry:
Offline
извеняюсь за свою память...
Для работы нужен Клео версии 950 и выше
и скачай архив, там файл speed2.txd , его надо положить в папку models\txd
Offline
Я так и сделал,и ставил скрипт который в архиве,всеравно вылетает
Offline
Centrino Duo
хм.. странно... тогда просьба:
поставь пожалуйсто плагин scmlog.cleo и после того как игра вылетит, скинь мне файл scmlog.log
у кого еще вылетает?
Offline
мля,он не пашет (скм лог).
D:\Games\GTA-San Andreas\cleo\plugins\scmlog\scmlog.cleo если он так лежит,то в лог не записывает ничего,D:\Games\GTA-San Andreas\cleo\scmlog.cleo если так,то после загрузки игры,игра вылетает ио5 таки в лог ничего не записывается
Last edited by Centrino Duo (01-08-2008 11:53)
Offline
Мод работает. Правда с текстурой спидометра у меня какие-то глюки, больно мелкая она и текст нечитабельный. Заправки вроде работают
Кстати, насчет спидометра: лучше вот этого сложно что-то придумать, и хорошо если спидометр можно было отключать, чтобы не было как у меня - сразу два))
Offline
лучше сохранять кол-во бензина в неиспользующихся байтах структуры авто
Offline
@Seemann
Наверно это от разрешения монитора зависит...
Можно сделать вариант без спидометра, а значение бензина выводить статус-полоской, собственно я сначала так и сделал, но потом меня уломали на совмещение со спидометром.
@Alexander
Гениально... я б до такого нивжись не додумался, спасибо.
Пора садиться за обновление
Offline
лучше сохранять кол-во бензина в неиспользующихся байтах структуры авто
yelmi уже давно так и сделал, кажется
Offline
крутаа смотрится:clap:,када выложеш?
Offline
@Capushon - каждой машине соответствует определенный набор данных (структура) в памяти игры, где хранятся номер модели, данные о физике и т.п. Некоторые байты в этой структуре не используются. И в них можно записывать свои значения, если использовать опкоды
0A97: 0@ = car 1@ struct 1@ += 1000 // какое то смещение до неиспользуемого байта 0A8C: write_memory 1@ size 1 value 1 virtual_protect 0
@yelmi - над интерфейсом возможно следовало бы подумать По крайней мере ту шкалу, которая выше всех, точно следовало бы опустить пониже, она прям по центру экрана торчит
Offline
@yelmi - над интерфейсом возможно следовало бы подумать По крайней мере ту шкалу, которая выше всех, точно следовало бы опустить пониже, она прям по центру экрана торчит
Можно сделать и ниже, а вообще эта шкала бутет только при наличии нитро в авто.
Offline
Pages: 1