function 字符串切割(数据,切割字符)
	数据 = 数据 .. 切割字符
	local t = {}
	local 目前位置 = 1
	repeat
			local nexti = string.find(数据, 切割字符, 目前位置)
			table.insert(t, string.sub(数据, 目前位置,nexti-string.len(切割字符)))
			目前位置 = nexti + string.len(切割字符)
	until 目前位置 > string.len(数据)
	return t
end
临时NPC索引 = {};
--[[=========商城变量===========]]
商城数据 = {};
商城数据.最新上架={};
商城数据.促销商品={};
商城数据.消耗商品={};
商城数据.道具商品={};
商城数据.宠物商品={};

商城道具类型 = {{"爪",1},{"斧头",1},{"棍",1},{"枪",1},{"弓",1},{"盾",1},{"兜",1},{"凯",1},{"手环",1},{"乐器",1}
,{"首饰",1},{"首饰",1},{"带子",1},{"耳环",1},{"鼻环",1},{"护身符",1},{"特殊",0},{"回旋标",1},{"投掷斧",1},{"投掷石",1}
,{"未知",0},{"未知",0},{"未知",0},{"未知",0},{"腰带",1},{"盾",1},{"靴子",1},{"手套",1},{"使者信物",0},{"勇者信物",0},
{"未知",0},{"未知",0},{"未知",0},{"未知",0},{"未知",0},{"未知",0},{"未知",0},{"未知",0}}

道具属性链接 = {{"攻击力",%道具_附攻%,1},
								{"防御力",%道具_附防%,1},
								{"敏捷力",%道具_附敏%,1},
								{"耐久力",%道具_附体%,1},
								{"气力",%道具_附气%,1},
								{"运气",%道具_附运%,1},
								{"魅力",%道具_附魅%,1},
								{"闪避",%道具_附避%,1},
								{"格挡",%道具_格档率%,1},
								{"攻序",%道具_攻序%,1},
								{"负重",%道具_负重%,1},
								{"命中",%道具_命中%,1},
								{"抗毒",%道具_毒耐%,1},
								{"抗麻",%道具_麻耐%,1},
								{"抗睡",%道具_睡耐%,1},
								{"抗石",%道具_石耐%,1},
								{"抗酒",%道具_酒耐%,1},
								{"抗混",%道具_混耐%,1},
								{"会心一击",%道具_附一击%,1}
								}--说明，常量，被除数（考虑到有些值需要除于100设置）
--[[=========================================================================]]

function 商城NPC创建回调(NPC索引)
	人物.注册对话框回调("", "商城对话框回调", NPC索引)
	return true;
end

function 创建商城NPC()
	读取商城数据();
	local 商品内容={};
	商品内容[1] = 商城数据解析(商城数据.最新上架,"道具");
	商品内容[2] = 商城数据解析(商城数据.促销商品,"道具");
	商品内容[3] = 商城数据解析(商城数据.消耗商品,"道具");
	商品内容[4] = 商城数据解析(商城数据.道具商品,"道具");
	商品内容[5] = 商城数据解析(商城数据.宠物商品,"宠物");
	系统.写商城数据(0,商品内容[1]);
	系统.写商城数据(1,商品内容[2]);
	系统.写商城数据(2,商品内容[3]);
	系统.写商城数据(3,商品内容[4]);
	系统.写商城数据(4,商品内容[5]);
	商品内容=nil;
	临时NPC索引.商城=系统.创建NPC("","商城NPC创建回调")
end

function 商城写入日志(玩家索引,购物车数据,扣除点数,临时商城数据,玩家没扣除前点数)
	local 重新计算价格=0;
	local 写入日志内容;
	local 商城道具名="";
	for i=1,table.getn(购物车数据) do
		商城道具名 = 商城道具名 .. 道具.取模板数据(购物车数据[i][1],%道具_原名%).."*"..购物车数据[i][2].."("..临时商城数据[购物车数据[i][3]][2]*购物车数据[i][2]..")|";
		重新计算价格=重新计算价格+临时商城数据[购物车数据[i][3]][2]*购物车数据[i][2];
	end
	if 重新计算价格 > 扣除点数 then
		商城道具名 = 商城道具名.."#扣除价格产生异常"
	end
	写入日志内容 = string.format("玩家名：%s   计算商品的价格：%d   实际扣除点数：%d   没扣除金币前：%d   扣除后：%d\n购买商品：%s\n\n",Char.GetData(玩家索引,%对像_原名%),
								重新计算价格,扣除点数,玩家没扣除前点数,人物.取数据(玩家索引,%对像_VIP%),商城道具名);

	文件号=assert(io.open("./data/lua/onlineshop/shoplog.txt", "a+"))
	文件号:write(写入日志内容); -- 读取所有内容
	文件号:close();
end

function 商城对话框回调( NPC索引, 玩家索引, 序号, 按钮, 数据)
--[[
	当按钮不为0的时候，玩家选择的是其它页数
	当为0的时候,数据中的内容分解
	道具索引,数量#道具索引,数量#
]]
	if 按钮 == 0 then
		local 商城ID = 转整数(数据)
		if 商城ID == 1 then
			封包.发送对话框(玩家索引,1001,1,1,人物.取道具空数量(玩家索引).."|"..人物.取数据(玩家索引,%对像_VIP%).."|1",NPC索引)
		elseif 商城ID == 2 then
			封包.发送对话框(玩家索引,1001,2,2,人物.取道具空数量(玩家索引).."|"..人物.取数据(玩家索引,%对像_VIP%).."|2",NPC索引)
		elseif 商城ID == 3 then
			封包.发送对话框(玩家索引,1001,3,3,人物.取道具空数量(玩家索引).."|"..人物.取数据(玩家索引,%对像_VIP%).."|3",NPC索引)
		elseif 商城ID == 4 then
			封包.发送对话框(玩家索引,1001,4,4,人物.取道具空数量(玩家索引).."|"..人物.取数据(玩家索引,%对像_VIP%).."|4",NPC索引)
		elseif 商城ID == 5 then
			封包.发送对话框(玩家索引,1001,5,5,人物.取道具空数量(玩家索引).."|"..人物.取数据(玩家索引,%对像_VIP%).."|5",NPC索引)
		end
	elseif 数据 ~= "" then
		local 购物车数据 = 字符串切割(数据,"#");
		local 物品总数 = 0;
		local 物品总价 = 0;
		local 物品ID = {};
		local 临时商城数据;
		if 按钮 == 1 then
			临时商城数据 = 商城数据.最新上架;
		elseif 按钮 == 2 then
			临时商城数据 = 商城数据.促销商品;
		elseif 按钮 == 3 then
			临时商城数据 = 商城数据.消耗商品;
		elseif 按钮 == 4 then
			临时商城数据 = 商城数据.道具商品;
		elseif 按钮 == 5 then
			临时商城数据 = 商城数据.宠物商品;
		end
		for i=1,table.getn(购物车数据) do
			if 购物车数据[i] ~="" then
				local 购物车数据再分 = 字符串切割(购物车数据[i],"|");
				物品ID[i]={};
				物品ID[i][1] = 临时商城数据[转整数(购物车数据再分[1])][1];
				物品ID[i][2] = 转整数(购物车数据再分[2]);
				物品ID[i][3] = 转整数(购物车数据再分[1]);
				物品总价 = 物品总价 + 临时商城数据[物品ID[i][3]][2]*物品ID[i][2];
				物品总数 = 物品总数 + 物品ID[i][2];
			end
		end
		local 玩家彩币 = 人物.取数据(玩家索引,%对像_VIP%);
		if 玩家彩币 < 物品总价 then
			封包.说话(玩家索引,"系统：身上的金币不足。",%红色%);
			return;
		end
		if 人物.取道具空数量(玩家索引) < 物品总数 then
			封包.说话(玩家索引,"系统：身上的道具位不足。",%红色%);
			return;
		end
		人物.置数据(玩家索引,%对像_VIP%,玩家彩币-物品总价);
		for i=1,table.getn(物品ID) do
			封包.给道具(玩家索引,物品ID[i][1],物品ID[i][2]);
		end

		商城写入日志(玩家索引,物品ID,物品总价,临时商城数据,玩家彩币);
		封包.说话(玩家索引,"系统：扣除"..物品总价.."金币！",%红色%);
	end
end


function 商城数据解析(道具ID数据组,类型)
	local 返回数据 = "";
		if table.getn(道具ID数据组) < 1 then
			return "";
		end
		for 道具索引=1,table.getn(道具ID数据组) do
			local 道具ID = 道具ID数据组[道具索引][1];
			local 道具类型 = 道具.取模板数据(道具ID,%道具_类型%);
			local 道具图号 = 道具.取模板数据(道具ID,%道具_图号%);

			返回数据 = string.format("%s%s|%d|%d|%d|道具类型：%s\n",返回数据,道具.取模板数据(道具ID,%道具_原名%),道具图号,道具图号,道具ID数据组[道具索引][2],商城道具类型[道具类型+1][1]);
			if 商城道具类型[道具类型+1][2]== 1 then
				if 道具.取模板数据(道具ID,%道具_MAX耐久%) == 0 then
					返回数据 = 返回数据.."耐久度：不会损坏\n\n"
				else
					返回数据 = string.format("%s耐久度：%d/%d\n\n",返回数据,math.ceil(道具.取模板数据(道具ID,%道具_耐久%)/100),math.ceil(道具.取模板数据(道具ID,%道具_MAX耐久%)/100));
				end
				for 道具属性索引 = 1,table.getn(道具属性链接) do --//遍历常用属性的值
					local 道具值 = 道具.取模板数据(道具ID,道具属性链接[道具属性索引][2]);
					if 道具值 ~= 0 then
						返回数据 = string.format("%s%s %s\n",返回数据,道具属性链接[道具属性索引][1],道具属性符号(道具值));
					end
				end
				if 道具.取模板数据(道具ID,%道具_精灵%) >= 0 then
					返回数据 = string.format("%s\n精灵 %s",返回数据,技能.取精灵技能数据(道具.取模板数据(道具ID,%道具_精灵%),%精灵_名%));
				end
				返回数据 = 返回数据.."#";
			else
				返回数据 = 返回数据..道具.取模板数据(道具ID,%道具_说明%).."#";
			end
		end
	return 返回数据;
end

function 道具属性符号(道具属性)--//增加道具值正负符号
	if 道具属性 > 0 then
		return "+"..道具属性;
	else
		return 道具属性;
	end
end

function 职业需求(道具ID)--返回道具要求职业
	local 道具职业 = 道具.取模板数据(道具ID,%道具_职业%);
	if 道具职业 == 0	then
		return "(通用)"
	elseif 道具职业 == 1 then
		return "(白狼勇士)"
	elseif 道具职业 == 2 then
		return "(暗灵法师)"
	elseif 道具职业 == 3 then
		return "(追猎者)"
	end
end

function ITRF_NEWSHOP(玩家索引)--相本回调 改为 新商城
--[[
商城数据说明
人物道具空数量|彩币|页数|数据
]]
	if 人物.取数据(玩家索引,%对像_战模%) == 0 and 人物.取数据(玩家索引,%对像_摆摊%) <= 0 then
		封包.发送对话框(玩家索引,1001,1,1,人物.取道具空数量(玩家索引).."|"..人物.取数据(玩家索引,%对像_VIP%).."|1",临时NPC索引.商城)
	end
end


function 读取商城数据()
	local 文件号;
	local 数据,数量,临时商城数据;
	for i =1,5 do
		if i == 1 then
			临时商城数据 = 商城数据.最新上架;
		elseif i == 2 then
			临时商城数据 = 商城数据.促销商品;
		elseif i == 3 then
			临时商城数据 = 商城数据.消耗商品;
		elseif i == 4 then
			临时商城数据 = 商城数据.道具商品;
		elseif i == 5 then
			临时商城数据 = 商城数据.宠物商品;
		end
		文件号 = assert(io.open("./data/lua/onlineshop/shop"..i..".txt", "r"))
		数据 = 文件号:read("*a"); -- 读取所有内容
		文件号:close();
		if 数据 ~= "" then
			数量 = 0;
			数据 = 字符串切割(数据,"\n");
			for b = 1,table.getn(数据) do
				if string.sub(数据[b],1,1) ~= "#" and string.sub(数据[b],1,1) ~= "" then
					数量 = 数量 + 1;
					临时商城数据[数量] = 字符串切割(数据[b],"|");
					临时商城数据[数量][1] = tonumber(临时商城数据[数量][1]);
					临时商城数据[数量][2] = tonumber(临时商城数据[数量][2]);
				end
			end
		end
	end
end

创建商城NPC();

