游客您好
  • 点击联系客服

    在线时间: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语言。5 A! X, w8 q4 J% j  n4 }# P; U

! e0 l3 v& |* \/ ]$ m. L8 O. J千年有三个常用的数据类型,String 字符串型,Integer 整型,Boolean 布尔型。: [4 a. z; w) h! U- w0 G6 h; T
8 M1 |+ C5 Q) U# j3 ^7 a/ |1 E
一个函数的基本结构是这样的:/ `3 p* H+ Y: `9 k
. V, e  v0 {! ~5 a* J+ l
procedure OnCreate (aStr : String);
9 ]0 u: i# N; F9 C- g- D' S; Zvar& G6 p$ P2 F2 b, F& k0 w
   定义变量% O0 [) i+ R$ r' V
begin
' L5 |2 o3 _! _& [9 C# u- i   语句9 U0 D  Q4 p* R. [
end;
" }& q% K5 \2 E" y2 ]' c( o) `* D1 ~
6 ^7 k- g; ]2 Y3 G' s* d" r: j1 Y2 O在每个脚本的前面都会看到一堆函数,这些是千年的库函数,可以直接拿来使用的。例如:callfunc (aText: string) ,可以返回一些信息,具体返回什么由括号里面的 aText参数决定,这些参数在下面会给出。Random (aScope: integer),可以产生 aScope范围内的随机整数。
7 Q3 V3 ^2 U2 o- _0 F3 M. H: k; }
千年中有两个非常重要的函数,一个是 print,另外一个是 callfunc,用法和参数比较复杂。! O: T5 H7 q6 Q! {( R! `7 n; L# }

% z; g, O. F3 W- U1 ]$ D/***********事件触发的函数**********/
; v% _: }' b& D; Z0 Z* P. `- D$ g4 L) R+ Y3 i8 }( }( @
//当有人*近时
8 o8 a% h' i0 D6 t; v: K& B6 lprocedure OnApproach (aStr : String);
4 N' U+ f& Q. Q( p! F+ K, o  F3 T; ]+ u* z' ^0 f/ G9 x
//当有人离开时
' p, B' {! k$ Q7 }procedure OnAway (aStr : String);
4 P1 p% b' W# f; I8 r% b# I, L* H7 A2 U% N+ f
//当受到掌风攻击时0 N) y+ ]" y, Z1 u0 U5 W' d* T
procedure OnBow (aStr : String);2 n+ h" y  ?+ q% U; W4 x1 t
( p2 _2 o$ h$ @4 v1 T- x
//当状态改变时
4 @% z1 ^( b) ^5 ^$ ]+ o- Rprocedure OnChangeState (aStr : String);
. X$ A9 c2 t" q' F
8 j4 Q& U$ O$ l2 D; S//当初始创建时* j7 X+ j4 D. J0 s5 A
procedure OnCreate (aStr : String);
5 T* k# o0 ^: o4 e9 Y0 j' }
# }$ q3 ?5 }) i6 t0 Q' A( c8 D& H//当被双击时
1 V6 }) `7 J0 w3 zprocedure OnDblClick(aStr : String);
* J0 }. M1 @, G% i" R2 y
* R: R2 {2 E6 q" V2 Q//当死亡前* ]: I$ Z  H$ Y6 _8 C5 _
procedure OnDieBefore (aStr : String);$ T3 g$ ]  C5 [+ P5 I
* J- [/ J3 T/ j* g6 W. u% C  X
//当死亡后6 R, |- T: }; v$ \
procedure OnDie (aStr : String);8 n& O" c- @: x1 W2 t1 a3 J

& I! j' V1 r" P6 |//当被拖放物品时& z# K1 X2 ?" ]/ H$ z
procedure OnDropItem (aStr : String);1 u% f9 H6 |  Q
& r: |. l' R4 a# _) z8 B, V+ i
//当得到命令消息时1 a& ~0 Z0 M, d
procedure OnGetResult (aStr : String);
$ @6 c' Y; Z: H- `
+ O/ @8 X0 i+ R& y* f) x: c8 u//当得到改变步长时# e0 [- l4 u  Y: w! o
procedure OnGetChangeStep (aStr : String);
2 K" e2 m1 T) c9 _# q8 D0 g/ Z5 Q# I8 ^9 ]7 B+ V; ?0 O9 q) u
//当受到攻击时7 k$ b0 ^5 ?6 ^
procedure OnHit (aStr : String);& P/ @6 S7 B! C; H$ W

& O/ J( B5 T$ u" B6 _: P, |: x//当被左鼠标键单击时3 Z4 X: s$ W  P6 a
procedure OnLeftClick (aStr : String);
7 m8 X( D# g& ?$ }/ i1 j9 V8 |, x/ z. I" S& A# H5 s
//
$ J9 u) C, r8 V& L+ V  ?procedure OnRegen (aStr : String);
; ^$ m" y6 m8 [6 G# @# v
5 A; I6 f& A1 m* u( Q6 |//
6 x: m, [7 S% [# [/ cprocedure OnTimer (aStr : String);
- l& g+ T2 d# ]/ z  ~4 u3 X" W5 q1 Q/ a4 `( T' U9 l
//当物件发生翻转打开时,一般是用于门8 z- K. b/ n' H
procedure OnTurnOn (aStr : String);2 G8 w/ M/ ]) V: J" i
4 l" ^4 C) v! s- K$ K9 h. n
//当物件发生翻转关闭时,一般是用于门
/ _3 t4 b% M; l" I, a3 Iprocedure OnTurnOff (aStr : String);  T  |* l, G# @! P. N, P# t' n
1 o2 V) U% S* X  i- J
//当用户开始游戏时$ f( b3 P- h+ |* K0 ?
procedure OnUserStart (aStr : String);
/ ]7 ]! v0 w! A4 Z. `8 m$ c0 ^. S, O" K9 \+ F7 _
//当用户结束游戏时
# p  m2 K" |, jprocedure OnUserEnd (aStr : String);
/ H3 N5 N4 n1 ~( J
6 o' G: Q4 g# d0 B2 k+ x//当移动时
" v3 T( Q4 H9 T# r" i* G9 e  |6 U& `function OnMove (aStr : String) : String;6 c  V# O  ~6 ^) [9 [/ N0 C
7 F0 B. Q; I. A5 R! o, E
//
' t- C  _) K% H! v7 B+ zfunction OnDanger (aStr : String) : String;
4 {7 M8 e/ ~% ]; H% i  e* A& A1 L# l1 q
//产生一个随机数(系统函数): a' ~. P% Q7 [; Y
function  Random (aScope: integer): integer;
% ~: o$ @" B5 Z; ]* n; C$ b. C9 S  e
//返回指定参数的消息(系统函数)1 {7 @) Q4 d! \' y5 D) n" t
function  callfunc (aText: string): string;
; W& A8 y$ l- Y# e# n
( l! U5 l/ i, {& g3 C2 T. L//执行一条命令,可以是说话、传送、获得玩家的物品等(系统函数)3 H# }# i, U0 W" c9 F& D
procedure print (aText: string);
) q0 o* t9 f* t  D6 G  L+ x' Q& Y  {6 K& k& g
具体参数(略),整理中...........5 g4 }9 F8 q0 ?3 R
2 q  c+ q* p) B- l" q9 A4 v0 k
//转换字符串为整数(系统函数)$ Z& d3 i9 E$ a- }9 |
function  StrToInt (astr: string): integer;
5 p; K' \* g. Y6 K# Q- v0 D3 B1 n
4 |$ c* w' ?. B8 G( I3 J0 }//转换整数为字符串(系统函数)( B/ T; i1 {& @3 i* x. [, w& \
function  IntToStr (aInt: integer): string;
, t/ o& b+ j+ I) u/ W7 K  V" v3 y, v1 n& J% t
/***********事件触发的函数**********/6 _- S0 O, z2 i9 z

4 N) `; b2 h7 F  [# N4 o' Y/ X% Q, Z$ r# n6 |' }5 l- b% C1 c9 l

, m& e4 g8 `9 I( S0 @% |/ s
8 ]+ X  L" S4 }$ x9 P6 a! ]
$ c# k- W! A, z% Q( [' z  e# ]0 O2 F" w5 n% a( q5 G$ O$ f
7 T6 Z( V- z$ P5 ?, }( D  s

% ^; L# O. u  c* k1 X, e. L6 h$ @4 b3 O; J
function  callfunc (aText: string): string;   //以下为 aText参数的值
/ A  B1 z- Y! w- R8 |. o( f3 X6 O
getsysteminfo                    获得系统信息1 l) a7 R( f6 N5 C
getname                          获得名字# |1 J2 {, C" r- P5 k  x- s1 I3 w2 \
getsendername                    获得消息发送者名字
- f) l9 L5 H! M5 E: H2 lgetage                           获得年龄2 ~& X" O/ a: H% Y0 U; Z1 }( D
getsenderage                     获得消息发送者年龄
7 ]# p9 R7 z8 Kget***                           获得性别
( ^5 S" Q2 R; V$ D  U  j) _getsender***                     获得消息发送者性别5 V- z1 F0 q! i* |5 D' l
getid                            获得ID
8 c9 V- o& u& d' o' K0 @  [getsenderid                      获得消息发送者ID; a$ L6 d0 y8 {! V) w, J5 T& ^
getserverid                      获得服务器ID; M, l1 M( o7 T; z: V5 P
getsenderserverid                获得消息发送者服务器ID& R0 w# S0 |% ~
findobjectbyname                 用名字查找物件
' K5 J' H2 x/ `. m* }getposition                      获得位置- \1 q8 t1 u% ~, ^( ]
getsenderposition                获得消息发送者位置
! J0 j  E% z( u( pgetnearxy                        获得亲近的XY
7 b6 B0 I5 [0 L2 Ggetmapname                       获得地图名字
0 Y  i* Q. x3 U4 Ygetsendermapname                 获得消息发送者地图名字
! Z5 y# I/ f' j2 o- E' R  M3 t/ _getmoveablexy                    获得移动能的XY$ }( r! U( T) ?0 e4 C7 E4 i
getrace                          获得种族, S- ]( Q! V) a6 o9 e! Q& f
getsenderrace                    获得消息发送者种族
  g  N( u. y9 q2 O# a5 D$ O+ c) [8 \& J9 B+ ^5 k3 B
getmaxlife                       获得最大的生命值9 W: k" ]+ Y! q; p, `# }+ ~
getsendermaxlife                 获得消息发送者最大的生命值$ o5 H5 q, {, z; w* ?
getmaxinpower                    获得最大的内功值
6 W, O% z' a- m1 ^getsendermaxinpower              获得消息发送者最大的内功值: ?4 N6 ~* Q6 y7 W: z  |6 j7 j
getmaxoutpower                   获得最大的外功值
3 u* a) g9 A  J4 T% d, g4 tgetsendermaxoutpower             获得消息发送者最大的外功值
: C1 C( I2 Q* t( }! Cgetmaxmagic                      获得最大的武功值
( o/ U6 _/ ?( sgetsendermaxmagic                获得消息发送者最大的武功值% c5 n9 f) p0 R% {9 ?" _
getlife                          获得生命值
2 n: T% J& W; h! ]getsenderlife                    获得消息发送者生命值
2 }! H7 \7 g3 G$ D2 }$ {7 H2 a
4 v; k, ^' R& r" H7 O8 r/ ~' K' ~getinpower                       获得内功值
# ~; s' Q$ C. o6 m! ngetsenderinpower
% O7 Y$ `  m0 m* V' D- m
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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