任务策划:
6 @$ T. h1 Z+ }+ w- z2 [8 m出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!, {6 x4 n! T% M! h* O# C' o
来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)' G4 W! }* y- u% u9 O; ^& M
收集这些材料交给屠夫,他会奖励你东西
; G' U6 i- [/ j这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。$ ~+ F5 O3 W4 B9 h
* c4 t$ G7 ?6 a7 m$ x3 p目的:: O* ?3 [; Z0 M) W8 `& _
体会最基本的活动都是怎么设计的
6 S5 c- Q7 v3 }( c7 O% p0 w( Q/ [. B3 e& o5 t# Q3 m. p5 O
知识点:4 m6 {) e. ]4 ~/ u, n E
1、检测包裹里的物品
, x) A2 [$ n. {( G9 D1 H/ B& _5 G. l2、检测包裹空间
( m# `4 q$ b0 s) \8 v/ k8 \, w3、给与物品) O5 b* k e9 a! c" B# p0 u0 l
4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。
+ X1 P" f4 y4 {) s. o) b
* `) [9 Z* E, m4 p" L+ Z0 g- |$ xunit 屠夫;
& R) d" `$ \* G# d9 s1 J7 y: \: g1 W5 o' m. U- {+ m
//下面的是通用的调用程序内建的函数。每个脚本都有的。
4 `; \+ G( {% [( ? Y* f/ t' T* i7 j. Z
inte**ce4 y4 k6 C+ F9 W# ?+ @: r8 J
+ H {1 O1 L+ p" \2 w0 S lfunction GetToken (aStr, aToken, aSep : String) : String;
% C7 o f- x6 P4 l7 r: Bfunction CompareStr (aStr1, aStr2 : String) : Boolean;6 W8 H* k: m4 A
function callfunc (aText: string): string;
% T( s1 v- D7 l+ [procedure print (aText: string);- d8 b+ Q Y! w2 ?0 C
function Random (aScope: integer): integer;& i" f8 E( H$ f% l5 T; ?) H7 S/ q
function Length (aText: string): integer;
6 C$ y2 P& K: m/ x& m2 cprocedure Inc (aInt: integer);7 | Q* W' Y) g1 b3 f4 V5 k* b
procedure Dec (aInt: integer);- ?5 X, \% e- y6 m; b3 @$ i- j
function StrToInt (astr: string): integer;+ U; r/ S- E/ T1 z! Q$ z, W$ ~$ X
function IntToStr (aInt: integer): string;
6 S7 [8 Q( }; g4 k! Y" g& @! u4 A+ kprocedure exit;
1 |4 K- _' w, n0 N3 E2 F! P1 o# F/ @5 Y! m5 c' p1 F
//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么: Z! o A7 h# S- \/ Y
1 R# @- m& W: r! C% A
//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou
3 q0 F! ?. B4 O$ |9 q
* ^6 `5 O! I e! C5 o b//第二句的意思是当左键单击的时候响应,
/ @% Z8 @ r8 F0 F3 w b& b& B' S; O4 r
procedure OnGetResult (aStr : String);
Q8 D p6 s. M) V9 ~3 {$ `procedure OnLeftClick (aStr : String);7 x% S/ z8 Z ]2 V" D: g, Z
r" C D, L: u//以上是脚本的头部,下面是脚本的主体部分
' U6 `+ j" H* x1 X3 T6 Z" R7 y& T7 u9 R, |* B
implementation
8 P3 I! [6 r% T- @# {5 W
+ E% `! @; X! ~* l& }//当左键单击时, ^1 j4 ]( i6 f' q0 y- \
- S3 \% ^- u1 D2 a6 o A' p
procedure OnLeftClick (aStr : String);
8 G% T% t9 [2 s3 R& M
& t: t$ U- x, I$ \//声明变量的类型
; C! j* j* [9 ]) ^var
3 X( E* r8 N2 f4 D
) i' d; g. P* h//Str变量为字符串型
7 w' C. U/ |$ [8 L6 X- a Str : String;5 }$ }, h# f# t" U2 T# @; a
- `$ z* _. E' a( A3 }
//Race变量为整型
& O+ X$ Y( w g4 w/ u/ j! b Race : Integer;
+ r; U1 a( }5 \& b h4 d/ bbegin
" J0 O, N! F1 t8 w" U0 \5 ]) D4 ]# r8 w% u2 w/ M
//获取点击者的种族
5 Z4 R3 x( m7 Y' G' p Str := callfunc ('getsenderrace');
, w# ~9 ]. X: E9 B! E
' g7 G8 ^- E* W//将获取的值由字符串型转换成整型( |, V6 }0 C. @: a) v& ^8 g0 Y
Race := StrToInt (Str);3 \; s# A) u7 J7 `8 M c3 t" M$ b) f
1 e& [9 P2 \& X5 I/ d//如果种族为1,这里种族为1代表是玩家
2 O) R: [5 \$ Z9 A2 ~* l* h if Race = 1 then begin7 e" N/ w/ S' o q. M, H7 r
* `$ b& @- O6 D8 a3 v' m, W//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种
3 R8 \# s3 v0 U8 P2 @/ p Str := 'showwindow .\help\屠夫.txt 1';& j7 D) Z6 t$ g8 ? R) y
print (Str);
# I- h) l; F; e5 y& f
7 {* J% _# c; C! j' Q7 K3 i8 Y& r7 \//小判断结束 M; _$ t" ?6 n' Q7 N* q; [% ~4 p
exit;
; W0 }! a0 f4 n2 F- ?) \ end;
# b8 x& w9 t) ?- |. W1 Q8 Q% v* @, X4 A0 ?% B+ z0 g
//一个语句段结束# T' Q' d& r' W/ M1 P$ h; |7 h
end;
% ?" X" O' G. [7 Q6 D" U
& q- }" x* a- `//另一个语句段开始) n% Q: G6 v( ^) {4 M% l" M, R
7 n6 I/ X+ p9 u6 o8 i
//当从Help文件里反馈回命令参数时,做出响应
3 {2 x9 h/ X/ I. u8 B% |- ^5 ~
2 H8 h" B) o5 q( L, b. T( Qprocedure OnGetResult (aStr : String);
$ {5 @# H; t! r% A {var" H- J' c0 N4 l' W2 B
Str, Name : String;* `; y3 M; m4 V9 s! ~$ M
begin! q% s1 B7 k# v: u7 L8 Q1 V
1 N9 b1 B; v) I7 _& Z/ D
//当反馈参数为close的时候就关闭对话框
. i% u5 q5 X! u, A/ M if aStr = 'close' then begin! j; |- c1 L2 o- Z! x2 V K
exit;
, ~6 F5 y" ]9 K$ F- E( n6 n$ p end;( c2 p8 V/ B. b
$ Y9 ]6 e$ k+ K6 z0 {% I0 L//当玩家选择niujiao 的命令时9 U4 y7 x1 J7 s4 x- Q" D, c! M
; [+ M! U" ^3 h' x+ K
if aStr = 'niujiao' then begin* h2 f* d( ?; e; T+ X1 z- \
- b. a _& Y' u1 K/ A, O
//检测背包里是否有牛角
: g* @0 ]& W* _: {$ K Str := callfunc ('getsenderitemexistence 牛角:1');7 |2 Y, R1 w @" ^1 p
- ~7 L1 F% x8 F8 A//如果反馈信息为假,也就是没有- z1 ?5 p( B4 M0 S! Y7 i
if Str = 'false' then begin
+ e, ^# ?# }% _- N" o: t
$ G) V m* Z% f! z" ?& C3 _//屠夫说话1 H5 v& Y1 {. R0 \- a7 N/ Y# z7 a3 M, f' I
Str := 'say 快弄牛角再说';2 e9 z" K" l0 e' ]. I$ j6 |
print (Str);
7 ]8 b B" g3 L5 q/ r' ^! f; ]6 Q: O% G
//检测结束0 D7 z# Z% ^; |5 `! |
exit;
- n5 R9 f) g4 d- L end; U. ^; s9 R+ H4 j1 L6 }
. S' r) g8 P3 u* b: w
//如果有的话就继续执行下面的
" L+ F2 g1 A* G* x: p1 f8 l3 ^5 n( F2 ^
if Str = 'true' then begin; B2 m+ w3 J+ ?/ c4 f
5 \! q, x0 f; }1 ~1 v//检测背包是否还有空位置5 M2 i. n8 b7 H& z
Str := callfunc ('checkenoughspace');" j! G( p/ Q. ~/ R
. D0 N0 V+ X; i9 K& j. A# x
//如果返回值为假,也就是没有
4 U+ A: ?9 x i! ]+ E* V if Str = 'false' then begin* F# M2 ]# G) q% M0 b0 j# M
4 S2 L- M( |+ u0 B4 E5 F6 {
//那么就提示物品兰已满 |% T* J8 l% f& ~
print ('say 物品栏已满');
# M( [; t. V0 D1 J) \
# }) W: A8 |3 Y6 h- k- ?# G& E//检测结束! S. }4 J( a: |. Z$ L* o# ` K
exit;
3 N8 j) O! q) w. D; _6 Y end;0 Z1 l$ p$ J* N" g
- ~/ N6 ~/ ~+ l( T7 F6 _% P4 q//如果背包有空位置,那么继续
* l$ X8 J$ ^# ^! |1 W* X' g* X
( H8 }: J) d. s' U( `& E8 Z% c//没收牛角
4 j4 ^4 O# [7 n" {% H8 n# u: l b0 o8 E' e9 e3 a/ g9 J( H; W
Str := 'getsenderitem 牛角:1';
9 j1 m9 Q# W& \$ z6 y print (Str);" v7 k D( Z& q
+ [" I4 u) ~4 S2 e7 ^//给牛俊弓服 a+ K [, ^# o# @0 X: x
Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';
1 Q6 k5 `7 ~* n4 i- w5 e& N! [ print (Str);6 @' q* D9 d. a$ y
Str := 'say 收好了..俺最喜欢的衣服~';
# E+ c# E" U2 g* I print (Str);
) w. ?) z4 Q" s& N exit;! l- T7 U2 K" n
end;5 U8 S$ Y4 }+ w' Y1 Z( M- B5 Y
e$ Y6 h1 ?3 [1 w0 [; ]7 f/ J+ T9 w
//判断结束语句
3 x1 r6 }5 M* b end;% d1 H& }# R! e* p9 a& S
exit;
" ~- n$ o" z8 d$ W0 s$ c/ N# m1 R' z/ ] e2 B$ I$ n
end;
7 @, K2 R) t/ J) K& {( b0 A' W
. _9 ^0 j+ o! z0 |1 n) k/ jend.) O9 L' O* o! ]. ?' j& {6 x
0 A& f) ^3 ?4 d3 I( P& c+ y6 C
end; M5 U" U4 l; n' u$ o
|