任务策划:
3 V7 b- S% e1 q. J6 g) ?出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!. w+ p' k' g* Q* c
来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)- M! H4 Y1 s- K+ e" a9 I, p5 c; |
收集这些材料交给屠夫,他会奖励你东西
: y1 f3 Q7 P, t6 u这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。
9 c4 v. \+ t1 N2 F- Y
, x* ^ _6 n' u目的:
6 u& t7 F" Z2 ]2 _2 m- Y体会最基本的活动都是怎么设计的
% ]' d5 a7 x. m
. F* E" u0 n) L1 R4 S- `5 C知识点:
' w- K) {# q) ]2 o) |; U5 `, \" @1、检测包裹里的物品( }# {- @. R0 M2 h, Y2 V
2、检测包裹空间. }5 F: b1 E1 F: Z5 b5 r$ D1 A! Y, z
3、给与物品- W# Z/ R/ G/ i4 `9 v- S
4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。
% F! r+ @4 ?6 ]6 L; c6 W3 F. K7 }$ L, e9 p
unit 屠夫;
$ Y$ I, n3 N. u/ E- |$ a5 G2 b0 q( V4 }% z1 d
//下面的是通用的调用程序内建的函数。每个脚本都有的。' l5 P8 q; _& x. n0 [" n; ]
- M9 t! r0 a5 Z# F) i$ }1 A; I
inte**ce
2 X: o# m& n! u; C1 B/ {. ^1 D7 T( @" {. ?. }+ Q9 |
function GetToken (aStr, aToken, aSep : String) : String;
) O' T0 K) Q+ Yfunction CompareStr (aStr1, aStr2 : String) : Boolean;2 ~. c P+ X- l l6 B
function callfunc (aText: string): string;2 V2 k( @ D9 \% G! W6 O# T$ i9 o
procedure print (aText: string);
9 H* e: m% m% [8 j2 A; ]) G% y/ hfunction Random (aScope: integer): integer;
' Q J% p, F" J, mfunction Length (aText: string): integer;! T! T' u" }. N/ f" m
procedure Inc (aInt: integer);9 d3 c) l. j$ o- D8 A/ E
procedure Dec (aInt: integer);9 N1 l: m0 k0 l% w/ A, ^
function StrToInt (astr: string): integer;
- K, K1 y# R7 z; I9 C/ k; Qfunction IntToStr (aInt: integer): string;5 I2 @& _! u r
procedure exit;
6 l. c7 Y, a8 o. [/ h) w
k$ X% g7 `8 r6 K//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么
4 L: M7 q2 i. g. U+ l/ G
* I9 P+ P0 c3 ?% p3 K: n2 C//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou
5 v) i t. l/ l8 X+ H9 V2 v# {- J; j! p' I1 I+ Y
//第二句的意思是当左键单击的时候响应,
2 @8 |% J# ^9 E. z
! Y8 N2 F3 A# c- U& J' @7 s, Kprocedure OnGetResult (aStr : String);$ T1 k U, r* O& X0 M& N
procedure OnLeftClick (aStr : String);0 M7 l+ U5 \7 j$ d8 P2 G* r
9 H( Z% W/ m4 Y# d7 e
//以上是脚本的头部,下面是脚本的主体部分- k; B% m: {; B
4 u' ~! f4 U w4 ]implementation
( X, a: W- v/ E3 E
9 u4 E0 W5 I7 D$ d//当左键单击时- u1 @0 @& Z* V4 g. D0 j
0 X; ^% |- o" H( _/ P' uprocedure OnLeftClick (aStr : String);
* K, ^9 i$ T; {( e5 k h4 F7 U7 ?( K0 a' B' O
//声明变量的类型
! j- H5 R# ~8 L# qvar
( a) |" [& j, P( o* L4 r7 T
, T4 o& I' V3 S5 ^4 E. I//Str变量为字符串型! Y' y3 w: `( C
Str : String;
r: Z( h" Q9 I! f( q) \
5 s% b5 l, Z- V$ b+ Y: \3 H5 H//Race变量为整型# J' F h6 ^/ H3 A+ |
Race : Integer;
7 D& ]3 K* l6 y) D. sbegin5 w2 g+ K5 C# K0 p$ t
% i, M8 U3 N2 D% v; [% N/ l- D
//获取点击者的种族; { K1 Z& A0 ?- D, b
Str := callfunc ('getsenderrace');# c$ t& d# y/ J5 D1 _0 t# {3 B
3 _4 c) O' N& g/ r
//将获取的值由字符串型转换成整型
3 J4 M8 P- }/ D6 P5 ^" A0 w Race := StrToInt (Str);
' R/ \' m( _+ ?: k- a+ I
* h; R' z" Z2 S6 q/ j5 O* R//如果种族为1,这里种族为1代表是玩家
7 ?5 O8 w: q( U3 @5 \, |. h [ if Race = 1 then begin x( R2 r; x4 R R e' e
! J) P' v' J( [2 ]* v7 K A; q
//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种
; E# d1 @7 ?7 b# w0 k3 e% i Str := 'showwindow .\help\屠夫.txt 1';7 h1 R/ i" F V: O+ \* I
print (Str);4 n, C1 Z' Z* \+ Q' h0 B$ V4 J
! z3 E% A9 V1 i//小判断结束: G( X- M2 ]. i) }1 U* d
exit;
# j% B9 V/ j0 [ end;; h8 {$ X. @% u
' D+ }/ u! E( j% q, _//一个语句段结束
5 F$ u& O9 c. A/ c0 {9 e. j3 Oend;
/ S6 A7 O# m% C! r+ |
R* x+ b. l0 Y4 f, w//另一个语句段开始5 b9 m8 k |% _. O( ]3 c
( l& a) s4 L5 g$ J//当从Help文件里反馈回命令参数时,做出响应
T; N y3 @2 i7 Y. C% ?0 D0 J' @+ g+ t6 ?% t. A% I: O9 j
procedure OnGetResult (aStr : String);
4 H9 R X" n$ Fvar
, s' X2 a! E4 A. } Str, Name : String;9 M* N7 r* Z5 `
begin8 P% o) Q' R2 c ~6 d# D
: E. {9 e+ u% j8 D/ n8 E( b3 ^& J4 X
//当反馈参数为close的时候就关闭对话框
% v# [" m8 t& P4 k- M, ? if aStr = 'close' then begin% g# k: h9 \( m& T
exit;
- b d& D1 {' O% }/ M3 s- C% V8 Y end;- c" h5 ?2 f1 e9 U8 `
' S1 I" `$ ?5 P! F3 x//当玩家选择niujiao 的命令时9 B6 C" p2 ?2 [; X6 k8 B
7 }7 m4 m T# m if aStr = 'niujiao' then begin& v9 P% L2 [% e
9 e- z1 l% Y/ D3 d, Z& V//检测背包里是否有牛角
* B' x+ ]9 J Z& U; R Str := callfunc ('getsenderitemexistence 牛角:1');$ G0 q9 z. M( A( {+ t4 o
' x2 L g5 N) p1 w! K+ u) O+ ]
//如果反馈信息为假,也就是没有 U9 u# @$ x2 s" m
if Str = 'false' then begin
$ X4 t4 C g- A/ @3 Y$ L) @4 h2 Z7 r; g% A
//屠夫说话
6 p9 M% \3 {1 f3 t) U- U Str := 'say 快弄牛角再说';& |, k% _ w; i
print (Str);/ X" I! u4 g- \; D! u$ U: c& \( C
. b" {* d2 {% b: a. f//检测结束4 [4 h8 R. B$ C. K# g! o( n
exit;7 D) Z% f. |5 d& p0 D
end;
/ v) b: [5 K, ~3 l2 |: Q
4 z3 f) z# | ]9 y. T! J9 \//如果有的话就继续执行下面的
0 {5 {" Z% Q4 b; Q+ U r' Z$ E. u6 w& r6 q9 ~* V9 B
if Str = 'true' then begin
( a# p! ], @) c9 A0 h
8 i" i4 F$ v# ?! L# x7 V1 ~) ]//检测背包是否还有空位置0 t/ |6 s0 r$ A: l3 g: L
Str := callfunc ('checkenoughspace');3 ~) e# ]& K% e9 v7 w0 d i
; h# z( l$ i0 j& b: K$ Z//如果返回值为假,也就是没有- ]4 f2 O& i4 l. _2 k
if Str = 'false' then begin. z' m* V% c1 x
( ]; J0 ^8 H1 L; \//那么就提示物品兰已满
* J5 z0 z; I/ `. Y2 R- c3 \+ ^ print ('say 物品栏已满');
, `# p; H# W! p* V* C* h- S/ N9 A- [" M$ D8 a/ }* q7 y1 j
//检测结束0 m: Z; X# l R; p
exit;
" Q# ~4 y3 T& S4 R+ b$ V/ \. W$ w end;
+ I1 U8 l8 g& r/ @, C, W& R& \* q9 x. u/ K8 h* V7 l
//如果背包有空位置,那么继续6 W8 M. c& @& t( B6 i! a" M
. }. M6 N; |$ W) T. e//没收牛角
2 r+ ]6 x/ P& G3 O! r1 i% c7 ?' m) M% R. ^$ H7 N
Str := 'getsenderitem 牛角:1';
$ K3 B! z! H- X& r! c' H' ~6 t( l print (Str);) U }4 o3 P$ j7 Y3 Y1 `6 Y5 K
2 Q8 l9 @' }" G8 f& |//给牛俊弓服9 a# m# s$ }" b3 f0 b0 c/ ?
Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4'; q/ C z; x9 ]5 \. p, r* m
print (Str);
5 c+ U7 h, H# S Str := 'say 收好了..俺最喜欢的衣服~';
" o+ W" N1 ^2 a& ` print (Str);! ^5 Q/ y7 [ ?1 t$ T
exit;
2 s( a. \* l7 D# [ end;
! Q7 j# v& @! E$ C- ?1 s5 N& }* H6 T+ s3 u+ o# G1 R
//判断结束语句
6 y2 e5 J* l$ [) o end;) p, S5 F a( j# |1 D( c
exit;. [) i( K- ~! K1 y( S
( i) b7 P( L2 y9 ?5 \; U; aend;+ }/ @1 U% L9 X4 d
! Q r* V) O1 d9 Z1 c* P; F6 l7 T
end.
( b# @; t3 T* B' J! a
/ M$ x" j$ m6 Qend; ! P/ o5 l$ v, _& Z4 I2 |9 t
|