游客您好
  • 点击联系客服

    在线时间: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语言。  P  @5 e! A" j1 D' M
# i/ t6 [* t" B
千年有三个常用的数据类型,String 字符串型,Integer 整型,Boolean 布尔型。
  O# @5 v1 p7 {: V/ T* P& E/ A
* C) }8 F" `( v% y! Z1 L一个函数的基本结构是这样的:) |4 d7 [" R" a9 j1 y; M
3 a# S" s" v9 z# q& V4 |& W1 Z/ j
procedure OnCreate (aStr : String);- R/ [; k, t7 K/ e1 e! a1 t
var* y' x& |' u/ i/ a: R7 H( S: L
   定义变量6 n4 C9 F  B7 m  N
begin
; q: ~8 @2 R  y) Y* e  r' F/ l   语句
( `  c: G) j- Dend;
7 P8 }) G  S7 d6 D! V/ z6 U- o& _0 O! |' O9 V. X0 _6 ^
在每个脚本的前面都会看到一堆函数,这些是千年的库函数,可以直接拿来使用的。例如:callfunc (aText: string) ,可以返回一些信息,具体返回什么由括号里面的 aText参数决定,这些参数在下面会给出。Random (aScope: integer),可以产生 aScope范围内的随机整数。  P1 M* x! Q, x- a$ U
, |0 u5 q2 }* i0 P0 M' X: z/ q
千年中有两个非常重要的函数,一个是 print,另外一个是 callfunc,用法和参数比较复杂。4 f" A2 r8 Q9 d( H
7 s; }/ {! h/ O: u6 q+ @) b% @' P' {( P
/***********事件触发的函数**********// g' q* N; |, p; }) n1 O0 o

! g6 ^* u. p/ {//当有人*近时
% ^6 _/ W6 |* E; A5 Fprocedure OnApproach (aStr : String);
+ ?7 r" H4 k% n
1 R$ `" q* K' V//当有人离开时
! T* U- l+ r/ Q- \" t( S$ aprocedure OnAway (aStr : String);; H, _2 D4 k/ m  _0 v/ a, ~
0 o+ R, W8 {' Z
//当受到掌风攻击时
. D1 H+ `- a. X( w  aprocedure OnBow (aStr : String);
( f$ Z8 x, @3 u
' C0 }; V# s! [2 O, d1 S8 K+ D6 ~//当状态改变时
, n- o! W$ U  u- t/ C0 E9 G" jprocedure OnChangeState (aStr : String);' q6 P' `4 J! u+ k7 _3 ^8 z7 H
, C* ?: W' T5 @/ y% \4 H
//当初始创建时# [+ i- J! W  o+ r- q1 j0 D
procedure OnCreate (aStr : String);: r7 f9 D9 }" P% O3 p

8 L2 ]: f' E7 M4 ?" j% Y+ ^5 S//当被双击时/ G, T& k" U  y
procedure OnDblClick(aStr : String);1 C8 N: R9 _1 Q) }1 ?* G8 E
. }. f/ L" t# W5 X5 j. {, C
//当死亡前
; f' |" w5 q$ i2 R4 ~' z  @/ Yprocedure OnDieBefore (aStr : String);
" q* ~1 j( J9 Z
- y7 g5 ^$ ?0 U9 M& U9 W//当死亡后; c. b0 ]4 Q6 @5 V$ A% U/ f
procedure OnDie (aStr : String);
$ a) x4 C7 u7 H* C
7 f0 k8 p7 r) p$ M//当被拖放物品时+ l$ P. r6 h$ w; F6 r
procedure OnDropItem (aStr : String);' I0 d# a/ C4 _+ o

6 `; p. N' M- h0 X! I//当得到命令消息时
) G' x. M( s& `9 {procedure OnGetResult (aStr : String);( g" y$ k! R9 l  t

) D, G& K5 j& p+ N: @$ c0 v! ?, [//当得到改变步长时
0 R# K. }+ [0 w0 |: O& @procedure OnGetChangeStep (aStr : String);9 I, [/ u* Y5 q9 A' j8 |5 X
( g+ O4 k" W" P/ v) ?; U; v
//当受到攻击时# j7 v: i1 \( i5 n' V  n8 P
procedure OnHit (aStr : String);
2 {& }/ u; @" I6 V3 \1 n) p; L. k( y( D% l3 v/ I( T" t# z
//当被左鼠标键单击时2 j' T% p) m: o9 |5 N
procedure OnLeftClick (aStr : String);2 A$ B/ L# P: y: ^6 L
8 I5 K- J" I) I0 \5 I* _
//! v6 I$ ^- V7 R/ E1 F
procedure OnRegen (aStr : String);
# Z+ m, s+ x, @5 [7 A) ~: r
9 X" v; W8 O- k) a! q. [) f//
* i5 H7 c  T% T& \: rprocedure OnTimer (aStr : String);
7 ?" w' _# S4 J5 E# t. x4 Z3 y0 C4 W5 y2 C& o2 q
//当物件发生翻转打开时,一般是用于门: V+ L( v$ `$ F5 [; I. ]) f  t
procedure OnTurnOn (aStr : String);4 s/ Q) U" G+ V' j

* i2 ]& @5 M/ }2 |! {! P//当物件发生翻转关闭时,一般是用于门2 g- w6 J# ~( ~
procedure OnTurnOff (aStr : String);6 N3 H' p, o- r4 Y5 e
6 e- y0 ~; s/ y
//当用户开始游戏时- K! f1 Q7 @( W- K6 [
procedure OnUserStart (aStr : String);6 A1 a) I+ ]" w

2 p$ @  I, i9 B5 w- F//当用户结束游戏时
6 p' ^/ b7 X: j$ c1 dprocedure OnUserEnd (aStr : String);+ P* I; `/ Q8 X
& b. ^8 s( o% R& P; m" \0 D$ G5 |
//当移动时! Z/ A  k, h9 s
function OnMove (aStr : String) : String;8 M3 R: c: L, E! Z7 R
$ k( u4 Z; j7 x
//
* f; }, J2 p4 S+ L$ i4 [% U6 Rfunction OnDanger (aStr : String) : String;: f) B& u) v. a$ }7 G/ ~7 O# R$ n, P& W
; m! k2 h2 _, Q
//产生一个随机数(系统函数)
) f2 L2 `0 y4 S$ V4 g9 b. T# r/ D. ]) Afunction  Random (aScope: integer): integer;6 G* Q. G- p: {  y* {' A

% i, o. A4 Q* \1 w//返回指定参数的消息(系统函数)
, g1 V, {/ S" i/ Kfunction  callfunc (aText: string): string;) K/ _  R  k) w! K
/ U% c; N; s& Y+ n
//执行一条命令,可以是说话、传送、获得玩家的物品等(系统函数)
  Y# Z: ]4 D1 f2 n, r) Rprocedure print (aText: string);. Z5 y( j3 u) O/ U4 X. @

" ?; E: i" g# c+ U具体参数(略),整理中...........
9 q/ y7 H4 Z3 s5 W
+ R5 d6 @2 Y( S9 T# i% \7 H/ P//转换字符串为整数(系统函数)
; a' y8 U! D+ ~! Y7 ~function  StrToInt (astr: string): integer;0 I/ v3 L2 X3 ]( h

6 p' ]. w' C* K: N5 M3 U7 A  {//转换整数为字符串(系统函数)
1 G& q9 [9 i# ifunction  IntToStr (aInt: integer): string;
& }2 @0 u! y4 I  U' s7 L& x) x7 S& C0 h- Q& {# M
/***********事件触发的函数**********/
; ^8 M6 p3 b: S  ~1 l7 d+ v7 I5 X2 Q. n( L+ v+ h- a
2 _# ?% Y' C; m$ F* p7 ?

" J$ r) y9 A$ o' ?+ Y7 _
. `' S& G5 X3 w0 j
/ `- k3 n1 e7 g# I5 W; f
3 K* g; ]' q' q
6 V7 y: y# ?0 a8 M
. |' b. O0 B8 @! H1 v/ S
) e4 H& @! m* x4 P$ \* u, K2 qfunction  callfunc (aText: string): string;   //以下为 aText参数的值
% T' t7 W8 X& D* R
2 f" d0 k3 G8 w- ugetsysteminfo                    获得系统信息& {# }+ \1 |% ]8 h9 D
getname                          获得名字
' ^! v6 x7 m5 j7 r& |! B4 Ngetsendername                    获得消息发送者名字
2 E4 L) j5 S( n# H  Pgetage                           获得年龄& o3 y5 U2 v$ V, G
getsenderage                     获得消息发送者年龄$ S* D  Z/ C- h4 H2 m
get***                           获得性别9 K( r( o& L8 K# `1 r5 [' S
getsender***                     获得消息发送者性别8 e1 X- g1 H. h0 @. W- F4 z
getid                            获得ID. ~5 X* R8 U- ]6 O/ t
getsenderid                      获得消息发送者ID. N' N/ @7 N2 o9 W0 t2 m: g
getserverid                      获得服务器ID, N) D) v1 p8 a' s  t* K
getsenderserverid                获得消息发送者服务器ID
3 C6 N7 `% H; ~: N8 W$ ~findobjectbyname                 用名字查找物件
0 `) m0 e/ C& A7 E# Sgetposition                      获得位置
$ [& s0 w% j& }- Sgetsenderposition                获得消息发送者位置
7 J- L2 J8 B( M* w5 w5 Igetnearxy                        获得亲近的XY3 A6 N4 e( L7 v* U( l0 J8 H  C
getmapname                       获得地图名字5 K5 h( ]0 F: @2 ~% g( z3 S* E' X
getsendermapname                 获得消息发送者地图名字
# R% C+ e9 |. Y& F4 [9 |* f$ xgetmoveablexy                    获得移动能的XY
) k; ~) y# N- ]7 Y) n1 Mgetrace                          获得种族  Q, ~% i: S9 Q! J  E
getsenderrace                    获得消息发送者种族
4 Y/ ^' U2 G- F% p: W
: }* y. f% t7 |% s8 fgetmaxlife                       获得最大的生命值
1 g9 I+ d0 z8 y- `: F, \& ogetsendermaxlife                 获得消息发送者最大的生命值' t$ w1 K+ d' l% V0 |$ `, e- b: f+ F: Q3 {
getmaxinpower                    获得最大的内功值
7 K) W0 g0 W  Z* ~9 Y* w5 T% Vgetsendermaxinpower              获得消息发送者最大的内功值, O5 B* C  Q. P
getmaxoutpower                   获得最大的外功值( L# D: c. |% |' P- E
getsendermaxoutpower             获得消息发送者最大的外功值. B) H/ @. R1 l9 b5 S
getmaxmagic                      获得最大的武功值3 q- ^, l- H4 K, @! a; \
getsendermaxmagic                获得消息发送者最大的武功值" q& S$ Y) E* O$ Z% p
getlife                          获得生命值. T) O) Z* p$ b8 i: n# ~- g
getsenderlife                    获得消息发送者生命值
6 j- o+ ?" Q- ^8 A- B: W& L: n# p- P3 K9 E$ m0 J
getinpower                       获得内功值
2 W7 \8 u- D, @5 M8 I! Fgetsenderinpower
6 _4 @$ W7 k+ E4 D3 A
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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