任务策划:% ^4 j: ~3 C! q8 \ z
出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!' o2 ~% ^6 z3 b, i4 W
来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)/ P! ]3 J, ~2 I5 r
收集这些材料交给屠夫,他会奖励你东西! z! l5 P8 P8 b: O. X, ]7 m) M
这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。 T5 W \! P! A5 l. @4 G) z
; O) @+ R' [9 g5 n5 v- \- i目的:
/ m! M' w2 ^* B+ z. H. q, N体会最基本的活动都是怎么设计的
) ^% W# |. d- T. r. }: ]/ W* I4 u/ t% E$ T
知识点:
/ h' L% p! T$ L6 L) L- q1、检测包裹里的物品
" u+ z, n* _9 T }" v8 p& w2、检测包裹空间* f* {7 J" }7 f9 }4 {
3、给与物品( i4 t8 p$ V7 P' f0 ]6 N' _" @
4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。
' A( i: k5 @7 q5 n
, i8 e1 p! n+ d! j3 Gunit 屠夫;
4 c* j4 V- _3 O
' E5 s8 r- U5 r Q//下面的是通用的调用程序内建的函数。每个脚本都有的。7 O6 w$ R9 ~1 E8 f3 h0 g) Y3 @. X2 I
/ y+ i8 D' Y" x' uinte**ce2 b8 ]5 F/ g/ d; c! |
8 b4 v( e6 l+ K& n8 E4 Rfunction GetToken (aStr, aToken, aSep : String) : String;
9 j1 B1 g* }* E3 U3 ^function CompareStr (aStr1, aStr2 : String) : Boolean;
; w2 N7 c. f0 c+ d3 F* r ^function callfunc (aText: string): string;
/ ?1 E; O) n+ s2 K: t- dprocedure print (aText: string);
# c' v% Q5 G' |% {. J2 yfunction Random (aScope: integer): integer;
* V/ T; ^, R- z4 V9 b. h, L4 s3 gfunction Length (aText: string): integer;0 o6 Q2 o" _7 `
procedure Inc (aInt: integer);
% _7 G) D/ o2 d$ Qprocedure Dec (aInt: integer);0 T. _! q1 d. r) |
function StrToInt (astr: string): integer;. {% E" d0 P Z
function IntToStr (aInt: integer): string;
* s$ K* M5 J9 u7 e+ R3 Mprocedure exit;6 m( P c% t( [
$ ?2 B6 ^1 o) T9 h2 j, v/ t
//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么
3 O3 Y2 f3 \- F
/ @" v5 C! l- J, e* z//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou
' L2 {7 { `1 P/ L4 n: t/ }
- T3 w0 w5 r# u& K }! S9 p8 B* V//第二句的意思是当左键单击的时候响应,5 g+ O4 I& E& p- J @" K% Q
& ?' `2 O( s' ^& W. _" ~+ Dprocedure OnGetResult (aStr : String);; q2 `5 |2 ]' P5 C
procedure OnLeftClick (aStr : String);
/ M2 x/ n {6 B9 y; }* I% j9 @. F0 ^: S% V; P O0 x% E" e) ^& A
//以上是脚本的头部,下面是脚本的主体部分
* [. O7 X/ [' b6 v. D2 h5 o" d
3 Q* g% D3 ]3 w" M% Himplementation& Z& }2 c1 K0 K1 j6 o0 `3 g
5 k, B4 i6 N+ D2 j6 p& w; t//当左键单击时
+ l3 f" B7 S Q6 h/ R. v' l5 i1 F% K- B [" m
procedure OnLeftClick (aStr : String);1 t% a6 o5 u1 I! P; |6 O2 Y: x' {
5 e7 O" h- \$ H! m. s* G, t//声明变量的类型# `8 g2 K6 K7 w: ~
var
/ }5 H6 X( B7 X( z$ Z* ^4 e
# r' |! F% u; ]3 P9 }! B//Str变量为字符串型) V& g$ n0 L/ a& j
Str : String;" ]" ]# V( _9 _) O9 P: k) p1 Q
2 D* H% c* z$ n//Race变量为整型! N" w; [$ _6 W" j* ^+ a
Race : Integer;. _" ?) N8 M8 M* E
begin
& e7 c6 d1 I6 B' \3 ]2 I# h+ R/ y6 i, H2 v4 n2 v
//获取点击者的种族
4 m$ M0 u6 [) M' r Str := callfunc ('getsenderrace');2 F: j9 c2 p) c2 n- j W% }. U" i/ L
, ~$ m) N# u% q9 v5 R" F1 m0 }//将获取的值由字符串型转换成整型/ ~7 k5 f0 r+ ~0 G6 F5 ^- f
Race := StrToInt (Str);" T1 K: N, ~ o6 G" h# [
6 a8 [; a. E! U8 J( R//如果种族为1,这里种族为1代表是玩家8 i! a9 Y) Z* i& E) d I
if Race = 1 then begin
- c" P* h4 c9 F5 \) b# t7 Z) t4 E7 E8 {& `
//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种+ P9 r6 [7 p' u7 e! O4 N
Str := 'showwindow .\help\屠夫.txt 1';/ D0 \6 K/ Q# J
print (Str);* P/ b5 a5 \( `" J' E
: M3 _- f ?2 D, \3 `//小判断结束9 k+ u! ~( J# M2 R
exit;
" W# J8 ~9 Y3 @3 l8 p0 _3 ? end;: j) Q }$ }3 A# T5 a
9 e5 o9 M9 f2 N//一个语句段结束
' v0 G" n, A' e r3 \# uend;3 H" |% T$ R2 N# F W9 Y! S# ?
2 Z; m1 T# ~" r+ I//另一个语句段开始
; \( Z$ N* X3 h
Y$ d l% X: t) g/ F" Z3 Q//当从Help文件里反馈回命令参数时,做出响应
- s0 q% ?# t; e6 ~
9 R4 q/ d! M. u. }1 w3 T. o$ f3 ]procedure OnGetResult (aStr : String);
* u. \ K. H$ |var- i* s* l* H" ^/ {5 }6 T0 j7 W
Str, Name : String;
' M7 v/ ?! c+ _5 q7 mbegin* E6 i, h3 S2 q
- t" n- ^) g- {$ g& R( p: g# t9 Q
//当反馈参数为close的时候就关闭对话框8 |+ P# i; R+ X: M
if aStr = 'close' then begin
& M: r+ s& e) _; m9 ]; c5 t exit;
2 y. e+ N9 D2 c% y end;
$ U* B* ^/ q+ e# U7 q
' Q* J: U% ? m/ ?. r7 _//当玩家选择niujiao 的命令时
' U1 ~$ p0 Q8 S9 H
/ c: n: _# r* |5 @. U& @4 Z) } if aStr = 'niujiao' then begin! q, ]( W8 ^0 X( c
* k- e- s2 W( G. w& u
//检测背包里是否有牛角: _. J1 ]8 d7 i o9 T: V k1 n9 c
Str := callfunc ('getsenderitemexistence 牛角:1');" q2 A, {. b7 c1 y/ H3 [
& k2 S/ \$ D' [% x+ J* q: g4 o$ i//如果反馈信息为假,也就是没有
% X6 S1 L, |% t, c G if Str = 'false' then begin6 Q+ \5 [/ W; S, c
* S4 T- m- ^+ ^- T
//屠夫说话
3 }5 e6 P1 _, k8 n/ D7 r Str := 'say 快弄牛角再说';& m1 {& W( h$ F4 x0 L
print (Str);
, H9 |5 o" w' H# R0 Z5 o
2 A' p' m' _* U//检测结束
* I4 S% G: p" M exit;
# Y4 a5 g& u5 U( e' t2 a6 ] end;
) {" V" F; J4 R$ g- \$ S. o) m9 ^" r) o
//如果有的话就继续执行下面的
. }3 j0 `6 L* n+ x B- v# g, a2 r. T8 a% `2 I
if Str = 'true' then begin! L* I! h& Y0 k7 @8 V9 k
7 b7 n2 w& w* n; d( k2 s2 a//检测背包是否还有空位置
; p. O1 ]- `3 t; U% H Str := callfunc ('checkenoughspace');
! B. C; Q" l n) h3 L# K* _+ e3 x, c' i. [
//如果返回值为假,也就是没有9 y/ A3 D0 u7 q$ l$ v1 s8 t* X
if Str = 'false' then begin' ?- M# v3 m2 n# I' j5 b
; q, l" f! U2 E& q//那么就提示物品兰已满0 j6 p. c6 ]$ v
print ('say 物品栏已满');% R- i& \# Q! \! g8 u( V
( v! r9 |* o+ t$ t. P, d//检测结束# o9 a5 ^' ^; {: [; ~/ e" v
exit;
6 {+ s+ @# V. l$ K( z end;2 q- S( q4 S" V# C9 s
3 x: Y0 s' U' a4 |& T ^
//如果背包有空位置,那么继续
/ w, k6 {5 `9 k$ p/ q% \5 x h6 G
% z5 ~* [6 k4 g; y" t//没收牛角& S" K1 I2 t( t) h
2 }* d' x5 ~9 Q8 G) W Str := 'getsenderitem 牛角:1';
- a! [2 C9 _! G6 v& W3 f print (Str);
5 q) q9 D/ U( y4 e6 F7 f1 k; _7 ?( V' m) Z! E
//给牛俊弓服
. S0 N5 M- s+ v) v2 P1 |' t Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';) r$ B- P9 |7 d- Z# ]
print (Str);! m7 K3 P1 @: N. j7 T* z
Str := 'say 收好了..俺最喜欢的衣服~';% c8 a5 w5 v# z
print (Str);) k% q G. U0 A7 [; w3 ^% I6 B
exit;; e! |4 Q6 n; g0 d- U" ~/ `. }
end;
" w5 @: N/ s# k) j4 v' F' ?9 J5 S8 l7 n1 T6 m
//判断结束语句7 I& @& m# Q- B: h
end;
% e1 ^ @7 n F" v" U exit;
4 M9 ~+ p; @2 P4 M7 n" Z+ a% {2 a* s
end;
) H/ Z+ P1 u5 y0 x( m6 r$ O( q1 W: g: r2 _, |* u! Q
end.- V9 X/ D# F/ Z6 j9 o; ]
1 g& t. W, A: i* y4 q
end; 3 }' p* i9 E+ @. w/ G2 x
|