查看: 4289|回复: 5

教学,如何做一个赌博的脚本

  • TA的每日心情
    无聊
    2020-7-26 17:37
  • 签到天数: 56 天

    [LV.5]常住居民I

    服务端开发者

    枫币
    4919
    威望
    61
    贡献
    431
    在线时间
    56 小时
    注册时间
    2016-12-30
    QQ
    发表于 2018-11-7 15:17:53 | 显示全部楼层 |阅读模式
    /*
    ZEVMS冒险岛(079)游戏服务端
    版本号:20181107A
    脚  本:游戏赌博脚本,点券,金币,抵用券 3合1切换
    可设置相关赌博信息
    1.赌博类型
    2.赌博赢的几率
    3.赌博赢的赔率
    4.赌博暴击几率
    5.赌博暴击的赔率
    6.赌注下注上下限
    7.连败保护机制,增加赢的几率
    8.连赢限制机制,减少赢的几率
    9.欧洲人设置
    10.非洲人设置
    */

    //赌博类型,1金币,2点券,3抵用
    var 赌博类型 = 1;

    //赌博赌赢的百分率(%)
    var 赌赢几率 = 30;

    //赌博获胜后获得的赔率,本金x倍率(倍)
    var 赌博赔率 = 2;

    //赌博获胜后出现暴击几率(%)
    var 赌博暴击 = 10;

    //赌博暴击赔率,本金x倍率(倍)
    var 暴击赔率 = 5;

    //赌博最高下赌注
    var 赌注上限 = 100 * 10000;

    //赌博最低下赌注
    var 赌注下限 = 1 * 10;

    //连败增加赢的几率保护机制,1开启,2关闭
    var 连败保护 = 1;

    //连赢增加输的几率保护机制,1开启,2关闭
    var 连赢限制 = 1;

    //欧洲人增加赢的几率
    var 欧洲人人品 = 5;

    //欧洲人增加赢的几率【暴击】
    var 欧洲人人品2 = 10;

    //欧洲人名单设置
    var 欧洲人 = [
        ["小Z"],
            ["老康"],
            ["帅康无敌"]
    ];

    //非洲人减少赢的几率
    var 非洲人人品 = 5;

    //非洲人减少赢的几率【暴击】
    var 非洲人人品2 = 5;

    //非洲人名单设置
    var 非洲人 = [
        ["枫之念"]
    ];
    /**脚本调试信息**/
    //脚本调试设置,1开启,2关闭,非调试请关闭,这里会输出所有赌博信息。
    var 脚本调制 = 1;

    importPackage(net.sf.odinms.client);
    var status = 0;
    var 赌注;

    function start() {
        status = -1;
        action(1, 0, 0);
    }

    function action(mode, type, selection) {
        if (mode == -1) {
            cm.对话结束();
        } else {
            if (mode == 0) {
                //否定后显示的文字
                cm.说明文字("你暂时还不想赌博?");
                cm.对话结束();
                return;
            }
            if (mode == 1) {
                status++;
            } else {
                status--;
            }
            var 获胜值 = cm.getBossRank("赌博获胜值", 2);
            var 失败值 = cm.getBossRank("赌博失败值", 2);
            if (status == 0) {
                //判断赌博类型
                if (赌博类型 == 1) {
                    var 类型 = "金币";
                    /**调试输出信息**/
                    if (脚本调制 == 1) {
                        cm.getPlayer().dropMessage(5, "赌博类型:金币");
                    }
                } else if (赌博类型 == 2) {
                    var 类型 = "点券";
                    /**调试输出信息**/
                    if (脚本调制 == 1) {
                        cm.getPlayer().dropMessage(5, "赌博类型:点券");
                    }
                } else if (赌博类型 == 3) {
                    var 类型 = "抵用券";
                    /**调试输出信息**/
                    if (脚本调制 == 1) {
                        cm.getPlayer().dropMessage(5, "赌博类型:抵用券");
                    }
                }
                //显示说明,输入框
                cm.sendGetText("   Hi~#b#h ##k,你要来试试手气吗?输入你要下的赌注数量,然后放手一搏听天由命吧?搏一搏,单车变摩托哦。\r\n\r\n输入你要下的赌注#r(" + 类型 + ")#k:");
            } else if (status == 1) {
                赌注 = cm.getText();
                //判断输入的赌注是否是正数
                if (赌注 < 0) {
                    cm.说明文字("你输入的赌注不正确。");
                    cm.对话结束();
                    return;
                }
                //判断赌注最高
                if (赌注 > 赌注上限) {
                    cm.说明文字("赌注超过限制上限。");
                    cm.对话结束();
                    return;
                }
                //判断赌注最低
                if (赌注 < 赌注下限) {
                    cm.说明文字("赌注低于限制下限。");
                    cm.对话结束();
                    return;
                }
                /**调试输出信息**/
                if (脚本调制 == 1) {
                    cm.getPlayer().dropMessage(5, "赌赢几率:" + 赌赢几率 + "% (基础前)");
                    cm.getPlayer().dropMessage(5, "赌博暴击:" + 赌博暴击 + "% (基础前)");
                }
                //赌博保护机制
                ////连败保护机制
                if (连败保护 == 1) {
                    //连败值大于或者等于10
                    if (失败值 >= 10) {
                        //增加10%赌赢的几率
                        赌赢几率 += 10;
                        /**调试输出信息**/
                        if (脚本调制 == 1) {
                            cm.getPlayer().dropMessage(5, "连败保护:触发");
                            cm.getPlayer().dropMessage(5, "连败保护:增加10%赌赢");
                        }
                    } else {
                        /**调试输出信息**/
                        if (脚本调制 == 1) {
                            cm.getPlayer().dropMessage(5, "连败保护:未触发");
                        }
                    }
                }
                ////连赢限制机制
                if (连赢限制 == 1) {
                    //连赢值大于或者等于10
                    if (获胜值 >= 10) {
                        //减少10%赌赢的几率
                        赌赢几率 -= 10;
                        /**调试输出信息**/
                        if (脚本调制 == 1) {
                            cm.getPlayer().dropMessage(5, "连赢限制:触发");
                            cm.getPlayer().dropMessage(5, "连赢限制:减少10%赌赢");
                        }
                    } else {
                        if (脚本调制 == 1) {
                            cm.getPlayer().dropMessage(5, "连赢限制:未触发");
                        }
                    }
                }
                //欧洲人
                for (var i = 0; i < 欧洲人.length; i++) {
                    if (cm.getChar().getName() == 欧洲人[i][0]) {
                        赌赢几率 += 欧洲人人品;
                        赌博暴击 += 欧洲人人品2;
                        /**调试输出信息**/
                        if (脚本调制 == 1) {
                            cm.getPlayer().dropMessage(5, "欧 洲 人:" + 欧洲人[i][0] + "");
                        }
                    }
                }
                //非洲人
                for (var i = 0; i < 非洲人.length; i++) {
                    if (cm.getChar().getName() == 非洲人[i][0]) {
                        赌赢几率 -= 非洲人人品;
                        赌博暴击 -= 非洲人人品2;
                        /**调试输出信息**/
                        if (脚本调制 == 1) {
                            cm.getPlayer().dropMessage(5, "非 洲 人:" + 非洲人[i][0] + "");
                        }
                    }
                }
                /**调试输出信息**/
                if (脚本调制 == 1) {
                    cm.getPlayer().dropMessage(5, "赌    注:" + 赌注 + "");
                    cm.getPlayer().dropMessage(5, "赌注上限:" + 赌注上限 + "");
                    cm.getPlayer().dropMessage(5, "赌注下限:" + 赌注下限 + "");
                    cm.getPlayer().dropMessage(5, "失 败 值:" + 失败值 + "");
                    cm.getPlayer().dropMessage(5, "获 胜 值:" + 获胜值 + "");
                    cm.getPlayer().dropMessage(5, "赌赢几率:" + 赌赢几率 + "% (计算后)");
                    cm.getPlayer().dropMessage(5, "赌博暴击:" + 赌博暴击 + "% (计算后)");
                }
                //判断赌博类型
                ////金币
                if (赌博类型 == 1) {
                    if (cm.判断金币() < 赌注) {
                        cm.说明文字("你没有这么多金币哦。");
                        cm.对话结束();
                        return;
                    }
                    //开始计算赌博的结果
                    if (cm.百分率(赌赢几率)) {
                        //收取赌博下注本金
                        cm.收金币(赌注);
                        //赌博赢了的奖励
                        if (cm.百分率(赌博暴击)) {
                            cm.给金币(赌注 * 暴击赔率);
                            //个人公告
                            cm.说明文字("#r【暴击】#k 恭喜你赌赢了,获得 #b" + 赌注 * 暴击赔率 + "#k 金币。");
                            //全服公告
                            cm.全服公告("[赌博公告]:恭喜玩家 " + cm.getChar().getName() + " [暴击]赌赢了 " + 赌注 * 暴击赔率 + " 金币。");
                        } else {
                            cm.给金币(赌注 * 赌博赔率);
                            //个人公告
                            cm.说明文字("恭喜你赌赢了,获得 #b" + 赌注 * 赌博赔率 + "#k 金币。");
                            //全服公告
                            cm.全服公告("[赌博公告]:恭喜玩家 " + cm.getChar().getName() + " 赌赢了 " + 赌注 * 赌博赔率 + " 金币。");
                        }
                        //增加获胜值
                        cm.setBossRankCount("赌博获胜值", 1);
                        //清空失败值
                        cm.setBossRankCount("赌博失败值", -失败值);
                        cm.对话结束();
                    } else {
                        //收取赌博下注本金
                        cm.收金币(赌注);
                        cm.说明文字("很遗憾,你输了。");
                        //增加失败值
                        cm.setBossRankCount("赌博失败值", 1);
                        //清空获胜值
                        cm.setBossRankCount("赌博获胜值", -获胜值);
                        cm.对话结束();
                    }
                    ////点券
                } else if (赌博类型 == 2) {
                    if (cm.判断点券() < 赌注) {
                        cm.说明文字("你没有这么多点券哦。");
                        cm.对话结束();
                        return;
                    }
                    //开始计算赌博的结果
                    if (cm.百分率(赌赢几率)) {
                        //收取赌博下注本金
                        cm.收点券(赌注);
                        //赌博赢了的奖励
                        if (cm.百分率(赌博暴击)) {
                            cm.给点券(赌注 * 暴击赔率);
                            //个人公告
                            cm.说明文字("#r【暴击】#k 恭喜你赌赢了,获得 #b" + 赌注 * 暴击赔率 + "#k 点券。");
                            //全服公告
                            cm.全服公告("[赌博公告]:恭喜玩家 " + cm.getChar().getName() + " [暴击]赌赢了 " + 赌注 * 暴击赔率 + " 点券。");
                        } else {
                            cm.给点券(赌注 * 赌博赔率);
                            //个人公告
                            cm.说明文字("恭喜你赌赢了,获得 #b" + 赌注 * 赌博赔率 + "#k 点券。");
                            //全服公告
                            cm.全服公告("[赌博公告]:恭喜玩家 " + cm.getChar().getName() + " 赌赢了 " + 赌注 * 赌博赔率 + " 金币。");
                        }
                        //增加获胜值
                        cm.setBossRankCount("赌博获胜值", 1);
                        //清空失败值
                        cm.setBossRankCount("赌博失败值", -失败值);
                        cm.对话结束();
                    } else {
                        //收取赌博下注本金
                        cm.收点券(赌注);
                        cm.说明文字("很遗憾,你输了。");
                        //增加失败值
                        cm.setBossRankCount("赌博失败值", 1);
                        //清空获胜值
                        cm.setBossRankCount("赌博获胜值", -获胜值);
                        cm.对话结束();
                    }
                    ////抵用
                } else if (赌博类型 == 3) {
                    if (cm.判断抵用券() < 赌注) {
                        cm.说明文字("你没有这么多抵用哦。");
                        cm.对话结束();
                        return;
                    }
                    //开始计算赌博的结果
                    if (cm.百分率(赌赢几率)) {
                        //收取赌博下注本金
                        cm.收抵用券(赌注);
                        //赌博赢了的奖励
                        if (cm.百分率(赌博暴击)) {
                            cm.给抵用券(赌注 * 暴击赔率);
                            //个人公告
                            cm.说明文字("#r【暴击】#k 恭喜你赌赢了,获得 #b" + 赌注 * 暴击赔率 + "#k 抵用券。");
                            //全服公告
                            cm.全服公告("[赌博公告]:恭喜玩家 " + cm.getChar().getName() + " [暴击]赌赢了 " + 赌注 * 暴击赔率 + " 抵用券。");
                        } else {
                            cm.给抵用券(赌注 * 赌博赔率);
                            //个人公告
                            cm.说明文字("恭喜你赌赢了,获得 #b" + 赌注 * 赌博赔率 + "#k 抵用券。");
                            //全服公告
                            cm.全服公告("[赌博公告]:恭喜玩家 " + cm.getChar().getName() + " 赌赢了 " + 赌注 * 赌博赔率 + " 金币。");
                        }
                        //增加获胜值
                        cm.setBossRankCount("赌博获胜值", 1);
                        //清空失败值
                        cm.setBossRankCount("赌博失败值", -失败值);
                        cm.对话结束();
                    } else {
                        //收取赌博下注本金
                        cm.收抵用券(赌注);
                        cm.说明文字("很遗憾,你输了。");
                        //增加失败值
                        cm.setBossRankCount("赌博失败值", 1);
                        //清空获胜值
                        cm.setBossRankCount("赌博获胜值", -获胜值);
                        cm.对话结束();
                    }
                } else {
                    cm.说明文字("脚本错误,判断赌博类型错误。");
                    cm.对话结束();
                    return;
                }
            }
        }
    }

    ZEVMS冒险岛(079)游戏服务端
  • TA的每日心情

    2020-2-17 20:31
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    初级会员

    枫币
    391
    威望
    -3
    贡献
    1
    在线时间
    20 小时
    注册时间
    2018-1-9
    QQ
    发表于 2018-11-25 17:50:50 | 显示全部楼层
    谢谢大佬 学习了!
  • TA的每日心情
    开心
    2020-8-15 11:31
  • 签到天数: 1 天

    [LV.1]初来乍到

    新人上路

    枫币
    43
    威望
    0
    贡献
    1
    在线时间
    0 小时
    注册时间
    2020-8-15
    QQ
    发表于 2020-8-15 11:27:49 | 显示全部楼层
    顶贴顶贴顶贴顶贴顶贴顶贴顶贴顶贴顶贴顶贴顶贴顶贴顶贴
  • TA的每日心情
    开心
    2020-8-15 11:31
  • 签到天数: 1 天

    [LV.1]初来乍到

    新人上路

    枫币
    43
    威望
    0
    贡献
    1
    在线时间
    0 小时
    注册时间
    2020-8-15
    QQ
    发表于 2020-8-15 11:30:36 | 显示全部楼层
    顶贴顶贴顶贴顶贴顶贴顶贴顶贴顶贴顶贴顶贴顶贴顶贴顶贴

    该用户从未签到

    新人上路

    枫币
    109
    威望
    0
    贡献
    0
    在线时间
    12 小时
    注册时间
    2021-9-17
    发表于 2022-8-8 04:24:16 来自手机 | 显示全部楼层
    牛逼哄哄
    回复

    使用道具 举报

    该用户从未签到

    新人上路

    枫币
    21
    威望
    0
    贡献
    0
    在线时间
    0 小时
    注册时间
    2022-9-12
    QQ
    发表于 2022-9-12 15:34:11 | 显示全部楼层
    哇,这写的,头皮发麻。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    枫叶物语即使倒闭也绝对不会变质
    Copyright © 2001-2013 Discuz Team. Powered by Discuz! X3.5 |网站地图 | 本站已运行: