prontera.gat,162,205,4 script 交換用GM 864,{ //============================================================================== // RagnarokOnline Item Exchanger Event Script Ver1.5 by 死神 // //このスクリプトはアイテム交換のNPC作りたいんだけど何度も何度も同じこと繰り返すのが //面倒って方に少しでも弄る場所が少なくなるようになるNPCを作ってみました。 //設定だけするとあとは勝手にやってくれるのでとても楽ですよ。 //一応一通りテストはしましたが不具合などあれば知らせて下さい // //まぁ自分がいろいろ追加していくのがだるかったのでとにかく変更箇所を少なくしようと思って作ってみました。 //まだまだ簡単に出来るぞ!って思う方は自分でカスタマイズしてみてください。 /* Ver1.5 複数NPCを設置すると出るバグ修正。 カテゴリー別に分けられるように設定。 金額設定可能。 注:127個以上設定は出来ないので100個くらい作ったら2個目のNPCを作ってください。 */ //============================================================================== if ('itemchange == 0){ //======================設定====================== // [X]のXには何番目のアイテムかを入れてください(0から始めてください) /* setarray 'ItemchangeCategory$,;//カテゴリー setarray 'itemchange[0][X][0],;//交換後のアイテム,カテゴリーの配列要素 setarray 'itemchange[1][X][0],;//材料となるアイテム setarray 'itemchange[2][X][0],;//材料となるアイテムの個数 set 'itemchange[3][X][0],;//金額 */ // //例 setarray 'ItemchangeCategory$,"神器","頭上段"; setarray 'itemchange[0][0][0],2629,0;//メギンギョルド setarray 'itemchange[1][0][0],7058,7080,7081,7082,7084,7085,969,726,984,2627; setarray 'itemchange[2][0][0], 1, 4, 5, 4, 3, 3, 20, 10, 10, 1; set 'itemchange[3][0][0],0; //グレイプニール 1個、猫の足音 4個、女人のひげ 5個、石の根 4個、鳥の唾 3個、熊の筋 3個、 //黄金 20個、サファイア 10個、オリデオコン 10個、ベルト1個 setarray 'itemchange[0][1][0],5068,1;//悪魔の羽耳 setarray 'itemchange[1][1][0],2255,2286; setarray 'itemchange[2][1][0], 1, 1; set 'itemchange[3][1][0],20000; //悪魔のヘアバンド 1個、妖精の耳 1個、20000z //====================設定終了==================== for(set 'i,0; 'ItemchangeCategory$['i] != ""; set 'i,'i+1){ for(set @j,0; 'itemchange[@j][0] != 0 ; set @j,@j+1){ if('itemchange[@j][1] == 'i) set 'itemchangename$['i][@j],getitemname('itemchange[@j][0]); } set 'itemchangename$['i][127],"やめる"; } set 'ItemchangeCategory$['i],"やめる"; } mes "["+strnpcinfo(0)+"]"; mes "こんにちわ。"; mes "こちらではオリジナルアイテムの"; mes "交換を行なっております。"; mes "交換しますか?"; next; if(select("交換したいです","やめておきます") == 2){ mes "["+strnpcinfo(0)+"]"; mes "そうですか・・・"; mes "それではまたのご利用をお待ちしております。"; close; } mes "["+strnpcinfo(0)+"]"; mes "それでは次の中から欲しいものを選んでください"; next; if(arrayselect('ItemchangeCategory$) == 'i){ mes "["+strnpcinfo(0)+"]"; mes "そうですか・・・"; mes "それではまたのご利用をお待ちしております。"; close; } if(arrayselect('itemchangename$[@menu][0]) == 127 ){ mes "["+strnpcinfo(0)+"]"; mes "そうですか・・・"; mes "それではまたのご利用をお待ちしております。"; close; } set @num,@menu; mes "["+strnpcinfo(0)+"]"; mes getitemname('itemchange[@num][0])+"ですね"; mes "それでは以下のものを持ってきて下さい"; next; mes "["+strnpcinfo(0)+"]"; mes "--材料--"; for(set @i,0; 'itemchange[1][@num][@i] != 0 ; set @i,@i+1) { if('itemchange[1][@num][@i] == 0) break; mes getitemname('itemchange[1][@num][@i]) + " x" + 'itemchange[2][@num][@i]; } if('itemchange[3][@num][0] != 0) mes 'itemchange[3][@num][0] +"z"; next; mes "["+strnpcinfo(0)+"]"; mes "それでは交換しますか?"; next; if(select("交換したいです","やめておきます") == 2){ mes "["+strnpcinfo(0)+"]"; mes "そうですか・・・"; mes "それではまたのご利用をお待ちしております。"; close; } for(set @i,0; 'itemchange[1][@num][@i] != 0 ; set @i,@i+1) { if(countitem('itemchange[1][@num][@i])<'itemchange[2][@num][@i]){ mes "["+strnpcinfo(0)+"]"; mes "材料が足りません。"; mes "材料を集めてからまたご利用下さい。"; close; } } if('itemchange[3][@num][0] > Zeny){ mes "["+strnpcinfo(0)+"]"; mes "お金が足りません。"; close; } if!(checkweight('itemchange[@num][0],1)){ mes "["+strnpcinfo(0)+"]"; mes "アイテムを持つことが出来ません"; mes "重量を減らしてからまたお越し下さい。"; close; } mes "["+strnpcinfo(0)+"]"; mes "これが品となります"; mes "ご利用ありがとうございました"; getitem 'itemchange[@num][0],1; for(set @i,0; 'itemchange[1][@num][@i] != 0 ; set @i,@i+1) { if('itemchange[1][@num][@i] == 0) break; delitem 'itemchange[1][@num][@i],'itemchange[2][@num][@i]; } if('itemchange[3][@num][0] != 0) set Zeny,Zeny-'itemchange[3][@num][0]; close; }