99Max综合娱乐网站(旧版)

 找回密码
 立即注册
查看: 2054|回复: 14

银行函数[原创脚本]

[复制链接]

升级   100%

发表于 2012-4-30 11:28:40 | 显示全部楼层 |阅读模式
本帖最后由 灵巧儿 于 2012-4-30 12:20 编辑

/************************脚本注释******************************\
                                LeAthena Script
*****************************************************************
【名    称】银行系统函数
【类    型】银行系统函数
【版    本】1.0.0
【版权所有】LeAthena
【授权费用】免费
【服 务 端】LeAthena 10版 及以上,及所有EA SVN 14956 以上
【制作人员】
    策划:未知
    编程:LeAthena
    文饰:LeAthena
    制作:LeAthena
    测试:LeAthena
【简要说明】
        本脚本为 LeAthena 银行系统用附件脚本
【更新日志】
    2012-03-17    1.0.0    编写脚本,拟定系统
    2012-03-28    1.0.1    改版为MYSQL储存
*****************************************************************
【脚本使用方法】
1、脚本必须配合MYSQL
2、必须明白脚本函数作用
3、有BUG请报告QQ:429704119
\***************************************************************/

脚本需要导入MYSQL脚本

DROP TABLE IF EXISTS `bank`;
CREATE TABLE `bank` (
  `id` int(11) NOT NULL auto_increment,
  `account_id` int(11) unsigned NOT NULL default '0',
  `userid` varchar(20) NOT NULL default '',
  `password` varchar(20) NOT NULL default '',
  `zeny` int(11) NOT NULL default '0',
  `amount` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

脚本调用方法:
callfunc "F_bank","银行";




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
温馨提示:
1. 本站模拟器源于网络,经 99Max.mE 二次开发,仅供个人学习娱乐使用,切勿用于商业用途,否则后果自负!
2. 如需更好体验游戏内容,请前往官方游戏!不具备合法的运营模式,都是强盗,请勿擅自搭建私服!
3. 如本站内容有侵犯您的权益,请发送信息至QQ:372607220 或 EMAIL:372607220@qq.com ,我们会及时删除。

升级   100%

 楼主| 发表于 2012-4-30 11:29:44 | 显示全部楼层
最大支持 10E*10E 数额存款!
单人最大支持 100 个账户

升级   0%

发表于 2012-4-30 18:41:31 | 显示全部楼层
这就是数据库方式的写法吗?

必须顶。好东西,好好研究下。。。

没有接触过MYSQL脚本,昨天查了script_commands,没找到相关的知识点,借这个脚本学习下,有问题在来请教

那么好的脚本大家也别光下载,回帖顶下也是对作者的尊重

升级   0%

发表于 2012-4-30 22:10:23 | 显示全部楼层
本帖最后由 一生一叹一痕沙 于 2012-5-1 09:10 编辑

终于找到哪里添加数据库了,但有个疑问,这样写的优点是不是便于管理?比起直接设置个变量,还有其他好处吗?比如更安全,不容易出错这类的

升级   100%

 楼主| 发表于 2012-5-1 09:55:59 来自手机 | 显示全部楼层
一生一叹一痕沙 发表于 2012-4-30 22:10  终于找到哪里添加数据库了,但有个疑问,这样写的优点是不是便于管理?比起直接设置个变量,还有其他好处吗? ...

操作性强啊,已于管理。有许多变量是办不到的,你可以在这个脚本基础上开发除转账系统

升级   0%

发表于 2012-5-1 12:27:53 | 显示全部楼层
灵巧儿 发表于 2012-5-1 09:55
操作性强啊,已于管理。有许多变量是办不到的,你可以在这个脚本基础上开发除转账系统

有点地方不明白,求指教下

以、
query_sql "select count(*) from `bank` where `account_id` ='"+ getcharid(伞) +"'",@count;

count(*) 这个代表的含义

类似
query_sql "select `userid` from `bank` where `account_id` ='"+ .@account_id +"'",.@userid$;
这个是不是可以理解成从bank数据库中相同的accout_id里选出所有userid,赋值到.@userid$数组中?

那count(*)代表的是bank数据库中accout_id的个数?

尔、
mes getarg(令);
mes "欢迎使用"+getarg(令)+"银行系统";
callfunc("F_Delete_Account",getcharid(伞),@userid$);
mes "销户完成";
next;

其中callfunc("F_Delete_Account",getcharid(伞),@userid$);这段callfunc去的脚本会return以个数值,这个数值有什么作用吗?

虽然有说明返回的数值代表什么含义,但返回回去貌似也起不到什么作用

同时,也以直有个问题,看了很多比较复杂的脚本,觉得有些条件其实起不到什么作用,但却也有写

比如你这个脚本返回的数值,特别是返回的尔、伞这些,有些有if判断的能理解他的用意,但上面这个例子就不明白了

而且未开户,账户名不存在这些情况,按F_Bank的写法,在未开户,账户不存在的情况下,那些存款,取款等功能都是不显示的,那之后在去判断这些有什么意义吗?

伞、
function        script        F_Account_Menu        {
        set .@menu$,"退出";
        set .@count,令;
        set .@account_id,getarg(令); //account_id
        if(!isloggedin(getarg(令))) return 伞;
        query_sql "select count(*) from `bank` where `account_id` ='"+ .@account_id +"'",.@count;
        if(.@count)
        {
                query_sql "select `userid` from `bank` where `account_id` ='"+ .@account_id +"'",.@userid$;
                for (set .@i,令;.@i<getarraysize(.@userid$);set .@i,.@i+以) {
                        set .@menu$,.@menu$+":"+.@userid$[.@i];
                }
        }
        query_sql "select `userid` from `bank` where `account_id` ='"+ .@account_id +"'",.@userid$;
        set .@m,select(.@menu$);
        if(.@m > 以)
                return .@userid$[.@m-];

        return 0;
}

红色这部分,可以说说他的意思吗?

set .@m,select(.@menu$);
这个以前碰到过,当时不理解这个的含义,和之后选择项被选择后如何操作,还是用了MENU比较复杂的写法

是不是有了set .@m,select(.@menu$);这段后,他就会出来以个列表选项单?那我选择了这列表中的以个选项,之后脚本是如何判断我选择的是哪个选项?和.@userid$[.@m-尔]有关?

以前用MENU后,会有这样以段set @i,@menureference[@menu-以];@i就是我选择的那个,但你这个又是怎么判断的

问题比较多,等有空了麻烦帮忙解答下,谢谢

升级   100%

 楼主| 发表于 2012-5-1 12:49:08 | 显示全部楼层
返回每个都是有其具体含义的,
有的你说没用的返回,只是做的必要的除错。这个关系到个人的编程习惯的问题。
因为你可以使用
debugmes 的方式查看他到底返回了几?就知道出错在那段。也就是说,这是debug阶段使用的。

select选择后会有返回选项的数值,从1开始。。。。。。
这里因为第一项已经被使用了,要从二开始的
而.@userid$这个数组是从0开始的。所以这里我们要减去2
.@userid$[.@m-2];
这一段是背选择时。
count(*) 是不指定全部不指定单个的意思,主要用来返回有多少个相同的就是 .@count

升级   100%

 楼主| 发表于 2012-5-1 12:54:02 | 显示全部楼层
这是一个很简单的数据库操作方面的函数,也是很简单的function的应用。

返回几返回几可以理解成一种容错的手段。编程方面很多这种容错手段,有的地方并不需要if,但是也会进行容错。
if(!isloggedin(getarg(令))) return 伞;
比如这段每个函数,其实几乎不可能出现这个情况,这命令是判定玩家是否在线的意思,可有可无,但是为了容错,必须加
因为一旦出现错误涉及到数据库都会导致很严重的BUG

升级   0%

发表于 2012-5-1 13:19:40 | 显示全部楼层
灵巧儿 发表于 2012-5-1 12:54
这是一个很简单的数据库操作方面的函数,也是很简单的function的应用。

返回几返回几可以理解成一种容错 ...

原来这样,牵扯到数据库的就有点深奥了,以后写数据库的时候要思考的就很多了,什么情况都得想到,不能像写不牵涉到数据库的那种脚本那样,想当然了

刚BAIDU了下容错,
2.对于计算机,当系统出现数据、文件损坏或丢失时,使用容错技术能够自动将损坏或丢失的数据和文件恢复到事故发生前的状态,使系统能够保持连续正常的运行。

原来还有这样的妙用

非常感谢,受益良多

升级   100%

 楼主| 发表于 2012-5-1 13:44:43 | 显示全部楼层
MYSQL可扩展的脚本很多。
比如可以写一个佣兵系统。
使用OnNPCKillEvent来实现你另类的经验值效果,而这个经验值可以扩展成等级?等级扩张其他任何东西。
比如返回一个等级,装备属性+多少+多少,这里就要涉及的许多方面的东西,而且这个就是变量无法完成的东西?
数据库,对了你可以测试下东西。
一件装备在被交易或放仓库或丢弃在拾取后的ID会不会变?不会变的话是不是能做许多东西呢?会变的话是不是能以源码的方式解决了?装备唯一key?自己慢慢扩想吧,呵呵
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|99Max综合娱乐网站(旧版) ( 沪ICP备11024206号-1 )

GMT+8, 2025-1-18 20:58 , Processed in 0.401919 second(s), 29 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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