任务策划:
$ W' q. y% K; e, w/ G1 Y: u, Z出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!
, Z4 Z9 q/ |( Z, G1 ~/ D来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)
' L) U3 F. g$ b9 K+ e' Y收集这些材料交给屠夫,他会奖励你东西
8 N; N5 ` E! B; n7 C这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。6 n5 }2 ?7 z% C; v6 B* J
; Z1 [4 _5 d/ v2 |# O目的:
6 S5 y' S; ^! z- x% W5 \/ M体会最基本的活动都是怎么设计的
7 P$ `. Z% a8 L# v6 e6 o
. A$ H, d9 K# B t. h, Y& z; V知识点:
( U9 X* o9 E/ Y2 A% Z1、检测包裹里的物品
6 C! U2 T6 |0 x: W. \1 j; L0 b0 a2、检测包裹空间
" U9 Z" @& L5 P' W3、给与物品
F% ?# z* J. b6 e) ?: _' _; m4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。
) F) y4 t+ f( T" b; l' W5 m; p
% D; D4 P6 S1 L+ K/ ?/ e o- n7 uunit 屠夫;
+ Y8 R D* C1 S/ D Q9 g
$ a. q* v" g( s9 _0 }; O8 f//下面的是通用的调用程序内建的函数。每个脚本都有的。
6 r- d) ]1 _0 f9 D: W" ]0 v6 R9 H" \9 h: m) k6 \$ p
inte**ce
$ W. V3 ]" C4 w Y+ j0 G) y0 _3 d0 T+ c- J1 K# b' O
function GetToken (aStr, aToken, aSep : String) : String;
; J# j0 O W) H$ l4 Efunction CompareStr (aStr1, aStr2 : String) : Boolean;
m9 v$ G6 p' [7 ], |function callfunc (aText: string): string;% e! l% Y" T( [
procedure print (aText: string);8 E& n8 S- L! E8 Y! h/ n) m
function Random (aScope: integer): integer;- t7 V& q% M% @1 G
function Length (aText: string): integer;
3 f; K8 M" P* `, }" S: w# Oprocedure Inc (aInt: integer);% W( {" U7 e* n" W' S+ I
procedure Dec (aInt: integer);
! E% p: w0 \9 q$ _4 g0 |function StrToInt (astr: string): integer;. I7 D! n6 c4 s# O. S
function IntToStr (aInt: integer): string;
1 L# L `& u- G9 ]0 T( ?procedure exit;2 }5 J' P: o# Q" ~0 w$ F
- X6 l0 A# }+ a/ Z, w7 z( b
//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么$ Z- ^3 |# W% ?- j' N
9 a0 R( ~$ ~/ }& {7 O6 D8 w/ |
//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou0 Y7 k& Y9 D; u# v F
; b5 F8 S' ~, v
//第二句的意思是当左键单击的时候响应,1 s6 R5 `9 p( A0 T" e; j U
1 _7 o* E* A& b; U
procedure OnGetResult (aStr : String);# T: A. @1 ]: b. r
procedure OnLeftClick (aStr : String);) E0 i2 ?7 E' t3 f9 E$ e7 j
; e0 Y j! C0 x# F$ E
//以上是脚本的头部,下面是脚本的主体部分4 k- x4 J) W5 n6 c% C, u
. e, N$ o6 O" v+ gimplementation8 H9 b* q# K( C+ ^
3 \$ Y3 l& L t//当左键单击时" u- {2 j3 b0 D# X- q9 m7 N1 E
2 q' F5 d) q( s1 ]4 Fprocedure OnLeftClick (aStr : String);. n/ L5 x0 M$ n: o& J. g
7 g+ X$ ]( H3 N5 t//声明变量的类型' P k) Y5 g# x2 @: z( Q- V* d
var
4 U3 L) M4 j6 \8 j
& z0 b: r, n! g' ?! J//Str变量为字符串型
) K6 ~0 e: @" F, G% x/ P Str : String;
# @ s8 i+ N7 Y6 A) w( u" A( M" \: [3 Q
//Race变量为整型' O. d/ F5 Y; c0 J& [0 B& `
Race : Integer;) I) b- l! D7 `" j# Y
begin) k+ ~5 B' A9 V
- ]0 f O; c/ i$ d4 B//获取点击者的种族, g @- M c, Q6 f. Q) ]
Str := callfunc ('getsenderrace');+ x3 d3 j+ M9 s; G" B: J! {
* a6 Z1 g) ?) d" X3 ?//将获取的值由字符串型转换成整型
0 S5 W: ?" I5 e4 ?1 t9 g' p Race := StrToInt (Str);
+ L6 H7 n) m/ H9 s7 g8 K( s, @7 J: i; R5 v/ o% r: H
//如果种族为1,这里种族为1代表是玩家 k* R% ^/ H I+ j$ a
if Race = 1 then begin
; m6 M" p: s3 F: l3 x- K. h5 z7 b7 J! f @2 p0 {( W' A
//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种
" \* v# A! Z2 q S Str := 'showwindow .\help\屠夫.txt 1';
, x4 F) a/ }1 \0 B. b/ R% I ~$ B print (Str);5 \% A/ B% V/ p. P2 c
- d2 N* j( M2 I/ h4 ~* @
//小判断结束' i$ \! P8 ?* f* n$ b
exit; ; f7 Y2 {( B6 V$ o9 n
end;
/ k" Q$ ]9 X+ }9 e h: [4 f* V# A0 j" U8 `
//一个语句段结束% _5 `* h: [3 A& F3 T8 L8 d% }; g
end; e0 k" A' ?& L4 v+ {2 |1 g
v$ y' m. X: s8 ^+ r2 P/ Z* H7 \4 H0 f
//另一个语句段开始
8 p9 `, L3 Q: s+ q! `5 Z# |, f3 i7 r1 B* d1 V* u: m0 y
//当从Help文件里反馈回命令参数时,做出响应
9 O3 B3 h! I; X/ x2 R8 }1 r. N; }9 f" v. b& ^
procedure OnGetResult (aStr : String);
' ]3 e; u5 x* L# J5 W( }var
l6 i/ j3 T/ l2 |/ o s# m Str, Name : String;- D7 h# k! ?2 j$ U
begin$ b9 h( Y* w& Z2 f
) h. F# Z- B& }: P1 b0 w4 e
//当反馈参数为close的时候就关闭对话框
, M+ L: n- v8 L! ^& w6 @ if aStr = 'close' then begin
* I6 L% T6 L( E" [0 o/ v) ]; d8 i exit;
4 n! ^, R' V( [. K- Q end;
$ V0 L+ ]- _% a3 S& L! t! y* J! H
* g2 W, C& Q; o; d* S1 Z//当玩家选择niujiao 的命令时
% Z0 C! `4 ?" \# W9 b" @' e4 c( b
if aStr = 'niujiao' then begin
H% p4 w, m% u# e2 q2 i3 x i( P, U4 d6 b( Q
//检测背包里是否有牛角7 q# v$ V; [+ Q; M
Str := callfunc ('getsenderitemexistence 牛角:1');4 g0 J. V( ? `0 c
& @& S: r8 \ e' r8 n+ f//如果反馈信息为假,也就是没有
3 p: m5 ?$ V$ R( M3 t3 C) Q) V& `5 X if Str = 'false' then begin
. f5 ~2 R! i6 O \7 Y4 E( P: s
1 \) b5 e# p- I//屠夫说话
; A- c) @8 J/ S7 Z, R Y8 y; p Str := 'say 快弄牛角再说';" \1 i9 n$ e |: @/ _0 P
print (Str);
4 v% d0 j$ F9 [8 ~7 C/ f$ M- H
+ l8 J7 }# Z9 p1 `; U//检测结束* \; ^" v' F. t" S
exit;( |8 W0 z; A/ A4 ~- U9 ?
end;( {0 g1 K( [* `8 ]
b8 W x9 W8 R2 |7 N3 U+ `//如果有的话就继续执行下面的; t. H* N- v* h" ]( r7 U, ?
0 _8 L) V. Y y- I2 v3 h if Str = 'true' then begin
$ x. h) ^3 T) R$ z3 \) C' v ?3 a
//检测背包是否还有空位置
8 N) h; w2 i, d$ R5 k5 Q+ F Str := callfunc ('checkenoughspace');
* t3 R: p% I4 ?$ S! F3 ~, s3 n4 j1 ^9 f8 [- J' ~6 E/ a
//如果返回值为假,也就是没有9 s% F. b, R1 ?- E6 b8 `& @# y+ Z
if Str = 'false' then begin3 t6 R+ z, f) w7 j# P1 q, a
& N9 S) j, f+ k, e. E% z
//那么就提示物品兰已满0 e- A9 y2 x/ i1 H
print ('say 物品栏已满');
. A5 S; V' J1 N3 O
& ` h( l V8 d( l# Z# J' G: C# R& g//检测结束5 |* M$ o }! W8 {! H
exit;) i& }1 k. t y6 W" q) N
end;
& n' {" M; z8 b8 Z- ?) C* Y
6 C- n' {6 I/ v2 b//如果背包有空位置,那么继续0 E. i% K0 v1 l( a ]% w
. ~/ v# b) M# E- _4 u, b8 _* t7 @//没收牛角 y0 b" c0 I, j1 o+ [; K% x* M
8 c! I$ S9 s# ]# _: C
Str := 'getsenderitem 牛角:1';: Y5 p( U3 K/ \. o/ {9 ^1 A
print (Str);
% V% r5 j, C8 L& m3 H* ~9 J: j! I
//给牛俊弓服, B$ ]( ^8 P) s& S" r
Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';+ d$ c) t# X1 t0 q- j
print (Str);
; L( Z8 R8 c/ L5 Q" T4 B Str := 'say 收好了..俺最喜欢的衣服~';1 `( `% T8 T n' x7 `0 p. R$ [
print (Str);; R" K5 ?8 n; i9 T5 E, x* u
exit;
5 I% V3 _+ B" l! W( M5 @8 K end;
* O2 |2 Y: N$ @9 F" @- ^" s3 h5 |
/ n" X, v1 N1 Z( f: c//判断结束语句
1 j! I, D5 F" A- V8 _( P" w q end;% I, s& B: X* F1 G$ _8 I
exit;/ e% y& o6 l4 q# W- O- d
* j5 \. P' w+ ~4 L$ gend;
6 x/ N* R; e8 ^# @& N; r! K" H$ w/ c2 V1 y9 T- u( @5 r9 M; U
end.
. Q$ m; s& P! ~" O+ }9 m
3 ^6 V, A, J; e/ |end;
6 t; a2 ^: | @: t6 b8 c K |