游客您好
  • 点击联系客服

    在线时间: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语言。
; C" o+ W5 Y- U' F0 ~. s& ?' v/ t+ T% K+ n9 s: Z
千年有三个常用的数据类型,String 字符串型,Integer 整型,Boolean 布尔型。
& x) A; }# y/ }- a5 \" r$ d2 I  M
一个函数的基本结构是这样的:
- z+ C- R! {' o; x" N. Y( a: e$ \: B0 m" X; U
procedure OnCreate (aStr : String);
$ l' _3 n: d- F2 ~var
# l* l: Y* ^" W+ L   定义变量' L% B5 x8 |5 i6 d7 S
begin
  @3 Y$ \9 Y4 s/ c* ~   语句
" Y1 P8 S) U- T7 dend;
% @8 x4 A( ^+ o
1 [" v+ Y: o! n% S& @) N在每个脚本的前面都会看到一堆函数,这些是千年的库函数,可以直接拿来使用的。例如:callfunc (aText: string) ,可以返回一些信息,具体返回什么由括号里面的 aText参数决定,这些参数在下面会给出。Random (aScope: integer),可以产生 aScope范围内的随机整数。
& n4 e& o/ p+ s6 P0 I0 r' E2 p/ P5 x! m6 t
千年中有两个非常重要的函数,一个是 print,另外一个是 callfunc,用法和参数比较复杂。
( h1 c' o1 e% f/ `. M, f# D% [3 L: S9 n0 y' N+ G: ~, k2 W% e0 Y
/***********事件触发的函数**********/( z  G5 Z+ C1 r/ |1 D0 c7 a

, I0 x( ?9 C. [' K8 @8 \//当有人*近时
; m4 ?- }8 \. Wprocedure OnApproach (aStr : String);
8 i' f) i( B! \2 Q% y, G# _1 t5 E. L- N  ~; h
//当有人离开时
, P6 {+ V! E& F3 q; i; k9 L. z- E% qprocedure OnAway (aStr : String);( w/ h7 |% `, o5 N$ ^. ]5 m
+ ?4 S: K3 G- B8 Y
//当受到掌风攻击时: ]( X% j+ X* Z. M+ B4 x. W
procedure OnBow (aStr : String);' G' ~% B# g1 x* i* ~4 N

+ U$ `, P3 |# s2 T4 A" T) A$ `//当状态改变时
, D& @/ X  H" n% c# Aprocedure OnChangeState (aStr : String);
- I0 o: j% e7 v" j8 p# R8 g# F* j8 j2 p0 m( T* ?% P' E( h
//当初始创建时
3 {0 ^' j! \7 wprocedure OnCreate (aStr : String);
* M% r- j8 z; f+ V0 t& [0 f! K6 }* V
//当被双击时
2 o) _7 M' [. Sprocedure OnDblClick(aStr : String);" E8 @2 o7 Y( h) {- q/ S; G) `
/ r, U1 C  Y! g% g  a; m
//当死亡前2 v( m8 \2 v; t) @
procedure OnDieBefore (aStr : String);
( h- `4 P2 e9 D+ P! B
- l5 j/ H. |2 b& f//当死亡后
4 J& f, T, f+ |' [. M2 \6 d: T" Lprocedure OnDie (aStr : String);
! a8 z% T. b$ C8 A5 z. y- ]( b
( C" B) r& G1 m# n3 K7 i//当被拖放物品时- t8 ]7 S: b0 V; g+ V
procedure OnDropItem (aStr : String);
! x! \' V# @0 n% X4 |9 [: @3 `6 c* m& A
//当得到命令消息时
( O* J) M/ @, h0 q6 h0 _. Eprocedure OnGetResult (aStr : String);
9 P. Y5 L5 E/ e! h1 v% N; i8 i& j9 j
//当得到改变步长时
; c4 I2 U/ C2 Y, j# X/ nprocedure OnGetChangeStep (aStr : String);6 O6 x' w4 G+ z4 L0 n* `

7 B5 ~. ~9 V" x( m//当受到攻击时
, U  G; a8 A& X3 F' fprocedure OnHit (aStr : String);
: U* x* Z! z) |
) ^2 w* a/ G/ Z  _! D  H//当被左鼠标键单击时
# d! ~7 m/ ^/ F0 t( }) K0 K1 @, C$ d" bprocedure OnLeftClick (aStr : String);
8 x' A! z- j& d  m
( a; C# w$ M- p3 b/ k//
1 U& K  h5 ]3 `& M! ~9 d" V) u+ k3 Eprocedure OnRegen (aStr : String);
( k* Z9 M4 f# C, V9 L' {9 K" o+ g% u& T5 n4 Y5 `
//
2 P* o: u: `  C0 o$ Qprocedure OnTimer (aStr : String);. g! ]) g$ Q& R- u2 j; b9 o
7 V4 N9 U3 f0 q/ _, }5 c1 ?
//当物件发生翻转打开时,一般是用于门
- ]6 b% z2 [4 x* iprocedure OnTurnOn (aStr : String);. B' P4 W, A) I) p

( j% w, r) W6 K; Z//当物件发生翻转关闭时,一般是用于门
+ z" Y" G& Z+ t. S2 W) R) vprocedure OnTurnOff (aStr : String);: @( @# `$ A6 Z, X- b4 k" \' M
+ J! l: b2 M1 Z' j5 X
//当用户开始游戏时
% |1 g3 i7 t) @3 W) R% A  cprocedure OnUserStart (aStr : String);
. c9 w2 U+ t6 F- j
/ S9 G+ H, m7 B/ g' Z  T% l//当用户结束游戏时3 ^5 q3 d" q1 O# ~! a* i" t
procedure OnUserEnd (aStr : String);" [4 G3 U0 e' X2 G) i: d

6 T1 Y( H5 J0 P3 t//当移动时
2 j2 G1 p6 o2 Y9 n0 ?7 O+ i/ s  l: ]function OnMove (aStr : String) : String;7 j$ Y# ~. I/ s7 i# r' Z. L

$ G2 b& |5 J5 e: b//
* S0 i' J: C" {( h) Gfunction OnDanger (aStr : String) : String;
8 ^1 H& u0 Y/ Z+ b- ~) k+ [/ y) u9 o: Z. i3 U: D9 ?7 `
//产生一个随机数(系统函数)
: |: L9 v3 c" p, K. sfunction  Random (aScope: integer): integer;
; z5 @( {: c/ F% P7 [( @% [
& \. [, J) ]! L1 n//返回指定参数的消息(系统函数)" o  T: S- I1 y8 F; T6 w
function  callfunc (aText: string): string;: ~: E! |7 V  x- S" V3 j3 D0 C
5 }/ `9 a- h2 _# s
//执行一条命令,可以是说话、传送、获得玩家的物品等(系统函数). q9 s, k: \( e& o" _
procedure print (aText: string);
0 ^/ j8 I# e' f# Z: K. i' [6 ?: m) k' B3 D1 y0 J: r
具体参数(略),整理中...........0 o& ^5 J: ^+ [& G$ \% l+ P4 w: o5 C
- x/ B* e- ^7 Q. x$ X
//转换字符串为整数(系统函数)6 |& s/ o, Z+ c# O( w5 N9 ^6 K' O* w
function  StrToInt (astr: string): integer;* X3 i, C  k& s+ U1 G
0 k6 C4 t7 s7 e
//转换整数为字符串(系统函数)
0 j$ m  q: T* }# i0 J9 afunction  IntToStr (aInt: integer): string;
2 }5 j( A$ J. N
$ ?5 q  v) @1 [. `* B/***********事件触发的函数**********/3 f; j; H" }* E' m
5 ]/ L8 z* c, B0 V5 z7 a8 L
% O5 U, w+ r2 H$ f/ h' P

( e4 v5 j( f3 U6 D1 N
5 M  |' A: ]7 b9 u% ^# z1 Y! A9 {1 F( q! k

( L9 q; M9 C( f) J* u* C3 O$ h' a# L9 }3 h. U+ ]$ _9 [, f+ B

2 @0 {& q) `- K9 V
- X+ [+ R0 r" }! i+ h. Xfunction  callfunc (aText: string): string;   //以下为 aText参数的值* a, |! N, c* v' Y

0 K# g& g+ z3 s0 V7 \getsysteminfo                    获得系统信息
6 J, K3 ^( q5 R. ygetname                          获得名字
# l7 g0 ]+ }& z$ ]getsendername                    获得消息发送者名字1 q8 v, g  _6 A( k* G, _
getage                           获得年龄$ ~* v0 j# A& u
getsenderage                     获得消息发送者年龄
$ J9 s9 Z8 O9 U; @( Tget***                           获得性别7 h! R- r5 ^4 N# [5 L; l
getsender***                     获得消息发送者性别
1 ?( q% B5 U( `) I% ygetid                            获得ID3 w8 o9 c+ o4 O4 [. e1 G
getsenderid                      获得消息发送者ID; G: a1 D7 [* ~2 z& {5 I
getserverid                      获得服务器ID
1 o2 A6 H4 n( B6 U9 Igetsenderserverid                获得消息发送者服务器ID0 i2 H8 c: N: }0 d. P
findobjectbyname                 用名字查找物件
0 g3 ~" Z/ C* |7 u0 O7 `) R, rgetposition                      获得位置, t4 y2 ~+ z/ u* B, B: n. z% \' _
getsenderposition                获得消息发送者位置
2 p# f% z5 t- y7 Y, ?getnearxy                        获得亲近的XY. v; x5 |. B& }
getmapname                       获得地图名字
, D2 T# j- z/ z, I& pgetsendermapname                 获得消息发送者地图名字$ v( Q4 `3 Z9 O/ t( V
getmoveablexy                    获得移动能的XY
) ]- W5 v1 L) P: ogetrace                          获得种族# g, F8 E* x6 O, W4 H$ U/ L' o
getsenderrace                    获得消息发送者种族3 T; W9 t: R& G$ i/ E' {

3 ^4 X. _. V) S1 Rgetmaxlife                       获得最大的生命值# G9 M5 i" a' {
getsendermaxlife                 获得消息发送者最大的生命值
" D& b. s$ X0 T- ?$ e8 Hgetmaxinpower                    获得最大的内功值
/ s' D2 y. z  W& b+ o: _getsendermaxinpower              获得消息发送者最大的内功值
4 Q" Q7 `- {" d2 ~$ O$ h6 vgetmaxoutpower                   获得最大的外功值' g" V/ i: F3 Q  y; h( k& G
getsendermaxoutpower             获得消息发送者最大的外功值
. i/ D  J+ H/ h: jgetmaxmagic                      获得最大的武功值
( U! H2 {5 ]( L$ e+ X/ rgetsendermaxmagic                获得消息发送者最大的武功值
+ g% S* l5 b  A# _' |0 fgetlife                          获得生命值
9 H5 M& v& f! H$ ~/ T0 ^getsenderlife                    获得消息发送者生命值& N+ M0 A5 C8 ~5 l$ [1 D

6 a, {; i5 ^0 x' }* b& P6 Hgetinpower                       获得内功值; B8 |' t& Y% Y2 ~2 r# T& l" o
getsenderinpower
1 e6 ?& V2 ~; \- m6 x! ^; H6 C
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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