鯖落ちしてもアイテム移動システム

Go down

鯖落ちしてもアイテム移動システム

投稿 by 構築さん on 2014-05-31, 17:29

ChannelServer.java

Code:
PreparedStatement ps = c.prepareStatement("UPDATE accounts SET loggedin = 0");

の辺りに

Code:
ps = c.prepareStatement("UPDATE hiredmerchant SET type = 1");

を追加

HiredMerchant.java

Code:
ps = con.prepareStatement("INSERT INTO hiredmerchant (ownerid, itemid, quantity, owner, type) VALUES (?, ?, ?, ?, ?)");

quantityのとこを

Code:
ps.setInt(3, pItems.getBundles());

に変更

MapleCharacter.java

Code:
public short quantity(IItem item) {
Connection con = DatabaseConnection.getConnection();
PreparedStatement ps;
try {
ps = con.prepareStatement("SELECT * FROM hiredmerchant WHERE ownerid = ? and itemid = ?");
ps.setInt(1, getId());
ps.setInt(2, item.getItemId());
ResultSet rs = ps.executeQuery();
if (!rs.next()) {
rs.close();
ps.close();
}
short quantity = rs.getShort("quantity");
rs.close();
ps.close();
return quantity;
} catch (SQLException se) {
}
return 1;
}

を追加

NPCSCRIPT

Code:
importPackage(Packages.server);
//importPackage(Packages.net.sf.odinms.server);

var status = 0;
var quantity = 0;

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

function action(mode, type, selection) {

if (mode == -1) {
cm.dispose();
} else {
if (mode == 0) {
cm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if (status == 0) {
cm.sendSimple("私は雇用商店を管理しているプレドリックです。何の用できましたか?\r\n#b#L0#雇用商店のメルを引き出す#l\r\n#L1#雇用商店のアイテムを引き出す#l#k");
} else if (status == 1) {
switch(selection) {
case 0:
if (cm.getHiredMerchantMesos(false) > 0) {
setid = 0;
cm.sendYesNo("#r" + cm.getHiredMerchantMesos(false) + "#k メルが雇用商店に入っていました。引き出しますか?");
} else {
cm.sendOk("雇用商店には、メルは保管されていませんでした。");
cm.dispose();
}
break;
case 1:
setid = 1;
if (cm.getHiredMerchantItems().size() > 0) {
var text = "引き出すアイテムを選択してください : \r\n";
for (var i = 0; i <cm>= 2) {
text += "#b#L"+i+"##v"+item+"##t"+item+"#"+ quantity +"個#l\r\n";
} else {
text += "#b#L"+i+"##v"+item+"##t"+item+"##l\r\n";
}
}
cm.sendSimple(text);
} else {
cm.sendOk("雇用商店には、アイテムは保管されていませんでした。");
cm.dispose();
}
break;
}
} else if (status == 2) {
switch (setid) {
case 0:
if (cm.getHiredMerchantMesos(false) + cm.getMeso() > 2147483647) {
cm.sendOk("現在持っているメルが多すぎるのでメルを引き出すことはできません。");
cm.dispose();
} else {
cm.sendOk("メルを引き出しました。毎度私たちのサ?#91;ビスをご利用いただき誠にありがとうございます。これからもご利用してください。");
cm.gainMeso(cm.getHiredMerchantMesos(true));
cm.dispose();
}
break;
case 1:
var iitem = cm.getHiredMerchantItems().get(selection).getRight();
quantity = cm.getPlayer().quantity(iitem);
if (quantity == 1) {
MapleInventoryManipulator.addFromDrop(cm.getC(), iitem, true);
} else {
MapleInventoryManipulator.addById(cm.getC(), iitem.getItemId(), quantity, null);
}
cm.sendOk("アイテムを引き出しました。毎度私たちのサ?#91;ビスをご利用いただき誠にありがとうございます。これからもご利用してください。");
cm.removeHiredMerchantItem(cm.getHiredMerchantItems().get(selection).getLeft());
cm.dispose();
break;
}
}
}
}

わからない人用

Code:
ps.setInt(1, ownerId);
ps.setInt(2, pItems.getItem().getItemId());
ps.setInt(3, 1);
ps.setString(4, pItems.getItem().getOwner());
ps.setInt(5, 1);

みたいに並んでるとこがあると思うので、

Code:
ps.setInt(3, 1);



Code:
ps.setInt(3, pItems.getBundles());

に変更してみてください。

この左側の数字は
ownerid, itemid, quantity, owner, type
の順番なので、3はquantityになります。
avatar
構築さん
Admin

Posts : 193
Join date : 2014/05/29

http://maplescience.forumjap.com

トップに戻る Go down

トップに戻る


 
Permissions in this forum:
返信投稿: 不可