You are not logged in.
Недавно узнал про ключевое слово absolute в Delphi. Позволяет напрямую задать адрес переменной. Значит, вот такое будет работать:
Var Gravity : Single absolute $863984 ; Gravity := 0.5;
или там есть какие-то заковыки?
Еще вопрос: как сделать либо подмену анимации ходьбы игрока либо просто сделать чтоб игрок начал ходить с нужной анимкой
Если нужно из готовых, то есть опкод:
0245: set_actor $ACTOR_SMOKE walk_style_to "FATMAN"
https://sannybuilder.com/dev/sa_opnames.txt
оригинальные рокстаровские названия скриптовых команд, которые были опубликованы вместе с SA Mobile.
Спустя много лет интересно сравнить, насколько точны или наивны были наши предположения о смысле тех или иных опкодов.
Оооо! Это именно то, что надо!
Поможет сопоставить нативы GTA 4/5 c Опкодавми GTA SA.
Запомню ссылку:
Реверс-инжиниринг целочисленного деления на константухотелось бы собрать побольше примеров, потому что в листингах такое часто встречается
Ээ, ссылка битая.
Да чего задумываться-то. Просто забинди все клавиши не на кнопки, а на комбинацию кнопок. К примеру, не <K>, а <ctrl>+<K>, и т.д.
Не одна.
Сейчас в SA:MP играют либо школьники, либо читеры. Очень часто попадается смесь первого и второго (т.е. твой случай). По-моему, очевидно, что человек, который изучал скриптинг ради того, чтобы изменить и усовершенствовать игру, никак не заинтересован помочь человеку, который в скриптинге видит лишь возможность получить какоое-либо преимущество над другими в мультиплеере.
Если "Никто не поможет и не ответит", просто промолчи. Нечего тут оффтоп разводить. Если очень надо, открой другую тему, под названием "моё эссе на тему морали в компьютерных играх".
The PC version of GTA V is used new encryption algorithm, I don't know what exactly it called so I name it "Rockstar Annoying Encryption Algorithm".
At the current time we can only decrypt data so that is the reason we can't provide editing features in upcoming update.
Если шифрование ассиметричное, то дело плохо. Моддинг без хака эксешника (наподобие xliveless) будет совершенно невозможен.
listener во времена GTA4 выкладывал реверсированные исходники основных классов и шаблоны для 010 для архивов и текстур. Надеюсь, когда-нибудь в будущем он выложит что-то подобное. Время OpenLosSantos!
--------------------
EDIT:
Хм, судя по посту listener'а на GTAForums, он больше никогда не будет ничего никому объяснять и релизить шаблоны, как было в 2008. Особой причины я так и не понял. Не хватает времени?
Если на видеокарте меньше 2G памяти, можно не пытаться запускать
1 Гиг. Запустил. Играю.
Конечно, была проблема с кириллическим именем пользователя, но я исправил это с помощью
MKLINK /D C:\Users\EngName "C:\Users\Имярёк" cd C:\Games\Rockstar Games\Grand Theft Auto V set APPDATA=C:\Users\EngName\AppData\Roaming set HOMEPATH=\Users\EngName set LOCALAPPDATA=C:\Users\EngName\AppData\Local set TEMP=C:\Users\EngName\AppData\Local\Temp set TMP=C:\Users\EngName\AppData\Local\Temp set USERNAME=EngName set USERPROFILE=%SystemDrive%\Users\EngName GTAVLauncher.exe
Надеяться не вредно, вредно не надеяться.
Там все плохо. Даже если расшифровать exe-шник, не становится ни капли легче.
Ключи-то я достал за пять минут. Проблема в том, что они используются для двух .rpf (из, примерно, полутора тысяч).
Что делать с остальными - пока нет ни малейших идей.
Рокстар сделала моддинг невозможным (пока, надеюсь), а тем временем, в сети читеры всё читерят с помощью трейнеров... Стыдоба.
P.S. А можно просто выдрать YTD и т.д. из памяти напрямую, когда они уже загружены в неё? И тестурки/модели менять тоже внутри памяти?
Есть новости по скриптингу в GTA V? Кто-нибудь планирует сделать/делает полноценный компилятор/декомпилятор скриптов для GTA V PC?
Если нет ( ), то будут ли хуки?
Никакой это не программинг, а реальный скриптинг, как в SB. Просто синтаксис немного другой.
И не обязательно использовать MSVC++, можно пользоваться легковесным Geany.
Как выйдет Cleo IV, напишу статью про это.
В Вайс-сити там для игрока нужен опкод не для актёра, а для игрока:
035E: set_player $PLAYER_CHAR armour_to 100
Если нужно для своих актёров, то опкод 035F.
Есть же компилятор для SCO-скриптов - http://sannybuilder.com/forums/viewtopic.php?id=1711
Вопрос №2: Можно ли как - нибудь разрешить плавать ТОЛЬКО ОДНОМУ АВТОМОБИЛЮ, и чтобы у него колёса "не раскладывались"?
тут у меня есть старый скрипт для плавания по воде, как раз для этого случая -
thread 'seaways' {$CLEO} var $PLAYER_ACTOR: Actor $PLAYER_CHAR: Player 0@: Car 1@: Float 2@: Float 3@: Float 4@: Float 5@: Float 6@: Car 8@: Actor 13@: array 6 of Float end const BOAT_MODEL=#DINGHY {#COASTG} end 0A8C: write_memory 0x96918C size 1 value 0 virtual_protect 0 060A: create_decision_maker_type 0 store_to 12@ 0708: reset_decision_maker 12@ event 13 0708: reset_decision_maker 12@ event 56 0708: reset_decision_maker 12@ event 0 0708: reset_decision_maker 12@ event 44 while true if $PLAYER_CHAR.Defined then if and $PLAYER_ACTOR.Driving 84A7: not actor $PLAYER_ACTOR driving_boat then 03C0: 0@ = actor $PLAYER_ACTOR car while $PLAYER_ACTOR.InCar(0@) if 02bf: car 0@ sunk then // #launch // #jetmax //#COASTG //#DINGHY 09B9: show_entered_car_name 0 Model.Load(BOAT_MODEL) while not Model.Available(BOAT_MODEL) wait 0 end 0@.StorePos(1@, 2@, 3@) 3@ -= 1.2 3@ -= 0.4 6@ = Car.Create(BOAT_MODEL, 1@, 2@, 3@) Model.Destroy(BOAT_MODEL) {0A97: 9@ = car 0@ struct 9@+=1145 0A8C: write_memory 9@ size 1 value 2 virtual_protect 0 9@+=1 0A8C: write_memory 9@ size 1 value 2 virtual_protect 0 9@+=1 0A8C: write_memory 9@ size 1 value 2 virtual_protect 0 9@+=1 0A8C: write_memory 9@ size 1 value 2 virtual_protect 0 } 0A97: 9@ = car 0@ struct 0A97: 10@ = car 6@ struct 9@+=20 10@+=20 0A8D: 9@ = read_memory 9@ size 4 virtual_protect 0 0A8D: 10@ = read_memory 10@ size 4 virtual_protect 0 for 32@ = 0 to 14 0A8D: 11@ = read_memory 9@ size 4 virtual_protect 0 0A8C: write_memory 10@ size 4 value 11@ virtual_protect 0 9@+=4 10@+=4 end 0A97: 9@ = car 0@ struct 0A97: 10@ = car 6@ struct 9@+=68 10@+=68 for 32@ = 1 to 6 0A8D: 11@ = read_memory 9@ size 4 virtual_protect 0 0A8C: write_memory 10@ size 4 value 11@ virtual_protect 0 9@+=4 10@+=4 end 0338: set_car 6@ visibility 0 {0174: 4@ = car 0@ Z_angle 06BE: 5@ = car 0@ y_angle 0175: set_car 6@ Z_angle_to 4@ 0731: set_car 6@ y_angle_to 5@} // 0362: remove_actor $PLAYER_ACTOR from_car_and_place_at 0.0 0.0 0.0 //09B9: show_entered_car_name 0 036a: put_actor $PLAYER_ACTOR in_car 6@ //09B9: show_entered_car_name 1 0683: attach_car 0@ to_car 6@ with_offset 0.0 0.0 0.0 rotation 0.0 0.0 0.0 0852: set_car 6@ damages_visible 0 7@ = 0@.Health 6@.Health = 7@ 0129: 8@ = create_actor_pedtype 23 model #NULL in_car 0@ driverseat 036A: put_actor 8@ in_car 0@ 02ab: set_actor 8@ immunities BP 1 FP 1 EP 1 CP 1 MP 1 04D8: set_actor 8@ drowns_in_water 0 039e: set_actor 8@ locked 1 while_in_car 0526: set_actor 8@ stay_in_car 1 054A: set_actor 8@ immune_to_car_headshots 1 020A: set_car 0@ door_status_to 3 060B: set_actor 8@ decision_maker_to 12@ while true if not $PLAYER_CHAR.Defined then Break end if not $PLAYER_ACTOR.InCar(6@) then Break end if 02BF: car 6@ sunk then 32@ = 0 end if and 82BF: not car 6@ sunk 32@ > 666 {ms} then // 32@ = 0 Break end if 8686: not car 0@ attached then 0683: attach_car 0@ to_car 6@ with_offset 0.0 0.0 0.0 rotation 0.0 0.0 0.0 end 7@ = 6@.Health 0@.Health = 7@ wait 0 end end wait 0 end //065C: release_decision_maker 9@ if and 056E: car 6@ defined 056E: car 0@ defined $PLAYER_CHAR.Defined then 0A97: 9@ = car 6@ struct 9@+=68 for 31@ = 0 to 5 0A8D: 13@[31@] = read_memory 9@ size 4 virtual_protect 0 9@+=4 end 020A: set_car 0@ door_status_to 0 0684: detach_car 0@ 0.0 0.0 0.0 collision_detection 1 0A97: 9@ = car 6@ struct 0A97: 10@ = car 0@ struct 9@+=20 10@+=20 0A8D: 9@ = read_memory 9@ size 4 virtual_protect 0 0A8D: 10@ = read_memory 10@ size 4 virtual_protect 0 for 32@ = 0 to 14 0A8D: 11@ = read_memory 9@ size 4 virtual_protect 0 0A8C: write_memory 10@ size 4 value 11@ virtual_protect 0 9@+=4 10@+=4 end if //and 80E1: not player 0 pressed_key 15 // 02BF: car 0@ sunk then // 0362: remove_actor $PLAYER_ACTOR from_car_and_place_at 0.0 0.0 0.0 036a: put_actor $PLAYER_ACTOR in_car 0@ end 0A97: 10@ = car 0@ struct 10@+=68 for 31@ = 0 to 5 0A8C: write_memory 10@ size 4 value 13@[31@] virtual_protect 0 10@+=4 end end if 056E: car 6@ defined then 6@.Destroy if 056D: actor 8@ defined then 8@.DestroyInstantly end end 0@.RemoveReferences wait 0 09B9: show_entered_car_name 1 end end wait 0 end
Да, спасибо за хорошую программку. Продолжай делать программы для Четвёрки.
Да и зачем она?
А зачем ты живёшь?
Жаль.
Ну, исходники открыты, можешь поправить что надо.
Я с языками программирования не знаком. Пишу так, как компилирует СБ. А он таких опкодов (<>) не знает. Он их на "огород" меняет.
Знает, нормально компилирует.
Скажи, ты вместо открытия своего исходника каждый раз декомпилируешь скрипт? Это распространённая ошибка новичков, надо не декомпилировать каждый раз, а открыть свой txt исходник и работать с ним.
Сделайте что-нибудь, форум заспамили спам-боты.
Хм... То, что ждущий режим имеет несколько разных режимов, настраиваемых в BIOS, я знал и раньше.
Про остальное тоже слышал.
Честно говоря, странно видеть здесь рассуждения на уровне потребителей Дом-2 cry
Укажи пожалуйста противоречия между постами выше и приведённой статьёй.
Спящий=пониженное энергопотребление, гибернация=выключение. Оба с сохранением сеанса.
переведено так в Win7. В XP -
Ждущий режим=пониженное энергопотребление, Спящий режим=выключение с сохранением ОП на Ж/Д.
Не удивительно, что их путают. Локализаторы загнули путаницу с терминологией.
Ну, минут 10 было кажется один раз в Win7.
Попробуй поотключать некоторые фоновые программы, может они не дают перейти в гипернацию.
У меня в XP иногда виснет на "Подготовка к переходу в спящий режим", по 6 часов так стояло, приходилось вырубать в ручную.
Да, даже один гигабайт порой очень долго сохраняет на Win7.
[---]
P.S. Кстати, после Спящего режима (XP) / Гипернации (7) поключение к интернету через VPN не сохраняется. Я знаю, как сделать автоподключение при старте ОС, но как сделать автоподключение при выходе из спящего режима в XP и Win7?
На ум только приходит регулярная проверка системного времени - если между проверками прошло много времени - значит, вернулся из гипернации, и надо сделать подключение. Но это какой-то некрасивый способ.
У меня ещё один немного "туповатый" вопрос - нужно ли сперва удалять ссылки на машину/объект/актёра перед удалением? То есть:
01C4: remove_references_to_object 30@ // This object will now disappear when the player looks away 0108: destroy_object 30@Или использование опкода 01C4 здесь необязательно?
Нельзя так делать, на опкоде 0108 игра скорее всего зависнет. Если удаляешь, надо без 01C4.
listener вроде начал делать какой-то компилятор, но проект застыл в неопределённом состоянии. На GTAModding вроде было сказано о его временном нежелании продолжать публичные проекты.
Ещё несколько человек пытались сделать полуассемблер, но не вышло.
Так что для GTA4 солнце скриптинга может и не взойти...
Делай через квик опкод
Фу, он глючный и не совместим с ScmLog. Лучше делай через dll, благо Cleo может их загружать и использовать экспортируемые функции.