游客您好
  • 点击联系客服

    在线时间: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语言。
) y# h' ]* R5 z. y  z% a
: ]4 w, e: X' W& A: U8 U8 Z千年有三个常用的数据类型,String 字符串型,Integer 整型,Boolean 布尔型。/ Y) B4 p; X4 h5 C) f

( r6 ], H& C, r$ J0 c6 E$ k一个函数的基本结构是这样的:
* }- f2 J" _' W5 O, g+ p
6 W% @  j0 w! T5 V- E! bprocedure OnCreate (aStr : String);9 G, {& E3 B! }  A5 o
var
: t: b8 R9 y" f3 S2 D& @- t   定义变量
5 |" Y: f) e7 [' G; M  Zbegin* R# Q' k9 K/ o5 u1 ^! |3 q' o
   语句, u& A' A9 ?9 v9 v: @4 ~  r4 i
end;
8 M% e# q7 h1 a6 O0 _% G3 t$ f& j3 H3 J) j% k$ b  |  ?
在每个脚本的前面都会看到一堆函数,这些是千年的库函数,可以直接拿来使用的。例如:callfunc (aText: string) ,可以返回一些信息,具体返回什么由括号里面的 aText参数决定,这些参数在下面会给出。Random (aScope: integer),可以产生 aScope范围内的随机整数。
, g0 G4 D9 ]6 F; i5 j- \2 [3 s2 n+ M# m2 A2 [% O9 |' J  g6 R! |
千年中有两个非常重要的函数,一个是 print,另外一个是 callfunc,用法和参数比较复杂。# l1 ]& d+ z0 l! g& z' L; z
: h; X  e3 D5 @" Z
/***********事件触发的函数**********/
) ~* M; G# y% P' \/ y1 I1 h! w  x0 s! \' i* }! F' |7 y
//当有人*近时% p4 V- X( [2 F
procedure OnApproach (aStr : String);- v0 `6 r8 t- ?9 m! a
) K( Q; c+ g. D) a% N
//当有人离开时
: P. w1 K( ~9 H. F7 b3 Sprocedure OnAway (aStr : String);
. x" u6 W  b5 U( a- N3 Z
) R; m  d8 H! [//当受到掌风攻击时
" ~  E( |% B0 i7 b* ?8 x; `procedure OnBow (aStr : String);
5 N+ w. t- l0 X- e/ R" I; m! f# F! a
//当状态改变时" N2 m& i' J& k' H1 x" O' ^6 R
procedure OnChangeState (aStr : String);
% d% n9 U6 Y& ~6 I# |
0 G$ h4 V2 X% }5 v; k- k//当初始创建时
3 p% B8 e0 P& Y& Uprocedure OnCreate (aStr : String);
) c' w0 {) ~8 {  {4 K( ~. b
+ e+ W# U+ i# r//当被双击时
" \3 k# a7 j  V  _" x/ m& Gprocedure OnDblClick(aStr : String);
7 P2 c" i  {4 |! e7 S% [& o( g& C; O; I% U1 b0 o
//当死亡前1 G7 v5 f$ v  i( V  H
procedure OnDieBefore (aStr : String);
5 C# c  j: f6 D! `- y1 W
8 \( P2 Z: o8 C7 ^. {//当死亡后
* k6 M+ i* W3 z2 |- A9 a6 l- jprocedure OnDie (aStr : String);, J) W) i+ {' M5 W2 _8 x$ a4 `+ `
% J% Y' S6 ~7 [+ ^
//当被拖放物品时* C) L5 u% N  _& K1 Z7 M
procedure OnDropItem (aStr : String);
5 _' U3 M2 b4 v$ y8 y3 R% }( X# A0 n3 h, z0 V$ {
//当得到命令消息时
# |  I# B/ c# Y8 p2 Bprocedure OnGetResult (aStr : String);. s2 n) z0 _9 J7 Z5 ?$ f
6 T6 `. Y% I- B) E# k" l& E, V
//当得到改变步长时0 T. c" z! A7 k( d9 N1 E7 [4 T
procedure OnGetChangeStep (aStr : String);8 t" z6 L# I+ v* Z1 \( {
, a) m5 i% y  N
//当受到攻击时
' a0 y& ~! ?; r; ^procedure OnHit (aStr : String);" t8 E5 e1 }$ m" O- L$ c! L" u7 S5 }
) m2 r' V8 F) R2 _
//当被左鼠标键单击时
3 n& f% Z7 o( [5 q- \procedure OnLeftClick (aStr : String);
$ }$ Y8 B8 ^) ^7 c8 _
3 ?* p+ a, I0 ]7 i& w//3 [. g) E: ?# ]9 l1 r
procedure OnRegen (aStr : String);6 Z8 b- p6 i2 y7 f0 j1 ^% x
8 r3 O7 s1 K2 B
/// z5 h$ u+ n0 K8 z, {6 Z7 u
procedure OnTimer (aStr : String);; [% g: b" a* |- U5 Y

  u( N" V2 M) [  E# E//当物件发生翻转打开时,一般是用于门
% U1 B+ B% }$ q# P2 Y( rprocedure OnTurnOn (aStr : String);
7 o7 N$ h) q8 N9 m9 `( R  P. p* [- h9 X* j
//当物件发生翻转关闭时,一般是用于门
: s7 i* g9 d! w; @/ Fprocedure OnTurnOff (aStr : String);' c, ^7 _4 r$ ?3 ?

4 @0 b/ N4 w6 n$ {/ M//当用户开始游戏时( |* g. e, b! U/ K. ?2 k, O" q
procedure OnUserStart (aStr : String);
! \4 f6 Z6 Q0 t7 |/ ~% F  H9 n- Y+ o' d' `0 k, b$ a& l3 M
//当用户结束游戏时
$ U! u  b. L3 }; d7 R7 Z: h1 P  Bprocedure OnUserEnd (aStr : String);
1 V% P# Y/ @5 D) `# T: O6 j: e; F3 |" y5 [' Z5 D2 k, Q4 r
//当移动时
- @! S9 @0 S# A$ [% t9 ?3 [function OnMove (aStr : String) : String;7 W  Q; y' _9 v
0 C+ [4 h& b) G8 L2 |
//
4 |6 m! b( X  C; Z' pfunction OnDanger (aStr : String) : String;
' ^: x+ C+ u$ T
8 Y9 n( F& ]5 Y  P# {//产生一个随机数(系统函数)$ Y. s) |/ v/ c  v5 r
function  Random (aScope: integer): integer;
+ C/ Q" l6 U! P% v$ u" w  ^, d3 b' K$ |- l$ {: k! f5 i% b( N6 h( M) i
//返回指定参数的消息(系统函数)
6 ]: e. F, {/ y- Bfunction  callfunc (aText: string): string;' E% k* C2 a$ |7 ^8 w

: A& t* f0 Y( b+ }//执行一条命令,可以是说话、传送、获得玩家的物品等(系统函数)
3 N( E% w: ~- h' e; U9 kprocedure print (aText: string);
- p) @7 `! O& G9 W3 O# h$ _* @
( N% [9 F( n  K  I, }( g$ t具体参数(略),整理中...........1 L8 K# t! @4 a2 O5 V4 P

# x( N/ y# b$ `- K: Q5 K//转换字符串为整数(系统函数)
; r9 m) ~: I" _  `+ L  y) Nfunction  StrToInt (astr: string): integer;2 e" n7 ^- e9 A
6 [1 Z3 \% b* F
//转换整数为字符串(系统函数). f2 `9 t0 J, C4 B% C2 t0 i# ~2 t
function  IntToStr (aInt: integer): string;. R* Q" Z/ b* c1 s' e

2 q% @3 c4 T. }4 r1 m9 Y/***********事件触发的函数**********/1 x6 h' C* T1 y$ P6 w
9 F2 g7 j, a! Z& K) Z( i/ z* d
$ O9 H1 |8 P! A0 I) H1 a
. c: W  F, o( \' m) F

6 T6 _% c/ ]: O) G; o+ X7 _( @4 M8 n# _

3 {( R8 d) v8 t. ]9 i
& E" `3 M' s! g+ @% d1 U
1 e$ J# f6 p8 b( ?4 z: g, s( m( k/ E! S1 R
function  callfunc (aText: string): string;   //以下为 aText参数的值
( ]3 I2 @1 H+ G) f0 L, j1 i; v* |) n+ b
7 v" O7 O8 }3 Q7 g+ e* K  E1 v$ Qgetsysteminfo                    获得系统信息) b* j/ a8 M% q; @& D
getname                          获得名字; s/ w& J8 Y) r
getsendername                    获得消息发送者名字( v6 _( D8 O( K3 V
getage                           获得年龄
% ~' c8 w2 C7 Ugetsenderage                     获得消息发送者年龄/ ~7 U0 W8 \5 V* d
get***                           获得性别# Z  q9 p# G0 V' ^* N
getsender***                     获得消息发送者性别9 `# F( g3 {2 P* D
getid                            获得ID
+ @) q: L" R4 Pgetsenderid                      获得消息发送者ID2 |0 X$ i5 X' E& Y7 p
getserverid                      获得服务器ID( D  j& N6 _0 f. R8 f+ z
getsenderserverid                获得消息发送者服务器ID
0 I/ o! s' n8 m3 S# v# rfindobjectbyname                 用名字查找物件8 b, J/ F# E" a$ l; b: Z/ t# A' o
getposition                      获得位置& G6 v0 A4 V- i0 G) o
getsenderposition                获得消息发送者位置8 |6 |# ~( _4 i  g$ ?! U
getnearxy                        获得亲近的XY
" J  ?6 ~. T; V& z! _0 s% h& \getmapname                       获得地图名字% g% a( X/ ~: U, Z# y, K) S
getsendermapname                 获得消息发送者地图名字
7 f( ]' S* X; `2 e+ N. Qgetmoveablexy                    获得移动能的XY
) A% r; T0 o# G) B. ?. X& jgetrace                          获得种族# p! [: x) ?+ \. x, E
getsenderrace                    获得消息发送者种族7 k2 n) ^  z: N3 f1 s6 V8 b2 I
6 g* i# [& {8 W' ~9 \% G/ {
getmaxlife                       获得最大的生命值6 M- }4 v" S' S4 Y
getsendermaxlife                 获得消息发送者最大的生命值" i+ L: a8 g% A8 K( ?7 C+ p
getmaxinpower                    获得最大的内功值
  o( t5 Z2 {0 E" i: fgetsendermaxinpower              获得消息发送者最大的内功值
+ l+ ~" y- e9 i9 B7 O% X. Pgetmaxoutpower                   获得最大的外功值3 K' d- m, I; W+ ]& U
getsendermaxoutpower             获得消息发送者最大的外功值0 [$ K, p) t& S4 R* i% T( G$ _
getmaxmagic                      获得最大的武功值
, a$ Z" w2 S9 U0 |$ i- I( X' _# tgetsendermaxmagic                获得消息发送者最大的武功值
# G5 h3 Y; I8 \9 A9 [6 S9 Kgetlife                          获得生命值, J$ }9 C7 Z# z1 c9 ~$ t3 }1 S
getsenderlife                    获得消息发送者生命值$ A: H: M' L$ a% }% V

# I4 d6 G6 P' E: C! ^: Xgetinpower                       获得内功值+ a" z$ l" d8 B! q( q6 x
getsenderinpower
( n! o, B1 c7 p+ u/ O  j
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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