任务策划:8 d; Y0 @) r+ n7 y$ n2 t+ N$ c V& g
出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!& G$ z$ s' P# `2 |' c% h# |; O2 I
来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)
( a5 P; o* c$ Y* Q5 P收集这些材料交给屠夫,他会奖励你东西/ l" G! G' S8 f4 r' t
这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。/ x, u8 ?) H. X3 `2 d
! S& x, h, @4 ~! a7 l
目的:
2 V" C8 w1 \( b& J, V0 ] G体会最基本的活动都是怎么设计的
' C3 U- |' Q r7 V B2 ]& ^4 F2 d2 X1 @- k& r) E Y# h) f5 V
知识点:
( U5 ?5 o' s) U/ u2 A. C9 D1、检测包裹里的物品, G- S8 H3 p, Z, v8 [* \$ D1 b
2、检测包裹空间! t, c J; O: L4 d
3、给与物品5 t- x; a n* G0 s+ f' @* F" u
4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。
+ F: C, G. @8 k! g' `1 D% @; n
" N9 k6 P! A5 |6 n" Eunit 屠夫;
( f4 b y& j- \6 y Y
! d7 w/ Y' A5 T8 Q7 W- v//下面的是通用的调用程序内建的函数。每个脚本都有的。1 C3 U8 z3 y7 ?2 [
: `( b: h% K* _+ T& V. |1 A
inte**ce. d1 X2 v( c2 C7 p, I' e8 a; o
7 ]8 Q6 q0 Y6 b0 k) n6 X
function GetToken (aStr, aToken, aSep : String) : String;' w" Y& \8 Q( `3 r4 \
function CompareStr (aStr1, aStr2 : String) : Boolean;
0 ?; |* t) h" g, j4 k" Yfunction callfunc (aText: string): string;
: P2 G/ m6 I: T' }procedure print (aText: string);
' _" @2 c0 c( ffunction Random (aScope: integer): integer;
' i+ G& H! q/ L afunction Length (aText: string): integer;
- ?1 U2 @8 c$ ], i6 dprocedure Inc (aInt: integer);
( W9 F0 y4 i" zprocedure Dec (aInt: integer);
5 B K9 Z }! V* d- s3 efunction StrToInt (astr: string): integer;: h$ r: G- {# D8 A; _: C9 q
function IntToStr (aInt: integer): string;
( x3 X# N* c( ?procedure exit;
: a/ ?. U4 w% e7 ]. A6 q5 U! _8 C5 B @; s" ~ u2 A
//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么$ X5 h4 G' O$ g6 y: r5 K- _, o
( s0 i/ K- ^7 Y/ {! K//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou
0 C0 V" O$ e9 ?9 }8 e! ?2 j7 A- L0 N" Z* [7 }
//第二句的意思是当左键单击的时候响应,) T! f S1 E H" Y' k) b+ x
( \% [8 D! t9 J" M' `% zprocedure OnGetResult (aStr : String);
. Z6 w% Q9 r4 K' }$ z1 oprocedure OnLeftClick (aStr : String); a3 J8 R$ J; M. {9 X
{& j u- F; O$ U! ^. a//以上是脚本的头部,下面是脚本的主体部分3 v* h, S2 k8 |: f/ b5 e$ l$ Q
Z+ R2 `0 n! Q+ N# U# {2 m. E* \! Z
implementation
t% u2 J$ l/ q$ F8 {
8 P. V6 I: a1 H; j//当左键单击时
! U- w9 A+ I3 R4 ]' _! F
2 }) w. Z! q/ p1 g, P* lprocedure OnLeftClick (aStr : String);
; P" R& K- K! @5 L
: ?! w2 n1 r5 R9 i% P" K//声明变量的类型
! `8 C, ]6 t3 f% e( Yvar
* G$ R; q' b. [, [8 Z, w# _( N
: r+ G( X, ~ Z. W6 X//Str变量为字符串型* z, Y5 |- G5 y) N& m* {& E$ W
Str : String;
+ Y7 ~: f9 l0 E1 a2 W, p4 b
) ^6 E0 p3 j9 L3 H- K//Race变量为整型
0 r; E1 |( Q0 _- ^ Race : Integer;
1 w# t+ t2 i! M: V3 P' u1 I! @" _begin
: n# {% s4 {: W' W& \' s" f5 L8 T" p n- Y `3 t, x0 [7 x
//获取点击者的种族
4 C$ U7 e0 ?+ G5 J0 f% I* H# F W Str := callfunc ('getsenderrace');8 K3 w6 Y0 T6 m$ F1 B- r+ ]2 k _5 O
- H2 l2 f0 Y; d. b I* W5 _
//将获取的值由字符串型转换成整型
2 y/ y0 N: N9 ^& J9 C Race := StrToInt (Str);
) ]/ @& _8 h- M: h1 Q
& M' s9 q) B/ u& E//如果种族为1,这里种族为1代表是玩家
. @) R+ j) m0 m$ v& |5 e if Race = 1 then begin
" ?5 X* K R1 y) K. z- S! Q) a* B
//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种
3 h: v0 J$ I) m1 ^. E* ? Str := 'showwindow .\help\屠夫.txt 1';
5 Z" ^% Q; \5 _, H( c print (Str);+ n. ^0 C! a* Y+ ?. v0 N
3 G$ ^4 c6 h8 |//小判断结束
$ E. q+ {5 D. r" n exit; 1 F; P" ^$ S" O" Q% `& r
end;
- t+ J& O: {7 |# \! n/ t/ p3 n& @" e% ]3 l9 ]
//一个语句段结束; [5 I+ l7 |5 E" E# I. s9 W! U
end;: _2 R* z2 @7 q! M9 d3 a; N
Q: [$ e+ ^; a7 X3 L
//另一个语句段开始" X8 @$ a4 x' p/ U+ X
+ q1 f2 w6 B( F1 f4 a) [
//当从Help文件里反馈回命令参数时,做出响应
3 `! d, ]+ o9 ~5 K% _0 k
* k$ l& c7 j" _& G. kprocedure OnGetResult (aStr : String);
# i6 J; t, l# ^- l: @! f3 d4 Fvar
3 x" j0 _+ \0 {2 \ Str, Name : String;. N* l" ^& [+ G5 y; V5 a: X
begin
' V3 r6 |% v+ U4 @) `0 Z+ ^" N0 h5 u H/ C- F' g5 m2 @* Y
//当反馈参数为close的时候就关闭对话框; \3 g4 {1 v) A$ b
if aStr = 'close' then begin
. a1 H& J: t1 P& E8 D7 k F exit;3 z+ t. u' X! }% q: x, v/ K1 E& d
end;/ T1 E) o1 x: M0 K0 \) U% C
8 u# ~, B# Q# u2 k
//当玩家选择niujiao 的命令时
% o) F( m* M- _, v" k
- N! G2 p+ n6 P& c6 n# v6 W3 } if aStr = 'niujiao' then begin
. H t) y: c( w" x& \4 y' i
7 m/ U2 B. a& }6 R3 Q" p% ?; N//检测背包里是否有牛角7 U/ V8 {6 ~' D" I6 r3 {' I& Z
Str := callfunc ('getsenderitemexistence 牛角:1');: h; T: v) A" j6 L! u9 h& { `
* e0 Y2 F$ e& a. S) u//如果反馈信息为假,也就是没有
( C9 M5 g2 E% u( q( P4 ~ a, q if Str = 'false' then begin5 _9 j2 v' a6 ^3 `( X5 r
" K% z3 m: g4 n
//屠夫说话! `* N- i% E- a* b ~
Str := 'say 快弄牛角再说';
; G; T+ N8 P; ]; e) F( }* Z9 m print (Str);5 H( g' K/ g" P. z
4 l" }+ @6 y- [) u* E8 y
//检测结束
5 h# T+ v j: B3 r$ M exit;& D: ?8 \* I7 Q( X8 N/ o% A
end;9 A; m/ r- S+ o5 k( x
6 d9 C7 S9 P- w//如果有的话就继续执行下面的% x k* q3 ^; U! P- z
6 S: `0 p6 W. X% u5 ] if Str = 'true' then begin
) T3 `/ p. f" f$ ~+ x) r4 W6 K1 i8 e# G. L8 a0 M
//检测背包是否还有空位置7 A& {: U: ^4 D( \; O
Str := callfunc ('checkenoughspace');
# \! d2 ~3 J4 T0 i7 g$ X! l. M" v
" @! P, ^$ h$ v0 F//如果返回值为假,也就是没有2 _8 h4 O: O* W
if Str = 'false' then begin
5 m8 @: @5 E4 R: U7 c
|( t, X4 l9 T0 z//那么就提示物品兰已满, q" w4 U7 I+ H+ y3 a
print ('say 物品栏已满');
9 U6 K+ L! b7 N+ J- [
5 J, s ?% @9 N4 [( |: p: u//检测结束' i, d( u' k7 I& @
exit;; y+ i/ y5 Y* p" K
end;( T6 W. }$ V" a3 G b
! W# ~# ^% u0 w" t
//如果背包有空位置,那么继续
2 c1 v8 ^0 P, h3 W0 ^
( u* H0 Z' s) E. N0 D( C//没收牛角( y% h- P' x8 ~8 Z2 ^+ i! z: {
; [3 ^5 K6 H# A4 w Str := 'getsenderitem 牛角:1';$ S3 J, w: F( T6 o! Q" p* J
print (Str);
; ?, E- V2 y! O* V3 l J: I
3 E" w% k& Q2 p+ I& u5 c( n) V//给牛俊弓服
9 m8 h% z$ C7 g2 ~5 v3 } Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';/ ~, @3 f: u1 S- T' M' K) i3 b
print (Str);2 v0 Q6 B+ I7 n$ Z, j
Str := 'say 收好了..俺最喜欢的衣服~';
& S: s0 \% f5 c {) `8 b9 c* o; o; B print (Str);
1 g% g7 m7 \" n* s2 d, d exit;
* T: u0 Z. T8 z; [ M/ h1 Y end;$ [. {% s3 |+ Y/ p4 b
* d' U( {4 k- ^4 q {- @//判断结束语句
4 o, J7 J7 k+ D9 p+ f) D: N end;
7 J1 `2 c; |; c- V# N' H, k1 \$ _ exit;7 H7 r! C2 q8 p( W1 X0 Q9 `) }% Y% \
$ Y* [% ^6 b: U2 Bend;
5 V$ B% H# Q5 y0 G. ~; T6 D% g, J
& O2 Y& Y! F( n# C4 oend.
! h% C2 h2 |- x0 x9 ~7 O
5 e& x+ `" F, m; w5 U( k, Lend;
8 I5 v( H& u, N. @# M. T* Z0 V; ~ |