游客您好
  • 点击联系客服

    在线时间: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语言。) B/ P) L6 y! ~6 m% x  M  `! ^  j% V
' X' b& r. k9 u0 p- d9 |
千年有三个常用的数据类型,String 字符串型,Integer 整型,Boolean 布尔型。" H7 ]5 g# D, m! O4 u6 b

% }/ N/ Z' q) N& {! l! C2 \一个函数的基本结构是这样的:
, E( x! g; u! z) {1 x+ Z: ~# d8 y
0 T7 N9 d& y7 U9 h' O5 Nprocedure OnCreate (aStr : String);/ v0 O  J; y+ Y4 T  U7 E
var
. {+ q9 J- F8 h* t# o8 i   定义变量
5 O. ]3 h3 g# @+ j% Lbegin
: e# m* s/ @$ o8 a2 H& [   语句7 ^; S# f6 T7 i7 s
end;# {6 I8 `1 {- @8 B8 ?
, r6 y5 q2 i4 j5 W8 ?+ T2 u" g
在每个脚本的前面都会看到一堆函数,这些是千年的库函数,可以直接拿来使用的。例如:callfunc (aText: string) ,可以返回一些信息,具体返回什么由括号里面的 aText参数决定,这些参数在下面会给出。Random (aScope: integer),可以产生 aScope范围内的随机整数。5 K) g4 F( m1 @2 e' |+ L

7 w# F/ n% Y/ Y5 T/ o千年中有两个非常重要的函数,一个是 print,另外一个是 callfunc,用法和参数比较复杂。* Z5 W* ?4 S0 I: C# x# D

9 X$ M1 a. U5 f* v  l/***********事件触发的函数**********/. M* o1 O5 c2 B5 e

7 m, l, z9 v0 o/ o+ [//当有人*近时
: F* [0 [6 \1 b$ Y: tprocedure OnApproach (aStr : String);
3 F0 p" T7 z3 J0 C* z( J! W) R  M. M) h5 Z2 `6 q8 b8 t
//当有人离开时& f% Y$ E3 C) `$ z
procedure OnAway (aStr : String);
4 Q' @# f' y( [0 ?- b; O# G' Y
6 F3 ~$ Y/ Z: j- O6 s//当受到掌风攻击时
" e, K. l3 g- Q/ Aprocedure OnBow (aStr : String);
( G! }# w# [% Q) {
0 R8 |1 S  B2 }* e3 J//当状态改变时% O( p8 k7 Y4 D# {
procedure OnChangeState (aStr : String);; R: y/ R' |) A! ?

8 |, V, b% y; t0 Z//当初始创建时* L* ]8 T6 D# L& D
procedure OnCreate (aStr : String);
1 I; J, S1 ?0 K6 [
% O: h; Q# b" {" w+ F; k//当被双击时
' u9 Y% K" h1 d# h4 R2 V" ]procedure OnDblClick(aStr : String);+ E: \& e* R, C1 o" d* J
. l5 J4 U) w; F# h! l! f+ N1 O
//当死亡前
) C$ S3 ]1 d1 D3 E/ O0 R' m! rprocedure OnDieBefore (aStr : String);
+ u6 H3 u( D/ v/ I# r& q3 d0 \3 m) N
//当死亡后
8 P' Q/ X% o! \2 M1 O2 G% Cprocedure OnDie (aStr : String);
2 h8 L; ?9 Z' B: R9 \1 I" z1 x- Y# l2 X
//当被拖放物品时
; r4 Y% B5 P+ m, ~, rprocedure OnDropItem (aStr : String);* m4 {- d0 d! T

4 E2 a: V1 N1 N* ^2 a//当得到命令消息时) \% B: T* s/ S$ A8 _
procedure OnGetResult (aStr : String);
  E/ }7 k6 Z6 |! n# a! p
% ~" I' w! I, h* j//当得到改变步长时
6 S& B8 R  z! {1 L$ k9 z7 Q3 R7 qprocedure OnGetChangeStep (aStr : String);8 Y+ ]/ Z/ A7 r4 t& [

) i) l0 O# h. J% `, s. @& y//当受到攻击时
% {7 A' R7 f: j/ W& J, b  M  \procedure OnHit (aStr : String);
8 Y- e' x& q" [) F2 M' o) U0 G) n+ X% t- Z9 x2 F- Y
//当被左鼠标键单击时
' j" u  U  p7 W& Z* fprocedure OnLeftClick (aStr : String);
7 C, F$ c* t9 a4 j6 `, V6 W
. a0 V2 U. d; ^9 C/ g9 q% @//
8 X* q* K8 [: z9 M% D4 R8 iprocedure OnRegen (aStr : String);
1 i  E  O. p+ J8 X3 {7 X) _# v( p9 Q* n
//; M) D& B- g/ g4 [* }
procedure OnTimer (aStr : String);
* `" I% I1 `7 j4 G) S9 z6 h' C
1 d7 ~; {' L( ?1 Z; b" B//当物件发生翻转打开时,一般是用于门$ z; x4 b; R8 @7 N
procedure OnTurnOn (aStr : String);
* ^& f6 `; S0 S3 g% r4 T7 C3 j/ X) A4 y* f4 B% v( C  Q* Z; }4 o
//当物件发生翻转关闭时,一般是用于门
7 o3 m3 b2 W  d3 f& |procedure OnTurnOff (aStr : String);8 q+ k5 P4 j7 o8 x! Q1 C1 y) H; [4 L

) h9 _) Z" w! g8 ?% Z//当用户开始游戏时
( C/ f! a+ y7 b0 T1 k0 b9 h5 Eprocedure OnUserStart (aStr : String);' e' g. ?, ?) [2 ?: o- e, I4 o8 |

2 K& [8 h! B3 z- h) e# u//当用户结束游戏时% A# A4 T! T8 D% @  ~) Z4 ?# ~  F
procedure OnUserEnd (aStr : String);
$ |" n; ?% l' E4 a5 Q1 U, P. v: M5 Y* u0 O
//当移动时5 k0 p4 `9 R; p9 f9 t9 A$ C6 z
function OnMove (aStr : String) : String;: B9 F4 C: i1 B0 Y" M

+ Y1 l+ t/ C$ f# L3 \& j- N//: e8 [0 x7 Z" ~  k
function OnDanger (aStr : String) : String;
2 f9 q* I9 \' ^0 G5 C
& x, O4 |" D$ i: j//产生一个随机数(系统函数)
9 c" n9 l$ a& N9 P; W8 @! V6 gfunction  Random (aScope: integer): integer;
; f; J2 N* X3 z, j: Z. P
. p4 U& ^$ @# a) P$ E1 N//返回指定参数的消息(系统函数)' C8 z$ B$ s9 ~" n% l7 J
function  callfunc (aText: string): string;
9 N' M9 {/ w: b  H4 r3 q& T
# c. a( f$ n! A//执行一条命令,可以是说话、传送、获得玩家的物品等(系统函数)/ T+ v; g8 ^3 n& T
procedure print (aText: string);
$ _. X0 t1 I8 Y2 f3 [2 [
, f' W" x7 s! o( z' `具体参数(略),整理中...........' m' r# P5 k* n$ _5 c* k! G
* m8 }* D9 o! o5 f! U: Q3 O
//转换字符串为整数(系统函数)
! o1 j+ O- N& b" @# [( Bfunction  StrToInt (astr: string): integer;
7 w8 ]0 p- Q1 }! q# Z1 X# G: c
//转换整数为字符串(系统函数)
  s- ^- X! t" [& B# x8 sfunction  IntToStr (aInt: integer): string;0 Y+ `' O2 E1 v; x2 t; h, O
0 ?- J5 r5 C) I5 Z7 e1 _: ]
/***********事件触发的函数**********/6 p4 Y# M9 O, r* ^. }# a

) x8 Q0 H& O& _3 s
+ h% Y7 M  H; M/ y: m# R( d1 V  H
' N0 O) n- N& U* h6 m
# |6 j& U7 w# x) C3 M( U4 `
0 `+ V; T4 E! O2 n6 A) A/ a, ^+ q

# O# D& Y4 |9 t" `; X) a
$ I0 ?' {4 U: l0 n8 N7 |$ F5 n' J) a# W. r; Z  Y
function  callfunc (aText: string): string;   //以下为 aText参数的值  D) O* D- |; o9 R

/ r7 Y2 q& k1 G" J: vgetsysteminfo                    获得系统信息9 `" S" \/ ]- D/ m% I0 ?" w
getname                          获得名字0 G" O* a9 _' J6 g% z& D: h
getsendername                    获得消息发送者名字
  e+ Z2 S9 }! `getage                           获得年龄# u$ p. ]; _' Q& W0 _7 g
getsenderage                     获得消息发送者年龄
2 D& F. @4 W8 U. R: Z8 \" hget***                           获得性别) [/ Y# ^& b1 Y! x$ G8 P
getsender***                     获得消息发送者性别
2 Y( P1 Z) h) J* |0 Igetid                            获得ID; k; i- \4 Q  R/ V& ^/ E: n
getsenderid                      获得消息发送者ID. |! }& Z* |: ?2 V9 G
getserverid                      获得服务器ID
) g" {7 s& C) G  j, Y6 a, ]getsenderserverid                获得消息发送者服务器ID
9 g$ U4 ?0 p* k" P0 w% E$ Ofindobjectbyname                 用名字查找物件
2 z4 y! {  z% ?, _6 f6 lgetposition                      获得位置3 e; A7 G* f$ N2 X- q; ?1 m
getsenderposition                获得消息发送者位置3 V1 J% t6 s+ `" n
getnearxy                        获得亲近的XY
* p5 t! ~' o1 e, B: Y+ m1 B- P. l& Egetmapname                       获得地图名字
- y1 I$ V" i* P, ggetsendermapname                 获得消息发送者地图名字
$ [" i1 O$ ~, d1 t9 z2 k9 r: Lgetmoveablexy                    获得移动能的XY% n# ^2 A' `4 }4 D; Y) E8 c
getrace                          获得种族
) `: a. y: x( M2 agetsenderrace                    获得消息发送者种族
2 e5 Z; S  M$ C8 f4 z( G) p1 f- `4 F" M2 F$ j4 Q( d
getmaxlife                       获得最大的生命值/ G, w4 M5 J3 p# ?4 {! W
getsendermaxlife                 获得消息发送者最大的生命值9 T5 k: u+ I! y6 S4 ]4 p% Z
getmaxinpower                    获得最大的内功值; k& @) x3 f4 b! l+ r6 C4 [6 P; J7 m
getsendermaxinpower              获得消息发送者最大的内功值1 S+ J( F2 Q6 ?
getmaxoutpower                   获得最大的外功值
$ K5 @! c! P3 G7 g7 V+ X/ }) [getsendermaxoutpower             获得消息发送者最大的外功值) n5 X7 N  h7 A5 d+ Z1 m0 r
getmaxmagic                      获得最大的武功值$ R; g* U# @3 H3 a( {
getsendermaxmagic                获得消息发送者最大的武功值/ t# N3 W3 {2 `1 _
getlife                          获得生命值- l# }/ ]( n! _. z& _2 L2 [4 u
getsenderlife                    获得消息发送者生命值
$ Q6 N7 C+ K$ L7 c& L9 j1 z% f4 R; @/ R9 ?( r
getinpower                       获得内功值
6 Q4 s7 s+ ^- N. [1 a4 |) t# T, [getsenderinpower

6 p" x' u4 ~. E
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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