游客您好
  • 点击联系客服

    在线时间: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语言。
, }4 V$ r/ R1 K) s$ }/ k
* D; [' `6 P# m, d8 n! L千年有三个常用的数据类型,String 字符串型,Integer 整型,Boolean 布尔型。+ ?7 `7 Q/ t/ |* {
5 v. g/ t/ b% n: B+ v
一个函数的基本结构是这样的:
3 r3 e7 d. S9 y" T
! B) P4 N7 C* V0 J. vprocedure OnCreate (aStr : String);
7 a; U6 t) a0 `var
8 o' z9 [1 Q6 W) f& }  y3 U   定义变量
5 Y) M, M; H) X4 _begin: N* D; n0 `8 v' r
   语句- [# d5 M% B0 V
end;( d5 A$ V" G' [4 \7 j& v

# c" I) ?9 V( s( D3 ~2 c  p4 A! `在每个脚本的前面都会看到一堆函数,这些是千年的库函数,可以直接拿来使用的。例如:callfunc (aText: string) ,可以返回一些信息,具体返回什么由括号里面的 aText参数决定,这些参数在下面会给出。Random (aScope: integer),可以产生 aScope范围内的随机整数。
! g. ?# ?- E+ T6 {9 \4 D; b% N/ ~4 r8 z& _) d
千年中有两个非常重要的函数,一个是 print,另外一个是 callfunc,用法和参数比较复杂。1 c& X# J  @" ]% V8 `; D- i
5 ^& ~- Q( O! F- _$ V; @
/***********事件触发的函数**********/
( y/ Y$ m* o% {7 A; e
  s8 L7 C  Q, `$ X//当有人*近时, L; p# b6 }+ h/ c, P0 y5 B# U9 K
procedure OnApproach (aStr : String);) }. @' _9 n% M& o$ Q5 n7 N
2 q' B; t8 L& j& C8 E4 l
//当有人离开时; ?1 X# p, |/ e
procedure OnAway (aStr : String);( c! L9 K6 z7 ?# }' ?
. O( i4 E0 S* {3 @# @0 H& k
//当受到掌风攻击时7 p0 f8 |; X% R1 A
procedure OnBow (aStr : String);% G8 h7 H4 y; O

+ a5 |3 \# I+ |. ~3 p/ c//当状态改变时
2 k- z) a9 m, d' ~" qprocedure OnChangeState (aStr : String);5 _- t( ~, g/ f9 L3 c

8 q, a1 W: S) s' i//当初始创建时
+ B) u& t, ~' b; lprocedure OnCreate (aStr : String);9 E  V% ~2 L; j$ T
0 W1 L7 R1 u. N& \8 P/ p
//当被双击时# e6 b1 K3 d! ?/ f4 A6 E3 g3 O
procedure OnDblClick(aStr : String);( ]6 f% p+ m0 X  ?" n

' T/ e5 w9 @7 V3 p3 k- b  A  f8 f//当死亡前
& n3 F' X- O$ G7 w$ Eprocedure OnDieBefore (aStr : String);
; K; B( K2 i; `: Z# E# Y) N1 q& s7 s! x
//当死亡后
' E/ ]/ T" A9 m6 _procedure OnDie (aStr : String);
6 i( U6 d3 Q& C, b8 _& W. g1 D1 X- h
//当被拖放物品时2 @8 o1 x1 I8 H* Q' Y
procedure OnDropItem (aStr : String);* f) p+ D' i" [* ?' @2 P1 `

" s6 Q- c6 ^1 W4 n3 Z; P//当得到命令消息时
0 L, F& t- S/ @0 kprocedure OnGetResult (aStr : String);
* ]( x) Y, t4 i) u/ l8 k' T7 w  ~
* G* \- z9 L& w//当得到改变步长时
* o/ T5 w8 D" ^& k& p1 w; `procedure OnGetChangeStep (aStr : String);" b1 w, i. e2 S2 }0 Y

+ X% j( `  V7 X" G# I" b//当受到攻击时
& f* g" z/ r2 r% K9 A! D/ v) @6 iprocedure OnHit (aStr : String);
8 o: \& Y& r3 b6 v9 K8 h. X4 O- {- u, I9 g$ k( Z: ^& h& k
//当被左鼠标键单击时  d+ N3 R6 o2 D5 G
procedure OnLeftClick (aStr : String);
3 V7 q6 v5 `* U0 j8 b
) b4 u3 W. Z$ s; l//: g3 P# N5 B# ]9 D
procedure OnRegen (aStr : String);8 h; y" H( j* s

( `; e! F( n- c: V+ k7 L, t( {//
2 Y/ b& Q  i. K0 `6 n- `procedure OnTimer (aStr : String);3 s' h# Q. O2 ^
3 q7 f$ k% D8 y* {5 i5 ^
//当物件发生翻转打开时,一般是用于门
8 a7 Y" m, F, t3 p; F( \& vprocedure OnTurnOn (aStr : String);
* s  A* @) ^! }! Q* q+ c
* f# J" x6 ^9 E, n: u- R//当物件发生翻转关闭时,一般是用于门6 A* j7 C. [6 ]
procedure OnTurnOff (aStr : String);1 X5 ?2 w0 _( J5 q* K5 p

* t4 f* m' @5 @% T//当用户开始游戏时2 _5 M; c$ D! o) t" z
procedure OnUserStart (aStr : String);
: U7 O7 U5 N9 c6 M0 w" @
) e% H0 N( o8 [. c+ Q' f//当用户结束游戏时
# E* x6 p7 x: u$ \# g) Mprocedure OnUserEnd (aStr : String);2 Y: _$ ^9 M2 U' W* ?% }
+ M  U/ G: \! F: y5 w) I5 a- t
//当移动时) M* S1 T1 D) X
function OnMove (aStr : String) : String;+ x7 v# B- D2 O3 A: a! M0 L

+ x; a6 R  ?6 r0 U# ^//
% i8 o6 Q; G) W4 k; xfunction OnDanger (aStr : String) : String;: _7 x( I  I4 h+ V: P

) D. y; f" p4 W# X, m' c//产生一个随机数(系统函数)( j/ p- c: Z, d. e& t
function  Random (aScope: integer): integer;6 H. r% n  c9 a5 }' X3 Q

" P+ v# w" ~. c: j, T) P. b//返回指定参数的消息(系统函数)
+ K: S# C3 N  wfunction  callfunc (aText: string): string;
% }4 E: C  p) @6 v: _% Z1 e- J4 T  `& K
//执行一条命令,可以是说话、传送、获得玩家的物品等(系统函数)% U' h% r" r' F8 J
procedure print (aText: string);
, `1 j( u1 R# V7 [
& P5 v- p6 L+ A% r4 m7 E具体参数(略),整理中..........." v. W8 ]. Y1 r: q
; q) @2 d. M8 H2 ?
//转换字符串为整数(系统函数)$ L3 d( l1 {1 I  r* k" S
function  StrToInt (astr: string): integer;& a' ~/ n- ~. i+ n
; N  w$ r% e- Z
//转换整数为字符串(系统函数)1 M9 {7 h# C' x! W  c  `
function  IntToStr (aInt: integer): string;' ?/ b. N  s  _9 i! R

0 `- n2 T; D- u) ~* a' _* K/***********事件触发的函数**********/
4 L" l. V) C8 y7 o: Y" k& W- C8 m8 [, F4 G

8 R5 b: [2 b4 i. S1 X% o
+ [$ }; I" F( E" Y
3 V$ J5 ~7 `3 |& ]$ ^5 c5 d2 ?0 J4 ?

% G$ t1 l* o1 N6 p5 A6 g/ y
& X; ~+ `$ [, t0 R* W9 a1 |2 _( U1 N$ v4 P: P4 `
% \& y7 S1 x! }
function  callfunc (aText: string): string;   //以下为 aText参数的值
5 a* H$ Q2 ~) v/ I+ A+ A8 i
, ]' s+ M! X  m+ Dgetsysteminfo                    获得系统信息) z5 z" c; Q* _( @4 X
getname                          获得名字
! Z$ W+ j5 a8 o$ i9 ~5 `% D2 Tgetsendername                    获得消息发送者名字
9 [/ P  r/ J+ D+ ]. i+ sgetage                           获得年龄# U4 S! V$ a+ g7 E# g; I+ a8 ]
getsenderage                     获得消息发送者年龄
9 t7 k4 B3 m& u1 k$ h$ d* sget***                           获得性别
& d4 o) A  j+ E/ C: I! Fgetsender***                     获得消息发送者性别
  U' F$ Z2 x. S. Q$ y8 zgetid                            获得ID$ ~1 ], P, e8 ~$ y- z- b
getsenderid                      获得消息发送者ID: t  U. }$ Z' S- ^! p
getserverid                      获得服务器ID
* X/ B# @8 R2 t8 C% e* U& [& ?getsenderserverid                获得消息发送者服务器ID
' s4 s8 i; K7 L0 {( Cfindobjectbyname                 用名字查找物件
3 J9 S! z' n6 @# m- o: g- egetposition                      获得位置' y. b7 W, k2 W. O3 X
getsenderposition                获得消息发送者位置
  i# j8 t) b% K) n6 P* ^% Q0 tgetnearxy                        获得亲近的XY
0 k0 u! d3 k# e# m+ k6 j3 T1 B5 Jgetmapname                       获得地图名字8 \- ?+ ]  F; U& q
getsendermapname                 获得消息发送者地图名字  s2 a, c% w7 G7 ]$ `$ T- i: y
getmoveablexy                    获得移动能的XY
8 T: @0 T, P+ O  u+ Q/ r; Ggetrace                          获得种族
9 K/ R  k8 L- L  t$ Rgetsenderrace                    获得消息发送者种族
! k" m7 J+ j( p2 P8 g, `/ f# w
+ H1 `. W4 Q0 h5 t3 Ggetmaxlife                       获得最大的生命值
1 b1 @! U3 k6 s6 Q6 Igetsendermaxlife                 获得消息发送者最大的生命值
2 t$ ?' d9 u6 Lgetmaxinpower                    获得最大的内功值
% u+ D' R$ ?- t* N, ggetsendermaxinpower              获得消息发送者最大的内功值+ E$ y; Q% o% `4 i
getmaxoutpower                   获得最大的外功值* m3 y. J! r7 t: y
getsendermaxoutpower             获得消息发送者最大的外功值5 i3 L5 a8 Y$ O/ T7 X- s
getmaxmagic                      获得最大的武功值' l! z* P. o- ?
getsendermaxmagic                获得消息发送者最大的武功值
6 B1 D% n- W( ^7 ^- B% lgetlife                          获得生命值1 a5 n" @7 b+ e% {; u  p3 y
getsenderlife                    获得消息发送者生命值
7 d$ z) b- }. n. r8 {* O8 E
2 C% X6 j& a# g# Dgetinpower                       获得内功值% ^1 c; r3 v% n; i2 v5 N* P
getsenderinpower
# U, f* ~; D# Y1 Z9 F1 {
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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