游客您好
  • 点击联系客服

    在线时间:8:30-18:00

    客服微信

    Wkr-3000y-kf

    电子邮件

    3000y@wenkeruan.com
  • 手机版

    随时掌握游戏动态

  • 扫一扫二维码

    添加微信客服

Lv.7 版主
8号会员,9活跃值,2022.09.01 加入
  • 127发帖
  • 123主题
  • 0关注
  • 0粉丝
这个人很懒,什么也没有留下。
独家推荐 更多>

千年脚本编写帮助

[复制链接]
异仟年认证商人 发表于 2022-9-5 17:44:23 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
千年用的脚本是基于 Pascal语言,演化而来的,其中变量定义和函数的应用也十分的象,但不用为了写脚本而专门的去学 Pascal语言。2 z: n/ z5 T1 o$ ?* z) \, X
; C' l# ]- ?, o2 N0 o4 j
千年有三个常用的数据类型,String 字符串型,Integer 整型,Boolean 布尔型。4 C8 V) l0 m' E) `" t0 V5 @5 }  s
1 p, J* S9 m( ]: b4 h5 i% i
一个函数的基本结构是这样的:! z! y4 l9 _+ }/ b' C5 T
+ M! j: [( C+ D. ^% i2 s
procedure OnCreate (aStr : String);
( `  u& k+ R; a4 w' w! D1 Nvar
7 T7 l5 @* M; `4 g   定义变量; g" O4 E: v$ x. }$ i4 D
begin" a1 H% J  n' Y1 |
   语句
0 U; k1 F5 f- x7 h- G8 b# `+ ?end;1 l" h/ l  d+ y
# {8 {/ e7 T: d+ a- s! D% O0 Z
在每个脚本的前面都会看到一堆函数,这些是千年的库函数,可以直接拿来使用的。例如:callfunc (aText: string) ,可以返回一些信息,具体返回什么由括号里面的 aText参数决定,这些参数在下面会给出。Random (aScope: integer),可以产生 aScope范围内的随机整数。# ^6 W1 k) _! T3 W: J0 x& d
# ^  H8 C0 G1 p9 j5 h, r4 P
千年中有两个非常重要的函数,一个是 print,另外一个是 callfunc,用法和参数比较复杂。  F# |7 j  C! s" a' j
5 [3 Q. T( m# ]7 {5 m/ W
/***********事件触发的函数**********/+ F0 C3 N1 @) {5 i7 @
) T! t5 n+ J! d4 _2 ^9 L' ]5 T
//当有人*近时" I. _9 z8 U9 K
procedure OnApproach (aStr : String);
+ h% L# M+ T) m6 c5 n6 F$ a, g* ^1 z, L2 p* v. Q$ P3 k
//当有人离开时; o; g+ @% p: \$ C- E; z
procedure OnAway (aStr : String);% V: w) Q- Q( Z7 X: O$ F8 J) X3 u

% K9 [8 ], B- c3 M- L# Z//当受到掌风攻击时
+ B2 d9 O5 c6 j/ Y/ V$ E, @: T% X( a9 Bprocedure OnBow (aStr : String);
) U! Y8 G* t/ G$ N, E
& a- l' F* L; }* e* {, B//当状态改变时
4 Y0 J' B7 `# a6 b; O8 Fprocedure OnChangeState (aStr : String);
1 D; ~8 W3 r+ \/ R$ r! W. Z& C8 F( x0 P/ r( U& X9 u) o
//当初始创建时
* a6 h! Z. n, J9 k+ ?3 Fprocedure OnCreate (aStr : String);
. Q4 _% d( `* q( n# ?2 m% H7 Q, }
//当被双击时0 f3 y( e: G6 ^# ?+ v3 P
procedure OnDblClick(aStr : String);
( J' ]; J. z" W
% c" L, n0 b- N//当死亡前
6 G, r* _0 N; w! m8 n6 _procedure OnDieBefore (aStr : String);& H3 B' m6 _9 P- \% X
) o$ R' ]$ h6 H; T+ R8 A$ X
//当死亡后, [3 K: W) r- W# {0 L- f3 r% c" i
procedure OnDie (aStr : String);1 ^% D9 J) Z5 v) Q6 E

* t( B# \% M% D6 B% ~: X//当被拖放物品时
) ]9 W2 f, O8 V0 Y+ O* S; eprocedure OnDropItem (aStr : String);
& d- X1 {& P/ o* W! R, e* a% _( N: ~3 K2 R6 {
//当得到命令消息时. e& M$ V: F% E, i  R( s' h. ]
procedure OnGetResult (aStr : String);
* H1 P" i0 I0 c. F2 F* z. W% F# i6 }* i! G! E
//当得到改变步长时
; r* z8 I* I/ p% N0 lprocedure OnGetChangeStep (aStr : String);
; t2 i4 ^" z  t( u9 D" X/ s
8 A4 h0 P6 l+ ]* r( R( O- ]2 @//当受到攻击时
( G$ [0 p, z$ R/ ]$ rprocedure OnHit (aStr : String);
) x  w& V; }$ i8 Z) D( y' v2 R/ c# h0 f
//当被左鼠标键单击时
+ s& M8 l8 m" C  Lprocedure OnLeftClick (aStr : String);
& a% D) x1 ~, C! s4 U% m1 J7 I4 p" n& r7 b3 b7 p
//- E9 S& f/ a9 S0 k6 ~* f( c
procedure OnRegen (aStr : String);5 `0 ^( J, P5 @$ s( M
  f, w9 G# X6 j/ F/ t" z5 ~; {% ~7 i
//
  Q- M0 U; R- {' H9 P' Yprocedure OnTimer (aStr : String);
" `' \/ C' {* J; g
# P: ?2 ]! O# L" \! x  i//当物件发生翻转打开时,一般是用于门
' C0 G4 z9 z7 F% U" j0 ~procedure OnTurnOn (aStr : String);- r9 o& C- f2 a- A
5 e( C: @, R; |! i8 t/ k( \/ ~
//当物件发生翻转关闭时,一般是用于门
4 m4 N* K$ `# oprocedure OnTurnOff (aStr : String);3 ~. s/ ?$ Z  u( z8 s

9 K6 v7 h" K5 F2 f( ]//当用户开始游戏时# o* i0 I1 g. `& Q& ^8 a
procedure OnUserStart (aStr : String);8 I& G' a1 ]; c0 k6 n7 r
: g5 n' k, y! t- R
//当用户结束游戏时
2 y2 I3 [# Q; U2 {) j! oprocedure OnUserEnd (aStr : String);
1 w  ]5 R4 J2 ^7 x0 h8 ^! z1 m  z& N% ~/ }, `& b9 ?
//当移动时7 t: S' o& P" A! e  U" L
function OnMove (aStr : String) : String;$ O( X' _, m1 M7 i

1 m" N5 Q& G! E2 M) u6 \//# c1 {" r& D7 X+ U0 |8 Q. ~
function OnDanger (aStr : String) : String;
3 w- K3 K* w+ `  x7 h# V. `/ V" G5 `! v8 B: `
//产生一个随机数(系统函数)$ s  P7 S$ g+ d6 ]) @3 c, Z9 p
function  Random (aScope: integer): integer;. P8 m* X3 k& r8 @* O' o

' ^; P" L  z+ L- b. Q. c//返回指定参数的消息(系统函数)- V& `" `( W: w
function  callfunc (aText: string): string;
' U4 d6 B, S/ s' x8 `  [8 n" h
$ _: B8 L$ i  b. t//执行一条命令,可以是说话、传送、获得玩家的物品等(系统函数)
/ T" Z. c! M% B/ [procedure print (aText: string);: m5 L2 k2 M7 U& y0 ^8 k

( ?& E( U* w4 W* Z' e6 B具体参数(略),整理中...........
. O% E" f( L- L' v
2 V. A/ ~9 _8 \//转换字符串为整数(系统函数). J# H, o3 O; G' C# A5 u
function  StrToInt (astr: string): integer;; k& |! K3 `8 s; Z6 O$ i# X# `

; Z; M1 }6 i9 {/ g+ ~# o9 [//转换整数为字符串(系统函数)# Q1 w  m; O  A( R7 l
function  IntToStr (aInt: integer): string;
  R# g+ G+ v3 ^5 p
, |9 L( W; A# w- H# M1 r* R4 Z/***********事件触发的函数**********/
6 |( Q9 w: P' N
$ {" C) q  H+ b" c3 o
; D( C# [+ w6 n9 G+ n# D- w( Z
8 z+ E/ a$ E; `
6 g2 J* p0 v8 i( c6 k/ c3 g" T4 F. E) I# f, e
+ f1 u. T. l! Z/ P
) h; y) d/ _9 h% G/ m1 @/ \

" c/ F- A) d+ ?( w' e9 I* r/ J9 I1 |; U, q
function  callfunc (aText: string): string;   //以下为 aText参数的值
% r+ z5 }2 l+ P8 m% V
- Z6 Q5 H0 A  Hgetsysteminfo                    获得系统信息+ o- R3 Q" w: F% Q* _7 a/ C; U$ ^5 o
getname                          获得名字% Y/ D* Z- s! U7 ?0 B
getsendername                    获得消息发送者名字' m. r9 o2 T5 H# G( G) `: F
getage                           获得年龄
4 F% k6 Z% H/ L* q) Dgetsenderage                     获得消息发送者年龄
$ b9 Q6 N6 {: Rget***                           获得性别" X7 R; e; A9 n8 E4 ~
getsender***                     获得消息发送者性别" c0 x! \5 n( e" z8 X* S
getid                            获得ID1 y* m/ ?, M8 c. Z5 G
getsenderid                      获得消息发送者ID" C1 _1 N5 ]& A: D0 t6 y
getserverid                      获得服务器ID
8 H8 c8 u. q9 z( o* R$ Bgetsenderserverid                获得消息发送者服务器ID& ~- ]7 B* I! M$ \! k, J& O
findobjectbyname                 用名字查找物件
9 b, |. h0 b4 B' d; [/ egetposition                      获得位置
5 d1 m# o' `1 U8 O  jgetsenderposition                获得消息发送者位置+ {1 N5 {0 O4 t' x
getnearxy                        获得亲近的XY
& M2 R; }, u2 S$ w0 }$ u7 Dgetmapname                       获得地图名字
7 o1 Z2 M6 F7 S: L' o# l4 tgetsendermapname                 获得消息发送者地图名字4 p! c6 R( o. ~! ^; u' u( R+ o
getmoveablexy                    获得移动能的XY  b: L( q' h9 I& S
getrace                          获得种族: k6 e6 V* V  Z6 H! W! X( X
getsenderrace                    获得消息发送者种族6 @2 C% x+ U$ R' |6 ]
& H: S( a. m9 g. u1 G! ~
getmaxlife                       获得最大的生命值
& l3 ~6 e; J% Bgetsendermaxlife                 获得消息发送者最大的生命值  b" M" X9 Q3 y' K7 f/ |/ G2 T9 X4 M0 b* W
getmaxinpower                    获得最大的内功值
' m! v9 \1 {* l1 C0 o- m+ xgetsendermaxinpower              获得消息发送者最大的内功值
3 H2 `) N2 g& t- f% Rgetmaxoutpower                   获得最大的外功值
, h. o+ `$ p# qgetsendermaxoutpower             获得消息发送者最大的外功值
% T1 H. s3 s9 `getmaxmagic                      获得最大的武功值( M# |% }( h1 o4 I6 E  _+ ]
getsendermaxmagic                获得消息发送者最大的武功值) n# `2 F+ _, ~2 |. z
getlife                          获得生命值
& F& B5 G/ Y; D2 \, Agetsenderlife                    获得消息发送者生命值+ P$ O' b8 P. r5 S

2 Q9 l% [* ?9 {8 agetinpower                       获得内功值
+ ~# ]0 Q' S' E! Q  \8 c4 zgetsenderinpower
' y/ Z9 Z& ~2 B3 \, g5 J2 o$ b. d+ a
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

Powered by Discuz!X3.4 ©2001-2013 Comsenz Inc.闽公网安备 35099902000100号增值电信业务经营许可证 闽B2-20220593 闽ICP备2023014375号