#51 Re: Вопросы по скриптингу » Один вопрос » 06-04-2010 21:15

Сегодня столкнулся с очень интересным глюком. Вот два очень простых скрипта:

Скрипт №1:

wait 3000 
01E4: show_text_1number_lowpriority GXT 'number' number 10 time 2000 flag 1
end_thread

Скрипт №2:

0000: NOP 
end_thread

Если в памяти первый скрипт расположен перед вторым - всё нормально. Но если поменять их местами - первый скрипт почему-то не работает, текст на экран не выводится. Сделал дамп памяти - всё вроде правильно.

Прямо мистика какая-то. Помогите разобраться.

#52 Re: Программирование » Несколько вопросов по Delphi » 06-04-2010 20:46

Спасибо! Тут у меня ещё один вопрос возник:

Если не ошибаюсь, типу Float в GTA соответствует типу Single в Delphi. Тогда почему при передачи значения в скрипт всегда получаю нуль?

#53 Программирование » Несколько вопросов по Delphi » 03-04-2010 23:26

CraZZZy-GameRRR
Replies: 7

Сравнительно недавно начал изучать Delphi, и у меня возникли некоторые вопросы по нему.

Вопрос №1.
Нужно с помощью DLL прочитать значение из INI-файла и передать его в скрипт. Функция постоянно возвращает дефолт. В чём ошибка?

Исходник DLL`ки:

uses
  SysUtils,
  Classes,
  IniFiles;

function ReadINI(pcSection, pcParameter: PChar): Integer; stdcall;
var
   IniFile: TIniFile;
   sSection: String;
   sParameter: String;

begin
  sSection := String(pcSection);
  sParameter := String(pcParameter);
  IniFile := TIniFile.Create('G:\test.INI');
  Result := IniFile.ReadInteger(sSection, sParameter, 0);
  IniFile.Free;
end;

exports
  ReadINI;

Исходник скрипта:

thread 'DLLTest'
wait 5000
0A99: chdir 0

:Section
0662: NOP 'General'

:Parameter
0662: NOP 'Number1'

0A9F: 10@ = current_thread_pointer
10@ += 16
0A8D: 10@ = read_memory 10@ size 4 virtual_protect 0

VAR
    10@: Integer
    11@: Integer
END

11@ = 10@

10@ -= @Section
10@ += 2

11@ -= @Parameter
11@ += 2

if 
    0AA2: 0@ = load_library "CLEO\INIReader.dll"
then
    if
        0AA4: 1@ = get_proc_address 'ReadINI' library 0@
    then
        0AA7: call_function 1@ num_params 2 pop 0 10@ 11@ 2@
        01E4: show_text_1number_lowpriority GXT 'NUMBER' number 2@ time 2000 flag 1
    else
        01E4: show_text_1number_lowpriority GXT 'NUMBER' number -1 time 2000 flag 1
    end
    0AA3: free_library 0@
else
    01E4: show_text_1number_lowpriority GXT 'NUMBER' number -2 time 2000 flag 1
end
end_thread

Вопрос №2.
Как из DLL определить папку, в которой она находится?


Вопрос №3.
Как в Delphi создать тип float и перевести в него переменную типа String или PChar?

#54 Re: Вопросы по скриптингу » Один вопрос » 23-03-2010 23:02

Как определить, фары у машины были бы включены или нет, если они не были бы разбиты?

#55 Re: Работа с памятью, EXE » Разыскиваю адрес памяти » 22-03-2010 20:22

~AquaZ~ wrote:

Приведи код.

Не думаю, что в коде проблема. Если просто нажать ручник - то же самое. Наверно, глюк игры.

//-------------MAIN---------------
0000: NOP 

1@ = 0xB73458
1@ += 13

 :thread
wait 0
if
    actor.Driving($PLAYER_ACTOR)
jf @thread  
0A8C: write_memory 1@ size 1 value 255 virtual_protect 0
jump @thread

[---]
И ещё, если не трудно, помоги разобраться в разнице между +12 и +13. Я только заметил, что если нажать ручник, изменяется значение только в +12.

#57 Re: Работа с памятью, EXE » Разыскиваю адрес памяти » 22-03-2010 18:08

Зато я сам нашёл! Проверял все смешения от 0xB73458 (пул управления авто) и наконец нашёл. Их почему-то два оказалось: +12 и +13. Только тут один глюк есть - CJ не может выйти из машины, как будто у неё заперты двери. Не знаешь почему?

#58 Re: Работа с памятью, EXE » Разыскиваю адрес памяти » 21-03-2010 21:45

Определить, нажат он или нет. (Проверка клавиши мне не подходит.)

И ещё значение изменить.

#59 Работа с памятью, EXE » Разыскиваю адрес памяти » 21-03-2010 21:38

CraZZZy-GameRRR
Replies: 11

Какой адрес отвечает за ручной тормоз в авто?

На gtamodding не нашёл. Помогите кто-нибудь. Ну пожалуйста...

#60 Re: Вопросы по скриптингу » Один вопрос » 17-03-2010 11:31

Кто нибудь подскажите код -> как получить текущие компоненты машины

096D: get_car 0@ car_component 7 on_slot 17@

-------------------------------------------

Теперь мой вопрос.
Подскажите, пожалуйста, адрес ручника в памяти, а то на gtamodding найти не удалось.

#61 Re: Вопросы по скриптингу » Один вопрос » 04-03-2010 20:10

Как вычислить адрес, загруженной в память текстуры?

#62 Re: Вопросы по скриптингу » Один вопрос » 27-02-2010 21:47

Как вычисляется адрес строки в скрипте?

#64 Re: Вопросы по скриптингу » Один вопрос » 23-02-2010 22:16

Задача такая - создать и подключить к игре ASI плагин.

Вообщем, делаю так:
1) Создал функцию.
2) Запихнул её в DLL-файл.
3) Сохранил в папке с GTA SA с расширением ASI.

Как теперь подключить функцию к моему скрипту. Я так понимаю опкодом 0AA7? Если да, то как вычислиь адрес функции?

Пожалуйста, помогите!

#65 Re: Вопросы по скриптингу » Один вопрос » 14-02-2010 23:08

Подскажите пожалуйста, почему при создании короны опкодом 024F она исчезает во время движения автомобиля, а после остановки появляется снова?

#66 Работа с памятью, EXE » Вычисление адреса » 14-02-2010 14:51

CraZZZy-GameRRR
Replies: 0

Как вычислить адрес, где расположен хэндл какого-либо педа и их общее кол-во?

#67 Re: Вопросы по скриптингу » Один вопрос » 20-10-2009 16:21

Den_spb wrote:
CraZZZy-GameRRR wrote:

Как из main.scm удалить ТОЛЬКО МИССИИ (без под-миссий, мини-игр, экстернал скриптов и т.д.)?
Может ссылку на уже готовый файл дадите или поможете советом?
Помогите пожалуйста! Очень нужно.

Посмотри на сайте ZAZ. Кажется то.

Спасибо!

#68 Re: Вопросы по скриптингу » Один вопрос » 19-10-2009 20:59

Как из main.scm удалить ТОЛЬКО МИССИИ (без под-миссий, мини-игр, экстернал скриптов и т.д.)?
Может ссылку на уже готовый файл дадите или поможете советом?
Помогите пожалуйста! Очень нужно.

#69 Re: Вопросы по скриптингу » Один вопрос » 12-10-2009 21:14

Но он же после чтения закрывается опкодом 0A9B: closefile 21@, а потом снова проверяется на существование и открывается с помощью проверки if 0A9A: 21@ = openfile "CLEO\Settings.ini" mode 0x72?

#70 Re: Вопросы по скриптингу » Один вопрос » 12-10-2009 20:34

Когда первый раз читаю файл нижеуказанным скриптом всё нормально. При следующих попытках чтения в переменную 20@ записывается какая-то чепуха.

0A99: chdir 0
if
    0A9A: 21@ = openfile "CLEO\Settings.ini" mode 0x72
jf @THREAD_3    
0A9D: readfile 21@ size 3 to 20@
0A9B: closefile 21@

Может, я что не так делаю?

#71 Re: Программирование » Помогите написать cleo-плагин для GTA San Andreas » 05-10-2009 19:41

От меня тоже спасибо! С разрешением всё понятно, с текстом кое-как сам разобрался.

#72 Re: Программирование » Помогите написать cleo-плагин для GTA San Andreas » 04-10-2009 19:06

PIT wrote:

вообщето плагины на делфи пишутся smile

Для меня не принципиально - я ни ассемблер, ни делфи не знаю. Знаю только старый добрый бэйсик, да и то "поверхностно".

3Doomer wrote:

ширина и высота экрана в СА всегда одинакова

Это в единицах измерения расстояния на экране, а мне нужно узнать именно разрешение экрана в пикселях.

Что касается считывания текста из файла, попробовал написать следующий скрипт:

:THREAD_1
0A99: chdir 0
0A9A: $FileHandle = openfile "/CLEO/CRSPDconfig.ini" mode 0x72
if
    $FileHandle
jf @THREAD_3 
0A9C: $FileSize = file $FileHandle size 
0A9D: readfile $FileHandle size $FileSize to 0@

:THREAD_3

Текст

[panel size]

в INI-файле в кодировке ANSII весит ровно 3 байта, следовательно, в переменную 3@ попадёт как раз нужное мне число 15 и ещё останется два свободных разряда (число может быть от одного до трёх разрядов типа integer).

Посмотрите, правильно?

И ещё небольшой вопрос - в опкоде

0A9A: $FileHandle = openfile "/CLEO/CRSPDconfig.ini" mode 0x72

регистр важен?

#73 Программирование » Помогите написать cleo-плагин для GTA San Andreas » 03-10-2009 20:52

CraZZZy-GameRRR
Replies: 9

Хочу написать плагин для CLEO 3, но, увы и ах, не знаю ассемблер.

Вообщем, задача такая:
1) считываем ширину экрана и записываем её в сleo-переменную 105
2) считываем высоту экрана и записываем её в сleo-переменную 106
3) из файла CRSPDconfig.ini, находящегося в корневой папке CLEO, записавыем число из второй строки в сleo-переменную 107

[panel size]
15

Можете готовую DLL`ку сделать, или в крайнем случае исходник в *.asm дать?

#74 Re: Вопросы по скриптингу » Один вопрос » 27-09-2009 20:03

3Doomer wrote:

здоровье меньше 200

Какой опкод заставляет машину дымиться?

Просьба воздержаться от использования красного цвета без экстренной необходимости

#75 Re: Вопросы по скриптингу » Один вопрос » 26-09-2009 20:34

Какой опкод заставляет машину дымиться?

Board footer

Powered by FluxBB