游客您好
  • 点击联系客服

    在线时间: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语言。
" V: `0 F/ s* K! h" V* ?4 e% W' ^/ r) Q$ R# H8 o  C
千年有三个常用的数据类型,String 字符串型,Integer 整型,Boolean 布尔型。
3 k6 A! h% P: x
( w* a. ]: ^2 m3 A) |) c# h: ]: p9 u0 E一个函数的基本结构是这样的:
* K$ c' N. W" P5 p/ B! s# V8 S5 ~- t1 |' M, i; U7 k; i* r: j& o
procedure OnCreate (aStr : String);* h2 [( H9 n6 {/ H; g* P; y2 ?
var
+ c  N+ ]* }1 {% q1 L   定义变量
' _: \1 B9 m! `' Obegin
2 S. r& P# \! x  _   语句
3 i$ Y3 d4 Q2 J8 u. D  Iend;7 e- y2 k+ j5 ]& R8 F& U

9 g% b* m9 e' A0 f在每个脚本的前面都会看到一堆函数,这些是千年的库函数,可以直接拿来使用的。例如:callfunc (aText: string) ,可以返回一些信息,具体返回什么由括号里面的 aText参数决定,这些参数在下面会给出。Random (aScope: integer),可以产生 aScope范围内的随机整数。
, t" d. m' l4 Q' R: z& P
8 A# u+ i+ G0 ^  t1 ~% k千年中有两个非常重要的函数,一个是 print,另外一个是 callfunc,用法和参数比较复杂。' t9 y/ T2 c2 |8 {8 g- L

4 V7 H) x) f+ m2 b/***********事件触发的函数**********/
# V6 k8 ?1 U. I/ m) {( B! F) M3 u& X( x1 I& A
//当有人*近时
5 F& p$ c  }; ^4 q$ l) Uprocedure OnApproach (aStr : String);
" K2 M# X# t. e# Z2 k) y4 Q% [; K0 k3 u( d' ?% B$ r
//当有人离开时5 A. w& e- r( O* l/ E% L1 c
procedure OnAway (aStr : String);# w/ R7 Q0 j/ g9 W3 n* X
/ X4 b# b2 N. }( M- V
//当受到掌风攻击时9 e% ?/ o" `  T2 r7 g
procedure OnBow (aStr : String);
% f3 x2 V$ h6 S' O/ G+ D+ ?* ?1 u' Q/ d9 T" T( \
//当状态改变时
. w% W  [! K, t6 a% R8 Oprocedure OnChangeState (aStr : String);3 z0 e5 [2 t0 e' z* {1 ]9 L3 l' \2 R
, J. G9 @4 F6 S4 X- b! J" |* P8 F6 D
//当初始创建时4 @. Q6 f, f5 U$ k
procedure OnCreate (aStr : String);* Y7 b' U: L+ z; p0 _! _- K, q% Q

, F, S" W* g! {0 E% d. e//当被双击时0 B) d! w* p4 k. g: t: T3 M
procedure OnDblClick(aStr : String);
6 d% U" L$ I0 r: R3 J+ {
5 f+ ^8 H  `& V4 F) @% h. B, B8 e  ?//当死亡前7 v8 _; e, @! _- N; y% {5 M7 S
procedure OnDieBefore (aStr : String);6 m6 t5 m9 B! j" w: c/ ~

4 s3 h; o4 T2 Y% [! v  E  h8 K6 f: T//当死亡后
: ^& @6 V. m9 U: }! K2 Q5 Wprocedure OnDie (aStr : String);
" a" U( c4 F# Z! b8 B2 z4 N1 G# X; q
//当被拖放物品时
8 [. p/ P" I( f- Tprocedure OnDropItem (aStr : String);
1 d& E. z3 {' J) ~( y( i3 l; P' U8 l, v$ y; r5 X8 L+ ]
//当得到命令消息时. n% l$ m; B2 L! q6 i  G3 t5 Q* `
procedure OnGetResult (aStr : String);# L- l! i8 u* M
8 x6 T8 H; ~+ T$ ~9 h
//当得到改变步长时
& i1 a% b" ]  T3 _3 V4 Iprocedure OnGetChangeStep (aStr : String);1 B2 H5 A2 m4 b% ?5 T/ D
: }  B# F2 Z) e
//当受到攻击时7 h. e: q0 J' e, P5 X
procedure OnHit (aStr : String);
8 ^) S. W9 }0 }8 ?& s  B; n! z8 ~. v
//当被左鼠标键单击时# `; g2 y+ Q8 ~
procedure OnLeftClick (aStr : String);
7 r& Y4 q3 ^' N6 g' `
7 @9 u( `! L, S2 p( Z0 v1 u//$ ?3 f3 `, i2 r( M- X
procedure OnRegen (aStr : String);
* C4 y0 Y* F+ |+ c, S) v6 o9 D% E7 ?8 v9 e
//4 _3 z" s: c$ D' L& J: }8 G
procedure OnTimer (aStr : String);, Q% D# V% V) P5 ]2 C
  v( \( \4 ]  W9 O2 r7 z1 z
//当物件发生翻转打开时,一般是用于门9 h1 {1 F9 D8 r& I: P
procedure OnTurnOn (aStr : String);1 e3 P3 z* ?4 \0 y+ V  m1 {

7 l8 y4 r8 d* V//当物件发生翻转关闭时,一般是用于门4 y# P/ y* I- `0 C+ Q7 E
procedure OnTurnOff (aStr : String);/ [9 g) E7 G& f& {/ t5 }( W
' ]3 O) `% z$ h
//当用户开始游戏时; y$ Q8 B# q/ k- D; q% _  o
procedure OnUserStart (aStr : String);$ |) {! U3 {" c  C7 i) ?+ R9 \

8 X5 W7 d9 H! Q/ R& @//当用户结束游戏时
" A! X8 V  s+ Eprocedure OnUserEnd (aStr : String);
, ]) b6 a- `1 M8 Z3 E3 b! ?
5 V) Q" [9 r. ^* e1 b# l: I( f//当移动时5 K8 W! F) [/ W- Y5 G
function OnMove (aStr : String) : String;7 i9 Z- k2 M+ O6 e. P
  i: E  }1 F8 v7 S3 W4 i5 H0 i
//" F9 S& y1 d" e
function OnDanger (aStr : String) : String;7 h) P2 K2 o1 L9 o- Q1 B4 a

9 T# T6 G& o5 f6 `6 }1 w& V. {( m//产生一个随机数(系统函数)
* ?1 v3 [- z/ B$ N  Q* c7 \, lfunction  Random (aScope: integer): integer;# p( I8 L* y! G* z" ], D

( ?( p$ l" h/ x0 ^) |, [# M8 e0 s//返回指定参数的消息(系统函数)
% D% Z$ Z4 {. N7 q, J1 \6 G- vfunction  callfunc (aText: string): string;7 N& T; b$ W) h0 c2 R% t$ g% c

6 P% ?* w' v3 `0 x" o2 x//执行一条命令,可以是说话、传送、获得玩家的物品等(系统函数), e% Y& ]$ Y* v, `! R
procedure print (aText: string);
- ~+ L$ \/ |- ]+ [- I7 p2 ?! T; _& ]/ C
具体参数(略),整理中...........  R2 ?  ?, B/ P$ l
# D' t) f+ y2 u* }! ]4 U1 x
//转换字符串为整数(系统函数)7 ]2 a6 H3 I% L2 \5 X' Z6 g
function  StrToInt (astr: string): integer;% u2 u. e+ g) ~8 h. x9 t" [5 w

  S: {5 X1 |' Q8 d! |2 |2 S. m# i. C//转换整数为字符串(系统函数)0 T9 k: t7 N7 G$ }, I8 f/ L
function  IntToStr (aInt: integer): string;9 D$ K5 Y. E  d& x6 I) N1 }
6 @8 G$ A/ |2 E% i# D
/***********事件触发的函数**********/( G. p9 I; g3 g: I0 ?

( K/ J# C1 G% O. g
- U8 k. H, P5 b, Q/ E2 l
1 s& I) x8 b8 \8 g) Z5 t8 {9 L- a1 k6 M8 G5 [( z
, J8 G, [8 N$ S- K
: Z/ C! o; d% \; a! p9 ~1 w; @
& o7 t; o1 @" D) U
0 ?0 ~1 f2 X7 }8 A* m3 Q4 S2 o, T9 Y3 ^) ]

% R" u9 g/ r; A: V8 P2 A3 Wfunction  callfunc (aText: string): string;   //以下为 aText参数的值
% |/ X3 g; ~; E3 J
# R) H; n' ]" Agetsysteminfo                    获得系统信息
$ ]; m+ @5 c' n  O% Wgetname                          获得名字/ I2 f. {* j* W# u
getsendername                    获得消息发送者名字
9 Y. O' A! j) A; ?. igetage                           获得年龄2 J$ ^+ a4 n! f/ p. t8 R+ L
getsenderage                     获得消息发送者年龄
& B% H! n/ O+ O+ W  F: Wget***                           获得性别
. z6 x8 I' K+ M/ A* lgetsender***                     获得消息发送者性别9 i2 F  \* r5 Z2 Q5 q" `. h% b
getid                            获得ID
% P' S0 U4 b1 T  w* R" S/ c6 G7 a$ F  \getsenderid                      获得消息发送者ID
4 K( c% {1 b) dgetserverid                      获得服务器ID
6 t9 d3 b, m" }getsenderserverid                获得消息发送者服务器ID
' V- }$ x  C) L: H: s- Cfindobjectbyname                 用名字查找物件9 n% o9 ^8 d5 c% a$ a8 ^+ w
getposition                      获得位置
9 }2 _8 w% q8 n# i, a5 `getsenderposition                获得消息发送者位置
$ r; C* f- d/ P- ^getnearxy                        获得亲近的XY
9 q  _) g: S+ @8 c" B: O) F9 ?. C: egetmapname                       获得地图名字2 r, K1 Y5 r8 W* h3 ^
getsendermapname                 获得消息发送者地图名字% X1 e/ P' M/ [/ z' j4 ]  r3 `( o- V' W
getmoveablexy                    获得移动能的XY  E/ H8 h! ^& z3 B, i) u+ u2 \
getrace                          获得种族
$ E. q2 t- m' ^. J: mgetsenderrace                    获得消息发送者种族
+ \, w; _# V' b$ K1 ], a2 f
4 h- G0 N; I% R% M( X4 R" }! F/ \getmaxlife                       获得最大的生命值. M5 g1 F0 a' J  \0 r9 p
getsendermaxlife                 获得消息发送者最大的生命值7 {% F/ s( d7 {
getmaxinpower                    获得最大的内功值: ?6 f7 ]4 C5 J* _. m8 [$ g* Y6 D# |
getsendermaxinpower              获得消息发送者最大的内功值
7 k8 V" M1 P; igetmaxoutpower                   获得最大的外功值
) S7 n' [! z& k- A7 p$ dgetsendermaxoutpower             获得消息发送者最大的外功值
. S! u( s' k) J6 V* p; kgetmaxmagic                      获得最大的武功值
1 |/ l) ]: y1 ]7 L, ?getsendermaxmagic                获得消息发送者最大的武功值
; @/ P+ X4 K) \  u2 q% D+ ^+ Lgetlife                          获得生命值& K  a! d- t6 t" ^9 z: ^
getsenderlife                    获得消息发送者生命值
( k3 _9 {# y7 R. J: W) W9 w4 A1 Z
3 O1 M2 s1 p. Y6 y/ Kgetinpower                       获得内功值/ ]3 x! H; h  \6 n
getsenderinpower

$ h; t) j" L: j  f2 J! T
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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