任务策划:
/ P6 v5 @6 \1 @ o" P C; q" C+ o出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!
) G- i q" R9 a* D2 ^7 l来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)
4 B, r3 `# v$ N5 n& g( C/ C1 V收集这些材料交给屠夫,他会奖励你东西! ?' s7 k7 k3 d/ N
这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。
/ q6 u$ ?5 m4 F( u" w9 w, U
; \! _, @2 \# I* \! Z目的:$ W) O6 x" x3 g" `8 }/ b# x
体会最基本的活动都是怎么设计的 ?- }7 L/ H+ ^$ q( ~
; n% s- q$ Z2 e! v% W$ U8 p知识点:: @* u2 A# M, ~6 n+ ]) I
1、检测包裹里的物品
; ^9 E: F- r& O* s" u' M9 g' ?2、检测包裹空间
I9 K& N" v. a# r* r+ E3、给与物品3 r4 ?# }6 e) _; i* n
4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。
3 |) `( A6 G* t# v" G" v' _! B
2 g5 Z) N4 @6 v C. o% p. iunit 屠夫;1 j+ u- w; ]# r3 d1 a
: ]" y( D6 K% Y! T: w8 o//下面的是通用的调用程序内建的函数。每个脚本都有的。
: A) l7 J1 d9 M% v2 i3 V& a9 P( K% V+ b8 D" j
inte**ce
; |2 O1 P- N8 |/ U% u% f: J. z0 W$ y |7 y, E& U! y
function GetToken (aStr, aToken, aSep : String) : String;( P0 ~% T4 K. H& \2 p
function CompareStr (aStr1, aStr2 : String) : Boolean;& s8 Q) S% S! ?3 m
function callfunc (aText: string): string;
7 o5 H6 B n5 f0 R6 uprocedure print (aText: string);
- g1 t0 \. p9 R' J/ L7 rfunction Random (aScope: integer): integer;
/ Z# M# r5 a9 h& K c( U$ ufunction Length (aText: string): integer;
0 S$ p& k9 w( ~+ ]* Sprocedure Inc (aInt: integer);
( [! A ~4 i8 uprocedure Dec (aInt: integer);
9 @9 f- i. ~' O0 rfunction StrToInt (astr: string): integer;
, O5 R0 b4 X! sfunction IntToStr (aInt: integer): string;
* E- P- P1 \9 d% C X! P4 pprocedure exit;
* T8 _$ D/ ~/ D% A X+ ] [* x% q9 x% F5 X
//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么
0 Y3 [+ v; G) N2 \& Q7 s
9 J! E4 C% G) u7 ]: B+ I0 [//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou
- l$ M; ]; `/ ?3 A6 M, f
$ B$ P# v: Z) t6 M//第二句的意思是当左键单击的时候响应,% [! i+ P* s7 B& z3 q+ u
" b4 O9 C6 o) r
procedure OnGetResult (aStr : String);
' K3 L; ~# T: v+ Z; h+ Pprocedure OnLeftClick (aStr : String);
! H, ?: O. O# l* L4 P+ k9 @9 U8 O0 ^1 b' _7 q$ t1 q
//以上是脚本的头部,下面是脚本的主体部分, x$ T2 y! |' e2 s+ L
' k1 v: x# T) A6 I! G& `+ j) L
implementation
7 C' T/ B6 a# v1 O! k- a9 B4 V1 J/ V3 f0 f( ^+ H
//当左键单击时5 K6 M2 p: s: l
" u( ^# K# M9 p1 T
procedure OnLeftClick (aStr : String);. W1 l' {' O" L! E6 j
0 j; g. E" _' M//声明变量的类型! l9 @2 i4 {; M9 y+ ~) q* O
var' [& |6 K% w H" ~
2 I. H% F% e: |4 F//Str变量为字符串型# Q6 \' S8 s* P( H! X
Str : String;- J& ~& ^3 A2 F
; ]: Q8 k+ x# J: P1 S% W
//Race变量为整型
8 C* T3 x/ P0 H# r& U' d6 @$ G Race : Integer;) k F" n! B' b4 d; `* m7 _0 w
begin
" Y: p& p) M- n: o& }4 f2 `8 z
: W2 Z L4 P. B$ T4 A//获取点击者的种族
+ a, t; T! S9 n& a Str := callfunc ('getsenderrace');
w- t- p6 O# e, E& g- K
* Y5 i+ t6 U0 m0 k0 ?. e7 r9 A//将获取的值由字符串型转换成整型; h0 U( B9 v$ D& l7 `0 ]
Race := StrToInt (Str);: B: v/ T0 X# `+ X" Q3 r0 H
6 L# }# M6 v+ W4 c//如果种族为1,这里种族为1代表是玩家& H% C- Y2 U: J: }" }5 o
if Race = 1 then begin
( s% f* {$ }. K
! M3 K6 M' [' K//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种( ~; w+ K) u- M2 I4 M# ~
Str := 'showwindow .\help\屠夫.txt 1';1 A0 L! r# g" |
print (Str);/ J5 I! s8 E1 c
5 {1 H( b- Q, L# j4 W! r9 h$ m i//小判断结束
2 h% {! \( \, g exit; 1 d G: `% R2 W$ P4 ?" _) }
end;0 `% Q: h- Z- J
7 Y5 F7 u" M* c! t. C0 w
//一个语句段结束6 X) t* ]$ H0 @( X. P/ q# H( _' d
end;
9 }0 `! S' f; H6 R4 U9 p0 _4 x* \9 \0 |8 l4 D4 f( h
//另一个语句段开始
( z5 T8 I6 D$ j( d1 [6 x5 ]0 R
\. ~( @: J- f( i, V- S7 C0 h5 d//当从Help文件里反馈回命令参数时,做出响应
, Z7 `8 m- Z* L. S0 K7 ^4 f+ }, E. M, R, n# K
procedure OnGetResult (aStr : String);9 c3 n; k/ ^+ j; G9 a; {( R8 l
var
$ H3 J0 a, K+ R& o) t% u0 b Str, Name : String;
9 E, ^ {" n0 K6 ^begin
0 S1 U g$ }1 z7 m- M+ I3 Y
3 D4 a) G/ {7 O( F% s! u5 v//当反馈参数为close的时候就关闭对话框- q# p; `. B! v
if aStr = 'close' then begin
: K7 V+ \6 y4 U! K7 h! W% i5 E exit;
1 R$ c9 s3 c1 w- L1 c/ `2 R+ m end;# b4 W1 z4 i( L4 G- e$ V
, U, k5 ~/ @0 C0 y, I//当玩家选择niujiao 的命令时
& H, }8 e9 Y# w0 ~5 ]* N1 C, A0 u* ?: {; K2 ?- }0 _
if aStr = 'niujiao' then begin" S, D' L& G9 m, T- g
' _# S- L$ }- u. q( L' }6 e( y# p0 N) q//检测背包里是否有牛角! ]0 R) k- s/ T9 W' ?" q
Str := callfunc ('getsenderitemexistence 牛角:1');5 t5 v3 ]' ]7 H7 a3 v, y
& W+ t% }$ D! S- b) V/ ?
//如果反馈信息为假,也就是没有
7 W1 K" a. M2 z0 e! w0 Z if Str = 'false' then begin, `9 O4 o8 ?4 U, u
2 F+ U, m" ^4 b( \9 V+ R; {//屠夫说话
( b9 ?5 s+ g* h5 s0 R Str := 'say 快弄牛角再说';
1 y9 o. I* I' u; h' }7 W/ Z$ b print (Str);# M* h( F4 Y5 v
. R% M8 K$ \; v! w- B: o, f
//检测结束
/ m; p R* S# a6 f* d; \$ {1 U7 Y3 K4 E* g exit;7 H V* N$ S0 I8 F& Q1 l5 K
end;
7 e" h! r5 _3 \/ A! u; S5 D2 Z( X0 [2 Z: I. o, C, m% C
//如果有的话就继续执行下面的' G$ n2 }/ l0 E1 B
' v9 Z; B: I$ D, \ if Str = 'true' then begin
2 `5 |& j: l5 ]1 Y( O/ M
2 l5 }; R/ {. c) l//检测背包是否还有空位置% a* ?" d& L f; V9 S K
Str := callfunc ('checkenoughspace');+ W% J) F% [0 i! }4 t
7 n+ [+ A) w1 k1 {5 M5 J1 d9 u* T
//如果返回值为假,也就是没有5 i7 Y1 k" x. Q$ b. m6 o( P
if Str = 'false' then begin, T1 \ h2 }5 ^
) f- V- q6 {7 N5 j//那么就提示物品兰已满3 d8 h- a& n6 T6 ]' G3 _( o
print ('say 物品栏已满');
6 n. r: ]0 `# ^; A) M! g. U4 g( O9 H9 R/ _, }8 Y: }
//检测结束4 X# w0 f0 n% P( i4 t. g
exit;
5 F; G# q/ ?+ s6 w, R0 g end;
6 [5 d) z @; T1 F
5 R& C* d& E* B" y//如果背包有空位置,那么继续
3 _& ]! Z3 f- f/ R& `/ C6 a6 B% g$ g
//没收牛角
7 p' X5 j( G9 O, l/ g' b4 F6 C @! l/ S1 Q! x( D
Str := 'getsenderitem 牛角:1';6 K7 ~: y. E# w
print (Str);
9 E$ a# e0 u3 t0 b3 R
# w6 y: p! N4 b8 |' W# |//给牛俊弓服5 L! _+ h+ i. w% A/ G+ B: g6 A
Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';
) v$ [* C" H( e. u+ v print (Str);3 j1 g* i2 A4 y4 S6 A* ^0 i& p' ?
Str := 'say 收好了..俺最喜欢的衣服~';
0 z: B$ A# f2 ?8 _+ p print (Str);5 s* |% p, y, B8 ^6 E" O
exit;# d2 }' y5 j# C+ B6 x/ h2 i
end;- ~0 [ K' a3 s/ ]
/ }9 u' d, X, Z" k
//判断结束语句5 N5 R8 d+ C% P' x! R* k
end;, u" m$ Y- J, o
exit;6 F6 x/ c% K/ M& H0 H* o4 J
$ c% U4 K! R2 W$ Iend;- M% L5 ~8 q+ r& c- |
2 Z- d3 Q5 a+ p" q
end." H) g3 m* Q8 F! n, g* }
, J: N+ [+ y3 c3 j, T, q/ h3 [1 e
end; ! I% r9 _/ s! ~
|