ZEV 发表于 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() == 欧洲人) {
                  赌赢几率 += 欧洲人人品;
                  赌博暴击 += 欧洲人人品2;
                  /**调试输出信息**/
                  if (脚本调制 == 1) {
                        cm.getPlayer().dropMessage(5, "欧 洲 人:" + 欧洲人 + "");
                  }
                }
            }
            //非洲人
            for (var i = 0; i < 非洲人.length; i++) {
                if (cm.getChar().getName() == 非洲人) {
                  赌赢几率 -= 非洲人人品;
                  赌博暴击 -= 非洲人人品2;
                  /**调试输出信息**/
                  if (脚本调制 == 1) {
                        cm.getPlayer().dropMessage(5, "非 洲 人:" + 非洲人 + "");
                  }
                }
            }
            /**调试输出信息**/
            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;
            }
      }
    }
}

as1010588 发表于 2018-11-25 17:50:50

谢谢大佬 学习了!

momogaga 发表于 2020-8-15 11:27:49

顶贴顶贴顶贴顶贴顶贴顶贴顶贴顶贴顶贴顶贴顶贴顶贴顶贴

momogaga 发表于 2020-8-15 11:30:36

顶贴顶贴顶贴顶贴顶贴顶贴顶贴顶贴顶贴顶贴顶贴顶贴顶贴

xsl3911 发表于 2022-8-8 04:24:16

牛逼哄哄

qaz007bb 发表于 2022-9-12 15:34:11

哇,这写的,头皮发麻。
页: [1]
查看完整版本: 教学,如何做一个赌博的脚本