任务策划:* v! ^: Z0 t3 \4 u3 {# `3 Q
出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!
$ a; ` q4 [9 o+ H$ x; \来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍): w' K8 _' b$ ]/ j. {% x8 A# c
收集这些材料交给屠夫,他会奖励你东西3 ?, k+ b; s: r5 P
这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。( o# y2 Q8 p! {8 a" x
1 \: c4 s$ B% ~2 j5 @% o目的:0 B/ B7 y' Y9 j' b
体会最基本的活动都是怎么设计的5 X, [! f* r: H8 v+ q8 w
, d; l7 W% n, S知识点:4 J8 _. m S2 Q0 Z; ]# _( L* o; b
1、检测包裹里的物品
7 _: u' o! o4 o9 m* P- E4 T2、检测包裹空间
# } d2 y, v- H+ G* L9 F6 a3、给与物品7 E+ r1 I) h0 D) J- L
4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。
& H; G2 U, @6 x9 t
1 j4 I6 \: s o& N8 ?* X) p8 aunit 屠夫;) h# ~6 ?1 a: S& @+ }
; H6 s/ u- E+ n. e: F, c2 s _
//下面的是通用的调用程序内建的函数。每个脚本都有的。, X/ }" Y$ |1 g8 [9 Z4 Y2 e }' e
' A m2 N! C- y) o) q" w
inte**ce
. v7 b- Q! o% p6 w: Z
5 ?+ W3 p4 \! |# f) M6 b3 u' Qfunction GetToken (aStr, aToken, aSep : String) : String;3 C( L# I& v) k) R! E
function CompareStr (aStr1, aStr2 : String) : Boolean;2 x$ e; r! B; k8 X; O6 B( u o
function callfunc (aText: string): string;
2 c9 ^1 ]' M5 c; ]procedure print (aText: string);2 O8 j0 N+ x& v
function Random (aScope: integer): integer;9 l7 ?, e: u: z6 \) E4 L
function Length (aText: string): integer;: ]; g2 `% I5 T6 i* ^9 B% y8 _
procedure Inc (aInt: integer);
0 p: O2 H1 l G P6 r; d6 x1 _procedure Dec (aInt: integer);
( r( s* q% M9 X6 Dfunction StrToInt (astr: string): integer;- D5 c. m) h; H# M6 M
function IntToStr (aInt: integer): string;
- a, @. s, v4 Z4 k( zprocedure exit;
! o# j( K, z& h5 v! G g G
( g6 k: k, C& X0 _! w6 b; R//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么5 \/ I' s! T( u- H5 ^
4 i, G2 M# ?6 n$ S9 B% h, K( @+ X//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou% B% ^- E2 {2 U
, f! g. a) N) n
//第二句的意思是当左键单击的时候响应,
9 W% U7 H0 J. v; ~3 ]: R" s, f" U) F
procedure OnGetResult (aStr : String);2 [! B; h7 n3 H8 ?! D
procedure OnLeftClick (aStr : String);
" ?1 J( R+ j$ z/ y$ ^5 g
% \' j% N9 P% k//以上是脚本的头部,下面是脚本的主体部分0 o4 {0 r+ W) F, k. t* s- U2 M
7 W, q; s* p6 [
implementation
0 _$ d6 q2 [: W/ M1 E' _, K5 K- @# d2 \7 L# p( p9 c
//当左键单击时
: `% o$ F3 Y$ T: S( q: ?
; i4 v8 A7 X W. Oprocedure OnLeftClick (aStr : String);
2 _7 H+ E1 G) B4 n( s4 C) z0 S* i# H: N
//声明变量的类型* ?/ H/ p2 P3 U6 e/ X s
var
) O9 Z+ N4 d' ^6 C6 S) ?. Y% L9 q; u3 u+ Z% u
//Str变量为字符串型7 O! v" G& h# l" J/ w$ J8 L
Str : String;
5 S: N7 m5 S4 F# C
+ r% n% }0 }- ?* P//Race变量为整型- G+ {$ v2 V7 I! K1 D, v
Race : Integer;! J& d) v' _7 ~& M/ t
begin
3 ?- c+ H' v- X+ v* q4 k5 y& `; G" z: A9 C2 o$ s0 t/ g4 G
//获取点击者的种族
j% K. B) ]2 ?& l" y+ x3 c. d Str := callfunc ('getsenderrace');
6 s) |9 D' \: d, n; r, L8 ~/ E5 Z
0 n/ h w$ `2 V//将获取的值由字符串型转换成整型
5 X. k# M( X! G- j) T @ Race := StrToInt (Str);
. W. Y" n- H0 z8 H9 @+ }6 t$ Q8 K
//如果种族为1,这里种族为1代表是玩家
5 ]7 E; Z m6 K1 G& }* Y5 I if Race = 1 then begin" j6 {, Q9 w" y# b9 k- V
- u$ q- B- r6 q- [2 {" k% P: O//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种# F5 J% s3 [6 {% R& D6 a8 T: f' k
Str := 'showwindow .\help\屠夫.txt 1';
q- y7 J8 ?7 i, Z4 I print (Str);/ ~/ s* [. \2 D6 h. a3 f
# |* v! a4 A8 R- {& d//小判断结束9 L8 D5 H. a, r3 F
exit; 8 }$ Q, P2 \/ ]
end;
) T1 M" ]' {/ D h9 _# p2 m- O( R, E- v
//一个语句段结束
" R, T% i, v2 p k% n# N2 \4 ~; Tend;
5 b- m$ l t& ^: v! K( r: ]: d
- S' ?7 @- y$ O3 a9 h$ `//另一个语句段开始$ Z) h1 N( n& o* X- o' t
% @. Z: M1 o/ H0 p
//当从Help文件里反馈回命令参数时,做出响应; B @7 s9 m% ]4 O/ a2 K
6 a. W& C' s6 Z; V0 X! g' ^0 L
procedure OnGetResult (aStr : String);3 O" u% I7 I' d5 {
var% p6 Z3 h7 {8 q( p% z
Str, Name : String;
: h' ^/ h+ } A# fbegin
* a! b( Y% b4 m/ L e* R# o7 f1 @; B2 R' m C7 \8 `
//当反馈参数为close的时候就关闭对话框
8 W( j3 M0 N" p if aStr = 'close' then begin
+ G% @) I/ K/ P9 B exit;
+ d. a& o7 g4 k8 x- ]& @, ~ end;6 F" Z1 a2 w. ]. N, E' A+ w$ r- f
+ r9 E8 K5 r0 ]3 r
//当玩家选择niujiao 的命令时
3 l" Q( v) q( s% T
6 ~: S0 I, _6 @ Y# m X: s if aStr = 'niujiao' then begin2 L* Z" I2 K$ G+ z
- E: f! D0 S# G( g- ^' R//检测背包里是否有牛角
+ O9 X' n v) [ Str := callfunc ('getsenderitemexistence 牛角:1');1 L. v7 x$ Y8 }/ k3 `) _3 T& H; a) T
* m" c' [( s$ q/ J' O: m
//如果反馈信息为假,也就是没有
+ |5 A, x2 _# f2 O: D6 D9 \ if Str = 'false' then begin- ]2 A1 t: q, o+ W3 v, J( F" v
v" d u, s4 K$ D9 N//屠夫说话6 f, t, q) W2 Q+ I3 @8 c4 u
Str := 'say 快弄牛角再说';
# h" O2 E6 y M9 w6 k0 F print (Str);
3 B* m5 J; K {; a6 R
) X4 Y- P: ?$ E//检测结束. |+ ~& m% Y$ p' j4 M4 `
exit;' i% H/ x7 C- I# e
end;
4 v* d$ N5 p; y( I1 E/ }- Q- X. y8 c# K" J
//如果有的话就继续执行下面的
& K2 L" _% b# u) L9 Z9 M4 _; V2 A
if Str = 'true' then begin
+ z2 p/ ~/ D- ?# w! U
2 R5 I) B8 |% j, s//检测背包是否还有空位置
3 H* Y* z" ?& a @/ s Str := callfunc ('checkenoughspace');
6 G& M: d1 L8 m) Q9 J* E6 E. F" d' A: Z, U$ b% h
//如果返回值为假,也就是没有
0 d) O: L0 m6 b% g: a' J if Str = 'false' then begin( J( A) q3 X* W6 H8 a' t1 v* T
4 ^) U1 Y9 m7 E7 k. J; v//那么就提示物品兰已满
G! W0 r) W6 H1 l5 P print ('say 物品栏已满');
" d. ?! Z4 \0 g5 D3 I @, `; s+ [0 z0 K
//检测结束
7 t2 S2 C$ i* i2 K$ T exit;
! ~2 w, t1 [4 G' t) x2 }( \ _7 L end;' _. c( z- o4 |( c6 X/ k3 V5 B
# s6 Y# t* J2 n& Y: g6 }//如果背包有空位置,那么继续
5 k& p+ i6 k3 G8 P* ^; z5 m/ b% e" E, ?: d/ O9 ]6 h- u
//没收牛角; n. Q- G, p8 l7 ~
/ p; D5 M# t( G! @3 a& E
Str := 'getsenderitem 牛角:1';' c* F$ K% S" z) o! j- O& K/ Z
print (Str);" Q- Y1 x) T4 v
$ T- f/ W. S, d" k1 Q* n//给牛俊弓服
+ ^6 B: _' S) M4 ^; k/ q, k# m% F Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';
6 w0 T. I' w7 c7 S6 a! n3 P4 } print (Str);0 J7 `8 U( L2 r$ d& @: m8 D) S$ v
Str := 'say 收好了..俺最喜欢的衣服~'; i) e2 w; P8 G
print (Str);
A! }" C6 w1 N+ W# X! o exit;
# R/ s6 l6 L9 V* m2 N7 y3 j end;
7 ~! w8 n5 Y8 c c4 y
2 W- Y0 Q, J! P& h' ~//判断结束语句
7 p4 L1 j2 H v, I: P end;
$ `! @* d9 v! C3 R exit;
4 I% v9 j* q6 ^: i' H) I/ p/ A; m: T& `; ]& M$ k
end;% A3 S' [! m3 q
: {5 C2 O. H+ }) L6 i( j) H
end.. K# _6 D6 n9 s: W( c4 m! P' }
& f; Q0 L* c4 A( o, W
end;
+ Y8 b* a5 R6 H' d |