任务策划:+ N6 s# H% M" ?! c5 D u
出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!! m# K% ]: `8 M7 D: n' V2 s
来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍), d6 J3 u( G4 U2 y
收集这些材料交给屠夫,他会奖励你东西6 C6 u' l, a; E
这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。
: [6 T7 D+ _3 Y/ L/ S4 q1 X- S$ h
; a9 W; r* X b9 M, r5 [目的:2 F6 e& Z# o* M4 r6 y( {
体会最基本的活动都是怎么设计的
5 M1 ^: r: N! {, q( F8 f0 @
! R9 a) I1 M' n! p, u4 f" C2 |% |知识点:8 X, r; E/ d, p L$ i+ j9 U+ p
1、检测包裹里的物品2 q9 n8 } [$ q; A' P
2、检测包裹空间6 D! @# O; q ~& B* a
3、给与物品
3 k9 D+ i* P3 p4 G7 ~% |9 L4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。# i8 l0 H. ^* ?; ~% ~1 Y4 x. z8 r- D
; X5 t& t6 v u6 X2 M+ |9 C$ L# v1 j
unit 屠夫;1 J9 |- ^1 P0 l, H1 p
# c! I A; P, p8 K; j2 k W& p0 I8 `
//下面的是通用的调用程序内建的函数。每个脚本都有的。
0 |4 _3 a: E; V2 D% ?- c! c B9 q* E9 E- r
inte**ce/ ]. \2 b$ s j+ e/ g) d
% x/ P8 m0 I1 \2 E- pfunction GetToken (aStr, aToken, aSep : String) : String;
4 r$ k! i; G% i" @+ F8 Mfunction CompareStr (aStr1, aStr2 : String) : Boolean;
5 e9 a( m: P. m2 @4 D# D& Yfunction callfunc (aText: string): string;( @% C3 T" E `- t6 D& B
procedure print (aText: string);
# _3 v( \: D5 jfunction Random (aScope: integer): integer;1 q6 F, n, V# |9 G0 s
function Length (aText: string): integer;
5 l+ Y( E* [+ ]: j! _: p: X- D# bprocedure Inc (aInt: integer);# q# T# f: g! o! F
procedure Dec (aInt: integer);
. u& D! g4 u4 Afunction StrToInt (astr: string): integer;
D. Q* d- |. M7 p% Y4 p3 |% Bfunction IntToStr (aInt: integer): string;
1 R7 \: q4 a0 _procedure exit;
; Z9 W O5 w5 ?( A! W* M: i
/ F7 r7 e o* [- f: f' q! _6 Q, i5 [1 T( w//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么
" F; t: p# C2 r- G0 c- I
% U6 {/ c- q; V7 P6 @7 x4 G//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou. d, u' @1 T5 F' \& [6 F
: o" D0 Q7 q# p0 }! p//第二句的意思是当左键单击的时候响应,
/ O0 u( T+ s5 o u5 e7 {8 O
/ C" C) L+ f8 dprocedure OnGetResult (aStr : String);
# z; r# P) N# {" J1 X/ g! @procedure OnLeftClick (aStr : String);/ P4 _% d- } P0 d8 W: _* L
8 l( L) U! ?: T0 ]. @//以上是脚本的头部,下面是脚本的主体部分
) B& D, s& o( y3 Q9 b. e% P' U
& W0 l4 h( C' @- R! Ximplementation
) t- |% @" I+ ]# g# a" G: `) f# U1 d( J. m1 @' M8 s3 M( T
//当左键单击时; y6 f d* y( p- c; w
/ T# u1 i" O. `
procedure OnLeftClick (aStr : String);
0 q6 k8 a9 j$ n5 d3 L1 S' u; a9 ]2 i7 F0 L5 C2 I8 i* b
//声明变量的类型* g. K' f b4 o. S0 G+ m
var
: K+ v! F% j) K* \' G& \9 M# N8 S5 h9 l& ~
//Str变量为字符串型
8 Q6 f/ W9 y' d Str : String;
k1 h/ A0 j' p- R0 h# o& x
# E; K% P: ]" U) ]4 i/ i1 S# _) ? j//Race变量为整型
r, ?8 `, R3 c0 P0 S' G: b- V/ P Race : Integer;
: z1 c X9 V# N' y, m& I$ V/ N- g8 D, tbegin
7 n6 N1 f# W" N+ x W
2 ]4 _/ ]4 @9 z5 G. C x//获取点击者的种族- M/ a) S$ B9 ~& O! i( i0 Z
Str := callfunc ('getsenderrace');0 I. o& H* z, W, v/ l$ J. k1 o( U5 f7 _
1 b0 A4 u; v4 }6 d; c# V) N//将获取的值由字符串型转换成整型& ~$ I" T2 v% v* l3 C. Y0 L
Race := StrToInt (Str);$ J- X6 c* s3 {5 r
3 g# m# Y8 L% D( x
//如果种族为1,这里种族为1代表是玩家
3 A: ?. w4 G5 ] if Race = 1 then begin u7 F1 u, }& W4 j! |
\ m, Y$ v1 p0 J
//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种
( O' s0 _2 j) e( {9 p Str := 'showwindow .\help\屠夫.txt 1';7 D9 s, i! M" Z8 a6 U/ v# B
print (Str);
& L; w& C7 u! U, R# m" [7 H, h7 D
+ b. B% ]5 l) P. |, \: P//小判断结束
7 G: l j' n' j4 g+ @/ j exit; 2 z, V8 s" P4 y, K
end;- w* a6 d+ i$ r7 W
0 H1 Y7 ^: B5 l7 w- c" b6 f1 r- `7 r
//一个语句段结束
# y& I+ Y0 c w4 T5 Bend;
( {% g* |% }9 b; P8 O2 }
. C* @! O; [4 G4 @" N//另一个语句段开始
3 j \' ^( Y2 B1 X
! s; n* A" y: i7 C2 X& u: {//当从Help文件里反馈回命令参数时,做出响应
; I" Z g/ u7 W$ P t# N
1 O9 ] R8 j+ W+ Zprocedure OnGetResult (aStr : String);4 e* u: S7 T6 c3 }5 `
var
1 T6 Y! ]4 ?3 R0 I$ x Str, Name : String;
1 P; [. `- m9 p; v& o% _& _begin- \- @/ g$ f- [1 G) H; a2 H
3 h1 h5 O: Y0 i# Z# { p: Z. L R//当反馈参数为close的时候就关闭对话框
' T7 q8 |6 ?) Z O5 d8 X% Z* g8 r if aStr = 'close' then begin
0 v* e" z: @( {1 d' V) M! g4 X exit;8 N: ?% e4 f/ z" K- M5 e
end;+ k- e! Z) D3 D3 M$ X
: F+ m3 |9 n2 `8 b1 W" f//当玩家选择niujiao 的命令时3 u) O9 W( |+ u q: r! V" _
* F+ \5 w5 E# v6 b9 y
if aStr = 'niujiao' then begin
8 S* P8 W0 v4 ?, F% i8 g6 P; g2 d" U$ w7 J! i
//检测背包里是否有牛角
! l3 b8 l1 G$ k- s! x! P, L Str := callfunc ('getsenderitemexistence 牛角:1');
$ p, T# p( M5 h5 U! C3 V$ S P7 S' A1 e3 b/ ? ~, {5 a
//如果反馈信息为假,也就是没有
# Z' _# x! L) F" W) ]2 d! W: ~ if Str = 'false' then begin
9 k8 N! r' l" }! i8 ]+ ^+ X: K" J' o3 E' L
//屠夫说话
: ]1 k( ^3 t* F Str := 'say 快弄牛角再说';0 a2 ~9 r0 i- E) f* f
print (Str);
% v+ s6 R& ]9 ]0 ~7 g
" b0 |/ X9 b% d+ t; l! V+ n//检测结束
4 Q; d$ x7 X) K0 ^1 j exit;
3 Q3 v& x# a5 o, {, n/ m3 { end;
/ E6 f1 q+ Y, I6 Z2 G
1 |5 ]9 l: N0 g//如果有的话就继续执行下面的: y! t; ^* @4 Q+ [% \
4 E3 o% F# Z3 S3 I' g8 { if Str = 'true' then begin
: o5 V2 x/ ^( n9 z8 u% {" t! P( b/ }& g0 d
//检测背包是否还有空位置! J/ f! Q# r$ _# l( k" P
Str := callfunc ('checkenoughspace');; f* [. C6 ~" L, l' a8 I7 p
% L3 C* {' s0 m `2 s6 P2 k//如果返回值为假,也就是没有
9 Z( Z$ ^& {* o3 w& ? if Str = 'false' then begin! @1 L0 X6 ^3 H) i2 A9 `3 y/ H& |
& x) r0 {+ p1 V# ^; ^7 m//那么就提示物品兰已满; }0 k1 @9 |; W3 r1 q& t5 u. O; `
print ('say 物品栏已满');3 V' C5 v$ |( ~
8 j8 S. ?$ Z U5 x- M6 z7 o- F- E
//检测结束! \* l4 @6 A( o) m
exit;; A* G3 j; s; C9 Z% |
end;
s0 Q3 U8 F4 }3 E! y/ s/ e0 J* } Q7 G! H
//如果背包有空位置,那么继续" p& _! W4 D0 t1 x
# X5 u# r! L' j* [% S1 V//没收牛角
3 r; B! O. A6 m7 j& p8 B- l$ B$ [+ }
Str := 'getsenderitem 牛角:1';
: m1 c& {- A5 T print (Str);8 z7 z g! f6 X( f C
/ M O9 u( W* ?7 q6 X
//给牛俊弓服9 w* f3 M* Q$ m4 l, t, ?, i
Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';: m/ S1 u! B [8 ]$ a/ Q
print (Str);- }7 i- Q! z3 X6 d5 ~# a$ s
Str := 'say 收好了..俺最喜欢的衣服~';
0 p( E/ U. D1 d( H6 _! r* } print (Str);4 h7 n+ r* o- W: o" O" k5 R
exit;
% r0 t, Z/ H+ r2 F& ^" A# r0 j end;
9 Y1 S* a) N5 h' c- H
# T9 |, C7 M( ]+ x//判断结束语句0 [+ c: }% P6 z: e0 J3 X* U! B9 R- | a
end;" n( e7 Q! A, S- S2 r4 r& X( n
exit;# H0 e. u5 L/ n' ^
, p9 q6 m1 u+ y
end;
$ W3 w$ }3 U. ]! s4 V: g& w7 e- V8 Y f" n& |4 L' c% J
end.. F* u6 J( M# j& m: O
0 ^' H, ~; p$ D; kend;
# y3 [9 ], Y/ [* f9 T |