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 может их загружать и использовать экспортируемые функции.