游客您好
  • 点击联系客服

    在线时间: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语言。
7 d5 T) r! ]; a( ~7 n/ F7 \; [+ E0 u. G1 L
千年有三个常用的数据类型,String 字符串型,Integer 整型,Boolean 布尔型。
" \2 \; }, I6 g1 _
+ ]3 C4 f, w2 d- f一个函数的基本结构是这样的:
( s$ [; H) a9 S6 Y* ]1 y0 S) Q4 L( |' E! P" V  s( _* e
procedure OnCreate (aStr : String);" q: r; U, B8 C4 i
var
- G0 }8 K# G0 N6 C) o- `' v/ @   定义变量
/ W* `4 S. N# \) Xbegin! c( g/ ~! ~' {! m* ^
   语句3 t$ y; B  P1 ~! M- g& }5 X" q
end;; [& |# }3 K! K6 e2 }6 O: L& \
7 E" l* H- t( ]
在每个脚本的前面都会看到一堆函数,这些是千年的库函数,可以直接拿来使用的。例如:callfunc (aText: string) ,可以返回一些信息,具体返回什么由括号里面的 aText参数决定,这些参数在下面会给出。Random (aScope: integer),可以产生 aScope范围内的随机整数。
: ^& r, J( O; ~% Y9 V- Z1 {8 c( |7 i' J* f! z& x3 h) O4 E9 R
千年中有两个非常重要的函数,一个是 print,另外一个是 callfunc,用法和参数比较复杂。- A, _1 H' W( M* |+ h, f
/ H' |. U1 Y9 D8 J: d$ L5 v
/***********事件触发的函数**********/
4 N& z! s2 l9 i$ C+ e4 U; b& S+ B5 k$ p) a4 W
//当有人*近时: K! J) @8 r8 q0 A
procedure OnApproach (aStr : String);
% r( l6 S- v1 x( c8 u. o) Y" B! M& N- a
//当有人离开时) y% m( `4 Y+ d+ z+ P( m" F3 F
procedure OnAway (aStr : String);* H! p) n8 |' g; ?  E

2 \0 N- ~" k; O, e: }, y- b$ Q. M//当受到掌风攻击时2 U- |1 p1 b  G$ X; H8 ^
procedure OnBow (aStr : String);! t- q# }- Q3 M7 a9 X4 V# s+ {
) H# z: c2 I* F9 {: P( a
//当状态改变时
8 A# H4 F' O6 P6 Vprocedure OnChangeState (aStr : String);
3 s; u* P. t; t) W8 _7 G
# I& \3 W, r) U; }5 L/ L. E6 w//当初始创建时
) R8 e& ?) U7 @! M5 ^+ fprocedure OnCreate (aStr : String);
3 L) k6 Y) T: R! p% W" D7 n5 c* i( _
$ e4 N/ c; a  D9 I* r& F3 R//当被双击时
9 A( [& T1 z8 q4 h* rprocedure OnDblClick(aStr : String);) P& o5 y4 ]; R% p! L
5 G: N" A6 d- r6 w' l. Z( Y
//当死亡前
; P/ W# F3 P  d2 i6 |4 Y; ?procedure OnDieBefore (aStr : String);6 F4 u9 c1 [# }$ Z3 i( l, G

: G1 B. g) h  K2 H) K//当死亡后
' k! i# b2 Q, \procedure OnDie (aStr : String);9 |' N# N' E$ Z3 \2 G0 e6 L
+ l/ i, O, I: E: L  a$ W6 M
//当被拖放物品时
3 B/ d) N, a$ C: {procedure OnDropItem (aStr : String);
5 B3 S3 C" Y+ H2 Q: E' ]( W& k6 ]) k- a
//当得到命令消息时' X6 R: t8 h3 Y  x, t( @
procedure OnGetResult (aStr : String);
7 H$ @- j& ~5 P! {% C& N" \, A, C- a9 I) j
//当得到改变步长时
4 x, a8 f  ?9 y+ Pprocedure OnGetChangeStep (aStr : String);, J1 n; q+ r" A+ l( R

2 T* W0 X8 t* x% O//当受到攻击时5 }5 g9 Q1 e- b$ d  [
procedure OnHit (aStr : String);
: w$ @; L5 G9 P/ R+ P
/ `- S& H1 w8 C9 f7 W0 {! c! l7 D//当被左鼠标键单击时& F7 K+ Z; w, d- E0 x8 y
procedure OnLeftClick (aStr : String);
! N$ q& ?& ?: z
  v  E9 Y) }. n' W$ }//
0 |- d! S  r2 c: t- {: _: U5 R! [procedure OnRegen (aStr : String);
/ k" |  d: {( n- K5 B7 g
: k, T* @& H& \7 ~* w) k! u//
' D. L# z! D- ^; R* r+ |" v# dprocedure OnTimer (aStr : String);6 N. x4 P) P( r1 Y7 K6 t

; e. s1 z* A' f0 G8 g//当物件发生翻转打开时,一般是用于门
. g6 Q8 [% m  w$ F3 M' X5 Aprocedure OnTurnOn (aStr : String);
1 [8 K/ J' J0 c) Q
8 q3 \5 u& Q1 y  G! X) E( a//当物件发生翻转关闭时,一般是用于门
- D. n( s( `3 _procedure OnTurnOff (aStr : String);
- X/ q7 L9 u2 e, w% Y7 i7 I
7 L& k0 r* X/ p8 b5 C6 C& J. J& o//当用户开始游戏时
/ b7 l1 U4 e6 o0 iprocedure OnUserStart (aStr : String);
9 ~4 G, p/ i1 O& E3 N# D+ f6 l; Y" P6 ~& {
//当用户结束游戏时
; M% g# W( @  x$ N. D2 J; [; l7 dprocedure OnUserEnd (aStr : String);+ Q7 [, q" a% O( `
, r, r8 j  D4 u% O
//当移动时
" |! ~. e+ ~' Z) H4 X- Ffunction OnMove (aStr : String) : String;
  E' O3 T' N" l3 @6 E+ Z
" C$ ^9 R+ Z# [7 X4 R4 e//
2 G! l5 g0 l) v0 O( b0 Y7 |" g6 dfunction OnDanger (aStr : String) : String;* Y! `9 e6 n. |# D* q
4 m& y# G: Q9 u( @# K
//产生一个随机数(系统函数)2 j! e/ ]  O! Y) K  R) r. \
function  Random (aScope: integer): integer;  Z$ {2 ^) s0 q7 j; s/ f5 @6 u0 _! C

9 z1 }/ R7 v/ S1 v* K- ?//返回指定参数的消息(系统函数)
9 I# K$ b5 n4 U2 u2 vfunction  callfunc (aText: string): string;6 R$ C9 ~2 F( ~4 P* X$ M$ F

/ y) A$ _" A* y& z& B//执行一条命令,可以是说话、传送、获得玩家的物品等(系统函数)
4 j( g% O) E* V  A- N  ]! B; |procedure print (aText: string);$ P" l/ @  l0 H+ X

; [+ w, W( v2 A. P: b+ t2 K0 B: r具体参数(略),整理中...........
  W# L+ q2 l2 x/ P4 C
& t4 }4 g- x3 T9 L) a/ h. b//转换字符串为整数(系统函数)# M; s6 e3 F! t  j7 M- G/ Y
function  StrToInt (astr: string): integer;
4 L, _" g2 T5 ]) |- o, ]+ f; e, n* H: a- x9 f) s' Q2 t
//转换整数为字符串(系统函数)" b7 S) K3 F& \( r5 T5 R. C
function  IntToStr (aInt: integer): string;) J% P: W. {& k

# R  n4 E0 d/ n# n/***********事件触发的函数**********/# c1 t' I2 ]6 c* A2 k! a

3 P# a! C0 A" {, Y* V+ m) D- \0 w$ e5 h9 w1 A

& _9 I* A" s, _% B2 s! J9 P; Q
# p5 E; A9 Z* k+ q* [7 v
  d$ Q1 O" N/ {
$ U' I4 n' H* q- V! Q& w% f$ W5 e6 W/ ^2 j) D; a

5 s# ~- p  U0 a  m1 i4 v. W% ?- _6 T4 m/ q9 [# q) L
function  callfunc (aText: string): string;   //以下为 aText参数的值
3 x" G+ q* Y5 p" A! J; C; T6 H3 q- m/ l' }& x, }5 a2 {
getsysteminfo                    获得系统信息
) w$ c5 ~$ V4 Igetname                          获得名字' D/ N4 n+ k& x: ?# n6 Q. C
getsendername                    获得消息发送者名字
2 M% ~  M9 k$ |7 u0 J7 g5 Agetage                           获得年龄
- _  T1 Z+ m" d1 L. t2 vgetsenderage                     获得消息发送者年龄
9 }) x+ T- u% x3 d- N4 W2 yget***                           获得性别; k. j( ^4 X% O5 T
getsender***                     获得消息发送者性别
& }* z% a" w$ \6 A8 n1 Pgetid                            获得ID. C0 A4 }1 u- Q4 N- @+ e
getsenderid                      获得消息发送者ID# ~! w- e  @  S2 R% ?! p8 X' O6 Y
getserverid                      获得服务器ID
# m8 d* {  ~+ `getsenderserverid                获得消息发送者服务器ID
+ u+ ^  V6 b3 I4 rfindobjectbyname                 用名字查找物件
! A+ x5 v9 f1 ~8 Lgetposition                      获得位置
6 ]+ D: [8 H/ g2 V( I: U! Jgetsenderposition                获得消息发送者位置
% T/ I. e+ S6 G9 O4 Zgetnearxy                        获得亲近的XY: }" s: o0 d; Y. s( l) i/ s$ _2 ^
getmapname                       获得地图名字
/ p  g1 q# Q6 s; H  \, ], Qgetsendermapname                 获得消息发送者地图名字( n3 D3 O$ ]: {2 W
getmoveablexy                    获得移动能的XY
- l5 j/ u+ E! T$ x% I- @: sgetrace                          获得种族
/ V2 l$ v2 p: R6 Ggetsenderrace                    获得消息发送者种族3 c0 v6 G4 h4 {, j  r
9 G5 S& ~5 V; q8 c
getmaxlife                       获得最大的生命值
" i/ n. G, n4 D8 q( ~/ J& }getsendermaxlife                 获得消息发送者最大的生命值
  l6 f3 ~4 B5 P6 c: \& t( t4 tgetmaxinpower                    获得最大的内功值% q" i$ H7 z* ]3 a( f
getsendermaxinpower              获得消息发送者最大的内功值; Y+ h; T+ `. L4 W' y% `3 a
getmaxoutpower                   获得最大的外功值  }7 ~# }9 s  }3 C+ s+ W
getsendermaxoutpower             获得消息发送者最大的外功值
6 w5 r- S. r$ R5 g3 j' ggetmaxmagic                      获得最大的武功值" ~- p9 d- S5 O
getsendermaxmagic                获得消息发送者最大的武功值
; b( L& v9 Y' V: u, [getlife                          获得生命值
, h. \( f1 Y' Igetsenderlife                    获得消息发送者生命值
7 H7 c( l1 z2 g) m0 i1 {2 u
# E; H% g" o" pgetinpower                       获得内功值
* k4 U5 ~: k+ jgetsenderinpower

. C, {; W. G; v! v0 P
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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