編集日時:2016年02月15日(月) 14:27:47履歴
Inv(アイテムID , ダメージ値);
IDとダメージ値で指定したアイテムがインベントリにいくつあるか返します。
第二引数を省略するとダメージ値は無視してIDのみで判定します(ピッケル等の消耗品に有効)。
function Inv(id,d){ var amt=0; var i=9; if(d==undefined){ for(i; i<45; i++){ if(Player.getInventorySlot(i)==id){amt+=Player.getInventorySlotCount(i);} } }else{ for(i; i<45; i++){ if((Player.getInventorySlot(i)==id)&&(Player.getInventorySlotData(i)==d)){ amt+=Player.getInventorySlotCount(i); }}} return amt; }
function useItem(x,y,z,i){ if(i==280){ //棒でブロックを叩くと clientMessage(Inv(i)); //棒をいくつ持っているかチャット欄に表示 } }
SideBlock(x,y,z,s);
この関数の第4仮引数についてはこちらを参照してください。
function SideBlock(x,y,z,s) var side = new Array(5); side=[x,y,z,0,0]; switch(s){ case 0: side[1]-=1; break; case 1: side[1]+=1; break; case 2: side[2]-=1; break; case 3: side[2]+=1; break; case 4: side[0]-=1; break; case 5: side[0]+=1; break; } var sbi=getTile(side[0],side[1],side[2]); var sbd=Level.getData(side[0],side[1],side[2]); side=[side[0],side[1],side[2],sbi,sbd]; return side; //特定のブロックの任意の面と隣接しているブロックの座標、ID、ダメージ値を配列で返す }
function useItem(x,y,z,itemId,blockId,s){ if(itemId==280){ var sb = new Array(5); sb=SideBlock(x,y,z,side); //叩いた面と隣接するブロックの座標、ID、ダメージ値を配列sbに格納 setTile(sb[0],sb[1],sb[2],1); } }