// ϑ̔(v̕ɂŜقǐݒuj
//
// N[̐ݒueՂɂ邽߂ɁAgetelementofarray + getarg Ƃ
// Gȏ𑽗pĂ̂ŁAǂłrōĂ邩܂B
// AthenãXNvgł́Aꂭ炢\Ȃmob̂ŁA
// uϑ̔̂Ȃ瑼̂mobĂ݂IvƎvl
// oĂĂقȂAƂ]ȂJ邱Ƃɂ܂B
// ǂACfBA΁AƂ킵Ă݂ĂB
// 
// copyarrayɃoÔŁAmod1116艺̃o[Wł́A
//   ܂B
//   ɁAdeletearrayɂoÔŁAmod1127艺̃o[Wł́A
//   ACeXgoO܂B
// 
// v1 05/02/05 : J
// v2 05/02/12 : ACe\[gĔzuȂoOC
// v3 05/02/13 : deletearray ̃oO𖾋LAtypoQӏ(ɂ͉eȂ)C

prontera.gat,148,214,1	script	ϑ̔1	112,{
	callfunc
		"seller",
		$s1_item_count,		// 0 ACeXǧ
		$s1_item_itemid,	// 1 ACeXg : ACeID
		$s1_item_amount,	// 2 ACeXg : ̔
		$s1_item_zeny,		// 3 ACeXg : ̔z
		$s1_item_account,	// 4 ACeXg : oiID
		$s1_account_id,		// 5 oi҃Xg : ID
		$s1_account_zeny;	// 6 oi҃Xg : vZeny
}

prontera.gat,153,214,1	script	ϑ̔2	112,{
	callfunc
		"seller",
		$s2_item_count,$s2_item_itemid,$s2_item_amount,$s2_item_zeny,$s2_item_account,
		$s2_account_id,$s2_account_zeny;
}

prontera.gat,158,214,1	script	ϑ̔3	112,{
	callfunc
		"seller",
		$s3_item_count,$s3_item_itemid,$s3_item_amount,$s3_item_zeny,$s3_item_account,
		$s3_account_id,$s3_account_zeny;
}

prontera.gat,163,214,1	script	ϑ̔4	112,{
	callfunc
		"seller",
		$s4_item_count,$s4_item_itemid,$s4_item_amount,$s4_item_zeny,$s4_item_account,
		$s4_account_id,$s4_account_zeny;
}

function	script	seller	{
	function seller_clean;
	function seller_prevpage;
	function seller_nextpage;
	function seller_select;
	function seller_select_sub;
	function seller_pc_addzeny;
	function seller_pc_find;

	mes "[Jvϑ̔]";
	mes "BijJvT[rXł";
	mes "s邽߂";
	mes "Fl̗v]ɂ";
	mes "ϑ̔T[rXn߂܂B";
	next;
	while(1) {
		set @sel, select("ϑ̔Ƃ́H","w","oi","̔󂯎","߂");
		if(@sel == 5) {
			// ߂
			break;
		}
		switch(@sel) {
		case 1: // ϑ̔Ƃ́H
			mes "[Jvϑ̔]";
			mes "ϑ̔Ƃ͂ql菤i";
			mes "󂯎Aw艿iő㔄";
			mes "VT[rXłB";
			next;
			mes "[Jvϑ̔]";
			mes "͌Bϑ̔";
			mes "󂯎邱Ƃł܂B";
			next;
			mes "[Jvϑ̔]";
			mes "ӂ_ƂāAoiꍇ";
			mes "10%̎萔点đՂ܂B";
			mes "Axɔ̔łACe";
			mes "100ނƂȂĂ܂B";
			next;
			break;
		case 2: // w
			while(1) {
				if(getarg(0) == 0) {
					mes "[Jvϑ̔]";
					mes "̔̃ACe͂܂B";
					next;
					break;
				}
				mes "[Jvϑ̔]";
				mes "wACeIłB";
				next;
				// ACȇI
				set @sel, seller_select(getarg(0),1,getarg(1),getarg(2),getarg(3));
				if(@sel == -1) {
					// LZ
					break;
				}
				// ̓
				if(getelementofarray(getarg(2),@sel) == 1) {
					// P̂͌𕷂Ȃ
					set @amount, 1;
				} else {
					mes "[Jvϑ̔]";
					mes "w͂ĂB";
					next;
					input @amount;
					if( (@amount > getelementofarray(getarg(2),@sel)) || (@amount <= 0)) {
						mes "[Jvϑ̔]";
						mes "݌ɂsĂ܂B";
						next;
						break;
					}
				}
				// e`FbN
				set @zeny , getelementofarray(getarg(3),@sel) * @amount;
				if(@zeny > Zeny) {
					mes "[Jvϑ̔]";
					mes "Zeny ܂B";
					next;
					break;
				} else if(checkweight(getelementofarray(getarg(1),@sel),@amount) == 0) {
					mes "[Jvϑ̔]";
					mes "ʃI[o[łB";
					next;
					break;
				}
				// ŏImF
				mes "[Jvϑ̔]";
				mes getitemname(getelementofarray(getarg(1),@sel)) + " " + @amount + "";
				mes getelementofarray(getarg(3),@sel) + "Zeny ōw܂B";
				mes "낵łH";
				set @item_id,     getelementofarray(getarg(1),@sel);
				set @item_zeny,   getelementofarray(getarg(3),@sel);
				set @item_amount, getelementofarray(getarg(2),@sel);
				next;
				if(
					(select("͂","") != 1) ||
					(@zeny > Zeny) ||
					(checkweight(getelementofarray(getarg(1),@sel),@amount) == 0)
				) {
					// ł̃`FbNYƕsɂȂ鋰ꂪ
					break;
				} else if(
					(@item_id     != getelementofarray(getarg(1),@sel)) ||
					(@item_zeny   != getelementofarray(getarg(3),@sel)) ||
					(@item_amount != getelementofarray(getarg(2),@sel))
				) {
					mes "[Jvϑ̔]";
					mes "ɋN߁A";
					mes "قǂ̃ACe̔̔";
					mes "fĒ܂B";
					mes "ēxwĂB";
					break;
				}
				set Zeny , Zeny - @zeny;
				getitem getelementofarray(getarg(1),@sel),@amount;
				set @dummy , seller_pc_addzeny(getarg(5),getelementofarray(getarg(4),@sel),getarg(6),@zeny);
				if(@amount == getelementofarray(getarg(2),@sel)) {
					// Swꂽ -> z폜
					deletearray getelementofarray(getarg(1),@sel),1;
					deletearray getelementofarray(getarg(2),@sel),1;
					deletearray getelementofarray(getarg(3),@sel),1;
					deletearray getelementofarray(getarg(4),@sel),1;
					set getarg(0) , getarg(0) - 1;
				} else {
					// ꕔ̂ݍw -> 炷
					set getelementofarray(getarg(2),@sel), getelementofarray(getarg(2),@sel) - @amount;
				}
			}
			break;
		case 3: // oi
			while(1) {
				getinventorylist;
				if(@inventorylist_count == 0) {
					mes "[Jvϑ̔]";
					mes "ACe܂B";
					next;
					break;
				} else if(@inventorylist_count > 100) {
					// \̂͐擪POO܂ł̃ACe
					set @inventorylist_count, 100;
				}
				if(getarg(0) >= 100) {
					mes "[Jvϑ̔]";
					mes "ݍő܂ŏoiĂ܂B";
					next;
					break;
				}
				mes "[Jvϑ̔]";
				mes "oiACeIłB";
				next;
				// ACeI
				set @sel, seller_select(@inventorylist_count,0,-1,-1,-1);
				if(@sel == -1) {
					// LZ
					break;
				} else if(@inventorylist_equip[@sel]) {
					// tO
					mes "[Jvϑ̔]";
					mes "Ă鏤i͏oił܂B";
					next;
					break;
				} else if(!@inventorylist_identify[@sel]) {
					// Ӓς݃tO
					mes "[Jvϑ̔]";
					mes "Ӓ̏i͏oił܂B";
					next;
					break;
				} else if(@inventorylist_attribute[@sel]) {
					// j`FbN
					mes "[Jvϑ̔]";
					mes "ji͏oił܂B";
					next;
					break;
				} else if(
					@inventorylist_card1[@sel] || @inventorylist_card2[@sel] ||
					@inventorylist_card3[@sel] || @inventorylist_card4[@sel]
				) {
					// `FbN
					mes "[Jvϑ̔]";
					mes "iAJ[hi͏oi͂ł܂B";
					next;
					break;
				} else if(@inventorylist_refine[@sel]) {
					// B`FbN
					mes "[Jvϑ̔]";
					mes "Bi͏oi͂ł܂B";
					next;
					break;
				} else if((@inventorylist_id[@sel] == 2634) || (@inventorylist_id[@sel] == 2635)) { 
					// wփ`FbN
					mes "[Jvϑ̔]";
					mes "wւ͏oi͂ł܂B";
					next;
					break;
				}
				// ̔̓
				if(@inventorylist_amount[@sel] == 1) {
					// P͕Ȃ
					set @amount, 1;
				} else {
					mes "[Jvϑ̔]";
					mes "oi͂ĂB";
					next;
					input @amount;
					if( (@amount > @inventorylist_amount[@sel]) || (@amount <= 0)) {
						mes "[Jvϑ̔]";
						mes "𒴂Ă܂B";
						next;
						break;
					}
				}
				mes "[Jvϑ̔]";
				mes "oi鉿i͂ĂB";
				next;
				input @money;
				if( @money <= 0) {
					mes "[Jvϑ̔]";
					mes "0Zenył̔̔͏o܂B";
					next;
					break;
				}
				// ŏImF
				mes "[Jvϑ̔]";
				mes getitemname(@inventorylist_id[@sel]) + " " + @amount + "";
				mes @money + "Zeny ŏoi܂B";
				mes "낵łH";
				next;
				if(
					(select("͂","") != 1) ||
					(countitem(@inventorylist_id[@sel]) < @amount) ||
					(getarg(0) >= 100)) {
					// ł̃`FbNYƕsɂȂ鋰ꂪ
					break;
				}
				// oi҃Xgɋ󂫂邩m߂
				if(seller_pc_addzeny(getarg(5),getcharid(3),getarg(6),0) == 0) {
					mes "[Jvϑ̔]";
					mes "\󂠂܂";
					mes "oi҃XgtłB";
					mes "̈ϑ̔ɐq˂邩";
					mes "߂ĂpB";
					next;
					break;
				}
				// oiJn
				
				// ACeIDƂɃ\[g
				for(set @pos , 0; @pos < getarg(0) ; set @pos, @pos + 1) {
					if(getelementofarray(getarg(1),@pos) > @inventorylist_id[@sel]) {
						break;
					}
				}
				if(@pos != getarg(0)) {
					copyarray getelementofarray(getarg(1),@pos+1),getelementofarray(getarg(1),@pos),getarg(0) - @pos;
					copyarray getelementofarray(getarg(2),@pos+1),getelementofarray(getarg(2),@pos),getarg(0) - @pos;
					copyarray getelementofarray(getarg(3),@pos+1),getelementofarray(getarg(3),@pos),getarg(0) - @pos;
					copyarray getelementofarray(getarg(4),@pos+1),getelementofarray(getarg(4),@pos),getarg(0) - @pos;
				}
				set getelementofarray(getarg(1),@pos) , @inventorylist_id[@sel];
				set getelementofarray(getarg(2),@pos) , @amount;
				set getelementofarray(getarg(3),@pos) , @money;
				set getelementofarray(getarg(4),@pos) , getcharid(3);
				set getarg(0) , getarg(0) + 1;
				delitem @inventorylist_id[@sel], @amount;
				mes "[Jvϑ̔]";
				mes "oił܂B";
				next;
			};
			seller_clean;
			break;
		case 4: // ̔󂯎
			//debug
			//mes "debug";
			//for(set @i , 0; @i < 100 ; set @i, @i + 1) {
			//	if(getelementofarray(getarg(5),@i)) {
			//		mes getelementofarray(getarg(5),@i) + " : " + getelementofarray(getarg(6),@i);
			//	}
			//}
			//next;
			set @pos, seller_pc_find(getarg(5),getcharid(3));
			if(@pos == -1) {
				mes "[Jvϑ̔]";
				mes "aĂZeny͂܂B";
				next;
			} else if(getelementofarray(getarg(6),@pos) == 0) {
				mes "[Jvϑ̔]";
				mes "aĂZeny͂܂B";
				next;
			} else {
				set @zeny , getelementofarray(getarg(6),@pos);
				mes "[Jvϑ̔]";
				mes @zeny + "Zeny ̔グ̓A";
				mes "10%̎萔𒸂c";
				set @zeny, @zeny - @zeny / 10;
				mes @zeny + "Zeny ̕ԋɂȂ܂B";
				set Zeny, Zeny + @zeny;
				set getelementofarray(getarg(6),@pos) , 0;
				// iꗗɃXg΁Aoi҃Xg
				for(set @i , 0; @i < getarg(0) ; set @i,@i + 1) {
					if(getelementofarray(getarg(4),@i) == getcharid(3)) {
						break;
					}
				}
				if(@i == getarg(0)) {
					deletearray getelementofarray(getarg(5),@pos),1;
					deletearray getelementofarray(getarg(6),@pos),1;
				}
				next;
			}
			break;
		}
	}
	mes "[Jvϑ̔]";
	mes "XJvT[rX́A芮";
	mes "T[rXƊǗƖڎw";
	mes "qlSĂp悤";
	mes "őPsĂ܂B";
	mes "ijJvT[rXp";
	mes "肪Ƃ܂B";
	close;

	// seller_pc_addzeny(account_id , target , account_zeny , zeny)
	//     oi҃Xg̎w肷IDzenyZZ
	//
	//     account_id   : oiID
	//     target       : ΏۂID
	//     account_zeny : oiID̏Zeny
	//     zeny         : ZZeny
	function seller_pc_addzeny {
		set @__pos , seller_pc_find(getarg(0),getarg(1));
		if(@__pos != -1) {
			// ɓo^ĂΉZtrue Ԃ
			set getelementofarray(getarg(2), @__pos) , getelementofarray(getarg(2), @__pos) + getarg(3);
			// 1Gz 
			if(getelementofarray(getarg(2), @__pos) > 1000*1000*1000) {
				set getelementofarray(getarg(2), @__pos) , 1000*1000*1000;
			}
			return 1;
		} else {
			// o^ĂȂ΋󂫂T
			for(set @__i , 0; @__i < 100 ; set @__i, @__i + 1) {
				if(getelementofarray(getarg(0), @__i) == 0) {
					// 󂫂̂Œǉ
					set getelementofarray(getarg(0), @__i) , getarg(1);
					set getelementofarray(getarg(2), @__i) , getarg(3);
					return 1;
				}
			}
		}
		return 0;
	}

	// seller_pc_find( account_id , target)
	//     oi҃Xgw肵IDTo
	//     Ȃ -1 Ԃ
	function seller_pc_find {
		for(set @__i , 0 ; @__i < 100 ; set @__i, @__i + 1) {
			if(getelementofarray(getarg(0), @__i) == getarg(1)) {
				return @__i;
			}
		}
		return -1;
	}

	// seller_select(limit , array , data1 , data2 , data3)
	//     array (vflimit) ̒vC[ɂPI
	//     ߂l -1 : LZ ȊO : Iꂽꏊ
	//
	//     data1, data2 , data3 seller_select_sub ɂ̂܂ܓn
	function seller_select {
		set @__base,0;
		while(1) {
			set @__sel , select(
				"ς߂",
				seller_select_sub(getarg(0),@__base + 0,getarg(1),getarg(2),getarg(3),getarg(4)),
				seller_select_sub(getarg(0),@__base + 1,getarg(1),getarg(2),getarg(3),getarg(4)),
				seller_select_sub(getarg(0),@__base + 2,getarg(1),getarg(2),getarg(3),getarg(4)),
				seller_select_sub(getarg(0),@__base + 3,getarg(1),getarg(2),getarg(3),getarg(4)),
				seller_select_sub(getarg(0),@__base + 4,getarg(1),getarg(2),getarg(3),getarg(4)),
				seller_select_sub(getarg(0),@__base + 5,getarg(1),getarg(2),getarg(3),getarg(4)),
				seller_select_sub(getarg(0),@__base + 6,getarg(1),getarg(2),getarg(3),getarg(4)),
				seller_select_sub(getarg(0),@__base + 7,getarg(1),getarg(2),getarg(3),getarg(4)),
				seller_select_sub(getarg(0),@__base + 8,getarg(1),getarg(2),getarg(3),getarg(4)),
				seller_select_sub(getarg(0),@__base + 9,getarg(1),getarg(2),getarg(3),getarg(4)),
				seller_prevpage(@__base > 0),
				seller_nextpage(@__base + 10 < getarg(0))
			);
			if(@__sel == 1) {
				// ς߂
				return -1;
			} else if( (@__base + @__sel - 2 < getarg(0)) && (@__sel != 12) && (@__sel != 13) ) {
				set @index , @__base + @__sel - 2;
				return @index;
			} else if( (@__base + @__sel - 2 == getarg(0)) || (@__sel == 12)) {
				if(@__base > 0) {
					set @__base, @__base - 10;
				} else {
					set @__base, @__base + 10;
				}
			} else {
				// prev, next \Ă
				set @__base, @__base + 10;
			}
		}
	}

	//                    0       1       2      3       4       5
	// seller_select_sub( limit , index , type , data1 , data2 , data3)
	function seller_select_sub {
		if(getarg(0) > getarg(1)) {
			switch(getarg(2)){
			case 0:
				if(!@inventorylist_identify[getarg(1)]) {
					return "????(Ӓ)";
				} else {
					return getitemname(@inventorylist_id[getarg(1)]) + " " + @inventorylist_amount[getarg(1)] + "";
				}
				break;
			case 1:
				return
					getitemname(getelementofarray(getarg(3),getarg(1))) + " " + 
					getelementofarray(getarg(4),getarg(1)) + "" + 
					getelementofarray(getarg(5),getarg(1)) + "Zeny";
				break;
			default:
				return getarg(1);
				break;
			}
		} else {
			return ;
		}
	}

	// ʕϐ
	function seller_clean {
		cleararray @inventorylist_id        , 0 , @inventorylist_count;
		cleararray @inventorylist_amount    , 0 , @inventorylist_count;
		cleararray @inventorylist_equip     , 0 , @inventorylist_count;
		cleararray @inventorylist_refine    , 0 , @inventorylist_count;
		cleararray @inventorylist_identify  , 0 , @inventorylist_count;
		cleararray @inventorylist_attribute , 0 , @inventorylist_count;
		cleararray @inventorylist_card1     , 0 , @inventorylist_count;
		cleararray @inventorylist_card2     , 0 , @inventorylist_count;
		cleararray @inventorylist_card3     , 0 , @inventorylist_count;
		cleararray @inventorylist_card4     , 0 , @inventorylist_count;
		set @inventorylist_count, 0;
	}

	function seller_prevpage {
		if(getarg(0)) {
			return "O";
		} else {
			return ;
		}
	}
	function seller_nextpage {
		if(getarg(0)) {
			return "";
		} else {
			return ;
		}
	}
}
