设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
楼主: 玻璃柿子
打印 上一主题 下一主题

[原创发布] RMXP魔改计划及发布贴

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1117
在线时间
39 小时
注册时间
2023-2-17
帖子
66
41
 楼主| 发表于 2023-4-19 20:20:42 | 只看该作者
最近研究一些编辑器内部的原理,五一节前先不上新版本了,五一后会出一个较大的更新。

点评

发表于 2023-4-20 10:42
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36427
在线时间
10796 小时
注册时间
2009-3-15
帖子
4814
42
发表于 2023-4-21 22:55:02 | 只看该作者
本帖最后由 soulsaga 于 2023-4-22 18:46 编辑

关於插件,希望可以附上数个范例參考,
空白一片要重头写多困难
谁都可以,不一定要作者
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
292
在线时间
68 小时
注册时间
2022-11-22
帖子
13
43
发表于 2023-4-22 11:22:27 | 只看该作者
现在还有人愿意大刀阔斧的搞xp真的是难得
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1117
在线时间
39 小时
注册时间
2023-2-17
帖子
66
44
 楼主| 发表于 2023-4-24 21:16:52 | 只看该作者
soulsaga 发表于 2023-4-21 22:55
关於插件,希望可以附上数个范例參考,
空白一片要重头写多困难
谁都可以,不一定要作者 ...

好的,在考虑,最近在闭关中
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
35186
在线时间
4169 小时
注册时间
2007-12-15
帖子
10067
45
发表于 2023-4-25 11:30:48 | 只看该作者
本帖最后由 89444640 于 2023-4-26 11:31 编辑

跟楼主申请个改版的动画编辑器,可以考虑下,能在rmxp编辑器里直接运行即可套原来界面把下面动画编辑窗口弄大点
稳定不毁动画数据库,以前外国有个版本毁数据库,测试下不稳定没敢用,
可读取保存9999个动画列表,可随时运行测试动画效果,和默认一样的闪烁和音效播放,扩大动画原件可拉动范围,默认战斗窗口320*240,动画原件可拉出这个范围即可,
编辑动画原件的窗口不缩放动画原件,可改编辑器背景颜色,黑底色调节黑色动画原件看不清。
游戏启动前的设置,比如手柄键盘按键调节,分辨率选择,比如放大为1280*960全屏显示,其他部分自动补黑边等。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1253
在线时间
125 小时
注册时间
2018-5-28
帖子
45
46
发表于 2023-4-30 22:11:52 | 只看该作者
作者能不能把地图上限从999改成9999?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1117
在线时间
39 小时
注册时间
2023-2-17
帖子
66
47
 楼主| 发表于 2023-5-4 20:33:48 | 只看该作者
五一假期啥都没干,就知道玩…………

点评

玩就对了o(* ̄▽ ̄*)ブ  发表于 2023-5-4 23:11
玩玩挺好的,用爱发电不应有负罪感~~~  发表于 2023-5-4 20:43
回复 支持 1 反对 0

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1117
在线时间
39 小时
注册时间
2023-2-17
帖子
66
48
 楼主| 发表于 2023-5-5 20:46:43 | 只看该作者
lcx666s 发表于 2023-4-30 22:11
作者能不能把地图上限从999改成9999?

地图上限是吧,可以哦
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1117
在线时间
39 小时
注册时间
2023-2-17
帖子
66
49
 楼主| 发表于 2023-5-5 22:14:28 | 只看该作者
class Rlib
        attr_reader :WM_COMMAND
        attr_reader :WM_SHOWWINDOW
        attr_reader :WS_POPUP
        attr_reader :WS_BORDER
        attr_reader :WS_SYSMENU
        attr_reader :WS_CAPTION
        attr_reader :WS_CHILD
        attr_reader :WS_VISIBLE
        attr_reader :DS_MODALFRAME
        attr_reader :BS_DEFPUSHBUTTON
        attr_reader :IDOK
        attr_reader :IDCANCEL
        attr_reader :DG_BUTTON
        attr_reader :DG_EDIT
        attr_reader :DG_STATIC
        attr_reader :DG_LIST
        attr_reader :DG_SCROLL
        attr_reader :DG_COMBO
        attr_reader :TCM_GETCURFOCUS
       
        def initialize
                # 导入win32 api
                @utf8_MessageBox = Win32API.new('washduck', 'utf8_MessageBox', ['l','p','p','l'], 'l')
                @GetSubMenu = Win32API.new('user32', 'GetSubMenu', ['l','l'], 'l')
                @utf8_AppendMenu = Win32API.new('washduck', 'utf8_AppendMenu', ['l','l','l','p'], 'l')
                @utf8_CreateDialog = Win32API.new('washduck', 'utf8_CreateDialog', ['l','l','l','l','l','p'], 'l')
                @utf8_AppendDialogItem = Win32API.new('washduck', 'utf8_AppendDialogItem', ['l','l','l','l','l','l','l','l','p'], 'l')
                @ShowDialog = Win32API.new('washduck', 'ShowDialog', 'l', 'l')
                @DestoryDialog = Win32API.new('washduck', 'DestoryDialog', 'l', 'l')
                @GetWindowTitle = Win32API.new('washduck', 'GetWindowTitle', 'l', 'p')
                @EndDialog = Win32API.new('user32', 'EndDialog', ['l','l'], 'l')
                @GetDlgItem = Win32API.new('user32', 'GetDlgItem', ['l','l'], 'l')
                @GetDlgCtrlID = Win32API.new('user32', 'GetDlgCtrlID', 'l', 'l')
                @SendMessageA = Win32API.new('user32', 'SendMessageA', ['l','l','l','l'], 'l')
                @GetMemVal = Win32API.new('washduck', 'GetMemVal', 'l', 'l')
                @SetMemVal = Win32API.new('washduck', 'SetMemVal', ['l','l'], 'l')
               
                # 窗口消息
                @WM_COMMAND = 0x0111
                @WM_SHOWWINDOW = 0x0018

                # 窗口样式
                @WS_POPUP = 0x80000000
                @WS_BORDER = 0x00800000
                @WS_SYSMENU = 0x00080000
                @WS_CAPTION = 0x00C00000
                @WS_CHILD = 0x40000000
                @WS_VISIBLE = 0x10000000

                # 对话框样式
                @DS_MODALFRAME = 0x80

                # 按钮样式
                @BS_DEFPUSHBUTTON = 0x00000001

                # 控件消息
                @IDOK = 1
                @IDCANCEL = 2

                # 对话框元素
                @DG_BUTTON = 0x0080
                @DG_EDIT = 0x0081
                @DG_STATIC = 0x0082
                @DG_LIST = 0x0083
                @DG_SCROLL = 0x0084
                @DG_COMBO = 0x0085

                # 选项卡操作
                @TCM_GETCURFOCUS = 0x1300 + 47
        end
       
        def MessageBox(hwnd, text, lpCapition, uType)
                return @utf8_MessageBox.call(hwnd, text, lpCapition, uType)
        end
       
        def GetSubMenu(menu, index)
                return @GetSubMenu.call(menu, index)
        end
       
        def AppendMenu(menu, flags, mid, name)
                return @utf8_AppendMenu.call(menu, flags, mid, name)
        end
       
        def CreateDialog(style, x, y, cx, cy, title)
                return @utf8_CreateDialog.call(style, x, y, cx, cy, title)
        end
       
        def AppendDialogItem(id, style, x, y, cx, cy, classid, mid, name)
                return @utf8_AppendDialogItem.call(id, style, x, y, cx, cy, classid, mid, name)
        end
       
        def ShowDialog(id)
                return @ShowDialog.call(id)
        end
       
        def DestoryDialog(id)
                return @DestoryDialog.call(id)
        end
       
        def GetWindowTitle(hWnd)
                return @GetWindowTitle.call(hWnd)
        end
       
        def EndDialog(hWnd, wParam)
                return @EndDialog.call(hWnd, wParam)
        end
       
        def GetDlgItem(hWnd, mid)
                return @GetDlgItem.call(hWnd, mid)
        end
       
        def SendMessageA(hWnd, message, wParam, lParam)
                return @SendMessageA.call(hWnd, message, wParam, lParam)
        end
       
        def GetMemVal(addr)
                return @GetMemVal.call(addr)
        end
       
        def SetMemVal(addr, val)
                return @SetMemVal.call(addr, val)
        end
       
        def SetWeaponAtk(val)
                SetMemVal(0x00435AEC,val)
                SetMemVal(0x00436239,val)
        end
       
        def SetWeaponPdef(val)
                SetMemVal(0x00435AFF,val)
                SetMemVal(0x0043625B,val)
        end
       
        def SetWeaponMdef(val)
                SetMemVal(0x00435B12,val)
                SetMemVal(0x0043627D,val)
        end
       
        def SetWeaponStr(min,max)
                SetMemVal(0x00435B25,max)
                SetMemVal(0x0043629F,max)
               
                SetMemVal(0x00435B2A,min)
                SetMemVal(0x004362A4,min)
        end
       
        def SetWeaponDex(min,max)
                SetMemVal(0x00435B3B,max)
                SetMemVal(0x004362C4,max)
               
                SetMemVal(0x00435B40,min)
                SetMemVal(0x004362C9,min)
        end
       
        def SetWeaponAgi(min,max)
                SetMemVal(0x00435B51,max)
                SetMemVal(0x004362E9,max)
               
                SetMemVal(0x00435B56,min)
                SetMemVal(0x004362EE,min)
        end
       
        def SetWeaponInt(min,max)
                SetMemVal(0x00435B67,max)
                SetMemVal(0x0043630E,max)
               
                SetMemVal(0x00435B6C,min)
                SetMemVal(0x00436313,min)
        end
       
        def SetArmorPdef(val)
                SetMemVal(0x00427E2C,val)
                SetMemVal(0x0042858E,val)
        end
       
        def SetArmorMdef(val)
                SetMemVal(0x00427E3F,val)
                SetMemVal(0x004285B0,val)
        end
       
        def SetArmorStr(min,max)
                SetMemVal(0x00427E62,max)
                SetMemVal(0x004285F1,max)
               
                SetMemVal(0x00427E67,min)
                SetMemVal(0x004285F6,min)
        end
       
        def SetArmorDex(min,max)
                SetMemVal(0x00427E78,max)
                SetMemVal(0x00428616,max)
               
                SetMemVal(0x00427E7D,min)
                SetMemVal(0x0042861b,min)
        end
       
        def SetArmorAgi(min,max)
                SetMemVal(0x00427E8E,max)
                SetMemVal(0x0042863B,max)
               
                SetMemVal(0x00427E93,min)
                SetMemVal(0x00428640,min)
        end
       
        def SetArmorInt(min,max)
                SetMemVal(0x00427EA4,max)
                SetMemVal(0x00428660,max)
               
                SetMemVal(0x00427EA9,min)
                SetMemVal(0x00428665,min)
        end
       
        def SetEnemyStr(val)
                SetMemVal(0x0042AEEF,val)
                SetMemVal(0x0042BBCC,val)
        end
       
        def SetEnemyDex(val)
                SetMemVal(0x0042AF02,val)
                SetMemVal(0x0042BBF2,val)
        end
       
        def SetEnemyAgi(val)
                SetMemVal(0x0042AF15,val)
                SetMemVal(0x0042BC18,val)
        end
       
        def SetEnemyInt(val)
                SetMemVal(0x0042AF28,val)
                SetMemVal(0x0042BC3E,val)
        end
       
        def SetEnemyAtk(val)
                SetMemVal(0x0042AF3B,val)
                SetMemVal(0x0042BC64,val)
        end
       
        def SetEnemyPdef(val)
                SetMemVal(0x0042AF4E,val)
                SetMemVal(0x0042BC8A,val)
        end
       
        def SetEnemyMdef(val)
                SetMemVal(0x0042AF61,val)
                SetMemVal(0x0042BCB0,val)
        end
       
        def SetDatabaseMax(val)
                SetMemVal(0x00496C9C,val)
        end
       
        def SetMapMaxSize(val)
                SetMemVal(0x004888E0,val)
                SetMemVal(0x00488906,val)
                SetMemVal(0x00488A92,val)
                SetMemVal(0x00488AA5,val)
        end
end

$rlib = Rlib.new

class PluginWindow
        def initialize
                @Window = $rlib.CreateDialog($rlib.WS_POPUP | $rlib.WS_BORDER | $rlib.WS_SYSMENU | $rlib.DS_MODALFRAME | $rlib.WS_CAPTION, 10, 10, 300, 300, "插件管理")
                $rlib.AppendDialogItem(@window, $rlib.WS_CHILD | $rlib.WS_VISIBLE | $rlib.BS_DEFPUSHBUTTON, 10, 70, 80, 20, $rlib.DG_BUTTON, $rlib.IDOK, "确定")
        end
       
        def ShowWindow()
                $rlib.ShowDialog(@window)
        end
       
        def Update(hWnd, message, wParam, lParam)
                case message
                when $rlib.WM_COMMAND
                        case wParam
                        when $rlib.IDOK
                                $rlib.MessageBox(0, "你好,这里是插件窗口", '打印', 0)
                                d = load_data("Data/Actors.rxdata")
                                $rlib.MessageBox(0, d[1].name, '读取第一个角色名字', 0)
                        when $rlib.IDCANCEL
                                $rlib.EndDialog(hWnd, wParam)
                        end
                end
                return false
        end
end

class DatabaseWindow
        def initialize(hWnd)
                #$rlib.MessageBox(0, '数据库窗口启动', '调试信息', 0)
                @hWnd = hWnd
                @tab = $rlib.GetDlgItem(hWnd, 3101)
        end
       
        def GetTebIndex()
                return $rlib.SendMessageA(@tab, $rlib.TCM_GETCURFOCUS, 0, 0)
        end
       
        def Update(hWnd, message, wParam, lParam)
                #$rlib.MessageBox(0, message.to_s + ' ' + wParam.to_s, '欢迎', 0)
        end
end

class MainWindow
        def initialize
                #$rlib.MessageBox(0, 'rpg maker xp必将迎来新生', '欢迎', 0)
                @plugin = PluginWindow.new
               
                #武器攻击力破限
                $rlib.SetWeaponAtk(9999)
               
                #武器物理防御破限
                $rlib.SetWeaponPdef(9999)
               
                #武器魔法防御破限
                $rlib.SetWeaponMdef(9999)
               
                #武器力量破限
                $rlib.SetWeaponStr(-9999, 9999)
               
                #武器灵巧破限
                $rlib.SetWeaponDex(-9999, 9999)
               
                #武器速度破限
                $rlib.SetWeaponAgi(-9999, 9999)
               
                #武器魔力破限
                $rlib.SetWeaponInt(-9999, 9999)
               
                #防具物理防御破限
                $rlib.SetArmorPdef(9999)
               
                #防具魔法防御破限
                $rlib.SetArmorMdef(9999)
               
                #防具力量破限
                $rlib.SetArmorStr(-9999, 9999)
               
                #防具灵巧破限
                $rlib.SetArmorDex(-9999, 9999)
               
                #防具速度破限
                $rlib.SetArmorAgi(-9999, 9999)
               
                #防具魔力破限
                $rlib.SetArmorInt(-9999, 9999)
               
                #敌人攻击力破限
                $rlib.SetEnemyAtk(9999)
               
                #敌人物理防御破限
                $rlib.SetEnemyPdef(9999)
               
                #敌人魔法防御破限
                $rlib.SetEnemyMdef(9999)
               
                #敌人力量破限
                $rlib.SetEnemyStr(9999)
               
                #敌人灵巧破限
                $rlib.SetEnemyDex(9999)
               
                #敌人速度破限
                $rlib.SetEnemyAgi(9999)
               
                #敌人魔力破限
                $rlib.SetEnemyInt(9999)
               
                #数据库元素上限破限
                $rlib.SetDatabaseMax(9999)
               
                #地图大小破限
                $rlib.SetMapMaxSize(9999)
        end
       
        def ShowMenu(id, menu)
                case id
                        when 801
                        sub_menu = $rlib.GetSubMenu(menu, 6)
                        $rlib.AppendMenu(sub_menu, 0, 100000, '插件')
                end
        end
       
        def UpdateMain(hWnd, message, wParam, lParam)
                case message
                when $rlib.WM_COMMAND
                        case wParam
                        when 100000
                                @plugin.ShowWindow
                        end
                end
                return false
        end
       
        def Update(hWnd, message, wParam, lParam)
                title = $rlib.GetWindowTitle(hWnd)
                case title
                when '插件管理'
                        return @plugin.Update(hWnd, message, wParam, lParam)
                when '数据库'
                        if message == $rlib.WM_SHOWWINDOW && wParam == 1
                                @db = DatabaseWindow.new(hWnd)
                        end
                when ''
                        @db.Update(hWnd, message, wParam, lParam)
                else
                        return UpdateMain(hWnd, message, wParam, lParam)
                end
                return false
        end
end

$_washduck = MainWindow.new

点评

不好意思,这个脚本有bug,修复后再用。  发表于 2023-5-7 12:58
他大概想要地图数的破限?  发表于 2023-5-6 17:28
复制这个脚本,替换原工程中的washduck.rb,就能破限地图大小的限制。注意,要拿我改过的rmxp才可以,原版是没有效果的。  发表于 2023-5-5 22:18

评分

参与人数 1+1 收起 理由
89444640 + 1 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1117
在线时间
39 小时
注册时间
2023-2-17
帖子
66
50
 楼主| 发表于 2023-5-5 22:15:35 | 只看该作者
玻璃柿子 发表于 2023-5-5 22:14
class Rlib
        attr_reader :WM_COMMAND
        attr_reader :WM_SHOWWINDOW

复制这个脚本,替换原工程中的washduck.rb,就能破限地图大小的限制。注意,要拿我改过的rmxp才可以,原版是没有效果的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-22 00:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表