游客您好
  • 点击联系客服

    在线时间: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语言。1 G& T# y; U' L, @( d$ E) O
7 W( a+ G- E/ C) Y( Z4 z/ V3 E
千年有三个常用的数据类型,String 字符串型,Integer 整型,Boolean 布尔型。) @( g" T3 N4 T6 F# S
! T8 i' P5 m5 B* T
一个函数的基本结构是这样的:
+ P% C# d" ?( w3 K0 D
: t' E5 E$ k4 T5 ^5 Oprocedure OnCreate (aStr : String);
3 Y0 U& y& c# g9 C6 }var
4 {' \9 B$ w. E& R4 W   定义变量
6 W! I* M- R- b. h/ Hbegin+ ~& y; u9 q; ?" k
   语句7 m5 p  @# L( y+ z
end;: g- f- Q5 f3 _/ S  |7 j" y
/ j3 f  _* Z7 P4 T! b0 ^0 b( n
在每个脚本的前面都会看到一堆函数,这些是千年的库函数,可以直接拿来使用的。例如:callfunc (aText: string) ,可以返回一些信息,具体返回什么由括号里面的 aText参数决定,这些参数在下面会给出。Random (aScope: integer),可以产生 aScope范围内的随机整数。) f0 [+ a9 l  t# t& I

( `3 y3 O( @, q# @千年中有两个非常重要的函数,一个是 print,另外一个是 callfunc,用法和参数比较复杂。
! v( H8 B( Y% N; k1 Y3 `3 a8 T/ d4 k/ T" d+ r/ V. ~5 j, Y
/***********事件触发的函数**********/
/ [5 ]* R. e) q8 U( m! a2 |4 g/ M! o& P! d% y' {4 r$ C
//当有人*近时4 h/ Q6 T# I- Q) l) u
procedure OnApproach (aStr : String);
( q6 d8 N; }7 }! H  `5 m8 _# ?- K9 h
//当有人离开时
, K2 g' P7 [* ^: \- uprocedure OnAway (aStr : String);
+ V* E9 S3 O- m: j& E' ?0 ]( n& k% b! n) v+ ^! X7 G' Y
//当受到掌风攻击时
6 S% U5 e3 I' K9 v, J3 [procedure OnBow (aStr : String);
' X9 O" p" k: g8 C. |& e
% z( J/ _2 W% T1 a# K//当状态改变时
1 H6 Q8 W% Y1 q; ~procedure OnChangeState (aStr : String);
3 I- q4 k3 l1 @1 k* n% k# O
$ R3 v! m! Y: k* r0 D2 M& I//当初始创建时' W1 g! }1 C6 H5 `' `3 \; _/ A
procedure OnCreate (aStr : String);
0 s4 L% I& d& }( v3 }9 z% z4 f
//当被双击时6 R- R5 ?/ r/ P7 F$ r" {1 e, y
procedure OnDblClick(aStr : String);' f/ n3 W1 E9 m5 j) ^: t. \0 [3 f

% Y) f9 X5 x9 U3 M0 m$ T" h: |//当死亡前- B* l; Z2 U: V% E2 V# C
procedure OnDieBefore (aStr : String);
! k+ J, \* ]3 ?* D. u1 n$ g
" C5 _' O" U! o3 _2 G8 q! i" z//当死亡后
& m* _, l, ^0 [/ E% nprocedure OnDie (aStr : String);! `7 E0 ~  y9 ^8 J2 x
5 w" w+ ^5 G1 K6 p
//当被拖放物品时
0 F: U+ [- s* Z$ K: f) C0 G3 Oprocedure OnDropItem (aStr : String);  ~6 P+ H9 N! p. q

, I* V  f5 N" n0 T2 ~: I//当得到命令消息时
) _( F  W1 S0 rprocedure OnGetResult (aStr : String);
6 Y, g* |$ G6 s, D: ?/ |) F, W
5 ~3 y. A, W' e2 p. s* G% W//当得到改变步长时7 w8 d) p  R( ]6 Z4 D" ~8 ~# V
procedure OnGetChangeStep (aStr : String);
" @+ Y9 I' L( @( h+ C" W/ `) C" Y7 f# V( L# R3 \1 N" ~0 t+ Z; d) K
//当受到攻击时# f. u! b8 s7 b+ a8 @: h% N' I
procedure OnHit (aStr : String);
% x1 p% u. x8 ~: g/ T1 [
0 N8 `" ?$ [! q( P( Z/ V//当被左鼠标键单击时
/ f" x* w% c0 eprocedure OnLeftClick (aStr : String);9 ]6 C' P2 ]" Y
" ^* ^: _! K( R4 t) W* ^
//" c2 n" j5 Q) C1 v3 c5 m: K
procedure OnRegen (aStr : String);
4 t$ z6 Z  n& N6 G8 A. G
9 s2 T7 Z' F& F; M* w: o//
1 ~$ p+ M, p* O, m) ?procedure OnTimer (aStr : String);: j) k0 p! K4 L+ T
! y- y2 }% `) ?/ l
//当物件发生翻转打开时,一般是用于门9 W2 X) h2 U; z* y, q- I) _
procedure OnTurnOn (aStr : String);
" D( b+ E6 ?  }  @, n+ u
1 B. F* I  F6 h//当物件发生翻转关闭时,一般是用于门; c6 }; W+ d- m9 P
procedure OnTurnOff (aStr : String);
% `  \1 @2 K, ?8 W! v( x9 U; d5 w: I0 a9 a0 x" V+ r! t
//当用户开始游戏时0 R) H: @2 a% W& t8 R- n
procedure OnUserStart (aStr : String);
6 X- q1 w. i& Y( ?
, S+ h$ e9 W! ~% M//当用户结束游戏时4 r1 f% N* b. D/ t0 q
procedure OnUserEnd (aStr : String);/ m6 I  c5 @% Z& g; V1 l2 C7 }+ E
/ }& l7 t% z7 W9 U6 f
//当移动时2 r* p  B6 S7 k8 A
function OnMove (aStr : String) : String;( w$ c/ |9 M0 v' X* I
6 D( t* a5 e# \2 W7 b' T5 U
//; Q- K" d" Y! a$ S# K
function OnDanger (aStr : String) : String;
1 F  C: {! S0 h: G" I- T( T1 g% W. J* i1 M8 ]) h: v+ m$ F' g1 ^. p8 w
//产生一个随机数(系统函数)
2 F  m% n9 Q1 ?2 m, t% Afunction  Random (aScope: integer): integer;
8 V& u( g' Q; Y8 E" h$ q
9 a( [1 r: [8 G% K  a0 z+ W3 r//返回指定参数的消息(系统函数): e( @! ?' _2 q& |8 k
function  callfunc (aText: string): string;
% ~+ u( _9 t$ t$ \! Q
, h5 c* n1 ~1 Y& j1 o; G4 h//执行一条命令,可以是说话、传送、获得玩家的物品等(系统函数)" {$ r, _. N* L5 J: }
procedure print (aText: string);4 \: W. W" X. W4 T' F* ~9 \# Z6 s

* u; v( p0 H4 }9 z具体参数(略),整理中...........( q/ q1 M2 o( z( u" K  l$ y3 S2 J
- O! k1 T7 H5 c
//转换字符串为整数(系统函数)
+ c9 I" S) N2 }function  StrToInt (astr: string): integer;9 _* ?  F0 C- ^" D' g* t# J
4 F9 F7 g3 z1 T$ h2 A8 v: n
//转换整数为字符串(系统函数)
5 @7 Z% }- K1 lfunction  IntToStr (aInt: integer): string;
! y! y: {8 w) J. T$ T3 U* [6 W! n. B. F, D
/***********事件触发的函数**********/
+ j% Q  w# V9 M6 U0 S% T
4 L. M; X9 W. Z
: G3 _1 w! e4 c
9 o: D) l: L; `4 B3 ^$ V0 y! Q6 U

: E9 U7 e. \7 T  R3 K2 i3 M( l: D7 Z% o

  Q: z3 {9 Y0 L5 S! h7 L8 K+ l3 v; X: s

- t; `9 Y5 {8 g+ ofunction  callfunc (aText: string): string;   //以下为 aText参数的值
( u3 p+ A3 a0 y5 g4 i- d- K# }+ Y7 [# ?6 j
getsysteminfo                    获得系统信息* c! m4 |" w3 ^7 s, ]
getname                          获得名字
5 p2 Y( N3 O$ M0 h7 ]8 `* T' x% Pgetsendername                    获得消息发送者名字
. K6 s1 K, Y2 B- Z) ^; e8 N+ U) u7 D; m& rgetage                           获得年龄
  [; r# X% Y* ?getsenderage                     获得消息发送者年龄
, Z8 T& \/ _* ~  Q7 b6 ~2 e; uget***                           获得性别) n4 Z9 w8 y+ P% Q: s- S$ I% G: F
getsender***                     获得消息发送者性别1 v0 e/ h' ]0 V% u# f) r; j
getid                            获得ID
0 j: F# K2 ~' K5 c: Vgetsenderid                      获得消息发送者ID& \' T- n; |6 w
getserverid                      获得服务器ID
/ C% H, b5 o% M' \  k- N2 k( w, bgetsenderserverid                获得消息发送者服务器ID
, F: w6 @& h- X/ ffindobjectbyname                 用名字查找物件
0 v6 m7 V2 E% r! xgetposition                      获得位置8 H. C2 @* j+ f& R$ ~9 U! J0 c
getsenderposition                获得消息发送者位置/ C, c/ I3 ^& Z) K% u9 }/ X
getnearxy                        获得亲近的XY
+ X4 I0 i; Q8 @! S" Rgetmapname                       获得地图名字
; A; j* r, D1 Y1 }& u9 @getsendermapname                 获得消息发送者地图名字
, g. Z9 v8 Y& U# M# ^" S- igetmoveablexy                    获得移动能的XY" g! d% {5 c" b9 L1 O
getrace                          获得种族
( U/ L5 C3 v5 C- w1 Q  @" ^) jgetsenderrace                    获得消息发送者种族4 a2 O3 }! i# a1 |
* Y) g( c3 i# p; L2 H- v
getmaxlife                       获得最大的生命值
$ Q- ~9 [/ o6 }. i% w. K2 Lgetsendermaxlife                 获得消息发送者最大的生命值9 y6 W, d0 I& ?# k5 t
getmaxinpower                    获得最大的内功值) y, l- m. v7 s9 E( Z9 o* B/ P
getsendermaxinpower              获得消息发送者最大的内功值
* r3 p- ]! y8 n' ^2 B# Bgetmaxoutpower                   获得最大的外功值  U5 k. v3 M, t: @
getsendermaxoutpower             获得消息发送者最大的外功值
( l" n3 Z, l- e4 D$ n0 x# tgetmaxmagic                      获得最大的武功值( ?) V& y9 [) {3 X& X9 p
getsendermaxmagic                获得消息发送者最大的武功值1 C- U8 e8 r% v9 `( @; P1 i: A/ n
getlife                          获得生命值
5 p: x/ `8 {) ?getsenderlife                    获得消息发送者生命值
& j( \; Z' i3 k. q/ o- A
) @8 {; y# T# K% Bgetinpower                       获得内功值
+ A* G3 H. Y, U; Qgetsenderinpower
+ E0 {; o. E- v+ g
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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