#176 Re: Sanny Builder и CLEO » Проект CLEO: новые опкоды » 20-04-2007 10:27

Т.е. мне нужна функция на апи, которая возвращает true, если кнопка была отпущена или нажимается (но не нажата). Не знаешь как сделать?

Попробуй через хуки или обрабатывай сообщения, посылаемые программой.

#177 Re: Sanny Builder и CLEO » Проект CLEO: новые опкоды » 20-04-2007 08:59

Кстати, ты как делал проверку нажатия?

SetTimer
GetAsyncKeyState

Вот здесь посмотри: http://foolroot.nm.ru/satrainer.rar

#178 Re: Sanny Builder и CLEO » Проект CLEO: новые опкоды » 18-04-2007 09:58

2All:
satrainer.cleo - простенький трйнер:
http://slil.ru/24253660

Infinite Health       F5
Infinite Ammo         F6
Infinite Money        F7
Freeze Time           F8
Respect               F9

listener:
В Express  нету *.h файлов для компиляции.

#179 Re: Модификации » [EXE|Patch] Радио + перекраска в любой машине » 02-04-2007 09:28

skv1991 wrote:

З.Ы если есть-дайе пожалйста ссылку на Иду5 и краткий справочник по ассемблеру пожалуйста

В этом случае поиск по форуму используют smile Не раз уже обсуждалось smile

http://sannybuilder.com/forums/viewtopic.php?id=41

http://sannybuilder.com/forums/viewtopi … d=189#p189

#180 Re: О сайте и форумах » Вопросы и предложения » 29-03-2007 11:30

вот насчет Игромании спасибо за наводку, я и не знал, что этот бл**ский журнал что-то опять взял без спросу...

А имени автора там нет?

Хорошо что хоть так написали:

один из лучших gta-кодеров, Seemann

#181 Re: О сайте и форумах » Вопросы и предложения » 01-03-2007 11:55

по сути одна тема, просто ссылки на разные посты. И так для любой темы

Как тогда еще можно сделать?

И вообще, создай уж тогда тему "Архив форума"

В каком разделе? В этом? И можно ли с 14 поста все переместить?

#182 Re: О сайте и форумах » Вопросы и предложения » 01-03-2007 11:39

Там 90% лишнего, топиков всего несколько десятков, но они дублируются по сто раз в архиве. Нужно выкачивать только по ссылке
http://www.sannybuilder.com/forums/viewtopic.php?id=X

Я качал телепортом все подряд с адреса http://sannybuilder.com/forums/. Там действительно много лишнего: регистрация, поиск, пользователи, но дублирующихся не должно быть.

И вообще, создай уж тогда тему "Архив форума"

А что, туда писать?

#183 Re: О сайте и форумах » Вопросы и предложения » 01-03-2007 11:05

http://slil.ru/24011263

Архив от 1.03.07 / 12:36 MSK
34,3 МБ ужались в 461 КБ, формат 7z

#184 Re: О сайте и форумах » Вопросы и предложения » 01-03-2007 10:32

Seemann wrote:

Вообще-то можно, кто бы еще этим занялся?..

Если будет возможность я мог бы скачать, хорошо что скорость позволяет smile Сейчас попробую...

#185 Re: Справочная информация » Косметическое изменение cutscene. » 27-02-2007 13:52

*.ifp в GTA3 имеею такойже заголовок, как и gta sa. Можно попробовать сохранять как gta3 формат.

ifpop5.th.gif

В первом окне для gta3, во втором для gta sa.

---
з.ы. А для девятого макса плагины есть.

#186 Re: О сайте и форумах » Вопросы и предложения » 27-02-2007 13:40

Seemann wrote:

Что именно архивировать и как это будет выглядеть? Почему нельзя просто сохранить страницы (распечатать) если надо?

Можно, например, каждый месяц выкладывать полностью выкаченный форум. Так читать легче будет. Не у всех же безлимитный интернет, у меня вообще почасовой. Да и лучше любого FAQ будет rolleyes

#187 Re: О сайте и форумах » Вопросы и предложения » 26-02-2007 11:30

2Seemann:
Можно сделать архив форума, чтобы в offline можно было почитать.

#188 Re: Программирование » Краткое руководство по ассемблеру » 22-02-2007 12:27

теперь бы ещё сюда добавить надо , как переводить код асма в хеш для дальнейшего использования в СБ .

Открой любую прогу в OllyDbg и вводи что надо. Выделяешь строчку, нажимаешь пробел, вводишь команду, нажимаешь ОК и т.д.

Может еще вот это пригодится:
http://wasm.ru/series.php?sid=17

#189 Re: Модификации » [EXE|Patch] Радио + перекраска в любой машине » 12-02-2007 13:34

попробуй для версии 1.1 еще сделать, совсем круто будет

Вот:
h..p://foolroot.nm.ru/sa_patch.rar

#190 Re: Вопросы по скриптингу » Один вопрос » 09-02-2007 11:23

Так можно ?

:SNKCHP_970
0209: $money = random_int 1000 2000
Player.Money($PLAYER_CHAR) += $money
01E3: text_1number_styled 'IE30' 1000 5000 ms 1  // Earnings~N~~w~$~1~

#191 Re: Модификации » DevMode » 09-02-2007 11:19

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

Посмотрю. Тоже хотел так делать, потом решил через скрипт.

ну это видимо фича игры, там просто одежда такая - специальная - она убирается после смерти . к твоему моду это отношение не имеет

Понятно.

#192 Re: Вопросы по скриптингу » Один вопрос » 09-02-2007 11:04

Честно говоря не знаю, но попробую разобраться. А пока мне за каждую (любую) машину платят одну и ту же сумму (за то, что я ее пригнала).

Приведи часть кода, где деньги платят.

#193 Re: Модификации » DevMode » 09-02-2007 11:01

Протестировал:
1) если арестовывают, игра виснет, точнее не виснет, а ... , короче не знаю как это описать.
2) если погиб работает нормально, но появляешься без одежды.
Короче х.з. из-за чего, Player.Defined использую.

#194 Re: Вопросы по скриптингу » Один вопрос » 09-02-2007 10:46

svetka wrote:

У меня есть магазин по скупке автомобилей. Если возможно, то как сделать так, чтобы каждый раз мне за авто платили разные суммы, но не меньше $1000? Или просто разные.

0099: $8224 = random_integer_0-to-65535
0208: 17@ = random_float -0.2 0.2001
0209: 17@ = random_int 0 10

Или надо что-то другое?

#195 Модификации » DevMode » 09-02-2007 10:01

Sanchez
Replies: 8

Это еще незаконченная версия, но все-таки решил выложить:

Что это:
Скрипт позволяет менять значения в памяти во время игры.

Как это работает:
Общий вид команды выглядит следующим образом:
<~>ADDR<ПРОБЕЛ>SIZE<ПРОБЕЛ>VALUE<TAB><Y>, где
ADDR – адрес;
SIZE – тип значения;
VALUE – значение.
ADDR и VALUE вводятся в шестнадцатеричном виде.
SIZE может принимать следующие значения B (BYTE – 1 байт), W (WORD – 2 байта), D (DWORD – 4 байта).
После нажатия на клавишу <TAB>, появится панелька с веденными данными (правда в десятичном виде), если все нормально жмете <Y>. Если что-то ведено неправильно придется начинать все заново. 

Пример:
Во время игры набираем:
<~>B7CE50<ПРОБЕЛ>D<ПРОБЕЛ>3E8<TAB>
Смотрим на панельку:

12045904
4
1000

Нажимаем <Y>, прибавляется $1000

Не знаю, насколько это полезно и нужно, но вдруг кому пригодится.

Сам код:

create_thread @ADDR

// ----------

:ADDR
thread 'ADDR'
alloc($SizeBuffer1, 0x40)   // 0A49A60h   
alloc($SizeBuffer2, 0x41)   // ~ + 4h
alloc($SizeBuffer3, 0x42)   // ~ + 8h
alloc($AddrBuffer1, 0x43)   // 0A49A6Ch
alloc($AddrBuffer2, 0x44)   // ~ + 4h
alloc($AddrBuffer3, 0x45)   // ~ + 8h
alloc($Value, 0x46)         // 0A49A78h
alloc($Size, 0x47)          // 0A49A7Ch
alloc($Address, 0x48)       // 0A49A80h
alloc($ESI, 0x49)           // 0A49A84h

$SizeBuffer1 = 0x30303030
$SizeBuffer2 = 0x30303030
$SizeBuffer3 = 0

$AddrBuffer1 = 0x30303030
$AddrBuffer2 = 0x30303030
$AddrBuffer2 = 0

$ESI = 0x969110

while true
    wait 0      
    if
        Player.Defined($PLAYER_CHAR)
    then
        03F0: toggle_text_draw 1
        038E: draw_box position 0.0 0.0 width 170.0 height 60.0 color 150 15 85 alpha 150
        045A: draw_text_1number 0.0 0.0 GXT 'NUMBER' number $Address  // ~1~
        045A: draw_text_1number 0.0 8.0 GXT 'NUMBER' number $Size  // ~1~
        045A: draw_text_1number 0.0 16.0 GXT 'NUMBER' number $Value  // ~1~ 
    
        if
            00E1:   player 0 pressed_key 4
        then
            0@ = -429863 
            &0(0@,1i) = 0xA49960
            &0(0@,1i) += @GetParam          
            0572: run_asm_inject true     
        end
    
        if 
            00E1:   player 0 pressed_key 11
        then
            0@ = -429863 
            &0(0@,1i) = 0xA49960
            &0(0@,1i) += @Store         
            0572: run_asm_inject true 
        end
    end  
end

:GetParam
hex
// GerParam:
    60                       // PUSHAD
    33C0                     // XOR EAX,EAX
    B8 30303030              // MOV EAX,30303030
    A3 609AA400              // MOV DWORD PTR DS:[A49A60],EAX
    A3 649AA400              // MOV DWORD PTR DS:[A49A64],EAX
    A3 6C9AA400              // MOV DWORD PTR DS:[A49A6C],EAX
    A3 709AA400              // MOV DWORD PTR DS:[A49A70],EAX    
    33C0                     // XOR EAX,EAX
    33C9                     // XOR ECX,ECX
    B9 07000000              // MOV ECX,7
    B4 00                    // MOV AH,0
    8B35 849AA400            // MOV ESI,DWORD PTR DS:[A49A84]
// begin:
    8A06                     // /MOV AL,BYTE PTR DS:[ESI]
    3C 60                    // |CMP AL,60
    74 65                    // |JE _finish
    3C 20                    // |CMP AL,20
    74 57                    // |JE _next
    80FC 00                  // |CMP AH,0
    74 0C                    // |JE _value
    80FC 01                  // |CMP AH,1
    74 0F                    // |JE _size
    80FC 02                  // |CMP AH,2
    74 3C                    // |JE _addr
    EB 50                    // |JMP _finish
// _value:
    8881 609AA400            // |MOV BYTE PTR DS:[ECX+A49A60],AL
    EB 3A                    // |JMP _rout
// _size:
    3C 42                    // |CMP AL,42
    74 0A                    // |JE _wrB
    3C 57                    // |CMP AL,57
    74 12                    // |JE _wrW
    3C 44                    // |CMP AL,44
    74 1A                    // |JE _wrD
    EB 3A                    // |JMP _finish
// _wrB:
    C705 7C9AA400 01000000   // |MOV DWORD PTR DS:[A49A7C],1
    EB 20                    // |JMP _rout
// _wrW:
    C705 7C9AA400 02000000   // |MOV DWORD PTR DS:[A49A7C],2
    EB 14                    // |JMP _rout
// _wrD:
    C705 7C9AA400 04000000   // |MOV DWORD PTR DS:[A49A7C],4
    EB 08                    // |JMP _rout
// _addr:
    8881 6C9AA400            // |MOV BYTE PTR DS:[ECX+A49A6C],AL
    EB 00                    // |JMP _rout
// _rout:
    46                       // |INC ESI
    49                       // |DEC ECX
    EB 9F                    // |JMP _begin
// _next:
    FEC4                     // |INC AH
    46                       // |INC ESI
    B9 07000000              // |MOV ECX,7
    EB 95                    // \JMP _begin
// _finish:
    68 609AA400              // PUSH 0A49A60
    E8 1C000000              // CALL Hex2Dword
    A3 789AA400              // MOV DWORD PTR DS:[A49A78],EAX
    68 6C9AA400              // PUSH 0A49A6C
    E8 0D000000              // CALL Hex2Dword
    A3 809AA400              // MOV DWORD PTR DS:[A49A80],EAX
    83C4 08                  // ADD ESP,8
    61                       // POPAD
    C3                       // RETN
    90                       // NOP
    90                       // NOP
    90                       // NOP
// Hex2Dword proc
    8B5424 04                // MOV EDX,DWORD PTR SS:[ESP+4]
    33C0                     // XOR EAX,EAX
    33C9                     // XOR ECX,ECX
// _label1:
    F602 FF                  // /TEST BYTE PTR DS:[EDX],0FF
    8A0A                     // |MOV CL,BYTE PTR DS:[EDX]
    74 1F                    // |JE _label4
    80E9 61                  // |SUB CL,61
    78 0A                    // |JS _label3
// _label2:
    C1E0 04                  // |SHL EAX,4
    42                       // |INC EDX
    8D4401 0A                // |LEA EAX,DWORD PTR DS:[ECX+EAX+A]
    EB EA                    // |JMP _label1
// _label3:
    80C1 20                  // |ADD CL,20
    79 F1                    // |JNS _label2
    80C1 11                  // |ADD CL,11
    C1E0 04                  // |SHL EAX,4
    42                       // |INC EDX
    03C1                     // |ADD EAX,ECX
    EB DA                    // \JMP _label1
// _label4:
    C3                       // RETN
// Hex2Dword EndP
// end GetParam
end

:Store
hex
// Store:
    60                       // PUSHAD
    33C0                     // XOR EAX,EAX
    33C9                     // XOR ECX,ECX
    A1 7C9AA400              // MOV EAX,DWORD PTR DS:[A49A7C]
    83F8 01                  // CMP EAX,1
    74 0C                    // JE _byte
    83F8 02                  // CMP EAX,2
    74 18                    // JE _word
    83F8 04                  // CMP EAX,4
    74 26                    // JE _dword
    EB 33                    // JMP _end
// _byte:    
    33C0                     // XOR EAX,EAX
    A0 789AA400              // MOV AL,BYTE PTR DS:[A49A78]
    8B0D 809AA400            // MOV ECX,DWORD PTR DS:[A49A80]
    8801                     // MOV BYTE PTR DS:[ECX],AL
    EB 22                    // JMP _end
// _word:    
    33C0                     // XOR EAX,EAX
    66 A1 789AA400           // MOV AX,WORD PTR DS:[A49A78]
    8B0D 809AA400            // MOV ECX,DWORD PTR DS:[A49A80]
    66 8901                  // MOV WORD PTR DS:[ECX],AX
    EB 0F                    // JMP _end
// _dword:    
    33C0                     // XOR EAX,EAX
    A1 789AA400              // MOV EAX,DWORD PTR DS:[A49A78]
    8B0D 809AA400            // MOV ECX,DWORD PTR DS:[A49A80]
    8901                     // MOV DWORD PTR DS:[ECX],EAX
// _end:
    61                       // POPAD
    C3                       // RETN
// end Store
End

h..p://foolroot.nm.ru/sb_forum/devmode.0.1.rar

Внимание!!! Подстановка левых значений и адресов может привести к зависанию игры.

#196 Re: Модификации » [EXE|Patch] Радио + перекраска в любой машине » 07-02-2007 13:51

Alexander wrote:

У меня туда не заходит

h..p://foolroot.nm.ru/gta.sa.patch.rar

#197 Re: Модификации » [EXE|Patch] Радио + перекраска в любой машине » 07-02-2007 13:24

Вот мой вариант (правда там только для версии 1.0) если еще кому нужен:

h..p://slil.ru/23888873


; файл PATCH.RC
; ----------------------[вырезать]------------------------------
#define IDD_DLG1001 1001
#define IDC_BUTTON1002 1002
#define IDC_BUTTON1003 1003
#define IDC_STATIC1004 1004
#define IDC_STATIC1005 1005

3001 ICON DISCARDABLE "patch.ico"

IDD_DLG1001 DIALOGEX 0,0,169,44
CAPTION "GTA: San Andreas *patch*"
FONT 8,"MS Sans Serif"
STYLE 0x10c80800
EXSTYLE 0x00000000
BEGIN
	CONTROL "Patch",IDC_BUTTON1002,"Button",0x50010000,110,5,50,14,0x00020000
	CONTROL "Exit",IDC_BUTTON1003,"Button",0x50010000,110,23,50,14,0x00020000
	CONTROL "1. Enabled radio in noncivilian vehicles and bicycles.",IDC_STATIC1004,"Static",0x50000000,3,3,104,16,0x00000000
	CONTROL "2. Pay'n'Spray repairs all vehicles.",IDC_STATIC1005,"Static",0x50000000,3,22,97,16,0x00000000
END 
; ----------------------[вырезать]------------------------------
 
; файл PATCH.ASM
; ----------------------[вырезать]------------------------------
.486
.model flat, stdcall
option casemap: none

include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include \masm32\include\windows.inc

includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib

DlgProc PROTO :DWORD, :DWORD, :DWORD, :DWORD

.const
IDD_DLG			equ	1001
IDC_PATCH		equ 1002
IDC_EXIT		equ 1003

.data
FileName		db "gta_sa.exe", 0
NewFileName		db "gta_sa.exx", 0
;Filesize		dd 0DB7A00h
CapOK			db "Congratulation!", 0
MsgOK			db "File successfull patched!", 0
CapNotFound		db "File not found", 0
MsgNotFound		db "Copy the patch to installed game dir and run again", 0
;CapWrongSize	db "Correct filesize is: 14383616 bytes", 0
;MsgWrongSize	db "Wrong filesize", 0
byte_replace1	dd 00h, 0
byte_replace2	dd 01B0h, 0
CarID			dd 190h
mult			dd 24h
byte_writing1	dd 01h
byte_writing2	dd 02h

.data?
hInstance		dd ?
hFile			dd ?

.code
start:
	invoke GetModuleHandle, NULL
	mov	hInstance, eax
	invoke DialogBoxParam, hInstance, IDD_DLG, NULL, ADDR DlgProc, NULL
	invoke ExitProcess, eax
	
DlgProc Proc hDlg :DWORD, uMsg :DWORD, wParam :DWORD, lParam :DWORD
	pusha
	.if uMsg == WM_INITDIALOG
		invoke LoadIcon, hInstance, 3001
		invoke SendMessage, hDlg, WM_SETICON, 1, eax
	.elseif uMsg == WM_LBUTTONDOWN
		invoke SendMessage, hDlg, WM_NCLBUTTONDOWN, HTCAPTION, lParam
	.elseif	uMsg == WM_COMMAND
		.if	wParam == IDC_PATCH
			invoke SetFileAttributes, ADDR FileName, FILE_ATTRIBUTE_NORMAL
			invoke CopyFile, ADDR FileName, ADDR NewFileName, TRUE
			invoke CreateFile, ADDR FileName,
				GENERIC_READ or GENERIC_WRITE,
				FILE_SHARE_READ or FILE_SHARE_WRITE,
				NULL,
				OPEN_EXISTING,
				FILE_ATTRIBUTE_NORMAL,
				NULL
			cmp eax, -1
			je _notfound
			mov hFile, eax
			.while CarID != 264h
				mov eax, CarID
				mul mult
				add eax, 45BACBh
				invoke SetFilePointer, hFile, eax, NULL, FILE_BEGIN
				invoke WriteFile, hFile, OFFSET byte_replace1, 01h, OFFSET byte_writing1, NULL
				inc CarID
			.endw
			mov eax, 0DABC02h
			invoke SetFilePointer, hFile, eax, NULL, FILE_BEGIN
			invoke WriteFile, hFile, OFFSET byte_replace2, 02h, OFFSET byte_writing2, NULL
			invoke CloseHandle, hFile
			invoke MessageBox, NULL, ADDR MsgOK, ADDR CapOK, MB_ICONINFORMATION
			jmp _finish
		_notfound:
			invoke MessageBox, NULL, ADDR MsgNotFound, ADDR CapNotFound, MB_ICONERROR
		_finish:
		.elseif	wParam == IDC_EXIT
			invoke EndDialog, hDlg, NULL
		.endif
	.elseif	uMsg == WM_CLOSE
		invoke EndDialog, hDlg, NULL
	.endif
	popa
	xor eax, eax
	ret
DlgProc EndP

end start
; ----------------------[вырезать]------------------------------

#198 Re: Справочная информация » Адреса и функции gta_sa.exe 1.0 » 06-02-2007 13:33

даже не знаю, как такое сделать на автомате... вручную я запарюсь копировать параметры. Ты лучше скажи какие тебя интересуют.

Ладно, тогда не надо, я думал они у тебя в готовом виде есть.

#199 Re: Справочная информация » Адреса и функции gta_sa.exe 1.0 » 03-02-2007 09:06

2Seemann:
Можешь написать параметры функций (из первого поста) и значения кототрые они возвращают (хотя бы некоторых).

Board footer

Powered by FluxBB