任务策划:
" c% n7 I" m0 e2 w出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!! F- f, r0 `( g# R
来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)
- w% s( p3 k' |7 N' G收集这些材料交给屠夫,他会奖励你东西
& c: F6 e) U) }1 k这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。+ g. c/ r' t" t3 k
- M: w+ e; [; K2 o4 ~2 J& M, S- N
目的:
- z r* A* }$ C2 `! w体会最基本的活动都是怎么设计的
" h; C/ }* Q% f! M8 \/ m7 n8 d
# D9 W6 w* J( b知识点:( `8 e( A3 p& V" J7 ^5 Q$ R
1、检测包裹里的物品* ~6 ~) [: J# H1 J
2、检测包裹空间
5 r2 R; q O3 {( ?, |4 v/ U9 f/ P3、给与物品4 T0 [. w! k( P+ i/ {) A k7 a
4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。
& C6 L: O# |! n% b& b" x/ Z& z- U! ~2 g/ K9 R3 q
unit 屠夫;# q: p5 U% c! N0 l: f/ k
5 f! K% F* h A5 T! N
//下面的是通用的调用程序内建的函数。每个脚本都有的。; M! U. C, u% [* G1 o) W) t
+ n- A6 f3 A9 a+ j( R: D% Y
inte**ce
! o P2 u8 ], q+ B- d1 ?7 D
8 W- T& Q/ E. o! Mfunction GetToken (aStr, aToken, aSep : String) : String;
2 J" i9 _& D4 c7 H# X" }% p: f2 g& {function CompareStr (aStr1, aStr2 : String) : Boolean;7 m3 ]4 X, K7 x/ Y. _( x5 h
function callfunc (aText: string): string;- [2 K( v( o* B6 [% r0 W) h- ]
procedure print (aText: string);2 ?$ R2 M0 m! ^5 V. b
function Random (aScope: integer): integer;. d0 W ~* _& H/ n
function Length (aText: string): integer;
. ?& x, N' v- \7 gprocedure Inc (aInt: integer);
+ o3 `. ]2 L s+ k2 a" x( {7 {9 J' Iprocedure Dec (aInt: integer);+ C4 ^$ ^! e# c0 p& ~0 d( j0 r
function StrToInt (astr: string): integer;0 r' g2 `- e2 P- N4 Q& K+ \
function IntToStr (aInt: integer): string;
6 q- f* k0 q# Y5 [procedure exit;
3 \3 p( n6 _* q7 H, z: C
* T0 K0 g$ S J0 c//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么2 j9 q! ?9 Z3 {/ a
8 G; L- p& _4 p4 Q. z//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou
) Q( d0 p" S, D! i% s
" s6 m: y6 R# [//第二句的意思是当左键单击的时候响应,
7 l7 R8 J5 M9 B) R0 {& r% Q
; p) G) m8 S* Qprocedure OnGetResult (aStr : String);
+ H' t4 ?! L) {procedure OnLeftClick (aStr : String);
. g v8 o; j( w6 { O9 k0 E& f+ ?7 f# [1 C
//以上是脚本的头部,下面是脚本的主体部分" J2 @4 K6 P. i- R. r2 J
8 c7 d( J% n7 M: M7 Gimplementation
5 Q1 p& a9 s6 S& I
% c8 O" l3 {; K( |//当左键单击时7 T4 M8 }! R& D( W+ o) |, y( y- D4 z
; p# k2 `/ H3 Nprocedure OnLeftClick (aStr : String);
5 Z- ], L; y& d2 C$ g- E, A- U
//声明变量的类型+ \4 S: X1 x2 f: [3 U( g
var
. i8 M9 K$ {6 S; q7 b
, _4 U W& \( [7 S6 J: |//Str变量为字符串型
3 j( C1 L2 Q) Y% m- k, h9 e5 { Str : String;
+ b1 e# M; N& l% ?
- _$ V' d5 _( T; N0 ~6 `//Race变量为整型
! C: f2 h) g( h0 U Race : Integer;
+ M; u2 b' c# \+ _8 `' X0 \begin
9 `% {. a9 j1 V) p$ R7 ^* x) e% e3 a- ?
//获取点击者的种族
. Q& i& A- c Q) A$ A0 P Str := callfunc ('getsenderrace');
4 o! z+ p0 p3 t" G% |+ A# s
- x) o- t P* t+ g( z! [//将获取的值由字符串型转换成整型' z2 _5 Y9 U0 m2 W
Race := StrToInt (Str);
2 l% Q/ Z$ Z: W1 n
; Y" n* _5 _; U3 x( {9 [+ x/ K//如果种族为1,这里种族为1代表是玩家
2 l/ y( t# ~0 @) \& W$ B; `5 G if Race = 1 then begin! V8 e: n) s' n
0 Z+ A& H2 E: Z4 Z
//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种
% ^$ L- i$ m( c9 c Str := 'showwindow .\help\屠夫.txt 1';
" X9 ? f/ z+ `) _: [7 ?2 R( G) v print (Str);5 N0 s0 M1 S/ a( f0 t/ ?! \; r
; i, U6 c' p8 ?( a( x//小判断结束/ g. W' o( o: \$ z6 x: H
exit; ) I4 l4 e. k2 ]; N
end;; K& f! i6 a. \8 z c
1 g' R7 \7 x/ }0 [
//一个语句段结束$ o1 S% l! @+ W/ s' n; @# F! @
end;& F8 n- t2 ]; R Z
" Z3 m/ D1 i" f, f" a+ }$ j. T; ]) h" d% q//另一个语句段开始
' \* ^. l* h9 B9 z) t- k. V! l' i; X! q" u/ u+ q2 n1 ?2 T9 ^
//当从Help文件里反馈回命令参数时,做出响应
! R& }% E: O! c0 \/ f9 f/ S3 K( `1 e, R( s+ t
procedure OnGetResult (aStr : String);$ h ~& I7 w2 _( O0 n/ \9 ]6 I
var
$ P! X' Q* N5 e8 C! ^6 V: ? Str, Name : String;/ i) i; ^7 f% \/ c) V- p
begin8 ]9 t( b5 g* `/ s+ w9 \
3 f9 {. Q7 f4 p7 }- G/ c//当反馈参数为close的时候就关闭对话框
" I9 e3 o- ]% L if aStr = 'close' then begin: f3 b( g& [( s$ w* B8 V: u
exit;8 B3 k. k4 a" }2 h
end;) o0 o: u e; a* }* n$ u
9 F3 F/ F0 I# C, ?9 P//当玩家选择niujiao 的命令时
0 Z% x; P7 q3 R1 Q E0 d" m) H+ c! t" I* e+ t+ C
if aStr = 'niujiao' then begin
- L/ f) |( ?$ M" ?$ n- _0 I# u3 b G6 J2 r+ I# ^
//检测背包里是否有牛角5 z7 |5 x a u& g: {
Str := callfunc ('getsenderitemexistence 牛角:1');' V' V: O; D* N
6 j; a& {. U4 [$ e2 T
//如果反馈信息为假,也就是没有7 b! }4 E, P+ c N# f$ U/ d, b
if Str = 'false' then begin
7 }& J! s1 F: C% B1 o
0 H: F( L$ s6 K8 A4 F//屠夫说话# Z/ K! V N( t& Z; e0 R7 N# m, F
Str := 'say 快弄牛角再说';
8 A( y' i g8 s6 a% t2 Y! ?4 K print (Str);- y! a+ f, S* f0 r- _
# g; T/ R) A: \! S9 B7 n//检测结束, z! Z' v; H) \% D7 G
exit;
( M" [" `2 D! r9 U/ Y8 o end;
% r Y n; a% g1 {4 F5 d+ Q$ }) z9 n' A5 Z! n
//如果有的话就继续执行下面的
6 }- D! X# v3 F$ W3 ^/ \
! A- U0 Q$ H3 Q, V- M if Str = 'true' then begin3 U2 K$ h9 a3 p7 g$ {2 F4 D
* X8 b: E9 K4 ]8 ]6 o* c) `# T//检测背包是否还有空位置, |& U% `$ Y2 p2 }3 E, L; \
Str := callfunc ('checkenoughspace'); p2 r d5 i0 l3 y
- M8 f+ K8 J6 [
//如果返回值为假,也就是没有
" f9 o) ~5 h/ O, I if Str = 'false' then begin I8 k! \( k8 t: x
; V) F2 B, B) H5 E8 G* ?7 P8 |//那么就提示物品兰已满6 m- O: {/ r! ]
print ('say 物品栏已满');
7 M1 n7 {' ^; f) A( y' _1 n/ x5 p3 z# T# ^
//检测结束# o9 s+ V! K: k0 o; l
exit;: ]) g: u: J% G; J1 {. H* K3 U
end;
; R' k% ^( f% _6 Z0 O
7 T0 b* R" q0 f9 e9 u) J) W//如果背包有空位置,那么继续/ k% K' O6 @% ]) g% m
6 r( z- T" Q3 Q3 m
//没收牛角( v3 N) q' M% s
: ^" w3 @. j+ ^5 ~1 Z- f1 Q4 q Str := 'getsenderitem 牛角:1';
1 c( f- A* [3 V6 J% d4 T print (Str);3 [( a' D7 s% n' i
, R; z1 { e9 n) c7 j$ |1 Y
//给牛俊弓服* [) ^2 W8 V; [' k- h" q
Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';) k! b7 M* u$ ^" N" k' R0 L
print (Str);' e3 M1 n9 g6 d6 Z
Str := 'say 收好了..俺最喜欢的衣服~';
2 N6 G5 ^0 O% _: C: s( R print (Str);
1 x( ^& ~; T. K5 l" \ exit;
' d6 ?- R* n8 v+ I6 K1 K( Z5 O end;
" G* s _) Y" k; }) b, Y. n& H6 B+ k+ M1 a3 j
//判断结束语句( k& b" L# x- \' _ H& t
end;
' Y4 \, W+ b2 g# }2 G2 F' v exit;" T" z6 @6 [7 I5 |* z) ]$ c
! e) w0 n2 U8 i" r6 [+ D3 Y6 i2 H" {
end;6 ~9 k+ q" y" O' Y9 U8 H. N( N
) Z1 C5 {) K! ]+ N+ ]. ?4 L! uend.( B& s4 e4 M. W! h% x' Z/ m4 f2 C9 k9 ]
4 ^/ s ]3 p1 B1 j! K
end;
/ } c% j& X5 C9 w; j# } |