游客您好
  • 点击联系客服

    在线时间: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语言。" d# T6 W7 d3 M5 O6 ^& L6 f5 K/ u4 V

0 i+ Q* @, [0 N5 u9 a( T2 n千年有三个常用的数据类型,String 字符串型,Integer 整型,Boolean 布尔型。
6 x0 c* i  d0 G, S  m
7 @7 s# p, B- E一个函数的基本结构是这样的:
& G/ t3 E5 L( L. e; O2 V- t, b7 G( P8 K/ C7 {# E/ |
procedure OnCreate (aStr : String);" x8 j* ^8 U6 b
var! l& v5 [$ q6 N9 C1 D
   定义变量% B4 `  J: \, r, d; N) c0 B2 Y6 v
begin
! C' c. c0 O. }7 [/ F0 e   语句
6 ~8 H9 Z& S% Kend;2 m$ A0 f+ o- R! }6 ^
+ `/ }' c% c5 i( h) X
在每个脚本的前面都会看到一堆函数,这些是千年的库函数,可以直接拿来使用的。例如:callfunc (aText: string) ,可以返回一些信息,具体返回什么由括号里面的 aText参数决定,这些参数在下面会给出。Random (aScope: integer),可以产生 aScope范围内的随机整数。% c9 h/ U# z# L- j. H
+ x" R7 L; x' m' E: ]9 f% S; P: v
千年中有两个非常重要的函数,一个是 print,另外一个是 callfunc,用法和参数比较复杂。) |& j' X  H9 z' \( [& r, x# w
- Z  o  g; a. ~* m5 h/ n8 x
/***********事件触发的函数**********/
8 D7 F: n6 K9 |: D- f& N1 \/ O/ M2 Q6 z# s- C
//当有人*近时
3 g) h3 U. l+ Y4 k' ~" r- e# `  bprocedure OnApproach (aStr : String);
  i0 |9 L4 v3 \0 H. H( i  \; d
/ s9 B2 H( R5 w2 Q5 ]* y& f//当有人离开时
5 r3 O% T3 g2 z( ~: r7 v" gprocedure OnAway (aStr : String);
/ k  v  _( _. e9 J( p
/ U+ j, q5 N4 {$ p9 i) @//当受到掌风攻击时
; y/ Z. {  T! d2 bprocedure OnBow (aStr : String);
& |) o1 g; q# G1 s- H8 j+ Y# f! p* [1 G' a9 i8 t
//当状态改变时) Q& Q5 G" U% A. Z6 v: y6 Q% K
procedure OnChangeState (aStr : String);7 a' P+ J  I% B+ C/ _

/ |( x) v7 j9 j, V7 X//当初始创建时
$ D. n) s" E9 n) c! W4 @procedure OnCreate (aStr : String);
6 f6 H" K" C% d% R& O/ k" F% t8 {5 h
//当被双击时
, d( [2 T9 b2 L7 M7 ]4 M( iprocedure OnDblClick(aStr : String);
/ |) F# B2 D) S( }7 u8 E. D% B1 T7 X6 Y, V$ g: j% i
//当死亡前1 k4 z3 B5 s6 ?
procedure OnDieBefore (aStr : String);
- i  h: t6 e) S* s# y" ?! ]3 Z- O$ g1 B* J# y
//当死亡后; X6 p5 h5 S6 ]% S) E
procedure OnDie (aStr : String);; k+ J9 v! `$ X5 N0 s
, s7 p0 e: J7 {/ B
//当被拖放物品时4 u, B( v4 n1 f% S& E& U
procedure OnDropItem (aStr : String);$ O) {" ^+ b: ?- T: R( V7 ~

. m5 I. J2 ]5 l# ~) f//当得到命令消息时3 k4 G/ m% u2 q4 h  L
procedure OnGetResult (aStr : String);
$ A" ^7 B. I" ~0 u% v# m: b! o3 T1 n4 e& H; Y2 G
//当得到改变步长时
8 e! M! _+ K1 }: \2 W* G) Kprocedure OnGetChangeStep (aStr : String);
5 i3 F8 A5 x6 K- u/ r2 c1 P& }3 \0 ?2 d0 n5 w
//当受到攻击时3 c% t9 K6 s/ _, Q' E3 P
procedure OnHit (aStr : String);
! \5 Q5 C6 o) A# t5 d) D  O! \
9 a* X1 S1 X& M( q2 D3 x( C( D4 C, u//当被左鼠标键单击时3 O. l6 w  D4 H
procedure OnLeftClick (aStr : String);- x0 ]4 T; _# V8 p
, S" {( o2 j. Y& M2 j
//
6 W( d8 Y' a7 }- _! _procedure OnRegen (aStr : String);
4 J( A2 ]) U4 o3 H7 @/ o6 H
, I  A( _' n% C- m//
5 O& ~( M' W% a' B- a$ A! Dprocedure OnTimer (aStr : String);
' i: i0 `3 d8 C9 D: ?# H) x1 p0 s# J9 l
//当物件发生翻转打开时,一般是用于门
1 h3 D' R7 S) r' T& k* fprocedure OnTurnOn (aStr : String);
( v4 E) o0 i5 X5 a
3 ]6 {: B2 Q/ P5 D7 M, s//当物件发生翻转关闭时,一般是用于门4 P8 S# W+ r0 g& m
procedure OnTurnOff (aStr : String);
( u( [: G2 u9 C" ?5 o" J0 d0 h8 b7 N. v
//当用户开始游戏时$ F) m; ~" l0 V" N* q: q$ q. N' Y
procedure OnUserStart (aStr : String);! s- K6 [6 w8 T* v7 d  X, j# b

' F9 X/ e- Y$ ]' h//当用户结束游戏时* H& m( J- }. V, A# _& q' A5 }
procedure OnUserEnd (aStr : String);. D; O# v6 ~2 F2 K' P
; X0 P5 v$ y1 x3 t3 n. X) Y
//当移动时5 F) k$ n* f6 E* w) x
function OnMove (aStr : String) : String;
( `# Q$ z! r" i, d5 S2 L& R
6 }6 a: T' R' @! a+ T. G; n* _//
  b$ x8 i9 O, _2 @7 Y2 W- dfunction OnDanger (aStr : String) : String;
  r0 j2 X' x3 l6 b* i) \, {6 e
# b6 E5 L# x* M. t& R6 U//产生一个随机数(系统函数)! @0 n2 v$ e/ N
function  Random (aScope: integer): integer;
2 L0 y: w, g9 l7 @! S3 Y  X5 @7 S
  {$ R7 e: L& F0 L//返回指定参数的消息(系统函数). l. @+ K; e) v& c1 ]* s
function  callfunc (aText: string): string;
, o; m& Q6 ^1 L
3 \% ^+ ]8 C% A4 i- c/ h//执行一条命令,可以是说话、传送、获得玩家的物品等(系统函数)
& X5 _+ \$ I: }/ Q9 P* Oprocedure print (aText: string);
3 q3 j3 N/ [& @% d" }$ W% k2 Q8 r7 N- z4 X9 a( d3 p/ T
具体参数(略),整理中...........
$ _7 X9 ~( V: A1 l! Q, ?$ \, |8 I/ X1 c6 C; }
//转换字符串为整数(系统函数)" ~, \' i( E! y8 A8 P8 J
function  StrToInt (astr: string): integer;; ]- Z; V3 J/ f" q0 X
0 l: f/ `: n' K/ A
//转换整数为字符串(系统函数)
& A" j- ?$ M5 |$ V$ ~+ T6 g( c, afunction  IntToStr (aInt: integer): string;
: u; |# U$ t$ {: e
& B; Y! G) c8 N& Y/***********事件触发的函数**********/, ]7 v# @1 ^  s$ [. J( H

( k2 y) v/ }6 D$ X
8 c2 T7 d5 _: g$ ^4 f/ j
/ G: |/ X; r( D  ?7 w
( ^4 A2 R5 s3 v! ~" A5 |
9 k0 ~4 }+ B5 j# N) f$ g
# [2 f7 E8 U4 g  y2 T9 q" K! P  ^! ~; H- m. O. r

1 I+ V5 y2 A3 T/ F& r* l
! B. J" O, X+ @function  callfunc (aText: string): string;   //以下为 aText参数的值+ P. y6 t% B) y, I+ k
( y5 v% e$ c& h' ]- G- O
getsysteminfo                    获得系统信息" w+ J5 I7 r8 \. d  |$ X9 G" I1 B
getname                          获得名字! i6 P8 W9 ?" t
getsendername                    获得消息发送者名字. x' }8 c" l3 k, K: w
getage                           获得年龄9 G" y1 P2 q! a. |
getsenderage                     获得消息发送者年龄8 o; v% W7 ~; \# S
get***                           获得性别
  T5 O- [' n' Z) H+ x' a$ ?% V8 tgetsender***                     获得消息发送者性别1 G! J3 j& ?" ?4 k
getid                            获得ID
8 _6 ^( s4 u0 \2 |3 ngetsenderid                      获得消息发送者ID6 w" }8 ~. V; O3 l
getserverid                      获得服务器ID0 ~+ z# r0 a. y3 F% y
getsenderserverid                获得消息发送者服务器ID
& W8 I/ Q% k" ^3 X+ a1 D6 x$ y; Ifindobjectbyname                 用名字查找物件
4 h7 F& l- l$ X6 Agetposition                      获得位置
7 Q/ t- D$ h/ r& Xgetsenderposition                获得消息发送者位置
1 j2 D; j; J+ e1 c: j$ o2 ugetnearxy                        获得亲近的XY7 z9 v  g: s& c3 [5 l$ f$ \! F
getmapname                       获得地图名字  R9 A" T" L5 Q5 E
getsendermapname                 获得消息发送者地图名字
0 ]1 R% a2 g  m3 o# tgetmoveablexy                    获得移动能的XY
; W0 _9 M# p8 K5 V4 Y, tgetrace                          获得种族) R* H+ D* F" F# ~5 }
getsenderrace                    获得消息发送者种族
! W1 Y7 ?: r* d; b7 E0 r
5 f2 }* @4 a* d# h1 \8 |: a0 ]getmaxlife                       获得最大的生命值
: [$ k8 {' b- ~1 a, g" igetsendermaxlife                 获得消息发送者最大的生命值
8 o, G7 U* U: E- @# @getmaxinpower                    获得最大的内功值0 n% y& i+ R# _' k# z9 H; u
getsendermaxinpower              获得消息发送者最大的内功值; `1 E1 w' q  P5 L4 T* e
getmaxoutpower                   获得最大的外功值
- R2 P' r6 k- @getsendermaxoutpower             获得消息发送者最大的外功值
3 a: L# w" }# }+ H. xgetmaxmagic                      获得最大的武功值
9 V2 N/ |8 ^0 Y3 F7 Q+ L: g% r6 z$ V1 Vgetsendermaxmagic                获得消息发送者最大的武功值
7 K  O1 }7 l4 z& v, ~getlife                          获得生命值! F# \% @  q& `- P4 S) {
getsenderlife                    获得消息发送者生命值; Y' V* O) I6 r
+ C8 G3 s3 h8 q+ x0 [; o
getinpower                       获得内功值8 M! z% I& [) N4 Q
getsenderinpower

2 b7 z* e1 @* E7 q  G2 S- o- Z
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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