任务策划:
( C. D4 h* w( ~" C出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!
9 l1 i/ |" A. } U9 k来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)9 W* M$ S% X& C
收集这些材料交给屠夫,他会奖励你东西
6 l3 f x& I E- v6 u这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。
+ U# n! C5 h4 I( W2 D
/ ]" v0 u5 m+ U3 p ?+ d2 H6 f1 M: [目的:
) j8 x6 V/ ^6 ^; X' p0 Z体会最基本的活动都是怎么设计的
. l1 G) ]/ }' g1 h2 ?. r3 K. x$ b; \) b \
知识点:' t, d- C7 b8 k+ ~2 D' }( O8 {$ P4 ^5 b
1、检测包裹里的物品1 V% L5 N, c1 R7 A
2、检测包裹空间# j- ^3 [( X: e5 M9 x
3、给与物品3 C( f) P, v% k- p8 M! P
4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。
3 Z5 V) ^; o3 F1 R% r) Y0 n. Y+ d @- I
unit 屠夫;$ T1 y' A% |& w4 k
0 }* w; R2 V6 f5 |# _ V2 g. H//下面的是通用的调用程序内建的函数。每个脚本都有的。9 Y2 x( r0 L# T, Y) b
$ T4 S( |1 `7 ~+ C/ B+ U8 h( Jinte**ce
# p0 L6 [: T/ W1 E; R# N5 v8 E2 W2 B+ K: ^) l5 J5 b- s. N" f
function GetToken (aStr, aToken, aSep : String) : String;* E7 g7 t) W2 }9 u. V) J& c
function CompareStr (aStr1, aStr2 : String) : Boolean;
3 X; G; O( w: w5 j. x9 Yfunction callfunc (aText: string): string;! R: d) ~ m! B% S
procedure print (aText: string);
6 m2 ^9 G' H0 j: Zfunction Random (aScope: integer): integer;
7 f+ s( }' t) ~5 i9 B' o8 q- |" X, K% Pfunction Length (aText: string): integer;
5 T- c' }9 B& \ M n+ q" z, wprocedure Inc (aInt: integer);
! V, V% T: M* u, mprocedure Dec (aInt: integer);7 w% n3 ?% \6 P& c8 P3 N
function StrToInt (astr: string): integer;
$ e9 ?7 p. h2 V5 a$ \. hfunction IntToStr (aInt: integer): string;( B2 O6 I: Q% k: U! x( C
procedure exit;( K/ K+ p& H3 i6 M, f* [& h
. J' g- d* e& B$ A/ M" b2 N) n//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么
b+ k% T" }2 L' B
* c6 e9 c& ]9 e K$ w//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou
Z/ o$ h" G- A) n$ m1 z; p
2 ^1 d# Q/ [& k//第二句的意思是当左键单击的时候响应,$ I m: M- ]8 m' B. b: ?3 t
$ P8 _8 G) q( J m" s
procedure OnGetResult (aStr : String);) ~/ E% j+ G/ k, W1 C d
procedure OnLeftClick (aStr : String);/ u$ }; t4 I$ m6 g
7 t- V! D: m& I; {2 w//以上是脚本的头部,下面是脚本的主体部分
: K" F7 B; |1 {6 B% I/ z6 y9 i$ Y
5 K, ?( ?6 N" w/ ]+ ]7 ximplementation' |. Q* K9 u# C2 K
. F6 ]6 w% u; E- o//当左键单击时
9 [: N0 i3 Z5 p( P9 q: U1 `* S4 b P9 w% s5 G* U, O
procedure OnLeftClick (aStr : String);& y% ~4 H% B7 F
" W3 G2 ^6 [' K1 f' W5 I. ~
//声明变量的类型
6 l7 x% y7 v ?var
3 E+ L1 o8 {8 u9 h3 j, k( N: G% f7 B2 K6 j% T
//Str变量为字符串型& I3 i5 o% t Y+ S: O7 m/ o
Str : String;
3 v3 f* W: J7 K
; S! S+ d6 t. r, U! h1 A8 A ^$ L//Race变量为整型% H6 E$ m) _; x H
Race : Integer;2 `# g$ p- E$ l. p, ]
begin
. r7 T0 T/ `- Y3 ~. e. J
( h7 D( R& p; m9 L0 d3 }: T G//获取点击者的种族5 J/ [0 c: J$ t/ `, ? \' g, K) H: q
Str := callfunc ('getsenderrace');: V/ x6 @6 F% z: g" p" e0 E
" f5 M. V+ i; r: B//将获取的值由字符串型转换成整型
6 r' }7 e- d# M) E" ?9 c9 f Race := StrToInt (Str);; `5 S3 @+ L" G' C l' `' z
0 n2 J% U) M) o9 t# N
//如果种族为1,这里种族为1代表是玩家
% O$ V: M) O. E% V. Z1 U if Race = 1 then begin
1 {/ E$ d: x5 G7 p5 d7 Q6 q4 M, S
! i2 L1 ~2 \/ }5 U$ I//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种* o+ ?* `' w- N _% @+ C% r8 G
Str := 'showwindow .\help\屠夫.txt 1';
* C& S: N" Z( p d print (Str);
; s) y2 o1 d. a' b
; ~. X/ n; m. m a& P: s+ ^//小判断结束
7 O, O1 N) w* F2 G exit; 0 x/ K! ~$ S* J+ C# ~% s+ y
end;* L# R) {* A# C {6 ]: `
4 X _6 a4 z% b, O$ o# I
//一个语句段结束
+ _( m* t$ H. R. o; Dend;
* y; O* l! V3 W* p) u
$ u: ] u7 z8 n1 @) u$ |/ @//另一个语句段开始
! V0 [* T" i1 R% v; p9 h" U$ j9 e
//当从Help文件里反馈回命令参数时,做出响应
! S+ z6 q2 [) a- ]; P( h# W
/ S, X+ J9 S d" Dprocedure OnGetResult (aStr : String);! D' @% q% P5 z
var
+ Q# I- C0 R5 S1 \9 T8 r+ m' V, E Str, Name : String;& S9 r i; \. a' y. `
begin+ j+ [; ^9 t$ {/ v) c8 l
$ w0 p. L/ M: C6 U. }7 a/ m
//当反馈参数为close的时候就关闭对话框) X8 Q% L% \& B$ U- V% s
if aStr = 'close' then begin4 g5 I4 E* z: y# \7 A& T
exit;3 e8 j& P6 P! @4 v9 [# M1 \
end;
" _* i8 `. ]& r' Z9 ?4 {4 V! I1 }5 |4 k/ t q! c
//当玩家选择niujiao 的命令时
7 z. K8 ^9 T+ s
8 O: _ y0 g5 M- j if aStr = 'niujiao' then begin
: R) @# u+ y5 p- j& Y ^3 H# k6 ], p' y
//检测背包里是否有牛角
% c; d# [3 e* t Str := callfunc ('getsenderitemexistence 牛角:1');
( C# u* U" m! c+ f! P; e+ b* j
$ X( E3 M' ^3 Q7 u//如果反馈信息为假,也就是没有
2 Q) \0 `+ V' X if Str = 'false' then begin
' G, D( ~, ~" ?8 [: S
/ m2 N* w9 ~( c: f/ C//屠夫说话
/ u+ J. J2 u% G/ v3 L7 H# o8 Q. I Str := 'say 快弄牛角再说';
; i8 z$ F: W9 E5 q print (Str);% l, b1 G& G3 t" I3 x* K- d
2 s9 _% T) b' ?" p# n+ m
//检测结束
3 r) f6 E/ ^& G5 n- ~ exit;* Y" ]7 E" E( x) S' g5 M5 w/ ^
end;5 B7 b5 [( v$ Q0 q
# o0 w ^1 V& r: F8 W& g' W
//如果有的话就继续执行下面的1 f2 _. z7 Q# o
7 q2 W1 R- k' w+ _
if Str = 'true' then begin' ~8 a1 x `/ Z9 u& Y
$ N$ ?- B% s3 W//检测背包是否还有空位置1 ^6 a- f" F: d1 P; H, R) Y
Str := callfunc ('checkenoughspace');- `& D6 Y- X* a: S3 s! E3 e0 j0 ~
5 t$ d2 }8 g, O T
//如果返回值为假,也就是没有
8 D9 e- w% \ a2 ]4 Z if Str = 'false' then begin
$ S+ I- v% B! e$ ? W* u- y3 C" ~0 k' \2 x
//那么就提示物品兰已满
+ M! U; q' y8 W" e print ('say 物品栏已满');6 m! X0 x4 B* O+ O+ o8 h
, f) g e% E- ]3 e3 a) r2 E//检测结束
$ m: g) o$ ]3 _5 ` exit;
( F% j3 I; P. g" s3 w8 M end;) J# t3 `( @$ q& ]
5 L8 ?* P! G( c' q, T//如果背包有空位置,那么继续
8 P; { o- W5 `2 I' b3 ^ f# R8 G: o6 e0 w
//没收牛角/ b6 m3 s* i; \. O/ @: Y
$ s0 N2 c0 G+ d Str := 'getsenderitem 牛角:1';" \/ L/ D; ^8 D% w: `
print (Str);
3 g% Y! B& Q0 i4 Z% W$ f; ` y k% l4 G& ^: S
//给牛俊弓服
& q& R4 k3 ^9 S7 T% K1 B Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';. ~) J2 R1 P6 C& }8 I
print (Str);# Y8 }5 G9 c$ ]$ h1 C
Str := 'say 收好了..俺最喜欢的衣服~';
$ x# U, J$ g. r& w' @$ h4 ]- Z' A2 D# e print (Str); P* z! l$ N0 }' l
exit;
6 p! [5 A7 \+ ~8 ?) Q5 V end;
- n" j J# w( w9 k$ C2 M {+ {) D6 l* c
//判断结束语句
/ f' i6 M( g5 B5 c, u- }' r" j9 Z end;! D! v" d+ G5 q5 q! W5 u" T
exit;1 s8 T* Q c2 d% ?1 V8 C- Z
$ F8 h! V. P3 c5 V* p& `8 Qend;
% f1 P* t$ ~, e9 m- o
1 S9 T1 q+ t4 m0 Zend., Y* E0 |% T7 p
2 i, |; D7 _7 K3 h
end;
+ V% [6 N& w/ f) N' z4 r |