游客您好
  • 点击联系客服

    在线时间: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语言。
7 C4 l) o5 j: H* ~% Y$ J) |' k1 K
9 \# K1 z+ G) G2 c" `" y千年有三个常用的数据类型,String 字符串型,Integer 整型,Boolean 布尔型。
0 q& i$ a- b+ `; a2 L5 s4 k- Y8 r. \
一个函数的基本结构是这样的:
4 Z# x2 U0 |& Z: M+ L
" z1 E; r3 b7 N! Tprocedure OnCreate (aStr : String);
" f# w% \9 r' N+ [* q$ q! j5 ivar
# Q+ r4 k0 ]8 L; e$ ^4 @9 l   定义变量
5 p, ^( x$ j4 Q5 pbegin
* H+ j8 Y9 b9 T5 B6 G& o   语句3 M5 e2 H" A, h3 g9 U# a
end;
6 v! D- [& G# |$ f8 v! M! d5 S) N% d/ Y. t, Z
在每个脚本的前面都会看到一堆函数,这些是千年的库函数,可以直接拿来使用的。例如:callfunc (aText: string) ,可以返回一些信息,具体返回什么由括号里面的 aText参数决定,这些参数在下面会给出。Random (aScope: integer),可以产生 aScope范围内的随机整数。
8 e, J+ e1 f1 B' y# R3 H8 Q
& ^5 U7 s  @  M. J+ q2 H# H& _" M千年中有两个非常重要的函数,一个是 print,另外一个是 callfunc,用法和参数比较复杂。/ C) M; J6 S' z9 f( r# Y8 E

' `, w3 [6 W9 V5 G% e. n) y. v; `/***********事件触发的函数**********/3 a) }. K# ^6 I# e4 ]# V1 x% u
0 b2 o, j! u7 o! [$ c
//当有人*近时4 h2 |9 N# C  x5 X" P8 Q5 C$ I7 h. i1 j
procedure OnApproach (aStr : String);1 r: V: `) r' D$ ^
$ t2 m2 @8 m: e( P9 Y1 k
//当有人离开时
1 x4 Q3 O- h4 n6 P* ?6 Fprocedure OnAway (aStr : String);3 B9 ?) |& |- O" n' c

# \# [2 b0 i% q4 Y6 p: u9 l//当受到掌风攻击时5 U- a# r' S7 ]; R: j8 W1 Z
procedure OnBow (aStr : String);
: j. [5 E. ^) X# G5 ^
- U) B* x* E! r/ D/ O  d2 C. o//当状态改变时
% L8 z4 W8 V9 nprocedure OnChangeState (aStr : String);  \- C- h) o7 h2 \& x5 v
6 v- R0 K5 W. m: U: F9 d% F7 r, G
//当初始创建时
3 X; [4 f, E+ F, k7 a' \1 tprocedure OnCreate (aStr : String);  m! O3 K) b" X9 i

, w3 ^4 _- ~4 P! V//当被双击时
9 c- U+ n; s0 C4 Nprocedure OnDblClick(aStr : String);: X  b; _6 C! ^
- i/ g4 X. Y) x& M% |$ y
//当死亡前
/ M$ j& i* ~1 w! I; Rprocedure OnDieBefore (aStr : String);
( t: `9 F/ a4 X0 u
4 `% P2 L  X) S/ x//当死亡后
* L0 f/ i0 O5 H1 Z1 vprocedure OnDie (aStr : String);; ?+ h8 E, H; v' c

" B8 j, F+ ?- W$ `( Q+ b. G//当被拖放物品时* g6 _* J2 a9 |
procedure OnDropItem (aStr : String);6 O# m7 F; G, @* b! b+ J& |
3 Y/ s) @1 n* s$ y$ X. i4 ?
//当得到命令消息时8 s" z5 ~& p7 i. j, Y) \5 w
procedure OnGetResult (aStr : String);
2 m9 A0 L( O( H; f. L- I
$ H* ~$ q  k* E* U4 ^//当得到改变步长时6 V7 N0 F3 b& u
procedure OnGetChangeStep (aStr : String);7 M6 U- U5 ]1 A6 j, m# _; F0 t+ u
* ~+ n$ l  o1 W0 T! Y
//当受到攻击时
5 \- p, Y$ J/ M. J+ Vprocedure OnHit (aStr : String);+ j- n5 Z+ @$ q3 @6 y; A

5 P: [& U" k' m4 P2 J% J- j6 d//当被左鼠标键单击时
5 _6 N% t" c* s/ I- R9 o8 {' B, m$ Fprocedure OnLeftClick (aStr : String);
/ ^7 {- Y- G/ X; x  R' \- M/ N7 I4 [- T; e4 X  ]1 w# R6 Q* P
//
4 N/ m/ L, [: n0 wprocedure OnRegen (aStr : String);
: |  i5 v3 j7 g) M6 {
; c3 e% W' Z+ L. \' P% W//8 I: V. k0 T& K) a! ?. f& h
procedure OnTimer (aStr : String);% l3 ]1 s5 ^5 a) ]- L! u

  o9 N3 A$ X1 l& i$ \, j! {/ r//当物件发生翻转打开时,一般是用于门
' `. S) |1 C! R; Yprocedure OnTurnOn (aStr : String);
# w  W: L+ O! M6 K2 P
/ x: r/ {7 ^0 c//当物件发生翻转关闭时,一般是用于门
" _1 @) g. E7 f( P3 Mprocedure OnTurnOff (aStr : String);
3 v& W1 Q+ s- H' P: ^( b8 C
- d5 _0 l( {/ x8 D: b//当用户开始游戏时
; m' y4 [. p3 s' G! t/ }6 Pprocedure OnUserStart (aStr : String);
8 Y. z" D/ P+ D2 R1 \! i
5 S( Y- j7 @4 X) V3 M; z9 Z2 y; R//当用户结束游戏时& h# K/ X1 K3 {2 C
procedure OnUserEnd (aStr : String);1 W- Q2 n2 u( R7 Q& i2 c

- X; }, B. c9 z# D/ Y+ I//当移动时
4 g/ M/ g. _# J3 q3 H5 qfunction OnMove (aStr : String) : String;
! n& Z# R" g* Y6 p; F
& K$ U  T  F( J8 |6 _3 ]+ ?//
* w1 S6 n6 X" s( I' [$ Ifunction OnDanger (aStr : String) : String;
( q- f# F8 W: C3 Q7 }: a8 x( [5 p. i" G6 i4 c0 p' d. b
//产生一个随机数(系统函数)
" a0 j& |2 v" _! h7 K1 bfunction  Random (aScope: integer): integer;
8 I; u1 g7 [# U+ Y- F5 k$ Z7 g! _
//返回指定参数的消息(系统函数)8 O0 S  Z) g7 e! [( x) ]
function  callfunc (aText: string): string;
: V. a6 g" E( ]2 y( h( D+ q1 l9 g
" q; Z3 `( k  N, o0 k# q//执行一条命令,可以是说话、传送、获得玩家的物品等(系统函数), c/ E5 S( x" @9 |2 E/ R9 s
procedure print (aText: string);
3 Z. [1 J) c2 z
% J0 X( }6 C( t/ f4 w# ]- h具体参数(略),整理中...........
+ I( w6 [2 M0 |% m- ^! A8 o% O* U0 `# T. m+ p! t  C
//转换字符串为整数(系统函数)
6 [2 a) |  T( Y9 \) @6 I7 Q# tfunction  StrToInt (astr: string): integer;
$ T2 y2 G* L$ m4 j& G( Q: r3 [
4 P* R  e0 w& }) W//转换整数为字符串(系统函数)
) f; W, c) ?: r* J  d9 Tfunction  IntToStr (aInt: integer): string;* z' @) N3 I. a3 n) T+ q/ D2 f8 }
! h  Z. b7 ~0 n# M! H9 e
/***********事件触发的函数**********/) a& a* o! {$ ?9 a) B; @3 S2 n' L

' `9 T- z, P8 F/ a. ?! _/ ]
0 }- q7 h# ~  d; k( K$ ]+ t3 E9 B9 v' @
  n/ ~( [. A6 Y) e

5 U1 W9 C! s! w" B, Q) L' v& n
5 l2 |: m$ `+ ?- A/ s% j( R; d
9 G, E( e9 ^& I5 e8 m0 U" [5 e: c7 V5 P# T" |8 `5 I
0 b( {6 a: B# F9 ?3 p
function  callfunc (aText: string): string;   //以下为 aText参数的值+ z) w5 k& W& w
% P' s4 r4 S8 K& k' g, }* ?
getsysteminfo                    获得系统信息
/ H' M$ |, M" {- I: s3 Zgetname                          获得名字3 i( H& [. V% ]0 W% i: a
getsendername                    获得消息发送者名字
6 q) c8 ~: L. V+ W0 [$ o1 U2 E6 hgetage                           获得年龄0 A" U4 R, L- |
getsenderage                     获得消息发送者年龄
4 z; p! {0 F1 d* ~) P$ L( Aget***                           获得性别4 r9 F: G8 y# E' N8 y. R
getsender***                     获得消息发送者性别' G: I7 ?' s( Z& ~& j0 i7 v, R8 q
getid                            获得ID( Z" n: {  R* r0 k' ~: t
getsenderid                      获得消息发送者ID, m/ s0 U6 ^) Q- x9 U) w$ V* H
getserverid                      获得服务器ID7 }! f' ^* Z6 q9 S1 `% ~' ?
getsenderserverid                获得消息发送者服务器ID7 {# x( }4 j0 A4 S7 F9 {; m
findobjectbyname                 用名字查找物件  _: r. I4 z1 T
getposition                      获得位置* h* c: Q. k' Z7 }  ^
getsenderposition                获得消息发送者位置# e8 }6 j3 v  l( r6 _7 J5 z) D
getnearxy                        获得亲近的XY9 X, _5 u+ C" F- I) @
getmapname                       获得地图名字
! ]; Z8 _! _- ~. T4 b' c$ Y8 Hgetsendermapname                 获得消息发送者地图名字/ a! f$ c- |; N, V
getmoveablexy                    获得移动能的XY, V$ E, P' G" o. U3 D, E: Y
getrace                          获得种族4 `$ v: Y) f' b9 Q' e
getsenderrace                    获得消息发送者种族
: K  A4 H; `- {3 A0 e% Q( z! w1 l+ a  s* i/ a% j5 h
getmaxlife                       获得最大的生命值& S9 R7 q/ Y9 b+ h# s. {! r9 N
getsendermaxlife                 获得消息发送者最大的生命值  d; Y8 F- w! _7 @) J* S
getmaxinpower                    获得最大的内功值
& Z% Q2 k9 ^( o1 E1 t( Ggetsendermaxinpower              获得消息发送者最大的内功值
6 F0 {  t! Q9 H1 Cgetmaxoutpower                   获得最大的外功值: k: E3 @8 A# I
getsendermaxoutpower             获得消息发送者最大的外功值
; ~4 p! U4 |, v2 T7 \getmaxmagic                      获得最大的武功值
! |1 }3 z' t+ g. ~% e9 E- qgetsendermaxmagic                获得消息发送者最大的武功值/ ~5 ^/ }' r8 g9 q' J
getlife                          获得生命值& F3 }, q1 I* {" v6 d
getsenderlife                    获得消息发送者生命值
" e* D4 U: w7 R& _3 f0 g4 m/ ]# i6 P: E2 z: A
getinpower                       获得内功值9 z" w6 ^% S) C2 }1 v1 z% F7 r
getsenderinpower
! t0 U; B; ^2 j7 _! B
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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