任务策划:2 C- q* p; _3 x
出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!
0 P; M2 D( \9 Q7 R F4 v p1 f" k1 A来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)
m) ~& e3 N7 ^( M {" j# O收集这些材料交给屠夫,他会奖励你东西
! m# _4 P" B' w8 H* R5 {这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。1 e; N- G4 X e1 q c, [ p* U0 w
+ D8 E1 V2 a3 P" a5 J. z- P% b8 M* Q目的:3 Z/ C5 O2 ]! n) `; b. g
体会最基本的活动都是怎么设计的
% w/ i5 ^% t+ }# {5 ]9 a! r4 J/ w' x; _
知识点:6 ^( u% U- ]" m+ r* U5 X5 W
1、检测包裹里的物品
, L- x2 D, v4 }! J" u2、检测包裹空间9 B3 R1 Q6 i }1 e( s
3、给与物品
' ?/ S2 h: U5 q4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。
Y, o. l! z8 Z% h
6 h0 t' @8 g, ]& a" nunit 屠夫;; k% I8 n7 j9 ^! b6 f$ G8 M
% x+ @ G* @& ]1 Q3 N
//下面的是通用的调用程序内建的函数。每个脚本都有的。8 `7 m% f3 v, s1 G) A
6 n/ _/ @7 F+ F4 X
inte**ce' m' y! E H: e, Z) ~0 d
) q6 [. s. ?6 p# v+ yfunction GetToken (aStr, aToken, aSep : String) : String;
# Y8 Z7 R& ?# N# ^0 T8 Ifunction CompareStr (aStr1, aStr2 : String) : Boolean;
% x) p( T; L+ ^; K8 c9 a2 @3 Afunction callfunc (aText: string): string;8 X3 S3 Y$ |! o' ^
procedure print (aText: string);& h- H, y1 A+ J- K1 H3 O1 W/ Z% k7 ?
function Random (aScope: integer): integer;
9 r8 r3 |1 r: U8 D# i1 f6 [: [- L& Q+ zfunction Length (aText: string): integer;
7 ]5 z1 A6 l3 f5 e) T$ d, ]procedure Inc (aInt: integer);7 i% _& V: [! i2 V* T2 e Y5 d
procedure Dec (aInt: integer);1 w+ e5 T6 Y' g6 k' T0 h9 L. O
function StrToInt (astr: string): integer;
% A& p! I) G; A( Z# v5 F9 wfunction IntToStr (aInt: integer): string;
/ e3 b/ K0 V* |8 u# n! j0 nprocedure exit;0 J1 S$ s' n' J# r% I9 a% w
' o9 z3 W1 ~) K1 t//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么2 o( [. {# U* a) b& m
& P& T8 a0 m( C) m; P; W' P. z) V//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou
; a4 _$ c; I3 ^* k- a" v, J
$ J1 A) m9 J W9 K& g//第二句的意思是当左键单击的时候响应,: l) |# Z; n2 g: \0 p
3 g. Y( C: U; u3 Y" \' Oprocedure OnGetResult (aStr : String);
' F$ i+ z/ }3 K* s! U9 W# n ~9 A# eprocedure OnLeftClick (aStr : String);7 c1 }; C, {" _' C# h
1 [( f; @: R6 y3 p' _3 f s//以上是脚本的头部,下面是脚本的主体部分* s* P. K+ C5 B; o1 J* `( G J
3 p/ k- w( P. C1 B4 Himplementation2 p/ u/ P: m0 e& R S9 f% B
' A* D+ M! K% g
//当左键单击时 ~9 e" T \8 `2 Y1 ?: M
) s% ~' @% ^4 R* W
procedure OnLeftClick (aStr : String);
9 C. h7 W% ?$ d! {; ]. o$ B
: }; W y2 f7 z a$ K; i//声明变量的类型
) [% |! Y; b. K% y. ivar
7 \1 _( V: q( _1 n/ \& f- O' B# Y5 y
//Str变量为字符串型 q' @. Q% e8 r# A7 o+ J
Str : String;6 j% x( v' K4 `9 d' B. J
. m4 A9 J) G$ O9 E. U+ w# L6 \# T//Race变量为整型) [2 @8 `) m8 J
Race : Integer;
1 a p* E, {, {begin
! d1 R$ I: g; h7 @) G2 \7 B8 @. m' L
2 D7 ?2 o+ j _# i2 L# ^4 T//获取点击者的种族
/ J7 _; h- G0 O" o( j Str := callfunc ('getsenderrace');
: m' X2 J+ S3 b
2 @. Z/ q8 E* j; I8 M; K# f//将获取的值由字符串型转换成整型4 S( d1 i7 E# q% ~+ |$ M
Race := StrToInt (Str);6 F1 [: d, ?" R+ k
G- c, V! }5 l G8 j//如果种族为1,这里种族为1代表是玩家: `1 [4 r6 Q' z
if Race = 1 then begin
# m. v5 ]1 c0 E5 q0 a; U n. [6 J' M
//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种
3 F* d+ O8 v. U% r3 B( c2 N Str := 'showwindow .\help\屠夫.txt 1';
7 _ N, V, j2 K2 r5 m% ~ print (Str);
( b; a5 p! z: E- v0 s6 ?6 {! ^ w% R3 ]/ a v
//小判断结束& Z& t' T4 u# i* f; ~
exit; 3 ]8 a( _" b, z7 V, Z9 y7 ?, ^" h
end;
: \3 i1 t( @, h# H1 V _: b. j( V& d8 `, j G, h/ d9 K+ U" f
//一个语句段结束
' O) Z% t9 t' U! y7 }9 dend;& w; ?$ J2 l7 V+ f o' q8 a+ Y
) x6 K- d- l! @. W% @
//另一个语句段开始
2 u4 L1 C3 L% Y, \6 O' Q9 c: m% w9 p
4 S9 X/ H }; q& b f& [//当从Help文件里反馈回命令参数时,做出响应
0 q* W$ P- a5 U2 N) e
; G n/ ^6 ^5 R$ }1 W4 h! d) g# sprocedure OnGetResult (aStr : String);
7 [ A' N) X8 O6 u3 B, O) \var
# i5 U, ]0 f& ~5 e9 ] Str, Name : String;
. b& M; ^3 t( `) Hbegin7 Q. g2 I9 I8 k r6 l2 J0 v# _
7 W+ D. N; a4 w0 ?2 r
//当反馈参数为close的时候就关闭对话框
/ u" b4 z+ r% B R7 A. e if aStr = 'close' then begin
- v6 [8 x- H1 ^& D2 g( h- T$ ^- g# w exit;
5 ~( s0 l, n3 d. X4 E end;
/ |3 p! g! L0 g0 h5 U4 G5 a7 n: B1 i' a; s# m* ]- e
//当玩家选择niujiao 的命令时
- u5 h- `8 N; ?) G/ I- W4 h( q3 }' P
if aStr = 'niujiao' then begin% N0 n2 u3 L9 ~& o/ h P6 F' J
$ b' p4 ?; v) Z8 L# U% F
//检测背包里是否有牛角
! l7 D) [ K! I" M6 }( m; h6 O Str := callfunc ('getsenderitemexistence 牛角:1');
- `2 c, N+ p! n$ a1 `" T1 Z* H$ F- R1 G$ a8 y
//如果反馈信息为假,也就是没有& Z2 W4 g8 s; C" t
if Str = 'false' then begin
5 n8 v5 S8 v9 d4 J' _5 W" \6 N+ B9 q- q: o$ q
//屠夫说话
/ _' m8 w' ?3 {7 t' @" c Str := 'say 快弄牛角再说';1 n9 w) z4 C/ I: g9 v
print (Str);2 @& R* m5 q+ O; Y# s* W
8 w. C% g0 i$ P( f( w! ~7 L8 |% ?
//检测结束
/ K8 e, m7 f$ E9 a/ b% `# B* d exit;- p8 S. ~( R. h; M6 J
end;
) I+ q; h4 c; M. r! S. x3 a2 A3 h0 T1 l" y9 U# R+ I
//如果有的话就继续执行下面的
' j! t7 T. B) j: t; e
# X" Y/ o# h, X& }9 \5 ^ if Str = 'true' then begin
1 o8 T9 I8 V' L" X1 i; t+ h
. m! K6 h! m5 U3 |& S# j5 t: o1 u9 S//检测背包是否还有空位置
9 Q8 N$ ^; Q0 c! v" h Str := callfunc ('checkenoughspace');8 N" P" U% L6 |
1 R# k1 ^ X* d8 Q6 U7 R
//如果返回值为假,也就是没有
& i4 n- N7 W6 r3 \+ O, @2 Y if Str = 'false' then begin
$ i4 C2 G8 D3 D& l7 y u0 T: P% v
, C8 U0 ?; n5 V! }+ h//那么就提示物品兰已满
8 g& f1 s0 w8 ^ print ('say 物品栏已满');5 s: J2 o6 N, Y4 z- o) U/ {$ z& D5 E
q3 P5 X3 d$ r. I9 f! w" _0 f
//检测结束
6 s7 r* l, w- h6 f exit;0 Z# Q7 P6 W* r1 Y* T
end;
" A; b7 T% o- _' S6 H( X2 l2 i2 `9 M6 g( D( \
//如果背包有空位置,那么继续
% E6 i' N! f/ \% G4 a$ t# U) }
//没收牛角, L: ~" [$ P0 x0 d
6 @. g- {9 _, X% Z) O$ `
Str := 'getsenderitem 牛角:1';( c! K" B5 f% z6 v7 s
print (Str);
' t( ?; {, R o n$ G
1 F4 B% s/ f9 P//给牛俊弓服
, x7 E' i- w4 d" p5 m Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';
+ [# t$ u6 J* a( K9 S print (Str);
( r3 f6 I9 y& Z$ O5 O Str := 'say 收好了..俺最喜欢的衣服~';: y& N. u. D7 P! e c% B" o& c
print (Str);9 X. h! |- A; X8 l$ Y
exit;8 x7 Q/ i4 g- z
end;: f, ~% K, ?$ u7 `
4 Y( X& b6 \1 G4 T9 ]3 n/ g# i+ A//判断结束语句" f7 Q1 R. p, R( V+ ~1 g3 A
end;
* J* v' O0 L4 ]* |/ y exit;6 f7 [* R2 Y6 x0 k# N4 k
8 Q4 m# M" [2 n* n6 k, M0 ?end;: O2 `& O- }- ]
( m- V4 u5 `; Eend./ W( G% s! ^1 a- H
% z6 ^' u/ N% X! x9 Tend;
1 D6 q- O3 y& @/ D! g6 @ |