游客您好
  • 点击联系客服

    在线时间: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 C& S' i* H- B( A* f2 Z) M% M' S4 N- I! @0 Q) ^- I# V
千年有三个常用的数据类型,String 字符串型,Integer 整型,Boolean 布尔型。/ C  B6 ]6 L% a
4 [- l$ P9 y7 Z3 K' J3 R! E
一个函数的基本结构是这样的:+ l2 H! ]+ K* G" k8 Z4 n

. J" x! F$ Z! R, ?+ Q4 Cprocedure OnCreate (aStr : String);. m8 m& {) a4 P3 V  \8 r: Y' b
var) \; K" a  F! y/ G
   定义变量! @5 O' G0 a" t% m6 x3 w
begin9 ?- e7 R- Q* t+ @) ~
   语句
" H" ~# {% j, _# A0 @end;) J5 ~+ z" {. Z8 B* G1 O) X
, V: u; j& A: Y( x" }
在每个脚本的前面都会看到一堆函数,这些是千年的库函数,可以直接拿来使用的。例如:callfunc (aText: string) ,可以返回一些信息,具体返回什么由括号里面的 aText参数决定,这些参数在下面会给出。Random (aScope: integer),可以产生 aScope范围内的随机整数。
% r) ~, G- E2 ^$ u$ i" c, T/ b3 {+ K( @0 T; \( S3 [, x( m
千年中有两个非常重要的函数,一个是 print,另外一个是 callfunc,用法和参数比较复杂。. j6 e1 T1 ^" F, W3 a4 I+ ^* G* T' R
1 |! J/ X+ o" m1 l
/***********事件触发的函数**********/0 d- p0 r2 y) E7 s/ ]$ g4 n
+ h! [# r. Y$ x; ]. y' Y
//当有人*近时, b2 d8 @. f: i* |. T2 x
procedure OnApproach (aStr : String);7 a. ]! R+ |) S; i. [7 b8 \; r* r5 s

4 z3 {8 K0 `6 z& m. c. @//当有人离开时& e% j7 b" y' z" c) E
procedure OnAway (aStr : String);
7 [4 d9 Y4 T0 M( X% z8 W9 e+ u& ~9 V6 t5 s' ^* U5 y
//当受到掌风攻击时0 I7 O7 w( _5 p. c( G8 {) u
procedure OnBow (aStr : String);, w) M: T! a2 ]. L9 w6 ~
9 E& r; X0 w; S% m  N$ B" L; d
//当状态改变时
  g" f0 i: B) z/ u% l( Oprocedure OnChangeState (aStr : String);
8 Q6 T! }: x0 L& k  y
8 F' j. f  t; C, z//当初始创建时, \8 E+ d3 g  `" Y7 R+ j
procedure OnCreate (aStr : String);' g' ~) a* S* f$ ]6 I) \! B4 [

: H" \0 j7 _5 F1 r' w//当被双击时1 J6 v% z/ o6 o( I
procedure OnDblClick(aStr : String);
  f0 \5 h. J4 [
& N* v7 V, a' d% S6 _! \1 Z, W6 p2 }; T//当死亡前
+ X. E! @+ J! z, O! q4 bprocedure OnDieBefore (aStr : String);" K. w+ `3 l5 x! K
( c' e# B4 W) [2 g9 T5 N; W' B
//当死亡后$ X* P! B% B( |
procedure OnDie (aStr : String);
& q9 t$ z5 p1 {- Y: l3 F  E; m, `3 f+ ~/ j+ P, `3 q
//当被拖放物品时3 p: H% A2 }( j4 G$ [
procedure OnDropItem (aStr : String);0 o- G, F% C; j* ?9 v! Q5 H
' @9 ]- V7 n' a4 s
//当得到命令消息时
1 e4 I/ c( x2 ^% l: _procedure OnGetResult (aStr : String);2 f$ j( J* C$ N9 p. h

# t5 P- t7 w- K9 V* x//当得到改变步长时
: t, r# D  F6 Y; S+ nprocedure OnGetChangeStep (aStr : String);2 P$ ?1 R& c  B7 o' z
/ [" d& j3 z. a* l
//当受到攻击时9 O5 u0 O: B' p. I  j- T! n0 Z$ x, R
procedure OnHit (aStr : String);
( c0 W5 F$ h/ R# V& N" e! P1 ]' Q+ S
& y; b& p# R! p//当被左鼠标键单击时6 \+ d) u- X5 E2 H, k& W- Y
procedure OnLeftClick (aStr : String);
7 p$ N+ d# [7 \
. N1 u) S4 M3 q3 [/ ?//' E8 k; B4 z. i" F
procedure OnRegen (aStr : String);
1 x4 D6 L5 S  k9 f3 Z4 }
% P3 E& ]" p8 G# K: {- M//0 Y& b9 o. G% e% e
procedure OnTimer (aStr : String);; e4 I) Z& m7 N4 Q3 S9 e3 H
3 B  z9 X/ h( s' s
//当物件发生翻转打开时,一般是用于门
' n5 n& z5 Y0 n" {procedure OnTurnOn (aStr : String);
6 a' T) G( |$ J% |, W8 W* m( o% z( L& R+ h
//当物件发生翻转关闭时,一般是用于门0 g+ I! e/ P! U3 L5 `. i
procedure OnTurnOff (aStr : String);
! }  U5 r$ h1 C* e' I, `6 `
3 Z, H7 G5 T! x# A! M1 C+ s; S- u//当用户开始游戏时
" h( p6 @5 Z! t  x% |' E; Hprocedure OnUserStart (aStr : String);- F! K  ~, K$ G
1 N% J0 f" J, Y. P9 A$ e
//当用户结束游戏时
  D! e: D; R9 _3 {. xprocedure OnUserEnd (aStr : String);! ]6 ]- W! O+ o$ {

; z$ b' s& `% M//当移动时
! Q: {0 ]  v1 |4 P# J; ufunction OnMove (aStr : String) : String;+ v. R# a/ y  \* O' X8 l0 b( L' b

0 Y" s. y; d# f! N- A4 u//
1 P9 d' H7 ]1 N. @, Mfunction OnDanger (aStr : String) : String;! O& h: x0 V; b) w: K1 J* Z

) E; L% Y2 o3 }, S//产生一个随机数(系统函数)3 Y; v, T4 `$ ]4 Z! J; z
function  Random (aScope: integer): integer;
! Z0 [' y$ ]( @) i8 `# v
3 z. u; g4 R* r//返回指定参数的消息(系统函数)+ ]7 I. l$ N' n1 U' f! V' H
function  callfunc (aText: string): string;$ E: S; e% O: F  p4 I

, j: e" Q2 D9 V//执行一条命令,可以是说话、传送、获得玩家的物品等(系统函数)
: Z  \1 E$ Y/ s7 q! ]/ ~: rprocedure print (aText: string);2 }" w* H: @8 h0 Y, Y  a' H
" [; |/ `1 J: I6 G" `- C1 I
具体参数(略),整理中...........* l' U7 L- V- c% C1 N1 y+ l
3 |2 N, h/ m3 @/ O
//转换字符串为整数(系统函数)5 ~) f" a" ~4 C( a
function  StrToInt (astr: string): integer;/ L1 N" ^. N3 P0 i( z0 k' L1 t

3 J1 H" B+ f& X- D: X& b0 h# u//转换整数为字符串(系统函数)9 |+ f7 x- F" p& }$ \
function  IntToStr (aInt: integer): string;
4 q1 b# B  P6 ^7 U/ F" ?3 k) g) \; R6 c1 z: z1 \( Y  ]
/***********事件触发的函数**********/
! A2 m1 G: A0 }! z# g: @2 n# h! n7 r. M& d. r7 w% m3 E
# g/ B# |  F  T) Z# s

  V) T& `" d' I/ v; }+ ^( M2 P4 `/ t1 I6 G* H) g% _, }. J
/ ]( }$ _, j) G( n

0 j1 r% g0 C7 R$ K
- j' ?: P' o+ g, L" Z/ T( }
2 K1 I( V2 Q; y/ }3 e. }: W# R
function  callfunc (aText: string): string;   //以下为 aText参数的值9 v; H( Q& f* x# b4 Y

" N- n1 s% t' U9 @$ P) Agetsysteminfo                    获得系统信息
, Y5 \( ]: i2 T6 P- P! H% @7 W& igetname                          获得名字
* f9 i" l0 I; y1 c) u1 tgetsendername                    获得消息发送者名字
1 N) a/ E: C1 ?  ^getage                           获得年龄! {; ]5 c+ o% A  J. P6 d, o
getsenderage                     获得消息发送者年龄
; N1 d1 B. a' q* R, G0 n3 J2 L- sget***                           获得性别
3 G# {5 v5 T6 o/ }' W8 h8 A/ Ygetsender***                     获得消息发送者性别% ?' E& c! r$ g7 _& o
getid                            获得ID4 c; V. M7 y1 x7 ]6 F* J* n5 U
getsenderid                      获得消息发送者ID
) B. h' m5 V$ _. ^getserverid                      获得服务器ID  E9 p9 N5 _. f! p
getsenderserverid                获得消息发送者服务器ID
1 b# e' S, f- w/ Wfindobjectbyname                 用名字查找物件7 x4 O1 \( m9 |$ ~) s
getposition                      获得位置* h" C& Z& D, {
getsenderposition                获得消息发送者位置
$ u$ Y3 D3 N7 k! [5 mgetnearxy                        获得亲近的XY9 S& E/ s' e& B8 Y1 D0 F
getmapname                       获得地图名字
) p, z$ p- t6 `% ]" |2 Q" x' Kgetsendermapname                 获得消息发送者地图名字! j0 g  h! L. ~
getmoveablexy                    获得移动能的XY
  w$ }2 x% j' {$ \7 {) D+ }$ Ygetrace                          获得种族. f' k# W& \% \+ g% b! U
getsenderrace                    获得消息发送者种族6 k1 o* x$ O5 ]! q& `& \( u% }
* l( |0 Y( J9 d1 w; u. o$ `
getmaxlife                       获得最大的生命值- E1 O; _' B. W- Q7 \
getsendermaxlife                 获得消息发送者最大的生命值
5 z, i7 X1 G: c; V6 G% ?getmaxinpower                    获得最大的内功值
/ b) g% @" h7 ^2 dgetsendermaxinpower              获得消息发送者最大的内功值
' h4 T4 l  G; ?- n5 Z! o/ Xgetmaxoutpower                   获得最大的外功值
4 P9 W% m! e& M" r4 N9 X' f- O; M) Dgetsendermaxoutpower             获得消息发送者最大的外功值
. H$ x$ B7 w9 l/ t5 kgetmaxmagic                      获得最大的武功值$ W* T$ q" O8 v3 h8 t0 C0 }
getsendermaxmagic                获得消息发送者最大的武功值
( n+ H0 n% Z5 [8 p$ R2 X% pgetlife                          获得生命值
3 P$ t% ~4 |" Q5 \  }" fgetsenderlife                    获得消息发送者生命值9 {, y8 p! r. {1 T2 ~

& L5 l  _! r' kgetinpower                       获得内功值7 J% Z! b% q. E1 i: K/ G6 T
getsenderinpower

# [' b6 I- ^" x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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