游客您好
  • 点击联系客服

    在线时间: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, N& k' h; d9 v) r
" A/ ~' r* d" _$ s8 m  Y
千年有三个常用的数据类型,String 字符串型,Integer 整型,Boolean 布尔型。
; c  h0 k7 z8 w" U0 [) R
; h( o4 x8 f7 T% T一个函数的基本结构是这样的:
& x5 f. t* b- N: [, r) x, v0 D1 C
2 J) H! j& M; P/ oprocedure OnCreate (aStr : String);
: `8 S' o2 B% \: {var
" ^* M; i# i" ~% f   定义变量
# \; z4 ~" T. B$ P1 Tbegin# y8 P. ~( X/ Z5 Y7 b- O; ^
   语句/ Z" e6 K: O. M/ e
end;
) v$ a9 K1 r: z4 m( W
6 n) y1 C3 j- n8 c在每个脚本的前面都会看到一堆函数,这些是千年的库函数,可以直接拿来使用的。例如:callfunc (aText: string) ,可以返回一些信息,具体返回什么由括号里面的 aText参数决定,这些参数在下面会给出。Random (aScope: integer),可以产生 aScope范围内的随机整数。& w3 b) ?/ O' U& W. u  ~0 L
$ Z$ \- }; [/ |7 j( `8 d
千年中有两个非常重要的函数,一个是 print,另外一个是 callfunc,用法和参数比较复杂。
* o- X7 z) P) O, s. _( }6 J. V4 N' {: k: B* N
/***********事件触发的函数**********/; y1 G) l/ l& @' m, n4 D& Z2 S

4 X$ E# @3 O/ G1 P- t( D( L; L4 f//当有人*近时0 ]& Q3 g; E# Q( K* ~
procedure OnApproach (aStr : String);
6 P' S) b8 k; {6 w5 h% D6 _- K" v+ E: W5 y# s, J; M
//当有人离开时
: m3 N' F4 I4 Yprocedure OnAway (aStr : String);+ g4 e9 X# m; {) f& N( ?

  Q0 z) ^0 G7 z1 @& ~, p! ]; E//当受到掌风攻击时
9 i. W1 S# b5 \8 wprocedure OnBow (aStr : String);
+ K4 ]! X& r. k6 j! y" u; c. ~
1 h) e' `8 @6 a# V, p6 v% [( x$ O//当状态改变时
4 d2 U' E' h" i, c$ d& `$ D/ bprocedure OnChangeState (aStr : String);& x# L% i: L2 F3 ^: m% ]0 f. b

  V- x7 U. T; I. J* T//当初始创建时0 ?$ y: v0 J  z3 V/ _! R
procedure OnCreate (aStr : String);
, Y+ o8 d6 f; c$ l0 @; T3 t' G8 z2 M
' z- z8 i! k! _9 S" O//当被双击时
$ H* P  }" o9 h% |2 rprocedure OnDblClick(aStr : String);5 ~( W# c2 W9 A- {: }, O

, ?: N  ~5 f5 ]6 z6 E, P//当死亡前
" f9 S$ T+ A. `0 p0 o4 a! ]6 \5 Mprocedure OnDieBefore (aStr : String);
2 z; \+ J% [- G1 a. F# |" I7 i, F3 s+ U$ M0 }
//当死亡后6 I: U5 I1 G$ a. b- @
procedure OnDie (aStr : String);
) j  }1 K+ z% e4 o$ J- K3 j
: S, Q7 _" P3 I  h//当被拖放物品时( P7 ?  I; t# X- i+ Z+ Y0 L) v
procedure OnDropItem (aStr : String);
9 e; ]2 B0 p+ O: s! o* z/ a
9 S( r! ?' V4 K//当得到命令消息时
. c5 i- f: E. l* p$ Z8 q# a) f  Iprocedure OnGetResult (aStr : String);9 n' ~& |6 |  O! Z0 G' ?8 k

3 `8 J) B4 Y( D1 B, a* }/ J# A//当得到改变步长时" ~: Y' n1 J  \' R$ k! S' C/ B0 ]
procedure OnGetChangeStep (aStr : String);" O  {; g. t9 X; z% X& H
" K( c5 u" O: v4 m( Z: {
//当受到攻击时
4 J* n6 {9 h  }0 @: Oprocedure OnHit (aStr : String);, M8 L. G; s( Y- I2 j( m2 g

' {2 a% G- ^: W8 W# _//当被左鼠标键单击时* O# ~3 x4 d+ c3 A
procedure OnLeftClick (aStr : String);9 F1 Q, B+ Y, _6 \9 g1 @) |( z( ~

1 ^* z: O7 l& {$ f7 j5 v0 H* Z//' m- G+ P! d" M0 l# f7 a3 s
procedure OnRegen (aStr : String);$ j1 D5 R, x& H& Q- p/ s
5 Y( Q+ r- [3 a
//5 h$ N9 E1 N8 K+ C' P) Y) D& l! S- M1 k& F
procedure OnTimer (aStr : String);; I  r+ Y2 r" Y
( y/ q, @6 M) b. T% o1 ?
//当物件发生翻转打开时,一般是用于门
: G) ~7 V' k' e: uprocedure OnTurnOn (aStr : String);/ ]+ X  l# @7 C" P

! E- S0 h& T! X' Q9 ^//当物件发生翻转关闭时,一般是用于门
' ~! E5 e5 g5 L  D$ k8 t. S3 Oprocedure OnTurnOff (aStr : String);
  \* v% ^6 t  a8 m* e* m2 s6 @$ p
0 n. ?$ ~1 A, E  z. q- u//当用户开始游戏时
( B3 s1 f9 Z0 X0 d! ^; i3 {5 cprocedure OnUserStart (aStr : String);& J$ x0 u6 |) R

. G9 m! a& H% \% R//当用户结束游戏时
8 q5 D/ |3 M; X- Nprocedure OnUserEnd (aStr : String);5 l2 a3 `9 f0 C! f7 o

% Z/ D3 p# k6 W//当移动时  \& S2 d! x% Z1 Q: [+ F7 g- N: g6 j
function OnMove (aStr : String) : String;, F, y2 t5 \* r% \
$ r! y- y& j5 P1 w! ]% i
//
9 _* h  F5 k% j; y1 a1 F) Efunction OnDanger (aStr : String) : String;
2 @6 d, z/ {+ K- I; Y9 ^
' o2 `( C4 N( l# r" P! `5 L# l//产生一个随机数(系统函数)! N& O. I0 g0 ]1 I7 u
function  Random (aScope: integer): integer;
8 N& w" u6 B! g' i1 ^. a9 u  f
7 x1 k- E" r; U- o//返回指定参数的消息(系统函数)) k! E7 A+ [- M& J  ~
function  callfunc (aText: string): string;
5 W& B* A. D* S* M( }; J8 {6 [" u: S5 h; ]
//执行一条命令,可以是说话、传送、获得玩家的物品等(系统函数)9 f7 i7 e9 Q8 F( _' a7 w7 [
procedure print (aText: string);
2 p& v& S4 c/ H8 B8 [( Z% U' g* F# J4 W' f
具体参数(略),整理中...........( c; S6 M6 l- r8 E: i
2 D% h- G( [# I+ p* m5 A& L
//转换字符串为整数(系统函数)) W& {& @- T/ z' v
function  StrToInt (astr: string): integer;
' f7 e% Z% l% n" O4 b6 _; N; ?/ [' h' ?- `6 y7 X
//转换整数为字符串(系统函数)
0 K2 K7 d1 U4 Cfunction  IntToStr (aInt: integer): string;" d8 }7 w$ L0 d) }2 w3 W
. L( f& D" n. K+ X7 i! ~& _
/***********事件触发的函数**********/
1 O7 K: c3 s6 S; V; A" J+ Z+ F! s+ B8 [5 y" Z% g
, f* e8 A8 T7 a$ U
# T2 V0 |6 O7 L- A, j8 l& `

/ j8 E* U1 X: q3 T+ Q
4 U' i4 ~3 I# C; |0 k
1 H7 N2 i7 I; m. }8 t6 r
" R8 v! B) e6 |% t, E3 i8 c9 e2 R: X% u$ `: _
1 A; h! K+ b+ e8 t. S' Y
function  callfunc (aText: string): string;   //以下为 aText参数的值
5 ?9 ]; W6 `* G. G8 m7 o: b; f$ N0 ?7 }
getsysteminfo                    获得系统信息; ?% J1 Z5 y5 s* I% y& D: o5 y
getname                          获得名字
( d4 {7 T3 T7 e. b# i6 pgetsendername                    获得消息发送者名字
1 F" _6 c2 A$ ~3 v8 {getage                           获得年龄. w% `9 u) y  c
getsenderage                     获得消息发送者年龄" X2 S# ]: u& x9 ?9 G6 V& @2 \6 p
get***                           获得性别. l: ]0 X9 x, M# g: L
getsender***                     获得消息发送者性别
9 r6 ^0 H( d/ d$ {5 s5 fgetid                            获得ID
7 w% I1 Z- L: Jgetsenderid                      获得消息发送者ID
3 _3 a5 {+ j  a4 S% ]/ \, p) {getserverid                      获得服务器ID  P/ ?# f- H9 L. l3 W2 _8 p! b
getsenderserverid                获得消息发送者服务器ID
" P( X/ O1 c" o% f- z# Efindobjectbyname                 用名字查找物件2 V0 {$ @$ f4 U1 C4 |
getposition                      获得位置  A5 Y1 _1 I7 z: X
getsenderposition                获得消息发送者位置
! V. q4 d  D: a" _# [# S1 [' Mgetnearxy                        获得亲近的XY
% l& `3 J  q8 c" C2 ^- `getmapname                       获得地图名字
4 A2 @' V* `, K# m; {getsendermapname                 获得消息发送者地图名字
7 h: S0 [8 F$ C& Z6 |getmoveablexy                    获得移动能的XY
8 \$ I2 o* ~! J, W) R! h7 v1 }getrace                          获得种族
, ^' E; P8 O: O) U( fgetsenderrace                    获得消息发送者种族& @1 a0 n0 D( K' m" B; _

8 G; _% Z, \; a. e1 [% `- n7 Y7 Xgetmaxlife                       获得最大的生命值
6 n- P  X( F  J& Ngetsendermaxlife                 获得消息发送者最大的生命值
; |/ T  d* f3 L# j" J$ ]" i' ?getmaxinpower                    获得最大的内功值4 O, C8 g, I- T  b$ N" m0 c7 k# W5 J
getsendermaxinpower              获得消息发送者最大的内功值( G  ~6 W9 J+ T4 ?
getmaxoutpower                   获得最大的外功值" _4 a& g# l# ^  M
getsendermaxoutpower             获得消息发送者最大的外功值
+ J4 E* J7 e: v! G8 k  Dgetmaxmagic                      获得最大的武功值  n/ w7 L1 b4 U; P; c" @
getsendermaxmagic                获得消息发送者最大的武功值
3 C/ a3 y3 C5 Q* ]getlife                          获得生命值
( H+ q9 p9 K# W; Dgetsenderlife                    获得消息发送者生命值
& t! C4 A/ t7 _9 B2 d9 J! X- c: N
; h! v2 m& H5 {" u" I+ h, |8 {5 mgetinpower                       获得内功值9 G; P' C' B+ `! H( c, j. j
getsenderinpower
9 G, U5 r1 \& T
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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