You are not logged in.
Точно, забыл, так наверное только в CLEO4 можно)
PS Так как ты написал работать не будет)
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
В КЛЕО4 размер чтения/записи по-прежнему составляет 1,2,4 байта. Если бы была возможность записывать 6 байт, то в опкод следовало подставлять число 0x909090909090, т.к. при записи 0x90 оставшиеся 5 байтов заполнятся нулями, что неправильно - надо записать 0x90 по каждому байту команды.
Правильный вариант приведён в сообщении 23.
Offline
Точно, забыл, так наверное только в CLEO4 можно)
PS Так как ты написал работать не будет)
Будет, я ж всё тестирую досконально перед тем как выложить.
Пришлось даже недавно отказаться от SAAP 1.1 из за пропадания игровых звуков, поставил таки 1.8, пофиксил код квиксейва и автосейва, теперь не вылетают, и работают точно также.
Offline
@Den_Spb:
Оставшиеся байты заполнятся числом опкодом-нопом 0x90
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Провёл небольшой эксперимент:
0A8C: write_memory 0x400000 size 6 value 0x90 virtual_protect 1
--
0A8C: write_memory 0x400000 size 6 value 0x909090909090 virtual_protect 1
Offline
А вот ещё один адрес - 0x6A70B8
NOP 6 байт и когда здоровье машины уйдёт в минус, она не загорится и не взорвётся. Тоже самое с переворачиванием.
Last edited by Sergey81 (22-05-2011 10:56)
Offline
@Den_Spb:
Оставшиеся байты заполнятся числом опкодом-нопом 0x90
Запись
0A8C: write_memory 0xC0BC15 size 4 value 0x90 virtual_protect 0
равносильна
0A8C: write_memory 0xC0BC15 size 4 value 0x00000090 virtual_protect 0
т.к. в опкоде указывается размер записываемого числа, а не количество копирований одного и того же числа по разным адресам.
Last edited by Den_spb (21-05-2011 16:29)
Offline
@Den_Spb
Если заполняемый размер - больше 4 байт, то происходит "автозаполнение", так сказать.
Это же "фишка" CLEO4))
@Sergey81 - компилил на CLEO4??
когда здоровье машины уйдёт в минус, она не загорится и не взорвётся.
Если бы не загоралась, когда перевернулась, было бы круто. А просто отключать взрыв - не вижу смысла.
Last edited by DK22Pac (21-05-2011 17:20)
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
@DK22Pac - CLEO3 конечно.
Если бы не загоралась, когда перевернулась, было бы круто. А просто отключать взрыв - не вижу смысла.
Так она и не загорается. Правда там и без этого косяки появляются.
Offline
Написал не глючную версию скрипта, теперь если здоровье машины меньше нуля(от повреждений или если она просто перевернулась), двигатель заглохнет. Если в это время нанести ещё больший урон, она загорится и взорвётся.
{$CLEO} 0000: //0A8C: write_memory 0x859F80 size 4 value 100.0 virtual_protect 1 {0AB1: call_scm_func @__VarToOffset 1 varnumber 15 result 20@ 15@ = 100.0 0A8C: write_memory 0x6A70C0 size 4 value 20@ virtual_protect 0 } 0A8C: write_memory 0x6A70C0 size 4 value 0x288685 virtual_protect 1 while true wait 0 if 00DF: actor $PLAYER_ACTOR driving then 0811: 0@ = actor $PLAYER_ACTOR car 0227: 4@ = car 0@ health if 4@ <= 249 then if and 84A7: not actor $PLAYER_ACTOR driving_boat 89AE: not actor $PLAYER_ACTOR driving_train 84C8: not actor $PLAYER_ACTOR driving_flying_vehicle then 02D4: car 0@ turn_off_engine 10@ = true end if or 04A7: actor $PLAYER_ACTOR driving_boat 09AE: actor $PLAYER_ACTOR driving_train 04C8: actor $PLAYER_ACTOR driving_flying_vehicle then 0A8C: write_memory 0x6A70C0 size 4 value 0x809F85 virtual_protect 1 //15@ = 250.0 else 0A8C: write_memory 0x6A70C0 size 4 value 0x288685 virtual_protect 1 //15@ = 100.0 end end end if and 10@ == true 056E: car 0@ defined then 03ED: set_car 0@ disable_flipped_explosion_when_empty true 10@ = false end // 03F0: enable_text_draw 1 //045B: draw_text_2numbers 320.0 390.0 GXT 'msefct' numbers 4@ 4@ end //0A93: end_custom_thread { :__VarToOffset 0A9F: 23@ = current_thread_pointer 23@ += 0x3C 0@ *= 4 005A: 23@ += 0@ // address of the local variable 0AB2: ret 1 23@ }
Last edited by Sergey81 (25-05-2011 11:18)
Offline
@mfisto - Работает и так, смысл что-то менять?
Offline
Ошибки там нет. В структуре машины значение здоровья представлено дробным числом, но опкод 0227 возвращает значение здоровья в виде целого числа (переводит дробное в целое).
Last edited by Den_spb (22-05-2011 17:42)
Offline
Адаптировал clever_trams.cs и star_for_red_3.cs от Den_spb под клео 3.
Если кому нужно, код здесь:
clever_trams.cs - http://pastebin.com/zEXZrUVm
star_for_red_3.cs - http://pastebin.com/b8HrtaLy
Offline
Очередная полезность, дополнение к коду из поста 35:
0A8C: write_memory 0x570E14 size 2 value 0x1DEB virtual_protect 1
Теперь у перевёрнутой машины здоровье не будет сбрасываться на ноль, чтобы можно её было перевернуть и ехать дальше.
Offline
О, классный опкод!
Offline
Не опкод, а адрес памяти.
Offline
Ну и опкод тоже, столько полезных функций открывает...
Offline
{$CLEO} 0000: 0A8C: write_memory 0x00732926 size 4 value 0x00858FD8 virtual_protect 1 //[(float)300.0000] Vehicle LOD threshold, default: 70.0f 0A8C: write_memory 0x00732978 size 4 value 0x00858FD8 virtual_protect 1 //[(float)300.0000] Vehicle LOD threshold, default: 70.0f 0A8C: write_memory 0x004250F0 size 4 value 0x0085AB00 virtual_protect 1 //[(float)1500.0000] onscreen spawn range for vehicles, default: 110.0f //0A8C: write_memory 0x00431A24 size 4 value 0x0085AB00 virtual_protect 1 //[(float)1500.0000] unknown //0A8C: write_memory 0x00431A7C size 4 value 0x0085AB00 virtual_protect 1 //[(float)1500.0000] unknown 0A8C: write_memory 0x004253E3 size 4 value 0x00858EDC virtual_protect 1 //[(float)600.0000] DespawnOffscr? 0A8C: write_memory 0x00431A24 size 4 value 0x00858B40 virtual_protect 1 //unknown 50.0 0A8C: write_memory 0x0073295E size 4 value 0x00863994 virtual_protect 1 //[(float)220.0000] pedsDrawDistanceInstall 0A8C: write_memory 0x006120FF size 4 value 0x00858EDC virtual_protect 1 //[(float)600.0000] ?absMaxDespawnOnscrInstall 0A8C: write_memory 0x00612128 size 4 value 0x00863994 virtual_protect 1 //[(float)220.0000] unknown absMaxDespawnOnscrInstall 0A8C: write_memory 0x00612142 size 4 value 0x00B6F11C virtual_protect 1 //[(float)0.9563] unknown 0A8C: write_memory 0x86D284 size 4 value 600.0 virtual_protect 1 // ped spawn distance 0A8C: write_memory 0x871008 size 4 value 500.0 virtual_protect 1 // spawnOffscrRingSizeInstall 0A93:
Я изучил VC.Traffic и решил поискать аналогичные адреса для SA. Вроде как что-то получилось, но надо тестить. Увеличена дистанция прорисовки машин и педов, соответственно и их лодов тоже.
PS. Скрины сделаны с немного другими значениями.
Last edited by Sergey81 (18-06-2011 10:03)
Offline
А можете увеличить дистанцию прорисовки в 2,5 раза, относительно этих значений?
Offline
Позвольте спросить, в 19 посте Sergey81 давал ссылку на канал UT - там спидометр, с названиями ТС (маленьким, аккуратным шрифтом). Никто не подскажет, где можно найти такой?
Извине за флуд. В PM написал, но не знаю, будет ли ответ.
Offline
{$CLEO} 0000: 0A8C: write_memory 0x60B4FA size 4 value 0x90909090 virtual_protect 1 0A8C: write_memory 0x60B4FE size 2 value 0x9090 virtual_protect 1 0A93: end_custom_thread
А вот это круто. Проверил, работает как часы. Осталось только отключить перезарядку оружия при подбирании патронов к нему. Есть у кого мысли по этому поводу?
Offline
Наверняка, всё зарыто в processPickup (0x457410)
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Наверняка, всё зарыто в processPickup (0x457410)
В таком случае я бы мог как-нибудь разобраться с этим, но, увы, в скриптинге знаю так - основы - куда уж мне операции с памятью проводить
Offline