| 🎉 |
隐藏内容已自动解锁
隐藏内容因满足 [ 发布时间满60天,帖子热度超6666点击,参与人数超10人 ] 其中条件之一,触发了自动开放机制。
无需回复,所有访客均可直接查看以下内容:
|
由于刚才发错,三楼才是连接 q#K0EAgC
服务端修改文字教程 \H
5t-w=
1、[079咖啡端]添加打开一个没有JS的NPC出现对话框 h6?o)Q>N
打开scr/net/s(和谐)f/odinms/scripting/npc/NPCScriptManager.java $."Fz
x
/#j)GlNp:
找到 E8 5TCS1
public void start(MapleClient c, int npc) { ~MP
/[,j`
try { t
?05
NPCConversationManager cm = new NPCConversationManager(c, npc); }!"Cvu
if (cms.containsKey(c)) { [LrO"9q(
return; /Mj|Px%
} "]W,,A-
cms.put(c, cm); Pm QeO*f+
Invocable iv = getInvocable("npc/" + npc + ".js", c); tMXNi\Bj
if (iv == null || NPCScriptManager.getInstance() == null) { ?;A\>sP
cm.dispose(); lT~WP)
return; 0}M'>
} OS1f}<
engine.put("cm", cm); ";^_[n
NPCScript ns = iv.getInterface(NPCScript.class); `|mV~F|
scripts.put(c, ns); AC!yc(^<
ns.start(); ?Zb3M
} catch (Exception e) { qcge#S>
log.error("Error executing NPC script " + npc, e); J!">L+Zcx
dispose(c); ^
S 45!mSb
cms.remove(c); uX6p^KNm5
} eN`G2eE
} >
w SI0N
kx;7/fH
全选替换掉 )1 QOA
将下面一段代码替换进去 "LH3ZPD
public void start(MapleClient c, int npc) "whs?^/
{ V9
cj
try { dh1 N/[
if (c.getPlayer().isGM())
zjSHa'9*
c.getPlayer().dropMessage("[系统提示]您已经建立与NPC:" + npc + "的对话。"); GyVuQ51
g?*D)WU
NPCConversationManager cm = new NPCConversationManager(c, npc); ?1r<`o3l\
if (this.cms.containsKey(c)) j%}9tM6[
return; M"-.D;sa1
olKM0K
this.cms.put(c, cm); |io)?`pj
Invocable iv = getInvocable("npc/" + npc + ".js", c); w-C%,1F,/
if ((iv == null) || (getInstance() == null)) { 3J8M0W
cm.sendOk("对不起,我并没有被管理员设置可使用,如果你觉得我应该工作的,那就请你汇报给管理员.\r\n我的ID编号: #r" + npc + "#k."); ?!.J0q
cm.dispose(); [;UI8Stw
return; :ciD!Ly
} <U8w# dc
this.engine.put("cm", cm); }PM7CZSq
NPCScript ns = (NPCScript)iv.getInterface(NPCScript.class); !pHI`FeAV
this.scripts.put(c, ns); RL
H!f1cta
ns.start(); mQ9shdvt-
} catch (Exception e) { NC iBn>=:
log.error("Error executing NPC script " + npc, e); 6$l?D^{
dispose(c); TD78&a#
this.cms.remove(c); xrI9t?QaCb
} d.
ZfK
} eU.C<Tv:8
2、[079咖啡端]修复怪物打不死 KOoV'YSC[(
1.打开源码找到net\s(和谐)f\odinms\net\channel\handler\AbstractDealDamageHandler.java `fl$ o6S/
]f}(iD
找到这个函数parseDamage() 然后用下面的代码替换 注意替换前先备份! }}bMq.Q'
)`6OSB
--------------------------------------------------------------------------------- d(9-T@J
B
]sVlbt
public AttackInfo parseDamage(MapleCharacter c, LittleEndianAccessor lea, boolean ranged) { 4vNH"72P
AttackInfo ret = new AttackInfo(); /
%)
(Uz
lea.readByte(); /SyAjZ
lea.skip(8); h8-uI.RZ
ret.numAttackedAndDamage = lea.readByte(); Ggy?5N7P
lea.skip(8); 1 |/ |Lq%w
ret.numAttacked = (ret.numAttackedAndDamage >>> 4 & 0xF); ?$y/b}8
ret.numDamage = (ret.numAttackedAndDamage & 0xF); ; P$ _:-C
ret.allDamage = new ArrayList(); tY:,9eh7B
ret.skill = lea.readInt(); 50a';!H
lea.skip(8); HVzkS|^F
if ((ret.skill == 2121001) || (ret.skill == 2221001) || (ret.skill == 2321001) || (ret.skill == "<f?.l\+
BB_(!omq[
5201002) || (ret.skill == 14111006) || (ret.skill == 5101004) || (ret.skill == 15101003)) EVE"F'Ww,_
ret.charge = lea.readInt(); 0g; o6Fg
else { B>sQcZ:
ret.charge = 0; [)il_3t
} d=
?lPEzSA
?{xD{f$
if (ret.skill == 1221011) 43 <i3O
ret.isHH = true; ?mN!9/DIc
irP*:QM
lea.readInt(); G[u{! 2RS
ret.aresCombo = lea.readByte(); N8=-=]0G
int sourceid = ret.skill; (y1S*_D
if ((sourceid == 21100004) || (sourceid == 21100005) || (sourceid == 21110003) || (sourceid == lkC| g%f
m3^D~4
21110004) || (sourceid == 21120006) || (sourceid == 21120007)) \HQ.Pwr 6
c.setCombo(1); #%L_wJB-
0k4XVd+Nv
ret.pos = lea.readByte(); cl |}0Q5
ret.stance = lea.readByte(); ,?`kYPZ
d(Hqj#`-31
if (ret.skill == 4211006) { 7xR:\FBa^
return parseMesoExplosion(lea, ret); }:QoY Nq
} =kCiJ8q|
+q+JOS]L
if (ranged) { T0.sL9
lea.readByte(); jVHS1Vsei
ret.speed = lea.readByte(); E,cQ9}/
lea.readByte(); 0QxBC7`qp
ret.direction = lea.readByte(); D&p
X0
lea.skip(7); =@q,/FR-
if ((ret.skill == 3121004) || (ret.skill == 3221001) || (ret.skill == 5221004) || (ret.skill == *pAB dP+
P>$+XrTE
13111002)) =k
;
X}/
lea.skip(4); Ndyo)11z
} PWquu`
else {
-Owb@Nw
lea.readByte(); "KSdC8MS
ret.speed = lea.readByte(); ;0NJX)GL
lea.skip(4); MXjN./
} (f~}5O<
Ps;4 ]=c
for (int i = 0; i < ret.numAttacked; ++i) { i6y=3k
int oid = lea.readInt(); Kaaz,C.$^
TtQd#mSI\
lea.skip(14); 7#X`D
xMa9o
List allDamageNumbers = new ArrayList(); 3#GIZL}!x
for (int j = 0; j < ret.numDamage; ++j) { Zq H-]?)
int damage = lea.readInt(); d/awQXKe7
k_?~@G[I
MapleStatEffect effect = null; oel?w e6
if (ret.skill != 0) 66$hdT$
effect = SkillFactory.getSkill(ret.skill).getEffect(c.getSkillLevel(SkillFactory.getSkill ln":j?`
C~'.3Q6
(ret.skill))); F+j"bhe
9e}%2,
if ((damage != 0) && (effect != null) && (effect.getFixedDamage() != 0)) G*~CB\K_
damage = effect.getFixedDamage(); ;e9&WEG_\
Qz_4Ms<o
allDamageNumbers.add(Integer.valueOf(damage)); ed`7GZB
} .[1@wW&L
if (ret.skill != 5221004) 5 PP^w~n
lea.skip(4); 25r3[gX9`
ZwiXeD+4
ret.allDamage.add(new Pair(Integer.valueOf(oid), allDamageNumbers)); 52^,qP'6
} \< a^5'
Z&=Oe^
return ret; .9Dncsnf,`
} c?aOX/C'
!89hO4 0r
jj]|}G
---------------------------------------------------------------------------------
rFUd
G({VK
2.接着找到net\s(和谐)f\odinms\client\MapleCharacter.java VuN#j<H
+ZFN8
查找 @\>7
wt_'
//战神Combo `-K[$V
private int combo = 0; (]10Z8"fJ
private int comboCount = 0; &7\fj
fZ^ad1o
将其修改为 6E(..fo:"
//战神Combo m9]Ge]
private int combo = 0; Y"nz l]T
private int comboCounter = 0; B|{E[]iK
^t$uDQ[hA
此时应再查找comboCount 将其修改为comboCounter(不然原变量将不可用 导致变量未定义) I1s$\NZ~]
应该也可以重新定义comboCounter这个变量 没实验 Hw62'%
@W~aoq6
然后在下面适当处增加两个函数 ZS`Kj(D
" 9N;&^I
public int getCombo() { h##U=`x3
return this.comboCounter; -Rr !J37
} u
yE#EnsH
#&?}h)Jr'
public int setCombo(int combo) { Nus]]Iy-g
return (this.comboCounter = combo); _'^_9u G
} H
]!P[?
8-cuaa
代码就修改完毕了 编译后 怪物就应该能掉血了!
':DL
bQPO'S4
]86*k%
A
大概原因分析: Vn\jUEC
攻击封包数据改变,原来处理封包的方式已经不能适用了 所以应当修改原来的处理结构! +At0V(
3、[079咖啡端]修复双击人物客户端自动退出问题 A"R(?rQi=
双击人物不管是自己还是他人都需要查看角色信息,原先我以为是加入的有家族的原因。 换了个没家族的号还是那样, _::ssnG3jT
结果我就感觉应该是处理封包的问题了。 说明白点就是 MaplePacketCreator.java 有问题,然后我又仔细比较了下 楚天和咖啡端的 MaplePacketCreator.java Vi0D>4{+
&qIdT;^=I
发现charinfo 处理有出入。 咖啡端似乎少了一些东西, 就是椅子列表显示那部分。 于是我对照两者的代码修复了下。 "|R75m,Id
也不算是修复。 因为这样弄过以后不会显示你有椅子。 抱歉。 我JAVA不太行。 大家原谅下了。 7s;;2<k;_
\((5Sd
处理方法: L|;sB=$'{
YkFERIa076
打开 src\net\s(和谐)f\cherry\tools\MaplePacketCreator.java WGyPyG#Fl
(或者是src\net\s(和谐)f\odinms\tools\MaplePacketCreator.java) W1ndb:
Lf%}\0:
Vock19P
找到 BWB}bq
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")); pd.unEWwF
E]S:F3
&5G@YQD1e
pRUQMPn (
s?4nR:ZC}
替换成 'Z%1Ly^b
mplew.writeInt(0); F
IB)cpo
mplew.writeShort(0); )5y"T0]
MapleInventory iv = chr.getInventory(MapleInventoryType.SETUP); yL
-}E
List<Item> chairItems = new ArrayList(); I7#JT?\}
for (IItem item : iv.list() ) { [$:L|V!{
if ((item.getItemId() >= 3010000) && (item.getItemId() <= 3020001)) { qG9j}[d'
//chairItems.add(item); xD sKb_
} tCPK_Wws?Z
} $Zkk14
mplew.writeInt(chairItems.size()); #B#xSmak
for (IItem item : chairItems ) { 3\C+g{}e
mplew.writeInt(item.getItemId()); 2!9Zw$
} {kb7u5-
mplew.writeInt(0); | h+vdE8
4、修复咖啡端不消耗飞镖 A5]yC\*zt
RangedAttackHandler.java e<FMeg7n
<Z\{ijfvD
找到 8!@}\6qM
//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)) { ~k}O"{
y
MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, projectile, bulletConsume, false, true); 17 0r 5
// } <Of-,PcCV
c6y>]8_
按上面方式处理 %?[0G,JG
5、修复黑龙项链带不了的BUG j*;.>akY7
先解释一下为什么国服的黑龙项链带不上。 用1.5deMSwZ.exe 打开string.wz得到这样的结果 IYH
4@v/#
! CJ*zZ*
Eqp.Ring.1112904.name 彩虹星环绕戒指 [2095484] }U4mXkZF
Eqp.Ring.1112904.desc 五彩斑斓的星星和心围绕着角色旋转。 [2095507] iM9^.
Eqp.Ring.1112905.name 超大心环绕戒指 [2095572] Ttp%U8-LJR
Eqp.Ring.1112905.desc 可爱的大心心在角色周围以心形模样旋转。 [2095595] W5~!)Ec
Eqp.Ring.1112906.name 心心祝福戒指 [2095664] h~
z}N
P
Eqp.Ring.1112906.desc 可爱的心心在角色头顶画出心形模样旋转。 [2095685] <=w!:
Eqp.Ring.1112907.name 小鱼戒指 [2095754] 2iO{*cB
Eqp.Ring.1112907.desc 装备时,会产生泡泡的效果。有时间限制。 [2095771] $xF[j9nM
Eqp.Ring.1112916.name 寂寞单身戒指 [2095840] :uC9 #H"b
Eqp.Ring.1112916.desc 单身贵族的独立宣言,玩得就是“寂寞”!最IN的单身标记,高调不怕围观。 [2095861] Q/*|ADoq
Eqp.Ring.1122000.name 黑龙项环 [2095962] ]1W]
Eqp.Ring.1122007.name 休彼德蔓的项链 [2096001] >hV2p/D
A..`?oGj
再来看下其他项链在哪个位置 |x>5 T}
FN (O
\w(0k^<7
Eqp.Accessory.1122029.name 苏醒的冒险之心 [1897757]
^L8:..+:
Eqp.Accessory.1122030.name 苏醒的冒险之心 [1897802] /E i e5p
Eqp.Accessory.1122031.name 苏醒的冒险之心 [1897836] Ww#!-,*]o
Eqp.Accessory.1122032.name 苏醒的冒险之心 [1897870] pF8+<
T3y
Eqp.Accessory.1122033.name 苏醒的冒险之心 [1897904] cqW(9A|8
Eqp.Accessory.1122034.name 觉醒的冒险之心 [1897938] N.ZuSkRM
Eqp.Accessory.1122035.name 觉醒的冒险之心 [1897983] \'iy(8i
Eqp.Accessory.1122036.name 觉醒的冒险之心 [1898017] Dca,IaT'
Eqp.Accessory.1122037.name 觉醒的冒险之心 [1898051] >ffC?5+
Eqp.Accessory.1122038.name 觉醒的冒险之心 [1898085] p{``a=
Eqp.Accessory.1122058.name 休彼德蔓的混沌项链 [1898119] ]&`=p{Z
S1m5z,G
C?'s
Q:T9&_|
很明显盛大把 黑龙项链 和 休彼德蔓的项链 故意或者无意放错了地方,放到了(戒指组里) .b^!f<j
aygK$.wos
现在要做的是把这两个物体重新搬到 Accessory组里。 .j=mT[N,I
E\cX
4Tx.|
解决办法: iM6(bmc.
S2W@;XvV
2iOYC0`!
找到服务端目录 wz\String.wz\Eqp.img.xml ?5,I`9
<U\8&Uv>
类似这样的结构 <HIM
k
W/~q%\M {
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> WN#2<XjG
<imgdir name="Eqp.img"> W/CZ/Mc
<imgdir name="Eqp"> -w5sXnS
<imgdir name="Accessory"> |YfJ#Agm+
<imgdir name="1010000"> |`{$Ego:
<string name="name" value="褐色落腮胡"/> UN:qE oS
</imgdir> [X8EfU}
<imgdir name="1010001"> \=&Z_6Mu
<string name="name" value="黑胡子"/> GhjqStjS&l
</imgdir> acQHqR
<imgdir name="1010002"> ,ei=w,O
<string name="name" value="忍者口罩"/> sB^ejH
</imgdir> 'T3xZ?*q=
<imgdir name="1010003"> qElPYN*wF
<string name="name" value="刮脸痕迹"/> } j;es(~D
U\-.u3/
?du*ITim
查找 name="Ring" 再查找 1122000 (黑龙项环代码) _#{qDG=
?C
类似这样 {LCKt/Z>P
CVEo<Tz
<imgdir name="1112906"> D]|{xK C}
<string name="name" value="心心祝福戒指"/> 5@I/+D
<string name="desc" value="可爱的心心在角色头顶画出心形模样旋转。"/> D";clP05K
</imgdir> oJ/=&c
<imgdir name="1112907"> bka%W@Y%
<string name="name" value="小鱼戒指"/> ~,xso0
<string name="desc" value="装备时,会产生泡泡的效果。有时间限制。"/> v-Q>I5D;:
</imgdir> 4T
v=sP
<imgdir name="1112916"> =A$d)&
<string name="name" value="寂寞单身戒指"/> 9>`d
B
<string name="desc" value="单身贵族的独立宣言,玩得就是“寂寞”!最IN的单身标记,高调不怕围观。"/> S-</(,E}|
</imgdir> wwJ s_f\
<imgdir name="1122000">
BW`;QF<
<string name="name" value="黑龙项环"/> {MDM= ;WP_
</imgdir> ^D9w=f#a
<imgdir name="1122007"> TqOH(={
<string name="name" value="休彼德蔓的项链"/> |oe
</imgdir> `~41>mM%
t)~$p#NS
把这段代码剪切出来 b^P\Q s*m
!T8sWMY
<imgdir name="1122000"> E&U_@ bc-
<string name="name" value="黑龙项环"/> _5$L`&
</imgdir> LX=v
_}l
J
<imgdir name="1122007"> K
]|hkp&
<string name="name" value="休彼德蔓的项链"/> 2 &_>2"=<@
</imgdir> GxC\Nj#
{SRD\&J[
放到<imgdir name="Accessory"> 组里。 t=s.w(3t
+kD JZ
最后类似这样的结构 YQD/vc~8G
_Vt(Eg_\
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> )V*`(dn'zm
<imgdir name="Eqp.img"> `9P`f4x
<imgdir name="Eqp"> ^gR~~t;@
<imgdir name="Accessory"> t%f>*}*P*
<imgdir name="1122000"> R|wS*xd ,
<string name="name" value="黑龙项环"/> eIN0
T;1T
</imgdir> JLjs`oqh
<imgdir name="1122007"> aH8]$e8_,\
<string name="name" value="休彼德蔓的项链"/> bT|-G2g7Z
</imgdir> YRd`G3J
<imgdir name="1010000">
?.beN[X
<string name="name" value="褐色落腮胡"/> 1F3Q^3+
</imgdir> /;E=)(w
<imgdir name="1010001"> 2+g'ul`
<string name="name" value="黑胡子"/> /V#?d
</imgdir> >Ad`_g6Wew
<imgdir name="1010002"> W ,v0~
<string name="name" value="忍者口罩"/> HMmVfGp]
</imgdir> /~c9'38
-C!m#"PDW
_u6MSRX[6$
然后重启服务端就OK。 装备上黑龙项链把。 不用源代码即可修复。 4%JJ}{Ff
6、修复PB掉线问题 P4|A\|t
-----------新建文档 复制以下代码 将文件重命名为8820009.img.xml 放到服务端WZ中对应的xml下-- wByTNA7
)a`kL,
hb)C"q=
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> u|D L?c>W
<imgdir name="8820009.img"> l7IF9b$c
<imgdir name="info"> \YF07L]qs-
<int name="bodyAttack" value="0"/> K*4ib/'E a
<int name="level" value="1"/> c>+68<H
<int name="maxHP" value="200000"/> BqdpJIr
<int name="maxMP" value="0"/> s|TO9N)pO
<int name="speed" value="0"/> {/>uc,8O
<int name="PADamage" value="0"/> 2:e7'}\D.
<int name="PDDamage" value="0"/> NGO
?K?
<int name="MADamage" value="0"/> VRSBf;?
<int name="MDDamage" value="0"/> x {Dw?6TP
<int name="acc" value="0"/> [8oX[oP
<int name="eva" value="0"/> 5 [4{1v
<int name="exp" value="0"/> %P(2uesd
<int name="undead" value="0"/> lk
/Ke
<int name="pushed" value="1"/> aMJ2bu
<float name="fs" value="10.0"/> Z/4bxO=m
<int name="removeAfter" value="5"/> Q|2*V1"r<2
<int name="summonType" value="12"/> "I{Lcn~!@
<int name="hideName" value="1"/> A0v@L6m-O
<imgdir name="revive"> (*V!V3E3#
<int name="0" value="8820001"/> kr!>rqN5
<int name="1" value="8820003"/> :()K2<E
<int name="2" value="8820005"/> Z
J1@z.
<int name="3" value="8820006"/> 1Y~'U
=9
<int name="4" value="8820004"/> ZW@cw}
<int name="5" value="8820002"/> jJ,y+o
</imgdir> _?$w8 S%
<int name="noFlip" value="1"/> <JvYCWX`
</imgdir> C#3&,G W
<imgdir name="stand"> 4p6T0II_$
<canvas name="0" width="4" height="4"> s%6L94\t
<vector name="origin" x="36" y="53"/> <54KWC86)J
<int name="delay" value="30"/> 7-\wr^ll3
<vector name="head" x="1" y="-1500"/> NdXC8
</canvas> ~d ~oC$=TC
</imgdir> b5f+q:?{
<imgdir name="hit1"> t\Qm2Q)>
<canvas name="0" width="4" height="4"> Xf
mN/j2
<vector name="origin" x="36" y="53"/> %Q;:nVt
<int name="delay" value="30"/> @3FQMs4
<vector name="head" x="1" y="-1500"/> <yvo<R^30
</canvas> =5YbK1Q^
</imgdir> Y@T$O<*
<imgdir name="die1"> uX&h~qE/
<canvas name="0" width="213" height="450"> 6q
`Un}
<vector name="origin" x="774" y="495"/> _x,(576~
<int name="delay" value="180"/> 7| j
rk
<vector name="head" x="1" y="-1500"/> MfKru,LSh
<int name="a0" value="255"/> If8
^
<int name="a1" value="255"/> |tTcJ\bG
</canvas> {]N7kY.W
<canvas name="1" width="227" height="493"> ApplWa3
<vector name="origin" x="778" y="534"/> &SPr#OkW
<int name="delay" value="180"/> 3Ljj|5.q
<vector name="head" x="1" y="-1500"/> M8y|Lm}o
</canvas> -SzCeq(p%5
<canvas name="2" width="232" height="497"> &+H\ST(/
<vector name="origin" x="783" y="533"/> X\*H7;k,
<int name="delay" value="180"/> >enP~uW[#
<vector name="head" x="1" y="-1500"/> r/HG{XH`
</canvas> ")nKFs5
<canvas name="3" width="237" height="497"> Q7/Jyx|
<vector name="origin" x="787" y="529"/> lE8_Q *ev
<int name="delay" value="180"/> t? =V<Yd1
<vector name="head" x="1" y="-1500"/> Y/pK
</canvas> 'GO*6$/
<canvas name="4" width="239" height="494"> 7_lgo6
<vector name="origin" x="788" y="525"/> QXEZ?gx
<int name="delay" value="180"/> ^v:XON<
<vector name="head" x="1" y="-1500"/> #'RfwldD9
</canvas> N.SV*G
@
<canvas name="5" width="241" height="496"> =G
eGlI6
<vector name="origin" x="789" y="526"/> _.%g'=14f
<int name="delay" value="180"/> C+mPl +}w
<vector name="head" x="1" y="-1500"/> #BZ5Mxzj
</canvas> 3x
z
z*
<
<canvas name="6" width="243" height="494"> !<b+7A
<vector name="origin" x="790" y="523"/> [TxvZq*4
<int name="delay" value="180"/> !FB2\hiM
<vector name="head" x="1" y="-1500"/> Y|W#VyM-
</canvas> */$] kE
<canvas name="7" width="243" height="491"> <dz_7hR"
<vector name="origin" x="790" y="520"/> rhGB l`(B
<int name="delay" value="180"/> XIl#0-E0X
<vector name="head" x="1" y="-1500"/> `R
lWhdE
</canvas> Y ._Om}H
<canvas name="8" width="241" height="483"> w]N;HlU
<vector name="origin" x="789" y="513"/> _)4zm
<int name="delay" value="180"/> A.r.tf}:
<vector name="head" x="1" y="-1500"/> ]+tO
</canvas> 47A[-&y*X
<canvas name="9" width="239" height="479"> k
,r*xt
<vector name="origin" x="788" y="510"/> #]^M/y
h
<int name="delay" value="180"/> &?}h)U#:
<vector name="head" x="1" y="-1500"/> wWq-zGH|&