任务策划:
V5 A2 U5 ^9 M B0 m9 x出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!2 W$ e/ k4 u8 D C( @& G& v; V
来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)
0 f# V8 g1 ~- h收集这些材料交给屠夫,他会奖励你东西
6 t3 Z+ {$ q+ J4 \+ M; x$ q这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。) i5 G& C) i+ k# }$ ?- H: l) A& v
8 `' Z7 |7 w6 {" ?2 y
目的:
t, M# Z# h; U体会最基本的活动都是怎么设计的
) L1 h# s7 l% [- D* ^: W( |8 i8 |. u' P
知识点:5 s! l, N- |2 k% T5 k- F
1、检测包裹里的物品$ o' r+ G0 n2 L. k2 e
2、检测包裹空间
9 a% w, r& a$ L3、给与物品
9 ~/ [% O) d' k; M! ^4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。% m: m+ F' a R8 ^+ J& y
2 Z4 L$ Z: H+ l& {) O5 g1 B3 I/ O
unit 屠夫;
' N0 {1 N6 P2 L* r" X
8 S- h* p- V$ u) m* n4 i6 \//下面的是通用的调用程序内建的函数。每个脚本都有的。) T" r/ _- B+ T* B9 E9 ]! B' `& M2 A
" k* [' W3 V$ V( u l6 ~, |
inte**ce! ^ z7 h0 w& C
0 o- M2 F q5 `* \2 ^: y3 m- y
function GetToken (aStr, aToken, aSep : String) : String;
$ ^7 m1 y+ [$ \* Zfunction CompareStr (aStr1, aStr2 : String) : Boolean;
; y1 w6 P6 W* \* tfunction callfunc (aText: string): string;
( k/ L) l. V8 o. {procedure print (aText: string);" g# ~* p: Z# {6 w8 n
function Random (aScope: integer): integer;
) u* @( O0 j( F8 `8 F. J8 Ifunction Length (aText: string): integer;9 Y' b1 k" `3 d1 r
procedure Inc (aInt: integer);& b% t; `7 g6 i! `" x. }
procedure Dec (aInt: integer);
, T' a# U+ e- N( I* I4 ]function StrToInt (astr: string): integer;1 d" r' K9 _. r# p U$ k7 ]1 o
function IntToStr (aInt: integer): string;
4 ^& }% V( I( M3 z4 K& V+ Bprocedure exit;* B7 W* F1 C: f3 V8 K, M
6 h" _" Z1 |5 J* \- Z9 n: j//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么
_$ F8 n! ~+ `! l) w- v, d3 `5 f
//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou
1 t) ~; \& Z8 O/ \; h8 j d+ P
" h3 X3 |" \6 H8 ]. v//第二句的意思是当左键单击的时候响应,
1 t" K% z3 Z5 Q5 i/ l1 u4 x, `# q) f
1 e! w6 x/ y0 u4 [0 wprocedure OnGetResult (aStr : String);
( x7 g( C/ W; \. O7 lprocedure OnLeftClick (aStr : String);" e9 E7 H2 g* G8 ?; R
0 x! Y& c& Z/ h7 ?* ], S5 n: G
//以上是脚本的头部,下面是脚本的主体部分6 ?8 U8 H2 J, ?6 t4 E
! O, v" V) t/ l6 F5 w
implementation6 F; k7 _6 N4 K
. w+ I, `& w0 O7 b
//当左键单击时4 P4 l5 D( g3 D: I1 A* n; ^
s1 I6 N" H" U8 Wprocedure OnLeftClick (aStr : String);3 ~( D: k4 Y' ~% i; W! a$ j
3 K/ S: l( j1 t1 u- Y+ D
//声明变量的类型0 |$ O/ K; i) `; C: i8 X k
var
4 |/ n- q' j; z( L. ~
# M s- [& M: i G$ e//Str变量为字符串型
. _2 d: y, y9 X3 a$ Q+ c Str : String;6 N" H3 D3 C7 R( d4 i) A+ t1 {
' @- g9 N7 Y$ E Q0 {) l
//Race变量为整型
: B `7 C+ D5 M! H+ m: m5 D$ J Race : Integer;7 V, k) j0 |/ B0 e5 H
begin3 o7 m4 G9 u6 D" R. P; y
+ a6 ^! g2 v/ |0 S9 q. J
//获取点击者的种族
0 q2 n" _5 N* ^. b3 } Str := callfunc ('getsenderrace');
1 B# J3 s, e9 D2 |+ W# Q9 h4 q1 b& F" C4 v
//将获取的值由字符串型转换成整型+ c) l' L5 t( W2 Q/ f
Race := StrToInt (Str);
Y" m2 t$ a# s' i
7 x7 @# n& ]9 B' o//如果种族为1,这里种族为1代表是玩家
/ O- N* }- j R; l if Race = 1 then begin
( r- b2 } P, Q" X. ]/ G; u! e. l% L- g: d
//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种
4 l- B% h+ B; R! M Str := 'showwindow .\help\屠夫.txt 1';9 d: V1 t, e9 L$ z7 J
print (Str);
Y9 n. m* q( ?) v) g# d8 Y f( N" r2 z: N
//小判断结束
+ t4 f9 T8 d y$ g3 p exit;
! B( A/ m, d& E7 |5 @2 v" D0 L end;5 U1 F2 U7 _2 [9 b6 a( K
; X" J. F# X* Y& k. Q! f5 S
//一个语句段结束
$ k8 h! y: E( Y$ g% Tend;
, {1 x+ n9 z5 F5 Z9 `, R# Z# k
3 x' f" o$ i1 V$ f/ S( w B- N9 z* x//另一个语句段开始
6 F5 }) T# x: P* t5 Y: O" l6 o: V
( p: i: S! U( x1 W//当从Help文件里反馈回命令参数时,做出响应
& U1 _3 ^- _7 i2 l" @' y- }6 D9 U* \
procedure OnGetResult (aStr : String);
5 q1 l, w8 o/ [0 Pvar
4 i8 f7 j9 F& @1 D% |; z% ` O Str, Name : String;
" x$ H Q3 n% x3 K& l' _: obegin
6 a% P' s/ Q0 D; t& l1 m" A% |; I0 Z G; O2 v% e
//当反馈参数为close的时候就关闭对话框$ @# V: t) p' l* A, {* l/ t6 m
if aStr = 'close' then begin+ b2 i( @6 V6 { p( w( D
exit;4 t$ k$ d. y- h6 b* V* k C* V5 Q
end;& i- m2 ~ s( i! [' @
& j7 Z4 }& ^8 M3 t
//当玩家选择niujiao 的命令时' N- E; Y0 ~' V6 T. n3 m
6 w# F2 Q# k+ V. {$ A' R5 q
if aStr = 'niujiao' then begin
) D _/ n+ _# x/ v
_1 ? x. i$ U4 F2 R& C& D//检测背包里是否有牛角7 p! u* N+ B4 T; s8 O
Str := callfunc ('getsenderitemexistence 牛角:1');; L) H/ }4 ^- l/ O9 \# r
0 M, y2 P9 ?$ i! ]//如果反馈信息为假,也就是没有/ }8 D- \, l: X* M6 P p0 H; y
if Str = 'false' then begin+ k# `4 I* J9 v. w/ u
- [+ B" f+ q- M8 z5 O q, x) S//屠夫说话
6 J W# b: i }% h Str := 'say 快弄牛角再说'; {! M, W4 e Y/ V# K+ X
print (Str);
8 ^! Y& Y" Y+ f
; D9 w3 m p" t9 o! ]# {" ?//检测结束/ f: |3 e$ S# g5 [" c( c5 y
exit;
6 M2 B$ K% f# D! `- v end;
) H# }1 E+ D" X- p
2 Z5 h8 I0 U d* H+ v* o) b//如果有的话就继续执行下面的
y, O. [$ O( l2 ]' I: o
! g4 X/ @( @6 D8 q if Str = 'true' then begin! K4 _( V$ F4 O* V
4 Z' g4 g5 \6 p( p. N//检测背包是否还有空位置) \. c, T s2 d: X! x
Str := callfunc ('checkenoughspace');9 F3 y1 ~3 y( F _" h0 c
c8 b+ i$ d7 [. h6 ^# v6 Q) |//如果返回值为假,也就是没有
: K. ?6 h% W! ?1 X( U8 k7 t if Str = 'false' then begin* \/ N7 z* H% a) R2 s& X5 }, a
# D& n# z: [3 G# |//那么就提示物品兰已满7 H v7 q }, w7 |4 a' [4 [" D9 B
print ('say 物品栏已满');
* K, T5 J9 U G- a- e
5 i4 l( A- a/ @$ V7 I: v//检测结束
V% A# Z1 ~/ Z* n* L" u exit;
- q! W/ `( }- b. o; T+ U& J end;- h* s! m8 ?" l: C* N
, u. d& v) h U
//如果背包有空位置,那么继续
" d6 ~! C% n# w% U3 E% h
: A7 H$ d( K0 L' n2 m- p7 M//没收牛角
# \2 N6 \% b2 m" E9 B& T
6 V, z+ b) D9 ~) X3 G" v Str := 'getsenderitem 牛角:1';
z! Q: M# @2 d2 g print (Str);
9 d2 l) I# s- n8 q; b/ F8 K/ A$ w: l: h7 T4 [+ `5 n2 c6 F I. W0 ^
//给牛俊弓服6 {! r. ~! H9 C
Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';3 i) v) E1 i2 T8 O$ X
print (Str);
# z: \; ~ t( X6 `6 w Str := 'say 收好了..俺最喜欢的衣服~';! Q2 B3 e) G& f1 I
print (Str);
( P" P2 v( i* T exit;" I" H6 y" U+ A" o* X/ X' L
end; b8 [ D8 {9 w' R# Y4 Z" X1 n* l3 [
, G/ u0 P u' e! x i1 p3 E# _
//判断结束语句/ x- [/ T6 E: k2 q; j4 g
end;+ H9 z" a7 h$ A6 K. V. L
exit;
1 r: D$ L" V% }' w/ @( Q% l& ]& K
end;
. O f9 v3 s2 [( w/ w/ W" }" v4 Q2 V S6 D
end.
1 A! y( }/ Y' B. C# s6 L3 M* S& s
3 C; Z6 W, T) m( hend; - e! L) q$ U+ } X N- ]9 X+ T8 |
|