任务策划:
$ e9 M) d* x' o出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!; j3 f; f0 L) R" }1 f2 _
来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)( U% b* F- N; {. X1 x
收集这些材料交给屠夫,他会奖励你东西1 o% d4 Q+ y' E( j- i8 B+ J
这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。8 P9 ?+ P. @+ p' L
# i" ]. H* M4 X7 X- W目的:4 |( A f4 P/ Z6 x0 g. Y
体会最基本的活动都是怎么设计的
5 A! l% Y" o& p- g. i+ H0 A3 G: Z D9 A
知识点:1 T8 ` ~3 `2 w# v2 D4 S& k
1、检测包裹里的物品
- i; T# v7 D. Z" q: ^7 S2、检测包裹空间/ X9 c' a4 S* V( ~, A3 r5 L
3、给与物品. L6 @3 r$ W! X; p3 I
4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。
. k3 x9 V6 _1 b: r2 f1 U& N8 M7 U; @ N1 J7 w, g
unit 屠夫;9 |) N& N+ @7 Y% q+ Y
) O f2 g' t+ p. U//下面的是通用的调用程序内建的函数。每个脚本都有的。
! b1 Q7 K3 n* \" F* T F! i6 d( Q9 o7 E
inte**ce9 e i* x1 Q: H! {* ?
. ?( c: ^% [' F: P5 kfunction GetToken (aStr, aToken, aSep : String) : String;! l t" f2 u7 O- O: [$ p
function CompareStr (aStr1, aStr2 : String) : Boolean;
8 ]/ C0 S/ s8 q! \5 v/ `( ufunction callfunc (aText: string): string;. [# W5 s2 r' P6 {& V
procedure print (aText: string);
9 V5 O3 S3 G: f: \( W! }7 K3 ?function Random (aScope: integer): integer;6 x0 c2 L. [# l6 s
function Length (aText: string): integer;5 u. s n! V! Q, ~# h
procedure Inc (aInt: integer);
) n/ ?9 n9 s1 G" z% dprocedure Dec (aInt: integer);
3 |! G3 C5 c0 C7 L0 i+ }function StrToInt (astr: string): integer;
( ~% `( U3 F+ k" Y ?' V, A" s- p+ Xfunction IntToStr (aInt: integer): string;
! S, s" O/ u {procedure exit;( x u8 P$ m( D0 |8 U
+ F1 p# O0 K' \//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么
+ w# Y$ E, n9 ~. X' T/ t. ~$ W! A
% A2 o2 Q7 j8 D5 O' e8 B1 j//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou: D" k. N! o# ]+ S
5 r8 u0 M! _* l//第二句的意思是当左键单击的时候响应,7 n$ {3 [3 K$ J8 I
$ P. w6 E/ k5 Z: P& B! t. v) Q4 Kprocedure OnGetResult (aStr : String);& {) X7 h7 ]- I" M/ o+ A. j) C$ t& U
procedure OnLeftClick (aStr : String);
& a. [- B o% {! ?; {) |
2 k2 \$ W& N3 [+ G% R/ _//以上是脚本的头部,下面是脚本的主体部分
, A/ `, L0 X. I* B7 b0 O& \1 s" i) n- x/ p' d
implementation1 l" Y# U K1 C4 ?' O% f# o- ?; W
( L* Q& T- n- F4 S//当左键单击时( z C5 {8 S2 d/ Y4 F* ]
: e+ z# V5 [. K$ ]/ g2 J1 t
procedure OnLeftClick (aStr : String);
l- z4 `. j1 ?- \/ y$ B3 e+ M" t; D
//声明变量的类型
& w( z6 d5 ~- fvar" ~' ~2 i% t9 O+ D% g
0 O/ @1 x, Z% I; h! A//Str变量为字符串型) O, ?' o: w) j" d* B
Str : String;
2 |8 J# n3 n+ _; ~
$ g* D/ x: L5 Y2 {1 ]' M% Y9 _3 r Q3 k//Race变量为整型5 `( |4 j6 i8 c# ]
Race : Integer;
7 J5 n! w! b, R/ ?+ _: L; Ybegin) |, r1 v; g* k; `9 X+ h
( w; T5 E# N3 |$ x: A! m
//获取点击者的种族
3 n" F# Y4 f% ?* v% ]1 k* s+ } Str := callfunc ('getsenderrace');
. s* z( K2 |) p) N3 C8 s+ S4 Q: e* ? @& R2 q- u/ W
//将获取的值由字符串型转换成整型5 }; h% o9 T0 ?! n% x; l& r" J
Race := StrToInt (Str);* n7 O) P1 [: s$ }
4 G, K3 l) ?5 _' l4 y//如果种族为1,这里种族为1代表是玩家
1 U* a& `3 q0 t! q if Race = 1 then begin
1 O6 j4 o; O. @# f9 C( w) M+ f' z& d8 Z8 T s; s" Z
//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种
* {; h5 B7 K6 }5 l d Str := 'showwindow .\help\屠夫.txt 1';' b+ m' }9 S5 R& B; V
print (Str);
4 ^* T# ]* k9 a) ~( }: ~% [9 n% x' i# O) M
//小判断结束- }, y3 u! h3 q* W, o5 B
exit; - r* s5 S9 c; v% f: T; L4 ]! f
end;$ [$ N- g1 i. p O& n
4 k" o* i# M1 o8 A1 G2 u//一个语句段结束
* N! ~( g. Y" u) y6 D3 P& Gend;
3 L5 R3 S0 Y2 L6 Y, |0 q) ^
; ]* O6 I* G% N6 F. X: K//另一个语句段开始0 {& o- b5 d3 s( |8 u. O
5 C( y! K) L( F' l+ Q$ g//当从Help文件里反馈回命令参数时,做出响应5 J7 X) R9 l# a, {4 S2 r' T" I/ Y" [
) E1 H" `9 Q4 M$ t! \
procedure OnGetResult (aStr : String);
' `! h9 }# ?6 B4 |- V! wvar: |/ N7 l9 u8 P0 G* ^" J
Str, Name : String;, z1 J0 `: N4 w7 m- ^
begin! q4 ?1 }0 ?# Y [' W
% k- G/ ?: Z8 e+ J+ A& S h9 v' \//当反馈参数为close的时候就关闭对话框9 ` R3 p5 y# p
if aStr = 'close' then begin8 p+ k" o: ~: C9 c* V
exit;% V# K1 Y' G0 {! f1 J! z
end;# ]4 b5 ~# l$ S% l9 {7 A. j
$ O6 @: ]2 `7 ]3 J& P+ x; T: G! u//当玩家选择niujiao 的命令时2 h$ N4 f6 G$ Z2 [! p* g/ j
4 r, g" s. p( k1 t if aStr = 'niujiao' then begin
! _/ `, D a6 T. G3 e! Q5 ?
1 M3 `6 U1 P+ t+ X//检测背包里是否有牛角, X( e3 Q* r ~2 M, g
Str := callfunc ('getsenderitemexistence 牛角:1');7 `5 C6 B6 x. K( Z# \' w
9 K% q5 c# j) O9 [% b0 m: K* R1 v
//如果反馈信息为假,也就是没有: e4 o5 A6 G! H- U4 |; d9 A
if Str = 'false' then begin
/ l0 B6 v) L7 Y* ^- {
) G- A! d+ Q2 G* E" ], A//屠夫说话2 Y. o {" k9 Y
Str := 'say 快弄牛角再说';
" i, {5 p3 i2 F. l5 G print (Str);
% W/ R: P7 P7 S9 N/ m4 ^
- l4 m9 @# f# p' R' `. K, Y1 g//检测结束
$ r1 E+ K* X1 [( v! z7 \ exit;
+ l/ m9 ?( |1 ?7 @+ j end;
$ t+ a& ?2 V' |1 h! r" ~* p# I9 c9 X/ E0 ^; v6 R
//如果有的话就继续执行下面的) y( S: @% \' A
' p0 \5 T( |6 n: h( W" A* C if Str = 'true' then begin3 i1 ^% b5 Z+ W8 P: x5 K
+ I3 {+ O% f, I- r3 i; a
//检测背包是否还有空位置
4 g( y8 f& |+ B- `+ A1 z Str := callfunc ('checkenoughspace');
4 j) n$ b6 p, X; j% \$ D) k# f; f# z9 {5 s1 n1 v! O
//如果返回值为假,也就是没有& [5 ?9 s1 V$ _, V0 Y1 X) {0 Z, F' c2 _
if Str = 'false' then begin
9 |) D9 w( B$ V2 j6 z1 n( \
/ [8 j1 b7 u7 j8 O# b$ r) @//那么就提示物品兰已满
; n: C' \. ?5 E2 q# P" h0 v print ('say 物品栏已满');1 x$ a I5 l$ e
3 ]8 x; q0 R G//检测结束5 P f. L: `* p( `. g: j
exit;
. p! i' X! y' a( H/ k end;
/ g1 z6 L0 a2 W: t/ l! }
, q5 j. H' H9 w//如果背包有空位置,那么继续% `2 n2 X+ w0 U/ r( [+ \ ^. _
1 W$ a& m( h7 [8 v- ~+ F9 Y//没收牛角
% N. D7 d0 X7 N% ^9 B/ c; D8 P6 l$ f4 K
Str := 'getsenderitem 牛角:1';
6 r% @4 O+ i) ]& A print (Str);+ @0 q C5 T& b. c% a, `2 V7 b2 L
7 W$ z; \3 |6 ~ C2 t//给牛俊弓服) }4 s; e" W5 e4 V0 p6 `
Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';- s6 f2 w- x& n1 c/ b6 e2 T
print (Str);
+ T+ j2 B, W. V Str := 'say 收好了..俺最喜欢的衣服~';3 { }: x3 w( \9 U
print (Str);
5 M* l3 x2 F! j9 r# ?! T6 g exit;$ Q$ N( r7 f* }, a: O
end;
% u& }3 f+ v% D1 T/ T! C* B/ x# V4 \$ s. X& H, g% F
//判断结束语句
# V& v+ J- c1 P7 G& f2 k6 f4 ? end;
) G6 J; f% q- Z: [7 ~2 ] exit;
9 N" Q8 ^/ d+ s s' L& E5 e% b3 Y8 v# D8 |2 K# V2 d8 |
end;0 R- v8 r, ~* B$ a( Y/ W) i( C
& b+ v" C; ^ @, {3 L9 H" Oend.7 _: y8 G- N0 C
: E! j7 @; G8 S7 x8 d. ^
end; " ?0 W9 G1 v) n, z1 i r( G
|