游客您好
  • 点击联系客服

    在线时间: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语言。+ h+ h2 }. o) a7 y0 f3 q2 l$ u7 ]
$ c$ s2 h* J1 h
千年有三个常用的数据类型,String 字符串型,Integer 整型,Boolean 布尔型。
5 N, E$ Y$ ^; z# l$ O+ i7 ~3 j2 P" v  G( _! o0 l
一个函数的基本结构是这样的:4 ^! p+ A0 f- B% t- G
' X% _7 Q0 s' [6 o5 S2 o( q9 F
procedure OnCreate (aStr : String);" g$ M) t. L: d  E
var: @' C$ N% N; O
   定义变量& y# a! M4 B+ q8 |& H* W
begin
4 M2 s% s  {$ \2 C2 \   语句+ Y5 Z3 s- {/ y2 G" b4 R$ f& Y
end;4 o" [9 R4 M; D# b+ V# K$ v* v; j
% f6 W8 ^* t3 S" ?
在每个脚本的前面都会看到一堆函数,这些是千年的库函数,可以直接拿来使用的。例如:callfunc (aText: string) ,可以返回一些信息,具体返回什么由括号里面的 aText参数决定,这些参数在下面会给出。Random (aScope: integer),可以产生 aScope范围内的随机整数。& I' a1 M/ T* g9 M, i5 K3 N4 q  y

  `! g# _  S. W+ X/ f5 V0 d- y3 }千年中有两个非常重要的函数,一个是 print,另外一个是 callfunc,用法和参数比较复杂。
8 ~  f6 ]) ?5 V# S) |9 s: Q# n2 j/ U0 K/ o0 v! i9 q) u: n
/***********事件触发的函数**********/( z0 Y* S* X0 y
7 [8 f/ I- G, G8 r7 p
//当有人*近时
6 a8 l! I! A  P) }8 s5 a8 }* E( ?+ H( Eprocedure OnApproach (aStr : String);
0 G' n) [' O* Y* f
: ^/ Y$ o3 O5 U$ O" G/ T1 Q" Z//当有人离开时; b  G; P6 l, w6 W$ p; k
procedure OnAway (aStr : String);
9 e$ G/ e, ~- t9 S, R( H7 L7 w" X! @3 f2 _3 Z5 ~0 t* @5 s) h1 x
//当受到掌风攻击时
4 l8 }% h+ x) e0 |6 q; u5 aprocedure OnBow (aStr : String);# H) [  }7 p# ~8 ]( c
1 d1 p/ O1 y5 ^# Q- O1 V
//当状态改变时* H' y+ n/ s4 B! d  v% n
procedure OnChangeState (aStr : String);
  z9 R) q% s. a! Y2 R6 x  Q4 i+ J4 ^( P1 U- x* G8 n4 I
//当初始创建时3 \5 k- F, y( H7 k' B# ]
procedure OnCreate (aStr : String);! |8 C' a  l- o2 V, F. _& U# j2 y3 ~
5 O& v; [% i  k+ \+ M6 e, z, ^( ^
//当被双击时8 {! ~5 o$ _# E/ I6 x+ m% G) |
procedure OnDblClick(aStr : String);
$ n0 d& G& E7 a" x5 S% H! R' n0 W/ `" ]3 a9 ]% i& G
//当死亡前
" E# M& ^9 P. `: ]7 W$ T- I& Iprocedure OnDieBefore (aStr : String);2 W4 y; A" w8 j" x- n# P) A. e

; S3 e  n/ c) S9 j1 }4 e//当死亡后
6 J6 _* g' z3 I7 nprocedure OnDie (aStr : String);% S, j/ ~+ f. J8 l7 ]( f
" m0 Y3 b& W; o2 D  y1 Y9 x
//当被拖放物品时
* i. V2 [7 o# \8 Q. b2 F9 P# k# Lprocedure OnDropItem (aStr : String);
+ c4 ]8 k6 I3 {; t5 i1 y6 w. H! ~! E/ |9 e. H( G
//当得到命令消息时
1 q) H1 w" z+ X/ c" x2 Jprocedure OnGetResult (aStr : String);
+ Z, m/ G; |0 k1 q* l+ h- q
( @* Z  w( _! n//当得到改变步长时2 ~4 @- f, A, k# U
procedure OnGetChangeStep (aStr : String);
) }5 s$ O1 Q4 \' B6 f7 b1 {
/ _6 g8 p- B. }//当受到攻击时1 C5 G7 d: F( n
procedure OnHit (aStr : String);
5 c% C8 W( g. g+ H  t# M
: c- _) ~4 {% `8 I! E5 H8 H//当被左鼠标键单击时3 d+ }6 O9 G2 B# W& ^7 ?) P# z/ Q' a
procedure OnLeftClick (aStr : String);
( _/ I: E! A* k/ Y$ F8 M
1 x, {& A; `: _5 @: ~//
$ L8 a. o  A4 L# ~2 @# w3 ~procedure OnRegen (aStr : String);, F/ a- Y- T) |! v3 D; ^/ l0 w( a

4 c' g) K5 L& P/ U3 R+ O1 Y//# u, \3 ?; B+ d  x# v9 F; A
procedure OnTimer (aStr : String);
0 A1 n  a* F+ t, f2 O' j! a2 i7 v" Z+ K. }% P- Q
//当物件发生翻转打开时,一般是用于门6 z- @; y9 c- K  Q
procedure OnTurnOn (aStr : String);
! z( [, q# I# d% J( Z, p
% s- k% z7 n/ U* z//当物件发生翻转关闭时,一般是用于门) q# V+ b* o! Z5 t% R
procedure OnTurnOff (aStr : String);, h/ L& q7 o$ ?, m# A% a
* o$ C$ R2 E8 U) J6 l
//当用户开始游戏时
. W0 ?2 \  D/ A8 m! }3 @( uprocedure OnUserStart (aStr : String);% t, i4 }6 W" z: w' k/ a
$ L3 G0 B) U* J# a
//当用户结束游戏时
# i4 R% ?8 v# ]  i) P9 Sprocedure OnUserEnd (aStr : String);
1 {3 |- }! P: @9 _6 ?7 j7 G1 F& g( R% k2 H1 a1 |0 ~: E: i4 y
//当移动时
" P/ R; U0 k6 `; v; D( n; tfunction OnMove (aStr : String) : String;
2 o. S5 {( e8 Z$ Q
$ F& D, y' [8 R" x; ]//
& p: h$ J- Z9 a9 C( H$ j6 S. zfunction OnDanger (aStr : String) : String;; N; ]% J+ t: N5 m& @
) l1 ~% e( ~1 w6 ]% J
//产生一个随机数(系统函数)
# }! g5 n# ?  h" p+ z9 cfunction  Random (aScope: integer): integer;/ h8 x% V5 T- J8 `

- Y$ j4 j8 d% j) v% c//返回指定参数的消息(系统函数)
6 Y, B" S& |+ V6 J4 W# k: Ufunction  callfunc (aText: string): string;
; b* s; c' |* `) J7 I% A$ \
& v! \0 @' i( A  a4 N- U//执行一条命令,可以是说话、传送、获得玩家的物品等(系统函数)
' z# |. [1 `* O! Sprocedure print (aText: string);  x+ L6 z6 Z% O$ x% g! D1 G
, \; d# r! H) g3 U* U
具体参数(略),整理中...........
' [. V& |1 X2 c5 s
* ^' q* Z& Z. _//转换字符串为整数(系统函数)
7 y; U, y$ O! [& A6 Z: s; H% wfunction  StrToInt (astr: string): integer;
0 Z9 b. }# X& i2 {+ J2 t: @& c
4 ]9 r/ w$ Y5 O9 B$ d. u9 s7 Z//转换整数为字符串(系统函数)
7 m% v* v" [9 \  g/ v+ gfunction  IntToStr (aInt: integer): string;% z0 S1 k' c% S7 u/ l

) u& l5 r9 X1 [5 X! q5 G/***********事件触发的函数**********/( H1 r8 ^; u( H8 l  Y
& A' N/ u! l# G) h3 R$ y2 [

( `5 F$ \7 P  r4 |* W" Y0 `. Z, I2 L, k6 Y% @9 c5 N

7 A, s. L7 v* S' [" e3 J2 ^7 V; k

! T* B8 p# \/ m! u* [: V! u- y; i3 A2 N: v& X

. e) q. ^1 h+ ?. I! k9 q; h! S0 U  F3 Q; G% \7 p  I
function  callfunc (aText: string): string;   //以下为 aText参数的值* s/ l" ]' c7 e2 }

" \, e: P# m3 X: o& tgetsysteminfo                    获得系统信息
* ^( p$ D& l, x/ z8 `getname                          获得名字: K' n# {0 q) F* w: H! o
getsendername                    获得消息发送者名字5 ?0 _; d- p3 e3 H5 X4 Y0 s/ Q3 |) Y
getage                           获得年龄
9 H4 Z9 }0 C# x- q% z  f# _getsenderage                     获得消息发送者年龄( A0 c5 t: h8 y; n6 l& @
get***                           获得性别+ Y" Y4 f* h- Q0 I
getsender***                     获得消息发送者性别) X; M* U# X9 i6 y
getid                            获得ID! k1 O3 w9 c9 R9 Y# s) k: u
getsenderid                      获得消息发送者ID
7 S& C- D0 W$ \. r) u! s4 @& cgetserverid                      获得服务器ID. M) q7 ~& N1 n7 _
getsenderserverid                获得消息发送者服务器ID
6 Q, a5 r4 `& w5 e6 v; G! Wfindobjectbyname                 用名字查找物件
0 ~( y4 W) m: X  J( c/ Xgetposition                      获得位置; H8 {3 d( e5 \. B# z1 I; ~
getsenderposition                获得消息发送者位置
4 v" ~7 c4 I7 k/ ggetnearxy                        获得亲近的XY
- ^% y5 \5 k6 p$ bgetmapname                       获得地图名字) H3 x8 r: j1 ^9 @  V7 E8 d
getsendermapname                 获得消息发送者地图名字7 |9 z: {' S  ^+ I- e! A
getmoveablexy                    获得移动能的XY
7 C" l3 S6 e8 ]0 [$ y+ O# wgetrace                          获得种族  [5 n0 U8 k% s3 O2 v
getsenderrace                    获得消息发送者种族
/ J$ i6 Q, u9 y3 A) ?9 {* {, ^: b; a' Z0 J# @1 p) a, n# y
getmaxlife                       获得最大的生命值
, E7 W( C: Z3 V7 g" ~getsendermaxlife                 获得消息发送者最大的生命值. |9 p- C0 ^0 x( C6 j
getmaxinpower                    获得最大的内功值
) Y5 {; V2 F. b2 b# M3 wgetsendermaxinpower              获得消息发送者最大的内功值) |0 ?/ u; p. t
getmaxoutpower                   获得最大的外功值
* e% ~, z% t, ?" L8 d* {getsendermaxoutpower             获得消息发送者最大的外功值
: z3 C) |$ Q% ]% ?getmaxmagic                      获得最大的武功值6 x3 \/ i# a+ q6 l' J* A
getsendermaxmagic                获得消息发送者最大的武功值
, f( E/ d/ A# _, E& E; vgetlife                          获得生命值! d6 _. x- A! ]# v
getsenderlife                    获得消息发送者生命值
/ G4 c1 b/ v2 i1 e6 |" |) s( w, \2 [' y
getinpower                       获得内功值
$ [( ]3 `: g6 o7 o% ?" q7 a# ]getsenderinpower
7 i& J9 D  X4 n, Z8 u* V
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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