游客您好
  • 点击联系客服

    在线时间: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语言。
% {, A7 _" O" S5 _. P* W2 @4 w  K
$ ~7 X! M. p/ I. y6 |4 g" a: |千年有三个常用的数据类型,String 字符串型,Integer 整型,Boolean 布尔型。
  i; s* K; y8 ?: k( V  k' x; a5 A4 o* A6 j% B0 q
一个函数的基本结构是这样的:, J3 b1 w# S+ D$ ~! R

$ b) p6 X8 y( ^4 s  U0 w# [' bprocedure OnCreate (aStr : String);) J8 o2 T) m% o8 ?
var
9 L% |+ P' |+ B5 F( f- |   定义变量4 b/ O. M; t& @
begin
- R) p( ~( ]; l! Z   语句
. ?4 p! ?" S0 E: ~% k4 ?+ P% W" Bend;, c7 N- h0 @0 ]' `

5 O; E3 Q) W0 O; w) ?在每个脚本的前面都会看到一堆函数,这些是千年的库函数,可以直接拿来使用的。例如:callfunc (aText: string) ,可以返回一些信息,具体返回什么由括号里面的 aText参数决定,这些参数在下面会给出。Random (aScope: integer),可以产生 aScope范围内的随机整数。
$ z  n; r+ F5 |. C) O4 N* f" b/ s( ?& u; W- R
千年中有两个非常重要的函数,一个是 print,另外一个是 callfunc,用法和参数比较复杂。2 y9 Y' b2 m" o' U0 n& b

- f8 ]$ o, a! k- w/***********事件触发的函数**********/( ?' O( C* b2 I- [7 s# N

# c+ A0 d7 F: U3 R! ?$ J6 H//当有人*近时& n1 E% n; O7 t' \9 x
procedure OnApproach (aStr : String);
0 {7 r  N1 ]; W' Y8 w3 g9 i( w' ~* m* o3 u, D( e1 l3 F8 m: e. J
//当有人离开时
" \4 \/ H0 C1 s, A* f1 z9 Cprocedure OnAway (aStr : String);
* e2 b& `7 m" ?; y9 H# f8 E) ^4 v6 D- r$ K; T1 d2 h2 k" d! C) Y
//当受到掌风攻击时- v+ b5 d% [1 r! J  ~) N2 y
procedure OnBow (aStr : String);9 O! S8 t' A8 E1 V1 D; B+ T# _7 `

. |$ I- [, G5 Z& I* m7 W* L//当状态改变时
0 P( b4 |' X$ S% l/ K  Lprocedure OnChangeState (aStr : String);# e0 z, U% X! a9 O
# d& F6 c6 o$ Q8 Z$ w
//当初始创建时
: K" ^5 ?; Q% ?  l. iprocedure OnCreate (aStr : String);. L% \9 A5 Z3 x' M; {

' M2 W* g( L' E2 T5 O; u/ u7 H//当被双击时
5 h$ S; V" A; c$ N, zprocedure OnDblClick(aStr : String);& d$ O+ A2 u3 `( H
2 d, g7 _- N$ V1 F9 O/ K3 P& ^
//当死亡前
! k% A7 N8 R. X: `0 c) L2 R4 Sprocedure OnDieBefore (aStr : String);1 a+ p8 a7 `' f# X) ]5 y

/ ]/ H+ H. c7 O4 B1 B4 g" r3 T//当死亡后
; }! T) {6 B) K8 Uprocedure OnDie (aStr : String);9 V+ O5 {! e/ d% m0 t

( P8 u! ]8 C6 Q//当被拖放物品时( C( W: Z8 ?9 y
procedure OnDropItem (aStr : String);8 L; f% n6 V& v! @& x3 j# Q

2 t6 D* g) D" C( v4 C//当得到命令消息时
3 X3 Q/ e; v5 M6 `procedure OnGetResult (aStr : String);
+ ^& v, C* z2 a& m' A
7 ~. s: }4 Y% P) K/ C, ]3 P" s//当得到改变步长时% a6 h0 I% t# @
procedure OnGetChangeStep (aStr : String);9 A; z& N; e8 m" I  d0 l

+ q/ [# |) r: O( a. r& D8 d0 H. m//当受到攻击时8 o: L) G: ?: f, V! P& S
procedure OnHit (aStr : String);; h5 |7 t; \/ O. g0 D
) o1 g' ^% e; l. H: x" G
//当被左鼠标键单击时
- x- L* o4 M8 Cprocedure OnLeftClick (aStr : String);
+ H/ W. n; }8 Y: ^: u& @
- d) S' {; {. a4 s2 T$ f4 H//# i5 E6 |: {1 p1 d" r
procedure OnRegen (aStr : String);
! T, p7 J# w  h+ Y: A1 ~4 ^1 k9 c3 M8 p
//: [: Q3 w% E9 U
procedure OnTimer (aStr : String);
! z3 W& `3 o* A8 L1 V  W7 |) t# y6 j7 C, b. ]1 f
//当物件发生翻转打开时,一般是用于门
  P2 @! o3 v2 P/ v% ?9 d1 Y* Kprocedure OnTurnOn (aStr : String);
/ F5 }: o% _% G- X7 R# p: e+ i
  j( ~3 B, O* c2 ]//当物件发生翻转关闭时,一般是用于门0 u' @4 u# U  O, G
procedure OnTurnOff (aStr : String);
( }# Z) c% C( G* B5 m3 q8 C& K4 @! D
//当用户开始游戏时
( y$ t, b' M/ pprocedure OnUserStart (aStr : String);
( g+ D, n5 f7 \# A
% q- ?5 Q! o4 b9 V//当用户结束游戏时# Z6 c- X+ Z+ G; M" \0 M6 F1 w
procedure OnUserEnd (aStr : String);  C2 g; f1 u2 _+ v" Q
' Y# v' r, R" Z) z; a
//当移动时
+ u7 h( [  u0 A2 Tfunction OnMove (aStr : String) : String;
+ J! r: o8 V- |4 E, |+ E. {  T
5 v5 S$ \# V& r( p//+ c7 j2 x; S$ O: \+ C3 \6 ]/ y
function OnDanger (aStr : String) : String;% o& s; b0 v: q) V; O
8 X0 [  c$ L1 S
//产生一个随机数(系统函数)$ c9 ]+ o* t8 ]& R" X0 M' X; n
function  Random (aScope: integer): integer;* |$ K* @6 v! O! @+ q4 W! r
6 D. v- h3 W2 r
//返回指定参数的消息(系统函数)
5 [7 a' m1 ]  [8 u5 Ifunction  callfunc (aText: string): string;
/ t9 z2 u$ P7 z. A
2 q1 O! d4 q/ D" ~//执行一条命令,可以是说话、传送、获得玩家的物品等(系统函数)
' t2 @1 }8 d' ~  bprocedure print (aText: string);8 g1 }* Y+ N2 f; X+ t) C8 |

8 i/ H( i; n* w3 N1 b+ T- P) R: i; M具体参数(略),整理中...........
. m  N1 J% V& l3 ~6 v  }  z) A) z2 @; j6 M
//转换字符串为整数(系统函数)
" K, i$ F9 ]  z. Pfunction  StrToInt (astr: string): integer;5 G# X/ B% }4 I) A% H7 C' V

  W8 B" P( m) R! r- h4 b2 }4 S//转换整数为字符串(系统函数): n8 N' G# a+ `5 k5 }* [/ a! R/ r
function  IntToStr (aInt: integer): string;
+ l: s4 v! Z& E" S. R$ M; h; U/ v/ Z
/***********事件触发的函数**********/
) e4 J. h+ V7 Y: \  H1 d- [5 ]0 u  P- [& m0 F: M# ]

( v9 ?) a) ^7 v* f5 c+ q$ ?" W( _
! X/ f6 p3 u4 w( \9 s  K  o- u" e0 U! O% R& W2 t
& x4 e9 J8 j  F- t# Q

! @: k5 s& z& F% G: D7 X2 P0 \! y% Y" k6 n4 O

0 j: ~7 |- C# J0 {* N1 f
3 K' Z( s9 v) j, r. Y; \4 ~) ofunction  callfunc (aText: string): string;   //以下为 aText参数的值
, W6 o2 w9 T5 t; F' U- _% U
, V+ S9 q9 ?! V5 {8 `2 L4 k/ Agetsysteminfo                    获得系统信息
2 M% R+ o7 c3 {( j9 g1 G& F8 B6 xgetname                          获得名字5 b) e# v5 K9 c$ k+ K& V8 V( Y
getsendername                    获得消息发送者名字
# J! o% A6 K) a! w- C- N2 \9 ggetage                           获得年龄
! }* f" s5 ?. B, M8 A: Kgetsenderage                     获得消息发送者年龄
0 k) w5 I. a7 d  sget***                           获得性别
& I' _$ ~' U! f* x. M0 I9 Ugetsender***                     获得消息发送者性别
) z3 ?9 _5 v3 [9 M; d. wgetid                            获得ID% d9 S  L3 p, x8 O5 l$ y
getsenderid                      获得消息发送者ID
$ }& W8 ^2 _; ^% J2 T1 k) dgetserverid                      获得服务器ID, z/ k1 U/ C5 ^
getsenderserverid                获得消息发送者服务器ID+ j2 ^- h" R: C
findobjectbyname                 用名字查找物件
' d8 I  `0 l8 o$ s& A# B6 Xgetposition                      获得位置
6 V% O! C! q/ n7 U( Ggetsenderposition                获得消息发送者位置
+ T. m/ G* L5 E- q7 C1 k& Wgetnearxy                        获得亲近的XY
$ W( S2 V8 N8 l# g/ Mgetmapname                       获得地图名字
0 S$ K! S% b2 O) r* S, wgetsendermapname                 获得消息发送者地图名字
2 z7 v4 o7 z. ?getmoveablexy                    获得移动能的XY
, V3 u4 h6 R. o  g$ Pgetrace                          获得种族
" H" t+ Z0 f, c: ]: F5 {% g6 y9 d% R0 ngetsenderrace                    获得消息发送者种族
) _1 }- T) m  a4 D! n* i) x7 N0 g4 |" R4 x
getmaxlife                       获得最大的生命值4 ?; ~  h0 p: c& J
getsendermaxlife                 获得消息发送者最大的生命值
; X3 n& t$ F2 [  `; D; {* Vgetmaxinpower                    获得最大的内功值
. ~0 s  d* j4 [  fgetsendermaxinpower              获得消息发送者最大的内功值/ a1 S2 y! {! \, ]0 s, V$ L
getmaxoutpower                   获得最大的外功值+ n/ y# P6 T2 d) o" ]* w- {
getsendermaxoutpower             获得消息发送者最大的外功值
+ a! G# k7 Y5 }+ Y. C$ xgetmaxmagic                      获得最大的武功值$ m& n6 M8 \# U: P$ }
getsendermaxmagic                获得消息发送者最大的武功值
5 }8 U+ f  e  j- W7 i4 Bgetlife                          获得生命值+ X; I, J& Z2 O
getsenderlife                    获得消息发送者生命值3 z/ M: G3 d! D* |
: }5 T- d) j. ~; t( Q' h) ?( {
getinpower                       获得内功值" _  [  B+ m3 E! J8 [
getsenderinpower

! o1 a) }# S1 i5 W, c0 K% I) S
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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