任务策划:; O! @$ G# e+ F, I$ H9 X
出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!
) Z3 f. C" o- I) ^) S u来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)+ L5 p6 o1 t8 i! e* u3 I# n# J' r6 ^
收集这些材料交给屠夫,他会奖励你东西
A1 ]% q8 f* m' h5 G {这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。8 I+ U9 S2 X4 L4 W$ `' K5 O, ]
; r7 M9 I9 z3 X6 L5 m目的:, r2 R; p8 o( r8 p
体会最基本的活动都是怎么设计的
% `! \" V( Z Q1 ?8 p
2 j3 `; H4 k! w( k8 o知识点:
2 t0 i: x: \- P" ?2 y9 G6 `5 h: G1、检测包裹里的物品
9 U+ r" i! z1 c" n2、检测包裹空间) L. N6 | C4 e8 @
3、给与物品
; N4 z- |; j, w% I9 u6 J4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。
4 S" h) _7 z& l$ ?( X5 q* @
8 Y; _2 A3 I4 a8 X7 H! C" Gunit 屠夫;; w" c5 v% M, z2 U
8 n. o! X2 x) n1 N' |, r! s//下面的是通用的调用程序内建的函数。每个脚本都有的。
* m# i4 [6 X! [- b6 I& n
2 }3 R/ V) A7 Y) k1 z+ ~inte**ce0 D- b- j. u, m
, w$ _$ Q$ m7 o! g5 j' M3 _% q1 Qfunction GetToken (aStr, aToken, aSep : String) : String;
% p9 y9 y9 P- T2 l8 Y2 y6 lfunction CompareStr (aStr1, aStr2 : String) : Boolean;; p5 T$ Y, N) K6 [- e
function callfunc (aText: string): string;
' ], B$ p5 d: W/ {. q6 Q6 i! k3 r3 i Bprocedure print (aText: string);2 L+ Q1 Y) x4 u+ m! S. \. I
function Random (aScope: integer): integer;
( V0 e" `7 ~+ |function Length (aText: string): integer;
( N) W E* g5 ]* cprocedure Inc (aInt: integer);
! n% c1 |. J1 O6 [5 hprocedure Dec (aInt: integer);( |* j; n+ p! X3 s
function StrToInt (astr: string): integer;6 M. Y8 n. i( L* n9 G$ \0 [
function IntToStr (aInt: integer): string;% G' i! q: z& i0 j+ X6 f) B0 P
procedure exit;0 @7 K [4 @/ ^
& ^# q4 A* x5 x& ~4 m//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么: g8 e: R+ V4 i( k! n1 T
7 E1 i8 u; [1 M+ U( `/ {' Y; G
//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou2 l( {! X/ z5 _
7 J! R. N6 T- t( o0 |9 e5 o//第二句的意思是当左键单击的时候响应,4 d# v! e$ B+ Z2 X- x+ @
3 Z% H$ L- m# v
procedure OnGetResult (aStr : String);! L) G Z* m, H3 z
procedure OnLeftClick (aStr : String);
: G- w# ~* o7 b3 |
8 Y3 H' ~; c; A7 x* U$ ~! k" o//以上是脚本的头部,下面是脚本的主体部分% D4 E2 K1 j" \; ?! _1 w: s8 d
2 |6 Q$ @ `" [4 eimplementation' h* J6 B% r- t' h2 y- I
* ^( u U p7 m9 \
//当左键单击时
$ k* r# t7 L9 _" U( A) |( t0 I* n) u5 _: P" B4 d/ y
procedure OnLeftClick (aStr : String);
( o8 w) b/ O3 m% B( |6 ?) D* \/ L
$ s+ Q( q, F4 r9 o6 s' `//声明变量的类型5 H9 b( P8 m: m( M+ t1 C' ^% e
var8 R' D: a% b! k3 C# K2 b, C8 ?
" U& T( X! R$ Y//Str变量为字符串型
6 W, t% x! ]( g: K1 v Str : String;( Y9 t' C3 l" _9 {2 t
/ d6 q, F- t& q5 v3 N' N//Race变量为整型) m1 G6 a7 E) S! P, T
Race : Integer;& z1 H( P6 l" H' e
begin
+ E1 G0 _4 N ~/ L V0 L6 C4 M- ?, I" f3 H& u5 J
//获取点击者的种族
* ]5 q4 p' k) X; |' r: L Str := callfunc ('getsenderrace');
, O, m% M8 v: b+ ?+ {5 Z+ k# P8 u& }( A3 \4 v( ]# L$ r
//将获取的值由字符串型转换成整型
" E( Q% I+ E0 a7 `! c0 _$ k7 R Race := StrToInt (Str); {* f6 Z. o9 C2 D/ }3 t, a
% H6 B9 O3 @9 ^) `' i6 J//如果种族为1,这里种族为1代表是玩家/ j H3 E* z! z9 M/ d
if Race = 1 then begin$ x. t7 y! d# d0 [& x7 {% i0 _- W
! x3 J6 D: D6 k1 D/ S8 f2 l1 R, w//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种
% H6 w7 j+ b# g U( t; p Str := 'showwindow .\help\屠夫.txt 1';
6 B9 c8 k5 s) ]. J print (Str);
; v# T9 z# i/ ^
. M1 ^- r& p5 z+ [//小判断结束9 M, W* C1 }6 @ d3 ]
exit;
; q6 w1 C3 f* H end;5 j4 x: A) g8 y+ I" [
& h9 G7 t9 x: v! ~( i* l//一个语句段结束. Z8 N' k- f: P) V( H' s
end;
% T1 ]1 U) {, S5 ^4 k
+ d( u3 a4 _" }5 t* D% Y//另一个语句段开始1 g6 x7 [; f. {' Q9 k2 j9 D0 ?
6 ~: M; n( D: f( S5 s//当从Help文件里反馈回命令参数时,做出响应
! B0 g5 z4 M$ a; B+ ?/ N5 z$ a$ |8 {/ A: ]: {, L, i+ N* w
procedure OnGetResult (aStr : String);2 ?- _ W+ I! e" V0 _" C. ^
var
/ i: d' g7 x# M. v Str, Name : String;
( }8 c( W7 o/ o( H! m/ ?& q1 Ubegin
/ D; R1 I1 f: [/ p4 A7 @ O2 C2 Y$ Y/ \" D: r
//当反馈参数为close的时候就关闭对话框
- D* y" g& n+ [6 u N if aStr = 'close' then begin
/ d# [2 w" z5 [1 P) m exit;. R! T9 \) R; f4 _7 |
end;
& y0 ]. \7 d8 L5 U
0 O# w* n3 N, m2 f//当玩家选择niujiao 的命令时
- _9 o* W3 C" j2 a/ n. [6 r/ V f) P
if aStr = 'niujiao' then begin
3 @1 D3 q+ c$ H6 g8 Y( E* Z. O- U2 b! r' U1 z8 H& V
//检测背包里是否有牛角
% k5 b6 p- X. R7 a) e/ I A, R1 I Str := callfunc ('getsenderitemexistence 牛角:1');
% B9 V$ Q2 m5 ?; I, {2 S
* J& Q: Z& Z# m' H) {//如果反馈信息为假,也就是没有. y$ i- W2 b$ L; a( a! B$ m
if Str = 'false' then begin4 K1 O5 J6 M {* c; H
- w" @/ S. Q; A A
//屠夫说话2 g: ?, b% Y* A& l& q a
Str := 'say 快弄牛角再说';/ |. x7 b* @8 Y J
print (Str);
5 t! Y7 R6 m4 l* W: p O
9 `5 ~$ _1 H% i; @0 p( d2 M//检测结束4 O5 E# L7 P s9 K6 w8 j
exit;
. n/ y( X9 [3 |* V, D5 U% O5 S end;
4 B- R+ F! L4 y1 w7 E: G/ E( f
# R% P# n) r- w p* y3 T. O$ i//如果有的话就继续执行下面的
; U8 y/ [4 {& |" X. w2 g' ], r$ Y+ z8 b$ X* q
if Str = 'true' then begin
1 H9 b0 l2 l/ |! u* g8 [* X. |; m# r; X; Z' h0 T2 x! m
//检测背包是否还有空位置
& x2 y3 C# u$ E8 n Str := callfunc ('checkenoughspace');
0 A% N$ [! k4 o: Z: _* o
% L% n. M+ _2 Q+ g. r3 R6 c//如果返回值为假,也就是没有2 ] Z, M( Y) |& i
if Str = 'false' then begin
9 n6 r: _! c0 y/ c" j* Z, p
4 m+ U* O) _# B: O! l# I& V//那么就提示物品兰已满6 V: R. X, }( ?- V* C
print ('say 物品栏已满');
" @( r" p* B$ _4 J) g; v- P3 ?6 V$ [1 w. L
//检测结束8 _) k, V5 {& _/ J6 h8 f
exit;
' F4 ~3 S0 u0 V1 w1 W! l) | end;6 p' R) ]0 S& e$ _' c$ y4 }
+ J; Y3 @0 }7 u
//如果背包有空位置,那么继续/ d9 T2 X0 A2 K }. r
+ {! T+ A2 C4 a- e$ W( s
//没收牛角# |3 Z5 ]8 G. u9 `7 E4 F
/ L: @# {, C9 ^1 J. Z3 v L. z P Str := 'getsenderitem 牛角:1';
) ^* z# n7 A. x% F print (Str);1 y3 i1 G9 {9 @& p) o
! g+ _+ o/ v4 g3 V# w; k0 Z
//给牛俊弓服6 L! t& h, W) M2 \# }& _" e
Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';
" B$ E- G: o* E6 v5 w6 S* M7 E print (Str);
E5 B5 f% N( P# Q! ^ Str := 'say 收好了..俺最喜欢的衣服~';( t+ D# j4 |2 ?
print (Str);
" g$ _: q$ f( f- o exit;, \! J" | E. C
end;6 ^$ U2 O$ w4 s9 W( c
5 z9 i, X* X! F' ^; F P//判断结束语句3 A# ~8 r0 q. [
end;
$ x( Q( e* s$ ^6 N# [2 Z# T- X4 N exit; o/ v/ D4 I1 J4 i6 p# @
* [: o7 T2 r, [' c( R' P6 fend;
+ X+ H! c( Q) `- _0 C/ U" n; j5 g5 Q4 W9 s& G, F e, v
end.5 {( t0 `) u' N. \4 ~2 q! w1 B! }- M
: _+ H+ u8 D9 u! u& q
end;
6 v; ]* X6 a P |