任务策划:
" Q2 Z2 f0 k( }0 _6 v出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!: l2 m; ~0 S3 {% P8 a; E" h8 [
来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)3 n- J4 E# H7 P0 g6 O/ a6 i
收集这些材料交给屠夫,他会奖励你东西! ]$ u c5 [) [% s* u& X
这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。
; u9 X. Q h& L/ ^: l5 \4 [+ B' O* q+ |
目的:0 c: f7 q' e, j3 F% S) ^2 R9 o: s
体会最基本的活动都是怎么设计的
) U3 p+ T1 X- j8 H4 k4 C" {# L/ t0 ^' ?4 C' p5 v1 u4 Z7 N3 E- C
知识点:
5 W2 Z6 j8 E# K+ F3 [6 ?( y" @1、检测包裹里的物品# K5 c2 j0 ?% X" V0 D4 D
2、检测包裹空间, H& s+ f4 R8 V' @0 t, e, g
3、给与物品1 p8 l( L$ x1 c, d I2 C1 u: i
4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。 c+ K0 ?# G9 V
0 r/ M) Z- O$ [8 [7 z% ^) T1 Uunit 屠夫;! g' E' G, q9 O1 F- j5 b+ j
% G* J4 A1 q6 f( f( `: {/ G
//下面的是通用的调用程序内建的函数。每个脚本都有的。
+ g+ ]" E G3 f6 C5 H( ~5 W3 R/ @0 O5 o7 _1 m
inte**ce
) \& a$ V; y) d# q
, R5 Z o% m/ p! a8 H' i4 c' Efunction GetToken (aStr, aToken, aSep : String) : String;
8 I; U' w; S$ j; o4 `: T/ u0 ufunction CompareStr (aStr1, aStr2 : String) : Boolean;
: H6 W4 m9 {6 l9 Y' E- N9 H; p. wfunction callfunc (aText: string): string;4 k2 f, x% a& }9 I: D8 p) Y
procedure print (aText: string);0 U, g s; z9 M) r, `# Q
function Random (aScope: integer): integer;/ `: H7 ]; Y8 y. E5 \
function Length (aText: string): integer;
O' b1 f* e4 b3 z! o; @; rprocedure Inc (aInt: integer);
2 @# _2 e2 _* j! v9 Aprocedure Dec (aInt: integer);9 @1 D, m. K! f9 R) N% o) x
function StrToInt (astr: string): integer;
% _6 H2 M% I- G5 z2 L& gfunction IntToStr (aInt: integer): string;
0 r9 D6 N* \- ]5 I& j, sprocedure exit;; T0 m! a3 [& c5 @6 S: L
/ x) b: n; f# b. _//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么
3 Y* i4 O& {3 P: B8 P
3 o5 \7 G& I+ ^//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou1 V6 Q4 }. _* k" t& c% y
1 f, ~$ c# F$ t# H: D0 `8 e//第二句的意思是当左键单击的时候响应,( ?- ?) W" t8 N# b; G, B
8 \' o5 a0 z$ G2 `( yprocedure OnGetResult (aStr : String);/ [' o& c/ I* M) d) `2 Y* z+ x3 l( }
procedure OnLeftClick (aStr : String);
; D* ]# e. b% ~! l4 N
9 M( E* l6 j+ x% R$ k+ q c( }2 W2 Y8 u//以上是脚本的头部,下面是脚本的主体部分
1 \4 R; d6 V/ `) J; t2 W4 [
" Q+ a8 m/ D! W4 i. `9 b, Mimplementation
3 }7 ^4 E( j% q, i B! c! v1 w% S
; W8 _6 i) c% b" j- _( n//当左键单击时
7 t% _, h* T" G* c3 j4 i. q4 }* V( y/ o4 N- V/ T) U0 ^
procedure OnLeftClick (aStr : String);
% v' U/ b# L8 ~7 a# g$ { m( s! x5 W/ E, ]
//声明变量的类型
5 A. ^2 Q1 m9 ?4 `var
, p3 x1 G, K6 w" n0 V; F% B
; {$ k6 T9 M3 d o! ^//Str变量为字符串型" }" p5 c+ O. ?( Y' F
Str : String;, k8 N6 f; v: C
& A8 n' P/ u9 S. Y//Race变量为整型
]. c# `. e" k; I+ {2 X Race : Integer;
% Q6 a: ?0 y, A& d# B; e( Gbegin
* Y& e' M+ Y; n6 x( }; z, p7 ?6 v- s. {6 B& I
//获取点击者的种族2 b5 |' C. Y& F; o- u7 k4 N9 X
Str := callfunc ('getsenderrace'); l7 P/ z- O% G) d3 M7 f, e; O2 N
% ?7 K5 \+ a) M* {
//将获取的值由字符串型转换成整型
! O0 i8 Z, h* l, s. t4 s Race := StrToInt (Str);
, I1 K( j' t+ K8 d6 G
3 e. Y; I y& l: [, r$ w//如果种族为1,这里种族为1代表是玩家
& n# O+ S7 p* [# A0 h% x, b if Race = 1 then begin
! w4 A/ s% T; j6 x% z; P# K5 t! p6 G7 s) d; x2 g
//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种
& K* {! m2 S' U Z: @6 R: B1 L" | Str := 'showwindow .\help\屠夫.txt 1';
( u0 u( s8 p \% r print (Str);2 Y4 l8 T( m4 L& ?
2 e9 t8 T$ L& {$ {//小判断结束5 ?9 a$ _7 p, J1 K. m3 k5 d4 A! h
exit; # X. Q6 M+ [- B9 L% A
end;7 R7 Q. D# h9 |( C* C5 U
# F+ h6 H+ ~0 H- L% m I//一个语句段结束1 H, B. n0 T! {
end;9 R9 T( V7 ]: k' B: Z( W' i8 X5 w
/ ]/ I! v# j) o) o! [+ z# H
//另一个语句段开始
- V3 J# ~) W2 M
6 M" ^- n: F* O' m3 M2 P( W7 c5 _//当从Help文件里反馈回命令参数时,做出响应
! Q/ V; S/ r, s9 f6 n+ V, I7 s, C( l) a5 p. Y+ H
procedure OnGetResult (aStr : String);
( F8 n F4 [9 A) E# \+ i5 yvar2 M3 G; p' S9 h6 l, H
Str, Name : String;
+ L* c* Z2 y( u9 q U, tbegin8 w7 L8 n# q* b* L) t
5 r' a) l! A8 f//当反馈参数为close的时候就关闭对话框
4 q! P. N& x5 O; x! G) P if aStr = 'close' then begin
$ \; |4 W' } `, E% h exit;2 P/ x0 e% T; Q/ A& P4 \
end; q: ?/ p a! j( S7 h
& J. f$ E: {0 W( f. [' P! e//当玩家选择niujiao 的命令时" l4 ^* d' q1 k7 {7 f i
1 H' n. m& k6 Y4 Y3 ~# O8 \; F if aStr = 'niujiao' then begin& Z$ s% M5 u2 y. k+ Y, P
* Q* \/ c- q* O/ W# {$ d//检测背包里是否有牛角
$ h$ a+ h0 R, K( U7 [ Str := callfunc ('getsenderitemexistence 牛角:1');
" ~" U5 u" V& A* \! K, ?
$ N, S6 w! Y4 [$ D5 H7 t7 \//如果反馈信息为假,也就是没有
% y4 e7 g6 }! A8 L if Str = 'false' then begin
. T2 a# x* C3 N: K% }; d7 ?: ~5 X3 c( C0 x; x4 U
//屠夫说话1 b9 w, t a( p0 G5 c1 H2 \
Str := 'say 快弄牛角再说';4 G$ W+ \& R+ q, V3 h
print (Str);0 R+ n4 W$ Z/ k& s& p
9 w: P1 z* a! V: o! s' T
//检测结束, |/ R R. \9 n$ l, b
exit;
, `* X; v" J& I. I end;& O5 Q$ ~5 [' L
j& [, q$ f. A: `# X/ e' B//如果有的话就继续执行下面的7 h! y9 ^* K% z4 L/ |
$ H/ ^/ M* k$ d( o! ]+ s, s9 O if Str = 'true' then begin
/ J/ E( C( e; R# s8 |, Z
# X3 \2 P7 g) U( W//检测背包是否还有空位置9 g9 R4 d' r O6 Z7 l8 X
Str := callfunc ('checkenoughspace');
$ g& W, {% g1 j! |
- Q% z/ U+ d8 u7 T4 K1 F5 ^/ j//如果返回值为假,也就是没有& T7 U% I0 h. ~# g _" A! t5 m8 m7 N" C
if Str = 'false' then begin$ c& Q, P* n; c& V
# e: L% k8 a5 Z0 a% W- m6 F* E
//那么就提示物品兰已满
) F7 ^2 J* [5 @5 J print ('say 物品栏已满');
; m! {7 L# Y. R' @% f6 x2 g& `
9 I H& n) ^3 A. h//检测结束3 A% g4 y: U+ t( {4 T d1 A
exit;
$ K- E8 c/ W l$ p% r end;. ]/ b y* y6 S2 J2 e A1 r( X
, u2 f% O) P, ^2 O//如果背包有空位置,那么继续
4 m) W7 F& H q8 n
! P) y" @* N* d# e9 l* _; A//没收牛角
% U9 O% Z6 I, G: C! \! b& p# ~' H1 J4 l. }4 S
Str := 'getsenderitem 牛角:1';+ }/ d5 J! |6 _4 `
print (Str);
" [8 ~$ d- y. Z# s( k% m$ Y# T2 L# B- ]0 ?& F
//给牛俊弓服5 `7 z5 G5 I* H1 P
Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';" k% ^9 E ]. m6 |0 X. x
print (Str);4 f# o% a9 m$ N8 u; ~/ S3 F
Str := 'say 收好了..俺最喜欢的衣服~';/ w. B3 l* E! M1 j9 \3 O9 s/ a$ f* C
print (Str);+ Y. Y+ [8 u8 c3 z7 D
exit;
1 i4 Y* y/ \: b- @- q; x end;
+ m( Q0 n0 }& A" T) I8 l0 y0 t' t( f2 o& J8 N% x" S* y4 L
//判断结束语句
% |' T" a' `/ O4 u/ P end;9 K5 C! Y. a, ^2 ?4 `& `: J
exit;
6 J5 O5 h0 H5 M! y4 ^: \4 d r- g
end;. ^' Q1 a& f& T$ U1 d6 G/ T
# |7 H& K4 C7 x
end.7 h+ G* j3 k( U$ i1 ^
* B# Z4 y! h% n, ?4 ^% L; @end;
: ^5 t4 m! K7 \8 \# R" k0 n: e2 e |