游客您好
  • 点击联系客服

    在线时间: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语言。5 N, x9 p0 O5 r! t8 m; \5 w  m

! m! f; [3 g/ \; m千年有三个常用的数据类型,String 字符串型,Integer 整型,Boolean 布尔型。$ |% ~  ?$ Z3 X1 t  j& \

' a" b% B* T: X6 m; w: D一个函数的基本结构是这样的:
! w2 A0 \/ l# C! ^: j' x( }; t
% Q3 [, {& u7 S8 F) ]0 Kprocedure OnCreate (aStr : String);
; L& b% g+ b- z5 qvar! Q- A- |( q( M$ Z7 s' a, a. u- A) ^
   定义变量- e. d* F9 r, e' B& s) D
begin
; d  V: p% u  J9 x. W% f9 C   语句
# s+ n4 r( b% Z: j- l, xend;
8 ?7 |, d9 u! \6 {$ P' b7 N, K8 q, [
在每个脚本的前面都会看到一堆函数,这些是千年的库函数,可以直接拿来使用的。例如:callfunc (aText: string) ,可以返回一些信息,具体返回什么由括号里面的 aText参数决定,这些参数在下面会给出。Random (aScope: integer),可以产生 aScope范围内的随机整数。* @; V, p( u  m! W6 H3 l: V9 k

# D! w, j) v9 D# E( P8 k! Y, ^  F千年中有两个非常重要的函数,一个是 print,另外一个是 callfunc,用法和参数比较复杂。
: n  x& u% x, H/ i- w
7 g- h. q- w# z& x. i0 y  x% v/***********事件触发的函数**********/
+ d6 j+ F/ n$ n
' n6 k( e3 @/ B: I7 g: l* k//当有人*近时: m" g, ~/ O( g$ A) S+ y; M
procedure OnApproach (aStr : String);
7 S2 E- {5 S8 M6 Z7 ^" h& Y% _, |. L; L, Y; ]: Z; M
//当有人离开时
, b; g! ^7 [0 ?5 G2 M# j9 S1 ?& r, Vprocedure OnAway (aStr : String);
/ N" ^2 u- ]# X" q/ Q1 t8 Y# v1 f* J. K- t1 F& S) H$ S
//当受到掌风攻击时' V  H; P& n( h; U7 O
procedure OnBow (aStr : String);
* f+ T0 q  {& f" ]3 P$ S6 e. F2 v- n) D9 ^4 _* n; m, f) }" ]
//当状态改变时$ N& ]" `9 {. J" V" C( K  `0 f
procedure OnChangeState (aStr : String);
; I* {, M1 z- ?0 K6 O/ s7 G% j# i! s/ X+ X8 l( J& m1 K: }
//当初始创建时
" Z" H1 a/ K* q# Z/ q5 G3 Cprocedure OnCreate (aStr : String);
# `3 c* e  j& Y5 G- r& H  G
$ o+ d9 J4 b& ?9 ^//当被双击时
4 {, Y# O7 K. ?- Z7 x) p* ]0 sprocedure OnDblClick(aStr : String);. |# S" {+ A2 @! f
1 o6 N% D+ k' h2 u& h
//当死亡前
# K/ {. T8 k' kprocedure OnDieBefore (aStr : String);9 }* n) @. ^2 x% [+ h* c( P' T
% ]7 F7 N* P- F3 J% {; N+ v, y9 O
//当死亡后
! d. d4 D" [8 l/ kprocedure OnDie (aStr : String);
8 z, f  X/ z: n! |3 z' Q& t2 P
$ {' g. u7 `7 i3 Z( Z3 d//当被拖放物品时, X% [7 R( x/ k
procedure OnDropItem (aStr : String);
0 O9 `/ v' d. ~+ ]0 I3 n7 C2 L" J3 Z8 q! |3 e
//当得到命令消息时
5 h* v3 U/ q3 k3 P, u1 wprocedure OnGetResult (aStr : String);! T# @. n5 k, k

; p4 T$ P& {$ Q# j& Q! v//当得到改变步长时3 w" l/ L/ [9 h- M, @% d
procedure OnGetChangeStep (aStr : String);* d, [* v' C( d; u+ I- q: X

1 v# I6 B1 D! y  j//当受到攻击时" m- ^3 K; r+ b
procedure OnHit (aStr : String);$ L  |/ U  B% _( f
; w( L& G( m8 W  d" `: a$ }
//当被左鼠标键单击时
6 ^) z* N" S" i* i8 V/ B/ tprocedure OnLeftClick (aStr : String);) L) {0 L6 t! Q$ y# M7 j" R. \
/ H# A( f2 S9 L, L8 E8 k
//
/ x0 ^! z0 w: T; T3 Q! R% eprocedure OnRegen (aStr : String);6 Y& a: H: b/ u: w$ H( p
2 F& E3 j* H+ @7 K( \! F
//
# j; v# B. V3 |# Fprocedure OnTimer (aStr : String);
' Y' c! o7 ]: c% m9 ]5 }
6 ^+ X/ Z$ `, g//当物件发生翻转打开时,一般是用于门
6 `7 q$ A$ w1 r: G. Y- J9 Lprocedure OnTurnOn (aStr : String);
! X8 f) f( Y4 L3 o- l) Q' {6 J: \9 D5 Z% J/ M$ |' x7 m( i
//当物件发生翻转关闭时,一般是用于门4 `5 o4 }0 E0 k& Z" T8 ]
procedure OnTurnOff (aStr : String);
) o- Z& f& ?* a. Z0 k! R
$ U" V2 w1 Q. u% }* h//当用户开始游戏时3 s& Q+ _& v# q0 v' T8 W
procedure OnUserStart (aStr : String);5 S8 B" e0 G/ Q; Z" ^
! ?& T/ {1 G% o; K! n# d
//当用户结束游戏时9 u) Z. R+ U0 i
procedure OnUserEnd (aStr : String);6 v, J- P" ^7 ?7 r0 x* a
. W  P, [# |( l( a8 ^7 l7 b
//当移动时
- t& Z* k) h& b9 {: X2 t' Z  Efunction OnMove (aStr : String) : String;! D9 v+ }* d' r9 B/ e
& A* a( V# l9 `4 f" e5 Z
//) P3 k& f1 [( \- ~; Y! B, I
function OnDanger (aStr : String) : String;- p7 m: h# u2 }! x( y+ s) ]
7 F: L1 m% l' l  p" P7 P+ t7 L4 y# h
//产生一个随机数(系统函数)
# p/ C, u0 w5 y+ K+ L) ~function  Random (aScope: integer): integer;
! Q* i; R- d& [  m- {+ x4 O: _, \2 `- z! c# X7 i* u
//返回指定参数的消息(系统函数)
) A5 a# w6 \4 j3 g7 D2 r) H, ?function  callfunc (aText: string): string;
) D! c* n; [# z2 a# c
2 a$ V) b% w$ F" d//执行一条命令,可以是说话、传送、获得玩家的物品等(系统函数)3 k/ ?5 K& `6 k+ @) O" d; Z
procedure print (aText: string);
3 [+ w. i- k5 r
% v' S8 e# v- ~( ~0 ?. b6 N具体参数(略),整理中...........; K! o5 n. t4 g! e

- x0 p/ ^7 V8 N: Z0 t9 a//转换字符串为整数(系统函数)- _+ r5 a7 U  R$ S) ^( n- {$ Q
function  StrToInt (astr: string): integer;$ w" W4 ^8 [* I) F( S: W

. Y& B. m* l/ T1 v6 s. d2 x) o8 Y//转换整数为字符串(系统函数)
% r/ F5 Q; q- B& {function  IntToStr (aInt: integer): string;8 D- \9 Q( P# f8 n: l

2 Z8 K: U( t! x+ O# e) ]/***********事件触发的函数**********/' c- r; n$ u2 H4 K+ p, m
0 R% W4 d' H, L5 G; v( U

- v5 C- _' }+ q7 @' ^6 |3 N7 ]5 o8 X+ \* {9 o5 u" p: ~

2 x$ G: N( M0 {0 ]2 ~0 H( i! _) t+ D$ M: S, L: V
2 j( s( ~; H8 e0 P3 w) U3 a

: S! u9 y) _( U9 z5 a9 Y) z3 Y, ^
! Q+ V$ ?' v" x2 _2 T% \+ E% b8 r1 _9 A, f9 ?) f
function  callfunc (aText: string): string;   //以下为 aText参数的值
! q  @6 r+ k3 b
: v1 ~, {8 H$ @# mgetsysteminfo                    获得系统信息6 }2 q/ s( ^% K. z/ V1 s
getname                          获得名字8 h9 L, }4 I/ s2 d# K, K
getsendername                    获得消息发送者名字( q- H/ b2 F" I' k
getage                           获得年龄) b; ^! y3 w/ [1 \  O
getsenderage                     获得消息发送者年龄, a6 y, k/ g% t( Y0 V
get***                           获得性别# R$ |2 @% a" |+ v; j) Z
getsender***                     获得消息发送者性别
4 D" K" d/ L3 {6 w6 D3 N$ u" ygetid                            获得ID5 G9 l3 v  \7 U; k' @
getsenderid                      获得消息发送者ID/ a0 B9 l( Q  i8 H" ^' G% T- `0 ?
getserverid                      获得服务器ID
" q7 w6 _+ E4 U1 Q. rgetsenderserverid                获得消息发送者服务器ID
3 s( o1 n# O: h" B& _findobjectbyname                 用名字查找物件
( r) L# c5 r( L% @  P6 n9 \& w  Z$ pgetposition                      获得位置
% T/ V0 k0 J2 W: Cgetsenderposition                获得消息发送者位置
  I" O: ^% J+ ?; P- }5 q* Lgetnearxy                        获得亲近的XY" U  |3 \$ y1 ^
getmapname                       获得地图名字  |- [9 c$ P6 O" j" l5 E9 }
getsendermapname                 获得消息发送者地图名字
' o% J2 D9 Z3 d7 R6 lgetmoveablexy                    获得移动能的XY- ]6 R  p& Y$ {% U- m* Q5 X8 t' Y
getrace                          获得种族% V6 k' a9 M, A1 s
getsenderrace                    获得消息发送者种族  B5 T) v, B( z

+ M* h) v  j: @+ U% Q: a! cgetmaxlife                       获得最大的生命值
3 V% W/ \* n: Mgetsendermaxlife                 获得消息发送者最大的生命值
& s% h; |: X8 a0 Jgetmaxinpower                    获得最大的内功值+ R+ w- H! V* b
getsendermaxinpower              获得消息发送者最大的内功值4 r! N. c. {3 N/ n
getmaxoutpower                   获得最大的外功值* n, Z0 \- D; g) M" F9 E' i; `5 m
getsendermaxoutpower             获得消息发送者最大的外功值! R# o. m1 U. j
getmaxmagic                      获得最大的武功值
5 q2 Y* i2 w, C  S$ A0 D3 xgetsendermaxmagic                获得消息发送者最大的武功值
4 p8 |$ X2 `; s: I+ Zgetlife                          获得生命值
; R6 w, j1 L  u/ e' x9 g1 ggetsenderlife                    获得消息发送者生命值  D2 Q! V/ {9 X* S; Z& F* v
# h1 p4 u* d  s! t0 R1 h
getinpower                       获得内功值
0 L; X( b$ ?4 cgetsenderinpower
& h2 \5 |* B+ B$ L! B
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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