游客您好
  • 点击联系客服

    在线时间: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语言。
2 W: N7 Q2 C0 ~2 S, }1 I) w- l* @0 V) M  s6 D
千年有三个常用的数据类型,String 字符串型,Integer 整型,Boolean 布尔型。
8 P) Q( X* \; L3 M: n. o# b3 o
& C: [# ?$ v; s9 j- ~一个函数的基本结构是这样的:0 R! D2 I* H; l6 @& z) l

! X4 q3 [  }2 ]7 Hprocedure OnCreate (aStr : String);% J, v# @& b. Q4 [  I7 ~
var9 @; G4 _, }2 r  @' [) w) E
   定义变量
4 \# T' }2 r4 [7 [2 l3 Tbegin
5 B% g! H- ?1 ]  w3 J: x; S   语句
' k$ u* W* i+ Jend;
- H3 E0 M$ c7 G" K
, L9 L  F; w; E* \$ p! v$ Y) N, @在每个脚本的前面都会看到一堆函数,这些是千年的库函数,可以直接拿来使用的。例如:callfunc (aText: string) ,可以返回一些信息,具体返回什么由括号里面的 aText参数决定,这些参数在下面会给出。Random (aScope: integer),可以产生 aScope范围内的随机整数。
2 f: h; p" N4 q) N9 `
3 D4 d# f9 p( F. {千年中有两个非常重要的函数,一个是 print,另外一个是 callfunc,用法和参数比较复杂。
* u0 }4 B, S0 w* v& \
4 V3 u: q: B( b' }* X/***********事件触发的函数**********/9 X2 z3 t1 `& a; G( X

* s3 R, C1 I+ h+ o//当有人*近时
# ?- H& l$ |5 [8 K5 cprocedure OnApproach (aStr : String);
. ]; W4 Z3 y2 @, g  j: Z8 q" G% |0 }, b) }0 W8 X( Q, X& q  q% `& l% s
//当有人离开时
1 l/ k# b4 [8 X$ `- m5 Tprocedure OnAway (aStr : String);& R" r  O- A$ A8 L9 @6 u& G

' f+ U9 X' t, u# ?7 h7 `/ c//当受到掌风攻击时& L- }9 u7 Q9 G1 E
procedure OnBow (aStr : String);
2 y9 d" j; Z  g4 _, V4 a  f4 |( ~
; w1 Y4 w. o6 U0 m, _//当状态改变时! `7 v2 V3 s1 m& Y3 U% c; w
procedure OnChangeState (aStr : String);
+ M# D0 ~6 q7 U/ j& y) o
8 H  C2 ]6 r  q6 D5 _* i$ j//当初始创建时( U7 V5 c+ S! B# B8 S% E+ H) H
procedure OnCreate (aStr : String);
: i/ @3 b2 o$ k* |) E, o5 `1 e$ H* t' g
//当被双击时* t! X/ D7 z/ W  ?7 k
procedure OnDblClick(aStr : String);: ]+ g9 d" Y0 r6 C8 `+ a' h; l9 U, H
% ~, q# z4 q$ q# _6 L
//当死亡前( }" `2 Q* s' ], o
procedure OnDieBefore (aStr : String);
  S9 L8 M' Z/ d, U) `- `% r1 e+ J3 e7 p9 Z
//当死亡后
: T' r( x# H2 s' Wprocedure OnDie (aStr : String);! `# i! p; w% h2 n$ y6 L, R( b7 B
- v) v: t4 A3 z! d2 n
//当被拖放物品时
) x5 f9 c" \4 Vprocedure OnDropItem (aStr : String);
6 s7 \/ a5 \5 s$ q
, w3 r/ W: z* W$ o% a7 t: T//当得到命令消息时
4 q% u# [4 s4 w' _procedure OnGetResult (aStr : String);
' i2 X9 O0 S$ h  H7 {! {- a* X9 W& r% D8 T1 K& ]
//当得到改变步长时6 {# W5 P$ x* Z
procedure OnGetChangeStep (aStr : String);. t6 o0 a5 K# N) S& _

3 O0 ?1 r1 a' F//当受到攻击时
: ]" P# k& q+ Pprocedure OnHit (aStr : String);9 M2 p% t+ y7 f0 f  s$ p. X9 `! ?

/ C1 c' |" p8 b7 M//当被左鼠标键单击时
$ }! f% z  g6 W& ^procedure OnLeftClick (aStr : String);
% M8 E3 g" j+ l( B" u: O  t, k0 ]0 ^) I
//
4 C/ J8 d4 Q$ ^4 Q" {6 Yprocedure OnRegen (aStr : String);+ V4 {0 Z* f' e4 W
$ B+ A! a' V2 O' Z2 y$ C# w; d
//
/ ?7 C; g/ j% r& fprocedure OnTimer (aStr : String);
# c( E+ a% {7 a$ y6 J: f% k4 |9 h/ z6 K2 t0 q9 c5 z% n, R4 U
//当物件发生翻转打开时,一般是用于门
8 _1 W1 m* J* u2 K3 R  J. Dprocedure OnTurnOn (aStr : String);3 N, Q* M4 f" B4 q
; X' ]  Q) ^# Y5 W& W1 x2 ^
//当物件发生翻转关闭时,一般是用于门$ z8 {# U" N: m) W: N: N# l- Z/ S
procedure OnTurnOff (aStr : String);' ]' }; h4 M& m, Q' f, @) k. J% `6 t

- _; Y& ~# u- }/ H; M" A$ G1 z) f  D//当用户开始游戏时: v" [( R9 @: }5 ?: o0 ^) v
procedure OnUserStart (aStr : String);
" J. p6 V' d8 q# L/ y& w) y' L+ e2 ]) m. ^3 V
//当用户结束游戏时
' ?1 r- u" \7 Nprocedure OnUserEnd (aStr : String);4 E* H% x% U7 ^; E. Y+ W5 A
+ g( ^1 O7 U7 v
//当移动时6 k( I& H5 w' R* b: D7 o9 q! \1 i
function OnMove (aStr : String) : String;
0 k3 @7 j  r6 j" Q. H
% ]* `1 i( p/ Z) d5 D' @" u( i//0 T# Q& B; l/ c# S" x
function OnDanger (aStr : String) : String;9 o2 B7 E- O2 u" N) [; X, _) B
5 D5 l3 v& @6 X8 _$ M
//产生一个随机数(系统函数)) i% q8 y1 Z4 s* d/ @, c' w- _
function  Random (aScope: integer): integer;
+ d' S. |$ j: V3 v6 F! C' X! J7 }% N  c$ g$ p3 P
//返回指定参数的消息(系统函数)
5 z5 W9 L3 \; B/ }9 Wfunction  callfunc (aText: string): string;
" E8 G' y+ @# y0 J) @" R5 r  f1 i% d3 y6 @. p! Z7 v5 r- w8 U
//执行一条命令,可以是说话、传送、获得玩家的物品等(系统函数)
5 a0 `# S- P( P+ k& ?+ C2 A: Zprocedure print (aText: string);. O6 K; x* P! s" k' g- s/ u
' m4 t/ h& w2 Y5 N
具体参数(略),整理中...........; }% g; c5 ?  {& A, n2 W! o

) K) Y" F4 P" x4 s- t6 y- V//转换字符串为整数(系统函数)
7 \* L! R* ]1 g3 }function  StrToInt (astr: string): integer;
5 d- z" Y4 J7 N/ k
/ ]7 n" G/ v% Q. f+ N//转换整数为字符串(系统函数)5 Z, t3 a) B; a" W1 e
function  IntToStr (aInt: integer): string;
( I9 t# g, v7 G5 J$ w' H4 Z
$ K+ R+ _% `2 q* P+ E! `$ `' z( F/***********事件触发的函数**********/0 k0 }, p6 _7 y8 ~; y; r

, p: P# M% t. n$ Y4 I( w5 z
2 L4 [9 ]1 K2 {, h
6 K" @. c( I) d( h" u" R: `0 ~& w) c( b8 {. q
7 L/ a' q2 B* b
& H( e% D! R9 D- h, }/ O
% b! @: F3 B3 W0 y; a" A" y8 ~

0 {7 V$ v2 j) A. e' P/ g+ j2 M  w
: l5 R- B7 |# w1 }, N0 Rfunction  callfunc (aText: string): string;   //以下为 aText参数的值; W5 q) x, L# |3 K- J
: S8 Q5 O6 k: p4 s" x" j+ I
getsysteminfo                    获得系统信息
1 @& V5 W! C) W" S1 Zgetname                          获得名字( r9 Q" i2 I# l" }
getsendername                    获得消息发送者名字' S  y0 A9 ], D/ T5 v% }  i
getage                           获得年龄
& `8 V$ T; c$ X4 P+ z' c/ ^getsenderage                     获得消息发送者年龄
1 }9 m6 p& Q# ^5 _  s7 e( ^get***                           获得性别
; N) _1 [- i, T! Q( E* t4 U6 dgetsender***                     获得消息发送者性别0 o( s- ]7 i! v. l1 j9 A) g2 w8 i
getid                            获得ID
9 O+ \- [; C6 B) x  ~8 Lgetsenderid                      获得消息发送者ID0 ~# e6 R7 D) t4 S
getserverid                      获得服务器ID
8 q7 T4 [' c4 f4 G3 hgetsenderserverid                获得消息发送者服务器ID: h- e* k- [* b. D) t$ Z4 A) z, z
findobjectbyname                 用名字查找物件
6 c5 M3 Z# G- Y! G$ ?8 fgetposition                      获得位置$ r5 [6 k9 g/ f& B+ i& E* c
getsenderposition                获得消息发送者位置) i9 M; z% w) m( M7 i" b
getnearxy                        获得亲近的XY! l4 S2 U* e/ d. Y
getmapname                       获得地图名字
0 s& ^( \: r! E$ S+ F0 _- U6 Jgetsendermapname                 获得消息发送者地图名字2 T- A' k- i/ L" t. o* o2 D# u; D
getmoveablexy                    获得移动能的XY/ G  B- }: ~' j
getrace                          获得种族
- {& A2 I0 o: G! E# S5 k( Rgetsenderrace                    获得消息发送者种族( W1 c' @3 A, E' n2 N6 W4 u
* g; a4 N0 U% R( R
getmaxlife                       获得最大的生命值
8 y& \$ R* p# H1 Wgetsendermaxlife                 获得消息发送者最大的生命值2 [) I9 D5 j  t; h$ w
getmaxinpower                    获得最大的内功值
8 [$ q4 q  ~; o6 Vgetsendermaxinpower              获得消息发送者最大的内功值
7 B7 D! A! K8 N0 p% ?- h% @getmaxoutpower                   获得最大的外功值
* a! x) D. G7 {  z9 R2 lgetsendermaxoutpower             获得消息发送者最大的外功值5 S% x8 X8 h+ P/ V) ^, D
getmaxmagic                      获得最大的武功值  H! K# Q; u$ d+ _7 u8 K- y
getsendermaxmagic                获得消息发送者最大的武功值+ z" T( L4 F0 J$ }; v2 w+ z( N
getlife                          获得生命值! ]' a" ~6 [# {: P' e
getsenderlife                    获得消息发送者生命值7 E. W: E: l5 S2 b; ~6 Y

- T6 d8 i2 C7 @8 R$ M( }getinpower                       获得内功值$ I  r6 v% D$ n4 W5 t% W5 D
getsenderinpower

; ]: C1 v- T2 j! E
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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