505 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			505 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| /*
 | |
| 文件名:Achievement.nut
 | |
| 路径:Project/Achievement/Achievement.nut
 | |
| 创建日期:2025-02-23	08:37
 | |
| 文件用途:成就系统
 | |
| */
 | |
| return;
 | |
| class Achievement_TypeButton extends LenheartNewUI_BaseButton {
 | |
| 
 | |
|     function _typeof() {
 | |
|         return "Achievement_TypeButton";
 | |
|     }
 | |
| }
 | |
| 
 | |
| class AchievementC extends LenheartNewUI_Windows {
 | |
|     //调试模式
 | |
|     // DeBugMode = true;
 | |
| 
 | |
|     //不是窗口
 | |
|     // NoWindow = true;
 | |
| 
 | |
|     //是否可见
 | |
|     // Visible = false;
 | |
| 
 | |
|     EtcInfo = null;
 | |
| 
 | |
|     WindowImg = Rindro_Image("achievement/main.img");
 | |
|     WindowBackGroundImg = Rindro_Image("achievement/mainbackground.img");
 | |
| 
 | |
|     ButtonInfo = null;
 | |
|     Info = null;
 | |
|     Data = null;
 | |
| 
 | |
|     IsOther = false;
 | |
|     OtherName = null;
 | |
| 
 | |
|     Page = 1;
 | |
| 
 | |
|     //滚轮值
 | |
|     ScrollValue = 0;
 | |
|     ScrollValueMax = 500;
 | |
| 
 | |
|     EventWindow = null;
 | |
| 
 | |
|     //左侧滚动条对象
 | |
|     LeftScrollBar = null;
 | |
|     //左侧滚轮值
 | |
|     LeftScrollRate = 0;
 | |
|     LeftScrollValue = 400;
 | |
| 
 | |
|     //右侧滚动条对象
 | |
|     RightScrollBar = null;
 | |
|     //右侧滚轮值
 | |
|     RightScrollRate = 0;
 | |
|     RightScrollValue = 400;
 | |
| 
 | |
|     //查询成就回包
 | |
|     function OnQueryAchievementBack(Chunk) {
 | |
|         local Jso = Json.Decode(Chunk);
 | |
|         if (Jso.rawin("click")) {
 | |
|             IsOther = true;
 | |
|         } else IsOther = false;
 | |
|         Data = {};
 | |
|         foreach(ValueObject in Jso.Achievement) {
 | |
|             Data.rawset(ValueObject.id, ValueObject);
 | |
|         }
 | |
| 
 | |
|     }
 | |
| 
 | |
|     function OnQueryAchievementBack2(Chunk) {
 | |
|         local Jso = Json.Decode(Chunk);
 | |
|         EventWindow = EventList_Obj.AddEvent("AchievementEvent1", 682, null);
 | |
|         EventWindow.MainButton.ShowName = Jso.VipInfo;
 | |
|     }
 | |
| 
 | |
|     function OnQueryAchievementBack3(Chunk) {
 | |
|         local Jso = Json.Decode(Chunk);
 | |
|         EventWindow = EventList_Obj.AddEvent("人物属性加成", 433, null);
 | |
|         EventWindow.MainButton.OnClick = function(B_obj) {
 | |
|             local T = {
 | |
|                 op = 20091601,
 | |
|             }
 | |
|             SendPackEx(T);
 | |
|         }.bindenv(this);
 | |
|     }
 | |
| 
 | |
| 
 | |
|     //查询成就
 | |
|     function QueryAchievement() {
 | |
|         local T = {
 | |
|             op = 20091001,
 | |
|             cjid = Page,
 | |
|             cid2 = OtherName ? OtherName : "-1"
 | |
|         }
 | |
|         SendPackEx(T);
 | |
|     }
 | |
| 
 | |
|     constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
 | |
|         EtcInfo = Rindro_Script.GetFileData("etc/th_plugin/etc.etc", function(DataTable, Data) {
 | |
|             while (!Data.Eof()) {
 | |
|                 local Str = Data.Get();
 | |
|                 if (Str == "[window pos]") {
 | |
|                     DataTable.window_pos <- [Data.Get(), Data.Get(), Data.Get(), Data.Get(), Data.Get()];
 | |
|                 } else if (Str == "[clicp pos]") {
 | |
|                     DataTable.clicp_pos <- [Data.Get(), Data.Get(), Data.Get(), Data.Get()];
 | |
|                 } else if (Str == "[clicp2 pos]") {
 | |
|                     DataTable.clicp_pos2 <- [Data.Get(), Data.Get(), Data.Get(), Data.Get()];
 | |
|                 }else if (Str == "[closebutton pos]") {
 | |
|                     DataTable.closebutton_pos <- [Data.Get(), Data.Get(), Data.Get(), Data.Get()];
 | |
|                 } else if (Str == "[left scroll bar]") {
 | |
|                     DataTable.left_scroll_bar_info <- [Data.Get(), Data.Get(), Data.Get(), Data.Get(), Data.Get(), Data.Get()];
 | |
|                 } else if (Str == "[right scroll bar]") {
 | |
|                     DataTable.right_scroll_bar_info <- [];
 | |
|                     while (true) {
 | |
|                         local buf = Data.Get();
 | |
|                         if (buf == "[/right scroll bar]") break;
 | |
|                         local Arr = [buf,Data.Get(), Data.Get(), Data.Get(), Data.Get(), Data.Get()];
 | |
|                         DataTable.right_scroll_bar_info.append(Arr);
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         }.bindenv(this));
 | |
| 
 | |
|         Childrens = [];
 | |
|         InitButtonConfig();
 | |
|         //注册控件
 | |
|         RegisterWidget(true);
 | |
| 
 | |
|         LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
 | |
|         Pack_Control.rawset(20091002, OnQueryAchievementBack.bindenv(this));
 | |
|         Pack_Control.rawset(20092002, OnQueryAchievementBack2.bindenv(this));
 | |
|         Pack_Control.rawset(20091010, OnQueryAchievementBack3.bindenv(this));
 | |
| 
 | |
|         InitConfig();
 | |
|         InitAchievement();
 | |
|         QueryAchievement();
 | |
| 
 | |
| 
 | |
| 
 | |
|         EventWindow = EventList_Obj.AddEvent("人物属性加成", 433, null);
 | |
|         EventWindow.MainButton.OnClick = function(B_obj) {
 | |
|             local T = {
 | |
|                 op = 20091601,
 | |
|             }
 | |
|             SendPackEx(T);
 | |
|         }.bindenv(this);
 | |
|     }
 | |
| 
 | |
|     function InitAchievement() {
 | |
|         for (local i = 0; i< Childrens.len(); i++) {
 | |
|             if (typeof Childrens[i] == "Achievement_TypeButton") {
 | |
|                 Childrens.remove(i);
 | |
|                 i--;
 | |
|             }
 | |
|         }
 | |
|         //这里要手动移除右边的滚动条
 | |
|         if (RightScrollBar) RightScrollBar.RemoveSelf();
 | |
| 
 | |
|         ScrollValueMax = 0;
 | |
|         RegisterWidget(false);
 | |
| 
 | |
|         if (Info.len() > Page) {
 | |
|             //绘制成就
 | |
|             foreach(InfoObj in Info[Page]) {
 | |
|                 if (InfoObj.Pos.y - 320 > ScrollValueMax) ScrollValueMax = InfoObj.Pos.y - 320;
 | |
|                 DrawAItem(InfoObj);
 | |
|             }
 | |
| 
 | |
|             RightScrollValue = EtcInfo.right_scroll_bar_info[Page][4];
 | |
|             RightScrollBar = Yosin_ScrollBar(EtcInfo.right_scroll_bar_info[Page][0], EtcInfo.right_scroll_bar_info[Page][1], EtcInfo.right_scroll_bar_info[Page][2], EtcInfo.right_scroll_bar_info[Page][3]);
 | |
|             RightScrollBar.SetParent(this);
 | |
|             RightScrollBar.SetStep(EtcInfo.right_scroll_bar_info[Page][5].tofloat() / 100.0);
 | |
|             RightScrollBar.SetOnChange(function(Rate) {
 | |
|                 ScrollValue = (Rate * RightScrollValue).tointeger();
 | |
|             }.bindenv(this));
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function InitButtonConfig() {
 | |
|         local AchieData = R_Utils.GetScriptFileReader("etc/th_plugin/control.etc");
 | |
|         if (AchieData) {
 | |
|             local DataArr = [];
 | |
|             if (AchieData.Size >= 7) {
 | |
|                 //创建Blob对象
 | |
|                 local IOBUF = Sq_Point2Blob(L_sq_P2I(AchieData.Buffer.C_Object), AchieData.Size);
 | |
|                 local IO = BlobEx(IOBUF.readblob(IOBUF.len()));
 | |
|                 //以5为单步从第二位开始遍历字节
 | |
|                 local i = 2;
 | |
|                 while (true) {
 | |
|                     if (i< AchieData.Size && AchieData.Size - i >= 5) {
 | |
|                         local str = Rindro_Script.UnpackData(IO, i);
 | |
|                         i += 5;
 | |
|                         //城镇编号
 | |
|                         if (str == "[info]") {
 | |
|                             local Data = {};
 | |
|                             while (true) {
 | |
|                                 local Ret = Rindro_Script.UnpackData(IO, i);
 | |
|                                 i += 5;
 | |
|                                 if (Ret == "[/info]") {
 | |
|                                     DataArr.append(Data);
 | |
|                                     break;
 | |
|                                 }
 | |
|                                 if (Ret == "[icon]") {
 | |
|                                     Data.Icon <- {};
 | |
|                                     Data.Icon.Path <- Rindro_Script.UnpackData(IO, i).tolower();
 | |
|                                     i += 5;
 | |
|                                     Data.Icon.Idx <- Rindro_Script.UnpackData(IO, i);
 | |
|                                     i += 5;
 | |
|                                 }
 | |
|                                 if (Ret == "[pos]") {
 | |
|                                     Data.Pos <- {};
 | |
|                                     Data.Pos.x <- Rindro_Script.UnpackData(IO, i);
 | |
|                                     i += 5;
 | |
|                                     Data.Pos.y <- Rindro_Script.UnpackData(IO, i);
 | |
|                                     i += 5;
 | |
|                                 }
 | |
|                                 if (Ret == "[size]") {
 | |
|                                     Data.Size <- {};
 | |
|                                     Data.Size.x <- Rindro_Script.UnpackData(IO, i);
 | |
|                                     i += 5;
 | |
|                                     Data.Size.y <- Rindro_Script.UnpackData(IO, i);
 | |
|                                     i += 5;
 | |
|                                 }
 | |
|                             }
 | |
|                         }
 | |
|                     } else break;
 | |
|                 }
 | |
|             }
 | |
|             ButtonInfo = DataArr;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function InitConfig() {
 | |
|         Info = [];
 | |
|         local PageLst = R_Utils.GetLstArr("etc/th_plugin/info.lst", "etc/");
 | |
|         foreach(Index, Path in PageLst) {
 | |
|             local AchieData = R_Utils.GetScriptFileReader(Path);
 | |
|             if (AchieData) {
 | |
|                 local DataArr = {};
 | |
|                 if (AchieData.Size >= 7) {
 | |
|                     //创建Blob对象
 | |
|                     local IOBUF = Sq_Point2Blob(L_sq_P2I(AchieData.Buffer.C_Object), AchieData.Size);
 | |
|                     local IO = BlobEx(IOBUF.readblob(IOBUF.len()));
 | |
|                     //以5为单步从第二位开始遍历字节
 | |
|                     local i = 2;
 | |
|                     while (true) {
 | |
|                         if (i< AchieData.Size && AchieData.Size - i >= 5) {
 | |
|                             local str = Rindro_Script.UnpackData(IO, i);
 | |
|                             i += 5;
 | |
|                             //城镇编号
 | |
|                             if (str == "[info]") {
 | |
|                                 local Data = {};
 | |
|                                 while (true) {
 | |
|                                     local Ret = Rindro_Script.UnpackData(IO, i);
 | |
|                                     i += 5;
 | |
|                                     if (Ret == "[/info]") {
 | |
|                                         DataArr.rawset(Data.Id, Data);
 | |
|                                         break;
 | |
|                                     }
 | |
|                                     if (Ret == "[id]") {
 | |
|                                         Data.Id <- Rindro_Script.UnpackData(IO, i);
 | |
|                                         i += 5;
 | |
|                                     }
 | |
|                                     if (Ret == "[icon]") {
 | |
|                                         Data.Icon <- {};
 | |
|                                         Data.Icon.Path <- Rindro_Script.UnpackData(IO, i).tolower();
 | |
|                                         i += 5;
 | |
|                                         Data.Icon.Idx <- Rindro_Script.UnpackData(IO, i);
 | |
|                                         i += 5;
 | |
|                                     }
 | |
|                                     if (Ret == "[pos]") {
 | |
|                                         Data.Pos <- {};
 | |
|                                         Data.Pos.x <- Rindro_Script.UnpackData(IO, i);
 | |
|                                         i += 5;
 | |
|                                         Data.Pos.y <- Rindro_Script.UnpackData(IO, i);
 | |
|                                         i += 5;
 | |
|                                     }
 | |
|                                     if (Ret == "[size]") {
 | |
|                                         Data.Size <- {};
 | |
|                                         Data.Size.x <- Rindro_Script.UnpackData(IO, i);
 | |
|                                         i += 5;
 | |
|                                         Data.Size.y <- Rindro_Script.UnpackData(IO, i);
 | |
|                                         i += 5;
 | |
|                                     }
 | |
|                                     if (Ret == "[str]") {
 | |
|                                         Data.Str <- [];
 | |
|                                         while (true) {
 | |
|                                             local strbuffer = Rindro_Script.UnpackData(IO, i);
 | |
|                                             i += 5;
 | |
|                                             strbuffer = Sq_ConvertWideChar(strbuffer, "big5")
 | |
|                                             if (strbuffer == "[/str]") break;
 | |
|                                             Data.Str.append(strbuffer);
 | |
|                                         }
 | |
|                                     }
 | |
|                                 }
 | |
|                             }
 | |
|                         } else break;
 | |
|                     }
 | |
|                 }
 | |
|                 Info.append(DataArr);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
| 
 | |
|     function RegisterWidget(Flag) {
 | |
|         if (!Flag) {
 | |
|             //类型按钮
 | |
|             for (local i = 0; i< ButtonInfo.len(); i++) {
 | |
|                 local Config = ButtonInfo[i];
 | |
|                 local TypeButton = Achievement_TypeButton(Config.Pos.x, Config.Pos.y, Config.Size.x, Config.Size.y, Config.Icon.Path, Config.Icon.Idx);
 | |
|                 TypeButton.Data = {
 | |
|                     id = i,
 | |
|                     BasePosY = Config.Pos.y,
 | |
|                 };
 | |
|                 TypeButton.OnClickEx = function(Button) {
 | |
|                     if (Button.Localtion_Y <= EtcInfo.clicp_pos[1] || Button.Localtion_Y >= EtcInfo.clicp_pos[3]) return;
 | |
|                     Page = Button.Data.id;
 | |
|                     InitAchievement();
 | |
|                     QueryAchievement();
 | |
|                 }.bindenv(this);
 | |
|                 TypeButton.SetCallBackFunc(function(Btn) {
 | |
|                     Btn.Localtion_Y = (Btn.Data.BasePosY - LeftScrollRate * LeftScrollValue).tointeger();
 | |
|                 }.bindenv(this));
 | |
|                 Childrens.append(TypeButton);
 | |
|             }
 | |
|         }
 | |
| 
 | |
| 
 | |
|         //只有第一次的时候注册进度条
 | |
|         if (Flag) {
 | |
|             LeftScrollValue = EtcInfo.left_scroll_bar_info[4];
 | |
|             LeftScrollBar = Yosin_ScrollBar(EtcInfo.left_scroll_bar_info[0], EtcInfo.left_scroll_bar_info[1], EtcInfo.left_scroll_bar_info[2], EtcInfo.left_scroll_bar_info[3]);
 | |
|             LeftScrollBar.SetParent(this);
 | |
|             LeftScrollBar.SetStep(EtcInfo.left_scroll_bar_info[5].tofloat() / 100.0);
 | |
|             LeftScrollBar.SetOnChange(function(Rate) {
 | |
|                 LeftScrollRate = Rate;
 | |
|             }.bindenv(this));
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     //绘制主界面
 | |
|     function DrawMain(obj) {
 | |
|         WindowBackGroundImg.DrawPng(0 + Page, X, Y);
 | |
|         WindowImg.DrawPng(19, X + EtcInfo.closebutton_pos[0], Y + EtcInfo.closebutton_pos[1]); //关闭按钮图标
 | |
|     }
 | |
| 
 | |
|     function DrawInfo() {
 | |
|         if (Info.len() > Page) {
 | |
|             //绘制成就
 | |
|             foreach(InfoObj in Info[Page]) {
 | |
|                 if(Y + InfoObj.Pos.y - ScrollValue < EtcInfo.clicp_pos2[1])continue;
 | |
|                 if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + InfoObj.Pos.x, Y + InfoObj.Pos.y - ScrollValue, InfoObj.Size.x, InfoObj.Size.y)) {
 | |
| 
 | |
|                     for (local i = 0; i< InfoObj.Str.len(); i += 2) {
 | |
|                         local OffsetRate = InfoObj.Str.len() / 2;
 | |
|                         local StrBuffer = format(InfoObj.Str[i], Data[InfoObj.Id].num);
 | |
|                         local StrBuffer2 = InfoObj.Str[i + 1];
 | |
| 
 | |
|                         L_sq_DrawWindow(IMouse.GetXPos() + 32, IMouse.GetYPos() + 60 - (OffsetRate * 44) + (i / 2 * 44), 144, 24, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
 | |
|                         L_sq_DrawCode(StrBuffer, IMouse.GetXPos() + 42, IMouse.GetYPos() + 70 - (OffsetRate * 44) + (i / 2 * 44), (Data[InfoObj.Id].achievement > (i / 2)) ? 0xFFedd568 : 0xFF969696, 1, 1);
 | |
|                         L_sq_DrawCode(StrBuffer2, IMouse.GetXPos() + 42, IMouse.GetYPos() + 88 - (OffsetRate * 44) + (i / 2 * 44), (Data[InfoObj.Id].achievement > (i / 2)) ? 0xFFedd568 : 0xFF969696, 1, 1);
 | |
| 
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function Show(obj) {
 | |
|         DrawMain(obj);
 | |
|         // setClip(X + EtcInfo.clicp_pos[0], Y + EtcInfo.clicp_pos[1], X + EtcInfo.clicp_pos[2], Y + EtcInfo.clicp_pos[3]);
 | |
|         //左侧裁切
 | |
|         setClip(X + EtcInfo.clicp_pos[0], Y + EtcInfo.clicp_pos[1], X + EtcInfo.clicp_pos[2], Y + EtcInfo.clicp_pos[3]);
 | |
|         LenheartNewUI_Windows.Show(obj);
 | |
|         releaseClip(); //裁切结束
 | |
| 
 | |
|         //右侧裁切
 | |
|         setClip(X + EtcInfo.clicp_pos2[0], Y + EtcInfo.clicp_pos2[1], X + EtcInfo.clicp_pos2[2], Y + EtcInfo.clicp_pos2[3]);
 | |
|         LenheartNewUI_Windows.Show(obj);
 | |
|         releaseClip(); //裁切结束
 | |
|         DrawInfo();
 | |
|     }
 | |
| 
 | |
|     function DrawAItem(InfoObj) {
 | |
|         local Button = Achievement_TypeButton(InfoObj.Pos.x, InfoObj.Pos.y, InfoObj.Size.x, InfoObj.Size.y, InfoObj.Icon.Path, InfoObj.Icon.Idx);
 | |
|         Button.Data = InfoObj;
 | |
|         Button.SetCallBackFunc(function(Button) {
 | |
|             local InfoObj = Button.Data;
 | |
|             Button.Localtion_X = InfoObj.Pos.x;
 | |
|             Button.Localtion_Y = InfoObj.Pos.y - ScrollValue;
 | |
|         }.bindenv(this));
 | |
|         Button.OnClickEx = function(Button) {
 | |
|             if (IsOther) return;
 | |
|             local T = {
 | |
|                 op = 20091005,
 | |
|                 cjid = Page,
 | |
|                 id = Button.Data.Id
 | |
|             }
 | |
|             SendPackEx(T);
 | |
|         }.bindenv(this);
 | |
|         Childrens.append(Button);
 | |
|     }
 | |
| 
 | |
|     RegisFlag = false;
 | |
|     //逻辑入口
 | |
|     function Proc(obj) {
 | |
|         LenheartNewUI_Windows.SyncPos(X, Y);
 | |
| 
 | |
| 
 | |
|         local RootTab = getroottable();
 | |
|         if (RootTab.rawin("L_PlayerEach_Obj") && RegisFlag == false) {
 | |
|             RegisFlag = true;
 | |
|             RootTab["L_PlayerEach_Obj"].AddEachForCommon("查看收集信息", function(SThis) {
 | |
|                 //关闭按钮
 | |
|                 local ApplyEngagementButton = LenheartNewUI_Each_BaseButton(0, 0, 100, 21, "interface2/popup_menu/popup_back.img", 3);
 | |
|                 ApplyEngagementButton.Icon = "interface2/popup_menu/popup_icon_cn.img";
 | |
|                 ApplyEngagementButton.IconIdx = 58;
 | |
|                 ApplyEngagementButton.Str = "查看收集信息";
 | |
|                 ApplyEngagementButton.OnClick = function(Button) {
 | |
|                     if (L_Sq_GetPlayerEachName().len() <= 0 || L_Sq_GetPlayerEachName() == L_Sq_GetObjectName(sq_GetMyMasterCharacter())) {
 | |
| 
 | |
|                     } else {
 | |
|                         OtherName = L_Sq_GetPlayerEachName();
 | |
|                         Visible = true;
 | |
|                         InitAchievement();
 | |
|                         QueryAchievement();
 | |
|                     }
 | |
|                     Button.Parent.CloseAllEach();
 | |
|                 }.bindenv(this);
 | |
|                 ApplyEngagementButton.SetCallBackFunc(function(Button) {})
 | |
|                 SThis.AddChild(ApplyEngagementButton);
 | |
|             }.bindenv(this));
 | |
|         }
 | |
|     }
 | |
| 
 | |
| 
 | |
|     //override
 | |
|     //鼠标滚轮事件回调
 | |
|     function OnMouseWheel(Flag, MousePos_X, MousePos_Y) {
 | |
| 
 | |
|         if (MousePos_X > (X + 205)) {
 | |
|             // if (Flag) {
 | |
|             //     if (ScrollValue > 0) ScrollValue -= 35;
 | |
| 
 | |
|             // }
 | |
|             // if (!Flag) {
 | |
|             //     if (ScrollValue< ScrollValueMax) ScrollValue += 35;
 | |
|             // }
 | |
|             if (Flag) RightScrollBar.DoStep(-1);
 | |
|             if (!Flag) RightScrollBar.DoStep(1);
 | |
|         } else {
 | |
|             if (Flag) LeftScrollBar.DoStep(-1);
 | |
|             if (!Flag) LeftScrollBar.DoStep(1);
 | |
|         }
 | |
| 
 | |
|         //调用原生方法
 | |
|         LenheartNewUI_Windows.OnMouseWheel(Flag, MousePos_X, MousePos_Y);
 | |
|     }
 | |
| 
 | |
|     //override
 | |
|     //鼠标左键按下回调
 | |
|     function OnMouseLbDown(MousePos_X, MousePos_Y) {
 | |
|         if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + EtcInfo.closebutton_pos[0], Y + EtcInfo.closebutton_pos[1], EtcInfo.closebutton_pos[2], EtcInfo.closebutton_pos[3])) {
 | |
|             CloseWindow();
 | |
|         }
 | |
| 
 | |
|         LenheartNewUI_Windows.OnMouseLbDown(MousePos_X, MousePos_Y);
 | |
|     }
 | |
| 
 | |
|     function OpenCallBack() {
 | |
|         Visible = true;
 | |
|         IsOther = false;
 | |
|         OtherName = null;
 | |
|         InitAchievement();
 | |
|         QueryAchievement();
 | |
|     }
 | |
| }
 | |
| 
 | |
| L_Windows_List <- [];
 | |
| getroottable().rawdelete("LenheartPluginsInitFlag");
 | |
| getroottable().rawdelete("EventList_Obj")
 | |
| getroottable().rawdelete("Achievement_Obj");
 | |
| 
 | |
| function Lenheart_Achievement_Fun(obj) {
 | |
|     local RootTab = getroottable();
 | |
|     if (!RootTab.rawin("Achievement_Obj")) {
 | |
|         RootTab.rawset("Achievement_Obj", true);
 | |
| 
 | |
|         local Info = Rindro_Script.GetFileData("etc/th_plugin/etc.etc", function(DataTable, Data) {
 | |
|             while (!Data.Eof()) {
 | |
|                 local Str = Data.Get();
 | |
|                 if (Str == "[window pos]") {
 | |
|                     DataTable.window_pos <- [Data.Get(), Data.Get(), Data.Get(), Data.Get(), Data.Get()];
 | |
|                 }
 | |
|             }
 | |
|         }.bindenv(this));
 | |
|         local window_Info = Info.window_pos;
 | |
| 
 | |
|         local Win = LenheartNewUI_CreateWindow(AchievementC, "成就系统窗口", window_Info[0], window_Info[1], window_Info[2], window_Info[3], window_Info[4]);
 | |
|         EventList_Obj.AddEvent("成就系统", 118, Win);
 | |
|     }
 | |
| }
 | |
| 
 | |
| getroottable()["LenheartFuncTab"].rawset("AchievementFuncN", Lenheart_Achievement_Fun); |