任务策划:
3 |# b" k( U! J5 x$ z+ Q% c出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!6 K* n a- }6 q% [- n
来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)
/ N$ c' d: K7 ~2 a: }5 A, y收集这些材料交给屠夫,他会奖励你东西, o, `8 i6 m% R( s
这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。
. k }. M/ T7 e! U8 ~3 Y5 E( k) E+ b* _% k" B
目的:
& c$ J. ?" L' C' ]0 c体会最基本的活动都是怎么设计的8 E4 s2 w% Q7 K0 j: E( _
% X: S$ C0 N& L9 T: u知识点:
1 ^9 B8 P$ }! |( X" ?4 c. _. U3 k1、检测包裹里的物品
' F! M6 {6 U4 C( c2、检测包裹空间) j& Z6 m4 X9 ]& F
3、给与物品
' E' q" i9 r# I( e3 a" Y& g. T4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。7 M1 D* A. q( ?; j" v) d0 A( x
! ?7 k. C8 X1 }5 punit 屠夫;
) b0 p4 c$ f1 i6 c6 @* K; y5 M% ]$ t. z! @
//下面的是通用的调用程序内建的函数。每个脚本都有的。9 N( H. ]. ]9 b- X$ q8 i
3 r* V6 L2 ~0 T1 E& ?inte**ce
5 d9 X% A* {" ? I2 Q1 G
0 a' [; ~% V" U: p8 gfunction GetToken (aStr, aToken, aSep : String) : String;
* O! L4 a) S; {4 L2 _7 Ffunction CompareStr (aStr1, aStr2 : String) : Boolean;
% b% V9 Q- q/ P' S% Y6 ~% Rfunction callfunc (aText: string): string;
# Z7 n! y1 d# J! V# A4 e% Kprocedure print (aText: string);
) L7 d+ h% w( afunction Random (aScope: integer): integer;* S7 l% s2 i, a3 G- C
function Length (aText: string): integer;
4 V k% N: Y0 v% H) ~' }3 b6 eprocedure Inc (aInt: integer);
7 X+ K2 R* V( P: x0 g# Fprocedure Dec (aInt: integer);
0 ?3 [# K, L8 G+ ~function StrToInt (astr: string): integer; t" o# z6 r- t
function IntToStr (aInt: integer): string;
& t0 r+ M6 J% V+ K* P4 m+ S Jprocedure exit;( M# R: r, ^: G. c. h) q
5 A7 u' n2 o+ ^& y. G
//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么( ^# j6 H1 u; f
& w5 d. S. H) ^8 j7 s//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou
& D p0 Y! h. G3 k8 y' M" A: Y! {5 { C/ K- v w) W3 R7 l
//第二句的意思是当左键单击的时候响应,
* u/ X6 U* F5 U+ T* C( {
( Q$ S1 {7 P) J& |1 A2 ]procedure OnGetResult (aStr : String);. `) q P3 @9 M- ]" i8 @8 i
procedure OnLeftClick (aStr : String);3 p; ^2 I& b% e! N6 z; p9 Y
?0 C0 ~# B+ C5 i
//以上是脚本的头部,下面是脚本的主体部分
/ ~8 ~ P+ o, x2 `3 L' Y( y2 J0 f; }, ?. b
implementation6 A+ T' Q1 Q5 E- e: E$ }- y
8 @7 X. A# C4 P: m. p+ C
//当左键单击时
* {& t0 a: P/ h% g! d" r6 y- I; \) a3 I+ `
procedure OnLeftClick (aStr : String);$ [* }" C5 F. _$ Y3 D
! H( g$ \; \5 I) F S' j//声明变量的类型1 E Z" H# n9 P6 Y
var0 N/ }( {- E* o; q
; w1 d: y- `% z) o9 M# j
//Str变量为字符串型
/ x; ?. r8 x: C Str : String;- T. e5 d; _! j& X2 U) A3 a9 }5 \0 }
9 h3 Y1 |3 y- K3 S//Race变量为整型
$ \6 K2 p* F' l, ~% F Race : Integer;
0 a8 z5 d( ]" g( D+ K8 {( @begin
) W, j' g0 w4 K) P
- B# p6 x$ |8 ^6 c- W4 c) d3 n9 I//获取点击者的种族8 P; o! B) H6 {# {
Str := callfunc ('getsenderrace');. Q2 p9 c' z, \$ P2 S1 J0 d- [0 r
5 W. W9 n1 x) g) n
//将获取的值由字符串型转换成整型; V/ @( ]# p$ y1 ~ _# Q/ X
Race := StrToInt (Str);
9 b# c$ Z4 _' Y) C, a
' J8 w6 o( [6 e9 C4 E8 V//如果种族为1,这里种族为1代表是玩家
9 o; q3 J, A: j if Race = 1 then begin
6 D& M/ V5 b# A
/ J% N# @& A3 u- x. b' _9 L//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种8 ? `: u( p! q
Str := 'showwindow .\help\屠夫.txt 1';9 Q% Q5 D- ?& }4 N% i# q
print (Str);
6 N3 U2 e# f3 j" R, }0 m: d+ {; h' x @, [' G
//小判断结束" F8 ^. r7 @- P# C
exit;
* K- O1 V5 \/ x$ U6 p end;
' I' ^9 }1 N+ s5 J/ k; @8 r3 {- O0 ]* ~7 T4 S# h2 m4 |( T
//一个语句段结束
, E5 J4 H: ?& s+ I! k/ X3 Tend;
" Z5 C# t# x, x0 E7 m" v w ^
0 M0 e g* k4 p6 [6 n d//另一个语句段开始. @& P4 E* Z/ t/ K6 S7 ]" b: p, T
0 b; t' }. r2 k* W//当从Help文件里反馈回命令参数时,做出响应# [- Z. r, u: b# k4 U; r9 H
' j& N* U* _2 L' m. x" W g( |
procedure OnGetResult (aStr : String);
C& r% l. v" f% ?6 c" ^" wvar0 }, X+ Q7 i) F& E: I
Str, Name : String;
% d2 @, v1 J9 z6 J# V6 c$ s4 s; tbegin
+ v2 _/ r, T! Z8 g5 {& P6 n: S2 C, \( O3 _0 O% Z8 c6 l
//当反馈参数为close的时候就关闭对话框5 w( d& h* Z5 i! R5 x* a3 G
if aStr = 'close' then begin5 Z. I$ L3 R" Y% s2 S# q
exit;
2 i$ M: A- m- e/ Y# { end;
3 }- W; \8 E7 p: A7 z/ V( a% h6 z$ C% @1 V4 t) c' P- k
//当玩家选择niujiao 的命令时
$ E5 o" s: i" a. ], y* H$ N5 W1 U: e
) s, ~. i# x0 u7 Y if aStr = 'niujiao' then begin6 k% Y0 T. [9 a. N. Z% L9 f) u
5 N* x9 L" a( w//检测背包里是否有牛角+ g7 X' W2 b( V; L7 Y- E
Str := callfunc ('getsenderitemexistence 牛角:1');
9 V# K5 q% _; _0 {
# e4 F0 C4 a8 L8 Z2 |+ e% p//如果反馈信息为假,也就是没有
; T4 l5 X3 N0 C# m if Str = 'false' then begin' g& y) _* d. {$ f- @
$ P; M6 ^0 L1 n+ \/ i6 d! e, f//屠夫说话9 O7 b+ M& L) n7 }( i/ w0 n
Str := 'say 快弄牛角再说';" U9 k' `- K/ K
print (Str);( \ j3 ~" t2 e5 P
7 e* g4 j. s1 ?6 o5 D8 E//检测结束
8 e. l, P% X; _/ c5 ^9 h3 R7 E exit;6 P% {! L: i8 B
end;/ V: ^! n: t6 n6 Q) n! E# Z6 ]0 A7 j
, {' u1 d Y) L( ]. R2 e1 _& _7 k" B
//如果有的话就继续执行下面的: Q. q/ L) Z/ D* K
3 z# r$ m, I1 b9 I& Z if Str = 'true' then begin
2 v: L' d4 O+ b; x9 N. T& ]7 b: N1 K# p
//检测背包是否还有空位置
- ^' h, |8 z1 W/ k Str := callfunc ('checkenoughspace');
" y2 p1 q8 Y$ Y1 e5 c( ~
; E% p( k- `+ a" a3 p//如果返回值为假,也就是没有5 O. f8 t d2 e
if Str = 'false' then begin& K7 C) [4 V& Z
% q) {' @4 Q* d1 F) Q4 D) Z# `/ J& r
//那么就提示物品兰已满
1 Y- N- P' v7 Z! J: @1 C4 s) N print ('say 物品栏已满');
6 i0 |; U q: A7 G* z/ a" M! w: B6 J# p7 |6 O8 Y
//检测结束
- e$ x8 E$ g7 p! J# ^+ m5 U! y exit;
) e& a E# t, u& M/ l) u6 f0 }! Q end;( k1 _; k6 s. h a
3 f3 q+ f7 M3 s$ k
//如果背包有空位置,那么继续
. E& B* e& ^, @% D- n
$ k$ ?# ~+ B4 O0 E5 Y) j. P$ q, ?//没收牛角: Z- }3 }* a' }' n' a0 f& g3 s
" b h, |5 p( ^4 y, J
Str := 'getsenderitem 牛角:1';
+ p( R) k9 [3 [; w print (Str);& b1 B" L- S$ C4 |) U& a
: \0 q4 `9 t- ~# W1 j//给牛俊弓服
; b1 i o, T+ H H4 @2 f) Y+ V! [0 m Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';% |8 y* x- x, y% m9 E$ E; S
print (Str);, d, e: W' }% _
Str := 'say 收好了..俺最喜欢的衣服~';
+ X1 \, W3 Y, B( [6 } print (Str);
: c" K7 W0 L( d. f- V exit;6 C/ F& V/ p, n
end;
+ J8 X( _$ L; C& Q, A5 _, [9 U7 n; F, k+ \2 |
//判断结束语句
! U' z P: H9 N+ x9 }1 k$ W% D( C end;# g" p6 e( W9 H1 J
exit;. h+ y- c: w& x' w
# _, i" ]9 }7 ~9 Eend;" F6 f- @, X; O1 @, E
) S. ]+ p- J6 y/ J
end.
+ t; l6 O! K) t. q3 Y0 G* d% F
3 s" X1 X- M6 ^ l0 eend; 6 A+ p6 V0 {1 v% v- Z* g% Y
|