任务策划:
7 t! U6 o; q7 l- [出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!4 }% @5 E; l# O, \
来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)
6 V/ E) H7 K1 n1 h$ a3 ~9 e) i8 l收集这些材料交给屠夫,他会奖励你东西0 ?/ e+ H+ i9 r' c Q
这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。; f" U& q$ c: x4 T9 O
8 N2 ~ k+ Y' P7 x目的:8 y6 u9 ~4 W" n- f$ N( k- Z7 E% ]
体会最基本的活动都是怎么设计的8 r1 d) `3 w8 L* `" Y
( Z1 D3 h4 z) _: C3 i
知识点:+ C9 g- f& B; g) ?! k" N4 n- L
1、检测包裹里的物品: P( l9 c9 _" S. @+ u% `+ Q
2、检测包裹空间
% n% r4 C% j& ?3、给与物品3 k! H7 S: U& e8 u4 C% c, D( y
4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。
( M; V5 P5 t* b) W# @: D& r+ n+ {8 e, X1 M( V+ D4 C4 d; g5 ]. I0 h
unit 屠夫;* d1 r3 k8 V; \& _" E; w- }. F
5 ^3 A' `3 V' j6 A: ^' T//下面的是通用的调用程序内建的函数。每个脚本都有的。
6 Q' ?& V5 U: X+ Z7 v* e* P* M% v1 Q! s
inte**ce; n3 _+ r8 ?! z7 n
. k& L6 T/ @- [0 O5 ]* \& l' X
function GetToken (aStr, aToken, aSep : String) : String;; _+ ?' H3 |) q2 h# Q
function CompareStr (aStr1, aStr2 : String) : Boolean;
" ~* d. m. O _/ I" I. p" Afunction callfunc (aText: string): string;
! K$ g/ s8 t' { A% dprocedure print (aText: string);
( [7 S$ p/ \( b. l! v6 zfunction Random (aScope: integer): integer;, q+ `' D/ u" ^5 D5 y r
function Length (aText: string): integer;
' s) E [3 U% v; T3 k* _3 ~procedure Inc (aInt: integer);
# u6 v% n0 ? ?% Y6 x, `procedure Dec (aInt: integer);" ^# K) n) K2 \1 u
function StrToInt (astr: string): integer;
2 H8 Q' V3 n o: l8 L Ufunction IntToStr (aInt: integer): string;1 Q% Z/ t* `: q" S! z k& M
procedure exit;! u+ h8 y1 ^) Y: n1 r3 U
@ v, Y) J6 ]% \
//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么; h# I; x. j, w) ^' k/ F n+ J
& l, ]# s; o2 y2 v+ u/ ^1 d//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou* w1 m$ I" k- u2 S
2 [2 \6 x2 o4 k8 B2 C//第二句的意思是当左键单击的时候响应,
- b7 [& q' }. u/ C( z/ n! [0 C' |6 V6 `! c8 `
procedure OnGetResult (aStr : String);
; c- f ]6 N! @' l C* _procedure OnLeftClick (aStr : String);$ A9 d9 _4 A4 y8 O; o
% U, \8 D( r' x U7 s
//以上是脚本的头部,下面是脚本的主体部分* ? }, V- `$ |6 R
$ e# d$ D- A5 U4 X3 i5 Gimplementation8 N. h- A5 ~: z5 ~' M9 y! L
0 P; s1 O! [- C7 h
//当左键单击时
6 ^( l# h" j" {6 J6 M& V
3 Y2 m( H- F8 O/ x' uprocedure OnLeftClick (aStr : String);
" d& g! H$ U5 u
+ V; W) _5 L( ^//声明变量的类型$ [' E3 m6 s$ V+ q
var# R o1 K5 x4 @+ L5 E
5 }+ o. j7 m# F. Q; _//Str变量为字符串型& R ? k2 i# T/ H) ?
Str : String;1 ?/ l/ c* }9 J( Y6 D" }" W
1 q) `; ]) I/ C$ a7 g) T3 `3 \//Race变量为整型
4 _9 Z5 Y2 y+ C p0 \2 o Race : Integer;
6 P1 b4 `1 G. b. u6 @begin
/ _7 s, V2 N3 I' P+ W& h; a+ J t8 O& C1 V$ S8 V" a
//获取点击者的种族
+ H0 A9 ^3 k, v* w) r9 ` Str := callfunc ('getsenderrace');
$ k; s; N0 n2 o4 b1 `
, ?0 b! {) S/ j8 e//将获取的值由字符串型转换成整型
8 L4 D+ e/ c) {( a2 H9 C1 P Race := StrToInt (Str);0 |. h \+ b" ]& a' K
& N u1 e' i) K0 G; n, {0 S. P//如果种族为1,这里种族为1代表是玩家1 i* o0 {! U/ d7 }5 s' W
if Race = 1 then begin
2 W4 O* s' L4 L, b( |5 i9 s9 n1 C
//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种
2 F) ]' ?, |1 y1 i5 T Str := 'showwindow .\help\屠夫.txt 1';8 w* i( t6 `% W6 D
print (Str);
, v6 V& t+ _2 {+ @
: W: N' G7 f# L9 C1 _5 J2 B6 r9 B//小判断结束
2 S+ z. v6 I! n6 e% \; {9 c6 }% o exit; , f+ [1 E3 v2 y
end;
d# w5 V+ a, a5 }: H! S
* `+ ~( E! I; r( P3 {1 d//一个语句段结束
( d8 O. m* ^- S$ O* Vend;3 y& {% S. ]( T% I) `7 f' F
& u# i$ {0 H/ Y# y& n
//另一个语句段开始
" i. x7 P+ i/ `% E& m8 p& C, I" m: m2 b% f! F- m% y3 ?
//当从Help文件里反馈回命令参数时,做出响应 z1 C8 J6 V: B! v* ]
+ K" _( R( a: R* J7 i; {3 S7 x: B
procedure OnGetResult (aStr : String);7 z. B& y" _1 w/ F; j2 L4 P5 V% Z$ \
var a' U' A }/ e" a$ G% B0 y2 ?
Str, Name : String;0 V7 h! p& u- N
begin
0 f8 X: L1 y$ P. X$ r. t3 h9 v5 W# r" J
//当反馈参数为close的时候就关闭对话框+ B+ W, ^ ?" n9 ]9 @% s" G e
if aStr = 'close' then begin/ O& H- F0 B [
exit;( [+ r# }2 D: b' b/ J+ v
end;
2 _8 L6 M" c. y) p/ P! h. L+ D" y5 u, i/ Y
//当玩家选择niujiao 的命令时$ O" s, r- R2 s% V) O2 o0 b! Y& D
- c3 s% e: G8 c) b if aStr = 'niujiao' then begin
2 }& P, _( T% s) O
7 s h! T) B! y7 |9 r. u h//检测背包里是否有牛角
& T* [* U; {/ K& w7 w$ m( e Str := callfunc ('getsenderitemexistence 牛角:1');
8 B1 d% L6 c' ^: F0 \
+ l( O& v! F, u M9 p//如果反馈信息为假,也就是没有- M' d- [2 |+ w2 A9 R8 r. m
if Str = 'false' then begin' y3 }/ v& E/ x
- t. @; Y% U' {5 ?4 n3 N
//屠夫说话, s, ^3 g+ [& i! b& |) N
Str := 'say 快弄牛角再说';4 E( Q9 J# k# D; `
print (Str);) U( M1 K, Y/ G9 U% F
0 ?- a+ [$ ]! L7 v. j//检测结束 n) U( x; G% e6 R/ n+ |
exit;) Q; q4 w% q7 h9 I2 w
end;8 u w2 V+ Q, |( I8 _, J
j5 X9 x6 i* t8 k//如果有的话就继续执行下面的
& }+ Z5 v; Q" {/ V* A
4 m: R3 {) ^* K$ D3 v! L# u0 { if Str = 'true' then begin }2 a% g5 f+ T0 f
; G3 c" `5 W: C; F8 x& r
//检测背包是否还有空位置0 ^% E6 h3 A/ Z
Str := callfunc ('checkenoughspace');
& m/ `9 h) ^! o( q: U( H4 H) j- K3 z' u: D/ a1 ~8 k
//如果返回值为假,也就是没有
. i( E- O4 S% {& \; \" s! B if Str = 'false' then begin
9 {: L! N3 n9 h
2 Z" E5 e6 i+ e. h# W" ^5 O//那么就提示物品兰已满5 c0 J& S* U9 G; g( p
print ('say 物品栏已满');
& ? o6 ~" v- y, R: ~5 C: I! s$ ?# m4 x- ^$ V/ G% A
//检测结束- E7 i: @& `( ^+ W' p6 L
exit;
3 @9 _5 ~3 J0 d; e end;/ {' ?7 P2 z) y, Q. c8 d
* g5 x5 R9 l' s
//如果背包有空位置,那么继续
+ w) @6 b, h5 {+ ]! U" w/ ^& }9 _
0 G' W3 }' g7 p ?! s% I6 y" X# C//没收牛角
! o0 H1 Y, b4 p* n! ~- I7 e% J8 F
4 C* f: s8 \# ~2 k Str := 'getsenderitem 牛角:1';/ D/ c. Q# `' N
print (Str);
) j2 b8 c; ~% N+ w' ^
/ h% ^8 o2 b5 a4 f- r( O//给牛俊弓服7 g N) C8 b& ~ D+ r
Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';
& @! p" x+ V2 V2 Q$ s7 x o u- f( T print (Str); \# [ T5 i. l0 x" @
Str := 'say 收好了..俺最喜欢的衣服~';
4 o2 U3 B( r" f' k print (Str);6 O8 I& T7 n$ E/ d$ q! b G* x
exit;: x; I) |- P! k4 A
end;/ p7 \2 ?& v3 F
$ [" J/ t- \) U( A% \' i
//判断结束语句& c R3 b$ n* S! x* T6 a
end;6 g* k% h7 L6 U$ |
exit;
& L. e- @. h n+ q/ J& F* L; Z |$ x2 w. A
end;0 {+ i. _+ r9 I; M
. o( Z; I9 Q# n
end.
; v) L3 d! ^$ n- @- {/ X* K2 l5 f2 @: ]- }
end;
8 ^# C" ?/ H- W; ?. h% }% G |