游客您好
  • 点击联系客服

    在线时间: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语言。" ?4 T& n( T* S3 w
5 x2 U+ j- p% T2 [( l8 O
千年有三个常用的数据类型,String 字符串型,Integer 整型,Boolean 布尔型。$ I) s, ]3 ~6 e" g
( b2 N, a/ a/ R0 v! Y
一个函数的基本结构是这样的:
4 d) Z5 W3 @0 k. H1 s
" L" v0 z$ Z6 [  Aprocedure OnCreate (aStr : String);
, q- j! w8 ]3 u! R1 k' R& d! Kvar
1 C2 |+ F% k  d+ S% x9 D   定义变量
8 c* Q5 Y/ j% O+ n% Dbegin- X" l' g- C+ e0 L4 k6 s* v
   语句
3 Z& G) p0 U$ l+ q7 V, d4 g" Aend;
; t- H5 J. z4 [, k7 o5 F! ?& Z% i7 U& X1 g1 T7 \9 a2 I* W
在每个脚本的前面都会看到一堆函数,这些是千年的库函数,可以直接拿来使用的。例如:callfunc (aText: string) ,可以返回一些信息,具体返回什么由括号里面的 aText参数决定,这些参数在下面会给出。Random (aScope: integer),可以产生 aScope范围内的随机整数。% [7 I1 ~1 c  Q2 D8 d

9 G3 }+ V3 z' H7 k+ i" Q! u/ l& F千年中有两个非常重要的函数,一个是 print,另外一个是 callfunc,用法和参数比较复杂。2 m8 K6 g+ s5 k
( a9 L6 p  k# ?0 S1 l- f* J4 X0 `8 O
/***********事件触发的函数**********/
6 }& _# N$ E$ K& C( a" ^1 k6 t: @4 @; k1 T+ P
//当有人*近时1 f7 \) z) @0 G2 B
procedure OnApproach (aStr : String);9 a& n+ A3 d! ~% i5 n( ^6 c$ O9 A4 u! u

9 t2 x/ X0 j6 E1 C//当有人离开时3 t. O6 q1 X; c8 [/ O9 ^, @4 q+ c
procedure OnAway (aStr : String);
( h) H( q1 T1 v4 r. Q0 ~' [4 F0 R/ n/ K( C
//当受到掌风攻击时% ~' E, A# T6 K7 p% C* k; q; ]) u
procedure OnBow (aStr : String);; b  h8 G; }' s  k3 U  H8 }
# L* y6 ~2 K% o
//当状态改变时
6 E2 z2 e5 [, K2 z. gprocedure OnChangeState (aStr : String);# v' O3 Y$ M! u" _; j% h) @" |

  o$ O! W& P+ q( ~, W! l5 U' {; M//当初始创建时
8 l, t) k) {# i4 l" h- f6 Z0 Zprocedure OnCreate (aStr : String);
! a4 j5 o! b( ^, e7 @4 q+ [. V4 @' ^1 k$ h& K1 C
//当被双击时  N3 n7 [1 R  S
procedure OnDblClick(aStr : String);$ ~% M6 `6 p- v8 Q

( A: m$ }& D5 z//当死亡前. N/ z* ~, l7 R  P" [
procedure OnDieBefore (aStr : String);+ x, s& H4 @& i7 U7 P) h

2 i4 O. c. _2 N1 \2 L$ q  |0 i//当死亡后
, S/ F+ i+ x, @& I" Rprocedure OnDie (aStr : String);
4 m4 i$ J+ Q1 I" z) x, I& B# Y& k( q4 y0 y# H; J1 O
//当被拖放物品时
0 L$ ]- P2 b; F( J$ V4 Jprocedure OnDropItem (aStr : String);/ P: b" ?$ k" t

) l  D( R- C- n/ c) ^) o//当得到命令消息时* A  `6 C' x0 X' o/ I2 _
procedure OnGetResult (aStr : String);
# a, \9 k/ _1 Q' W8 Y
2 _6 ^: j% x0 R+ x0 F4 c//当得到改变步长时
! Z7 l: K% r& C9 \procedure OnGetChangeStep (aStr : String);
" x$ v) j" x2 Y; ?+ P, z% ?$ E$ b8 f# S1 O
//当受到攻击时
* K( ?" S1 H8 u" Z5 jprocedure OnHit (aStr : String);  \9 H2 Q# t5 T5 A/ Q3 k, A
3 g- u" x7 D$ F/ H& q( o, c
//当被左鼠标键单击时& a1 M' ]/ V8 e
procedure OnLeftClick (aStr : String);3 q/ F0 i8 {1 t. ]

) l, V% H; L% w8 J# A# ^7 E//$ I8 D3 ]. C# J. Q+ y6 J
procedure OnRegen (aStr : String);2 x7 l4 f/ U5 S- E- Z$ P' d

% V. k9 d! \' ^; O//0 R% E- Q8 O" I! u" {
procedure OnTimer (aStr : String);" w- h5 q6 I& q. u3 }

* A# G7 K1 [& w9 @/ U5 p$ U//当物件发生翻转打开时,一般是用于门
, D; p( @' O' y* B" iprocedure OnTurnOn (aStr : String);1 g3 o" d+ L/ E* M$ G& F
' d2 c; `$ T9 c+ L8 N
//当物件发生翻转关闭时,一般是用于门
, O2 s* r6 I$ h' E0 yprocedure OnTurnOff (aStr : String);
% w3 g! i+ e2 I- ~3 `2 x- s) p% S9 T& q" e, m: |8 r
//当用户开始游戏时
1 P& @! M9 _& C$ ]; Oprocedure OnUserStart (aStr : String);$ u2 Q1 C" b- l& w0 b

' v) V0 J  \+ C% _5 X8 Q* P4 F% b6 n+ O//当用户结束游戏时- T. }8 L1 _- b" o8 s
procedure OnUserEnd (aStr : String);
4 J$ n+ ~# `8 T8 V- f, U& b% [0 O% o- X$ X5 a6 I8 o
//当移动时; D  ^5 l  b( ?0 @: _
function OnMove (aStr : String) : String;
2 n. E; T- q( x
  z6 h) q! x! h//
. i9 X3 T. ~+ A9 N: Bfunction OnDanger (aStr : String) : String;+ S; {0 X0 J0 ~

; l, M5 q3 c( Q+ }, a& l//产生一个随机数(系统函数), S! c0 x  `" Y/ N  K
function  Random (aScope: integer): integer;8 l4 o* u% j6 Z9 c5 T, x" o" q" ?+ E

1 B' B. E& H5 z( R; V//返回指定参数的消息(系统函数)* d( s9 L1 R9 j/ `
function  callfunc (aText: string): string;
5 |4 u- k- s8 \" r9 e
, z' L" r6 p; K( N: g# c//执行一条命令,可以是说话、传送、获得玩家的物品等(系统函数)( _$ t' A/ f, k( i
procedure print (aText: string);
  N0 A& _5 R. Y3 t
! U, s: n7 E$ a4 ^: R/ N5 t具体参数(略),整理中...........
& M& P; ^" B. T" ]& w: p" T$ c1 ]; d* y. r) a) F
//转换字符串为整数(系统函数)
; w. r' x( T) }7 S% ffunction  StrToInt (astr: string): integer;! V+ O4 ~2 v3 r7 J
, N3 l2 G: \  p9 @
//转换整数为字符串(系统函数)
2 a6 T- X4 R  K. a6 z, bfunction  IntToStr (aInt: integer): string;  z8 _$ R- C% [9 ?/ k4 m* |  L
* G; k# n2 v5 E- {- C
/***********事件触发的函数**********/+ W0 O8 q( j' _: b* i; a7 @3 }
& h9 K! B' E$ y7 a1 W2 D

* G- B/ X. h) j, `: j0 t7 x2 k- t' N- Y2 m7 _5 u5 f8 p
  d. H: T' O! w3 [1 G3 K
( f: W. [- T) R, i% J( N* l
  I# w5 N. _9 e+ o

" O1 n- |5 u7 G6 P1 G- Q$ l- Y  m/ F2 a7 q) H* t

3 X3 e3 v8 t/ g: F! c( m# g' n: ]function  callfunc (aText: string): string;   //以下为 aText参数的值
! h/ _) a1 ~  d
' a% b8 F# o% J% [6 A  Cgetsysteminfo                    获得系统信息1 g; y" U) d8 Y3 T( W. T% E0 C: G
getname                          获得名字, i! |! K! }: M# k7 K5 c" m) w
getsendername                    获得消息发送者名字  F! l- a- h+ [( G/ u1 y7 i% _
getage                           获得年龄! h- b. \6 `! \: s0 @0 j) b/ W* J
getsenderage                     获得消息发送者年龄$ b' v7 b4 B" I  w" @) X5 G
get***                           获得性别
: r: @1 f: S# ^4 `: u4 K" Z" {! |getsender***                     获得消息发送者性别
# [9 Y  V2 h5 Zgetid                            获得ID
% o9 J4 i- N# d. C$ K  \  ~4 V9 pgetsenderid                      获得消息发送者ID
" x7 A: a7 D) o4 T" R$ X8 D4 P: [0 ?getserverid                      获得服务器ID3 C6 j( X3 a3 F, h& d
getsenderserverid                获得消息发送者服务器ID
: o: i* [5 j6 k$ @9 `8 t7 O7 C, nfindobjectbyname                 用名字查找物件
) o9 K. s" b2 |5 qgetposition                      获得位置
& d1 t+ _: D! p! c! Z1 L( Agetsenderposition                获得消息发送者位置: i; k8 A/ f* x- A& [5 N' x. P
getnearxy                        获得亲近的XY" ~7 c5 a7 V% t% q& U: c6 B* E
getmapname                       获得地图名字$ z, Y# F. ]: j! Q  R  f1 \
getsendermapname                 获得消息发送者地图名字" Y- ^) r0 h9 q5 z5 _# F$ A
getmoveablexy                    获得移动能的XY; k* L: T! ]( `
getrace                          获得种族
$ F5 [8 H( a0 @5 r, w( @* [getsenderrace                    获得消息发送者种族
( E$ Y9 u% t  L, o, ^9 w
4 V& H  v! d4 j+ L' T: z1 F; [! fgetmaxlife                       获得最大的生命值# e3 ^9 y1 \) t
getsendermaxlife                 获得消息发送者最大的生命值
0 E, A: }' y% c4 y$ @/ N8 [0 pgetmaxinpower                    获得最大的内功值8 M. r! @+ `+ D3 B
getsendermaxinpower              获得消息发送者最大的内功值
8 j9 e0 p, Z# g& U- ugetmaxoutpower                   获得最大的外功值
) s- }6 ]! j% i  [9 B% p9 Jgetsendermaxoutpower             获得消息发送者最大的外功值+ i  C" H4 u2 \; t% W& u  w3 C
getmaxmagic                      获得最大的武功值
3 S& d- H& S4 \" k+ X, ygetsendermaxmagic                获得消息发送者最大的武功值
* U" c3 a& U+ Igetlife                          获得生命值
, N9 g4 P( D1 F: h8 ]1 Pgetsenderlife                    获得消息发送者生命值
4 s9 K, y! T# {6 V5 b( v# }
& l4 L7 u- @2 z( J1 F2 P9 F1 Bgetinpower                       获得内功值
' m1 v$ J- u  {$ ^  h% }getsenderinpower

$ r7 Y1 s/ }# \; P. a. I7 v# l
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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