任务策划:
: ]$ s0 m& P+ `出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!% N0 V' J- r9 i
来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)# ~# {; F k5 g+ W6 E {9 j! C
收集这些材料交给屠夫,他会奖励你东西: f8 P, T$ G c! X
这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。* \! b9 y( B: y, T
2 C8 Z3 ?; Y0 n+ q% q
目的:
5 z* D8 o0 I9 O体会最基本的活动都是怎么设计的; g$ j" B" P; Q7 c* F& } O
4 z# ?/ z- w- x& h2 t6 Q知识点:2 }. F5 n+ y; q5 S6 C1 v
1、检测包裹里的物品) r }! @) H2 @7 n
2、检测包裹空间. |' t0 E3 f2 `5 D3 [8 E; ~
3、给与物品5 ~( [, ^2 R9 A- |. M
4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。
( W6 q6 ?7 ~1 m( t3 C* J# q
; W* m9 G8 S" c. K6 ?$ S, Ounit 屠夫;3 o+ T0 K/ ?: U( h7 C4 l
. K8 O2 b Z5 o1 d' y8 v1 t
//下面的是通用的调用程序内建的函数。每个脚本都有的。
0 H$ u, J/ U! T2 I! r8 n& a& W" w' D: R: @
inte**ce% q. m/ a: F" R* s% |9 H# d& m
3 W# y- } H, w1 I. R4 a
function GetToken (aStr, aToken, aSep : String) : String;6 S) \$ c, m# T: m# N2 n2 c
function CompareStr (aStr1, aStr2 : String) : Boolean;
( i+ S0 e' T1 v% d7 wfunction callfunc (aText: string): string;1 f1 M$ u* b6 i3 o! W" d8 w+ h l
procedure print (aText: string);
9 J( P0 W& {+ t6 u3 o; }6 Ufunction Random (aScope: integer): integer;% W t5 z: V% d& O( f9 l$ i$ n3 ]
function Length (aText: string): integer;
% ^: g i$ b9 f$ h1 { D. S# a `procedure Inc (aInt: integer); F! o& ]7 J+ D, |0 x
procedure Dec (aInt: integer);
! [' S, L' M, S5 A' ?, kfunction StrToInt (astr: string): integer;& @: {) l( v% s+ Z
function IntToStr (aInt: integer): string;
" O2 E% T2 r2 Cprocedure exit; {' p, ?* Y. L& A$ B
: J0 `; I$ |( h7 O9 a& P; a9 k4 ^
//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么, ]( t! g5 }3 g" } {
) G* b% y* u* u5 m
//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou
" X ~/ F c& y7 s1 {5 V& Q% H1 x) C& Z* G
//第二句的意思是当左键单击的时候响应,7 I1 J" j# Y$ a: f$ m$ \1 u( U
3 y `$ ?; {- U# c& eprocedure OnGetResult (aStr : String);
. r1 y% E- K4 U# P7 b" hprocedure OnLeftClick (aStr : String);5 [6 w# r) S& Y' F" m
/ Y L9 P n* ~3 D//以上是脚本的头部,下面是脚本的主体部分4 L: j6 U, `" E' b: p# V
$ H- u! ~8 {; q" x" K- d/ C3 aimplementation9 h. `, G C/ @% Q0 z* j) w
/ \* [5 a0 g2 T6 R5 L5 y. d' Z//当左键单击时
+ O0 K) g7 n* L* | ^ Q+ k7 B1 {) k1 A. S) A7 K
procedure OnLeftClick (aStr : String); q; ~; Y" r* ?& k
, E- n1 v4 W3 w ^
//声明变量的类型- u H$ F) V; u4 q5 w1 G! v* _! H
var' z1 n ^1 T& N: I& X
! z/ q+ C9 W7 \- y" T//Str变量为字符串型
/ `8 n" t" E7 H2 m Str : String;
* b! A5 c/ E( f8 L$ y, s
/ s: X0 L' M: D7 ?& F1 q- z; I- I: H//Race变量为整型
( c0 [- i. F& w Race : Integer;; |2 r! R5 `. {, w, y( ~$ R# p
begin
+ G% e4 G0 b0 L/ n8 v# z: y) T0 A& r" E' O3 |' B* {8 |% B
//获取点击者的种族7 z2 c6 s5 Q- d/ \
Str := callfunc ('getsenderrace');2 n2 L6 P7 |* j9 b
. q r4 B" o* x- v J% o. D
//将获取的值由字符串型转换成整型
% ] L }: W) h Race := StrToInt (Str);
, k; _" N" z: { g& S/ [1 N( e, r3 \/ {, G2 k4 H; m5 q& k; Y
//如果种族为1,这里种族为1代表是玩家' m% M/ _5 G. F h# e/ k7 E3 ?
if Race = 1 then begin' l- [) R# k1 l1 C- W1 p
# ~* v7 s/ ^, f2 l5 {6 s
//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种
# p* T" }1 E" t6 j% U Str := 'showwindow .\help\屠夫.txt 1';
* A" S7 Z& C; K$ { print (Str);5 O4 Y$ r" I8 w# m' P
) K( I' u/ J9 k# o, ?) ^//小判断结束" \. q2 H; z$ m# {6 \& G2 u
exit;
3 `7 y9 t7 F3 y- N: n; [ end;
* @# a( s$ L! T, G$ \& w$ n5 D% U7 E ^& V3 C* l2 e
//一个语句段结束: ?, |6 `" k4 ~1 U6 P# f4 ^
end;
+ L x7 e' h% c. o
! z+ _; D. M, ?6 g$ K7 v. k( E! Z//另一个语句段开始/ [: K- z+ ]" J8 o9 b D( q6 p
5 \( J0 _3 c( e7 A+ u: l* ?- S
//当从Help文件里反馈回命令参数时,做出响应
# V T7 o b p% @
. `. f& s Y7 f: {/ `procedure OnGetResult (aStr : String);9 D) z3 I! Y4 P. t2 t
var1 ]$ h% C! r' {* C: y: K
Str, Name : String;9 f* k9 }) y# r) a# c
begin
0 n: T" A3 s! s. h/ X' j( t0 f
8 b( A, b7 o& n& `* h/ D1 w9 t! T//当反馈参数为close的时候就关闭对话框6 [3 n; k5 a( \! G
if aStr = 'close' then begin1 e7 J. F O5 I/ @' }, q1 A8 n' P
exit;' ]6 E0 W$ V. w& j7 m% E% w. E
end;
) N* U) m8 M5 M3 B4 z% E6 ?. b+ d- H- M! W1 z
//当玩家选择niujiao 的命令时
9 v; V, o" T2 {; n
5 S: ]5 x* M! ?- m* ]$ ~ if aStr = 'niujiao' then begin
& S1 ^3 J- g$ @3 B
9 m5 T. M% [7 Q0 `//检测背包里是否有牛角+ M# K$ \+ S0 u0 p
Str := callfunc ('getsenderitemexistence 牛角:1');7 L c/ `0 U( W- v+ P
% G6 J+ `3 \4 ?1 y//如果反馈信息为假,也就是没有
- c) L; s+ _3 j$ c: k if Str = 'false' then begin2 V% A/ U' P& b6 F
; Q! H( F9 A6 @" i( S( N9 ~; p
//屠夫说话# i) y4 P4 _3 J7 t
Str := 'say 快弄牛角再说';
4 [& ?1 _# S/ z, ] print (Str);" `/ B! G/ e) F# J; y
9 U9 {* n, Z+ @7 J0 y
//检测结束
# Q( T/ ^- ]% I+ a exit;
' K7 ?6 @8 t5 w end;; o) w$ [* \- ?0 {
/ x; `3 ~5 P2 m/ k$ R8 P//如果有的话就继续执行下面的9 [6 \/ _* ^1 w l; Y
. e- ~- j3 K1 L, X. t+ T if Str = 'true' then begin* u3 X5 `! j8 p; S& W* t$ U
" {; f: l! ^6 d$ F5 r//检测背包是否还有空位置
5 C( ]6 `' u, i6 k$ R+ _ Str := callfunc ('checkenoughspace');
; e# K7 t) v6 i0 S9 Z
2 B. I0 A0 R3 G//如果返回值为假,也就是没有8 c1 e% Y. z$ p% }
if Str = 'false' then begin3 R% b: f/ [) y7 m: ]) K
5 i, m3 I; }$ Q& x% g
//那么就提示物品兰已满 I0 L* L& x+ T2 ]- ~5 G
print ('say 物品栏已满');
% v6 O* i- J/ h5 e8 Q: |# g2 b- E+ `( }4 Y2 k' @ \, }
//检测结束
% F) y2 U+ H: n# R2 ^+ C' i exit;
7 s4 e/ j. m7 Z) i' s* ?: u end;( t' p" C; R# z9 I1 ?& ^
2 A; k/ c# Z7 m' e& S//如果背包有空位置,那么继续0 B& l# B" o Y
* M, |3 J2 `0 A; |8 L4 h9 }
//没收牛角' v' T. j! T+ N5 u* O: Y, n- S
- |+ b5 ~: B+ Q, j B) h1 U
Str := 'getsenderitem 牛角:1';
) J0 |4 B. m8 N. S5 J print (Str);; r3 l4 w% t# \& d* L/ |- \
7 V( N+ v: }$ w% | O//给牛俊弓服
: V7 i/ L2 q* Z. u Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';
' {/ Y1 p8 [4 k* w5 T1 w print (Str);' l$ a+ h& I' ?; M, s" S& ]
Str := 'say 收好了..俺最喜欢的衣服~';
7 F0 _. F6 x8 w3 s0 \. y print (Str);1 s9 B* v* P% A0 ^; a2 L% g
exit;: I. e6 x6 }& x- i
end;
1 f8 I$ n! I& v, ^/ M0 ?; L7 s7 g7 v" g4 N
//判断结束语句$ L0 J4 | m! i7 y1 e
end;7 L! a' S1 x& p" e
exit;! C: V7 C0 P5 q/ n5 p% v) R
, b" ?: @' f$ Uend;
6 {% d. t G1 @& ^! X! M, S# E
/ L% y) ]2 ^5 N2 `) [$ ?end.. Q4 J! u0 Y' C l
) R) p/ m7 y& A" nend;
/ L9 F% s1 R# O! G1 I8 M. e( m |