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);
 | |
| } |