游客您好
  • 点击联系客服

    在线时间: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语言。
$ I1 h; W0 C0 }% V
5 [! f5 i+ _0 G0 Z千年有三个常用的数据类型,String 字符串型,Integer 整型,Boolean 布尔型。
; t+ K8 G. ]) ~( _. W, v* R* O3 _- N$ n  x4 s/ F' X+ r- X( B
一个函数的基本结构是这样的:9 ]- ~! r2 f8 O- U

2 \, D8 @( W+ q- R5 W  sprocedure OnCreate (aStr : String);
- Q, m$ ~- a$ }: c" j5 Yvar
/ f) n" i& f. T0 Z  w$ ]9 k9 X2 [   定义变量% O( W' D6 o4 X9 K% S8 v
begin: [- J+ u/ ~* A( c; N! Y- Q8 w# ?  J
   语句$ r9 F" C/ M' E9 _$ f( t+ u
end;% r# u8 _2 F5 T! N
. v5 d: t0 l' G! J# E$ I
在每个脚本的前面都会看到一堆函数,这些是千年的库函数,可以直接拿来使用的。例如:callfunc (aText: string) ,可以返回一些信息,具体返回什么由括号里面的 aText参数决定,这些参数在下面会给出。Random (aScope: integer),可以产生 aScope范围内的随机整数。
, b, P, Q1 x% R' c
' M/ h2 H. g' X. }4 T& E千年中有两个非常重要的函数,一个是 print,另外一个是 callfunc,用法和参数比较复杂。. Y# E) f2 s, J% E  g

: J9 e* I/ [$ e  V/***********事件触发的函数**********/
& j" G# \( R7 }& L2 ?
+ A2 U( |2 h+ \  S% z% ~8 C' ]//当有人*近时8 p+ R. T$ F0 ?* R( Q. {- H, j
procedure OnApproach (aStr : String);
/ I; }. F& h+ v. E% ]# a6 i. f! q) T1 z
//当有人离开时
& ^$ M; @1 L5 z, Hprocedure OnAway (aStr : String);
' r6 D( h* k3 j$ G' {
3 |1 h) C1 k. ]/ R2 P7 G: K//当受到掌风攻击时
1 |: }8 |* e) B9 A" r6 Wprocedure OnBow (aStr : String);
/ C' l' a3 E/ E+ E# X9 p# S5 U. m
//当状态改变时
5 w3 s) |2 A+ A1 aprocedure OnChangeState (aStr : String);3 h' W9 P; R1 e* B, |

: c$ R& J& B, x% T9 E//当初始创建时
. i1 J. W2 H7 l( ~procedure OnCreate (aStr : String);
: S: X0 F! P8 _6 U5 `& r
3 P2 y) F$ e5 j1 Q//当被双击时: J* B+ y# V5 K+ R4 a, O
procedure OnDblClick(aStr : String);9 k  C0 \: p6 w* D2 W5 h
2 B6 G' b. N! i) \; I- R
//当死亡前/ [. [  H, e2 _% |" a- H- m
procedure OnDieBefore (aStr : String);- H; m1 G/ s: h9 |) f4 u
/ N, R" p; ~0 Y8 o
//当死亡后( M" V+ R2 a* g" y! j" N8 Q
procedure OnDie (aStr : String);
$ I4 r( J( S' x- |6 _0 N! `, R& n8 r+ p
//当被拖放物品时6 q. r4 k7 P( n, p- ?
procedure OnDropItem (aStr : String);
+ ^, T$ `1 I) V2 l% s
, _% L0 |/ s; b( E//当得到命令消息时* K# G" W2 f% {; H& s, ~% G* p
procedure OnGetResult (aStr : String);
5 m; \/ n7 Y9 k$ Z- o# P: q) B7 j% @1 M) k; F# t) g3 g
//当得到改变步长时
0 l' u  R5 e1 d; I! w; P* @6 iprocedure OnGetChangeStep (aStr : String);
$ R( o& j& N& u4 x$ P$ R% m, h7 u0 ~; J- f" u) r2 H
//当受到攻击时
8 }4 O- f! z3 n' {$ C( n3 M0 q" Nprocedure OnHit (aStr : String);; d9 X! e  K, b6 ^$ A: b. }0 b0 a
/ E! A/ c3 G' N* }
//当被左鼠标键单击时
3 N" e; `2 V  K$ G4 n6 ?; R* y' aprocedure OnLeftClick (aStr : String);# K  ]7 J1 ~: y# E

" {. s$ a) g5 m# K& _5 s//5 j3 w! x3 W1 n0 P# S7 N- `
procedure OnRegen (aStr : String);0 B$ u. {/ `, {" h; J3 ?; t$ x
& O0 u, Y" w0 G6 {" g$ ^# o
//
& t8 A9 o3 U$ g+ N$ q9 ?procedure OnTimer (aStr : String);# Y- l) d2 e  f7 U/ a* }5 i

5 W  Q5 X! U/ d; D$ `8 @0 V$ |//当物件发生翻转打开时,一般是用于门
4 K, O' P1 D; v1 c7 d% I& Oprocedure OnTurnOn (aStr : String);
# ?" g8 |" u  y. z% M( ?# k: s, {9 E3 ^, [  D
//当物件发生翻转关闭时,一般是用于门
& c8 y4 N4 V7 Gprocedure OnTurnOff (aStr : String);1 K5 ^0 F; b0 M7 ]/ E  ?
( r& k& F& p0 X0 O
//当用户开始游戏时
6 ]* L! h5 ?* e. }; R: z) U5 {procedure OnUserStart (aStr : String);$ X6 I/ m# d& `/ N) L! }4 Z
. N) _& O0 j) h; o8 W
//当用户结束游戏时
7 x' J9 G& B5 jprocedure OnUserEnd (aStr : String);
- k% i3 S* A" ^
. A; z0 _- o( ?//当移动时
( m- N2 E' C2 w4 vfunction OnMove (aStr : String) : String;; u/ @) h' S( X: u0 e

; H5 b* v& Y! F' J//" n! Q* ?/ n3 J5 b0 i: K9 j* [" P
function OnDanger (aStr : String) : String;- Q7 o5 U9 {- c2 b/ J
' ?2 y% j% `1 ]$ m: N4 c* [
//产生一个随机数(系统函数)1 w. Q7 i% j0 A: D6 Q0 _
function  Random (aScope: integer): integer;" T7 g7 a% M; H9 C
/ o6 U$ B% B. F7 x) |* O
//返回指定参数的消息(系统函数), x. ~/ g# _  g: E8 b1 H% F
function  callfunc (aText: string): string;
( y. a8 r5 S6 U" n/ m
: h8 l/ s0 C* t8 p! f//执行一条命令,可以是说话、传送、获得玩家的物品等(系统函数)
+ ]9 c' w9 e1 j7 a  R! p/ q3 y7 `procedure print (aText: string);
4 P: V' y9 m- t  D0 ~
: p. \0 ~: @- P! R具体参数(略),整理中...........- a" I6 |0 K7 d# r" a

- r0 y4 y5 G/ i' N+ h8 c+ ^2 R//转换字符串为整数(系统函数)" k# \5 H% ?& Z1 A3 k
function  StrToInt (astr: string): integer;
6 [5 \  e2 R4 j
4 f& g, H' n& }" H& C9 j//转换整数为字符串(系统函数)
8 a' [- j- W/ }  ufunction  IntToStr (aInt: integer): string;
# K' d. f+ @) v! U& S7 C" }
2 X$ ~( l8 d( L+ A8 V0 Z+ |  ]6 s/***********事件触发的函数**********/% L+ K( R6 `; p8 M! I8 b
1 }$ ?+ X  q: k' z! _8 T
# h+ H( y6 R, M! X5 n  `
. \- M) v& e0 K, `, [) K; e* K# U

/ F* M- s2 ~, K7 D6 O) M! `. h' p
/ ?: v* L* f9 m  {, m
8 D4 |( f# S; V' X4 g4 e
0 \3 i% }8 D. o, Z
# V) W4 ^* \9 M+ [8 S
; d! }6 P  X) Cfunction  callfunc (aText: string): string;   //以下为 aText参数的值
; O) ?. G  ^. M# {! b0 d  T  X7 v+ F0 Z6 s5 [8 w
getsysteminfo                    获得系统信息8 Q- T# u% M! d4 k4 Q' S
getname                          获得名字
. c- G) L  B* _2 K' y& K. H. Lgetsendername                    获得消息发送者名字& P2 x5 |! a) t$ P+ A- f
getage                           获得年龄: s6 L; k2 L" b; U$ s) I
getsenderage                     获得消息发送者年龄
# B+ y+ ^7 f$ P. Lget***                           获得性别
4 J* C- u6 K3 {+ Wgetsender***                     获得消息发送者性别$ R$ R1 j+ m7 y* L1 j
getid                            获得ID( s* n9 f/ l8 X% G( w% V
getsenderid                      获得消息发送者ID' J/ q7 Q0 \6 N( k
getserverid                      获得服务器ID
  Z7 |! B& z+ Y: p* q: l: t  K" xgetsenderserverid                获得消息发送者服务器ID
+ H$ s; W) S* ^: Rfindobjectbyname                 用名字查找物件# P& ?( ?" h, `# g7 N
getposition                      获得位置
3 s: W) m) c! p( z$ h8 E. [getsenderposition                获得消息发送者位置
9 ^( c( L! ]" ]% X  N  W# ]$ I7 sgetnearxy                        获得亲近的XY# r# L" G8 S2 m' ]
getmapname                       获得地图名字
# c1 Q3 C. K/ `( R, Pgetsendermapname                 获得消息发送者地图名字
5 z7 |# E" \% \  e$ R5 z  A0 Qgetmoveablexy                    获得移动能的XY
0 q, t) ^$ T' B) j1 s) ^getrace                          获得种族
8 y3 ?# E: u. Y4 r1 ~- U8 ygetsenderrace                    获得消息发送者种族
* O, J. @" g9 [7 B8 \% Y0 Z1 @3 z4 W% a- o* u% A. ~
getmaxlife                       获得最大的生命值
. `& m6 M; x4 ]; Jgetsendermaxlife                 获得消息发送者最大的生命值
7 s' a& ]9 R7 u5 [6 v. sgetmaxinpower                    获得最大的内功值5 W4 N2 W( d  x' X) s4 f3 b
getsendermaxinpower              获得消息发送者最大的内功值
, J; _5 N& m& {1 ygetmaxoutpower                   获得最大的外功值
; A4 T5 C7 p6 L0 ]getsendermaxoutpower             获得消息发送者最大的外功值) i$ o  W  R& d: \
getmaxmagic                      获得最大的武功值5 y; f  o) Y! D
getsendermaxmagic                获得消息发送者最大的武功值
9 s: o5 a# l+ T2 w$ }getlife                          获得生命值
. [: a- F" h; Dgetsenderlife                    获得消息发送者生命值3 ]6 h5 c$ s4 T

6 x! L' f8 X  b3 Hgetinpower                       获得内功值7 N8 @/ M3 S) r* y2 h
getsenderinpower
8 Y0 v( [! r/ S) A* Y
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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