游客您好
  • 点击联系客服

    在线时间: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语言。5 m% N, N, ^& J6 z% V5 w

- r& W2 a/ X( |. u# u) o千年有三个常用的数据类型,String 字符串型,Integer 整型,Boolean 布尔型。
# q+ j- j& |# a8 K7 S& n2 S9 I2 c4 F# `7 V
& `! [( s, E; W& R+ a一个函数的基本结构是这样的:
+ \; T! F/ }; i
' d, Y6 f, s8 w5 [( \procedure OnCreate (aStr : String);
2 ^: z8 c$ g. K  B) c9 ~& Gvar5 p  T$ ?8 }$ F! }
   定义变量
! I, N5 F3 H$ q" Lbegin4 u; h( Q& }% {. c5 y, [
   语句0 p3 O# v0 W8 B4 i/ P! k
end;2 D  S: Y8 L' m* k; T/ R7 S
' S9 g; Q7 k$ H6 d. t: B# b
在每个脚本的前面都会看到一堆函数,这些是千年的库函数,可以直接拿来使用的。例如:callfunc (aText: string) ,可以返回一些信息,具体返回什么由括号里面的 aText参数决定,这些参数在下面会给出。Random (aScope: integer),可以产生 aScope范围内的随机整数。- N! r. `7 O2 Z) @5 V! |
# z: M* N& v6 ?5 z9 U
千年中有两个非常重要的函数,一个是 print,另外一个是 callfunc,用法和参数比较复杂。7 R* \* Y  B" ]+ [
0 ?/ b2 x, N, G* B9 V/ e
/***********事件触发的函数**********/
2 O2 k* b% q5 E+ }1 r1 \0 i# Q6 c  s% I9 q. a4 q
//当有人*近时
$ s! M+ Z# {6 c1 _4 pprocedure OnApproach (aStr : String);" B" ?! z8 p" H
& Q# ^) Y; s3 Q4 r. E8 e
//当有人离开时, R, x- p) [* Y9 T
procedure OnAway (aStr : String);1 T! s3 g, S$ C( R: l: F

- x/ w* k) k7 k5 M- _: P* w//当受到掌风攻击时) t' E  w# A+ T4 j. \
procedure OnBow (aStr : String);/ k) O+ r" K# M8 U0 b* Q
/ d" Y$ U) J" y# I! K. R" }/ H
//当状态改变时/ z1 q( N  j8 v+ P' f, C, o
procedure OnChangeState (aStr : String);1 L# G& |) I4 s2 `! y: }! y! L5 e
8 [& K: t$ K5 g1 U3 a! o
//当初始创建时
, \  P. [, |+ [( T& Tprocedure OnCreate (aStr : String);
& j" c6 |5 y/ I6 S0 I) K- A; q  j4 b, [+ Y4 Q
//当被双击时7 m2 h0 U# B# J! Q( H! z# |
procedure OnDblClick(aStr : String);% b6 W! Y. {  ^1 T2 L
2 U! O" t! u' U5 j
//当死亡前
# U% V6 h/ U/ aprocedure OnDieBefore (aStr : String);4 x% h$ I0 `2 y; K7 C6 Z

9 p& P; Z% a: Y0 H//当死亡后
+ f9 T9 m  E  jprocedure OnDie (aStr : String);
1 Y5 {7 O) i! W. e! r3 Z2 L4 B
& c# a  u9 e: n8 K: B8 c3 r//当被拖放物品时* r+ U; E0 L7 S5 v# S) e
procedure OnDropItem (aStr : String);( ]1 K2 l' T* Z. B6 ^! f
3 C: x9 B2 _5 t) [3 i9 n+ R
//当得到命令消息时0 {4 Q1 J2 C  _* t# J- y4 f
procedure OnGetResult (aStr : String);
' [; A8 \! j$ E, \/ [& j  }( l
' f+ D, N/ R# [9 c' C//当得到改变步长时7 }+ O# V3 h. ^* U* ^/ Z
procedure OnGetChangeStep (aStr : String);0 U8 S( q' f4 [
+ l" E8 w$ O4 j# G; b" |
//当受到攻击时
/ }( l5 `, q' i  c: iprocedure OnHit (aStr : String);
8 M& ?2 \' }8 p$ F
: F( @0 F: Z7 k( z; ^//当被左鼠标键单击时
0 G* ^4 Q; I. dprocedure OnLeftClick (aStr : String);) ^" E8 D5 G- Y. q, k+ j# V& b9 Y
  l. s3 @# Q) ~
//
' b& E. U+ ~2 b+ \procedure OnRegen (aStr : String);3 b2 J# e9 c. \- p, V3 _" j% {
# y4 H3 A# P: g+ D. t
//
0 k; }# y: |, E0 |% l+ ~$ yprocedure OnTimer (aStr : String);, x3 A. W7 W) D( @/ V! n( z
' C. x8 k% X# I0 o2 B9 m0 n7 X/ V
//当物件发生翻转打开时,一般是用于门0 e$ M, J( @0 ]9 f" Q5 a
procedure OnTurnOn (aStr : String);8 D) @7 a0 S: A8 O6 r6 r" h

, v3 v3 Y8 j7 Q' u4 q//当物件发生翻转关闭时,一般是用于门# _" N+ V' z7 i3 A- k: e/ \! p# _: ]
procedure OnTurnOff (aStr : String);  w5 G6 W" ?/ |, {) {8 C1 j( P
1 Q& P/ {" C) q) q9 R+ W7 |
//当用户开始游戏时- c" a1 w3 B- ^1 h
procedure OnUserStart (aStr : String);/ |) n. _( `4 ?/ Y1 l& |. ^
# m! y6 M% \$ [* o
//当用户结束游戏时1 l! k+ d3 K- f) c9 o
procedure OnUserEnd (aStr : String);) p6 k& |: _8 _2 u- ]# X# J

+ O+ `/ S  ?4 g* _3 F/ }//当移动时2 [7 m- c0 q% m! @$ |
function OnMove (aStr : String) : String;
( g4 ^$ _. F4 O2 G; _% r9 y6 i
- I$ S# g5 @. b//
( r8 |; F) R% l: }, A) Pfunction OnDanger (aStr : String) : String;
+ x3 Y; V: s+ F( C# V$ t' f( Z  w1 }3 Z& a  c$ h# q& Q2 P
//产生一个随机数(系统函数)
: y. s# [. f: ]6 i* n% {4 zfunction  Random (aScope: integer): integer;; m5 ]: F/ E2 F5 d0 P# A

$ G* Y$ u( n$ p+ K( w/ I//返回指定参数的消息(系统函数)( ^: a3 u  Q/ q8 ?& b; t
function  callfunc (aText: string): string;
2 B+ L$ L8 S* `4 C
2 Z8 u, I) T2 P# i: J' ~//执行一条命令,可以是说话、传送、获得玩家的物品等(系统函数)
7 Q" X6 U' v! M2 w  c. e# {procedure print (aText: string);: V9 T! R: s9 _! f  o6 Q; d

9 n8 G# Q4 P* C7 p& U具体参数(略),整理中...........# [/ j+ ?% i% B+ k1 w
+ r8 |. k* t! D* u7 K
//转换字符串为整数(系统函数)
- c' v2 S; w! ~, ~+ h$ Bfunction  StrToInt (astr: string): integer;
, M# A5 J! q) i7 _0 N/ V
) n+ a/ G; d& O: y//转换整数为字符串(系统函数)
8 T2 M. F; n$ }: B7 @function  IntToStr (aInt: integer): string;
; ]: y. g* j; K
% P. n* A! D3 ~5 s0 K" o& n/***********事件触发的函数**********/9 p5 L/ n; F" v5 l/ q* j0 w8 A4 Z
' ?4 M5 K4 h* k, f& P/ l
# `# x6 f$ H/ f. w

5 J' N& V* Q/ j! j  P8 w! B, n; D3 J1 x, `7 L5 d
+ H1 V1 h' o! r6 D- s
/ l/ \9 d1 X. \8 m! D) z
( A2 u, G6 D$ y5 D( p! F6 |* ]

# N& ~  ?) n( {
) a4 k7 \/ ~- _# i- F$ Zfunction  callfunc (aText: string): string;   //以下为 aText参数的值9 f& n& E3 `* `1 g2 g

' d9 W$ K  J# k% ]! e1 Pgetsysteminfo                    获得系统信息
1 B. ]2 |- r4 Xgetname                          获得名字
# X! Q, A- v; }0 ^getsendername                    获得消息发送者名字
3 \9 X% k3 A# Q+ ^) r8 Mgetage                           获得年龄4 l. t/ R" ~1 }  n5 d
getsenderage                     获得消息发送者年龄  M6 A0 F8 J: |5 t8 i% C- L
get***                           获得性别
" N4 z5 o2 \2 J# jgetsender***                     获得消息发送者性别
6 I4 m7 G! ?) w9 D2 ]3 j( q  jgetid                            获得ID- J% x* D3 S) W. ?& M. {
getsenderid                      获得消息发送者ID7 F- e" f/ \0 y  a. ]& t
getserverid                      获得服务器ID
4 ]) n2 x; _, d$ L0 [getsenderserverid                获得消息发送者服务器ID
0 y: H/ y( n& W  j6 Xfindobjectbyname                 用名字查找物件  Z$ ~) f7 m; N( L0 h; L; R
getposition                      获得位置
, h4 I* u+ @! }/ `% ]9 r1 ~8 ugetsenderposition                获得消息发送者位置: S0 Q# t; U8 K. U% Y3 i& ?/ w' X
getnearxy                        获得亲近的XY
' |9 M/ t1 ^; q0 |getmapname                       获得地图名字% B4 m# n/ M# z2 W2 d
getsendermapname                 获得消息发送者地图名字: @$ M4 L1 n! Z
getmoveablexy                    获得移动能的XY0 r" l9 r* N) v& S  C( A& h3 B- E
getrace                          获得种族, z' B& n3 w$ t( J) B/ C- W+ W- C
getsenderrace                    获得消息发送者种族; [5 ?/ ?, u( y

/ X$ F3 R5 ?6 _  F: Q) C- Kgetmaxlife                       获得最大的生命值8 H3 D( p! L1 r+ z' p
getsendermaxlife                 获得消息发送者最大的生命值
" Q& t/ j  B- b" N6 `% R. V# Y# E' n/ Wgetmaxinpower                    获得最大的内功值
) K, O" ~" J  H1 z8 k4 }getsendermaxinpower              获得消息发送者最大的内功值
0 A( _) D1 L* O: o) X4 Qgetmaxoutpower                   获得最大的外功值
" V/ F9 p' P6 b. K' F5 t) hgetsendermaxoutpower             获得消息发送者最大的外功值) x0 N9 I& G" V& D
getmaxmagic                      获得最大的武功值
; R) E5 o% }1 Q9 |getsendermaxmagic                获得消息发送者最大的武功值
  L7 H. M; V. T  z& rgetlife                          获得生命值- [6 \% v$ b1 L0 l0 z2 `: e
getsenderlife                    获得消息发送者生命值5 T% g4 b1 C: c) H% o% b
' G4 S; ~3 {+ Z; X& ?5 j. J; z  k4 R: ^
getinpower                       获得内功值4 [3 p9 y. f2 h& r7 L$ n/ @
getsenderinpower

! r. x0 V3 z% M9 G# t& i9 W
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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