111
This commit is contained in:
79
Plugins/AvatarShape/Avata
Normal file
79
Plugins/AvatarShape/Avata
Normal file
@@ -0,0 +1,79 @@
|
||||
1*ä ‹â½´ï”›<O€arc€]lgrc8nsvìͱãȈPRfkp}1Atc~crQjore5Ctcxgt]javg<xur絼æ§ä¦£P4:47;2371M?::64攉îŶý–¢ë„’<*5
|
||||
51BhVtyð<EFBFBD>Ÿë ¸ë·½gzc}}$Gxo~axUbctcR€q$cz~onbu*Daqkm}Hxcq^sun*13&"ydj&";7$&膋阰ã’<C3A3>ý©º"$;/*"\㟚ð¤<C3B0>"*7-&"Wï<57>–誉$&/;"$Gpgê´<C3AA>鞪ìͱãȈ&";7$&ç¼ÇåШ*"-;"*믮縰
|
||||
}$&"*qb€"K"nsnfE$51Ydjã±·ê±§"$&"]~arg*G$6=*13䎇뒼éˆÀ憃$&"*MpeeOnhnc"=&hovwc=*13ý„·ï‹É蓊欞$&"*DurvyxH<78>powia"K"fgn}o?&19芃暋甮䗂ðžª"$&"PcwcH€cmc"K"nsnfE
|
||||
"$&"Mwrq{MpeeOnhnc"=&hovwc=*13þ‰¨ï®°æ·‹ëˆ»ã‰¿ä—‚ðžª"$&"Mwrq{MpeeCnhgve&?*xuzn5"35ê<35>¬å¼œî»‰ý„·ï‹É蓊欞Oxiþ¹¹ï¾‚"$&"Mwrq{DurvyxNgoc"=&psvpI"91ì<31>¬ã¸šâ»‡é‚Ïç<C38F>Åæ“Šä¨ 㒛髶"$&"Mwrq{MpeePrgoc"=&psvpI"91ì<31>¬ã¸šâ»‡é‚Ïç<C38F>Åæ“Šä¨ GpgéÀ”癹
|
||||
"*"$Aw}~s{Efkgyz*G$|wfv?&19ê‹À缜èϋᄹ㉵ð•žè¬¦\㟚ð¤<C3B0>"$&"Mwrq{Mpee{$K"|pz=*13þ‰¨ï®°æ·‹ëˆ»ã‰¿ä—‚ðžª[ã§”ä¢<C3A4>
|
||||
$&"*TeavCxbzg*G$dcf}eI"91戮ム䗂ðžª"$&"`ogrDs~xup\cmc"K"nsnfE$51䄰ブ顲
|
||||
"*"$Xgm~BgucCnhgve&?*xuzn5"35è<35>¶å‡žOxiþ¹¹ï¾‚"$&"`ogrH€cmc"K"nsnfE$51秞㌢ð„‡è†‹é˜°áœˆä„¦ï<C2A6>ªêº<C3AA>ë’ªOxiý¾”ï“Í"$&"`ogrz*G$|wfv?&19ð‚ºç<C2BA>¦\㟚ð¤<C3B0>"$&"`ogr{*G$|wfv?&19ð‚ºç<C2BA>¦Y㟚ð¤<C3B0>
|
||||
*"$&Ds~xup\cmc"K"nsnfE$51ä–‰ÿ”¼ï”›é¡²
|
||||
"*"$Ž"K"nsnfE$51Rï<52>–誉
|
||||
"*"$<24>"K"nsnfE$51Wï<57>–誉
|
||||
"*"$Hc}oA|kdkpc"K"nsnfE$51ⲇý–¢Cnê±±å̆$&"*yibvb"=&psvpI"91啱ᄹ㉵ï®Ë縰
|
||||
"*"$zg|ix~"K"nsnfE$51㑳ý„·ï‹É륚åШ
|
||||
"*"$[qpl$K"|pz=*13ÿ¾ªð¤<C3B0>繻췣$&"*13ä Žë„¦ç<C2A6>Çæ“²$&"*ms|u~tuavyt,}Qpl0&iPxrq|Xa{g&"kn.*iY:"aCnhgve:"aYibvb6$}Ncxkrj&"kHc}oFxc{o)&}$&"*"$&"ydj&?*iShl5
|
||||
&"*"$&"*DurvyxNgoc"=&iPxrq|Xa{g5
|
||||
&"*"$&"*z$K"aZ?*"$&"*"$<24>"K"ko=$&"*"$&"PcwcC|kfnc"=&iOxidkfo?*"$&"*"$<24>kn~l&?*i[f~j?*"$&"*"$zg|ix~"K"kZg|ix~=$&"*"$&"PcwcH€cmc"K"kHc}oFxc{o?*"$&"*"$h**kcv€qsrvodpc*'8rgygx,(OywcQpleav0+)&Oydj&?*iertyqxrcpve>+U$Muw}oShlcmx(_5
|
||||
&"*"}*"$&19é¿®ç‚À暋甮*"$&hsxgrkyx$Qjyy,?"u
|
||||
&"*"$&"*kf&*MviamCxbzg'"35è’±å–¨ãÆ„ã’¹é‚Ïç<C38F>Åæ“Šä¨ *"$&"*"$‰"$&"*"$&"*"$h**iqNPNs<4E>p"+$$(*]xgvc"=K":+$51䖉⺅ﻤ랸åϸ䎇뒼箎èÐ<C3A8>ãÆ¹þ·±éŠ´èŠƒ
|
||||
"*"$&"*"$&"*…
|
||||
"*"$&"*"$&"*"$&"]~arg*G$7=*13䎇똼êɥ僧䖉⺅銴芃
|
||||
"*"$&"*"$&"*"$&"%5yI"$&"*"$&"*"$‹"$&"*"$&"*"$h**!uFDHuy|*)&($"Wrc~o$K?*3)&19ð<39>Ÿæ²•åͨ瞮㻴膋阰㮈⼜ïÀÏê³¹ë ¸ä‚<C3A4>*"$&"*"$&"*"*"$&"*"$&"*"$&"*]xgvc"=&25"35膋钰âÁŸã‡£ïÀÏê³¹ë ¸ä‚<C3A4>*"$&"*"$&"*"$&"*7-<2D>=$&"*"$&"*"$&$&"*"$&"‹
|
||||
*"$&"*"$h**Gsu~qmAngmoCppve?"91殱㒦㾊ê<C2B5>¬å¼œî»‰ý„·ï‹É蓊欞$&"*"$&"u
|
||||
&"*"$&"*"$&"gp$>k}VBBqqx,?+*13䎇籰钰㻶⺞ð<C5BE>Ÿë ¸å¢†î¼Žã¾·êµÍéˆÀ憃$&"*"$&"*"$&}$&"*"$&"*"$&"*"$h**!Hw~~s|Fwxa{km+$RaNta<74>U~cyGpg*shl&"Gsu~qmAngmoGpgpizg&"Gsu~qmAngmoŽ.*MuqvywGzkmuy:"Mwrq{MpeePrgoc6$Aw}~s{Ds~xup\cmc+5
|
||||
&"*"$&"*"$&"*"$&gf}e&ViNrgyN{ngogmA|k"qb€.*MuqvywGzkmuA|kdkpc.*MuqvywGzkmu|:"Mwrq{Mpee{0&Es}xuoPxrq|Xa{g'E
|
||||
"*"$&"*"$&"*‡
|
||||
"*"$&"*"}$&"*"$&"gp$>TcmxCppve?"91åʂ㒳䄦ï<C2A6>ªè“Šæ¬žä™¶*"$&"*"$‰"$&"*"$&"*"$h**,uGxRce~*)&($"!uFDHuy|*)?"v†$>k}KnXgm~,?"$0$'Es}xuoMviamCxbzg'+$51ã°‚ä –ëÀ¦èª‰æˆ®ãƒ ýœŽð›´çŠ›$&ç·ÀèΖ䴡䞇é‚Ïç<C38F>Å밆䙶゗
|
||||
&"*"$&"*"$&"u
|
||||
&"*"$&"*"$&"*"$&19KMuw}o.Qg~Wssuc^aqm">8?=$&"*"$&"*"$&"*"$h**!Hw~~s|Fwxa{km+$RaNta<74>U~cyGpg*shl&"Rce~DaqgOxidkfo0&TcmxŽ.*Teavw6$Xgm~Fxc{o0&TcmxHw~~s|Powe?=$&"*"$&"*"$&"*"$cn}o$RaNta<74>Fwxa{kmCn*ydj:"`ogrDo}eGpgpizg&"Rce~z0&Tcmx<6D>.*TeavPxrq|Xa{g'E
|
||||
"*"$&"*"$&"*‡
|
||||
"*"$&"*"}*"$&"*"$h**!uGxRce~*)?"91å¤„ä¨ ÿ¾ªð¤<C3B0>èÀ£æª‹ä„°ãƒ–éš‚è‘À军$&"*"$&"u
|
||||
&"*"$&"*"$&"91I[qs}e<Uc~Muw}oXgue*4?=$&"*"$&"*"$&kd",'Ds~xupN{ngogm)&ViNrgy]~a<>C|k,udh6$Hc}oA|kdkpc.*z0&{&"BgucPrgoc6$Hw~~s|Powe?=$&"*"$&"*"$&gf}e&ViNrgyN{ngogmA|k"qb€.*DaqgOxidkfo0&z&"y:"Pxrq|Xa{g'E
|
||||
"*"$&"*"}*"$&
|
||||
"*"$51⸾ý¿¼ê‹À缜èϋᄹ㉵ð•žè¬¦
|
||||
"*"$dw|mxq|"WcvMwrq{MpeeOnhnc*buqf6$}Ds~xup\cmc.*i\:"a[0&iOxidkfo0&iDta{g'"*"$&"*"$Aw}~s{EfkgyG|dpc"K"buqfE$51≪㰘é<C5B8>»å<C2BB>½äŸŒä –
|
||||
&"*"$&"*MuqvywGzkmuA|kdkpc"K"kGpgpizg5"35ê<35>¬å¼œî»‰ý„·ï‹É蓊欞Oxiþ¹¹ï¾‚"$&"*"$&Es}xuoPxrq|Xa{g*G$}Ds~xup\cmc=*13þ‰¨ï®°æ·‹ëˆ»ã‰¿ä—‚ðžªçš—ë½²$&"*"$&"Mwrq{MpeePrgoc"=&iDta{g5"35ê<35>¬å¼œî»‰ý„·ï‹É蓊欞Oxiý¾”ï“Í"$&"*"$&Es}xuoMviamr"=&iRE$51≪㰘é<C5B8>»å<C2BB>½äŸŒä –Z嫒䢋*"$&"*"$Aw}~s{Efkgy{*G$}[5"35ê<35>¬å¼œî»‰ý„·ï‹É蓊欞Wï<57>–誉
|
||||
"*"$‹
|
||||
&"*"35ê¼Èë˰䄰ブð•žè¬¦
|
||||
"*"$dw|mxq|"Wcv`ogrG|dpc*pqsz.*iBsv~qn\c{o0&iR6$}[&"kGpgpizg&"kDtowe?"u
|
||||
&"*"$&"*TeavCxbzg*G$hqyv?&19ð‚ºç<C2BA>¦æ“Šä¨ *"$&"*"$Xgm~Bsv~qn\c{o$K"aDurvyxNgocE$51䄰ブ顲
|
||||
"*"$&"*"Rce~DaqgOxidkfo$K"aCnhgveI"91戮ムGpg껵çÌŽ
|
||||
"*"$&"*"Rce~Prgoc"=&iDta{g5"35ë«¨å ªä‚<C3A4>䎇뒼阎戮ムþ²<C3BE>阾C|këʘ㑻*"$&"*"$Xgm~|&?*i\I"91戮ムn竒榉$&"*"$&"`ogr{*G$}[5"35è<35>¶å‡žWï<57>–誉
|
||||
"*"$‹
|
||||
&"*"35ê¼Èë˰㌬ä‚<C3A4>ð<EFBFBD>Ÿë ¸
|
||||
"*"$dw|mxq|"WcvMviamCxbzg"dsun'"*"$&"*"$Hw~~s|Fwxa{km"=&dyqpI"$&"‹
|
||||
*"$&19ê®Ìé˸눻㉿䗂ðžª"$&"dnavgqn&Uc~GzkmuE|dfo,hqyv)&}$&"*"$&"MviamCxbzg*G$hqyv?*"$&
|
||||
"*"$51䄰ブ銴芃
|
||||
"*"$dw|mxq|"iqK|Teav"+$‰"$&"*"$&kd",qsiKw_p~orqgm~Rce~*I[qs}e<Ic~\Vq}*):"GWssuc8KcvWRsq*'6$3.*?0&z&"y:"qkhrj&"pcpa~l?+*terw€x$rtso?*"$&"*"$cn}o$xg~r|"dcpqg5
|
||||
&"*"}*"$&19ﻤ랸暋îº<C3AE>ýŒ´ð„‡"$&"dnavgqn&k}VBBqqx,?"u
|
||||
&"*"$&"*kf&*g}I|Tcmx>+*0&&Oydj<Np"=K"?+$xg~r|"~tuc=$&"*"$&"cvwc"€oxst|"fgn}o?*"$&$&"*13㹤똼綻쳹ጶä‚<C3A4>
|
||||
&"*"fspm~iup*kwZDSr,?"u
|
||||
&"*"$&"*kf&*g}I|Tcmx>+*0&&Oydj<Np"=K":+$xg~r|"~tuc=$&"*"$&"cvwc"€oxst|"fgn}o?*"$&
|
||||
"*"$51㹦ÿ–¼ï<C2BC>“ç<E2809C>Åë ¸ä‚<C3A4>*"$&hsxgrkyx$uFDAavg€e>+*…
|
||||
"*"$&"*"id""kw_p`ogr*'"&$"[qb€0FdEtg|~)&tc~uxp*~rsg5
|
||||
&"*"$&"*opqg*terw€x$dcf}eI"$&"‹
|
||||
‹
|
||||
ano}w&Ctcxgt]javgQknbqq"eŽvcxhq"Pcwe}Nrgy^qsz"u
|
||||
&"*"35ç¼ÇåШ$&"*Yibvb"=&psvpI"$&"91鹚㼦*"$&Jckk~v*G$|wfv?*"$&19ð¤<C3B0>밚鹚㼦*"$&Vg~pcJ*G$|wfv?$&"*13n竒榉$&"*Z$K"|pz=$&"*Dcn"K"nsnfE
|
||||
"*"$51Wï<57>–誉
|
||||
"*"$o"K"nsnfE
|
||||
"*"$HaW"=&psvpI
|
||||
&"*"Y[qs}eQy*G$rtso?*"$&FcDu}Oyne&?*pazucE
|
||||
"$&"[qb€"K"nsnfE
|
||||
"*"$[aRrsq"K"nsnfE
|
||||
"*"$[aWrsq"K"nsnfE
|
||||
|
||||
&"*"gup}~rse~qr>iR6$}[&"kmkn~l:"aJeib~0&i^kxzgB+$‰"$&"*"$&19ï®Ë縰
|
||||
"*"$&"*"[f~j$K"aYibvbE
|
||||
"*"$&"*"35륚åШ$&"*"$&"Boi}j~"=&iBoi}j~E
|
||||
"*"$&"*"35誉騚絜㼤
|
||||
&"*"$&"*^irncJ$K"a^irncJ?$&"*"$&"91\㟚ð¤<C3B0>"$&"*"$&Z*G$}Z5
|
||||
&"*"$&"*13o竒榉$&"*"$&"W"=&iWE
|
||||
"$&"*"$&kd",}g~tsuv~cbzg"+.xcqkn>$[quqgYdjce~$)?"[qb€"K"kcv€qsrvodpc*'e"[qs}eUdhogr$kE
|
||||
"*"$‹
|
||||
&"*"35ê¼Èå¼œçÆ¤ä¢<C3A4>ë„ÉêÌ“
|
||||
"*"$dw|mxq|"PueeWssuc*)&}$&"*"$&"gp$>uaIqK|~exucmxXgm~,_Oywc0AoxnRy},?.*KMuw}o.]g~[Tuu"+0&3&"1:"R6$o.*Yibvb6$^ggilr+'"*"$&"*"$&"*"I[qs}e<Nymo[qs}eAngmo>+5
|
||||
&"*"$&"*"$&"WWssuc]{&?*pazucE
|
||||
"*"$&"*"}&gf}e&}$&"*"$&"*"$&kd",oOywcUq"=K"dcpqg*0&&uaIqK|~exucmxXgm~,_Oywc0AoxnRy},?.*KMuw}o.]g~[Tuu"+0&3&"1:":6$6.*:46.*@46+'"*"$&"*"$&"*"$&"*KMuw}o.Xgfoaqg[quqgMviam"+?*"$&"*"$&"*"$&"*[Muw}oW<6F>"K"xxwcE
|
||||
"*"$&"*"$&"*‡
|
||||
"*"$&"*"}$&"*‡
|
||||
"$&"91ì¼À㸚ý¬‘ï“¡è… å ªç‚¿þÀŸ
|
||||
416
Plugins/AvatarShape/AvatarShape.nut
Normal file
416
Plugins/AvatarShape/AvatarShape.nut
Normal file
@@ -0,0 +1,416 @@
|
||||
/*
|
||||
文件名:AvatarShape.nut
|
||||
路径:Plugins/AvatarShape/AvatarShape.nut
|
||||
创建日期:2023-05-17 18:02
|
||||
文件用途:
|
||||
*/
|
||||
|
||||
//HudPro按钮类
|
||||
class AvatarShapePro extends BasicsDrawTool // obj -- 按钮名称 -- X坐标 -- Y坐标 -- Ani调用路径 -- 宽度 -- 高度
|
||||
{
|
||||
obj = null; //Obj对象
|
||||
State = 0; //按钮状态
|
||||
ClickEnble = false; //点击效果
|
||||
ButtonDynamic = false; //动态按钮效果
|
||||
BaseFrame = null;
|
||||
|
||||
CustomClickEnble = false; //自定义点击效果
|
||||
CustomClickAnifile = null; //自定义点击效果Ani路径
|
||||
CustomButtonName = null; //自定义点击效果名称
|
||||
CustomClickFrame = null; //自定义点击效果Ani编号
|
||||
CustomClickx = null; //自定义点击效果X坐标
|
||||
CustomClicky = null; //自定义点击效果Y坐标
|
||||
|
||||
|
||||
RectEnble = false; //悬停效果
|
||||
RectButtonName = null; //悬停名称
|
||||
RectBaseAnifile = null; //悬停Ani路径
|
||||
RectFrame = null; //非动态按钮的悬停调用Ani编号
|
||||
Rectx = null; //悬停X坐标
|
||||
Recty = null; //悬停Y坐标
|
||||
|
||||
|
||||
ButtonName = null; //按钮名称
|
||||
x = null; //X坐标
|
||||
y = null; //Y坐标
|
||||
BaseAnifile = null; //调用Ani路径
|
||||
width = null; //可点击宽度
|
||||
length = null; //可点击高度
|
||||
|
||||
Mobj = null; //鼠标对象
|
||||
//构造函数
|
||||
constructor(gObj, gButtonName, gX, gY, gAnifile, gWidth, gLength, gBaseFrame) {
|
||||
obj = gObj;
|
||||
ButtonName = gButtonName;
|
||||
x = gX;
|
||||
y = gY;
|
||||
BaseAnifile = gAnifile;
|
||||
width = gWidth;
|
||||
length = gLength;
|
||||
BaseFrame = gBaseFrame;
|
||||
if (getroottable().rawin("MouseObject")) Mobj = getroottable()["MouseObject"];
|
||||
}
|
||||
//绘制按钮
|
||||
function Show() {
|
||||
if (ClickEnble) //是否开启点击效果
|
||||
{
|
||||
if (isLBDown() && State == 0) //按下左键并且按钮处于弹起状态
|
||||
{
|
||||
State = 1; //按键进入按下状态
|
||||
++y;
|
||||
}
|
||||
if (!isLBDown() && State == 1) //按下左键并且按钮处于弹起状态
|
||||
{
|
||||
State = 0; //按键进入弹起状态
|
||||
--y;
|
||||
}
|
||||
}
|
||||
|
||||
if (CustomClickEnble) //是否开启自定义点击效果
|
||||
{
|
||||
if (isLBDown()) //按下左键并且按钮处于弹起状态
|
||||
{
|
||||
if (!ButtonDynamic) T_DrawStayAni(obj, CustomClickAnifile, CustomClickx, CustomClicky, CustomClickFrame, CustomButtonName);
|
||||
else T_DrawDynamicAni(obj, CustomClickAnifile, CustomClickx, CustomClicky, CustomButtonName);
|
||||
}
|
||||
}
|
||||
|
||||
if (RectEnble) //开启悬停效果时
|
||||
{
|
||||
if ((isInRect() && !isLBDown()) || (isInRect() && !CustomClickEnble)) //如果鼠标悬停的时候 并且没有点击的时候
|
||||
{
|
||||
//IMouse.SetMouseTask(44);
|
||||
if (!ButtonDynamic) T_DrawStayAni(obj, RectBaseAnifile, Rectx, Recty, RectFrame, RectButtonName);
|
||||
else T_DrawDynamicAni(obj, RectBaseAnifile, Rectx, Recty, RectButtonName);
|
||||
}
|
||||
}
|
||||
if (!isInRect()) //如果鼠标没有悬停的时候
|
||||
{
|
||||
//IMouse.SetMouseTask(0);
|
||||
if (!ButtonDynamic) T_DrawStayAni(obj, BaseAnifile, x, y, BaseFrame, ButtonName);
|
||||
else T_DrawDynamicAni(obj, BaseAnifile, x, y, ButtonName);
|
||||
}
|
||||
}
|
||||
|
||||
//设置自定义点击效果
|
||||
function SetCustomClickEnble(bool, gButtonName, gX, gY, gAnifile, gFrame) {
|
||||
CustomClickEnble = bool; //自定义点击效果
|
||||
CustomClickAnifile = gAnifile; //自定义点击效果Ani路径
|
||||
CustomButtonName = gButtonName; //自定义点击效果名称
|
||||
CustomClickFrame = gFrame; //自定义点击效果Ani编号
|
||||
CustomClickx = gX; //自定义点击效果X坐标
|
||||
CustomClicky = gY; //自定义点击效果Y坐标
|
||||
}
|
||||
|
||||
//设置悬停效果
|
||||
function SetRectEnble(bool, gButtonName, gX, gY, gAnifile, gFrame) {
|
||||
RectEnble = bool; //悬停效果
|
||||
RectButtonName = gButtonName; //悬停名称
|
||||
RectBaseAnifile = gAnifile; //悬停Ani路径
|
||||
RectFrame = gFrame; //非动态按钮的悬停调用Ani编号
|
||||
Rectx = gX; //悬停X坐标
|
||||
Recty = gY; //悬停Y坐标
|
||||
}
|
||||
|
||||
//设置动态按钮
|
||||
function SetClickEnble(bool) {
|
||||
ButtonDynamic = bool;
|
||||
}
|
||||
|
||||
//设置点击效果
|
||||
function SetClickEnble(bool) {
|
||||
ClickEnble = bool;
|
||||
}
|
||||
|
||||
//悬停状态
|
||||
function isInRect() {
|
||||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 5, 5, x, y, width, length)) return true;
|
||||
else return false;
|
||||
}
|
||||
//左键按下状态
|
||||
function isLBDown() {
|
||||
if (isInRect() && Mobj.Lb == 1) return true;
|
||||
else return false;
|
||||
}
|
||||
//左键弹起状态
|
||||
function isLBUp() {
|
||||
if (isInRect() && Mobj.Lb == 0) return true;
|
||||
else return false;
|
||||
}
|
||||
|
||||
//左键单击状态
|
||||
function isLBActive() {
|
||||
if (isInRect() && Mobj.LbEvent) return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
|
||||
class AvatarShapeWindow extends BasicsDrawTool {
|
||||
//宽度
|
||||
Width = null;
|
||||
//高度
|
||||
Height = null;
|
||||
//标题高度
|
||||
TitleH = null;
|
||||
|
||||
//X坐标
|
||||
X = null;
|
||||
B_X = null;
|
||||
//Y坐标
|
||||
Y = null;
|
||||
B_Y = null;
|
||||
|
||||
YMouseSw = true;
|
||||
DeBugMode = false;
|
||||
|
||||
Mobj = null;
|
||||
M_Xpos = null;
|
||||
M_Ypos = null;
|
||||
|
||||
|
||||
constructor(gX, gY, gWidth, gHeight, gTitleH) {
|
||||
//宽度
|
||||
Width = gWidth;
|
||||
//高度
|
||||
Height = gHeight;
|
||||
//标题高度
|
||||
TitleH = gTitleH;
|
||||
|
||||
//X坐标
|
||||
X = gX;
|
||||
//Y坐标
|
||||
Y = gY;
|
||||
|
||||
if (getroottable().rawin("MouseObject")) Mobj = getroottable()["MouseObject"];
|
||||
}
|
||||
|
||||
//设定鼠标逻辑
|
||||
function LockMouse() {
|
||||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X, Y, Width, Height)) {
|
||||
IMouse.LockMouseClick();
|
||||
YMouseSw = false;
|
||||
} else {
|
||||
if (YMouseSw == false && sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, 0, 0, 800, 600)) {
|
||||
IMouse.ReleaseMouseClick();
|
||||
YMouseSw = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//设定窗口拖动逻辑
|
||||
function MoveWindow() {
|
||||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X, Y, Width, TitleH)) {
|
||||
|
||||
if (Mobj.Lb == 1) {
|
||||
if (!M_Xpos) M_Xpos = IMouse.GetXPos(); //原始鼠标位置数据
|
||||
if (!M_Ypos) M_Ypos = IMouse.GetYPos();
|
||||
if (!B_X) B_X = X; //原始窗口位置
|
||||
if (!B_Y) B_Y = Y;
|
||||
|
||||
X = B_X - (M_Xpos - IMouse.GetXPos());
|
||||
Y = B_Y - (M_Ypos - IMouse.GetYPos());
|
||||
|
||||
} else if (Mobj.Lb == 0) {
|
||||
M_Xpos = null;
|
||||
M_Ypos = null;
|
||||
B_X = null;
|
||||
B_Y = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
if (DeBugMode) sq_DrawBox(X, Y, Width, Height, 0xffffffff);
|
||||
|
||||
//设定鼠标逻辑
|
||||
LockMouse();
|
||||
|
||||
//设定窗口拖动逻辑
|
||||
MoveWindow();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class AvatarShapeC extends BasicsDrawTool {
|
||||
WindowObj = null; //窗口对象
|
||||
MainState = false; //主状态
|
||||
X = 0;
|
||||
Y = 0;
|
||||
ShapeMonsterId = null;
|
||||
ShapeMonsterState = false;
|
||||
MTimer = null;
|
||||
|
||||
SeverEquInfo = null;
|
||||
|
||||
function GetAvatarShapeInfo() {
|
||||
local T = {
|
||||
op = 31001
|
||||
}
|
||||
local str = Json.Encode(T);
|
||||
L_sq_SendPackType(130);
|
||||
L_sq_SendPackWChar(str);
|
||||
L_sq_SendPack();
|
||||
}
|
||||
|
||||
function GetAvatarShapeInfoCallBack(Chunk) {
|
||||
// Sout("收到包内容为 \n %L", Chunk);
|
||||
local Buffer = Json_STL("AvatarShapeJsonObj");
|
||||
Buffer.Parse(Chunk, 0, false);
|
||||
|
||||
local RootTab = getroottable();
|
||||
if (RootTab.rawin("AvatarShapeCObj")) {
|
||||
RootTab["AvatarShapeCObj"].SeverEquInfo = null;
|
||||
RootTab["AvatarShapeCObj"].SeverEquInfo = [];
|
||||
RootTab["AvatarShapeCObj"].X = Buffer.Get("Xpos");
|
||||
RootTab["AvatarShapeCObj"].Y = Buffer.Get("Ypos");
|
||||
|
||||
for (local i = 0; i < 1000; i++) {
|
||||
local gToubu = Buffer.Get("info->" + i + "->Toubu");
|
||||
if (gToubu == false) break;
|
||||
local gMaozi = Buffer.Get("info->" + i + "->Maozi");
|
||||
local gLianbu = Buffer.Get("info->" + i + "->Lianbu");
|
||||
local gGuanghuan = Buffer.Get("info->" + i + "->Guanghuan");
|
||||
local gXiongbu = Buffer.Get("info->" + i + "->Xiongbu");
|
||||
local gShangyi = Buffer.Get("info->" + i + "->Shangyi");
|
||||
local gPifu = Buffer.Get("info->" + i + "->Pifu");
|
||||
local gYaobu = Buffer.Get("info->" + i + "->Yaobu");
|
||||
local gXiazhuang = Buffer.Get("info->" + i + "->Xiazhuang");
|
||||
local gXie = Buffer.Get("info->" + i + "->Xie");
|
||||
local gMonsterId = Buffer.Get("info->" + i + "->MonsterId");
|
||||
local Equ = {
|
||||
Toubu = gToubu,
|
||||
Maozi = gMaozi,
|
||||
Lianbu = gLianbu,
|
||||
Guanghuan = gGuanghuan,
|
||||
Xiongbu = gXiongbu,
|
||||
Shangyi = gShangyi,
|
||||
Pifu = gPifu,
|
||||
Yaobu = gYaobu,
|
||||
Xiazhuang = gXiazhuang,
|
||||
Xie = gXie,
|
||||
MonsterId = gMonsterId
|
||||
}
|
||||
RootTab["AvatarShapeCObj"].SeverEquInfo.append(Equ);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
constructor() {
|
||||
//注册装备信息回调
|
||||
Pack_Control.rawset(31002, GetAvatarShapeInfoCallBack);
|
||||
|
||||
GetAvatarShapeInfo();
|
||||
|
||||
|
||||
|
||||
MTimer = TimeSTL("AvatarShapeTimer", 5000);
|
||||
|
||||
MTimer.Delete();
|
||||
MTimer = TimeSTL("AvatarShapeTimer", 5000);
|
||||
MTimer.Start();
|
||||
}
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
//开启界面回调
|
||||
function OpenClassCallBack() {
|
||||
|
||||
|
||||
}
|
||||
|
||||
//绘制入口
|
||||
function Draw(obj) {
|
||||
//print(ShapeMonsterId);
|
||||
//有变身ID
|
||||
if (ShapeMonsterId) {
|
||||
//没有变身的情况下
|
||||
if (!ShapeMonsterState) {
|
||||
local Button = AvatarShapePro(obj, "AvatarShapeAni", X, Y, "common/bianshen/bianshen.ani", 28, 28, 16);
|
||||
Button.SetRectEnble(true, "AvatarShaperAnir", X, Y, "common/bianshen/bianshen.ani", 17);
|
||||
Button.SetCustomClickEnble(true, "AvatarShapeAnic", X, Y, "common/bianshen/bianshen.ani", 18);
|
||||
Button.Show();
|
||||
|
||||
if (Button.isLBActive()) {
|
||||
L_sq_SendPackType(214);
|
||||
L_sq_SendPackByte(2);
|
||||
L_sq_SendPackWord(ShapeMonsterId);
|
||||
L_sq_SendPack();
|
||||
ShapeMonsterState = true;
|
||||
}
|
||||
} else {
|
||||
local Button = AvatarShapePro(obj, "NAvatarShapeAni", X, Y, "common/bianshen/bianshen.ani", 28, 28, 20);
|
||||
Button.SetRectEnble(true, "NAvatarShaperAnir", X, Y, "common/bianshen/bianshen.ani", 21);
|
||||
Button.SetCustomClickEnble(true, "NAvatarShapeAnic", X, Y, "common/bianshen/bianshen.ani", 22);
|
||||
Button.Show();
|
||||
|
||||
if (Button.isLBActive()) {
|
||||
L_sq_SendPackType(215);
|
||||
L_sq_SendPack();
|
||||
ShapeMonsterState = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//比对角色与服务器信息是否匹配
|
||||
function CheckPlayerInfoToSeverShapeInfo() {
|
||||
local Toubu = L_sq_GetCharacterAttribute(0x1C, 14);
|
||||
local Maozi = L_sq_GetCharacterAttribute(0x1C, 13);
|
||||
local Lianbu = L_sq_GetCharacterAttribute(0x1C, 15);
|
||||
local Guanghuan = L_sq_GetCharacterAttribute(0x1C, 22);
|
||||
local Xiongbu = L_sq_GetCharacterAttribute(0x1C, 19);
|
||||
local Shangyi = L_sq_GetCharacterAttribute(0x1C, 16);
|
||||
local Pifu = L_sq_GetCharacterAttribute(0x1C, 21);
|
||||
local Yaobu = L_sq_GetCharacterAttribute(0x1C, 20);
|
||||
local Xiazhuang = L_sq_GetCharacterAttribute(0x1C, 17);
|
||||
local Xie = L_sq_GetCharacterAttribute(0x1C, 18);
|
||||
|
||||
foreach(v in SeverEquInfo) {
|
||||
if (v.Toubu != Toubu && v.Toubu != 0) continue;
|
||||
if (v.Maozi != Maozi && v.Maozi != 0) continue;
|
||||
if (v.Lianbu != Lianbu && v.Lianbu != 0) continue;
|
||||
if (v.Guanghuan != Guanghuan && v.Guanghuan != 0) continue;
|
||||
if (v.Xiongbu != Xiongbu && v.Xiongbu != 0) continue;
|
||||
if (v.Shangyi != Shangyi && v.Shangyi != 0) continue;
|
||||
if (v.Pifu != Pifu && v.Pifu != 0) continue;
|
||||
if (v.Yaobu != Yaobu && v.Yaobu != 0) continue;
|
||||
if (v.Xiazhuang != Xiazhuang && v.Xiazhuang != 0) continue;
|
||||
if (v.Xie != Xie && v.Xie != 0) continue;
|
||||
ShapeMonsterId = v.MonsterId;
|
||||
return;
|
||||
}
|
||||
ShapeMonsterId = null;
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
//每五秒获取一次本地数据信息
|
||||
if (MTimer) {
|
||||
if (MTimer.Get() >= 1000) {
|
||||
MTimer.Reset();
|
||||
MTimer.Start();
|
||||
CheckPlayerInfoToSeverShapeInfo();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function AvatarShape(obj) {
|
||||
local RootTab = getroottable();
|
||||
if (!RootTab.rawin("AvatarShapeCObj")) {
|
||||
local Cobj = AvatarShapeC();
|
||||
RootTab.rawset("AvatarShapeCObj", Cobj);
|
||||
} else {
|
||||
RootTab["AvatarShapeCObj"].Proc(obj);
|
||||
RootTab["AvatarShapeCObj"].Draw(obj);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user