#1 Работа с памятью, EXE » Ключевое слово 'absolute' в Delphi и ASI-плагины » 13-06-2018 18:44

VcSaJen
Replies: 0

Недавно узнал про ключевое слово absolute в Delphi. Позволяет напрямую задать адрес переменной. Значит, вот такое будет работать:

 Var
   Gravity : Single absolute $863984 ;
Gravity := 0.5;

или там есть какие-то заковыки?

#2 Re: Работа с памятью, EXE » Управление анимацией (костями) актера через память (!) » 16-06-2015 18:18

Goldfish wrote:

Еще вопрос: как сделать либо подмену анимации ходьбы игрока либо просто сделать чтоб игрок начал ходить с нужной анимкой

Если нужно из готовых, то есть опкод:

0245: set_actor $ACTOR_SMOKE walk_style_to "FATMAN"

#3 Re: Справочная информация » Новые описания для опкодов » 10-06-2015 11:58

Seemann wrote:

https://sannybuilder.com/dev/sa_opnames.txt
оригинальные рокстаровские названия скриптовых команд, которые были опубликованы вместе с SA Mobile.
Спустя много лет интересно сравнить, насколько точны или наивны были наши предположения о смысле тех или иных опкодов.

Оооо! Это именно то, что надо!  good
Поможет сопоставить нативы GTA 4/5 c Опкодавми GTA SA.

#4 Re: Справочная информация » Организация и анализ структур в коде » 10-06-2015 11:54

Seemann wrote:

Запомню ссылку:
Реверс-инжиниринг целочисленного деления на константу

хотелось бы собрать побольше примеров, потому что в листингах такое часто встречается

Ээ, ссылка битая.

#5 Re: Вопросы по скриптингу » Отключение скрипта во время ввода в чат. » 09-05-2015 13:04

Да чего задумываться-то. Просто забинди все клавиши не на кнопки, а на комбинацию кнопок. К примеру, не <K>, а <ctrl>+<K>, и т.д.

DK22Pac wrote:

Не одна.
Сейчас в SA:MP играют либо школьники, либо читеры. Очень часто попадается смесь первого и второго (т.е. твой случай). По-моему, очевидно, что человек, который изучал скриптинг ради того, чтобы изменить и усовершенствовать игру, никак не заинтересован помочь человеку, который в скриптинге видит лишь возможность получить какоое-либо преимущество над другими в мультиплеере.

Если "Никто не поможет и не ответит", просто промолчи. Нечего тут оффтоп разводить. Если очень надо, открой другую тему, под названием "моё эссе на тему морали в компьютерных играх".

#6 Re: Серия GTA » Grand Theft Auto V » 16-04-2015 07:28

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) будет совершенно невозможен.

#7 Re: Серия GTA » Grand Theft Auto V » 15-04-2015 21:03

listener во времена GTA4 выкладывал реверсированные исходники основных классов и шаблоны для 010 для архивов и текстур. Надеюсь, когда-нибудь в будущем он выложит что-то подобное. Время OpenLosSantos!
--------------------
EDIT:
Хм, судя по посту listener'а на GTAForums, он больше никогда не будет ничего никому объяснять и релизить шаблоны, как было в 2008. Особой причины я так и не понял. Не хватает времени?

#8 Re: Серия GTA » Grand Theft Auto V » 15-04-2015 14:13

Seemann wrote:

Если на видеокарте меньше 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
listener wrote:

Надеяться не вредно, вредно не надеяться.
Там все плохо. Даже если расшифровать exe-шник, не становится ни капли легче.
Ключи-то я достал за пять минут. Проблема в том, что они используются для двух .rpf (из, примерно, полутора тысяч).
Что делать с остальными - пока нет ни малейших идей.

Рокстар сделала моддинг невозможным (пока, надеюсь), а тем временем, в сети читеры всё читерят с помощью трейнеров... Стыдоба.

P.S. А можно просто выдрать YTD и т.д. из памяти напрямую, когда они уже загружены в неё? И тестурки/модели менять тоже внутри памяти?

#9 Программы для GTA » Скриптинг в GTA V - миф или рельность? » 12-06-2014 09:51

VcSaJen
Replies: 4

Есть новости по скриптингу в GTA V? Кто-нибудь планирует сделать/делает полноценный компилятор/декомпилятор скриптов для GTA V PC?

Если нет ( sad ), то будут ли хуки?

#10 Re: Вопросы по скриптингу » Один вопрос » 20-11-2011 14:32

Никакой это не программинг, а реальный скриптинг, как в SB. Просто синтаксис немного другой.
И не обязательно использовать MSVC++, можно пользоваться легковесным Geany.
Как выйдет Cleo IV, напишу статью про это.

#11 Re: Вопросы по скриптингу » Один вопрос » 18-11-2011 07:54

В Вайс-сити там для игрока нужен опкод не для актёра, а для игрока:

035E: set_player $PLAYER_CHAR armour_to 100

Если нужно для своих актёров, то опкод 035F.

#12 Re: Беседка » Когда же?! » 17-11-2011 12:26

Есть же компилятор для SCO-скриптов - http://sannybuilder.com/forums/viewtopic.php?id=1711

#14 Re: Вопросы по скриптингу » Один вопрос » 28-10-2011 12:37

Dr_Emmett_Brown_2011 wrote:

Вопрос №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

#15 Re: Программы для GTA » Really SET Editor (репост из gtamodding.ru) » 19-10-2011 02:06

Да, спасибо за хорошую программку. Продолжай делать программы для Четвёрки.

~AquaZ~ wrote:

Да и зачем она?

А зачем ты живёшь?

#16 Re: Программы для GTA » Компоненты для работы с IMG, RPF, WTD для Delphi » 03-10-2011 01:20

Жаль.

Ну, исходники открыты, можешь поправить что надо.

#17 Re: Вопросы по скриптингу » Один вопрос » 19-09-2011 05:57

Я с языками программирования не знаком. Пишу так, как компилирует СБ. А он таких опкодов (<>) не знает. Он их на "огород" меняет.

Знает, нормально компилирует.
Скажи, ты вместо открытия своего исходника каждый раз декомпилируешь скрипт? Это распространённая ошибка новичков, надо не декомпилировать каждый раз, а открыть свой txt исходник и работать с ним.

#18 Re: О сайте и форумах » Вопросы и предложения » 16-09-2011 06:59

Сделайте что-нибудь, форум заспамили спам-боты.

#19 Re: Беседка » (не)Гибернация » 28-08-2011 16:03

Хм... То, что ждущий режим имеет несколько разных режимов, настраиваемых в BIOS, я знал и раньше.
Про остальное тоже слышал.

Честно говоря, странно видеть здесь рассуждения на уровне потребителей Дом-2 cry

Укажи пожалуйста противоречия между постами выше и приведённой статьёй.

#20 Re: Беседка » (не)Гибернация » 28-08-2011 03:15

Спящий=пониженное энергопотребление, гибернация=выключение. Оба с сохранением сеанса.

переведено так в Win7. В XP -
Ждущий режим=пониженное энергопотребление, Спящий режим=выключение с сохранением ОП на Ж/Д.

Не удивительно, что их путают. Локализаторы загнули путаницу с терминологией.

#21 Re: Беседка » (не)Гибернация » 27-08-2011 16:14

Ну, минут 10 было кажется один раз в Win7.

Попробуй поотключать некоторые фоновые программы, может они не дают перейти в гипернацию.

У меня в XP иногда виснет на "Подготовка к переходу в спящий режим", по 6 часов так стояло, приходилось вырубать в ручную.

#22 Re: Беседка » (не)Гибернация » 27-08-2011 14:49

Да, даже один гигабайт порой очень долго сохраняет на Win7.

[---]
P.S. Кстати, после Спящего режима (XP) / Гипернации (7) поключение к интернету через VPN не сохраняется. Я знаю, как сделать автоподключение при старте ОС, но как сделать автоподключение при выходе из спящего режима в XP и Win7?
На ум только приходит регулярная проверка системного времени - если между проверками прошло много времени - значит, вернулся из гипернации, и надо сделать подключение. Но это какой-то некрасивый способ.

#23 Re: Вопросы по скриптингу » Один вопрос » 26-08-2011 02:10

Dr_Emmett_Brown_2011 wrote:

У меня ещё один немного "туповатый" вопрос - нужно ли сперва удалять ссылки на машину/объект/актёра перед удалением? То есть:

01C4: remove_references_to_object 30@ // This object will now disappear when the player looks away 
0108: destroy_object 30@

Или использование опкода 01C4 здесь необязательно?

Нельзя так делать, на опкоде 0108 игра скорее всего зависнет. Если удаляешь, надо без 01C4.

#24 Re: Вопросы по скриптингу » Один вопрос » 10-08-2011 11:33

listener вроде начал делать какой-то компилятор, но проект застыл в неопределённом состоянии. На GTAModding вроде было сказано о его временном нежелании продолжать публичные проекты.
Ещё несколько человек пытались сделать полуассемблер, но не вышло.

Так что для GTA4 солнце скриптинга может и не взойти...

#25 Re: Вопросы по скриптингу » Один вопрос » 09-08-2011 02:58

Делай через квик опкод

Фу, он глючный и не совместим с ScmLog. Лучше делай через dll, благо Cleo может их загружать и использовать экспортируемые функции.

Board footer

Powered by FluxBB