wuyouxl 发表于 2013-3-17 01:31:51

发一个正宗银行。 【自己修改的】

MYSQL:/*
MySQL Data Transfer
Source Host: localhost
Source Database: odinms
Target Host: localhost
Target Database: odinms
Date: 2008-11-16 14:36:15
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for bank
-- ----------------------------
DROP TABLE IF EXISTS `bank`;
CREATE TABLE `bank` (
`id` int(11) NOT NULL auto_increment,
`charid` int(11) NOT NULL UNIQUE,
`money` int(11) NOT NULL,
PRIMARY KEY(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- ----------------------------
-- Records
-- ---------------------------- JAVA:找到net.sf.odinms.scripting.npc.NPCConversationManager
找到package net.sf.odinms.scripting.npc;
添加import java.sql.*;import
net.sf.odinms.database.DatabaseConnection;
在最后一个大括号前添加
引用
public int getMoney()
      {
            int money=0;
            try {
                int cid = getPlayer().getId();
                Connection con = DatabaseConnection.getConnection();
                PreparedStatement limitCheck = con.prepareStatement("SELECT * FROM Bank WHERE charid="+cid+"");
                ResultSet rs = limitCheck.executeQuery();
                if(rs.next())
                {
                  money=rs.getInt("money");
                }
                limitCheck.close();
                rs.close();
                } catch (SQLException ex) {
                }
                return money;
      }
      
      public int addMoney(int money,int type)
      {   
            try {
                int cid = getPlayer().getId();
            
                Connection con = DatabaseConnection.getConnection();
                PreparedStatement ps = con.prepareStatement("select * from bank where charid=?");
                ps.setInt(1, cid);
                ResultSet rs=ps.executeQuery();
                if(rs.next())
                {
                  if(type==1)
                  {
                        if(money>rs.getInt("money"))
                        {
                            return -1;
                        }
                  }
                  ps = con.prepareStatement("UPDATE Bank SET money =money+ " + money + " WHERE charid = " + cid + "");
                  return ps.executeUpdate();                  
                }
               
            } catch (SQLException ex) {               
            }
            return 0;
      }
      public int addBank()
      {
            int r=0;
      try {
            Connection con = DatabaseConnection.getConnection();
            PreparedStatement ps = con.prepareStatement("insert into bank (charid,money) values (?,0)");
            ps.setInt(1, getPlayer().getId());            
            r=ps.executeUpdate();
            ps.close();
            
      } catch (SQLException ex) {
          r=0;
      }
            
            return r;
      } 以上的一般端里都有   但是这个NPC有一个缺点就是储存的金钱也只能储存21E。所以我自己就修改了一下下    大家当做学习吧

原来的NPC是这样的:var status = 0;
var t=new Array("存钱","取钱","查看","开户");
var money=new Array("100W","300W","500W","1000W");
var money1=new Array("1000000","3000000","5000000","10000000");
var x=0;
function start() {
status = -1;
action(1, 0, 0);
}
function action(mode, type, selection) {
    if (mode == -1) {
      cm.dispose();
    } else {
          if (mode == 0 && status == 0) {
          cm.dispose();
          return;
      }
      if (mode == 1)
      status++;
      else
      status--;
      if (status == 0)
      {
      cm.sendNext("欢迎使用 #b甜甜的冒险岛银行系统#k 我的朋友!");
      }
      else if (status == 1) {
      var a = "请选择你需要的功能.#b";
                  for (var i=0; i < t.length; i++) {
                  a += "\r\n#L" + i + "#" + t[ i ]+"";
                  }
                  cm.sendSimple(a);
      }
      else if(status == 2)
      {
            x=selection;
          if(x==2)
          {
            cm.sendOk("您的存款有"+cm.getMoney()+" ");
            cm.dispose();
          }
          else if (x==3)
            {
                if(cm.addBank()>0)
                {
                  cm.sendOk("恭喜您,开户成功!");
                  }
                  else
                  {
                        cm.sendOk("很抱歉,开户失败!可能您已经开户过了哦!");
                  }
                  cm.dispose();
            }
          else
          {
         
          var b = " 请选择数量.#b";
                        for (var i=0; i < money.length; i++) {
                        b += "\r\n#L" + i + "#" + money[ i ]+"";
                        }
                        cm.sendSimple(b);
          }
      }
      else if (status == 3) {
          var choose=money1;
          if(x==0)//存
            {
            if(cm.getMeso()<choose)
            {
                cm.sendOk("Oh,Sorry,您的钱不够!");   
            }
            else if(cm.addMoney(choose,0)>0)
                {
                cm.gainMeso(-choose);
                cm.sendOk("好的,已经存入!");
                }
                else
                {
                cm.sendOk("Error:请反馈给管理员!");

                }
                cm.dispose();
            }
            else if(x==1)//取
            {
            if(cm.getMoney()<choose)
            {
                cm.sendOk("Oh,Sorry,您存款没有那么多呢!");   
            }
                else if(cm.addMoney(-choose,1)>0)
                {
                cm.gainMeso(choose);
                cm.sendOk("好的,请收好您的钱!");
                }
                else
                {
                cm.sendOk("Error:请反馈给管理员!");
                }
                cm.dispose();
            }
            
      
      }
      else
      {
      cm.dispose();
      }
    }
}我修改了的是这样的:var status = 0;
var t=new Array("存钱","取钱","查看","开户");
var money=new Array("一百万","一千万","一亿","十亿");
var money1=new Array("1","10","100","1000");
var x=0;
function start() {
status = -1;
action(1, 0, 0);
}
function action(mode, type, selection) {
    if (mode == -1) {
      cm.dispose();
    } else {
          if (mode == 0 && status == 0) {
          cm.dispose();
          return;
      }
      if (mode == 1)
      status++;
      else
      status--;
      if (status == 0)
      {
      cm.sendNext("#e欢迎使用#b正宗冒险岛银行系统#k 我的朋友!");
      }
      else if (status == 1) {
      var a = "请选择你需要的功能.#b";
                  for (var i=0; i < t.length; i++) {
                  a += "\r\n#L" + i + "#" + t[ i ]+"";
                  }
                  cm.sendSimple(a);
      }
      else if(status == 2)
      {
            x=selection;
          if(x==2)
          {
            cm.sendOk("您的存款有"+cm.getMoney()*1000000+" ");
            cm.dispose();
          }
          else if (x==3)
            {
                if(cm.addBank()>0)
                {
                  cm.sendOk("恭喜您,开户成功!");
                  }
                  else
                  {
                        cm.sendOk("很抱歉,开户失败!可能您已经开户过了哦!");
                  }
                  cm.dispose();
            }
          else
          {
         
          var b = " 请选择数量.#b";
                        for (var i=0; i < money.length; i++) {
                        b += "\r\n#L" + i + "#" + money[ i ]+"";
                        }
                        cm.sendSimple(b);
          }
      }
      else if (status == 3) {
          var choose=money1;
          if(x==0)//存
            {
            if(cm.getMeso()<choose*1000000)
            {
                cm.sendOk("Oh,Sorry,您的钱不够!");   
            }
            else if(cm.addMoney(choose,0)>0)
                {
                cm.gainMeso(-choose*1000000);
                cm.sendOk("好的,已经存入!");
                }
                else
                {
                cm.sendOk("Error:请反馈给管理员!");

                }
                cm.dispose();
            }
            else if(x==1)//取
            {
            if(cm.getMoney()<<span style="line-height: 1.5;">choose</span><span style="line-height: 1.5;">)</span>可以自己去琢磨琢磨

不完美的完美 发表于 2013-3-17 07:22:21

这么帅,还有开户:D

wuyouxl 发表于 2013-3-17 08:03:39

不完美的完美 发表于 2013-3-17 07:22 static/image/common/back.gif
这么帅,还有开户

那个只是一个形式啦      主要的是后面的那个修改的地方
页: [1]
查看完整版本: 发一个正宗银行。 【自己修改的】