任务策划:
# V* I$ A$ {5 F" j/ L8 m出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!5 g o G/ |: y
来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)
* m6 d1 g1 V% t- X收集这些材料交给屠夫,他会奖励你东西% w- w" J# W W# w3 D. Z
这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。; A. l! D* e1 W, L% L$ e4 q
- ^- @5 y+ g& \( y/ I5 E6 ^
目的:; ^3 y8 m$ X3 p" S9 O# w" g, k
体会最基本的活动都是怎么设计的
* v" `" v. @% q: @; L: k+ U
9 Y4 t3 V# I6 e% f9 u+ D知识点:
4 I H2 {. Q |1 n! q1、检测包裹里的物品' J P9 y: v8 ~
2、检测包裹空间6 `1 N( W0 v& y8 S8 {, U' _
3、给与物品
R* W/ [, \1 d% |+ c" f6 x3 N& F4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。
2 h# t1 b" s; F* X
$ C: J H5 z) i8 Tunit 屠夫;; k% D1 U3 ^) R T
/ s! J6 a3 z: J0 s. ?) F//下面的是通用的调用程序内建的函数。每个脚本都有的。
0 t: S& P0 D7 t7 N
4 |+ `: ^% \* U% W2 Kinte**ce
8 x* c$ U) J( @1 _) X7 ]# K( Y, n `5 u# p8 {
function GetToken (aStr, aToken, aSep : String) : String;/ [5 H( J; d: O% j. K! o0 a# ?# |
function CompareStr (aStr1, aStr2 : String) : Boolean;
0 m8 t' Q g* afunction callfunc (aText: string): string;
) B6 u1 d h7 @1 s9 ^0 zprocedure print (aText: string);. c; t" v4 o8 Y. n" Y9 Z- B
function Random (aScope: integer): integer;1 ~# }/ y5 r* ?2 [; S
function Length (aText: string): integer;; W) Y! R2 `8 s
procedure Inc (aInt: integer);
+ Y! R9 V2 ~8 ?5 I, b+ M0 L. a2 d! aprocedure Dec (aInt: integer);
/ m: p: I3 \8 E! a9 H9 efunction StrToInt (astr: string): integer;' n- |8 a+ H* y" n( ?! ^
function IntToStr (aInt: integer): string;
. K/ O$ x; O6 Z* t8 ^6 Q6 dprocedure exit;
/ V5 h- I7 t! T; g% ~7 O. q# S' w0 r; D a; v. m
//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么' p( ^0 k* u7 f& m0 I9 n
Z, Y% q S0 o9 s* B2 V
//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou
. w+ o8 ?; F* I4 _; a
0 _, H; v& W5 p# ^0 [; L( f) x) D//第二句的意思是当左键单击的时候响应,9 T7 v0 o7 t* H; ^5 \& U& Y
& z2 B6 C. ~; F% `& M. ^5 W
procedure OnGetResult (aStr : String);
/ K3 Y! C& l- L) v, uprocedure OnLeftClick (aStr : String);2 ^$ j) }& c$ y" L% p5 p
5 R v7 `! x5 s& t7 K2 r6 y//以上是脚本的头部,下面是脚本的主体部分
4 Q; C/ z- K7 u4 {! X% ]5 W% h, h) A; }* b* T6 B2 C2 T
implementation: [$ j& V8 X' P. [
, @# Y0 n1 Q. ]
//当左键单击时
7 Q3 L' I9 L4 j) s1 y: R- O7 ^
& o) `9 }" l' p Mprocedure OnLeftClick (aStr : String);# v7 q; m" ]# t
. |/ d8 `9 y9 f2 r" s3 m* |
//声明变量的类型
" a1 _9 X0 M) `- rvar+ k+ t0 \" N' J* z+ a V$ L. P" _
9 _! v, P- r4 x* S+ y2 j0 G" v) k
//Str变量为字符串型% Q2 e: @; b- V6 F( c
Str : String;6 ^( s; G4 }. c3 H* _
7 y+ Y! I) h1 o5 M
//Race变量为整型
) M9 W9 G5 v+ H( X" u Race : Integer;/ ^' h5 U+ c: z& K0 L
begin# B D) f3 z% J& K7 K. P0 U
+ M$ ~6 x9 ^/ F( W, [5 ~# X. q6 \
//获取点击者的种族
7 i& \2 t- \" s3 w/ _$ h* V [- v Str := callfunc ('getsenderrace');" b0 c1 g+ I! ^, j. H
1 \4 |: q3 y6 n* C//将获取的值由字符串型转换成整型" r* t! ?0 U7 k' S" m* V Z
Race := StrToInt (Str);
8 n2 P% t8 h5 b `8 \' j0 y& Q- z2 U8 K; D) w% N
//如果种族为1,这里种族为1代表是玩家3 N+ Q! @" d; W4 a/ _, f
if Race = 1 then begin
- h7 ^* V3 w: M! y7 U& Y
5 d8 e7 Q3 t3 h p//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种
# ^8 | w6 u& u9 n/ ` A Str := 'showwindow .\help\屠夫.txt 1';
6 b0 [3 {- C: X print (Str);
# S- \! e; T1 G, ~; S8 E5 |% W1 x z% ~" N! ~+ |& ^- ?$ d' k
//小判断结束
: c7 n: j; J5 M# f+ o6 w z exit;
% G1 M- P. d5 h" I. Z1 A* g9 i ^7 d end;
! m, [6 l/ D0 @# P2 g' B2 p) q! L* ?3 c; S @6 E( ]
//一个语句段结束' @1 _- k! N0 D
end;, ?3 F# [. v6 X9 A# i; t) k! q
' j$ R& D* R+ \" i2 H* v8 y4 h' C
//另一个语句段开始" {% {7 z3 b& @- J
- _/ R( C* H# E: t//当从Help文件里反馈回命令参数时,做出响应
* H3 Q8 ^" {7 b6 L+ m& x- ^6 H: Q f1 n9 j7 N
procedure OnGetResult (aStr : String);) j' i" U: I. U0 `4 ]2 G
var+ G- y+ f; n- |7 z
Str, Name : String;
( y9 _( R. P) \1 c9 s8 |, nbegin4 h+ T" z) M' `; I, v9 r2 p+ b
( E4 j4 V) ~4 H5 J, s h2 ?! m//当反馈参数为close的时候就关闭对话框" Y0 g0 M8 n- f3 |- [6 x
if aStr = 'close' then begin
% n2 @& [( R0 X" h exit;9 A4 d2 Y/ X+ \3 t/ D1 L8 c4 u
end;( G }5 a4 N- O0 }7 j
- |4 _* w, y: k/ |9 {
//当玩家选择niujiao 的命令时
8 m" H1 A! F. ?( l& _
: n0 b* A8 U! ~$ Y! k9 N if aStr = 'niujiao' then begin
$ {6 Z; h6 H v% U' B; D. a
; N0 K' c# p# V& X; }//检测背包里是否有牛角2 J w4 L# }' X) h! D
Str := callfunc ('getsenderitemexistence 牛角:1');
3 D# `& X5 v- Z9 c
% u5 Q- z4 W: s5 c1 s! k- W//如果反馈信息为假,也就是没有' e' @4 P- _ E3 b$ |- O4 @& L
if Str = 'false' then begin
& I$ P/ a! n2 n' j3 |- {2 v6 M# \1 m% b
//屠夫说话, o0 R7 A# W( E4 q0 F. Q
Str := 'say 快弄牛角再说';* _1 j) A$ V, c0 p! c* E
print (Str);
0 s3 `0 d8 [) ~3 r1 U$ Y5 j1 R+ I9 _2 `
//检测结束$ e- U! v! U. _: }0 F9 ?
exit;- H; P2 q2 b% N/ i
end;
" X1 {3 Y, q. F4 I& [' T; u- {8 {6 p" E1 h8 q1 Y( F. h
//如果有的话就继续执行下面的
# _: F+ d e1 D
- i9 k" ]8 V5 g! l, F if Str = 'true' then begin' W5 T `6 P3 `8 ? C
) G8 q8 A9 \! s& s
//检测背包是否还有空位置# R- @, C# q+ F" n9 B. C' ^2 A
Str := callfunc ('checkenoughspace');3 j& v. |' ^% e; ]/ J
; f" `/ e/ G/ |//如果返回值为假,也就是没有 T9 q) _1 t$ D5 z) d/ Q
if Str = 'false' then begin
' H( E9 c$ [0 `$ ~2 B+ V( g, {5 U. p" y- K0 g/ l) v+ t. P
//那么就提示物品兰已满
4 K6 [; n0 O$ K% ?) G print ('say 物品栏已满');
r/ u: e: ?3 q+ m3 _0 I, b& D7 r) s$ |; j, n
//检测结束
7 C" S1 ]& G5 q8 N3 M* q exit;/ |" K1 Z( P/ W" x# V! I
end;
7 x$ W7 V( U: j4 q
0 T# U2 r/ H( M( P2 }$ Y//如果背包有空位置,那么继续; c4 v% n* G6 M( |# {, t j- a
0 H# B6 @ j. b4 [, t* a//没收牛角
& l. H9 r- e' m* G7 P7 g6 Z% R( T+ S1 \: Y: d
Str := 'getsenderitem 牛角:1';( Q% U! C' i3 Z3 q1 K
print (Str);
; T0 o/ u2 J! u* C9 {8 F0 K
; m/ W0 A, h3 t4 e$ H//给牛俊弓服
; {5 K( Q3 \4 } y+ C8 L! @ Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';3 H( `2 L: b7 _' j
print (Str);; e/ i. Y5 N: t5 D9 q4 l
Str := 'say 收好了..俺最喜欢的衣服~';
& _: V. U' [& e [) U. y print (Str);
0 @( N2 p- y5 I exit;( T; i1 w6 v' Q& X$ P( J' E! h. h
end;9 K) Y4 [: j8 F8 k7 M
4 h, F5 |- V9 B
//判断结束语句
* L' a# I7 E5 G+ y9 p) ^6 C3 d end;" a: m% K/ I; y
exit;
- B0 Y* n \- d" r' ^
) e& q4 A a1 P0 V$ s( }end;
4 M5 e7 b1 q0 F: P4 s" A6 K. y
: f# B: t8 o: ]# i+ M7 Aend.
' N. z& y: Y# N- O: i' c
* l$ S7 u/ D6 \end; - m3 f: ]% x$ C: B9 {. F
|