任务策划:! z( w1 ], m, R
出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!
" Z1 x7 X; E6 X1 z0 S- F1 F来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)* l' F" Z8 K# D. R6 J
收集这些材料交给屠夫,他会奖励你东西) l) T7 Y" s3 ` C' p* c1 R
这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。
) k4 P2 h X: B- s( `% e l2 _4 S0 g/ u
目的:) h) P, U% l' U4 u1 v
体会最基本的活动都是怎么设计的
7 v& u% ]' {( J* f5 w- x
5 b0 W! @. P( l9 x知识点:2 W2 `( s: d1 H2 {) g" @1 v0 U. s
1、检测包裹里的物品
# j W" s' I9 e1 v) i3 Z0 a& }' N2、检测包裹空间) J/ X8 d! ]& }* m5 t4 ^8 A U
3、给与物品
6 `2 J$ T- E. F5 s7 ^ J. k4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。
+ s$ G! G6 m! j, z% T" b! _. N: }! b% j$ }. X7 `
unit 屠夫;! [' a( R0 r& m; c8 G& L
! {4 ?$ {" e5 P9 R
//下面的是通用的调用程序内建的函数。每个脚本都有的。
4 v' e7 ~, k, w0 i0 B: u4 q6 W8 g: I) b$ g9 m% A. d* p
inte**ce
7 ?' w0 G# u2 D$ ]1 V6 d4 `
, i, R+ G6 ?# k6 x4 }function GetToken (aStr, aToken, aSep : String) : String;, J+ K1 w/ y2 r( r3 X
function CompareStr (aStr1, aStr2 : String) : Boolean;
# e3 p0 X) Y6 d. o# Afunction callfunc (aText: string): string;
, c$ U* b$ w& E3 n! I9 Y1 ^8 V0 pprocedure print (aText: string);
( }4 M1 k! U6 T- o) m' Q) [$ ffunction Random (aScope: integer): integer;
* q, p. J9 r/ b$ r9 bfunction Length (aText: string): integer;
8 M4 `8 [9 ?( \1 |4 W% Y9 L; yprocedure Inc (aInt: integer);! \' ~! N8 g0 G
procedure Dec (aInt: integer);
+ H) O5 z4 i; y( y& {6 xfunction StrToInt (astr: string): integer;4 Q4 `# Q' ~- G/ C
function IntToStr (aInt: integer): string;
6 Y2 g7 v1 z. v/ y+ kprocedure exit;+ o; Y, b5 H9 r# E7 o
& T, m& _4 R$ D3 r' ^" H" m
//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么$ p" Y: F2 B) r. X; T
1 P- z) M& E5 A O. a. G7 ]//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou; k% a% q5 c7 P5 {9 i$ r3 s
9 r- Y+ m0 y) O _: Q
//第二句的意思是当左键单击的时候响应,
- e2 \" @+ @$ L W1 ]$ n/ Q1 O4 ]
* ^( Z( g7 y K) |( zprocedure OnGetResult (aStr : String);! W2 B1 c1 ~0 m- w
procedure OnLeftClick (aStr : String);
! Q! d! G, w- B1 A' r
% e( i0 \, B6 V" d2 P4 ?//以上是脚本的头部,下面是脚本的主体部分8 e$ D; Y! L9 } n6 @5 B
P' U, ]0 a7 [, A3 { O7 J: c9 }! |
implementation$ _( u$ C. ~8 h& u1 G; H) L: W
9 I, |( v2 A# S; F//当左键单击时
/ g8 B9 E& K! {7 g5 {+ O0 m: X
H% R) y' X0 k q& J8 S+ Gprocedure OnLeftClick (aStr : String);
2 E% X* J+ h' T e( q/ B" O/ ]" w3 S7 ?" p# q. L4 a, Y, u# }
//声明变量的类型; \! S k) L$ \1 U v+ q) T
var
' b/ e0 J% \" d4 A: V6 t$ ^2 E8 a! K3 s
//Str变量为字符串型
: _* X7 v1 p |/ @$ o Str : String;
/ ]3 K! s3 n3 C% b* B: W( ~6 L1 U8 w! E+ I3 u8 a5 s" V8 H; E: o& N
//Race变量为整型6 t' Q6 J+ W& c; u( A
Race : Integer;1 T' O7 Q1 C! t J
begin
% |* Y5 ?) i4 O$ m2 _7 z- X& l6 D7 U; k8 L
//获取点击者的种族1 J8 Z6 j2 \0 f
Str := callfunc ('getsenderrace');! M' K6 Z9 M% b7 i9 e1 g8 X8 i
: V- ^$ h: \8 P/ m8 e//将获取的值由字符串型转换成整型
8 `% j: X, @: G; U! W( s3 D( \ Race := StrToInt (Str);
% D5 X' Y' l; R& p: {8 B, w
2 \3 @% u: k5 |: Z% F7 \//如果种族为1,这里种族为1代表是玩家( D B' R0 G& p1 ~" F3 [# v; k7 X; a
if Race = 1 then begin
" H7 l9 R- p) h2 @1 `( f
; _5 \( h, n( }4 ^' k! T//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种" n* w- T' h6 g1 @
Str := 'showwindow .\help\屠夫.txt 1';, i4 c% x& I! D
print (Str);5 j. v9 O3 l, t: p
! w' U2 \% O/ H6 J//小判断结束7 D- b- [) p% s4 A6 r
exit;
3 c/ r2 A# ]6 P/ K6 a end;
8 K1 F/ L& m( a) z" E4 i
0 N9 c2 m7 }, N7 K& R& {: l. J//一个语句段结束# h: R. K0 `1 `
end;
$ T& a' d+ M' u: K' U# q6 w
: g! A7 [7 W9 o% Q//另一个语句段开始! d& v; ^( Z A- W' r
/ ?0 o! H1 [8 d! I$ r. E7 R. ^
//当从Help文件里反馈回命令参数时,做出响应1 C1 @5 x0 E3 B
8 p$ a9 V- X& O" P; `) v4 \" P6 `6 ^procedure OnGetResult (aStr : String);
0 a5 F, F* t+ w5 G) x6 svar
8 x6 O5 P4 l9 @) |" U3 `8 g Str, Name : String;9 Z0 b& A+ {' M3 A2 a+ e8 N: u
begin
; l5 c7 V& w) i1 t9 R! {$ M. W! ^1 P( `& v0 w: t) z0 l
//当反馈参数为close的时候就关闭对话框* ]& m9 J( X$ L7 W. X6 s- W
if aStr = 'close' then begin
7 T- Z3 `0 ?. D exit;
; n$ }+ M6 U& _/ A( m end;
7 Z8 I& }% p4 n! c0 ~3 K" |# J* k" O) x% E$ U
//当玩家选择niujiao 的命令时$ r% N* S$ s0 K) A# N4 a4 e
. E" u& q/ G2 q' D. J4 i; z# @ if aStr = 'niujiao' then begin
& K- x1 D1 A1 l) f
& S0 D- L9 R) _, c' r7 K//检测背包里是否有牛角* Z. }6 ]7 n# O8 i
Str := callfunc ('getsenderitemexistence 牛角:1');
# `0 i! j/ t8 H( h* C- q4 e
- Q! c4 L. N- I/ ? h) W. e8 g//如果反馈信息为假,也就是没有
3 d8 c. H6 T `' N. O if Str = 'false' then begin O5 B9 w' r6 ~! M6 S/ h, P
, Q3 d; r7 A* B! l
//屠夫说话
7 g3 l$ Y: @1 B" S: G3 e1 [ Str := 'say 快弄牛角再说';
- \- l& h% R1 g3 c( T2 q# G# t print (Str);
9 u2 u$ K/ I+ d3 n: D. `0 t# d1 @ x& G
//检测结束
; r; s; A$ |- o5 L6 Z4 P& H exit;
6 k* E$ ]2 M: G$ P i! V end;! T; M) y! `% m% h7 T+ O
! `1 {9 l( w* M, J. e9 }9 l+ o
//如果有的话就继续执行下面的5 M' z# b# z5 C5 W U
, x* K5 k% q9 q4 e# ~1 T
if Str = 'true' then begin/ z+ q5 j9 Q4 Z, H1 R6 Z
/ L ]9 q3 D7 H" E7 s" Z: F$ E: f//检测背包是否还有空位置* V1 ]" e. X9 n+ r$ T
Str := callfunc ('checkenoughspace');
& c( C; z2 \3 a) u/ {( o7 R
1 M' V7 M- p( A; V//如果返回值为假,也就是没有
! z7 _3 F" n: _" W if Str = 'false' then begin
$ a! m+ I) b- ]0 _
+ L, _: v" P9 m1 O* h8 U//那么就提示物品兰已满
; n4 T2 N0 m' ~$ U% c2 a; n# R print ('say 物品栏已满');
9 o/ [/ ?/ C% K: t0 B: Q" l" Z6 x5 Z* s1 t9 [7 c
//检测结束: w8 c# a3 P5 s4 b3 D, \5 ?
exit;" a8 R" M' W3 u/ c5 s
end;
: ~: W7 f4 l/ N0 F1 N; I% ~8 ]+ c8 [
//如果背包有空位置,那么继续- H: r! `+ ]6 m6 h ?1 W/ y3 R% S: j/ v
0 C* m+ V( v0 M//没收牛角
" f/ I% O6 L6 @5 T; g
- r' y9 l; x5 X* V5 w Str := 'getsenderitem 牛角:1';
( n1 r5 M0 S" F3 r1 ~# Z: U. V( K' w1 ] print (Str);; j& u5 I f' ?0 l* H4 N( U
+ F6 b: {# a& n; \) {& {! X//给牛俊弓服
1 {, S; L, R7 p7 D: [0 }+ T Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';
" o3 J# E4 v3 G! Q5 `( b print (Str);( L2 ?. V+ ?* K' V5 o. C: l2 \
Str := 'say 收好了..俺最喜欢的衣服~';* c! W# p/ `0 a( t7 s
print (Str);' p: H1 {% D0 X6 k5 t7 p p
exit;
5 u0 K- x9 t( o. K% c0 ` end;( v. [5 _! M) S( W, D& G2 t
- g0 E) q7 c# c9 W7 W//判断结束语句
: X; {3 d4 X8 `: U end;
, ?, B# x0 ~# y, B0 B; r+ |9 v( X exit;/ h0 q: O$ H! O; K
9 [, A0 _) Y {* Iend;
2 R R, u% O9 [# j) V* l3 v9 ]7 |- L# O5 v2 `
end.
/ y" w$ w# g# j2 {
& i$ G% V C0 }& Y+ t! s! M# Jend; " c" m6 |$ w7 U4 X" Z! B# _
|