游戏修改的常用方法

游戏修改的常用方法
游戏修改的常用方法

标题:【原创】游戏修改的常用方法之一——远程读写内存(asm源码详注)

作者:王仁军

时间: 2008-06-15,20:25:46

链接: https://www.360docs.net/doc/0515992611.html,/showthread.php?t=66624

comment *-----------------------------------------------------------------------

前几日,几个朋友在局域网中玩红警对战,常因游戏中无钱而使战斗长时间不能结束,

有人就想到用游侠修改金钱来作弊,无奈在网络对战中用游侠修改游戏是要暂停游戏的,一

人停下大家都停了,作弊就被人发现了。能不能整它个一键锁定,神不知鬼不觉,不被人发

现?于是我就编写了这个“傻瓜式RA2游戏修改器”。为什么没有去破解游戏或做补钉呢?那

样的话别人玩这个机子的RA2游戏也能享受作弊待遇了,且钱数不变易被人发现作弊了:)

用法:

①把本程序拷到RA2游戏目录中,运行本程序,游戏程序被启动了

②开始一场战斗,切记,等游戏界面显示的钱数“不变”时,按下数字键盘上的星号键

第一遍搜索开始了,也许要好几秒时间,这段时间内你可以点兵派将,但不可使钱数增减。

③当你听到提示音且鼠标被置于屏幕左上角时,第一遍搜完了。现在赶紧让你的钱数变

化,比如建一座电站,最好是钱数再次“不变“时,可以按下数字键盘上的星号键进行第二

遍搜索了,这次是极极极的快,鼠标没有被置于左上角,说明找到正确地址并已自动锁定钱

数了。什么?钱数在变化没有锁定?非也!五秒之内你用钱了自然要减少挣钱了自然要增加

不然旁观者看到钱数不变就知道你作弊了:),这是不同于游侠的地方,要的就是这个效果。

当一场战斗终了,要开始下一场战斗时,你只要按一下“-”键,然后重复上述步骤即

可。为什么要重新搜索?因为每一盘游戏的金钱数地址都不同。

本程序在WinXP/SP2、ra2之1.006英文版(有中国超牛机器人的那个)运行通过且稳定

无误。如果是其他版本,只要用十六进制编辑工具搜索数值“008373cch”,改为你想要的

地址值即可,共有两处要改。这个地址值是怎么得来的?最简单的方法是用游侠了。有游侠

为啥还要用我这个破玩意儿?因为游侠的界面和暂停会让别人发现你作弊的。用游侠搜索到

的地址一般有三个,有两个地址值相差4,取较小的那个即可,最大的也是最另类的那个每

盘游戏都会变,它才是正直的金钱数保存地址,本程序就是要找到这个变化的地址并锁定数

值。

对于那些弹出游侠界面或暂停后就死掉的游戏,用类似的方法就可以修改了吧?!如果

数值地址不是象ra2这样有多个,可在游戏中记下几个数值,然后写入一文件中,搜索时从文

件中读取数值即可。也可用键盘钩子记录按键,进行无界面动态输入。

*-------------------------------------------------------------------------------

.586

.model flat,stdcall

option casemap:none

include windows.inc

include kernel32.inc

include user32.inc

include psapi.inc

includelib kernel32.lib

includelib user32.lib

includelib psapi.lib

ADD_DA TA1 equ 008373cch ;00883c84h ;其他版本要改这个地址值

;ADD_DA TA2 equ 008373d0h ;00883c88h ;这个不用

ADD_DA TA3_START equ 01000000h ;搜索范围开始地址,可根据需要改动ADD_DA TA3_END equ 0f600000h ;搜索范围结束地址,可根据需要改动MEMSIZE equ 10000h ;每次读取数据块的大小,不宜太小

.code

;------------------------------------------------------------------------

;取得游戏进程的句柄。游戏中按下“*”号键便来到这里

;有两种常用的方法:进程快照查找法和当前活动窗口法

;------------------------------------------------------------------------

_GetProcessHandle proc

comment *在调试时用这段代码取得游戏进程的句柄为好

LOCAL info:PROCESSENTRY32

LOCAL handle:HANDLE

invoke CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0 ;进程快照

mov handle,eax

mov info.dwSize,sizeof PROCESSENTRY32

invoke Process32First,handle,addr info

.repeat

mov eax,@F

invoke lstrcmpi,addr info.szExeFile,eax;比较是否为我们要找的进程名,不区分大小写

.if !eax

invoke CloseHandle,handle

;invoke MessageBox,NULL,addr info.szExeFile,NULL,MB_OK

invoke OpenProcess,PROCESS_ALL_ACCESS,FALSE,info.th32ProcessID

jmp EXIT

.endif

invoke Process32Next,handle,addr info

.until !eax

invoke CloseHandle,handle

xor eax,eax

EXIT:

ret

@@:

db"Game.exe",0

*通常情况下也可以用下面的方法取得游戏进程的句柄,但要注意……LOCAL ProcessId

invoke GetForegroundWindow ;你必须确保当前窗口为游戏界面窗口,这样才能正确取得游戏进程ID

lea edx,ProcessId

invoke GetWindowThreadProcessId,eax,edx

invoke OpenProcess,PROCESS_ALL_ACCESS,FALSE,ProcessId

ret

_GetProcessHandle endp

;------------------------------------------------------------------------

;第一遍搜索。因是全程搜索,耗时几秒至十多秒(与玩家数多少有关),WinXP 中

;凭经验知道本游戏中钱数地址在01000000h至0F600000之间,搜此范围以减少用时

;------------------------------------------------------------------------

_GetDataAddr proc uses esi edi hProcess:DWORD,num:DWORD,hmem:DWORD

LOCAL N,ListMemSize,pListMem,ReadSize

LOCAL mbi:MEMORY_BASIC_INFORMA TION

invoke EmptyWorkingSet,hProcess ;减少游戏进程提交内存数,希望能减少搜索量,加快搜索速度

invoke SetProcessWorkingSetSize,hProcess,-1,-1 ;不知是否有效?!愿听高手指导invoke GlobalLock,hmem ;锁定保存搜索结果的内存

mov pListMem,eax

invoke GlobalSize,hmem;保存搜索结果的内存大小

mov ListMemSize,eax

invoke ReadProcessMemory,hProcess,ADD_DA TA1,addr N,sizeof N,NULL ;不用手输入金钱数,从内存读取金钱数

mov edi,N ;保存金钱数,以便后面比较搜索,原理见前文

invoke GlobalAlloc,GMEM_FIXED,MEMSIZE ;分配内存,为读取数据做准备mov esi,eax;保存内存地址

mov ecx,ADD_DA TA3_START ;设置要搜索的内存地址范围开始处

.repeat;循环搜索游戏内存

@@: invoke VirtualQueryEx,hProcess,ecx,addr mbi,sizeof MEMORY_BASIC_I NFORMA TION ;返回页面虚拟信息

.if mbi.State == MEM_COMMIT && mbi.Protect == PAGE_READWRITE ;已提交且为可读写的区域,加速搜索

mov ReadSize,MEMSIZE ;每次可读取的数据大小

.repeat;循环读取该内存区段中的数据

.if mbi.RegionSize

mov eax,mbi.RegionSize

mov ReadSize,eax;读剩下的数据大小

.endif

invoke ReadProcessMemory,hProcess,mbi.BaseAddress,esi,ReadSize,addr N ;读游戏数据

xor ecx,ecx;ecx为相对于区段首的偏移地址

.repeat;在读取的数据块中搜索金钱数的地址

.if edi==[esi+ecx] ;数值相等,找到了?

mov eax,num ;地址num中记录了搜索结果的个数

inc dword ptr[eax] ;搜索的结果个数加一

mov eax,dword ptr[eax]

shl eax,2h ;保存结果所需的内存大小

.if eax>ListMemSize ;如果搜索到的结果较多,内存用完,要重新分配内存

push eax

push ecx

add eax,1000h ;追加4K内存

invoke GlobalReAlloc,hmem,eax,GMEM_MOVEABLE ;重新分配内存,原来的数据被复制过来

invoke GlobalLock,eax

mov pListMem,eax;保存搜索结果的内存首地址

invoke GlobalSize,hmem

mov ListMemSize,eax;保存搜索结果的内存大小

pop ecx

pop eax

.endif

add eax,pListMem ;相当于pListMem[num]

mov edx,mbi.BaseAddress

add edx,ecx;首地址+偏移地址=实际地址

mov [eax-4h],edx;搜索的结果保存起来,pListMem[num-1]=实际地址

.endif

add ecx,4h ;金钱数为DWORD型数值,考虑到内存对齐,这里是不用担心漏掉的

.until ecx>=N ;读取的数据块比较完了吗?

mov eax,ReadSize ;准备再读一次

add mbi.BaseAddress,eax;下次从这里开始读

sub mbi.RegionSize,eax;下次要读的大小

.until mbi.RegionSize<=0h ;下次要读的大小为0了吗?为0则本区段读完,去下一区段

.endif

mov ecx,mbi.BaseAddress

add ecx,mbi.RegionSize ;下一区段首地址

.until ecx>=ADD_DA TA3_END ;下一区段在搜索范围之外了吗?是则完成第一遍搜索

invoke GlobalFree,esi

ret

_GetDataAddr endp

;------------------------------------------------------------------------

;第二、三……遍的搜索,在第一次的结果中找,速度极快

;第二次按下“*”键便来到这里,一般只要两遍就可锁定。算法:有用地址向前移

;结果个数由num返回,如果num==1就算找到正确的金钱地址了

;------------------------------------------------------------------------

_FindAddrInList proc uses edi esi hProcess:DWORD,num:DWORD,hmem:DWORD LOCAL Data,N

LOCAL DD1,DD2

invoke ReadProcessMemory,hProcess,ADD_DA TA1,addr DD1,sizeof DD1,NULL ;读取金钱数

invoke GlobalLock,hmem

mov edi,eax;前次搜索结果保存的内存首地址

xor esi,esi;指针,指向第一个结果

mov N,esi;本次搜索到的个数初始化为0

.repeat;逐个比较

mov edx,[edi+esi*4h] ;相当于edx=hmem[esi]

invoke ReadProcessMemory,hProcess,edx,addr DD2,sizeof DD2,NULL ;读取数值

mov eax,DD1

.if eax==DD2 ;等于金钱数吗?等则记录下来

push [edi+esi*4h]

mov eax,N

pop [edi+eax*4h] ;相当于hmem[N]=hmem[esi],即把搜索到的结果向hmem 内存前面移

inc N ;搜索到的个数加一

.endif

mov eax,num

inc esi;指针指向下一个结果

.until esi>=[eax] ;每个都比较过了吗?是则完成这次搜索

mov edx,N ;这次搜索到的结果个数

mov [eax],edx;修改原来的个数

shl edx,2h ;个数×4=内存大小

invoke GlobalReAlloc,hmem,edx,GMEM_MOVEABLE ;释放多余的内存

ret

_FindAddrInList endp

;------------------------------------------------------------------------

;找到了正确的地址,可以锁定金钱数值了:),每五秒锁定一次,按“-”键停锁;游戏中钱数看起来有增有减,象未锁定一样,别人不容易发现你作弊

;------------------------------------------------------------------------

_WriteProcessData proc uses edi esi hProcess:DWORD,hmem:DWORD

LOCAL DA TA,IsRun

mov esi,2000 ;要锁定的金钱数,别太多,多了是会招贼来偷的:)

mov DA TA,esi

invoke GlobalLock,hmem

mov edi,[eax] ;游戏中真正的保存金钱数的地址

.repeat

.if esi>=5h ;每五循环锁定一次

xor esi,esi;循环次数清0

invoke WriteProcessMemory,hProcess,edi,addr DA TA,sizeof DA TA,NULL ;

写入钱数

.endif

invoke Sleep,1000 ;定时一秒

inc esi;循环次数加一

invoke GetExitCodeProcess,hProcess,addr IsRun ;游戏程序还在运行吗?

invoke GetAsyncKeyState,VK_SUBTRACT ;按了“-”键吗?

.until eax || IsRun!=STILL_ACTIVE ;如果游戏退出或按了“-”键则结束循环ret

_WriteProcessData endp

;------------------------------------------------------------------------

;把本程序拷入游戏文件夹,运行本程序,游戏被启动,本程序在后台运行,无界面

;本程序运行后启动“ra2.exe”,再由“ra2.exe”启动游戏程序,之后“ra2.exe”;无用了,停掉它以节约内存。

;------------------------------------------------------------------------

_StartGame proc

LOCAL StartInfo:STARTUPINFO

LOCAL PI:PROCESS_INFORMA TION

invoke RtlZeroMemory,addr StartInfo,sizeof STARTUPINFO

mov StartInfo.cb,sizeof STARTUPINFO

mov ecx,GAME_NAME

xor edx,edx

invoke CreateProcess,edx,ecx,edx,edx,edx,edx,edx,edx,addr StartInfo,addr PI ;启动游戏

invoke Sleep,10000 ;等10秒,游戏程序应该启动了吧?

invoke TerminateProcess,PI.hProcess,0h ;没用了,停掉它

invoke CloseHandle,PI.hProcess ;释放内存

ret

GAME_NAME:

db"ra2.exe",0

_StartGame endp

start:

MAIN proc

LOCAL msg:MSG

LOCAL num,hmem,hProcess,MutexName

invoke _StartGame ;启动游戏

mov eax,"2ar"

mov MutexName,eax

invoke CreateMutex,NULL,TRUE,addr MutexName

invoke GetLastError

.if eax!=ERROR_ALREADY_EXISTS ;只让本程序的一个实例运行

invoke RegisterHotKey,NULL,VK_MULTIPLY,0h,VK_MULTIPLY ;注册热键“*”

invoke RegisterHotKey,NULL,VK_SUBTRACT,0h,VK_SUBTRACT ;注册热键“-”

invoke RegisterHotKey,NULL,'X',MOD_CONTROL OR MOD_ALT,'X' ;注册热键“Ctrl+Alt+X”

invoke GlobalAlloc,GMEM_MOVEABLE,1000h ;预留内存空间,搜索时用来保存结果

mov hmem,eax;搜索结果个数的不确定性需要我们用GlobalReAlloc来重新分配内存大小

xor eax,eax

mov num,eax;搜索结果个数初始化为0

mov hProcess,eax;始化为0

.while 1

invoke GetMessage,addr msg,NULL,NULL,NULL ;等待消息

.if msg.message==WM_HOTKEY ;热键消息

.break.if msg.wParam=='X' ;按了热键“Ctrl+Alt+X”则退出本程序

.if msg.wParam==VK_SUBTRACT ;按了热键“-”

mov num,0h ;搜索结果个数置0,表示从未搜索过

.else;按了热键“*”

.if num==0h ;搜索结果个数为0则从未搜索过,进行第一遍搜索

.if hProcess ;如果在非游戏界面中按了“*”,这样可避免误操作

invoke CloseHandle,hProcess ;释放内存

.endif

invoke _GetProcessHandle ;取游戏进程句柄

mov hProcess,eax

lea ecx,num ;指针型参数

invoke _GetDataAddr,eax,ecx,hmem

.elseif num>1h ;搜索结果个数非0则至少已搜过一遍且未找到正确地址

invoke _FindAddrInList,hProcess,addr num,hmem ;再搜它一遍或几遍

.endif

.if num==1h ;搜索结果为1,说明找到正确地址了

invoke _WriteProcessData,hProcess,hmem ;去锁定它!

.break.if eax==0 ;如果你没按“-”键,那一定是游戏退出了,咱也

退出吧

.endif

.endif

invoke MessageBeep,MB_OK ;发声提示游戏者,按键收到,该做的本程序都做过了

invoke SetCursorPos,9h,9h ;把鼠标置于屏幕左上角,提醒游戏者,第一遍搜索时特别有用

invoke GetCurrentProcess

invoke EmptyWorkingSet,eax;减少自己的内存占用量,不和游戏争内存.endif

.endw

invoke UnregisterHotKey,NULL,VK_MULTIPLY ;以下为退出前的清理工作invoke UnregisterHotKey,NULL,VK_SUBTRACT

invoke UnregisterHotKey,NULL,'X'

invoke CloseHandle,hProcess

invoke GlobalUnlock,hmem

invoke GlobalFree,hmem

invoke ExitProcess,NULL

.endif

ret

MAIN endp

end start

标题:【原创】游戏修改的常用方法之二——Dll注入(asm源码详注)

作者:王仁军

时间: 2008-06-15,20:29:56

链接: https://www.360docs.net/doc/0515992611.html,/showthread.php?t=66625

本程序在WinXP/SP2、ra2之1.006英文版(有中国超牛机器人的那个)运行通过且稳定无误。

;------------------------------------------------------------------------

;文件一:Ra2MDF.Asm 启动游戏 和 DLL注入

;------------------------------------------------------------------------

.586

.model flat, stdcall

option casemap :none

include windows.inc

include user32.inc

includelib user32.lib

include kernel32.inc

includelib kernel32.lib

.code

;------------------------------------------------------------------------

;把本程序拷入游戏文件夹,运行本程序,游戏被启动,本程序在后台运行,无界面

;本程序运行后启动“ra2.exe”,再由“ra2.exe”启动游戏程序,之后“ra2.exe”;无用了,停掉它以节约内存。

;------------------------------------------------------------------------

_StartGame proc

LOCAL StartInfo:STARTUPINFO

LOCAL PI:PROCESS_INFORMA TION

invoke RtlZeroMemory,addr StartInfo,sizeof STARTUPINFO

mov StartInfo.cb,sizeof STARTUPINFO

mov ecx,GAME_NAME

xor edx,edx

invoke CreateProcess,edx,ecx,edx,edx,edx,edx,edx,edx,addr StartInfo,addr PI ;启动游戏

invoke Sleep,15000 ;等10秒,游戏程序应该启动了吧?

invoke TerminateProcess,PI.hProcess,0h ;没用了,停掉它

invoke CloseHandle,PI.hProcess ;释放内存

ret

GAME_NAME:

db"ra2.exe",0

_StartGame endp

start:

;------------------------------------------------------------------------

;

;

;------------------------------------------------------------------------

Main proc uses edi esi

LOCAL @dwProcessID,@lpLoadLibrary,@lpDllName,@szDllFullPath[MAX_PA TH]

invoke _StartGame ;启动游戏

lea edi,@szDllFullPath

invoke GetCurrentDirectory,MAX_PA TH,edi

call @F

db '\Ra2MD.dll',0

@@: push edi

call lstrcat ;获取dll的全路径文件名

call @F

db 'Kernel32.dll',0

@@: call GetModuleHandle

call @F

db 'LoadLibraryA',0

@@: push eax

call GetProcAddress ;获取LoadLibrary函数地址

mov @lpLoadLibrary,eax

invoke GetForegroundWindow ;取得游戏窗口的句柄

lea esi,@dwProcessID

invoke GetWindowThreadProcessId,eax,esi;获取进程ID

invoke OpenProcess,PROCESS_CREA TE_THREAD or PROCESS_VM_OPER A TION or \

PROCESS_VM_WRITE,FALSE,@dwProcessID ;打开进程

.if eax

mov esi,eax

;******************************************************************** ; 在进程中分配空间并将DLL文件名拷贝过去,然后创建一个LoadLibrary线程;******************************************************************** invoke VirtualAllocEx,eax,NULL,MAX_PA TH,MEM_COMMIT,PAGE_REA DWRITE;

.if eax

mov @lpDllName,eax

invoke WriteProcessMemory,esi,eax,edi,MAX_PA TH,NULL

invoke CreateRemoteThread,esi,NULL,0h,@lpLoadLibrary,@lpDllName,0h ,NULL ;完成DLL注入

invoke CloseHandle,eax

.endif

invoke CloseHandle,esi

.endif

invoke ExitProcess,NULL

Main endp

end start

;-------------------------------------------------------------------------------------

;文件二:Ra2DLL.Asm 用来被嵌入到其它进程执行的dll,完成热键、搜索、修改等全部功能

;作为游戏进程的一部分,可以直接访问游戏内存,不用ReadProcessMemory和WriteProcessMemory

;这样搜索速度相对要快一些。本例中所说的游戏版本与前面的相同。

;-------------------------------------------------------------------------------------

.586

.model flat, stdcall

option casemap :none

include windows.inc

include user32.inc

includelib user32.lib

include kernel32.inc

includelib kernel32.lib

ADD_DA TA1 equ 008373cch ;00883c84h ;其他版本要改这个地址值

;ADD_DA TA2 equ 008373d0h ;00883c88h ;这个不用

ADD_DA TA3_START equ 01000000h ;搜索范围开始地址,可根据需要改动,但要跳过前两个地址

ADD_DA TA3_END equ 0f600000h ;搜索范围结束地址,可根据需要改动MEMSIZE equ 10000h ;每次读取数据块的大小,不宜太小

.code

_GetDataAddr proc uses esi edi num,hmem

LOCAL N,ListMemSize,pListMem,ReadSize

LOCAL mbi:MEMORY_BASIC_INFORMA TION

invoke GlobalLock,hmem ;锁定保存搜索结果的内存

mov pListMem,eax

invoke GlobalSize,hmem;保存搜索结果的内存大小

mov ListMemSize,eax

mov edi,ADD_DA TA1 ;保存金钱数,以便后面比较搜索,原理见前文

mov edi,[edi]

mov ecx,ADD_DA TA3_START ;设置要搜索的内存地址范围开始处

.repeat;循环搜索游戏内存

@@: invoke VirtualQuery,ecx,addr mbi,sizeof MEMORY_BASIC_INFORMA TI ON ;返回页面虚拟信息

.if mbi.State == MEM_COMMIT && mbi.Protect == PAGE_READWRITE ;已

提交且为可读写的区域,加速搜索

invoke IsBadWritePtr,mbi.BaseAddress,mbi.RegionSize

.if !eax

mov esi,mbi.BaseAddress

xor ecx,ecx

.repeat

.if edi==[esi+ecx] ;数值相等,找到了?

mov eax,num ;地址num中记录了搜索结果的个数

inc dword ptr[eax] ;搜索的结果个数加一

mov eax,dword ptr[eax]

shl eax,2h ;保存结果所需的内存大小

.if eax>ListMemSize ;如果搜索到的结果较多,内存用完,要重新分配内存

push eax

push ecx

add eax,1000h ;追加4K内存

invoke GlobalReAlloc,hmem,eax,GMEM_MOVEABLE ;重新分配内存,原来的数据被复制过来

invoke GlobalLock,eax

mov pListMem,eax;保存搜索结果的内存首地址

invoke GlobalSize,hmem

mov ListMemSize,eax;保存搜索结果的内存大小

pop ecx

pop eax

.endif

add eax,pListMem ;相当于pListMem[num]

mov edx,esi

add edx,ecx;首地址+偏移地址=实际地址

mov [eax-4h],edx;搜索的结果保存起来,pListMem[num-1]=实际地址

.endif

add ecx,4h ;金钱数为DWORD型数值,考虑到内存对齐,这里是不用担心漏掉的

.until ecx>=mbi.RegionSize

.endif

.endif

mov ecx,mbi.BaseAddress

add ecx,mbi.RegionSize ;下一区段首地址

.until ecx>=ADD_DA TA3_END ;下一区段在搜索范围之外了吗?是则完成第一遍搜索

ret

_GetDataAddr endp

;------------------------------------------------------------------------

;第二、三……遍的搜索,在第一次的结果中找,速度极快

;第二次按下“*”键便来到这里,一般只要两遍就可锁定。算法:有用地址向前移

;结果个数由num返回,如果num==1就算找到正确的金钱地址了

;------------------------------------------------------------------------

_FindAddrInList proc uses edi esi num,hmem

LOCAL N

invoke GlobalLock,hmem

mov edi,eax;前次搜索结果保存的内存首地址

xor esi,esi;指针,指向第一个结果

mov N,esi;本次搜索到的个数初始化为0

.repeat;逐个比较

mov edx,[edi+esi*4h] ;相当于edx=hmem[esi]

mov eax,ADD_DA TA1

mov eax,[eax]

.if eax==[edx] ;等于金钱数吗?等则记录下来

push [edi+esi*4h]

mov eax,N

pop [edi+eax*4h] ;相当于hmem[N]=hmem[esi],即把搜索到的结果向hmem 内存前面移

inc N ;搜索到的个数加一

.endif

mov eax,num

inc esi;指针指向下一个结果

.until esi>=[eax] ;每个都比较过了吗?是则完成这次搜索

mov edx,N ;这次搜索到的结果个数

mov [eax],edx;修改原来的个数

shl edx,2h ;个数×4=内存大小

invoke GlobalReAlloc,hmem,edx,GMEM_MOVEABLE ;释放多余的内存

ret

_FindAddrInList endp

;------------------------------------------------------------------------

;找到了正确的地址,可以锁定金钱数值了:),每五秒锁定一次,按“-”键停锁;游戏中钱数看起来有增有减,象未锁定一样,别人不容易发现你作弊

;------------------------------------------------------------------------

_WriteProcessData proc uses edi esi hmem

mov esi,5h ;要锁定的金钱数,别太多,多了是会招贼来偷的:)

invoke GlobalLock,hmem

mov edi,[eax] ;游戏中真正的保存金钱数的地址

.repeat

.if esi>=5h ;每五循环锁定一次

xor esi,esi;循环次数清0

mov dword ptr[edi],2000

.endif

invoke Sleep,1000 ;定时一秒

inc esi;循环次数加一

invoke GetAsyncKeyState,VK_SUBTRACT ;按了“-”键吗?

.until eax;如果按了“-”键则结束循环

ret

_WriteProcessData endp

;------------------------------

;新线程,检查按键,响应用户请求

;------------------------------

ThreadProc Proc pParam:LPVOID

Local @dwNum,@hMem

invoke GlobalAlloc,GMEM_MOVEABLE,1000h ;预留内存空间,搜索时用来保存结果

mov @hMem,eax;搜索结果个数的不确定性需要我们用GlobalReAlloc来重新分配内存大小

mov @dwNum,0h ;搜索结果个数初始化为0

.while TRUE

invoke GetAsyncKeyState,VK_SUBTRACT ;按了“-”键吗?

.if eax

mov @dwNum,0h ;搜索结果个数置0,表示从未搜索过

invoke SetCursorPos,9h,9h ;把鼠标置于屏幕左上角,提醒游戏者,第一遍搜索时特别有用

.endif

invoke GetAsyncKeyState,VK_MULTIPLY ;按了“*”键吗?

.if eax;按了热键“*”

.if @dwNum==0h ;搜索结果个数为0则从未搜索过,进行第一遍搜索

invoke _GetDataAddr,addr @dwNum,@hMem

.elseif @dwNum>1h ;搜索结果个数非0则至少已搜过一遍且未找到正确地址

invoke _FindAddrInList,addr @dwNum,@hMem ;再搜它一遍或几遍

.endif

.if @dwNum==1h ;搜索结果为1,说明找到正确地址了

invoke _WriteProcessData,@hMem ;去锁定它!

.endif

invoke MessageBeep,MB_OK ;发声提示游戏者,按键收到,该做的本程序都做过了

invoke SetCursorPos,9h,9h ;把鼠标置于屏幕左上角,提醒游戏者,第一遍搜索时特别有用

.endif

invoke Sleep,1000

.endw

invoke GlobalUnlock,@hMem

invoke GlobalFree,@hMem

ret

ThreadProc endP

DllEntry Proc _hInstance,_dwReason,_dwReserved

LOCAL @dwThreadID

.if _dwReason == DLL_PROCESS_A TTACH

invoke CreateThread,NULL,0h,offset ThreadProc,NULL,NULL,addr @dwThr eadID ;创建一个新线程

invoke CloseHandle,eax

.endif

mov eax,TRUE

ret

DllEntry Endp

End DllEntry

标题:【原创】游戏修改的常用方法之三——内存补丁(asm源码详注)

作者:王仁军

时间: 2008-06-15,20:32:47

链接: https://www.360docs.net/doc/0515992611.html,/showthread.php?t=66626

本程序在WinXP/SP2、ra2之1.006英文版(有中国超牛机器人的那个)运行通过且稳定无误。

;----------------------------------------------------------------------------------------

;用打补丁的方法改游戏,必需先跟踪游戏程序,找到金钱储存地址,然后直接改代码或打内存补丁

;----------------------------------------------------------------------------------------

.586

.model flat,stdcall

option casemap:none

include windows.inc

include kernel32.inc

include user32.inc

include psapi.inc

includelib kernel32.lib

includelib user32.lib

includelib psapi.lib

ADD_DA TA equ 0830FFCh

ADD_CODE1 equ 0494A81h

ADD_CODE2 equ 049466Bh

.code

_GetProcessHandle proc

;comment *在调试时用这段代码取得游戏进程的句柄为好

LOCAL info:PROCESSENTRY32

LOCAL handle:HANDLE

invoke CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0 ;进程快照

mov handle,eax

mov info.dwSize,sizeof PROCESSENTRY32

invoke Process32First,handle,addr info

.repeat

mov eax,@F

invoke lstrcmpi,addr info.szExeFile,eax;比较是否为我们要找的进程名,不区分大小写

.if !eax

invoke CloseHandle,handle

;invoke MessageBox,NULL,addr info.szExeFile,NULL,MB_OK

invoke OpenProcess,PROCESS_ALL_ACCESS,FALSE,info.th32ProcessID

jmp EXIT

.endif

invoke Process32Next,handle,addr info

.until !eax

invoke CloseHandle,handle

xor eax,eax

EXIT:

ret

@@:

db"Game.exe",0

; *通常情况下也可以用下面的方法取得游戏进程的句柄,但要注意……

; LOCAL ProcessId

; invoke GetForegroundWindow ;你必须确保当前窗口为游戏界面窗口,这样才能正确取得游戏进程ID

; lea edx,ProcessId

; invoke GetWindowThreadProcessId,eax,edx

; invoke OpenProcess,PROCESS_ALL_ACCESS,FALSE,ProcessId

; ret

_GetProcessHandle endp

;-----------------------------------------------------------------------

;之所以这么做,是为了给出别人一个未作弊的假象,如果用补丁代码直接改钱数,

;显示的钱数不会变,很容易被人发现你作弊了

;-----------------------------------------------------------------------

_WriteProcessData proc uses esi hProcess

LOCAL DA TA,IsRun,add2data

mov esi,2000 ;要锁定的金钱数,别太多,多了是会招贼来偷的:)

mov DA TA,esi

.repeat

.if esi>=5h ;每五循环锁定一次

invoke ReadProcessMemory,hProcess,ADD_DA TA,addr add2data,sizeof add2 data,NULL

add add2data,228h;游戏中真正的保存金钱数的地址

invoke WriteProcessMemory,hProcess,add2data,addr DA TA,sizeof DA TA,NU LL ;写入钱数

xor esi,esi;循环次数清0

.endif

invoke Sleep,1000 ;定时一秒

inc esi;循环次数加一

invoke GetExitCodeProcess,hProcess,addr IsRun ;游戏程序还在运行吗?

invoke GetAsyncKeyState,VK_SUBTRACT ;按了“-”键吗?

.until eax || IsRun!=STILL_ACTIVE ;如果游戏退出或按了“-”键则结束循环ret

_WriteProcessData endp

;---------------------

;写入补丁代码,共两处

;---------------------

_WritePathCode proc hProcess

jmp @F

WRITE_CODE1_START: ;补丁代码一,含义见下面

db 0A3h,0FCh,0Fh,83h,00h,0FFh,52h,18h,33h,0C9h,0E9h,0E0h,0FBh,0FFh,0FFh WRITE_CODE1_END equ this byte

;00494A81 A3 FC0F8300 mov dword ptr [00830FFC], eax ;补丁一源码

;00494A86 FF52 18 call dword ptr [edx+18]

;00494A89 33C9 xor ecx, ecx

;00494A8B ^ E9 E0FBFFFF jmp 00494670

WRITE_CODE2_START: ;补丁代码二,含义见下面

db 0E9h,11h,04h,00h,00h

WRITE_CODE2_END equ this byte

;0049466B E9 11040000 jmp 00494A81 ;补丁二源码

@@:

mov eax,WRITE_CODE1_START

invoke WriteProcessMemory,hProcess,ADD_CODE1,eax,WRITE_CODE1_END-WRITE_CODE1_START,NULL ;写入补丁一

mov eax,WRITE_CODE2_START

invoke WriteProcessMemory,hProcess,ADD_CODE2,eax,WRITE_CODE2_END-WRITE_CODE2_START,NULL ;写入补丁二

ret

_WritePathCode endp

;------------------------------------------------------------------------

;把本程序拷入游戏文件夹,运行本程序,游戏被启动,本程序在后台运行,无界面

;本程序运行后启动“ra2.exe”,再由“ra2.exe”启动游戏程序,之后“ra2.exe”;无用了,停掉它以节约内存。

;------------------------------------------------------------------------

_StartGame proc

LOCAL StartInfo:STARTUPINFO

LOCAL PI:PROCESS_INFORMA TION

LOCAL GamehProcess

invoke RtlZeroMemory,addr StartInfo,sizeof STARTUPINFO

mov StartInfo.cb,sizeof STARTUPINFO

mov ecx,GAME_NAME

xor edx,edx

invoke CreateProcess,edx,ecx,edx,edx,edx,edx,edx,edx,addr StartInfo,addr PI ;启动游戏

.repeat

invoke Sleep,100 ;等10秒,游戏程序应该启动了吧?

invoke _GetProcessHandle

.until eax

mov GamehProcess,eax

invoke _WritePathCode,eax;打补丁

invoke Sleep,9000

invoke TerminateProcess,PI.hProcess,0h ;没用了,停掉它

invoke CloseHandle,PI.hProcess ;释放内存

mov eax,GamehProcess

ret

GAME_NAME:

db"ra2.exe",0

_StartGame endp

start:

MAIN proc

LOCAL msg:MSG

LOCAL hProcess,MutexName

invoke _StartGame ;启动游戏

mov hProcess,eax

mov eax,"2ar"

mov MutexName,eax

invoke CreateMutex,NULL,TRUE,addr MutexName

invoke GetLastError

.if eax!=ERROR_ALREADY_EXISTS ;只让本程序的一个实例运行

invoke RegisterHotKey,NULL,VK_MULTIPLY,0h,VK_MULTIPLY ;注册热键“*”

invoke RegisterHotKey,NULL,'X',MOD_CONTROL OR MOD_ALT,'X' ;注册热键“Ctrl+Alt+X”

.while 1

invoke GetMessage,addr msg,NULL,NULL,NULL ;等待消息

.if msg.message==WM_HOTKEY ;热键消息

wpe实现网络游戏修改

我用这个标题是想吸影你们,其实没G,大家在焦急的等待G的出现不如动手去做个!!还涨点技术!! 在进行我们的工作之前,我们需要掌握一些关于计算机中储存数据方式的知识和游戏中储存数据的特点。本章节是提供给菜鸟级的玩家看的,如果你是高手就可以跳过了,如果,你想成为无坚不摧的剑客,那么,这些东西就会花掉你一些时间;如果,你只想作个江湖的游客的话,那么这些东西,了解与否无关紧要。是作剑客,还是作游客,你选择吧! 现在我们开始!首先,你要知道游戏中储存数据的几种格式,这几种格式是:字节(BY TE)、字(WORD)和双字(DOUBLEWORD),或者说是8位、16位和32位储存方式。字节也就是8位方式能储存0~255的数字;字或说是16位储存方式能储存0~65535的数;双字即32位方式能储存0~4294967295的数。 为何要了解这些知识呢?在游戏中各种参数的最大值是不同的,有些可能100左右就够了,比如,金庸群侠传中的角 色的等级、随机遇敌个数等等。而有些却需要大于255甚至大于65535,象金庸群侠传中角色的金钱值可达到数百万。所以,在游戏中各种不同的数据的类型是不一样的。在我们修改游戏时需要寻找准备修改的数据的封包,在这种时候,正确判断数据的类型是迅速找到正确地址的重要条件。 在计算机中数据以字节为基本的储存单位,每个字节被赋予一个编号,以确定各自的位置。这个编号我们就称为地址。 在需要用到字或双字时,计算机用连续的两个字节来组成一个字,连续的两个字组成一个双字。而一个字或双字的地 址就是它们的低位字节的地址。现在我们常用的Windows9x操作系统中,地址是用一个3 2位的二进制数表示的。而在平时我们用到内存地址时,总是用一个8位的16进制数来表示它。 二进制和十六进制又是怎样一回事呢? 简单说来,二进制数就是一种只有0和1两个数码,每满2则进一位的计数进位法。同样,16进制就是每满十六就进一位的计数进位法。16进制有0--F十六个数字,它为表示十到十五的数字采用了A、B、C、D、E、F六个数字,它们和十进制的对应关系是:A 对应于10,B对应于11,C对应于12,D对应于13,E对应于14,F对应于15。而且,16进制数和二进制数间有一个简单的对应关系,那就是;四位二进制数相当于一位16进制数。比如,一个四位的二进制数1111就相当于16进制的F,1010就相当于A。 了解这些基础知识对修改游戏有着很大的帮助,下面我就要谈到这个问题。由于在计算机中数据是以二进制的方式储存的,同时16进制数和二进制间的转换关系十分简单,所以大部分的修改工具在显示计算机中的数据时会显示16进制的代码,而且在你修改时也需要输入16进制的数字。你清楚了吧? 在游戏中看到的数据可都是十进制的,在要寻找并修改参数的值时,可以使用Window s提供的计算器来进行十进制和16进制的换算,我们可以在开始菜单里的程序组中的附件中找到它。

饥荒经典版 作弊码的运用与大全

饥荒控制台使用方法: 饥荒的控制台调出很简单,只要在游戏中按下“~”键(1左边的那个键)就可以调出游戏的控制台,如上图所示,这个界面下就可以输入相应的指令了。再按下回车就可以执行输入的指令。如上图所示,可能有的玩家会问屏幕中的那些字怎么去除,不然挡着游戏很难受,这里按下Ctrl+L就可以去除那些残留的字幕了! 饥荒作弊代码使用: 游戏中控制台可以输入作弊码 GetPlayer().components.builder:GiveAllRecipes() ---------- 全物品直接制造GetPlayer().components.hungerause(true) ---------- 饥饿值不降低 GetPlayer().components.sanity:SetMax(500) ---------- 精神值不降低(慎用不可取消)GetPlayer().components.health:SetMaxHealth(300) ---------- 最大血格 GetPlayer().components.health:SetInvincible(true) ---------- 上帝模式 下面是开全地图,要输入2个指令才行,每次都要回车执行: minimap = TheSim:FindFirstEntityWithTag("minimap") minimap.MiniMap:ShowArea(0,0,0, 10000) 注意事项: 游戏中可能有玩家存在作弊码不可用的情况,这是因为游戏的作弊模式被关闭了。 这时候在电脑的(X):\Documents and Settings\(用户名)\My Documents\Klei\DoNotStarve\ settings.ini中找到游戏的settings.ini(游戏设置)文件,用记事本的方式打开,把其中的ENABLECONSOLE选项(开启作弊器)中的“ENABLECONSOLE = false”修改为“ENABLECONSOLE = true”就可以了。DebugSpawn“cutgrass”(草) DebugSpawn“twigs”(树枝) DebugSpawn“log”(木头) DebugSpawn“charcoal”(木炭) DebugSpawn“ash”(灰) DebugSpawn“cutreeds”(采下的芦苇) DebugSpawn“lightbulb”(荧光果) DebugSpawn“petals”(花瓣) DebugSpawn“petals_evil”(噩梦花瓣) DebugSpawn“pinecone”(松果) DebugSpawn“foliage”(叶子) DebugSpawn“cutlichen”(摘下的苔藓) DebugSpawn“wormlight”(虫子果) DebugSpawn“lureplantbulb”(食人花种子) DebugSpawn“flint”(燧石) DebugSpawn“nitre”(硝石) DebugSpawn“redgem”(红宝石) DebugSpawn“bluegem”(蓝宝石) DebugSpawn“purplegem”(紫宝石) DebugSpawn“greengem”(绿宝石) DebugSpawn“orangegem”(橙宝石)

饥荒巨人的统治修改技巧大全 -分解

易宁:饥荒游戏实用修改技巧(请自行备份原文件) 适用于巨人的统治DLC游戏100795版,去掉修改路径中的DLC0001\可用于非DLC版最新版下载地址:https://www.360docs.net/doc/0515992611.html,/thread-3859071-1-1.html 2014年5月8日更新:增加“三一0.疯狂躲避球(用浣熊尾巴种躲避球场,在圈内60秒不被球打到,赢50个黄金)”,应“随心活着”要求修复“二八九.自动取款机(用活木头种自动取款机,存入的黄金每天给3%利息)”路径,应“”要求修复“三六九.使不能堆叠的物品可堆叠”路径 索引: ?全人物解锁 ?二.提高主角血量10倍 ?三.主角自动回血 ?四.增加食物及料理补血量10倍 五.菩萨低眉(主角受怪物攻击毫发无伤,怪物反暴毙) 六.复活石无限使用(主角永生) 七.主角自动补脑(妈妈再也不用担心我的学习) 八.主角不会饿 ?九.延缓冻、饿死亡时间 十.主角不怕火、无惧黑暗 ?十一.提高主角攻击力 十二.主角可渡海(没有什么可以阻挡,你对自由的向往) ?十三.主角跑得更快 ?十四.背猪皮包、穿大理石盔甲行走速度不减慢 ?十五.提高拿手杖行走速度 ?十六.解锁全科技(全人物不用机器就可造全部物品) ?十七.快速制造物品 十八.地图全开(游戏中按Ctrl+1) ?十九.加大单格堆叠数量 二十.增加主角物品条的格子 ?二十一.双层主角物品条(60格) ?二十二.同时携带多个背包(背包可库存) ?二十三.背包格子增大至39格 二十四.制造坎普斯背包 二十五.伍迪砍树不会变海狸 二十六.伍迪吃疯肉立即变海狸且随身物品不掉落

二十七.图书管理员不再失眠(老太太可以睡帐篷) 二十八.麦斯威尔用魔法书召唤分身不减脑上限 ?二十九.瓦丝格雷斯可以吃蔬菜 三十.韦伯不被当成怪物 ?三十一.全部物品无限使用(工具、武器、盔甲、魔杖、护身符、衣服、帽子、照明物品等全部无限使用) 三十二.修改装备使用次数及时间 三十三.武器伤害值加大 三十四.盔甲在就不掉血(盔甲100%吸收伤害值) 三十五.提高盔甲耐久力 三十六.盔甲永固(永远100%) 三十七.一次采集五个 三十八.快速采集草、树枝、浆果 ?三十九.远程采集和拾起物品 四十.收割者(吹排箫一次采集周边所有植物) 四十一.用普通种子种胡萝卜且一次采10个(胡萝卜田) 四十二.用便便种曼德拉草 四十三.一斧砍倒一棵树、一镐开掉一块石 四十四.砍树多掉3倍木头 四十五.砍树无树桩 四十六.树桩继续长成树 四十七.采矿时50%概率挖出宝石和铥矿石 四十八.采矿时多掉黄金 四十九.无限开石头(石头不消失) 五十.挖草一次得10个长草簇 五十一.种草不用施肥 五十二.挖果树丛一次得10个果树丛根 五十三.种果树丛不用施肥 五十四.摘浆果不出现火鸡 五十五.摘仙人掌不扎手 五十六.挖树苗一次得10个树苗根 五十七.用芦苇种植芦苇(芦苇可移植) 五十八.挖尖刺灌木一次得10个尖刺灌木根 五十九.栽种尖刺灌木产黄油(植物黄油) 六十.花瓣种花(花可移植) 六十一.用树枝种香蕉树 六十二.用蘑菇种蘑菇(蘑菇可移植) 六十三.用苔藓种苔藓(苔藓可移植) 六十四.用荧光果种三朵洞穴花 六十五.铲掉洞穴花得荧光果 六十六.缩短草、树杈、尖刺灌木、洞穴花、苔藓、浆果、芦苇长出时间

使用Cheat Engine制作自己的游戏专用修改器

简单修改器制作教程 - 用Cheat Engine制作&生成修改器 本帖最后由圣风云淡于2011-5-10 14:14 编辑 首先,这只是个简单教程,即使没有编程经验甚至完全不懂任何编程语言的人都能制作自己的修改器! 迟些我会写一篇用C#来编写修改器的教程,其实过程也大同小异,只是编译用C#而不是用Cheat Engine 自动生成而已。这就需要一些更高级的知识了... 所需工具:Cheat Engine 6.0 & Cheat Engine 5.6.1 所需知识:懂得怎么搜索数据地址,只要知道懂得怎么找地址就行了。 虽然每次开始游戏那个地址都会改变,但下面要教的正是怎么通过修改汇编代码来间接修改那个总会改变的地址。 而我们要找的代码地址总是固定在游戏某个模块的特定地址里的,只要有模块的地址和那个代码的偏移值,那么我们就一定可以找到那个代码的地址,对其进行修改,就能间接修改具体数据的地址(例如金钱、生命、子弹...etc) 这里用《刺客信条:兄弟会》来当例子,这个教程还适用于任何游戏! 当然,如果游戏有数据加密,反调试的话,那么过程将会更加坎坷... 教程正文: 1. 找到数据地址 这个我就不教了,太基础,如果这个都不懂的话可以不用往下看了... 2. 找出写入这个地址的代码 右键找到的数据地址(图里是金钱的地址),点击Find out what writes to this address ,找出写入这个地址的代码 有些时候你可能需要点Find out what accesses this address,不过一般情况下我们用不着点这个,因为可能会找出很多不需要的代码。 第一次点击的时候会弹出提示,问你要不要用调试器调试当前程序(游戏程序),当然选Y es

饥荒代码

3 控制台提取物品代码详解 一般刷物品代码分为两种一种为give一种为spawn: c_give("XXX")和c_spawn("XXX") 大家或许会有疑问那么提取多个物品是什么呢其实很简单就是: c_give("XXX",数量)和c_spawn("XXX",数量)其中数量为数字想要多少就写多少即可。 4 控制台提取物品代码的区别 大家可能又会问c_give("XXX")和c_spawn("XXX")到底有何区别呢? 其实也很简单c_give("XXX")主要用于提取游戏中的物品道具直接出现在你的背包中。 c_spawn("XXX")主要用于提取游戏中的建筑,植物,怪物,地形,等等。 当然了c_spawn("XXX")也可以提取游戏中的道具,不同的是它会出现在地上。 材料: cutgrass 草(材料)flint 燧石twigs 小树枝rocks 岩石(材料)log 木材(材料)goldnugget 金块(材料)cutreeds 芦苇(材料)honeycomb 蜂巢(材料)pigskin 猪皮(材料)poop 便便(材料)silk 蜘蛛丝(材料)spidergland 蜘蛛腺体ash 灰boards 木板charcoal 木炭rope 绳子(材料)cutstone 石砖(材料)nitre 硝石(材料) papyrus 草纸(材料)petals 花瓣houndstooth 犬牙stinger 蜂刺(材料)beardhair 胡子bee 蜜蜂fireflies 萤火虫beefalowool 牛毛redgem 红宝石(材料)bluegem 蓝色宝石purplegem 紫宝石(材料)butterflywings 蝴蝶翅膀deerclops_eyeball 独眼巨鹿的眼球gears 齿轮gunpowder 火药horn 牛角 livinglog 有生命的木材mandrake 曼德拉草nightmarefuel 噩梦材料pinecone 松果(材料,树种)tentaclespots 触手皮walrus_tusk 海象长牙 工具: axe 斧子hammer 锤子shovel 铲子pickaxe 鹤嘴锄pitchfork 草叉hammer 锤子fishingrod 鱼竿razor 剃刀bugnet 虫网umbrella 雨伞cane 步行手杖sewingkit 针线包bedroll_straw 草之床垫tent 帐篷heatrock 保温石头healingsalve 治疗药膏backpack 背包piggyback 猪背包krampus_sack 坎普斯背包chester 切斯特chester_eyebone 切斯特眼杖treasurechest 宝箱birdcage 鸟笼birdtrap 鸟陷阱trap 陷阱trap_teeth 牙齿陷阱dirtpile 魔杖diviningrod 魔杖持有者(就是个底座)diviningrodbase 魔杖基地diviningrodstart 魔杖和持有者blueprint 科技蓝图(随即给) 建筑: beebox 蜂箱rabbithole 兔子窝pighouse 猪之家mermhouse 鱼人之家spiderden 蜘蛛巢穴(一级)tallbirdnest 高鸟窝walrus_camp 海象窝beehive 野生蜂巢wasphive 杀人蜂巢homesign 路标牌gravestone 墓碑mound 坟墓pond 池塘resurrectionstone 试金石rainometer 雨量计winterometer 寒冰温度计insanityrock 猪王祭坛小尖角sanityrock 猪王祭坛大尖角marblepillar 大理石柱子marbletree 大理石树statueharp 竖琴雕像(主教边上的)statuemaxwell 麦斯威尔雕像horizontal_maxwelllight 麦斯威尔之光(晚上一靠近就亮)vertical_maxwelllight 麦斯威尔之光maxwellphonograph 留声机maxwelllock 噩梦锁头maxwellthrone 噩梦王座teleportato_checkmate 传送机底座adventure_portal 冒险之门basalt 玄武岩 食物: butter 黄油egg 鸡蛋froglegs 青蛙腿petals_evil 恶魔花瓣(食材)seeds 种子icebox 冰箱cookpot 煮肉锅meatrack 晒肉架spoiledfood 腐烂变质的食物 照明: bonfire 篝火堆(不发光,但能烤肉)campfire 营火campfirefire 地上的小火苗firepit 石头

《饥荒》刷肉技巧大全_百度文库.

《饥荒》刷?技巧?全 《饥荒》怎么刷? ? 很多玩家都不了解 , 下??编就为?家带来饥荒刷?技巧?全 , 希望对各位玩家有所帮助 。 刷??法第?条 :陷阱兔?蛙 这个很简单 , 在兔?洞?放陷阱 , 池塘?圈放陷阱 , 定时收兔?青蛙就好。 缺点 :1、资源需求? 2、屠杀时若数量可能会召?偷 3、只是??和青蛙腿 刷??法第?条 :蜘蛛酱 ! 不要跑 这个也是?较简单的 , 引蜘蛛?位杀。具体真夏的视频??有。优点 :1、安全 , 快速

2、还爆腺体和蜘蛛? 3、资源接近 0损耗 缺点 :1、有可能被打?下两下 2、只有怪兽? 3、有可能出?皇 刷??法第三条 :?群毁灭者 这个可以容易可以难 , 下?有两种?法 A :?狗?陷阱放?脚底 , 慢慢耗 B :直接?位? (?多的时候不要去作死 C :各种帮? :猪? , 狗 , B O S S , 触? , 兔? , ?头虾等 当然 , ?的话不推荐赶尽杀绝 , 不然后期就得去很远的地?找?了。优点 :1、??多 , 有???? 2、可以?帮? 3、可以?伤 缺点 :1、不??灭族了可就不好了 刷??法第四条 :我们需要?坷垃 这个是超超超级容易的 , 只需去找??花 , 之后铺???地板 , 种上去 , 定时去收东西就好。 优点 :1、次性消耗 , 终?可?

2、没危险 , 只要?地板铺??点 3、配合池塘可以刷青蛙腿 4、如果?地板?较少 , 会有鸟收 5、可配合杀动物 6、?奶奶可以刷鸟 ~( ̄▽ ̄ ~ ~?次够?个冬天了 缺点 :1、你确定能找到那么多么 2、不??被打?下也挺疼 3、有?长周期 , 可以??奶奶加速?长 刷??法第五条 :猪? , 我们去打野吧 这个效率? , 可以有消耗 , ?且分为两种打发 A :收买?个猪? , 强制攻击没收买的 , 进?内战 B :4个怪兽? , 变疯猪 , ?位杀。 优点 :1、?便快捷 , 还可以喜闻乐见 2、掉猪? 缺点 1、需要怪兽? 2、?慢的可以?会被?师兄吃了 游戏服 ?站式“ 逗游?——中国 2亿游戏?户?致选择的”  务平台

FC(NES)修改教程

FC(NES游戏修改基础教程 14 号拐角 一、序言 在童年时期,很多人或许对于FC的回忆有许许多多,我也不例外,不过说实在话,我在家能玩到的FC游戏非常的少,回忆起来也只有几个,坦克大战,魂斗罗,赤色要塞,沙罗曼蛇……当然最经典的还是小时候玩的热血格斗……之后就由于种种原因再也没有接触了,直到PC的出现,我又重温了那些经典。 但是每每看到网上各种HACK版本,总是希望自己也能做点什么修改,所以各种找教程,各种翻资料……可能对于FC这种已经淘汰的游戏没有很多人关心一样,教程的东西也像烟雾弹一般,可以忽略一样 ..................... 但是对于已经进入迷途的我,似乎有种由衷的爱好般…… 我教过一些人,但是总觉得自己的方法或许不得当,教不会,今天写出这些东西,希望能遇到一些有天赋的人,如果能遇到给予我批评指出的人或许会更好。 我不能保证我100%全对,有误的地方希望大家能更正吧。 好吧,或许大家都不喜欢看废话,于是我们开始吧…… 二、基础修改 修改,当然要准备工具,这里我推荐一个非常强大的FC模拟器一一FCEUX 系列,现在最新版本是2.1.6 吧(在我打这篇文章的时候),它提供了非常齐全完善的调试器和16进制编辑器。当然,如果要修改FC贴图的话可以用很多FC 贴图修改器进行修改,网上应该有很多,这里我找不到好的东西,大伙可以自己找找吧,我主要是讲解游戏内容的修改,而不是贴图修改。 好吧,我们开始修改我修改到恶心的游戏——魂斗罗。对于这一段,感谢小粽子以前的教诲。魂斗罗很经典,可能到今天都没有人能够一命通关,对于这些头疼的玩家,我们就给他几个选项。1、无限命;2、无限金身;3、瞬秒敌人(不推荐修改,有点偏高端)。 友情提示,以下16进制编辑器中,在查看菜单有NES内存、PPU内存、ROM 文件,所以在进行修改之前,请注意自己所在那一页,以免修改错误导致没有相应的效果出现。 只有NES内存和PPU内存才能右键,但是在NES内存下无法进行修改,一改变之后数值会立即转变成为没有修改的状态,注意好自己所在页。 1、无限命:

游戏修改的常用方法

标题:【原创】游戏修改的常用方法之一——远程读写内存(asm源码详注) 作者:王仁军 时间: 2008-06-15,20:25:46 链接: https://www.360docs.net/doc/0515992611.html,/showthread.php?t=66624 comment *----------------------------------------------------------------------- 前几日,几个朋友在局域网中玩红警对战,常因游戏中无钱而使战斗长时间不能结束, 有人就想到用游侠修改金钱来作弊,无奈在网络对战中用游侠修改游戏是要暂停游戏的,一 人停下大家都停了,作弊就被人发现了。能不能整它个一键锁定,神不知鬼不觉,不被人发 现?于是我就编写了这个“傻瓜式RA2游戏修改器”。为什么没有去破解游戏或做补钉呢?那 样的话别人玩这个机子的RA2游戏也能享受作弊待遇了,且钱数不变易被人发现作弊了:) 用法: ①把本程序拷到RA2游戏目录中,运行本程序,游戏程序被启动了 ②开始一场战斗,切记,等游戏界面显示的钱数“不变”时,按下数字键盘上的星号键 第一遍搜索开始了,也许要好几秒时间,这段时间内你可以点兵派将,但不可使钱数增减。 ③当你听到提示音且鼠标被置于屏幕左上角时,第一遍搜完了。现在赶紧让你的钱数变 化,比如建一座电站,最好是钱数再次“不变“时,可以按下数字键盘上的星号键进行第二 遍搜索了,这次是极极极的快,鼠标没有被置于左上角,说明找到正确地址并已自动锁定钱 数了。什么?钱数在变化没有锁定?非也!五秒之内你用钱了自然要减少挣钱了自然要增加 不然旁观者看到钱数不变就知道你作弊了:),这是不同于游侠的地方,要的就是这个效果。 当一场战斗终了,要开始下一场战斗时,你只要按一下“-”键,然后重复上述步骤即 可。为什么要重新搜索?因为每一盘游戏的金钱数地址都不同。 本程序在WinXP/SP2、ra2之1.006英文版(有中国超牛机器人的那个)运行通过且稳定 无误。如果是其他版本,只要用十六进制编辑工具搜索数值“008373cch”,改为你想要的 地址值即可,共有两处要改。这个地址值是怎么得来的?最简单的方法是用游侠了。有游侠

《饥荒》海难船属性修改方法

《饥荒》海难船属性修改?法 《饥荒》海难??的船很多玩家觉得属性耐久?较低,所以想改改怎么办呢?今天就为?家带来了饥荒海难船属性修改?法,教给?家怎么修改船属性,还不会的玩家?起来学习下吧。 众所周知,海难?的船让?物的海洋探索变得远?陆地上危险,因为船没装甲,?量也并不像盔甲那样厚,还特么会在?天后??解体,并且海怪们的伤害也远?巨?的四季B O S S伤害要恐怖,所以我就动起了修改的念头,不过问题是,这是我第?次全凭去开荒尝试修改,S O,?然遇到了?些问题。 ?先说说已经取得的成果吧 ?先?笔记本打开D L C2的d a t a?打开s c r i p t s?的t u n i n g,?查找功能去找B o a t c a n n o n,然后就你会看见这样??数据 W O O D L E G S_B O AT C A N N O N_D A M A G E=50, B O AT C A N N O N_D A M A G E=100, B O AT C A N N O N_R A D I U S=4, B O AT C A N N O N_B U I L D I N G D A M A G E=10,

B O AT C A N N O N_A M M O_C O U N T=15, 有没有什么眼熟的东西?属性??名字的肯定会发现,W O O D L E G S不就是那个海盗船长的名字嘛,?B o a t c a n n o n则是船炮的意思,于是乎后?那个属性的50点配上第??没有?名船炮的100点,结论?然是这就是海盗船炮和普通船炮的伤害数值啦,于是乎还等什么,爱改多少改多少吧,本来的鸡肋的存在现在可以让对??发?魂了,不过不建议超过250,太?了就没意思了,250三炮搞定??鲸,已经是很给?了,打B O S S也效果拨群,然后第三?那个4我查了?下R A D I U S的意思是范围,姑且推测是船炮的爆炸范围吧,建议不过超过8,我个?是选择了6,再?的话不想炸的东西也会被炸掉的吧,?且不确定会不会?伤,还没测试过,第四?我不是很清楚什么意思,但是应该度娘翻译这个词好像是对建筑伤害的意思?反正我没乱动,最后??我就?较郁闷了,插了?下意思,好像是开?次数,但是为什么会是15?不是应该是10吗,还是说这是开?频率?但是也不应该是15啊,所以这个问题有待??解答。 接下来是船只?量和耐久度部分, W O O D L E G S B O AT_S P E E D=0, W O O D L E G S B O AT_H E A LT H=500, W O O D L E G S B O AT_D A M A G E S C A L E=0.5, W O O D L E G S B O AT_L E A K I N G_H E A LT H=40, W O O D L E G S B O AT_H I T_I M M U N I T Y =2, 根据某些修改指南的指导,我?找到船炮的?法查找装甲船,于是乎找到了各种船只的四维数据,这个便是我打开t u n i n g?件发现的海盗船数据 A R M O U R E D B O AT_H E A LT H=500, A R M O U R E D B O AT_P E R I S H T I M E=t o t a l_d a y_t i m e*4, A R M O U R E D B O AT_S A N I T Y_D R A I N=0,---0.08, A R M O U R E D B O AT_S P E E D=2, A R M O U R E D B O AT_L E A K I N G_H E A LT H=40, A R M O U R E D B O AT_H I T_I M M U N I T Y =3, 这是装甲船的数据 C A R G O B O AT_H E A LT H=500, C A R G O B O AT_P E R I S H T I M E=t o t a l_d a y_t i m e*3, C A R G O B O AT_S A N I T Y_D R A I N=0,---0.08, C A R G O B O AT_S P E E D=3, C A R G O B O AT_L E A K I N G_H E A LT H=40,

修改游戏封包的专业软件WPE使用方法

修改游戏封包的专业软件WPES用方法 2008年8月13日更新一小篇网上找到的文章。希望对各位新手有所指示这里讲的WPEPRO 使用方法 一、打开WPE选择进程client.exe ,切换到游戏打一段话(如9个1),然后切出去按开始截取,切换到游戏反复粘贴刚才那复制好的9个1。 然后切出游戏按停止,就会出来一堆数字?其中找S包最简单的方法就是找位数相同的,呵呵。开始截取游戏代码的时候不要只截取了一便,你应该向服务 器发送了好多次,以便查找。所以代码不止一个,对比一下,看S包内有没有相 同的(4位到12不用看,因为这是时间代码),找到了.找到后给记下来 二、现在就可以进入领地找稻草人了,开始截取,切换到游戏反复用掌风攻击稻草人,然后切出游戏按停止,就会出来一堆数字在,在里面寻找S包最简单的方法就是找位数相同的,当然还必须要准确,所以你就必须记住你用掌风攻击了几次,比如说是3次吧,那你就找出3个一样的代码,对比一下,找到了就可以制作了。。 现在开始制作封包了 双激那个Filter1 在里面的M位置添写上攻击稻草人的代码,就是刚才你截 取的代码,一般都是34位 在S里面填写上口令的代码,就是刚才你打的9个1的代码 添完之后别忘记保存保存后按那个红的按钮就是开始了 回到游戏打9个1就攻击出去拉,打一次命令就是发送一次掌风攻击 声明备注:这个是WPE1.3C勺教程。不过大同小异。仅供参考。 文章出处:5代科技 Web教程制作:zkikyou WPE介绍 WPE( Win sock Packet Editor ) 它的中文名称是:网络封包编辑器 在大多数的变成工具中win sock已经封装成一个控件,成为网络变成的控件,是 非常方便的,利用这个控件,变成工具就可以编写外挂工具,例如使用VB就可

怎么制作游戏修改器,适合初学者

怎么制作游戏修改器 2008-06-21 22:22 游戏修改器制作-黑客入门 工具:SoftICE、金山游侠2002、VC++7.0、PE查看器、SPY++ 测试平台:Window2000 Professional SP2 首先我介绍一下将会用到的工具: 1、 SoftICE(不用多说了吧,我想你应该会用) 2、金山游侠2002(这个你也应该会用) 3、 VC++7.0(不要求你一定会用,但至少应该会一种编程工具) 4、 PE查看器(你可以随意找一个,没有也没关系,我会教你用SoftICE查看) 5、 SPY++(VC里的一个查看程序信息的工具,你可以和别的,比如Delphi和 C++Builder的WinSight32) 然后就是你应该会的知识: 1、汇编基础 2、一些编程基础,至少应该看懂我介绍的几个API函数 3、 PE文件结构的基础,不会也没关系,我会解释给你 以上几点你都具备了的话我们就可以开始了。 我来介绍一下我要教给你的东西。想必大家都玩过PC游吧,那么也一定用过一些专用的游戏修改器吧,比如暗黑,红警,大富翁这些经典的游戏都有它们专用的修改器,注意,我说的不是FPE之类的通用修改工具。 你试没试过用金山游侠修改红警二的金钱?如果有的话你应该知道每玩一次就 要改一次,因为这个游戏是动态分配内存的,每次重新开始都会改变。所以你会选择到网上去下载一个专用的修改器,那么你有没有想过自己做一上呢?想过?那你为什么不做?什么不会?那就好办了,看了这篇教程你就会了:D费话少说,我来讲一下原理。 有一些经常修改游的朋友一定会知道,不论游戏中“物品”的内存地址是否是动态的,物品与物品之间相隔的距离都是不变的,我拿“楚留香新传”为例,我先用金山游侠查找内力值的内存地址,找到的结果是:79F695C,再查找物品“金创药”的地址是:328D1DC,现在我用79F695C减去328D1DC,得到:4769780,这个数就是内力值与金创药的偏移值,没看懂?接着看呀,我还没说完呢,现在重新再运行游戏,查找内力值的地址,得到:798695C再查找金创药得到的地址是:321D1DC,两个值的内存地址都改变了,但是用你内力值的地址减去金创药的地址得到的结果是什么?没错,还是4769780,也就是说,无论这两个值的内存地址变成多少,它们之间的距离是永远不变的,不光是这个游戏,一般的游戏都是,

饥荒游戏物品名称翻译

--LIGHT(照明) campfire(营火):cutgrass(草),log(木), firepit(石头营火):log(木),rocks(石),, torch(火炬):cutgrass(草),twigs(树枝), minerhat(矿工帽):strawhat(草帽), goldnugget(金块), fireflies(萤火虫), pumpkin_lantern(南瓜灯):pumpkin(南瓜), fireflies(萤火虫), lantern(提灯):twigs(树枝),rope(绳子),lightbulb(灯泡), --STRUCTURES(建造) treasurechest(木箱):boards(木板), homesign(标牌):boards(木板), wall_hay_item(干草墙):cutgrass(草),twigs(树枝), wall_wood_item(木墙):boards(木板),rope(绳子), wall_stone_item(石墙):cutstone(石砖), pighouse(猪人房):boards(木板),cutstone(石砖),pigskin(猪皮),rabbithouse(兔子房):boards(木板),carrot(胡萝卜),0 manrabbit_tail(膨胀小兔子),birdcage(鸟笼):papyrus(纸),goldnugget(金块)6 seeds(种子), turf_road(卵石路):turf_rocky(岩石草皮), boards(木板), turf_woodfloor(木地板):boards(木板), turf_checkerfloor(棋盘地板):marble(大理石), turf_carpetfloor(地毯地板):boards(木板), beefalowool(牛毛), --FARM(种植) slow_farmplot(一般农田):cutgrass(草)8 poop(粪便),log(木), fast_farmplot(高级农田):cutgrass(草),0 poop(粪便)6 rocks(石), beebox(蜂箱):boards(木板),honeycomb(蜂巢), bee(蜜蜂), meatrack(晾肉架):twigs(树枝),charcoal(木炭),rope(绳子), cookpot(煮锅):cutstone(石砖),charcoal(木炭)6 twigs(树枝)6 icebox(冰箱):goldnugget(金块),gears(齿轮), boards(木板), --SURVIVAL(生存) trap(陷阱):twigs(树枝),cutgrass(草)6 birdtrap(捕鸟陷阱):twigs(树枝),silk(蛛丝), compass(指南针):goldnugget(金块), papyrus(纸), backpack(背包):cutgrass(草),twigs(树枝), piggyback(猪皮包):pigskin(猪皮),silk(蛛丝)6 rope(绳子), healingsalve(治愈药膏):ash(灰),rocks(石), spidergland(蜘蛛腺体), bandage(蜂蜜绷带):papyrus(纸), honey(蜂蜜), bedroll_straw(草席卷):cutgrass(草)6 rope(绳子), bedroll_furry(毛皮铺盖):bedroll_straw(草席卷), manrabbit_tail(膨胀小兔子),tent(帐篷):silk(蛛丝)6 twigs(树枝),rope(绳子),

饥荒游戏修改属性方法整理

饥荒游戏内部修改属性方法整理 一.提高主角血量10倍 二.主角自动回血 三.主角自动补脑(妈妈再也不用担心我的学习) 四.提高主角攻击力 五.主角跑得更快 六.修改人物科技水平(不用机器就可造全部物品) 七.背猪皮包、穿大理石盔甲行走速度不减慢 八.提高拿手杖行走速度 九.一斧砍倒一棵树 十.加快采集速度 十一.延缓冻、饿死亡时间 十二.增加食物及料理补血量10倍 十三.饿急了草根树杈也能吃(补饥饿,但伤血和脑) 十四.建造肉块雕像不罚血(正常要从血的上限减30) 十五.地板一次造4个 十六.加大单格堆叠数量 十七.同时携带多个背包(背包可库存) 十八.武器伤害值加大 十九.修改魔杖伤害值(魔杖一击必杀) 二十.修改装备使用次数及时间 二十一.盔甲在就不掉血(盔甲100%吸收伤害值) 二十二.提高盔甲耐久力 二十三.盔甲不用尽(用到剩0%不消失,可继续用) 二十四.火炬不用尽(用到剩0%不消失,可继续用) 二十五.矿工灯无限使用 二十六.提灯可以点50天 二十七.南瓜灯永不坏(无限使用) 二十八.石头营火永不灭(保留最小长明火) 二十九.保温石保温时间延长1倍 三十.蝙蝠棒无限使用 三十一.牙齿陷阱自动重置(1秒后重置) 三十二.装备猪皮包能补脑 三十三.全人物可制造打火机(原来只有薇洛专用) 三十四.全人物可制造伍迪的斧子(8下砍倒1棵树,普通斧子15下)三十五.全人物可制造魔法书 三十六.延长冰箱保鲜时间 三十七.种子腐烂变慢 三十八.增加墙的耐久力

三十九.让游戏中的一天更漫长(1天从真实世界的8分钟修改为16分钟) 四十.修改白天、傍晚、黑夜占一天的比例 四十一.地图全开(游戏中按Ctrl +1) 四十二.缩短草、树杈、芦苇、洞穴花长出时间 四十三.种草不用施肥 四十四.用芦苇种植芦苇(分株种植) 四十五.采矿时50%概率挖出宝石 四十六.种腐烂食物得高鸟,高鸟无攻击行为、下高鸟蛋 四十七.青年高鸟陪你到海枯石烂,并增加血量及攻击力 四十八.牙齿陷阱不伤害自养高鸟 四十九.农田收获更多产品 五十.农作物1秒长出来 五十一.晾肉无需等待(将肉放在晾肉架上即干) 五十二.煮一锅收多个料理 五十三.缩短煮料理时间 五十四.缩短钓鱼时间 五十五.延长燃料燃烧时间 五十六.使不能堆叠的物品可堆叠 五十七.使不可燃物品可作燃料 五十八.让物品不腐坏 五十九.修改制作道具的配方 六十恶魔零件制造 六十一.1刀砍树 一.提高主角血量10倍 用记事本打开游戏目录\data\scripts\tuning.lua文件,将以下内容:local wilson_health = 150 WX78_MIN_HEALTH = 100, WX78_MAX_HEALTH = 400, WOLFGANG_HEALTH_MIGHTY = 300, WOLFGANG_HEALTH_NORMAL = 200, WOLFGANG_HEALTH_WIMPY = 150, 修改为: local wilson_health = 1500 WX78_MIN_HEALTH = 1000, WX78_MAX_HEALTH = 4000, WOLFGANG_HEALTH_MIGHTY = 3000, WOLFGANG_HEALTH_NORMAL = 2000, WOLFGANG_HEALTH_WIMPY = 1500, 即可让全部主角血量提高10倍,修改这里也使盔甲的耐久度同步上升10倍

饥荒新手的25条实用小知识

饥荒新手的25条实用小知识 小编在这里给大家带来饥荒手机版新手必备攻略,25条实用小知识,大家一起来看下吧。 1.企鹅在从海里飞出或从生物身边躲开时会对墙造成伤害。 2.不要尝试使用回旋镖攻击已经长出眼球草的食人花。 3.在原版本中,食人花消化的物品有一部分会转移至地图上随机一点。(具体慢慢想吧) 4.猪村会出现鱼人头,鱼村会出现猪人头。但奇怪的是,猪村偶尔也会出现猪人头,而鱼村不会出现鱼人头。 5.在月圆之夜,眼睛一直是闭着的猪人头和鱼人头将会睁开它那空洞的双眼,这时破坏它将会在原来的掉落物上额外添加噩梦燃料×1. 6.蜘蛛腺体可以治疗切斯特,但是治疗药膏却不能。 7.猪人和兔人的仇恨行为理论上是一样的,但是兔人不会对橡树精产生仇恨。 8.深渊蠕虫没有繁殖功能,也没有像猪舍一样的刷新地点,那么它会被打完吗?你只要想想狗就行了。 9.企鹅在生物靠近时会藏起而不是吃掉属于它的蛋,藏起的蛋依然下降保鲜度。当企鹅死了,它将掉落它藏着的蛋。 所以说,企鹅掉落的蛋有时可能是烂鸡蛋 10.鱼人是主动攻击的生物,但是产生仇恨的判定不是在你接近鱼人的时候,而是在你接近鱼族废墟的时候。 11.在春天,所有生物的仇恨判定解除时间都会提高。 12.这个是送给易宁党的,不要尝试通过修改移动速度来穿越杀人蜂群。 13.原版中,机器人潮湿掉血的判定仅仅是下雨;而现在,机器人掉血的判定是雨露值。这意味着草帽对于机器人来说性价比提高了好几个档次。 14.墙坏了怎么办?你可以用它的本体来修补,也可以用制作它的原材料来修补,也可以拿蜘

蛛腺体来修补。 15.你会扔掉物品栏里的物品吧?在雨露值极高的时候,你将有机会直接扔掉你在装备栏里的工具或武器。 16.身在猪舍的猪人也是有仇恨的,当他的仇恨到达了一定高度就会无视傍晚黑夜冲出猪舍攻击仇恨目标。 17.以普通斧头来计算,小树要砍5下,中树要砍10下,大树要砍15下;但其实橡树精只要 砍12下。 18.晨星棒在生物处于潮湿状态下的伤害堪比影刀。 19.虽然龙蝇被冰冻的时间比其他四季boss短,但是它的入睡时间却比其他四季boss长的多。 20.春天的蜜蜂仇恨判定范围比杀人蜂小,而且如果生物和花进入了仇恨范围,它会优先选择采蜜,再来打你。 21.熊獾和巨鹿摧毁建筑的模式其实是不一样的,巨鹿是强制攻击,而熊獾是锤子拆击;所以建筑已经无法阻止熊獾了。 22.当疯猪锁定一个生物并对其产生仇恨时,它将会做出类似狼人一样的嚎叫动作;此时它将无限硬直。所以现在无限硬直并不是在变身的时候。 23.当你死亡后迅速强制关闭后,你会在最近的一次保存时间复活。为什么说是复活呢?因为它已经被记录在死亡日志里,只是没删档而已。 24.企鹅藏起蛋的时候被判定为"携带肉类",但是兔人不会主动攻击它们。有趣的是,当雇佣兔人对"携带肉类"的企鹅进行攻击时,兔人会说:“是肉!”、“不干净!”而不是“杀啊!”、“跳啊!” 25.针对第24条,其实坎普斯拾取肉类也会被判定为“携带肉类”,但是不管它带没带肉,兔人都会打他。

游戏修改大全AI难度修改

游戏修改?全: AI难度修改 1.前奏说明:直接修改d g d a t a.z i p?的游戏脚本?件,然后进游戏,程 序会提??件效验错误,?法进?游戏!只能按步骤2的?法。 ========================================================= 2.准备?作:把游戏根?录下的d g d a t a.z i p解压,把解压出来?件夹 中所有的??件夹全部移动到b i n d a t a?件夹,把原?件d g d a t a.z i p改名或 移往其他?录备份!(由于删除或改名D G D ATA.z i p后局域?不能连了,所 以建议备份下,以备?后联机?) ========================================================= 3.修改步骤:(第2步必须先执?,否则下??法继续进?!注:该修改 不能?于局域?联机) 进?游戏?录D e m i g o d b i n d a t a l u a找到[g a m e.l u a]这个?件,(如果有 朋友找不到这个?件,那可能是你上?的步骤没有做!请返回第??) ========================================================= ?记事本打开,找到下列脚本参数,并修改 ①初始?钱修改(锦标赛&?规模战役测试有效) (注意:经测试,锦标赛初始?钱按不同难度是下?脚本N o r m a l数值 的4、2、1倍) S t a r t i n g G o l d={ N o r m a l=1000,(游戏默认选项,改1000000就可以了够你挥霍的) H i g h=7500, R i c h=25000, ②游戏?钱倍数修改(?规模战役测试有效) G o l d I n c o m e M u l t i p l i e r={ L o w=0.5, N o r m a l=1.0,(战役默认选项,改100倍就财源滚滚了) H i g h=1.5, ③游戏经验倍数修改(锦标赛&?规模战役测试有效) E x p e r i e n c e M u l t i p l i e r={

相关文档
最新文档