| 发帖: 138 | 粉丝: 0
| | 铜币: 110 | 龙鳞: 138 |
能量: 0
耐力: 49
经验: Lv3
精灵:
| | |
该隐藏帖已经发布超过60天,已自动取消隐藏功能,无需回复即可查看!由于刚才发错,三楼才是连接 ZibODs=f; 服务端修改文字教程 c{<3\ 1、[079咖啡端]添加打开一个没有JS的NPC出现对话框 C
}[u[) 打开scr/net/s(和谐)f/odinms/scripting/npc/NPCScriptManager.java ] *Hz' r[lHYO 找到 :Cuae?O, public void start(MapleClient c, int npc) { wHCsEp( try { ]gEfm~YV NPCConversationManager cm = new NPCConversationManager(c, npc); VjnSi if (cms.containsKey(c)) { J]N}8 0 return; &sRyM'XI } K{iYp4pU cms.put(c, cm); *qqFIp^ Invocable iv = getInvocable("npc/" + npc + ".js", c); c:iMbJOn# if (iv == null || NPCScriptManager.getInstance() == null) { .UDZW* cm.dispose(); 1Tl("XV3 return; MqpoS } ,P:.' engine.put("cm", cm); <@yyx7 NPCScript ns = iv.getInterface(NPCScript.class); $p0s scripts.put(c, ns); O+yR+aXr'8 ns.start(); p?`N<ykF< } catch (Exception e) { `+gF|o9 log.error("Error executing NPC script " + npc, e); CV6H~t'1 dispose(c); Qw^tzP8 cms.remove(c); 7KEGTKfW } EZHEJW'JnE } rfZA21y{? 2 rH6ap 全选替换掉 *Dn{MD7,M 将下面一段代码替换进去 OU## A:gI public void start(MapleClient c, int npc) ]uZH 0 { D^u{zZy@e try { upJishy&I if (c.getPlayer().isGM()) 7%<jZ= c.getPlayer().dropMessage("[系统提示]您已经建立与NPC:" + npc + "的对话。"); 25TEbp[dy eyM3W}[S$/ NPCConversationManager cm = new NPCConversationManager(c, npc); F,W(H@ ~x if (this.cms.containsKey(c)) UOY1^wY return; DXiD>1(q {Xp.}c this.cms.put(c, cm); E,X,RM~
+D Invocable iv = getInvocable("npc/" + npc + ".js", c); aT0 y if ((iv == null) || (getInstance() == null)) { "~
`-Jkm cm.sendOk("对不起,我并没有被管理员设置可使用,如果你觉得我应该工作的,那就请你汇报给管理员.\r\n我的ID编号: #r" + npc + "#k."); ff0B*0 cm.dispose(); %`TLs^ return; iaC$K@a{ } {/Cd ^CK this.engine.put("cm", cm); RS1oPY
NPCScript ns = (NPCScript)iv.getInterface(NPCScript.class); E|TzrH this.scripts.put(c, ns); p[wjHfIq ns.start(); tY#^3ac } catch (Exception e) { -lp_~)j^ log.error("Error executing NPC script " + npc, e); EAI[J&c dispose(c); `+6HHtF this.cms.remove(c); f]lDJ?+
M } CuGk?i } \<8!b{F 2、[079咖啡端]修复怪物打不死 c;e,)$)-| 1.打开源码找到net\s(和谐)f\odinms\net\channel\handler\AbstractDealDamageHandler.java &yN<@. ^Nu} HcC+ 找到这个函数parseDamage() 然后用下面的代码替换 注意替换前先备份! NanU%#& c1/x,1LnMf --------------------------------------------------------------------------------- Xnh1pwDhe< F&P)mbz1 public AttackInfo parseDamage(MapleCharacter c, LittleEndianAccessor lea, boolean ranged) { W)_B(;$] AttackInfo ret = new AttackInfo(); (
r O j,D lea.readByte(); 8 2qe|XD4p lea.skip(8); _PaOw%Y9 ret.numAttackedAndDamage = lea.readByte(); B^qB6:\t lea.skip(8); KV6S- ret.numAttacked = (ret.numAttackedAndDamage >>> 4 & 0xF); ALv\"uUNu+ ret.numDamage = (ret.numAttackedAndDamage & 0xF); aZ^lI
6@+4 ret.allDamage = new ArrayList(); l ghzd6 ret.skill = lea.readInt(); HT]ubw]rJ lea.skip(8); }lY-_y if ((ret.skill == 2121001) || (ret.skill == 2221001) || (ret.skill == 2321001) || (ret.skill == MnQ_]cC k8ck#%#}Wu 5201002) || (ret.skill == 14111006) || (ret.skill == 5101004) || (ret.skill == 15101003)) ob;oxJ@[c ret.charge = lea.readInt(); Fzu{,b else { Ob+&!XTp?0 ret.charge = 0; s6egd%r } y6s$.93 ,..b)H5n if (ret.skill == 1221011) -"<f( ret.isHH = true; e,BJD>N ? . FruI#99 lea.readInt(); vZxy9Wmc ret.aresCombo = lea.readByte(); 4EK[gM8 int sourceid = ret.skill; |RmBa'.)z if ((sourceid == 21100004) || (sourceid == 21100005) || (sourceid == 21110003) || (sourceid == |(V3 $_VD@YlAp 21110004) || (sourceid == 21120006) || (sourceid == 21120007)) |j+~Td3})& c.setCombo(1); Nh))U o i?ak ret.pos = lea.readByte(); }>w;
+XU ret.stance = lea.readByte(); K?>&Mr fP|\1Y?CS if (ret.skill == 4211006) { NplSkv return parseMesoExplosion(lea, ret); :Ls36E8f= } ?/wloLS47 2V]2jxOQ if (ranged) { DkIkiw{L lea.readByte(); "&%Hb's ret.speed = lea.readByte(); x:x QXjJ lea.readByte(); t0q@]
0B5 ret.direction = lea.readByte(); 3LmHH
= lea.skip(7); h(L5MZs if ((ret.skill == 3121004) || (ret.skill == 3221001) || (ret.skill == 5221004) || (ret.skill == 6i4j(P 71%u|k8| 13111002)) H1]\B: lea.skip(4); Ef!F;D e)A } ra&C|"~E else { +D@R'$N lea.readByte(); pI`Ke" ret.speed = lea.readByte(); wnX6XyUH lea.skip(4); twn@~$ } A3n"zxU -'(:Sq,4o for (int i = 0; i < ret.numAttacked; ++i) { (}:xs,Ax int oid = lea.readInt(); GZ={G2@=I ZKvh] lea.skip(14); #cs!`Ngb+ HL?pnT09 List allDamageNumbers = new ArrayList(); 7Tbk ti; for (int j = 0; j < ret.numDamage; ++j) { cG?266{g int damage = lea.readInt(); (tgaH,G 2R!W5gs1< MapleStatEffect effect = null; 9V&LJhDQ if (ret.skill != 0) fCfY.vd5 effect = SkillFactory.getSkill(ret.skill).getEffect(c.getSkillLevel(SkillFactory.getSkill !8g
y)2 ~I<y^]2{ (ret.skill))); */)gk=x8 sF$m?/Kt if ((damage != 0) && (effect != null) && (effect.getFixedDamage() != 0)) RBXoU'. damage = effect.getFixedDamage(); 9 2EMDKJ K"1J1>CHQ allDamageNumbers.add(Integer.valueOf(damage)); 2KEww3.{ } yiOF& if (ret.skill != 5221004) QZlUUj\
lea.skip(4); KkY22_{ac -AE/,@ \P ret.allDamage.add(new Pair(Integer.valueOf(oid), allDamageNumbers)); iH>djGhTh } mAzW'Q4D 0TpA3K return ret; FuKNH~MevQ } }dz(DPd $W]bw#NH R32d(2%5K --------------------------------------------------------------------------------- *pMA
V[^ zN1;v6; 2.接着找到net\s(和谐)f\odinms\client\MapleCharacter.java m+g>s&1H
riL!]'akV 查找 =FnZk J //战神Combo {aSq3C<r private int combo = 0; JF
gN private int comboCount = 0; Ba6xkEd )N<!3yOz 将其修改为 >MT)=4
9q //战神Combo D\R^*k@V private int combo = 0; cF2/}m] private int comboCounter = 0; #vSI_rt9I ?KN_J 此时应再查找comboCount 将其修改为comboCounter(不然原变量将不可用 导致变量未定义) BP6Shc|C 应该也可以重新定义comboCounter这个变量 没实验 *"ShE=\p *C BCQp[$ 然后在下面适当处增加两个函数 <Va>5R_d< bhmjH(.t public int getCombo() { )sHPIxHI return this.comboCounter; ^Ram8fW } F'I6aE% 'UxA8i(
public int setCombo(int combo) { 9:>K!@ return (this.comboCounter = combo); J^:~#`8 } 5IK@<#wE NS q=_8 代码就修改完毕了 编译后 怪物就应该能掉血了! ;qMlGXW*q 2"O Y]d A=K1T]o 大概原因分析: (R-Q9F+; 攻击封包数据改变,原来处理封包的方式已经不能适用了 所以应当修改原来的处理结构! MF`'r#@:wa 3、[079咖啡端]修复双击人物客户端自动退出问题 3[0:,^a 双击人物不管是自己还是他人都需要查看角色信息,原先我以为是加入的有家族的原因。 换了个没家族的号还是那样, St`m52V(5X 结果我就感觉应该是处理封包的问题了。 说明白点就是 MaplePacketCreator.java 有问题,然后我又仔细比较了下 楚天和咖啡端的 MaplePacketCreator.java `2PT 8UM wk#QQDV3|0 发现charinfo 处理有出入。 咖啡端似乎少了一些东西, 就是椅子列表显示那部分。 于是我对照两者的代码修复了下。 q4{ t H 也不算是修复。 因为这样弄过以后不会显示你有椅子。 抱歉。 我JAVA不太行。 大家原谅下了。 .yPx'_e H<;j&\$q 处理方法: .Dm{mV@*T e?>suIB 打开 src\net\s(和谐)f\cherry\tools\MaplePacketCreator.java 0h#M)Ft (或者是src\net\s(和谐)f\odinms\tools\MaplePacketCreator.java) BpT&vbY >y[S?M KfNXX>' 找到 RHbwq] mplew.write(HexTool.getByteArrayFromHexString("00 00 00 00 00 00 01 00 00 00 D0 ED 2D 00 0C 87 A5 16 B4 F0 B0 16 10 00 00 00 84 E3 C6 2A 36 15 CF 59 6C 24 3E 00 CD DB 43 00 10 00 00 00 02 00 00 00 67 34 00 00 7F 36 00 00 DD CD CF 2A 10 00 00 00 B4 8B BB 2A 00 00 00 00 00 00 00 00 01 00 CD 00 10 00 00 00 18 E6 C6 2A DE 26 93 07 FD DC AB 7B 45 08 08 08 10 00 00 00")); _SqrQ ks D1NB;9 [w f12P R.N*G]K5 UZra'+Wb 替换成 ;"Y6&YP< mplew.writeInt(0); wNZ7(W.U mplew.writeShort(0); ;[9Is\ MapleInventory iv = chr.getInventory(MapleInventoryType.SETUP); 6ZBD$1$A! List<Item> chairItems = new ArrayList(); 1*h7L<#|mQ for (IItem item : iv.list() ) { 7W"menw if ((item.getItemId() >= 3010000) && (item.getItemId() <= 3020001)) { 9:o3JGHSc //chairItems.add(item); BP$#a
# } 3:Wr)>l}# } AHGcWS\,X mplew.writeInt(chairItems.size()); U4gJ![>5j for (IItem item : chairItems ) { mQd?Tyvn mplew.writeInt(item.getItemId()); }3 }=tN5 } =HHg:" mplew.writeInt(0); 639k&"V 4、修复咖啡端不消耗飞镖 S41>VbtEp RangedAttackHandler.java t^hkGYj!2 F S:WbFmc 找到 /3]|B%W9 //if (player.getJob().isA(MapleJob.Ares_1) || player.getJob().isA(MapleJob.Ares_2) || player.getJob().isA(MapleJob.Ares_3) || player.getJob().isA(MapleJob.Ares_4)) { 27:x5g? MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, projectile, bulletConsume, false, true); k 9rnT)YU // } R`q!~8u ; \+0H$ 按上面方式处理 7krA+/Qr( 5、修复黑龙项链带不了的BUG d}_c( 先解释一下为什么国服的黑龙项链带不上。 用1.5deMSwZ.exe 打开string.wz得到这样的结果 ^~l<N@ T#7^6Ks+1 Eqp.Ring.1112904.name 彩虹星环绕戒指 [2095484] =6&D4~R Eqp.Ring.1112904.desc 五彩斑斓的星星和心围绕着角色旋转。 [2095507] x(=x;X$[^ Eqp.Ring.1112905.name 超大心环绕戒指 [2095572] 4)I#[&f Eqp.Ring.1112905.desc 可爱的大心心在角色周围以心形模样旋转。 [2095595] ?sYjFiE Eqp.Ring.1112906.name 心心祝福戒指 [2095664] DlI5} Jh Eqp.Ring.1112906.desc 可爱的心心在角色头顶画出心形模样旋转。 [2095685] s`RJl V Eqp.Ring.1112907.name 小鱼戒指 [2095754] ?W_U{=anl Eqp.Ring.1112907.desc 装备时,会产生泡泡的效果。有时间限制。 [2095771] 7p6J Eqp.Ring.1112916.name 寂寞单身戒指 [2095840] Y=Qf!Cq] Eqp.Ring.1112916.desc 单身贵族的独立宣言,玩得就是“寂寞”!最IN的单身标记,高调不怕围观。 [2095861] ?miM15XI Eqp.Ring.1122000.name 黑龙项环 [2095962] E6M: ^p*< Eqp.Ring.1122007.name 休彼德蔓的项链 [2096001] ;kBies>V T"U t). 再来看下其他项链在哪个位置 #9OP.4 #cS,5(BM 5eA]7$ic Eqp.Accessory.1122029.name 苏醒的冒险之心 [1897757] !$Z"\v'b Eqp.Accessory.1122030.name 苏醒的冒险之心 [1897802] H%]ch6C Eqp.Accessory.1122031.name 苏醒的冒险之心 [1897836] MVZ>:G9: Eqp.Accessory.1122032.name 苏醒的冒险之心 [1897870] Phu|
hx< Eqp.Accessory.1122033.name 苏醒的冒险之心 [1897904] ,6"n5Ks} Eqp.Accessory.1122034.name 觉醒的冒险之心 [1897938] +ctv]'P_ Eqp.Accessory.1122035.name 觉醒的冒险之心 [1897983] ]?{lQ0vw'w Eqp.Accessory.1122036.name 觉醒的冒险之心 [1898017] CN(4;-so) Eqp.Accessory.1122037.name 觉醒的冒险之心 [1898051] <>s\tJ Eqp.Accessory.1122038.name 觉醒的冒险之心 [1898085] VKz<7K\/ Eqp.Accessory.1122058.name 休彼德蔓的混沌项链 [1898119] |m- `,
we Q%^bA,$&D
+`-a*U94 Ck?: 8YlF 很明显盛大把 黑龙项链 和 休彼德蔓的项链 故意或者无意放错了地方,放到了(戒指组里) ~py0Vx,F ->=++ 现在要做的是把这两个物体重新搬到 Accessory组里。 xQap44KPZ VsEAo JxJ ntsn 解决办法: )AXH^& i5Q<~;Z+ 1o>R\g3 找到服务端目录 wz\String.wz\Eqp.img.xml Z;D3lbqE 0(x@
NGb>{ 类似这样的结构 oE1]vX A#&qoZ(C <?xml version="1.0" encoding="UTF-8" standalone="yes"?> RCXSz <imgdir name="Eqp.img"> @~3c"q;i7 <imgdir name="Eqp"> Xkom@F~] <imgdir name="Accessory"> #Ca's'j&f <imgdir name="1010000"> :* b4/qpYv <string name="name" value="褐色落腮胡"/> *(B[J </imgdir> "b4iOp&:= <imgdir name="1010001"> &Q>'U6"% <string name="name" value="黑胡子"/> -FV'%X$i </imgdir> x35s6 <imgdir name="1010002"> EG4bFmcs <string name="name" value="忍者口罩"/> u^%')Ncp </imgdir> 9'g{<(R] <imgdir name="1010003"> <9a_wGs <string name="name" value="刮脸痕迹"/> _9|@nUD C}_:K)5q ]xEE7H]\h 查找 name="Ring" 再查找 1122000 (黑龙项环代码) y#;VGf6lj C)s1'
=TZ 类似这样 !#1A7[WN +Q31K7G r <imgdir name="1112906"> ue<<Y"NR <string name="name" value="心心祝福戒指"/> TZNgtR{q
<string name="desc" value="可爱的心心在角色头顶画出心形模样旋转。"/> 4&hqeY3 </imgdir> WG} CPkj <imgdir name="1112907"> 4uAafQ`@H <string name="name" value="小鱼戒指"/> a<TL& <string name="desc" value="装备时,会产生泡泡的效果。有时间限制。"/> I?Fa </imgdir>
}TJ|d= <imgdir name="1112916"> 389.&`Q%Ut <string name="name" value="寂寞单身戒指"/> Ba|}C(Ws? <string name="desc" value="单身贵族的独立宣言,玩得就是“寂寞”!最IN的单身标记,高调不怕围观。"/> QYXx7h r=$ </imgdir> u7Y< ~ <imgdir name="1122000"> Ag0_^ <string name="name" value="黑龙项环"/> 5KE%@,k k </imgdir> H^;S}<pxW <imgdir name="1122007"> `e>F<{
M6@ <string name="name" value="休彼德蔓的项链"/> #l# [\6 </imgdir> 2EwWV0BS :b*`hWnQ 把这段代码剪切出来 NqE7[wH L^1q/4${ <imgdir name="1122000"> Lo E(W|nj <string name="name" value="黑龙项环"/> Gj`Y2X2r </imgdir> &xroms"S= <imgdir name="1122007"> ?3,tG z) <string name="name" value="休彼德蔓的项链"/> O'|P| </imgdir>
iLcadX i03}f%JnuO 放到<imgdir name="Accessory"> 组里。 tkqBCKpDa )=nPM`Jn. 最后类似这样的结构 kDY]>v b.q"s6u <?xml version="1.0" encoding="UTF-8" standalone="yes"?> I A#*T` <imgdir name="Eqp.img"> zB"
`i <imgdir name="Eqp"> E(kpK5h{ <imgdir name="Accessory"> %L>nXj <imgdir name="1122000"> [.xk <string name="name" value="黑龙项环"/> 2%C5P0;QX </imgdir> }, &,Dt <imgdir name="1122007"> % W',c u <string name="name" value="休彼德蔓的项链"/> <<5 :zlb </imgdir> KGmc*Jwy <imgdir name="1010000"> &iy(oM <string name="name" value="褐色落腮胡"/> a<jE25t </imgdir> N 3p 7 0 <imgdir name="1010001"> #aY<J:Nx <string name="name" value="黑胡子"/> 3H#/u! W </imgdir> w })Pedg <imgdir name="1010002"> J?quYlS <string name="name" value="忍者口罩"/> umZ
g}|C_ </imgdir> kah3Uhr~ GtJ*&=(
I S8nvx\ 然后重启服务端就OK。 装备上黑龙项链把。 不用源代码即可修复。 DPQGh`J 6、修复PB掉线问题 Ty0T7D -----------新建文档 复制以下代码 将文件重命名为8820009.img.xml 放到服务端WZ中对应的xml下-- np\2sa` XW_xNkpL5c p6Dv;@)Yn <?xml version="1.0" encoding="UTF-8" standalone="yes"?> \}QuNwc <imgdir name="8820009.img"> m$mY<Q
<imgdir name="info"> oEoJa:h <int name="bodyAttack" value="0"/> VfqY_NmgC <int name="level" value="1"/> ivz?-X4] <int name="maxHP" value="200000"/> afiK!0col2 <int name="maxMP" value="0"/> 124L3AG <int name="speed" value="0"/> 8~(+[[TQ@ <int name="PADamage" value="0"/> tr9Y1vxo{ <int name="PDDamage" value="0"/> ?En|
_E_C <int name="MADamage" value="0"/> 76Vyhf&7 <int name="MDDamage" value="0"/> bSR+yr'? <int name="acc" value="0"/> L_1_y, 0N <int name="eva" value="0"/> 2vdQ&H4 <int name="exp" value="0"/> |z.GSI_!) <int name="undead" value="0"/> .4re0:V <int name="pushed" value="1"/> -s%-*K+,W <float name="fs" value="10.0"/> pUMB)(<k <int name="removeAfter" value="5"/> ^iRwwN=d <int name="summonType" value="12"/> 3J~kiy.nfW <int name="hideName" value="1"/> ^}/
E~Sg7\ <imgdir name="revive"> m2q;^o:J <int name="0" value="8820001"/> C=aj& <int name="1" value="8820003"/> o / g+Z <int name="2" value="8820005"/> &xuwke:[ <int name="3" value="8820006"/> <&s)k <int name="4" value="8820004"/> U"y'Kd <int name="5" value="8820002"/> eOPCYyN </imgdir> *8X9lv.Z <int name="noFlip" value="1"/> _q$LrAT </imgdir> gq_7_Y/ <imgdir name="stand"> 6(^Upk=59 <canvas name="0" width="4" height="4"> j /dE6d <vector name="origin" x="36" y="53"/> Z F yX@#B9 <int name="delay" value="30"/> GHC?Tp <vector name="head" x="1" y="-1500"/> }42qMOi#w1 </canvas> +<WRB\W </imgdir> uj9tr`Zh
<imgdir name="hit1"> W;oU +z^t$ <canvas name="0" width="4" height="4"> p/WH#4Xdr <vector name="origin" x="36" y="53"/> 7M#$: Fdb <int name="delay" value="30"/> 4:e q{n <vector name="head" x="1" y="-1500"/> |k
.M+ </canvas> \P~rg~ </imgdir> !QR?\9` <imgdir name="die1"> T~~[a|bLa <canvas name="0" width="213" height="450"> + }XL>=-5 <vector name="origin" x="774" y="495"/> l&??2VO/t <int name="delay" value="180"/> MRg\FR2>1 <vector name="head" x="1" y="-1500"/> @23RjoK <int name="a0" value="255"/> 4IP\iw#w <int name="a1" value="255"/> +>:_kE]?nX </canvas> M|5]#2J_2 <canvas name="1" width="227" height="493"> v7<S F <vector name="origin" x="778" y="534"/> "K+N f <int name="delay" value="180"/> }d3N`TT <vector name="head" x="1" y="-1500"/> ?WQd </canvas> X]pWvQ Q] <canvas name="2" width="232" height="497"> 'Rkvsch <vector name="origin" x="783" y="533"/> r>:L$_]L <int name="delay" value="180"/> x #X#V\w= <vector name="head" x="1" y="-1500"/> Z:lB:U'o </canvas> R!k<l<9q <canvas name="3" width="237" height="497"> "ex~LB <vector name="origin" x="787" y="529"/> +.(}u ,:8 <int name="delay" value="180"/> M`+e'vdw <vector name="head" x="1" y="-1500"/> YUVc9PV)Ws </canvas> [mf7>M`p]@ <canvas name="4" width="239" height="494"> g3~~"`2 <vector name="origin" x="788" y="525"/> J={OOj <int name="delay" value="180"/> u->@|tEq <vector name="head" x="1" y="-1500"/> UK~B[=b9 </canvas> W^d4/] <canvas name="5" width="241" height="496"> 9p\Hx#^ <vector name="origin" x="789" y="526"/> _{*$>1q <int name="delay" value="180"/> ;Ma/b= Y <vector name="head" x="1" y="-1500"/> g\\1C2jG </canvas> $mI:Im`s <canvas name="6" width="243" height="494"> q"LJwV}W <vector name="origin" x="790" y="523"/> B==a <int name="delay" value="180"/> Q_]!an( <vector name="head" x="1" y="-1500"/> AJ?}Hel[0 </canvas> $dZ>bXUw: <canvas name="7" width="243" height="491"> WW[`E <vector name="origin" x="790" y="520"/> ,;cel^.b <int name="delay" value="180"/> [[?[? V , <vector name="head" x="1" y="-1500"/> /pIb@:Y1? </canvas> o~o6S=4,} <canvas name="8" width="241" height="483"> ,hTwNVWI9 <vector name="origin" x="789" y="513"/> ()nKug`.@ <int name="delay" value="180"/> o(d_uJOB <vector name="head" x="1" y="-1500"/> `mKlv~$1^ </canvas> vJj:9KcP>h <canvas name="9" width="239" height="479"> mzV"G>,o <vector name="origin" x="788" y="510"/> 2 ]DCF <int name="delay" value="180"/> ua$k^m7m5 <vector name="head" x="1" y="-1500"/> FJd8s* </canvas> `gt&Y- <canvas name="10" width="237" height="476"> k99gjL` <vector name="origin" x="787" y="508"/> eC^0I78x <int name="delay" value="180"/> Q3Z%a|3W <vector name="head" x="1" y="-1500"/> IglJEH[+ </canvas> 3 $$5Mk(& |