游客您好
  • 点击联系客服

    在线时间: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语言。! p6 t0 t0 X. P8 i$ B# j7 q' f% B
' Q" K, b6 ^4 }  s9 |5 A. d
千年有三个常用的数据类型,String 字符串型,Integer 整型,Boolean 布尔型。, m+ M/ x& b3 V, i- h& Z' Z; _# I2 o

& {3 u0 k' U7 f4 O一个函数的基本结构是这样的:2 M, b, W4 r- ^( W; j
0 A; \- v1 H% ?
procedure OnCreate (aStr : String);, f. u  Q! l$ C8 _/ N
var
; A! _5 u/ W% s' S1 o   定义变量
8 W$ p9 r8 E+ Y& \- Zbegin
' `+ A$ \7 l" V. z, o   语句4 a  u* S0 v# u
end;. K$ F$ S( Q0 x2 U# n$ s5 f- K0 s
& ?9 I( i4 i7 k+ j; K$ s, R. F" y
在每个脚本的前面都会看到一堆函数,这些是千年的库函数,可以直接拿来使用的。例如:callfunc (aText: string) ,可以返回一些信息,具体返回什么由括号里面的 aText参数决定,这些参数在下面会给出。Random (aScope: integer),可以产生 aScope范围内的随机整数。
# ?0 r6 D  E  j( G3 _, G% ?# E' L2 O6 X9 w5 b
千年中有两个非常重要的函数,一个是 print,另外一个是 callfunc,用法和参数比较复杂。+ d' P; ]  \5 |9 @( g

. F6 {) e# ~) S% z/ a3 E! @0 I% ^/***********事件触发的函数**********/
/ E, o# u. W. Z9 H7 p* x
; X- G0 O& Q% w4 o2 Y7 F//当有人*近时
5 f/ Z# @9 L) X7 z9 I. n+ Fprocedure OnApproach (aStr : String);
0 h* P5 g  w  }+ f, d
0 V1 j  D5 E0 \$ U//当有人离开时/ w9 W2 J. g* o8 _& r( z$ w
procedure OnAway (aStr : String);
5 h' _" l0 c0 j' a* p  i
5 J0 L# ^& ]6 R3 H; x//当受到掌风攻击时
& I7 u& {% H0 \# g( E* J8 D1 I" Cprocedure OnBow (aStr : String);5 K* R2 S1 b; N! ?4 P6 L) S4 s

0 M; }( `5 [& }5 h//当状态改变时
/ F5 o" R# L3 K) V( [' jprocedure OnChangeState (aStr : String);* |6 y, N6 w" q  _' [; M0 x

/ r& Z" V9 q0 d3 Q0 s//当初始创建时4 N$ q* f: n7 x9 z& e0 e1 v
procedure OnCreate (aStr : String);
4 {, e9 U  E* d- _" j& [) F
1 \% R8 Y& J$ Z5 S* ]//当被双击时+ E  I1 E9 C( ?. g! Q, ~$ p6 K$ N  a
procedure OnDblClick(aStr : String);
: f" K% N6 |) Z& N/ w- h) Q: Z+ ~. E, |1 @
//当死亡前0 j+ ^" R# ]; U% W2 \, j
procedure OnDieBefore (aStr : String);1 i6 a, u3 o* H0 y* a. w+ k

; |9 j2 \$ }" N9 O" _. h, A//当死亡后+ W& d3 r+ g& {( a: z8 a/ z
procedure OnDie (aStr : String);4 N& e, y! a7 g% R' ]+ f( s+ L" m

- @: `3 ?; w& c! S: f//当被拖放物品时
9 J. B- v2 k5 l8 ?) \2 _procedure OnDropItem (aStr : String);
  i0 h8 u0 ]; t- n; v3 W" D4 q6 k% F
//当得到命令消息时' ^3 q" K8 O% Y5 `4 [+ u# j
procedure OnGetResult (aStr : String);
$ r' k( `( ]' v% `$ ]. S+ |: U5 H8 f7 K' @# B% t
//当得到改变步长时: t% O* y+ S  [0 c2 u3 W
procedure OnGetChangeStep (aStr : String);4 t7 g4 U+ J1 n; W# P; P) \* \, v
- X; @+ H: p4 c' {& y3 y
//当受到攻击时) |0 O7 M! G1 C- O0 ?$ G# G
procedure OnHit (aStr : String);* ~( v& N: A, S7 J

; y- ?, c- s* m, I$ K3 o0 n3 Y//当被左鼠标键单击时% J' d/ U% C) }; A
procedure OnLeftClick (aStr : String);3 I/ V" l) y! \

5 J: O! i4 q. i1 a//
. g! @! T6 x- w5 d& [! i  S; K- ?; K2 Rprocedure OnRegen (aStr : String);4 X5 b# y: {& c2 @
% G  _* i. M% M( m: }
//, f" @: z+ j4 J+ w6 U1 L$ ?
procedure OnTimer (aStr : String);5 c8 L2 h9 z8 T+ g4 L8 U
/ K+ r. E, Y' ]' E! m0 B/ h- L
//当物件发生翻转打开时,一般是用于门
+ ~4 A  R( f  s+ Sprocedure OnTurnOn (aStr : String);
$ \- D7 F  A7 P/ @1 W( [" H; D
% W* u: Q: I" G: C( C1 B//当物件发生翻转关闭时,一般是用于门* }+ b: D, K, I
procedure OnTurnOff (aStr : String);+ m9 [! j! G9 X- W' Z

9 w$ f& O" G; V# K8 X//当用户开始游戏时
+ }1 l$ W0 o2 ~) Bprocedure OnUserStart (aStr : String);
9 q) y5 A5 x, @! |& `  Q) e: J3 L- E- E7 [2 u6 Y8 ]/ a+ |  l5 v
//当用户结束游戏时1 X* d+ X5 }( n. t/ o
procedure OnUserEnd (aStr : String);" d! f8 u' Y+ j" ~
( d) r/ V; r/ G/ c/ d1 L; W0 `
//当移动时
. @, `3 n# \8 Lfunction OnMove (aStr : String) : String;
0 ^4 S. e1 h. c) O+ h+ |
' y. I3 O- f6 `( F6 H- `$ T2 J/// ?0 O  g1 S6 v& h& q  S
function OnDanger (aStr : String) : String;2 F4 {* X) V. F1 U
, V0 z! q/ A/ s
//产生一个随机数(系统函数)2 d' o2 ~+ ?4 Q7 _5 K8 {
function  Random (aScope: integer): integer;
' ?9 i7 k* J7 K3 @. F% O7 Z
1 e5 A5 O" S) C9 @3 O  _6 R, d* h//返回指定参数的消息(系统函数)  t; X6 `3 _/ z" t
function  callfunc (aText: string): string;
9 I! n) c4 H7 Y4 z
6 ^" X* C1 N  o0 Q, J6 ]  H' K//执行一条命令,可以是说话、传送、获得玩家的物品等(系统函数)
& T/ T$ e+ ?6 T% Dprocedure print (aText: string);' O& X5 o+ D5 @* q4 u

9 R: Q8 a9 Z5 B1 G具体参数(略),整理中...........) J% P: ~# s5 f. M$ }* S! w
0 o, [* ^" A% Q4 v% e5 w
//转换字符串为整数(系统函数)# I$ u- u/ P7 M/ p% O3 b
function  StrToInt (astr: string): integer;* }# b# j* y% x/ I) ]1 u

; ^+ k7 \, `% R  @/ s//转换整数为字符串(系统函数)$ s: N3 i/ T4 q
function  IntToStr (aInt: integer): string;5 z& f' f% o. K2 Q* D5 A5 S
( X* \- ~8 Q' Z+ O6 q: f
/***********事件触发的函数**********/
; k. l6 ?# [( T8 I9 i
: O5 k9 h) @% M1 Z) x3 L8 Z
( k! h+ f+ |; u2 M/ l! `$ s* }6 v
* A% b' P( G* y2 G3 M0 q& \! K  g( W8 z7 u7 I
) h- D9 I  G* a
, k& [' S8 V( F1 q. u( L. n
; p! v  X1 M" M* b% B8 [
" g* v0 d; g# U& l  F& H2 `

' f/ U& l4 i) L3 dfunction  callfunc (aText: string): string;   //以下为 aText参数的值
; W  ]5 H" w, K! q/ J% u4 P1 d
' i6 ]4 W/ w8 q$ ~6 Ygetsysteminfo                    获得系统信息; Y! ^5 a4 B! n4 i, x6 o
getname                          获得名字
+ I9 e6 @, }4 i2 Y! J4 Ugetsendername                    获得消息发送者名字
" ^% i, A" e% I% t5 T2 F% Cgetage                           获得年龄
1 K- v3 ]+ K. [) a& y  @getsenderage                     获得消息发送者年龄- U1 E, J( Q% C/ E2 u5 ?% D
get***                           获得性别
( u/ y) V. O0 q% }. S8 dgetsender***                     获得消息发送者性别# ?) K9 u, y8 L$ W5 j! v, q
getid                            获得ID8 P, x: O+ h( E3 ?8 S$ ?
getsenderid                      获得消息发送者ID
) h* g; ]  T4 h, Hgetserverid                      获得服务器ID, e; B9 A6 T7 p
getsenderserverid                获得消息发送者服务器ID; a+ ~4 H7 q4 p5 |' d9 J1 b  D7 ~
findobjectbyname                 用名字查找物件" d) }5 r$ b( O0 O8 p' `2 T
getposition                      获得位置
5 p- `4 i8 G! C( ggetsenderposition                获得消息发送者位置
# E/ w+ r4 f3 ^; W8 c# P  I6 F4 agetnearxy                        获得亲近的XY7 [% ]4 w$ F. U4 I3 M5 h' Y/ o4 q
getmapname                       获得地图名字9 i! V* v3 F( o8 P$ x9 A- V
getsendermapname                 获得消息发送者地图名字/ P# c2 o4 @/ V' x
getmoveablexy                    获得移动能的XY+ {. }  N" c4 n9 s7 B
getrace                          获得种族* Q) e1 [5 B% H7 v9 r
getsenderrace                    获得消息发送者种族
  o1 J! r8 i( q; w
3 ?2 I7 v1 G# x4 B9 agetmaxlife                       获得最大的生命值+ E5 \0 V) Z6 l8 j" I( h
getsendermaxlife                 获得消息发送者最大的生命值2 q! |( C! i8 ~* O
getmaxinpower                    获得最大的内功值
9 P" b& a4 X' q& E. i+ u# Tgetsendermaxinpower              获得消息发送者最大的内功值2 ?, T. n1 M; W/ ?( B
getmaxoutpower                   获得最大的外功值
+ q! _6 s2 m5 m* B& m% P3 dgetsendermaxoutpower             获得消息发送者最大的外功值3 F/ N! z/ f5 m8 P
getmaxmagic                      获得最大的武功值
8 t* ]9 g6 D/ Ngetsendermaxmagic                获得消息发送者最大的武功值7 q5 l5 M6 B/ i! f
getlife                          获得生命值( L4 z- T) d4 Y( K- K
getsenderlife                    获得消息发送者生命值
' S) s; m  {( o# H
1 i' M! c6 l: B- r, k3 m- A0 |getinpower                       获得内功值
' V, G% Z' n1 K; Y% Agetsenderinpower
9 b9 A0 J5 S5 e7 C) u( p' n
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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