| 🎉 |
隐藏内容已自动解锁
隐藏内容因满足 [ 发布时间满60天,帖子热度超6666点击,参与人数超10人 ] 其中条件之一,触发了自动开放机制。
无需回复,所有访客均可直接查看以下内容:
|
由于刚才发错,三楼才是连接 ,{ CgOz+Ul
服务端修改文字教程 1 6;l,@
1、[079咖啡端]添加打开一个没有JS的NPC出现对话框 D *W+0
打开scr/net/s(和谐)f/odinms/scripting/npc/NPCScriptManager.java z:9
^|xj.
找到 C&D]!ZvF
public void start(MapleClient c, int npc) { AbUU#C7
try { +A8S 6bA[=
NPCConversationManager cm = new NPCConversationManager(c, npc); ]Vhhx`0
if (cms.containsKey(c)) { ]*j>yj.Y'~
return; PN2\:l+`
} 4LARqSmt
cms.put(c, cm); ]_I<-}?;
Invocable iv = getInvocable("npc/" + npc + ".js", c); KIn^,d0H
if (iv == null || NPCScriptManager.getInstance() == null) { 6;Cr92
cm.dispose(); T[xGF/
return; TFbCJ@X
} n>>hfxv(O!
engine.put("cm", cm); M['2
5[
NPCScript ns = iv.getInterface(NPCScript.class); 7p3 ;b"'
scripts.put(c, ns); S#0y\
ns.start();
/Z! ,1
} catch (Exception e) { toPA@V
log.error("Error executing NPC script " + npc, e); rMxst
dispose(c); nQK@Uy5Yr
cms.remove(c); v}A] R9TY
} &=fBqod
} nkHr(tF
7
+P|$T:b
全选替换掉 u~<>jAy
将下面一段代码替换进去 JfKhYRl
public void start(MapleClient c, int npc) PN/2EmwtC
{ J9ovy>G
try {
:i0xer
if (c.getPlayer().isGM()) p9R`hgx
c.getPlayer().dropMessage("[系统提示]您已经建立与NPC:" + npc + "的对话。"); U@yrqT@;AU
. hHt+
NPCConversationManager cm = new NPCConversationManager(c, npc); *{W5QEa
if (this.cms.containsKey(c)) R4!qm0Cd
return; j)Kk:BFFY
w3Aq[1U0
this.cms.put(c, cm); RL~|Kr<7J
Invocable iv = getInvocable("npc/" + npc + ".js", c); <kn#`w1U'
if ((iv == null) || (getInstance() == null)) { 1pXAPTV
cm.sendOk("对不起,我并没有被管理员设置可使用,如果你觉得我应该工作的,那就请你汇报给管理员.\r\n我的ID编号: #r" + npc + "#k."); ?# >|P-4
cm.dispose(); R*.XbkW~
return;
j^KM
} deaxb8'7
this.engine.put("cm", cm); efMv1>{
NPCScript ns = (NPCScript)iv.getInterface(NPCScript.class); )ZzwD]
this.scripts.put(c, ns); COv#dOw
ns.start(); 9UOx~Ty
} catch (Exception e) { 1w+OnJI?
log.error("Error executing NPC script " + npc, e); N;A1e@bP
dispose(c); %_M B-
this.cms.remove(c); \F,?ptu
} 9Q=g]int u
} G,{L
=xOh
2、[079咖啡端]修复怪物打不死 FU!U{qDI
1.打开源码找到net\s(和谐)f\odinms\net\channel\handler\AbstractDealDamageHandler.java Gcg`Knr
tnqW!F~
找到这个函数parseDamage() 然后用下面的代码替换 注意替换前先备份! xp/u, q
g-mK(kY4p
--------------------------------------------------------------------------------- eC9~
wc
>IfJ.g"
public AttackInfo parseDamage(MapleCharacter c, LittleEndianAccessor lea, boolean ranged) { v3S{dX<
AttackInfo ret = new AttackInfo(); q "bpI8j
lea.readByte(); v|_?qBs"
lea.skip(8); d|on
y
ret.numAttackedAndDamage = lea.readByte(); }
llzO
lea.skip(8); Bp^>R`,
ret.numAttacked = (ret.numAttackedAndDamage >>> 4 & 0xF); HG@!J>YaD
ret.numDamage = (ret.numAttackedAndDamage & 0xF); '\1%%F7
ret.allDamage = new ArrayList(); ;knSn$
ret.skill = lea.readInt(); b9EJLD
lea.skip(8); +<:p`%
if ((ret.skill == 2121001) || (ret.skill == 2221001) || (ret.skill == 2321001) || (ret.skill == `h$6MFC/g
6BW-
AZc
5201002) || (ret.skill == 14111006) || (ret.skill == 5101004) || (ret.skill == 15101003)) 9L%&4V}BIS
ret.charge = lea.readInt(); 8v1asFxs.
else { ~J)4 (411
ret.charge = 0; $f>WR_F
} .)|jBC8|}
9rB^)eV
if (ret.skill == 1221011) {ZbeF#*"
ret.isHH = true; F"hi2@/TI
A42At]
lea.readInt(); y>2v 9;Qp
ret.aresCombo = lea.readByte(); PNT.9 *d
int sourceid = ret.skill; fouy??
if ((sourceid == 21100004) || (sourceid == 21100005) || (sourceid == 21110003) || (sourceid == @`}'P115@
|:!#kA
21110004) || (sourceid == 21120006) || (sourceid == 21120007)) <WaiJy?
c.setCombo(1); $f1L<euH
N<Bi.\XC
ret.pos = lea.readByte(); 9foQ0#R
ret.stance = lea.readByte(); AEPgQ9#E
#`z!f0
P
if (ret.skill == 4211006) { WSDNTfpI
return parseMesoExplosion(lea, ret); po=*%Zs*T
} 1>a^Q
i2)SSQ
if (ranged) { ++,mM7a
lea.readByte(); )t&|oQ3sVG
ret.speed = lea.readByte(); /qI80KVnN
lea.readByte(); BOL_kp"
ret.direction = lea.readByte();
ehxtNjA
lea.skip(7); (4ow0}1
if ((ret.skill == 3121004) || (ret.skill == 3221001) || (ret.skill == 5221004) || (ret.skill == b_V)]>v+
TW3:Y\ p
13111002)) 6e |
lea.skip(4); @pytHN8( $
} 'P@a_*I
else { 7 bsW7;C
lea.readByte(); rorzxp{
ret.speed = lea.readByte(); z-7F,$
lea.skip(4); =Z#tZ{"
} NXeo&+F
TM!R[-\
for (int i = 0; i < ret.numAttacked; ++i) { U{>!`RN
int oid = lea.readInt(); >ID 3oi
5`x9+XvoN
lea.skip(14); H/)=
DLS-WL
List allDamageNumbers = new ArrayList(); 1}[\@n+b
for (int j = 0; j < ret.numDamage; ++j) { \`>Y
int damage = lea.readInt(); dUb(C1h
fbw{)SZ
MapleStatEffect effect = null; 2"<}9A<Xs
if (ret.skill != 0) <]wN/B-8J
effect = SkillFactory.getSkill(ret.skill).getEffect(c.getSkillLevel(SkillFactory.getSkill 9-Ib+/R0
;i:Uoyi
(ret.skill))); y
H+CyL\
_nx|ZJ
if ((damage != 0) && (effect != null) && (effect.getFixedDamage() != 0)) IZAbW
damage = effect.getFixedDamage(); L@a-"(TN+
cR@z^
allDamageNumbers.add(Integer.valueOf(damage)); Y#]Y$n
} Q7=J[,V: 2
if (ret.skill != 5221004) {GWcw<g.B
lea.skip(4); M?
nnpO
^D.B^BR
ret.allDamage.add(new Pair(Integer.valueOf(oid), allDamageNumbers)); Pv1psK
u
} =[1W.Zt
l*X5<b9
return ret; B]*&lRR
} &-cI|
}a<MVG:>SF
rEAPlO.Yp
--------------------------------------------------------------------------------- "g=ux^+X\
WM@uxe,
2.接着找到net\s(和谐)f\odinms\client\MapleCharacter.java 5V?1/
X
]1ep
查找 $S,Uoh
//战神Combo ]|[xY8 5}
private int combo = 0; *D<sk7
private int comboCount = 0; 1>1|>%
*ac#wEd
将其修改为 H>DJ-lG(
//战神Combo )@K|Co
private int combo = 0; ^f`#8G7 (
private int comboCounter = 0; FswFY7
8
-\NB*|9m|
此时应再查找comboCount 将其修改为comboCounter(不然原变量将不可用 导致变量未定义) m};_\Db`
应该也可以重新定义comboCounter这个变量 没实验 IZ2#jSDn
}U^9(
然后在下面适当处增加两个函数 /itO xrA
ww\/$ |
public int getCombo() { TfZO0GL$
return this.comboCounter; H}U&=w'
} ,E>VYkoA
jNIM1_JjD
public int setCombo(int combo) { V 9<[v?.\
return (this.comboCounter = combo); ]iz5VI@
} aD&10b9`
nI
si
代码就修改完毕了 编译后 怪物就应该能掉血了! Nc"h8p?
P?0b-Qr$a
gdT^QM:y4$
大概原因分析: H/, tE0ZV
攻击封包数据改变,原来处理封包的方式已经不能适用了 所以应当修改原来的处理结构! fi?[ e?|c@
3、[079咖啡端]修复双击人物客户端自动退出问题 o9~qJnB/O
双击人物不管是自己还是他人都需要查看角色信息,原先我以为是加入的有家族的原因。 换了个没家族的号还是那样, $C[YqZO
结果我就感觉应该是处理封包的问题了。 说明白点就是 MaplePacketCreator.java 有问题,然后我又仔细比较了下 楚天和咖啡端的 MaplePacketCreator.java OOk53~2id
^k)f oD
发现charinfo 处理有出入。 咖啡端似乎少了一些东西, 就是椅子列表显示那部分。 于是我对照两者的代码修复了下。 G3U+BC23E
也不算是修复。 因为这样弄过以后不会显示你有椅子。 抱歉。 我JAVA不太行。 大家原谅下了。 *Lh0E/
5
O'wN4qb=F
处理方法: <0kRky$
lA]u8+gXd
打开 src\net\s(和谐)f\cherry\tools\MaplePacketCreator.java n[iil$VKh
(或者是src\net\s(和谐)f\odinms\tools\MaplePacketCreator.java) Q z/pz_}
^mz_T+UOe
V_
]4UE
找到 hD$U8~zK
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")); yRgo1o w]
(K?[gI
a"&Z!A:Z=
`8y &
r?[mn^Bo 5
替换成 lO9>?y8.y
mplew.writeInt(0); L>L4%?
mplew.writeShort(0); KBJ|P^W5j
MapleInventory iv = chr.getInventory(MapleInventoryType.SETUP); eq@ v2o7
List<Item> chairItems = new ArrayList(); S`6'~g
for (IItem item : iv.list() ) { u8W*_;%:
if ((item.getItemId() >= 3010000) && (item.getItemId() <= 3020001)) { !^m5by
//chairItems.add(item); 71A{"
} NA3yd^sr
} tNUcmiY
mplew.writeInt(chairItems.size()); H@
w6.[#
for (IItem item : chairItems ) { {UUVN/$
mplew.writeInt(item.getItemId()); T@RzY2tz
} [p7le8=
mplew.writeInt(0); Hou{tUm{xC
4、修复咖啡端不消耗飞镖 *508PY
RangedAttackHandler.java {T^'&W>8G8
tTmFJ5
找到 _c(=>
//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)) { NFa
;
MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, projectile, bulletConsume, false, true); +2?0]6EQ
// } =}q4ked/
L,
D!T&B
按上面方式处理 w{r->Phe
5、修复黑龙项链带不了的BUG 96PVn
先解释一下为什么国服的黑龙项链带不上。 用1.5deMSwZ.exe 打开string.wz得到这样的结果 ebao7r5@
n>eIQaV
Eqp.Ring.1112904.name 彩虹星环绕戒指 [2095484] vj_oMmjKw
Eqp.Ring.1112904.desc 五彩斑斓的星星和心围绕着角色旋转。 [2095507] -p;oe}|
Eqp.Ring.1112905.name 超大心环绕戒指 [2095572] 1mjv~W
Eqp.Ring.1112905.desc 可爱的大心心在角色周围以心形模样旋转。 [2095595] #mM&CscE
Eqp.Ring.1112906.name 心心祝福戒指 [2095664] \E#r[9F{
Eqp.Ring.1112906.desc 可爱的心心在角色头顶画出心形模样旋转。 [2095685] 7"[lWC!As5
Eqp.Ring.1112907.name 小鱼戒指 [2095754] UwM}!K7)G
Eqp.Ring.1112907.desc 装备时,会产生泡泡的效果。有时间限制。 [2095771] |Ji?p>\~
Eqp.Ring.1112916.name 寂寞单身戒指 [2095840] z)]EB6uRg
Eqp.Ring.1112916.desc 单身贵族的独立宣言,玩得就是“寂寞”!最IN的单身标记,高调不怕围观。 [2095861] \u /5&[;
Eqp.Ring.1122000.name 黑龙项环 [2095962] Q3/q%#q>
Eqp.Ring.1122007.name 休彼德蔓的项链 [2096001] rxz3Mqg
Y7jD:P
再来看下其他项链在哪个位置 Xt7'clr
O.4"h4{'
%fyb?6?Y
Eqp.Accessory.1122029.name 苏醒的冒险之心 [1897757] Dr2h-
Eqp.Accessory.1122030.name 苏醒的冒险之心 [1897802] $}
F]pa[
Eqp.Accessory.1122031.name 苏醒的冒险之心 [1897836] JDhA{VN6
Eqp.Accessory.1122032.name 苏醒的冒险之心 [1897870] 7<tqT
@c
Eqp.Accessory.1122033.name 苏醒的冒险之心 [1897904] 3jn@ [ m
Eqp.Accessory.1122034.name 觉醒的冒险之心 [1897938] yf8UfB#a
Eqp.Accessory.1122035.name 觉醒的冒险之心 [1897983] CVUJ(D&Q
Eqp.Accessory.1122036.name 觉醒的冒险之心 [1898017] ,Utw!]
Eqp.Accessory.1122037.name 觉醒的冒险之心 [1898051] 8bysg9H0
Eqp.Accessory.1122038.name 觉醒的冒险之心 [1898085] M84LbgGM%
Eqp.Accessory.1122058.name 休彼德蔓的混沌项链 [1898119] G|MDo|q]
^twv0>vEo
<.' cCY
|knP
很明显盛大把 黑龙项链 和 休彼德蔓的项链 故意或者无意放错了地方,放到了(戒指组里) 'qP^MdoE%~
q#778
现在要做的是把这两个物体重新搬到 Accessory组里。 @t2 Q5c
P0Jd6"sS"
:E^B~ OuL
解决办法: wYxizNv,
#0P<#S^7
(Q4_3<G+
找到服务端目录 wz\String.wz\Eqp.img.xml GHlra^
Mu (Y6
类似这样的结构 B>]5/!_4
]_=HC5"
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 0Fw\iy1o
<imgdir name="Eqp.img"> i&30n#
<imgdir name="Eqp"> $XI<s$P%(%
<imgdir name="Accessory"> U-?
^B*<
<imgdir name="1010000"> SB'YV#--
<string name="name" value="褐色落腮胡"/> BJq}1mn*
</imgdir> Q* 4q3B&
<imgdir name="1010001"> czb%%:EJs|
<string name="name" value="黑胡子"/> zo5.}mr+
</imgdir> F*w|/- e
<imgdir name="1010002"> .J@[v
<string name="name" value="忍者口罩"/> nn
</imgdir> x2B"%3th0
<imgdir name="1010003"> X @Bpjg
<string name="name" value="刮脸痕迹"/> R P X`2zr
Gzfb|9,q
b(yO
查找 name="Ring" 再查找 1122000 (黑龙项环代码) YBCjcD[G
[!
q&r(-K
类似这样 Gu}x+hG
]T l\9we
<imgdir name="1112906"> 'H'+6
<string name="name" value="心心祝福戒指"/> LAKZAi%O0
<string name="desc" value="可爱的心心在角色头顶画出心形模样旋转。"/> WV @Tm$r
</imgdir> '?>eW2d
<imgdir name="1112907"> FezW/+D
<string name="name" value="小鱼戒指"/> _9@?Th&_e
<string name="desc" value="装备时,会产生泡泡的效果。有时间限制。"/> VoyH:
</imgdir> ?.A|Fy^
<imgdir name="1112916"> |)4$\<d
<string name="name" value="寂寞单身戒指"/> E5t+;vL~
<string name="desc" value="单身贵族的独立宣言,玩得就是“寂寞”!最IN的单身标记,高调不怕围观。"/> =c.q]/M
</imgdir> z\h+6FCD
<imgdir name="1122000"> &`Di cfD
<string name="name" value="黑龙项环"/> 'f}S,i +q
</imgdir> rO`g~>-
<imgdir name="1122007"> PVU"oz&T
<string name="name" value="休彼德蔓的项链"/> ?xo,)``
</imgdir>
h.9Lh ;j
_Ry.Wth
把这段代码剪切出来 ]~.J@ 1?
48ma&f;
<imgdir name="1122000"> +{%4&T<nHw
<string name="name" value="黑龙项环"/> IX*S:7S[
</imgdir> <D dHP
<imgdir name="1122007"> )eFFtnu5
<string name="name" value="休彼德蔓的项链"/> ,%'0e/
</imgdir> 7, 13g)
/T(\}Z
放到<imgdir name="Accessory"> 组里。 M$W#Q\<*#r
R>U<8z"i
最后类似这样的结构 #rpqt{ml
+7Lco"\w<
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> &+j^{a
<imgdir name="Eqp.img"> }J
?fJ(
<imgdir name="Eqp"> '*XNgvX
<imgdir name="Accessory"> j'i42-Lt/p
<imgdir name="1122000">
b:QFD|
<string name="name" value="黑龙项环"/> 0;h1LI)
</imgdir> ThlJhTh<%4
<imgdir name="1122007"> iXm||?Rnx
<string name="name" value="休彼德蔓的项链"/> ],YYFU}
</imgdir> 5An0DV5
<imgdir name="1010000"> -h@0 1
<string name="name" value="褐色落腮胡"/> s4gNS
eA
</imgdir> ;
BZM~'
<imgdir name="1010001"> -n
*>zGc
<string name="name" value="黑胡子"/> L_|
uB
</imgdir> Crhi+D
<imgdir name="1010002"> q-G|@6O
<string name="name" value="忍者口罩"/> XeSbA
</imgdir> a!:8`X~[/$
Qkib;\2
W^ :/0WR
然后重启服务端就OK。 装备上黑龙项链把。 不用源代码即可修复。 =.X?LWKY
6、修复PB掉线问题 KYu(H[a
-----------新建文档 复制以下代码 将文件重命名为8820009.img.xml 放到服务端WZ中对应的xml下-- c9uT`h
{~^)-^Wt:
3N"&P@/0x
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> ~0-764%
<imgdir name="8820009.img"> !:<UgbiVv
<imgdir name="info"> .lBY"W&{
<int name="bodyAttack" value="0"/> |3,V%>z
<int name="level" value="1"/> Vrj1$NL%
<int name="maxHP" value="200000"/> k
2uiu
<int name="maxMP" value="0"/> ~8m>DSs)D
<int name="speed" value="0"/> bVeTseAG
<int name="PADamage" value="0"/> 4LEE
/
<int name="PDDamage" value="0"/> cQ.;dtT0
<int name="MADamage" value="0"/> _0*>I1F~
<int name="MDDamage" value="0"/> bXH^Bm
<int name="acc" value="0"/> = b!J)]
<int name="eva" value="0"/> ]X~g@O{>_
<int name="exp" value="0"/>
D' `"_
<int name="undead" value="0"/> .G_3blE;
<int name="pushed" value="1"/> Uo}&-$ B
<float name="fs" value="10.0"/> IOkC [([
<int name="removeAfter" value="5"/> !"J#,e|
<int name="summonType" value="12"/> 6lWFxbh
<int name="hideName" value="1"/> ^CPfo/!
<imgdir name="revive"> (`]*Y(/2G
<int name="0" value="8820001"/> (<3lo
ZaX
<int name="1" value="8820003"/> eM+;x\jo?
<int name="2" value="8820005"/> 1mJ_I|98
<int name="3" value="8820006"/> /plUzy2Yu
<int name="4" value="8820004"/> daIL> c"
<int name="5" value="8820002"/> '98h<(@]
</imgdir> &7w>K6p
<int name="noFlip" value="1"/> 7F(F.ut
</imgdir> z>33O5U
<imgdir name="stand"> -?nT mzRc
<canvas name="0" width="4" height="4"> HD)HCDTX
<vector name="origin" x="36" y="53"/> _qeuVi=A
<int name="delay" value="30"/> MXF"F
:-Kn
<vector name="head" x="1" y="-1500"/> P"x-7>c>Y
</canvas> 0['"m^l0S
</imgdir> = (gmd>N
<imgdir name="hit1"> qysa!B
<canvas name="0" width="4" height="4"> bjBeiKH
<vector name="origin" x="36" y="53"/> uT} TSwgp
<int name="delay" value="30"/> iEviH>b5
<vector name="head" x="1" y="-1500"/> )SX6)__
</canvas> !e'0jf-~
</imgdir> q83~j`ZJ$
<imgdir name="die1"> 2rCY&8
<canvas name="0" width="213" height="450"> (bx\4Ws
<vector name="origin" x="774" y="495"/> &@HNz6KO
<int name="delay" value="180"/> t/*K#]26
<vector name="head" x="1" y="-1500"/> +z=%89GJ
<int name="a0" value="255"/> E^ok`wfO
<int name="a1" value="255"/> PGPbpl&\t
</canvas> mp,e9Nd;
<canvas name="1" width="227" height="493"> [u9JL3
<vector name="origin" x="778" y="534"/> o~x39
<int name="delay" value="180"/> n<:d%&^n
<vector name="head" x="1" y="-1500"/> ;(Xe
@OtW
</canvas> N4H+_g|
<canvas name="2" width="232" height="497"> Yb\\
w<@g
<vector name="origin" x="783" y="533"/> qX+gG",8
<int name="delay" value="180"/> e$EF% cKH
<vector name="head" x="1" y="-1500"/> "b>KUzuYT
</canvas> 'n[+r}3
<canvas name="3" width="237" height="497"> 'K3s4x($
<vector name="origin" x="787" y="529"/> %Lp7@
<int name="delay" value="180"/> sk
?'^6Xh
<vector name="head" x="1" y="-1500"/> 2d2@ J{
</canvas> vA;F]epr!
<canvas name="4" width="239" height="494"> l-S'ATZ0p
<vector name="origin" x="788" y="525"/> 2]} U
ov
<int name="delay" value="180"/> ,![Du::1
<vector name="head" x="1" y="-1500"/> em1cc,
</canvas> M>jBm
.
<canvas name="5" width="241" height="496"> zZ9<4"CIk
<vector name="origin" x="789" y="526"/> `8(h,aj;
<int name="delay" value="180"/> ],F}}pv
<vector name="head" x="1" y="-1500"/> 6
r.H8
</canvas> !p,hy`
<canvas name="6" width="243" height="494"> *?bk?*?s
<vector name="origin" x="790" y="523"/> ZjZh z`
<int name="delay" value="180"/> }11`98>B6:
<vector name="head" x="1" y="-1500"/> 1_NG+H]x9
</canvas> zNny\Z
<canvas name="7" width="243" height="491"> Q*:h/Lhb&
<vector name="origin" x="790" y="520"/> i.t9jN
<int name="delay" value="180"/> pf8O`e,Awf
<vector name="head" x="1" y="-1500"/> %A62xnX
</canvas> r)p2'+}pV
<canvas name="8" width="241" height="483"> bqrJP3
<vector name="origin" x="789" y="513"/> x$n~f:1Y
<int name="delay" value="180"/> |jk-@ Z*
<vector name="head" x="1" y="-1500"/> rj,K`HD
</canvas> 8b(1ut{
<canvas name="9" width="239" height="479"> rocB"0
<vector name="origin" x="788" y="510"/> V(2,\+ t
<int name="delay" value="180"/> Pc(n@'m~
<vector name="head" x="1" y="-1500"/> +lW}ixt
</canvas> Q+d.%qhc
<canvas name="10" width="237" height="476"> {zz6XlKPj
<vector name="origin" x="787" y="508"/> O<1vSav!K
<int name="delay" value="180"/> WY"Y)S
<vector name="head" x="1" y="-1500"/> ^.#X<8hr
</canvas> gr>o
E#7
<canvas name="11" width="230" height="485"> g. ?*F#2
<vector name="origin" x="784" y="521"/> /> 3
<int name="delay" value="180"/> l+2cj?X
<vector name="head" x="1" y="-1500"/> n#>.\F
</canvas>
MkDK/K$s
<canvas name="12" width="235" height="490"> [
vWkAJ'K
<vector name="origin" x="779" y="535"/>
@yt2_
<int name="delay" value="180"/> ySQ-!fQnP
<vector name="head" x="1" y="-1500"/> t0bhXFaiE
</canvas> {jhmp\PN
<canvas name="13" width="275" height="495"> *IWFeu7y
<vector name="origin" x="797" y="540"/> S\9t4Ki_'
<int name="delay" value="180"/> #*$_S@
<vector name="head" x="1" y="-1500"/> [v0ri<