2025-05-27 21:24:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/*
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								文件名:Achievement.nut
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								路径:Project/Achievement/Achievement.nut
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								创建日期:2025-02-23	08:37
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								文件用途:成就系统
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*/
							 
						 
					
						
							
								
									
										
										
										
											2025-06-06 21:58:18 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								return;
							 
						 
					
						
							
								
									
										
										
										
											2025-05-29 00:10:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class Achievement_TypeButton extends LenheartNewUI_BaseButton {
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 21:24:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-05-29 00:10:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    function _typeof() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return "Achievement_TypeButton";
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 21:24:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class AchievementC extends LenheartNewUI_Windows {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    //调试模式
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // DeBugMode = true;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    //不是窗口
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // NoWindow = true;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    //是否可见
							 
						 
					
						
							
								
									
										
										
										
											2025-06-06 21:58:18 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // Visible = false;
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 21:24:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    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;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-05-29 00:10:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    //左侧滚动条对象
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    LeftScrollBar = null;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    //左侧滚轮值
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    LeftScrollRate = 0;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    LeftScrollValue = 400;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    //右侧滚动条对象
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    RightScrollBar = null;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    //右侧滚轮值
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    RightScrollRate = 0;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    RightScrollValue = 400;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 21:24:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    //查询成就回包
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    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);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-06-06 21:58:18 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 21:24:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    //查询成就
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function QueryAchievement() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        local T = {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            op = 20091001,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            cjid = Page,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            cid2 = OtherName ? OtherName : "-1"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SendPackEx(T);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
							 
						 
					
						
							
								
									
										
										
										
											2025-05-29 00:10:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        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));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 21:24:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        Childrens = [];
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        InitButtonConfig();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //注册控件
							 
						 
					
						
							
								
									
										
										
										
											2025-05-29 00:10:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        RegisterWidget(true);
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 21:24:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        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() {
							 
						 
					
						
							
								
									
										
										
										
											2025-05-29 00:10:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        for (local i = 0; i< Childrens.len(); i++) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if (typeof Childrens[i] == "Achievement_TypeButton") {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                Childrens.remove(i);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                i--;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //这里要手动移除右边的滚动条
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if (RightScrollBar) RightScrollBar.RemoveSelf();
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 21:24:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-05-29 00:10:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ScrollValueMax = 0;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        RegisterWidget(false);
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 21:24:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if (Info.len() > Page) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            //绘制成就
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            foreach(InfoObj in Info[Page]) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if (InfoObj.Pos.y - 320 > ScrollValueMax) ScrollValueMax = InfoObj.Pos.y - 320;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                DrawAItem(InfoObj);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }
							 
						 
					
						
							
								
									
										
										
										
											2025-05-29 00:10:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            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));
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 21:24:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    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);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-05-29 00:10:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    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) {
							 
						 
					
						
							
								
									
										
										
										
											2025-05-29 21:24:08 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    if (Button.Localtion_Y <= EtcInfo.clicp_pos[1] || Button.Localtion_Y >= EtcInfo.clicp_pos[3]) return;
							 
						 
					
						
							
								
									
										
										
										
											2025-05-29 00:10:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    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);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 21:24:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-05-29 00:10:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        //只有第一次的时候注册进度条
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        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));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 21:24:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    //绘制主界面
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    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]) {
							 
						 
					
						
							
								
									
										
										
										
											2025-05-29 21:24:08 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if(Y + InfoObj.Pos.y - ScrollValue < EtcInfo.clicp_pos2[1])continue;
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 21:24:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                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);
							 
						 
					
						
							
								
									
										
										
										
											2025-05-29 00:10:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // setClip(X + EtcInfo.clicp_pos[0], Y + EtcInfo.clicp_pos[1], X + EtcInfo.clicp_pos[2], Y + EtcInfo.clicp_pos[3]);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //左侧裁切
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 21:24:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        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(); //裁切结束
							 
						 
					
						
							
								
									
										
										
										
											2025-05-29 00:10:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //右侧裁切
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        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(); //裁切结束
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 21:24:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        DrawInfo();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function DrawAItem(InfoObj) {
							 
						 
					
						
							
								
									
										
										
										
											2025-05-29 00:10:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        local Button = Achievement_TypeButton(InfoObj.Pos.x, InfoObj.Pos.y, InfoObj.Size.x, InfoObj.Size.y, InfoObj.Icon.Path, InfoObj.Icon.Idx);
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 21:24:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        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) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-05-29 00:10:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if (MousePos_X > (X + 205)) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // if (Flag) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            //     if (ScrollValue > 0) ScrollValue -= 35;
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 21:24:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-05-29 00:10:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            // }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // 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);
							 
						 
					
						
							
								
									
										
										
										
											2025-05-27 21:24:22 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //调用原生方法
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        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);