任务策划:4 ^, I- J1 P$ _4 ?6 W
出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!
/ J% i ~1 `7 r8 J7 K# _来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)0 V) n0 v& b* S- e
收集这些材料交给屠夫,他会奖励你东西' r" z; _# p8 i
这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。
Y4 b4 E/ x M" M$ A! ]6 S8 R% y$ u6 m
目的:
: @5 n7 c+ l# |0 U3 k0 k9 k体会最基本的活动都是怎么设计的5 x, p; }' n) }0 U; x
; T/ X: s5 J5 E: D7 s
知识点:
, y7 G$ ]: U& I, r3 o1、检测包裹里的物品* E, M# N3 s5 I8 R" V4 j# ?" X
2、检测包裹空间9 q# K' E% f$ c+ b
3、给与物品. }$ P/ m3 g5 X+ g# s- m
4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。' q8 f B% m1 ]9 M1 q/ K) D5 m
3 F1 H! i: I3 ~' Q1 f/ Junit 屠夫;
' Y. P: b# N% M+ [) Q0 Q8 E8 A2 Z3 h, ^- m2 T' O' {7 Z2 M
//下面的是通用的调用程序内建的函数。每个脚本都有的。
5 l+ K# Z& g6 P+ b9 f
: h, ]" b6 O& ~- |' d8 O; Y' i- ^( Iinte**ce
& Z# t( ] r$ [: P+ K/ ~* Z. M+ U" \1 K
function GetToken (aStr, aToken, aSep : String) : String;5 r, ?, A8 i! l& A. A* `- r4 ~* W
function CompareStr (aStr1, aStr2 : String) : Boolean;$ I; v) V+ F" F4 {5 G
function callfunc (aText: string): string;7 U; U$ Q' A8 S4 I9 J
procedure print (aText: string);- p* C8 r- D7 r4 t3 R' W' K) s
function Random (aScope: integer): integer;
& y9 x# s/ T- T. D7 L/ S) U, A/ ^function Length (aText: string): integer;2 w. @: @) _6 m
procedure Inc (aInt: integer);1 u' ]3 z1 ^$ {3 X; p" d5 ~$ E
procedure Dec (aInt: integer);
6 @1 s# C; |" c9 Jfunction StrToInt (astr: string): integer;, P8 g) \( I9 B/ k0 w# S7 @. W2 O
function IntToStr (aInt: integer): string;+ e) g/ t L. }7 H x
procedure exit;
& k7 d! } `& u) l+ a
) p' r; S9 b) F* H) [& {- F( K//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么; U! U- [/ R( b& N2 a
8 `& l1 d% H9 V) T: ~& Q- Q
//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou" I# N k N- _/ n
! q7 |/ x- D3 d//第二句的意思是当左键单击的时候响应,
1 A1 o. R* O3 h; W. [* |4 K6 j! _; d5 i: I' Z; L/ n( v
procedure OnGetResult (aStr : String);2 Q6 [8 u1 b4 a5 X
procedure OnLeftClick (aStr : String);( X4 m& h7 G! p. p
7 D0 G7 z$ X0 N& N2 W* F//以上是脚本的头部,下面是脚本的主体部分0 `% u. d5 x5 P j$ C' r0 K9 ^: G
. i7 ]. y: [1 k W2 fimplementation
: G$ l' w2 Y8 ^ N( ~7 \- O& L; z1 _; `# | m( N4 D) ~6 @# @
//当左键单击时
8 }1 D I0 p Y! b7 L
) z6 B' T, b% Wprocedure OnLeftClick (aStr : String);% Y* F. Y3 U5 P6 m7 [+ E
0 ` t7 Z1 u) v9 o# U//声明变量的类型
. M( X/ n1 D3 f2 Z- b- Qvar' m% `$ _5 z, ?+ \; s C( n
( i0 f* A3 \# e; l+ P* {& i% m" P//Str变量为字符串型
7 v8 _ a4 i. M Str : String;
6 I1 [0 i$ D% \; I# i
2 d# `* e5 T' t/ a) \//Race变量为整型
' |" j f: C8 H Race : Integer;
( b+ ]% S5 |8 H xbegin6 k9 y* S) V" m" R, B4 t. M7 C d. T
2 n+ B. n' o, Q0 B$ X3 y
//获取点击者的种族4 X, P! r3 X& S* Z- B: w
Str := callfunc ('getsenderrace');
# a$ P; V6 }# O: `' }
- _9 Q7 M z; h' e//将获取的值由字符串型转换成整型
5 ^1 p* J- y* q& ?6 D1 P Race := StrToInt (Str);$ j% g( o& t) v3 A
r- C; y% R+ ?+ y6 b
//如果种族为1,这里种族为1代表是玩家8 {9 Q& g5 A. E. _' i
if Race = 1 then begin
6 |) Q# ~! H' z# b2 R
- r4 D# I ]. F4 W//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种
z! Z# E. l& o# t+ `6 Z" b Str := 'showwindow .\help\屠夫.txt 1';) y" V9 m6 z' U8 S
print (Str);1 e) I' E0 M6 F4 `8 U+ _$ O5 S
0 y( U2 l& o$ ?2 f7 _1 F" ~
//小判断结束
* C W# |2 A# V( [4 O9 P4 ` exit;
1 g [, d0 S5 P5 n; H, }4 ]" ~/ t end;
, L2 D- B6 K, W) u% s& R: k9 N( v) s
; ] j: ~% I7 Q% a//一个语句段结束
7 I' M, I3 }3 n5 tend;: v$ T5 S& S5 L6 V" `( K1 c
+ S! P$ ]3 n/ p$ d" L/ F//另一个语句段开始
' l9 |7 \5 K7 [$ U0 Y* }/ {" [: G$ e* c9 a, R
//当从Help文件里反馈回命令参数时,做出响应
% t# B( `. t6 s* ~6 [9 G& R# W. }9 M1 v$ K: G
procedure OnGetResult (aStr : String);
d- H/ ^' s/ yvar
" G: R3 K; H R3 V* o6 m a/ f, l+ |& B Str, Name : String;# i, h9 k. r# }/ T
begin$ |3 j) V) i0 |" w$ x) F
8 R: u0 c- `2 p" y4 _/ s
//当反馈参数为close的时候就关闭对话框2 S0 W) U! ~7 b9 x1 f) o
if aStr = 'close' then begin
- J; ]8 h; n. x! P exit;
- M* ^/ u" l/ W+ X end;! e, N) K8 c9 e1 Z8 m
! t) _ N' a9 u7 j" M//当玩家选择niujiao 的命令时
: [! R) Z2 W( u+ m7 o' I' ?3 j% J, o' t# q7 m0 P/ K6 ~8 m. }
if aStr = 'niujiao' then begin
7 }, x" [" [/ a. V: S
% b5 N& ]( d$ n! j3 G% }" W. z( m" T//检测背包里是否有牛角; Q% Y- z8 ?& I+ r" h$ J) a4 T
Str := callfunc ('getsenderitemexistence 牛角:1');
& f3 H+ F( t: A: c+ t( ]: I' s1 P5 K) C5 K V* \0 p' R( F
//如果反馈信息为假,也就是没有
, z/ b& X8 j/ k5 b) S3 I if Str = 'false' then begin
" H, y# a5 E9 g* u6 b/ `" X! P" D2 A) _: b+ S; T2 U
//屠夫说话- A. m( z& I3 k% s) W6 X$ s' `) |) V
Str := 'say 快弄牛角再说';
- q8 X& h* j% \6 L' t2 r print (Str);
2 j8 e. _% D* k6 X; D+ S* U8 g
% z0 _% r/ @" |+ l//检测结束
' H: } B' w' p# y" Q9 o9 W I6 K exit;& K3 r! g ]. z7 \8 B
end;! U4 N0 s2 y6 A' G: W. q
; @ J0 V% {' y. O
//如果有的话就继续执行下面的% W1 X% _3 K' m" {) P. [, h" \
! ]8 H/ j* I7 o: c if Str = 'true' then begin7 {2 s9 ?5 P: r* ]
2 C# Y/ Y- ~+ k B {//检测背包是否还有空位置
4 O2 q3 i4 ?4 }& V Str := callfunc ('checkenoughspace');+ ^8 w6 q& Q3 w2 r8 m
' \( G# O) j) g0 ? t' j; {9 E+ ^//如果返回值为假,也就是没有1 L# c' h4 Z3 C/ I3 F
if Str = 'false' then begin$ G0 X B' a9 ]9 n, Z
3 \) L$ U9 y5 V/ a! f! w//那么就提示物品兰已满! D& W- v# W& J
print ('say 物品栏已满');
. b% a, {! x! y7 g2 m
5 h% N# @$ Y! P0 }//检测结束
3 u& A* L, E D( o) s exit;) Q" z) X. q9 |+ h4 \4 s
end;. ^: ~ i J$ \& {
) h9 T7 W4 F3 b- c& k8 g//如果背包有空位置,那么继续
! [% x; k! v1 D+ d0 g
- B9 Z @; I: X7 q//没收牛角
* B. ]/ u7 _& m. p, o. _2 P! H" \* N2 |5 g+ d
Str := 'getsenderitem 牛角:1';/ O: V9 k* } K5 d% R8 \1 @" x
print (Str);" P8 g' E& P5 G
2 c5 q" Y) E& y3 }& h( e0 f
//给牛俊弓服
$ x. R& p2 B) }' p' {; B% O Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';
" |1 G4 x( |1 V1 o) h/ C print (Str);
0 t. p# L8 i; A0 R2 t9 }& u* y7 y Str := 'say 收好了..俺最喜欢的衣服~';
3 w# _9 a: x N8 \0 r0 n! {9 X print (Str);
+ o3 o! Z2 [( @( F1 ?' D% E8 _ exit;2 X! v. c, C5 b4 s* I
end;
- r$ O& ]- y- v0 l& E
. J/ V- k/ p Y9 R; T; K//判断结束语句
& E2 r! _5 A2 U# u end;: n7 |' s# z& N4 |0 K' X& e/ D# u, S
exit;9 W% Z( T$ r( z6 I
3 k- l. [ g! u
end;& J9 t9 _% B6 M# c
/ ~0 S G! v0 c* m# K* Y
end.+ k& X7 Z6 Y+ \5 E, W- S, v" |
$ k, y# b5 U0 p" B: ` O6 Qend;
+ |% C' x) c1 P, L3 f2 y |