任务策划:% t) ~% g* B# ~
出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!) d- ^( P6 Z" w
来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)
5 H, z# u& p& ]收集这些材料交给屠夫,他会奖励你东西. }- T2 H- n/ N. l5 r% h" Q
这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。1 E( t. j3 J% `
# {" H; T- O8 }8 x _目的:
8 z5 x* x. B' [体会最基本的活动都是怎么设计的+ T" _; x7 ~% F0 H, @6 `! {& g1 t
- B5 v" J8 }; y8 \! P b0 w7 Q2 v知识点:
9 b' i# `2 Z4 G& C, \1、检测包裹里的物品3 m4 j, \" E, Y& m: r# q1 p
2、检测包裹空间
6 B7 t+ }* G$ _. c3、给与物品
& H% u- K" r! A b; l/ r: i4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。
! s/ |* x/ } b7 J" ]- Q6 i$ E' D- P- L1 @% E$ x
unit 屠夫;
. C( y% `" N, T/ i' e, k( \* e; R* e( w' j$ E& R4 @
//下面的是通用的调用程序内建的函数。每个脚本都有的。$ Q( A: z6 w `7 h' ^' w. G# V
, B$ o, ^. b1 n/ y- yinte**ce% O0 ?! z1 p6 `0 u
8 t* t4 ` E8 J* b- ~function GetToken (aStr, aToken, aSep : String) : String;
, B& a+ k$ r) Z' |- f! V& g0 Vfunction CompareStr (aStr1, aStr2 : String) : Boolean;
) N, h) f! M3 B7 m5 s0 |function callfunc (aText: string): string;0 V# {" G; R7 F1 Z0 l
procedure print (aText: string);
7 }, J' q$ j9 P2 }function Random (aScope: integer): integer;6 N* q$ O3 S4 E4 F, [7 ^
function Length (aText: string): integer;; l6 G( V2 q: A
procedure Inc (aInt: integer);
. J w4 ?5 I; Mprocedure Dec (aInt: integer);. X0 X( n) m$ W5 L
function StrToInt (astr: string): integer;
) L# u8 @0 z4 k: M# ]! X( G6 b; Ifunction IntToStr (aInt: integer): string;9 A! }$ \, h% z8 L& E
procedure exit;6 G* W2 E7 V- M$ p& m
; n% x( U j$ m" L w/ G- P& V8 e+ K//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么' A$ _- o0 M# ?% L# H, s( b) N
# s! v# m0 G7 o K3 o0 D: Y//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou7 m* p) E j/ O( Y* s2 B) o% V! S
' a* D& D2 v9 ~1 E
//第二句的意思是当左键单击的时候响应,3 \" m/ Y! o2 S6 ]
! Q! }+ x! R( f5 X8 |, Aprocedure OnGetResult (aStr : String);6 c* c3 {* N. f- ~* q6 W4 ~
procedure OnLeftClick (aStr : String);
" D6 [& c4 {; D$ R. [" X
: E* ]$ y4 f( a7 r//以上是脚本的头部,下面是脚本的主体部分
% s5 m) J* L4 c
# d# R0 C! Z1 `+ f: _; Uimplementation
$ x/ g* [ ^# n; g6 k' U8 X h; i) ]; k
//当左键单击时
& P# j' q7 a. ]/ b* D; J' G* s
procedure OnLeftClick (aStr : String);
/ J* j+ _6 t- }0 q/ E5 l4 [4 O* e; @
& c) ~# A3 ?4 P//声明变量的类型) M' D, y* v: y' m0 y
var+ T* o" H1 N! d6 n' c
/ U: W" @+ b0 {% U) V4 P3 e
//Str变量为字符串型
( h( n3 T% m! N4 d+ q Str : String;! n' G2 R! |' s$ ~9 L
- n8 s* [: C2 c1 p- V4 x# q
//Race变量为整型
! y2 `& M8 e1 L! l4 U1 K+ j Race : Integer;. [4 O( _0 U# M/ o" i
begin
" i5 B4 w$ P, a0 ]
$ t# [: O" P8 n$ q5 R* ^; x! q//获取点击者的种族/ }5 B" V+ x8 U0 [
Str := callfunc ('getsenderrace');
1 q( J1 u6 a. E/ j, H+ o
+ H- P5 s$ r' `: Z+ ]: }8 r" h//将获取的值由字符串型转换成整型6 l4 D% C: q4 a; ~* P
Race := StrToInt (Str);5 C$ ]5 ^1 j7 q$ E( ^
$ {7 I& v( @! Y7 n# y
//如果种族为1,这里种族为1代表是玩家
" t9 B! o' x3 X+ C; W* s6 \ if Race = 1 then begin
$ P# H; Q; ? I! Y3 c" A$ \
' e/ h9 m- Q0 r2 d* V% d. ]//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种0 u1 d+ I5 r0 U
Str := 'showwindow .\help\屠夫.txt 1';* n: n5 j' X% T, U! r
print (Str);/ p, {' m4 }# A& h6 x- y
* q' C6 c! D* K% z, i' n3 q//小判断结束+ ?) h8 E6 Y( e& |3 j& K' @ P) d2 x
exit;
2 x4 b' o+ k5 W end;
0 a9 ^6 a8 u' E# W0 I0 h1 _) f7 J" `2 j" V# j) a+ K
//一个语句段结束8 g5 r: q/ a' c3 [+ c6 v; H
end;/ k& Y7 ]1 h- ^0 V. F6 P
& K' r1 N- N6 n0 y3 ^4 }0 l1 U9 V K1 R//另一个语句段开始8 u3 p% d1 C9 y
5 Z9 T! r) |! a% z
//当从Help文件里反馈回命令参数时,做出响应8 p" S7 X" z* E2 a! s
4 `2 v0 y t; }+ vprocedure OnGetResult (aStr : String);/ G6 b! T' B" a3 N- n5 L2 D
var
: k5 e: k( P3 u+ @- s Str, Name : String;' j( W9 s: O7 R5 `. V
begin( q7 m# l, c5 i! v' x
4 {! A% o4 @; b! K) U//当反馈参数为close的时候就关闭对话框
4 S' R1 r4 w. W! e' C7 k. i if aStr = 'close' then begin
4 S: q" F% T' f' s3 ?* K exit;
8 [4 Y3 v, o4 l/ I5 [5 t3 j end;
! H* f: t+ E4 U: f: f; N! A R
& n% t6 v. c$ Y- ~$ h& Q' a( Y//当玩家选择niujiao 的命令时
5 n# S1 H0 ^6 X4 C( f( k) _7 B. q
1 B, \% O3 R0 ^6 {4 Y. O if aStr = 'niujiao' then begin' p) T+ k, n, o7 q! B" z5 M
: s* |1 j9 G% J' P//检测背包里是否有牛角
' T/ a$ }: k% I- c( I Str := callfunc ('getsenderitemexistence 牛角:1');
1 k1 M" S# ] q! K m0 Q6 T/ e h: |, h
//如果反馈信息为假,也就是没有; [9 r# Y& }; ^5 f7 d) K2 h% N
if Str = 'false' then begin
# E' ]- m1 ]5 G! A
' [2 V* m1 m( D0 ~9 u//屠夫说话, T3 Z. H! K6 t" X) S4 Q
Str := 'say 快弄牛角再说';
/ t1 M; h0 ~; N6 S% h& [( P! q0 S+ S print (Str);
1 y* E2 H/ T4 H0 n# x0 P5 W: g* X; i6 T5 @9 j
//检测结束
, x9 S0 G+ [" \0 n$ v% G exit;5 A4 y$ u8 j* F
end;0 ]: i" y- ]+ H- ]: d( A
$ F0 w& r: ?& E( l//如果有的话就继续执行下面的
, l7 X. Q5 V1 @9 d0 J( w6 p' d0 \+ J0 L4 Z
if Str = 'true' then begin
( X7 ?* N9 H% h' F- z* P1 \
1 y$ ~$ k' Q$ G2 ?2 o2 O* J//检测背包是否还有空位置' Z+ a# w) ^+ \3 c
Str := callfunc ('checkenoughspace');4 s* h( v) ~8 U g; a
. N7 k* [1 [. d! A1 @3 N; R8 ^//如果返回值为假,也就是没有
$ w# f Y+ \- N. H4 z( r% V Q) D* r if Str = 'false' then begin
. c8 z' f. U; h- E- F# K: q6 S8 F( @# L0 |8 x- o
//那么就提示物品兰已满4 Y4 t" Y6 X9 A& }0 Z* S
print ('say 物品栏已满');
, i9 V5 `: u! o) [' r. [4 z
' h$ T g, ?; M8 t//检测结束; v9 W% @3 X S! X! R% ]- D
exit;( r$ J$ E: \: B/ R, z' f
end;( w8 |: Q. @2 }2 c) N
8 T; _5 y: p: t E7 ]6 w2 c9 v//如果背包有空位置,那么继续9 E+ s# ~) m1 n; U3 I
3 x/ l, X D* q
//没收牛角
5 h' X2 `4 U1 B' T4 a6 ^& S$ ~4 }- R% S/ i( f
Str := 'getsenderitem 牛角:1';
9 F, N' H3 g, b, V/ A: g print (Str);
' v( v4 g: O$ O# Y, p2 u2 X# f+ x- G, x. \# F- Y1 G
//给牛俊弓服3 p/ a& W% U5 G$ @% @5 U9 r
Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';
6 ~+ j7 e* x3 q print (Str);
! N4 v) N$ w7 Q+ [$ i. X Str := 'say 收好了..俺最喜欢的衣服~';: ?# C9 j/ X7 U6 J* B
print (Str);2 e2 W6 W1 s+ H2 @
exit;
# I" u& W% |, L* e# p2 e end;
. }) x8 @. f' F6 _, k F1 K. _8 T, j4 X' o9 q5 s' L4 C
//判断结束语句
, e8 @. ]8 B4 Q$ J end;1 r8 j0 T; j! L9 G7 X! _
exit;0 l0 k: |; U; T7 q- d9 P1 H
% x c# n& g$ a/ m! p3 F1 H8 r! o
end;
) B* I& T5 v9 ?$ ?* }6 d% t3 n: z$ n* }
end.( M+ c4 [ y8 m4 P) Y+ g' |
% r5 O" p" z" _+ H
end;
# f& E* c# d, H* L# O& J% H9 G6 C |