游客您好
  • 点击联系客服

    在线时间: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语言。9 N, K# T( L9 r, _( J7 U/ k

  ~# v6 j! i, Q$ @8 K0 X千年有三个常用的数据类型,String 字符串型,Integer 整型,Boolean 布尔型。! u5 ]8 h( X" Y- L  P% |& n

3 O/ G1 s( l& T/ y0 D1 I一个函数的基本结构是这样的:
& w! A( \* f9 D8 L$ y. ^0 Y4 _9 M) X, W
procedure OnCreate (aStr : String);
) U+ [: ~. k; p8 z7 b$ p2 Xvar
& c+ I. F' |, P2 y. C   定义变量
. }9 W/ w3 r5 ?begin
+ c( S* F& @# `0 H   语句
+ J  M/ w: i0 u' p6 p! [end;
" ?) W, \' i. D) ~. [8 {+ c8 c7 E- {  x% g( ]# o
在每个脚本的前面都会看到一堆函数,这些是千年的库函数,可以直接拿来使用的。例如:callfunc (aText: string) ,可以返回一些信息,具体返回什么由括号里面的 aText参数决定,这些参数在下面会给出。Random (aScope: integer),可以产生 aScope范围内的随机整数。
. B5 ^  s4 D4 S' X, k/ y7 z: e* z
0 X  M  \5 S* f千年中有两个非常重要的函数,一个是 print,另外一个是 callfunc,用法和参数比较复杂。
, l/ U, f2 b1 k6 ^/ K7 u2 X* b+ ]; x& f
$ a, K+ q8 ]% J( y9 G/***********事件触发的函数**********/
7 x: _4 w. j* s7 v2 |# U
+ T' U4 e, G; ]//当有人*近时! t5 ^( q: x7 k" m% X: Q
procedure OnApproach (aStr : String);
. k- z/ z. i% F4 S0 [4 p; O) A7 J  O1 t4 |
//当有人离开时
& [$ C: Q$ |5 E% b7 Zprocedure OnAway (aStr : String);
& r0 k; Q0 B' R: }( k; _6 b
7 B! m0 X! G) U0 K) @+ ^//当受到掌风攻击时; w6 F) Q1 w+ a' y  J- p
procedure OnBow (aStr : String);
: @% x8 E8 o9 m4 u, g* b. m2 e& ^" P" M: K: V. v
//当状态改变时
! x' U3 [# w4 B+ mprocedure OnChangeState (aStr : String);
8 a7 c8 J" d3 |) f9 b) j6 f
1 F& B8 U, z* y# J7 m- c. h//当初始创建时
2 o! w3 u/ U5 l8 v) sprocedure OnCreate (aStr : String);8 g6 c7 F/ T/ S2 `
; Z7 t' ~% {7 w) P$ |; r$ H2 x
//当被双击时
; o1 ^  \: H# O; J# l! M: Iprocedure OnDblClick(aStr : String);5 G0 q( O0 q! B% l, l

9 a+ s4 A# ~7 ]1 d6 s- `% N5 N( C//当死亡前
8 Q; V3 t' K; g/ P! aprocedure OnDieBefore (aStr : String);
/ y0 {, [6 S4 e& v. s* O1 P& M- [" y' C- `# C2 ^. z
//当死亡后
8 p; `% N# [0 o* O" yprocedure OnDie (aStr : String);
$ a" Q6 M3 L4 G/ ]+ r, ?% t
' O3 q; m9 ?0 e7 E& q$ a8 I//当被拖放物品时0 F3 r$ ~/ z5 Q" u& t
procedure OnDropItem (aStr : String);* y* Q' q0 X/ Y: n/ w' K) b

, ~; o3 G: Q, N. n+ o& f//当得到命令消息时! ~" J+ M; z6 \3 _& v2 b- [
procedure OnGetResult (aStr : String);
1 j' S5 N5 g5 ~: C7 c- ~
6 m. ~! i- _# ?3 j: R2 `% Y//当得到改变步长时% P# B; S# r9 M6 q) q  y7 d1 x
procedure OnGetChangeStep (aStr : String);
; B5 m" J& @  ]# o& E0 Y1 G* p3 E1 ?
5 C% p, \0 p; W/ u; O7 C: B+ R//当受到攻击时2 G9 l% l/ J- y% {, ~: ]
procedure OnHit (aStr : String);
0 Y) A/ U% ~/ G9 s3 y- y( k" `+ A+ r
//当被左鼠标键单击时
* m% k* k2 ?3 K9 {; ?; D$ yprocedure OnLeftClick (aStr : String);
5 o; [1 R7 L5 t' z2 r
6 {+ E% p9 j: O% J! D1 U" W//
0 ^4 g7 S) a3 X# e8 K" Y0 i  `procedure OnRegen (aStr : String);+ E2 E, W. F0 w8 F2 c
, E' P! \7 {* e9 }# r. ~
//( L) L' M7 F9 a$ k4 e
procedure OnTimer (aStr : String);
4 `9 O/ v( l- `! G$ Z$ z& x& y" n+ ^( P/ ~* C! y* Q
//当物件发生翻转打开时,一般是用于门. ~+ r! I# k/ Q- _. _$ Z+ Q
procedure OnTurnOn (aStr : String);
; b5 w# V' g/ t. T) u. r# Y. a  L2 K% X3 X/ ?# P' U
//当物件发生翻转关闭时,一般是用于门
) ?% O/ q7 m+ N7 @3 j( hprocedure OnTurnOff (aStr : String);
7 z2 o6 v. e) f! k0 R4 n% F2 |, b' B3 z% \# [( {3 |% s
//当用户开始游戏时6 J$ F" A5 C2 i* ?% F+ [5 F0 G  Y4 z
procedure OnUserStart (aStr : String);
# j+ Q0 o- F. X' S7 r2 K) l0 B6 I7 v2 f( R9 C
//当用户结束游戏时/ U- x% y8 X. t( f. z3 T/ @
procedure OnUserEnd (aStr : String);
9 R! a% ]) S' v2 z6 b6 z; f; t0 u0 Z# ^6 j6 z: l
//当移动时+ t) C. a$ o+ V/ F- i0 F
function OnMove (aStr : String) : String;4 ]8 d3 g: o; K) l  N& P
( p" c2 \9 c  T$ V; q6 S( [) F
//
4 B" f' {4 S8 `( ffunction OnDanger (aStr : String) : String;
' N3 Y  B# P( j. c/ g7 D) [& c3 J+ {: ^7 A/ L5 R5 o
//产生一个随机数(系统函数)
* ?& }- R! I" M! m7 s! l5 e) f9 u; vfunction  Random (aScope: integer): integer;
8 B- \! O2 q2 x( k
7 k# d, T0 g  v' d% S3 \//返回指定参数的消息(系统函数)
" D9 Q3 F/ X- ~function  callfunc (aText: string): string;6 ]  O8 F& |0 j% F. G3 O
' T/ O' j' C3 d& z$ O1 O
//执行一条命令,可以是说话、传送、获得玩家的物品等(系统函数)2 _6 K, q9 M2 r& w$ t) L
procedure print (aText: string);, ~( S, V2 {4 O/ e( P2 J

2 M- u4 ~9 E2 X0 W$ C) n% _8 E" Y具体参数(略),整理中...........3 b7 F1 ~2 x# |# n
5 S1 [; r5 y" [# o9 K
//转换字符串为整数(系统函数)( ^  |. q+ J9 J& F, h/ C0 a
function  StrToInt (astr: string): integer;3 U5 s5 x9 d& T& ^! A8 Q! g- ?
3 f  J6 b. W2 c4 ^) `9 X) O; N% v
//转换整数为字符串(系统函数)( `" r" r. z0 g
function  IntToStr (aInt: integer): string;) t+ x7 D+ w: |# J$ y( O5 k

/ m- l: ?/ t3 E% c9 N; V1 B/***********事件触发的函数**********/& M! f% N/ J$ L

8 W" [1 G3 d  O2 w4 m3 e1 f, S  @; M- C3 y3 T4 t
) e: O& V; b7 A) Q& B7 I! ~0 h

, E9 ^: f, o  [  d$ W# X  k! r
+ U* f! @3 z/ f& D% W9 t" e  `7 O1 M, @

; a: j3 r# X% z7 e8 m- ]" k; g& T! s+ N, y- n

' |; h9 d% I. d- U. pfunction  callfunc (aText: string): string;   //以下为 aText参数的值
& c( q3 i; M3 {# ~; K2 F$ }0 f
# _% U" P0 ?# r' b' i4 bgetsysteminfo                    获得系统信息0 ?2 p9 i9 V! [. d
getname                          获得名字
) x% k6 w9 b' A$ \getsendername                    获得消息发送者名字/ L9 f$ u8 {3 z; v/ O3 J
getage                           获得年龄
% @- \( R. |+ c5 _, D! y9 P2 mgetsenderage                     获得消息发送者年龄
; \5 Q& L" s/ N- @, d5 L% rget***                           获得性别: D" y- N' Z  ]8 _# m" A0 H% ]
getsender***                     获得消息发送者性别
9 y- a- q0 S6 M' jgetid                            获得ID6 b( |* t# G6 i) J8 H8 |; g
getsenderid                      获得消息发送者ID0 Y( M" B# M$ Q0 w
getserverid                      获得服务器ID7 e% v- u3 R' P9 v
getsenderserverid                获得消息发送者服务器ID7 ^* c/ E+ s& V8 z
findobjectbyname                 用名字查找物件5 j) j$ W' {" C# e" h# c1 D
getposition                      获得位置* K) \% f8 |, ?( J
getsenderposition                获得消息发送者位置
& L- @. v; X6 ^# W( ~getnearxy                        获得亲近的XY2 {/ `+ _) p: y, }/ K
getmapname                       获得地图名字& d2 h7 f) i9 h1 O) P0 N& t
getsendermapname                 获得消息发送者地图名字
. A; @" @$ P1 s; I) \$ |, L% cgetmoveablexy                    获得移动能的XY0 c* h8 z5 T) v' s3 j5 U4 W
getrace                          获得种族
& K* G! D) J, n3 T3 Mgetsenderrace                    获得消息发送者种族
- z' m  x8 A0 F" B1 H2 `9 x5 t' h( R* f1 R2 Q2 P
getmaxlife                       获得最大的生命值
9 x2 W  e* ]+ ]6 B% egetsendermaxlife                 获得消息发送者最大的生命值
! z3 I& y" `/ Z/ D; B) Lgetmaxinpower                    获得最大的内功值
- j$ N; l( o) k' l2 `$ F. ]getsendermaxinpower              获得消息发送者最大的内功值3 ]4 L5 J& g9 h* S3 k8 \
getmaxoutpower                   获得最大的外功值: j! r; {4 P. y" t! L  n; q
getsendermaxoutpower             获得消息发送者最大的外功值
7 u7 C3 V2 p# O/ Ugetmaxmagic                      获得最大的武功值
1 K6 z. i( E4 t7 A& Kgetsendermaxmagic                获得消息发送者最大的武功值3 e' T+ M  d. Z+ I: V
getlife                          获得生命值
# {0 g2 d5 q8 E: P. Vgetsenderlife                    获得消息发送者生命值
4 N8 e+ O* f* a; F" q9 {
- P' z+ l' V& j. ogetinpower                       获得内功值
& Y0 D$ Z3 W/ r! L; wgetsenderinpower

3 b6 r* @! A5 K7 e" a
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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