铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 4564|回复: 7

[其他] 给Lua复刻版加了一个输入主角姓名的对话框

[复制链接]
发表于 2009-9-18 18:04 | 显示全部楼层 |阅读模式

马上注册,结交更多侠友!

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
游泳的鱼的Lua复刻版没有输入主角姓名的功能,我给加了一下。主要为了自己学习一下C跟LUA的交互。如果有用的话,能为鱼兄节省点开发时间也好。

主要改动有:
1、增加一个资源文件(rc),画上输入姓名的对话框。
2、修改jymain.c,增加lua接口函数名的定义
      {"InputNameDialog", HAPI_InputNameDialog},
3、修改luafun.h,增加函数定义
#include <windows.h>
int HAPI_InputNameDialog(lua_State *pL);
LRESULT MainDlgProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam);
4、修改luafun.c,增加函数实现
// 资源ID定义
#define IDD_DIALOG1 101
#define IDC_EDIT1   1000
#define IDC_BUTTON1 1001
#define IDC_BUTTON2 1002

char g_RoleName[64];         // 输入主角名字全局缓存区

// 对话框回调函数
LRESULT MainDlgProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
     switch (Msg)
     {
         case WM_COMMAND:
                 if (LOWORD(wParam) == IDC_BUTTON1)
                 {
                         HWND hEdit =  GetDlgItem(hDlg,IDC_EDIT1);
                         int nLen = GetWindowText(hEdit,g_RoleName,63);
                         if (nLen<1)
                         {
                                 strcpy(g_RoleName,"神");
                         }
                         EndDialog(hDlg,1);
                 } else if (LOWORD(wParam) == IDC_BUTTON2)
                 {
                         strcpy(g_RoleName,"神");
                         EndDialog(hDlg,1);
                 }
         return TRUE;
         break;

     case WM_CLOSE:
                 EndDialog(hDlg,1);
         return TRUE;
         break;

     case WM_DESTROY:
         return TRUE;
         break;
     
         };

     return FALSE;
}

// Lua的接口函数
int HAPI_InputNameDialog(lua_State *pL)
{
        char *dest;

        memset(g_RoleName,0,64);
         // 显示对话框
        DialogBox(NULL,MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)MainDlgProc);
       
        dest=(char*)malloc(64);
        memset(dest,0,64);
        strcpy(dest,g_RoleName);
         // 返回输入的姓名
        lua_pushstring(pL,dest);
        SafeFree(dest);

        return 1;
}

5、编译

6、最后修改jymain.lua
    把 JY.Person[0]["姓名"]=CC.NewPersonName;
    改为
    JY.Person[0]["姓名"] = lib.InputNameDialog();

7、OK

[发帖际遇]: 武川镇买通太监进宫偷葵花,转手挣到银两10.

评分

参与人数 1声望 +10 收起 理由
黄顺坤 + 10 我比较喜欢这个功能。。

查看全部评分

【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2009-9-18 18:06 | 显示全部楼层
噢噢噢~~好久没有见到技术贴了~~

虽然不改Lua了,但先顶再看~~
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2009-9-18 18:24 | 显示全部楼层
我比较喜欢这个功能。。但是。。
似乎。。
手机上能看到对话框不?

[发帖际遇]: 黄顺坤卖下一个mod的制作人绝密采访稿,狂赚银两16.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2009-9-18 18:51 | 显示全部楼层
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2009-9-18 19:05 | 显示全部楼层
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2009-9-18 20:29 | 显示全部楼层
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2009-9-19 09:50 | 显示全部楼层
原帖由 黄顺坤 于 2009-9-18 18:24 发表
我比较喜欢这个功能。。但是。。
似乎。。
手机上能看到对话框不?

[发帖际遇]: 黄顺坤卖下一个mod的制作人绝密采访稿,狂赚银两16.


这是基于windows的采用windows的消息机制。
window ce的手机改一改可能可以,塞班的肯定不行。
对话框是采用操作系统的机制,移植性差,要有好的移植性可能要别的办法,我的水平不足,没办法了。

[发帖际遇]: 武川镇答应假扮小宝应老婆之约,得到偿金银两8.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2009-9-19 19:20 | 显示全部楼层
lua与主程序的通信主要是通过栈的,大部分都是对栈的操作。

[发帖际遇]: weyl在英雄大会上识破霍都的诡计,增加声望1。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-5-16 23:12

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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