任务策划:
# \ _7 L- c! G1 y. \' u# q- {5 k! t出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!" v+ Y. R( p& _" c- R4 N' v2 T7 z
来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)
0 S! L# w" M, T/ a5 Z: U& M, b收集这些材料交给屠夫,他会奖励你东西
) G6 y) \5 b" x7 ] ^9 i# |6 O这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。# @ J- N( ?! |9 K# H) @% b
5 C+ P/ l2 k+ Z+ r, S3 `
目的:
4 H6 z: _1 v) ]( W0 F体会最基本的活动都是怎么设计的* l# n+ u. l. l8 {( S
6 H/ x; h! v: F7 ]% F0 H; i知识点:& g# t2 P- \- U: C) m
1、检测包裹里的物品/ G' \5 v( I% e( \. J
2、检测包裹空间- X2 D- ]* b' v! ^
3、给与物品
- A* b# B% D- O# D7 q1 D- f4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。
: q* U( E9 l; n$ K- F% s, `! I# I" |) \3 o" V( X
unit 屠夫;1 v7 [, q3 y1 H8 ^. k
: e1 t3 D( t. W+ D' C) u
//下面的是通用的调用程序内建的函数。每个脚本都有的。
: l1 z0 `% Z% |/ O) [$ e; x; U- Q: @: j& h% T- n0 R
inte**ce: c0 Q' b$ F: F
3 i& t/ m' n. C8 p1 lfunction GetToken (aStr, aToken, aSep : String) : String;/ ~" O6 f* h' |% H; A
function CompareStr (aStr1, aStr2 : String) : Boolean;
3 \$ x7 R/ Q ?$ V5 O$ L9 Nfunction callfunc (aText: string): string;
/ |2 Z! f0 U2 k* ~procedure print (aText: string);
3 R2 C- m# g7 ]( a/ S& Afunction Random (aScope: integer): integer;$ P N( y+ G1 V3 f2 J% t( w
function Length (aText: string): integer;
3 s6 e# i8 q1 vprocedure Inc (aInt: integer);/ m6 e* ?4 `: q$ e- }
procedure Dec (aInt: integer);7 J$ T5 L0 |# d0 q
function StrToInt (astr: string): integer;! Y6 [8 Z7 S8 D
function IntToStr (aInt: integer): string;
4 ~& E9 d8 [' [; V0 ]procedure exit;
5 ^8 }3 g( r5 O) U/ `6 K& P8 r# t" M
//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么
! w4 |& i6 w" T/ J
7 n( {* F# F) w, W//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou. w Z5 f; b. N) _& R
$ D1 ^0 ]; e+ @$ s
//第二句的意思是当左键单击的时候响应,( h9 E, G3 }1 _: z3 G* F+ J
* m% W- j$ G$ c1 zprocedure OnGetResult (aStr : String);
5 P- f( ]# L" W4 _+ o. ?3 _procedure OnLeftClick (aStr : String);
! z+ {0 a1 c ?% T2 j0 k
* U- x2 w; X& c$ o( I% T# ?+ e//以上是脚本的头部,下面是脚本的主体部分
, H- n) o6 g+ Z/ Y! {+ ]$ G! s
8 V$ [* k2 U9 V, Oimplementation4 N( m! @; p u6 ~* G) R% V
$ H5 b, p) k( i& ~//当左键单击时
Z' S* k4 Q7 Z( m6 `: n/ e" ` p5 z: j! W6 C- s
procedure OnLeftClick (aStr : String);' l8 z! H1 ~% ]* h- d& d' \3 Q
5 u+ M4 r; ^/ n* [4 W) k# Q4 W//声明变量的类型
" T6 [' h& U3 l" e# l9 t( L, avar
# n' u0 ~6 q8 D% R6 e
8 J) E7 x) X& U4 g/ u+ T8 p e//Str变量为字符串型
. q( e; L' ^0 d Str : String;/ u; {9 ]7 i3 x
. o8 e6 A( w8 P. x3 u% U, e% n7 H6 ^
//Race变量为整型0 s( c. T8 W$ H
Race : Integer;
# j! l0 p. f% ~1 N6 Y. S) fbegin; G7 v6 f# \) p. _4 Q
* k" \! }9 ?+ X3 s1 P//获取点击者的种族: C- _) @: H2 P( f- Z
Str := callfunc ('getsenderrace');
! |; i5 i' s% V/ d! P3 U
0 n- m8 E. P; I! C; ]//将获取的值由字符串型转换成整型
2 g+ @% J, s& `% C, J. r4 b+ p Race := StrToInt (Str);6 x+ G( _5 J) V! z/ U3 K- v
+ b9 _0 k1 g& d5 r, I
//如果种族为1,这里种族为1代表是玩家- @2 k9 t9 n& ~- W9 G
if Race = 1 then begin
6 Y2 X; E* H# z" i! z3 T
2 k6 C0 Z" N! p6 W//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种/ \. I' C, X1 W3 Q1 ]2 G0 m1 m! [) n
Str := 'showwindow .\help\屠夫.txt 1';4 |9 s( D( Q) E7 q% W
print (Str);4 ~; m9 N( ^1 m; T U! R$ N) L
P0 l, Q0 ` O1 h
//小判断结束9 p2 Q$ e2 @ X+ K% [1 ]
exit; 4 R9 K4 P1 k F! t
end;+ {( D: ~6 M- C# M
& m4 d3 f6 O8 Z3 m6 U
//一个语句段结束
/ I# x3 t- j4 J' ^/ _end;
: q, [& U# ]1 U+ i: @# W2 _- c3 b3 g. b. c. @- e
//另一个语句段开始3 G1 i6 N$ }' C7 m
/ l9 D, @) ]0 m1 Z//当从Help文件里反馈回命令参数时,做出响应
9 a0 ~$ D7 @" F. [& }7 E7 g# j! g
procedure OnGetResult (aStr : String);
" O# ]$ f0 [: ^4 B5 B1 Q$ v4 t0 e( `var
- {3 {8 y8 P' Y/ a* B3 X Str, Name : String;
+ F2 v5 u, U7 Wbegin
7 R; d! g1 y' q% P6 l) R" I5 \) i0 {6 N
//当反馈参数为close的时候就关闭对话框% o9 v: t; L" p' d6 T! E9 D; r# D) G
if aStr = 'close' then begin
1 {( V0 ^- G2 w' F! L3 a, u5 ^, U exit;5 Q S3 x* @& A( N+ O4 N
end;, p g; V" k% @1 Q" w9 P
2 K7 ]$ F* h7 E% d; l; x//当玩家选择niujiao 的命令时3 L8 ^2 o+ X- T8 U( N& h* r
2 D' ?, ^, A) _- b7 H* _
if aStr = 'niujiao' then begin
O; a" [3 K: c3 r( H+ P
. X1 d' Y: \% o- q! b//检测背包里是否有牛角
# ^) V4 a3 n \" \* r/ N7 w* D Str := callfunc ('getsenderitemexistence 牛角:1');' N, p2 [8 a+ v% G: W
$ _5 g7 s8 E: ]$ e
//如果反馈信息为假,也就是没有
/ }; L0 ^( Z4 n- j `0 C if Str = 'false' then begin
- j' C4 T \+ U* Z$ O5 Y6 m* F) e4 r
" x" n# p8 z9 E9 M$ c//屠夫说话& K$ j. @, t% N+ Z* v7 }0 w# |
Str := 'say 快弄牛角再说';
" m6 T5 P( s( ?: Z+ l F print (Str);7 N6 D& p: {# x5 n/ K
* l0 C! J% \+ H
//检测结束
4 W2 R+ ~9 n& } exit;
6 z2 e$ C9 A5 d2 Y! H, e; } end;
4 P6 T" N% C- f8 N, \8 z5 I i4 u1 p
//如果有的话就继续执行下面的
/ O S$ A; P) Z9 O1 P) U n8 U+ U4 ^, v
if Str = 'true' then begin9 o: ?) b1 F0 a) M+ \- c# \' V
& U% @9 V; C' E: X//检测背包是否还有空位置
' j! o: i. W/ V1 V! \ Str := callfunc ('checkenoughspace');7 L" K* R0 R/ H4 y! Q. E
* {) ]: L n) G) O# g( L
//如果返回值为假,也就是没有
" `% w* d7 I9 A) n" J% | if Str = 'false' then begin, Z- D! T9 w% D1 |3 t; @
+ Z; f1 \" C$ t2 ~: ]" T% e( R" G% O
//那么就提示物品兰已满
( O; y6 p+ V N: v8 [7 A' S print ('say 物品栏已满');9 S% |% {, i/ b/ ?% P% y+ D! L
/ j# C L1 Q* [
//检测结束/ w* K% d- ~* }3 G- L9 N
exit;
8 I Q( _8 X' a3 T5 E end;
2 g+ ^5 [. R( G: l$ p( C
6 Z+ ^" H8 P0 v8 i7 e//如果背包有空位置,那么继续- a. S; M5 M4 J5 x7 x
, I- Q% e; c7 A* O1 V1 q: F//没收牛角4 b7 D! _0 ]- \' X
6 Z$ N. R6 M1 z( f' z9 J S Str := 'getsenderitem 牛角:1';; f$ [1 D4 M" c& O. V8 C
print (Str);9 L- d: u' ^4 X( i1 S$ p
$ v3 n2 _% g" |8 j3 R
//给牛俊弓服0 z" ~; F, o! \2 i
Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';
- R) `8 ?" n4 }$ H) H: @ print (Str);
* B' _& ]8 J9 t$ ]+ `& b$ O+ Q% @ Str := 'say 收好了..俺最喜欢的衣服~';
- N: M( }& x, C# ~) R% i9 J% ]5 t print (Str);
, ^8 Q" k0 n, f; ` exit; C% k% a& }" X N8 L
end;
8 x. Q; |2 Z8 t) b+ X0 v8 w) K6 l. H- b3 c$ z8 d3 d8 x
//判断结束语句
4 a( U. v7 p3 Y$ Q' Q e4 B5 W7 R end;5 o% H5 j0 m0 C5 z( P# D. C' b! o
exit;3 U! E% f1 v( o1 C) O3 O( ~" F
/ q" _, `+ f% b- D$ D% M$ u! vend;4 }7 b- f# E2 `" I* p' ?
8 A* }7 S& B* d! z# `' Z4 P
end.
4 K8 a/ V+ ^. s F5 `
* i' n& O R( S% S$ xend;
! X; }( s7 N* K C |