You are not logged in.
Pages: 1
Бензо-спидометро-мод. Написан с нуля(кроме кусков относящихся к спидометру, которые скопи-пастил).
Как ясно из названия - добавляет бензин и спидометр.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 | { $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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | {$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 0xBA68A 7 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, по желанию, добавить:
1 | LG_ 57 A3C |
Жду конструктивной критики=)
Last edited by flashTrash (01-08-2008 10:55)
Offline
Компилироовать 3 скрипта? Или какой из них?
Offline
Первые два компилить обязательно. Строку
1 | 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 - каждой машине соответствует определенный набор данных (структура) в памяти игры, где хранятся номер модели, данные о физике и т.п. Некоторые байты в этой структуре не используются. И в них можно записывать свои значения, если использовать опкоды
1 2 3 | 0A97: 0@ = car 1@ struct 1@ += 1000 // какое то смещение до неиспользуемого байта 0A8C: write_memory 1@ size 1 value 1 virtual_protect 0 |
@yelmi - над интерфейсом возможно следовало бы подумать По крайней мере ту шкалу, которая выше всех, точно следовало бы опустить пониже, она прям по центру экрана торчит
Offline
@yelmi - над интерфейсом возможно следовало бы подумать
По крайней мере ту шкалу, которая выше всех, точно следовало бы опустить пониже, она прям по центру экрана торчит
Можно сделать и ниже, а вообще эта шкала бутет только при наличии нитро в авто.
Offline
Pages: 1