705 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			705 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | /* | ||
|  | 文件名:Tuguan.nut | ||
|  | 路径:Plugins/Tuguan/Tuguan.nut | ||
|  | 创建日期:2022-12-15	07:09 | ||
|  | 文件用途:土罐的袖珍罐 | ||
|  | */ | ||
|  | class TuguanButton //  obj  --  按钮名称  --  鼠标对象  --  X坐标  --  Y坐标  --  宽度  --  高度  --  Ani调用路径  --  Ani宽度  --  Ani高度  --  AniRGB  -- | ||
|  | { | ||
|  |     obj = null; | ||
|  |     buttonName = null; | ||
|  |     IMouse = null; | ||
|  |     x = null; | ||
|  |     y = null; | ||
|  |     width = null; | ||
|  |     length = null; | ||
|  |     aniFileName = null; | ||
|  |     BoxStetu = null; | ||
|  |     Mobj = null; //鼠标对象 | ||
|  | 
 | ||
|  |     constructor(gObj, gButtonName, gIMouse, gX, gY, gWidth, gLength, ganiFileName) { | ||
|  |         obj = gObj; | ||
|  |         buttonName = gButtonName; | ||
|  |         IMouse = gIMouse; | ||
|  |         x = gX; | ||
|  |         y = gY; | ||
|  |         width = gWidth; | ||
|  |         length = gLength; | ||
|  |         aniFileName = ganiFileName; | ||
|  |         BoxStetu = BoxStetu; | ||
|  | 
 | ||
|  |         if (getroottable().rawin("MouseObject")) Mobj = getroottable()["MouseObject"]; | ||
|  |     } | ||
|  | 
 | ||
|  |     function drawButtonImage() { | ||
|  |         if (isDown()) | ||
|  |             y++; | ||
|  | 
 | ||
|  |         if (isInRect()) { | ||
|  |             local buttonAniEff = obj.getVar().GetAnimationMap(buttonName + "rect", aniFileName.tostring() + "_2.ani"); | ||
|  |             sq_AnimationProc(buttonAniEff); | ||
|  |             sq_drawCurrentFrame(buttonAniEff, x, y, true); | ||
|  |         } | ||
|  |         if (!isInRect()) { | ||
|  |             local buttonAni = obj.getVar().GetAnimationMap(buttonName, aniFileName.tostring() + "_1.ani"); | ||
|  |             sq_AnimationProc(buttonAni); | ||
|  |             sq_drawCurrentFrame(buttonAni, x, y, true); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  |     //悬停状态 | ||
|  |     function isInRect() { | ||
|  |         if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 5, 5, x, y, width, length)) return true; | ||
|  |         else return false; | ||
|  |     } | ||
|  |     //左键按下状态 | ||
|  |     function isDown() { | ||
|  |         if (isInRect() && Mobj.Lb == 1) return true; | ||
|  |         else return false; | ||
|  |     } | ||
|  |     //左键弹起状态 | ||
|  |     function isLBUp() { | ||
|  |         if (isInRect() && Mobj.Lb == 0) return true; | ||
|  |         else return false; | ||
|  |     } | ||
|  | 
 | ||
|  |     //左键单击状态 | ||
|  |     function isActive() { | ||
|  |         if (isInRect() && Mobj.LbEvent) return true; | ||
|  |         else return false; | ||
|  |     } | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | class TuguanTextButton //  obj  --  按钮名称  --  鼠标对象  --  X坐标  --  Y坐标  --  宽度  --  高度  --  Ani调用路径  --  Ani宽度  --  Ani高度  --  AniRGB  -- | ||
|  | { | ||
|  |     obj = null; | ||
|  |     IMouse = null; | ||
|  |     x = null; | ||
|  |     y = null; | ||
|  |     width = null; | ||
|  |     length = null; | ||
|  |     BoxStetu = null; | ||
|  |     str = null; | ||
|  |     type = null; | ||
|  |     mb = null; | ||
|  |     rgb = null; | ||
|  |     irgb = null; | ||
|  |     Mobj = null; //鼠标对象 | ||
|  | 
 | ||
|  |     constructor(gObj, gIMouse, gX, gY, gWidth, gLength, gstr, grgba, girgba, gtype, gmb) { | ||
|  |         obj = gObj; | ||
|  |         IMouse = gIMouse; | ||
|  |         x = gX; | ||
|  |         y = gY; | ||
|  |         width = gWidth; | ||
|  |         length = gLength; | ||
|  |         BoxStetu = BoxStetu; | ||
|  |         str = gstr; | ||
|  |         type = gtype; | ||
|  |         mb = gmb; | ||
|  |         rgb = grgba; | ||
|  |         irgb = girgba; | ||
|  | 
 | ||
|  |         if (getroottable().rawin("MouseObject")) Mobj = getroottable()["MouseObject"]; | ||
|  |     } | ||
|  | 
 | ||
|  |     function draw() { | ||
|  |         if (isDown()) | ||
|  |             y++; | ||
|  | 
 | ||
|  |         if (isInRect()) { | ||
|  |             L_sq_DrawCode(str, x, y, irgb, type, mb); | ||
|  |         } | ||
|  |         if (!isInRect()) { | ||
|  |             L_sq_DrawCode(str, x, y, rgb, type, mb); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     //悬停状态 | ||
|  |     function isInRect() { | ||
|  |         if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 5, 5, x, y, width, length)) return true; | ||
|  |         else return false; | ||
|  |     } | ||
|  |     //左键按下状态 | ||
|  |     function isDown() { | ||
|  |         if (isInRect() && Mobj.Lb == 1) return true; | ||
|  |         else return false; | ||
|  |     } | ||
|  |     //左键弹起状态 | ||
|  |     function isLBUp() { | ||
|  |         if (isInRect() && Mobj.Lb == 0) return true; | ||
|  |         else return false; | ||
|  |     } | ||
|  | 
 | ||
|  |     //左键单击状态 | ||
|  |     function isActive() { | ||
|  |         if (isInRect() && Mobj.LbEvent) return true; | ||
|  |         else return false; | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | class TuguanSystem extends BasicsDrawTool { | ||
|  | 
 | ||
|  |     State = 0; | ||
|  |     MainSoundsSw = 0; | ||
|  |     ASoundSw = 0; | ||
|  |     SSoundSw = 0; | ||
|  | 
 | ||
|  |     SelectModel = 0; | ||
|  |     BoxName = null; | ||
|  |     BoxId = null; | ||
|  |     BoxNameXpos = null; | ||
|  |     BoxNameYpos = null; | ||
|  |     BoxCount = null; | ||
|  |     ProbabilityTab = null; | ||
|  |     AniType = null; | ||
|  | 
 | ||
|  |     //Ani对象 | ||
|  |     P1_01 = null; | ||
|  |     P2_01 = null; | ||
|  |     P3_01 = null; | ||
|  |     P4_02 = null; | ||
|  |     MainEffAni = null; | ||
|  |     MainEffAniArr = null; | ||
|  | 
 | ||
|  | 
 | ||
|  |     //奖励包对象 | ||
|  |     RewardObj = null; | ||
|  | 
 | ||
|  |     RewardObjTen = null; | ||
|  | 
 | ||
|  |     SendBackChunk = null; | ||
|  | 
 | ||
|  | 
 | ||
|  |     //ItemInfo | ||
|  |     ItemInfoObject = null; | ||
|  |     ItemInfoDrawS = null; | ||
|  | 
 | ||
|  |     //界面回包 | ||
|  |     function TuguanOpenCallBack(Chunk) { | ||
|  |         local Jso = Json.Decode(Chunk); | ||
|  |         if (State == 0) { | ||
|  |             BoxName = Jso.BoxName; | ||
|  |             BoxId = Jso.BoxId; | ||
|  |             BoxNameXpos = Jso.BoxNameXpos; | ||
|  |             BoxNameYpos = Jso.BoxNameYpos; | ||
|  |             BoxCount = Jso.BoxCount; | ||
|  |             ProbabilityTab = Jso.ProbabilityTab; | ||
|  |             State = 1; | ||
|  |         } | ||
|  | 
 | ||
|  |         if (!ItemInfoObject.rawin(BoxId)) { | ||
|  |             local arr = [BoxId]; | ||
|  |             local T = { | ||
|  |                 op = 20231010, | ||
|  |                 realop = 20008668, | ||
|  |                 itemId = arr, | ||
|  |                 Type = 2, | ||
|  |             } | ||
|  |             SendPack(T); | ||
|  |         } | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  |     //抽奖回包 | ||
|  |     function TuguanRewardCallBack(Chunk) { | ||
|  | 
 | ||
|  |         local Jso = Json.Decode(Chunk); | ||
|  | 
 | ||
|  |         AniType = Jso.AniType; | ||
|  |         BoxCount = Jso.BoxCount; | ||
|  |         RewardObj = Jso.RewardObj; | ||
|  |         State = 3; | ||
|  | 
 | ||
|  |         local ItemGetArray = {}; | ||
|  |         foreach(P, V in RewardObj.ItemBuffer) { | ||
|  |             for (local i = 0; i< 2; i++) { | ||
|  |                 local ItemId = V["itemid" + i]; | ||
|  |                 if (!ItemInfoObject.rawin(ItemId)) { | ||
|  |                     if (!ItemGetArray.rawin(ItemId)) | ||
|  |                         ItemGetArray.rawset(ItemId, true); | ||
|  |                 } | ||
|  |             } | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         if (ItemGetArray.len() > 0) { | ||
|  |             local arr = []; | ||
|  |             foreach(Key, Value in ItemGetArray) { | ||
|  |                 arr.append(Key); | ||
|  |             } | ||
|  |             local T = { | ||
|  |                 op = 20231010, | ||
|  |                 realop = 20008668, | ||
|  |                 itemId = arr, | ||
|  |                 Type = 2, | ||
|  |             } | ||
|  |             SendPack(T); | ||
|  |         } | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  |     function SendCallBackChunk(Chunk) { | ||
|  |         local RootTab = getroottable(); | ||
|  |         if (RootTab.rawin("TuguanObj")) { | ||
|  |             local Tobj = RootTab["TuguanObj"]; | ||
|  |             Tobj.SendBackChunk = Chunk; | ||
|  |             Tobj.State = 3; | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     function GetItemInfoCallBack(Chunk) { | ||
|  |         local Jso = Json.Decode(Chunk); | ||
|  | 
 | ||
|  |         foreach(Pos, Value in Jso.itemInfo) { | ||
|  |             if (Value.Name2.len() == 0) | ||
|  |                 Value.Name2 = "Yosin-Team"; | ||
|  |             ItemInfoObject.rawset(Jso.itemId[Pos], Value); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     constructor() { | ||
|  |         MainEffAniArr = {}; | ||
|  |         ItemInfoObject = {}; | ||
|  | 
 | ||
|  |         Pack_Control.rawset(20008002, TuguanOpenCallBack.bindenv(this)); | ||
|  |         Pack_Control.rawset(20008004, TuguanRewardCallBack.bindenv(this)); | ||
|  |         Pack_Control.rawset(20008666, SendCallBackChunk.bindenv(this)); | ||
|  |         Pack_Control.rawset(20008668, GetItemInfoCallBack.bindenv(this)); | ||
|  |     } | ||
|  | 
 | ||
|  |     //退出 | ||
|  |     function Exit() { | ||
|  |         State = 0; | ||
|  |         MainEffAniArr.rawset("P1_01", P1_01); | ||
|  |         MainEffAniArr.rawset("P2_01", P2_01); | ||
|  |         MainEffAniArr.rawset("P3_01", P3_01); | ||
|  |         MainEffAniArr.rawset("P4_02", P4_02); | ||
|  |         ResetRewardMainAni(); | ||
|  |     } | ||
|  | 
 | ||
|  |     //打开窗口 | ||
|  |     function OpenWindow(obj) { | ||
|  |         //窗口关闭 | ||
|  |         if (!sq_GetPopupWindowMainCotrol(267)) { | ||
|  |             L_NewWindows("Lenheart", 267, 0x65535); //打开土罐窗口 | ||
|  |             State = 2; | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     //重置特效Ani | ||
|  |     function ResetRewardMainAni() { | ||
|  |         foreach(Pos, value in MainEffAniArr) { | ||
|  |             sq_Rewind(value); | ||
|  |         } | ||
|  |         MainEffAniArr = null; | ||
|  |         MainEffAniArr = {}; | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  |     //绘制抽奖动画 | ||
|  |     function DrawRewardAni(obj) { | ||
|  | 
 | ||
|  |         //停止斗篷风声 | ||
|  |         obj.stopSound(2022121701); | ||
|  | 
 | ||
|  |         P1_01 = T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/" + AniType + "/" + AniType + "1_01.ani", X + 20, Y + 30, "TuguanSystemDrawReward" + AniType + "1_01"); | ||
|  |         //土罐眼睛闪光 | ||
|  |         if (P1_01 && sq_GetAnimationFrameIndex(P1_01) == 13) { | ||
|  |             if (AniType == "a" || AniType == "s") obj.sq_PlaySound("DANJIN_START_AS"); | ||
|  |             else obj.sq_PlaySound("DANJIN_START_N"); | ||
|  |         } | ||
|  | 
 | ||
|  |         if (P1_01 && sq_IsEnd(P1_01)) P2_01 = T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/" + AniType + "/" + AniType + "2_01.ani", X + 20, Y + 30, "TuguanSystemDrawReward" + AniType + "2_01"); | ||
|  |         if (P2_01 && sq_GetAnimationFrameIndex(P2_01) == 0) { | ||
|  |             if (AniType == "b") obj.sq_PlaySound("DANJIN_SUMMON_B"); | ||
|  |             else if (AniType == "a") obj.sq_PlaySound("DANJIN_SUMMON_A"); | ||
|  |             else if (AniType == "s") obj.sq_PlaySound("DANJIN_SUMMON_S"); | ||
|  |         } | ||
|  |         if (P2_01 && sq_GetAnimationFrameIndex(P2_01) == 8) { | ||
|  |             if (AniType == "b") obj.sq_PlaySound("DANJIN_GAMBLE_B"); | ||
|  |             else if (AniType == "a") obj.sq_PlaySound("DANJIN_GAMBLE_A"); | ||
|  |             else if (AniType == "s") obj.sq_PlaySound("DANJIN_GAMBLE_S"); | ||
|  |         } | ||
|  | 
 | ||
|  |         if (P2_01 && sq_IsEnd(P2_01)) P3_01 = T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/" + AniType + "/" + AniType + "3_01.ani", X + 20, Y + 30, "TuguanSystemDrawReward" + AniType + "3_01"); | ||
|  |         if (P3_01 && sq_IsEnd(P3_01)) P4_02 = T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/" + AniType + "/" + AniType + "4_02.ani", X + 20, Y + 30, "TuguanSystemDrawReward" + AniType + "4_02"); | ||
|  | 
 | ||
|  |         if (P4_02 && sq_IsEnd(P4_02)) { | ||
|  | 
 | ||
|  |             MainEffAniArr.rawset("P1_01", P1_01); | ||
|  |             MainEffAniArr.rawset("P2_01", P2_01); | ||
|  |             MainEffAniArr.rawset("P3_01", P3_01); | ||
|  |             MainEffAniArr.rawset("P4_02", P4_02); | ||
|  | 
 | ||
|  |             sq_Rewind(P1_01); | ||
|  |             sq_Rewind(P2_01); | ||
|  |             sq_Rewind(P3_01); | ||
|  |             sq_Rewind(P4_02); | ||
|  |             // ResetRewardMainAni(); | ||
|  | 
 | ||
|  |             obj.sq_PlaySound("DANJIN_GAMBLE_FIN"); | ||
|  | 
 | ||
|  |             State = 4; | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  |     //绘制奖励列表 | ||
|  |     function DrawRewardItem(obj) { | ||
|  |         //单抽 | ||
|  |         if (SelectModel == 1) { | ||
|  |             T_DrawStayAni(obj, "common/tuguan/main.ani", X + 20, Y + 30, 5, "TuguanRewardMain"); | ||
|  |             L_sq_DrawCode("最后结果", (X - 195) + 377, (Y - 100) + 182, sq_RGBA(255, 177, 0, 250), 1, 1); | ||
|  |             T_DrawStayAni(obj, "common/tuguan/main.ani", X + 20 + 141, Y + 30 + 91, 7, "TuguanRewardMainOneX"); | ||
|  | 
 | ||
|  |             for (local z = 0; z< 2; z++) { | ||
|  |                 //绘制槽 | ||
|  |                 T_DrawStayAni(obj, "common/tuguan/main.ani", X + 20 + 141 + 9 + (z * 34), Y + 30 + 91 + 9, 8, "TuguanRewardMainOneXx"); | ||
|  |             } | ||
|  |             for (local x = 0; x< 2; x++) { | ||
|  |                 //品级背景光 | ||
|  |                 local Rarity = RewardObj.ItemBuffer[0]["itemrarity" + x]; | ||
|  |                 switch (Rarity) { | ||
|  |                     case 2: | ||
|  |                         T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/light_iconslot.ani", X + 20 + 141 + 9 + (x * 34), Y + 30 + 91 + 9, "TuguanRewardMainoieff" + Rarity); | ||
|  |                         break; | ||
|  |                     case 3: | ||
|  |                         T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/light_iconslot_1.ani", X + 20 + 141 + 9 + (x * 34), Y + 30 + 91 + 9, "TuguanRewardMainoieff" + Rarity); | ||
|  |                         break; | ||
|  |                 } | ||
|  |             } | ||
|  | 
 | ||
|  |             ItemInfoDrawS = null; | ||
|  |             for (local i = 0; i< 2; i++) { | ||
|  |                 local ItemId = RewardObj.ItemBuffer[0]["itemid" + i]; | ||
|  |                 local ItemCount = RewardObj.ItemBuffer[0]["itemcount" + i]; | ||
|  |                 //绘制物品 | ||
|  |                 L_Sq_DrawItem(X + 20 + 141 + 9 + (i * 34) + 3, Y + 30 + 91 + 9 + 3, ItemId, ItemCount, 0, 0, 0); | ||
|  |                 if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + 20 + 141 + 9 + (i * 34) + 3, Y + 30 + 91 + 9 + 3, 24, 24)) { | ||
|  |                     ItemInfoDrawS = {}; | ||
|  |                     ItemInfoDrawS.X <- X + 20 + 141 + 9 + (i * 34) + 3; | ||
|  |                     ItemInfoDrawS.Y <- Y + 30 + 91 + 9 + 3; | ||
|  |                     ItemInfoDrawS.ItemId <- ItemId; | ||
|  |                 } | ||
|  | 
 | ||
|  |                 //物品刷新光 | ||
|  |                 local Ani = T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/common_excute_icon_front_a.ani", X + 20 + 141 + 13 + (i * 34), Y + 30 + 91 + 12, "TuguanRewardMainoieff" + i); | ||
|  |                 MainEffAniArr.rawset("TuguanRewardMainoieff" + i, Ani); | ||
|  | 
 | ||
|  |                 //品级闪烁光 | ||
|  |                 local Rarity = RewardObj.ItemBuffer[0]["itemrarity" + i]; | ||
|  |                 switch (Rarity) { | ||
|  |                     case 2: | ||
|  |                         if (ASoundSw == 0) { | ||
|  |                             obj.sq_PlaySound("DANJIN_GAMBLE_CLASS_A"); | ||
|  |                             ASoundSw = 1; | ||
|  |                         } | ||
|  |                         local RAni = T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/iconslot_00.ani", X + 20 + 141 + 13 + (i * 34), Y + 30 + 91 + 12, "TuguanRewardMainoreff" + 2); | ||
|  |                         MainEffAniArr.rawset("TuguanRewardMainoreff" + 2, RAni); | ||
|  |                         break; | ||
|  |                     case 3: | ||
|  |                         if (SSoundSw == 0) { | ||
|  |                             obj.sq_PlaySound("DANJIN_GAMBLE_FANFARE"); | ||
|  |                             SSoundSw = 1; | ||
|  |                         } | ||
|  |                         local RAni = T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/iconslot_01.ani", X + 20 + 141 + 13 + (i * 34), Y + 30 + 91 + 12, "TuguanRewardMainoreff" + 3); | ||
|  |                         MainEffAniArr.rawset("TuguanRewardMainoreff" + 3, RAni); | ||
|  |                         break; | ||
|  |                 } | ||
|  |             } | ||
|  | 
 | ||
|  |             L_sq_DrawCode("祝你发大财!", (X - 195) + 371, (Y - 100) + 320, sq_RGBA(255, 177, 0, 250), 1, 1); | ||
|  |         } | ||
|  |         //10连抽 | ||
|  |         else if (SelectModel == 10) { | ||
|  |             T_DrawStayAni(obj, "common/tuguan/main.ani", X + 20, Y + 30, 6, "TuguanRewardMainT"); | ||
|  |             L_sq_DrawCode("最后结果", (X - 195) + 377, (Y - 100) + 142, sq_RGBA(255, 177, 0, 250), 1, 1); | ||
|  |             //T_DrawStayAni(obj, "common/tuguan/main.ani", X + 20 + 141, Y + 30 + 91, 7, "TuguanRewardMainTenX"); | ||
|  |             ItemInfoDrawS = null; | ||
|  |             for (local i = 0; i< 10; i++) { | ||
|  |                 local ofs = i; | ||
|  |                 if (i > 7) ofs += 1; | ||
|  |                 T_DrawStayAni(obj, "common/tuguan/main.ani", (X - 195) + 198 + 30 + ((ofs % 4) * 86), Y + 62 + ((ofs / 4) * 50), 7, "TuguanRewardMainTenX"); | ||
|  | 
 | ||
|  |                 for (local y = 0; y< 2; y++) { | ||
|  |                     //绘制槽 | ||
|  |                     T_DrawStayAni(obj, "common/tuguan/main.ani", (X - 195) + 198 + 30 + 9 + ((ofs % 4) * 86) + (y * 34), Y + 62 + 9 + ((ofs / 4) * 50), 8, "TuguanRewardMainOneXx"); | ||
|  |                 } | ||
|  | 
 | ||
|  |                 for (local x = 0; x< 2; x++) { | ||
|  |                     //品级背景光 | ||
|  |                     local Rarity = RewardObj.ItemBuffer[i]["itemrarity" + x]; | ||
|  |                     switch (Rarity) { | ||
|  |                         case 2: | ||
|  |                             T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/light_iconslot.ani", (X - 195) + 198 + 30 + 10 + ((ofs % 4) * 86) + (x * 34), Y + 62 + 10 + ((ofs / 4) * 50), "TuguanRewardMainoieff" + Rarity); | ||
|  |                             break; | ||
|  |                         case 3: | ||
|  |                             T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/light_iconslot_1.ani", (X - 195) + 198 + 30 + 10 + ((ofs % 4) * 86) + (x * 34), Y + 62 + 10 + ((ofs / 4) * 50), "TuguanRewardMainoieff" + Rarity); | ||
|  |                             break; | ||
|  |                     } | ||
|  |                 } | ||
|  | 
 | ||
|  |                 for (local z = 0; z< 2; z++) { | ||
|  |                     local ItemId = RewardObj.ItemBuffer[i]["itemid" + z]; | ||
|  |                     local ItemCount = RewardObj.ItemBuffer[i]["itemcount" + z]; | ||
|  |                     //绘制物品 | ||
|  |                     L_Sq_DrawItem((X - 195) + 198 + 30 + 9 + ((ofs % 4) * 86) + (z * 34) + 3, Y + 62 + 9 + ((ofs / 4) * 50) + 3, ItemId, ItemCount, 0, 0, 0); | ||
|  |                     if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, (X - 195) + 198 + 30 + 9 + ((ofs % 4) * 86) + (z * 34) + 3, Y + 62 + 9 + ((ofs / 4) * 50) + 3, 24, 24)) { | ||
|  |                         ItemInfoDrawS = {}; | ||
|  |                         ItemInfoDrawS.X <- (X - 195) + 198 + 30 + 9 + ((ofs % 4) * 86) + (z * 34) + 3; | ||
|  |                         ItemInfoDrawS.Y <- Y + 62 + 9 + ((ofs / 4) * 50) + 3; | ||
|  |                         ItemInfoDrawS.ItemId <- ItemId; | ||
|  |                     } | ||
|  | 
 | ||
|  |                     //物品刷新光 | ||
|  |                     local Ani = T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/common_excute_icon_front_a.ani", (X - 195) + 198 + 30 + 13 + ((ofs % 4) * 86) + (z * 34), Y + 62 + 12 + ((ofs / 4) * 50), "TuguanRewardMainoieff" + z); | ||
|  |                     MainEffAniArr.rawset("TuguanRewardMainoieff" + z, Ani); | ||
|  | 
 | ||
|  |                     //品级闪烁光 | ||
|  |                     local Rarity = RewardObj.ItemBuffer[i]["itemrarity" + z]; | ||
|  |                     switch (Rarity) { | ||
|  |                         case 2: | ||
|  |                             if (ASoundSw == 0) { | ||
|  |                                 obj.sq_PlaySound("DANJIN_GAMBLE_CLASS_A"); | ||
|  |                                 ASoundSw = 1; | ||
|  |                             } | ||
|  |                             local RAni = T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/iconslot_00.ani", (X - 195) + 198 + 30 + 13 + ((ofs % 4) * 86) + (z * 34), Y + 62 + 12 + ((ofs / 4) * 50), "TuguanRewardMainoreff" + 2); | ||
|  |                             MainEffAniArr.rawset("TuguanRewardMainoreff" + 2, RAni); | ||
|  |                             break; | ||
|  |                         case 3: | ||
|  |                             if (SSoundSw == 0) { | ||
|  |                                 obj.sq_PlaySound("DANJIN_GAMBLE_FANFARE"); | ||
|  |                                 SSoundSw = 1; | ||
|  |                             } | ||
|  |                             local RAni = T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/iconslot_01.ani", (X - 195) + 198 + 30 + 13 + ((ofs % 4) * 86) + (z * 34), Y + 62 + 12 + ((ofs / 4) * 50), "TuguanRewardMainoreff" + 3); | ||
|  |                             MainEffAniArr.rawset("TuguanRewardMainoreff" + 3, RAni); | ||
|  |                             break; | ||
|  |                     } | ||
|  |                 } | ||
|  |             } | ||
|  | 
 | ||
|  |             L_sq_DrawCode("祝你发大财!", (X - 195) + 371, (Y - 100) + 336, sq_RGBA(255, 177, 0, 250), 1, 1); | ||
|  |         } | ||
|  |         MainEffAni = T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/background_excute_front_supreme.ani", X + 20, Y + 30, "TuguanSystemDrawRewardMainAniL"); | ||
|  |         MainEffAniArr.rawset("TuguanSystemDrawRewardMainAniL", MainEffAni); | ||
|  |     } | ||
|  | 
 | ||
|  |     //播放主界面音效 | ||
|  |     function PlayMainSounds(obj) { | ||
|  |         if (State == 2 && MainSoundsSw == 0) { | ||
|  |             obj.sq_PlaySound("DANJIN_START_LOOP", 2022121701); | ||
|  |             MainSoundsSw = 1; | ||
|  |         } | ||
|  |         if (State != 2 && State != 3) { | ||
|  |             obj.stopSound(2022121701); | ||
|  |             MainSoundsSw = 0; | ||
|  |         } | ||
|  |         if (State != 4) { | ||
|  |             SSoundSw = 0; | ||
|  |             ASoundSw = 0; | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     //绘制主界面 | ||
|  |     function DrawMain(obj) { | ||
|  |         //窗口 | ||
|  |         T_DrawStayAni(obj, "common/tuguan/main.ani", X, Y, 0, "TuguanSystemMain"); | ||
|  |         //标题 | ||
|  |         L_sq_DrawCode(BoxName, X + BoxNameXpos, Y + BoxNameYpos, sq_RGBA(230, 200, 155, 250), 1, 1); | ||
|  |         //动画 | ||
|  |         if (State == 2) T_DrawDynamicAni(obj, "common/tuguan/0510_danjinjar/lobby/lobby_wait_rank_1step_1_step_common_0510_danjin_body.ani", X + 20, Y + 30, "TuguanSystemMainbackgroundeff"); | ||
|  |         //抽奖动画 | ||
|  |         if (State == 3) { | ||
|  | 
 | ||
|  |             DrawRewardAni(obj); | ||
|  | 
 | ||
|  |         } | ||
|  |         //奖励列表 | ||
|  |         if (State == 4) { | ||
|  |             DrawRewardItem(obj); | ||
|  |             if (SendBackChunk) { | ||
|  |                 L_sq_SendPackType(130); | ||
|  |                 L_sq_SendPackWChar(SendBackChunk); | ||
|  |                 L_sq_SendPack(); | ||
|  |                 SendBackChunk = null; | ||
|  |             } | ||
|  |         } | ||
|  |         //遮罩 | ||
|  |         T_DrawStayAni(obj, "common/tuguan/main.ani", X + 17, Y + 26, 1, "TuguanSystemMainbackgroundblack"); | ||
|  |         //图标框 | ||
|  |         T_DrawStayAni(obj, "common/tuguan/main.ani", X + 187, Y + 26 + 250, 3, "TuguanSystemMainbackgrounditem"); | ||
|  |         //盒子数量 | ||
|  |         L_Sq_DrawItem(X + 187 + 3, Y + 26 + 250 + 3, BoxId, BoxCount, 0, 0, 0); | ||
|  |         if (State == 2) ItemInfoDrawS = null; | ||
|  |         if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + 187 + 3, Y + 26 + 250, 24, 24)) { | ||
|  |             ItemInfoDrawS = {}; | ||
|  |             ItemInfoDrawS.X <- X + 187 + 3; | ||
|  |             ItemInfoDrawS.Y <- Y + 26 + 250; | ||
|  |             ItemInfoDrawS.ItemId <- BoxId; | ||
|  |         } | ||
|  | 
 | ||
|  |         //绘制模式字体 | ||
|  |         L_sq_DrawCode("开启1个", X + 90, Y + 287, sq_RGBA(230, 200, 155, 250), 0, 1); | ||
|  |         L_sq_DrawCode("开启10个", X + 90 + 200, Y + 287, sq_RGBA(230, 200, 155, 250), 0, 1); | ||
|  | 
 | ||
|  | 
 | ||
|  |         //单抽按钮 | ||
|  |         local OneButton = TuguanButton(obj, "TuguanOneButton", IMouse, X + 68, Y + 286, 72, 20, "common/tuguan/db_newani_sel"); | ||
|  |         OneButton.drawButtonImage(); | ||
|  |         if (OneButton.isActive() && (State == 2 || State == 4)) //单抽按钮按下 | ||
|  |         { | ||
|  |             SelectModel = 1; | ||
|  |             State = 2; | ||
|  |         } | ||
|  | 
 | ||
|  |         //单抽按钮 | ||
|  |         local TenButton = TuguanButton(obj, "TuguanTenButton", IMouse, X + 68 + 201, Y + 286, 72, 20, "common/tuguan/db_newani_sel"); | ||
|  |         TenButton.drawButtonImage(); | ||
|  |         if (TenButton.isActive() && (State == 2 || State == 4)) //单抽按钮按下 | ||
|  |         { | ||
|  |             SelectModel = 10; | ||
|  |             State = 2; | ||
|  |         } | ||
|  | 
 | ||
|  |         if (SelectModel != 0) { | ||
|  |             local Box_Statu_Button_Offset = 0; | ||
|  |             if (SelectModel == 10) Box_Statu_Button_Offset = 201; | ||
|  |             T_DrawStayAni(obj, "common/tuguan/db_newani_sel_3.ani", X + 68 + Box_Statu_Button_Offset, Y + 286, 0, "TuguanSelectModelp"); | ||
|  |             T_DrawStayAni(obj, "common/tuguan/main.ani", X + 68 + Box_Statu_Button_Offset - 41, Y + 286 - 6, 4, "TuguanSystemMainbackgrounditem"); | ||
|  |         } | ||
|  | 
 | ||
|  |         local ProbabilityButton = TuguanTextButton(obj, IMouse, X + 68 - 46, Y + 286 + 40, 62, 18, "※查看概率", sq_RGBA(230, 200, 155, 150), sq_RGBA(230, 200, 155, 250), 1, 1); | ||
|  |         ProbabilityButton.draw(); | ||
|  |         if (ProbabilityButton.isActive()) { | ||
|  |             L_Cmd(ProbabilityTab); | ||
|  |         } | ||
|  | 
 | ||
|  |         local doselectbutton = TuguanButton(obj, "Tuguandoselectbutton", IMouse, X + 68 + 98, Y + 347, 72, 20, "common/tuguan/open"); | ||
|  |         doselectbutton.drawButtonImage(); | ||
|  |         if (doselectbutton.isActive()) { | ||
|  |             if (SelectModel != 0 && (State == 2 || State == 4)) { | ||
|  |                 //抽奖包 | ||
|  |                 local TuguanDoselectPack = Json_STL("TuguanDoselectPack"); | ||
|  |                 TuguanDoselectPack.Put("op", 20008003); | ||
|  |                 TuguanDoselectPack.Put("doselect", SelectModel); | ||
|  |                 TuguanDoselectPack.Put("itemindex", BoxId); | ||
|  |                 local str = TuguanDoselectPack.GetString(); | ||
|  |                 L_sq_SendPackType(130); | ||
|  |                 L_sq_SendPackWChar(str); | ||
|  |                 L_sq_SendPack(); | ||
|  |                 TuguanDoselectPack.Delete(); | ||
|  |             } else if (State == 3) { | ||
|  |                 MainEffAniArr.rawset("P1_01", P1_01); | ||
|  |                 MainEffAniArr.rawset("P2_01", P2_01); | ||
|  |                 MainEffAniArr.rawset("P3_01", P3_01); | ||
|  |                 MainEffAniArr.rawset("P4_02", P4_02); | ||
|  |                 ResetRewardMainAni(); | ||
|  |                 State = 4; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  |     ItemObject = null; | ||
|  | 
 | ||
|  |     function DrawItemInfo(obj) { | ||
|  |         if (ItemInfoDrawS) { | ||
|  |             if (!ItemInfoObject.rawin(ItemInfoDrawS.ItemId)) return; | ||
|  |             if (!ItemObject) { | ||
|  |                 local ItemId = ItemInfoDrawS.ItemId; | ||
|  |                 ItemObject = ItemInfoClass(ItemInfoObject[ItemId]); | ||
|  |             } | ||
|  |             ItemObject.Show(ItemInfoDrawS.X, ItemInfoDrawS.Y - ItemObject.PageLength); | ||
|  |         } else { | ||
|  |             ItemObject = null; | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  |     function DrawAMain(obj) { | ||
|  |         //如果是打开状态 | ||
|  |         if (State >= 2) { | ||
|  |             //窗口被关闭类状态写回未开启 | ||
|  |             if (KeyPressNB.isKeyPress(48, "TuguanFucCloseKey")) { | ||
|  |                 MainState = false; | ||
|  |                 Exit(); | ||
|  |             } | ||
|  |             //播放主界面音效 | ||
|  |             PlayMainSounds(obj); | ||
|  |             //绘制主界面 | ||
|  |             DrawMain(obj); | ||
|  |             //绘制道具信息 | ||
|  |             DrawItemInfo(obj); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     X = 195; | ||
|  |     Y = 100; | ||
|  |     MainState = false; | ||
|  |     WindowObj = null; | ||
|  |     //运行主函数 | ||
|  |     function Run(obj) { | ||
|  |         if (State == 1) { | ||
|  |             MainState = true; | ||
|  |             State = 2; | ||
|  |         } | ||
|  | 
 | ||
|  |         if (MainState) { | ||
|  |             if (WindowObj) { | ||
|  | 
 | ||
|  |                 DrawAMain(obj); | ||
|  |                 WindowObj.Show(obj); | ||
|  |                 X = WindowObj.X; | ||
|  |                 Y = WindowObj.Y; | ||
|  |             } else { | ||
|  |                 WindowObj = LenheartWindow(X, Y, 405, 372, 28); //坐标 大小 标题栏高度 | ||
|  |                 // WindowObj.DeBugMode = true; | ||
|  | 
 | ||
|  |                 L_NewWindows("Lenheart", 170, 0x65535); | ||
|  |                 local W = sq_GetPopupWindowMainCotrol(170); | ||
|  |                 W.SetVisible(false); | ||
|  |                 W.SetEnable(false); | ||
|  |             } | ||
|  |         } else { | ||
|  |             if (WindowObj && WindowObj.YMouseSw == false) { | ||
|  |                 IMouse.ReleaseMouseClick(); | ||
|  |                 WindowObj.YMouseSw = true; | ||
|  |                 WindowObj = null; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | function TuguanFuc(obj) { | ||
|  |     local RootTab = getroottable(); | ||
|  |     if (sq_GetCurrentModuleType() == 1) { | ||
|  |         if (!RootTab.rawin("TuguanObj")) { | ||
|  |             local Cobj = TuguanSystem(); | ||
|  |             RootTab.rawset("TuguanObj", Cobj); | ||
|  |         } else { | ||
|  |             RootTab["TuguanObj"].Run(obj); | ||
|  |         } | ||
|  |     } else { | ||
|  |         if (RootTab.rawin("TuguanObj")) { | ||
|  |             RootTab.rawdelete("TuguanObj"); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | if (getroottable().rawin("LenheartFuncTab")) { | ||
|  |     getroottable()["LenheartFuncTab"].rawset("TuguanFucFunc", TuguanFuc); | ||
|  | } else { | ||
|  |     local T = {}; | ||
|  |     T.rawset("TuguanFucFunc", TuguanFuc); | ||
|  |     getroottable().rawset("LenheartFuncTab", T); | ||
|  | } |