任务策划:
4 Y5 k0 o; W- o) B出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!% D$ X6 t8 G1 n# y0 u0 A3 x5 r9 ~) E
来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)
* ?; }8 I* y$ [! ^收集这些材料交给屠夫,他会奖励你东西
1 p" h8 \) Q5 Q8 T* y8 T) O这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。
3 g# f* ~. C3 G
$ B4 h9 L# r5 e目的:
) }0 ~9 R* O' L' v; _" s体会最基本的活动都是怎么设计的
0 O' ^+ K+ m- }/ V. ?5 ]
* j0 n: Y% [2 F; u, }知识点:% U" C, Y k9 I8 I
1、检测包裹里的物品
: G- v7 Q6 x! V0 @2、检测包裹空间
7 |! V4 v! J/ s' S$ W' a5 G3、给与物品
; A$ r* q; ~) k# `3 x% c4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。/ i- h) t; S$ r
9 ^7 C$ `) E9 ^& R) d! O4 Vunit 屠夫;
$ ?5 V e/ X: Z* B" W' U$ Y" P+ n) O
//下面的是通用的调用程序内建的函数。每个脚本都有的。( Q; J% T b9 _" t4 E. O+ I
% l- N2 m S/ ^& H1 [( J6 x8 Linte**ce
f$ x h3 [% m3 b
5 X4 O: E$ u* y( |3 p2 yfunction GetToken (aStr, aToken, aSep : String) : String;$ B! E0 K% o+ V s5 C) U
function CompareStr (aStr1, aStr2 : String) : Boolean;
, y( F* B: H+ d8 X" V! Pfunction callfunc (aText: string): string;- H9 s% g9 |: y" L4 i$ c
procedure print (aText: string);
8 j, b# ~9 d' W5 zfunction Random (aScope: integer): integer;. o/ p/ A( k8 H$ @ b
function Length (aText: string): integer;
0 ?+ F; Y! G r- D4 w. `7 A1 [procedure Inc (aInt: integer);
! }% `- A& [$ X! r4 zprocedure Dec (aInt: integer);
8 x% e" {8 e: Z/ sfunction StrToInt (astr: string): integer;
0 U# c. i: @ O& Vfunction IntToStr (aInt: integer): string;
/ R5 O g" N Q) ?7 aprocedure exit;; E8 @2 o6 T: Q/ ~
% ~# v5 m+ R+ g
//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么
% c$ \& l/ {6 A
% C2 R9 y9 T/ l" g% E* X//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou
, I" C* |' f; B# ~! p% S) }1 u: P0 B
//第二句的意思是当左键单击的时候响应,
1 y8 |- E8 q- v2 X, G4 p! r( B. w& w
procedure OnGetResult (aStr : String);
$ G, n5 l" P+ r& f0 v3 N8 k8 D4 Sprocedure OnLeftClick (aStr : String);9 J O" r; |! G4 K
; d# G2 y8 ^- `. u) R* \ }0 }//以上是脚本的头部,下面是脚本的主体部分, l: v8 O9 H/ P' G& X6 d h" a
. \; h" M @$ D) ~; A* d3 q4 kimplementation. b6 M2 e% O8 U3 l6 Y
1 T, {) M4 |0 A5 x' K//当左键单击时
, v4 a# V! ^1 @
# y9 L6 U+ |* o ^2 Mprocedure OnLeftClick (aStr : String);% i- s& C3 u: L+ ]; j$ D- {
$ }2 N u3 y$ N# v" T0 E; h) v//声明变量的类型
( l, L" F/ {; e# ^1 K! I+ Lvar
) B' E1 G- h- l: w
3 ~' b- |" p7 Q//Str变量为字符串型
: l5 Z5 c$ K2 \: Y Str : String;5 W0 @$ U( E5 }% s l
% o* l- t( S& A. N1 V
//Race变量为整型
# }& @! Z, _1 \4 |& O Race : Integer;" }6 E* `; H" ~/ }, C
begin$ z; l8 W3 [6 b, @
8 I X" X: X0 ?" U- d( V/ w
//获取点击者的种族. v) E7 W, D. m
Str := callfunc ('getsenderrace');
% r( K; t' g1 v+ z2 ?# i2 F, u6 y0 s; F; ~
//将获取的值由字符串型转换成整型, h1 ]" S6 p7 ^& L/ s+ l
Race := StrToInt (Str);
- ^# e2 v- x2 @, }" G
. `3 n& c/ ]' e1 R; T/ z. V//如果种族为1,这里种族为1代表是玩家
3 u/ u: R. [ S8 @. [6 ]. O y if Race = 1 then begin( P: C. l, k( M" ~" i5 B1 _$ {
& A1 A F2 N( U( a. F//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种$ g1 N- n( m( ?; @
Str := 'showwindow .\help\屠夫.txt 1';6 ] \7 a$ M! K L
print (Str);( A0 Q/ ] s1 V& z. Q3 r
/ M; N1 `! G: ?) b' N! G' A5 {//小判断结束
1 }# {1 L" b6 Y1 H( g exit; * b- Y0 R( }# G( {8 X0 _8 |1 i
end;0 I$ M% }. x. ]& N3 I, H' ?4 p
) {" w& a$ k e8 {//一个语句段结束
9 g* k5 ~' C* l; J. Vend;& b8 ^+ K; Z$ C# S2 P
8 }* T9 O2 Z$ s: o, K% ]2 e+ U' K//另一个语句段开始# [( V: {) d: L% t* T2 x. a: Z6 }
1 X' I" R' ^" k* M//当从Help文件里反馈回命令参数时,做出响应" x, N9 `- g5 w1 f$ [3 n
4 G' {, {8 H) K: u5 g2 ]procedure OnGetResult (aStr : String);( H# {' Q2 ]1 D, L
var
( C. B9 B8 Y9 \2 L Str, Name : String;4 ~+ F0 A& v" K
begin
" K2 G8 [* Q3 W& a
8 \6 Y: \5 m5 L% \: ]; \2 B//当反馈参数为close的时候就关闭对话框1 K, t7 Y7 e1 A( K U2 P- a; V: |
if aStr = 'close' then begin
8 `$ c# e, ~; Q& w- Y exit;
/ m4 ^: m, Z6 e: J. N end;
8 h3 p C5 W$ C* G: @" M- g; L
x3 E. E# ]* Q+ L' F6 @' Y) p//当玩家选择niujiao 的命令时/ W1 n" C+ [, L! t. P
( \4 n$ y: M8 Q. E: \ if aStr = 'niujiao' then begin% l0 g; v/ Y% G' P! N9 p9 q C$ h
* f" H) k" h$ X' I6 w//检测背包里是否有牛角' v0 x- l. @6 a( ~ U
Str := callfunc ('getsenderitemexistence 牛角:1');7 ] L" k! _+ e! _' ]
, r9 \ p. {7 d3 G* Z# e
//如果反馈信息为假,也就是没有& ~- u i& n0 |$ k
if Str = 'false' then begin% o# f; h9 E: W# s: J
! t5 ~1 p- B. ]7 w; e2 q2 L) ~//屠夫说话2 `$ F, Y& v* I A
Str := 'say 快弄牛角再说';- z/ H6 L( e6 d3 G% z
print (Str);4 `/ a' I. H& B: j% L
8 T. K5 a; \6 W; s6 z- G$ f* R
//检测结束& T6 n; e/ l3 M
exit;
( \, r5 O0 ^. S$ x; k4 t end;7 Y, n2 p, z: R/ p
2 ]* f% z9 X8 M* i: E8 \
//如果有的话就继续执行下面的7 K4 C8 O3 T, s# q8 J3 b- [7 I
0 O& x( b- h: V: f if Str = 'true' then begin
, l2 M$ Y- D& W6 q1 K s
0 [0 j b/ i" c o+ F7 W//检测背包是否还有空位置
* b0 Y1 T7 [" B0 N% E/ D2 {! w Str := callfunc ('checkenoughspace');0 K/ A0 H7 ^: Q; a0 _9 L/ P7 M
/ N o; F# n4 }% v3 d//如果返回值为假,也就是没有, _- E$ K! ~% E
if Str = 'false' then begin
/ r3 J9 Y$ A3 {; ?- n4 I& Y$ h
//那么就提示物品兰已满7 H" [7 [/ W) T- {
print ('say 物品栏已满');4 S$ k% w- B6 [% x; y! H
% q- a6 ?5 O$ v, F2 Z, o* L. x9 q2 |//检测结束
7 O: Q( I6 C8 u/ o) v% j exit;
?) Y, |. Q! f end;, r* A% Q5 S* B3 H# T0 ^* U3 \
& E* k8 z% [: k- x$ S//如果背包有空位置,那么继续
- W6 s; V- s1 G* e2 G0 ~9 L
2 _" X3 I2 h9 B/ f9 T) ?//没收牛角
4 H! U6 w9 d k; d- `* [5 v0 x! v: i$ O0 O
Str := 'getsenderitem 牛角:1';
G3 b, S& ~! C7 a5 [ print (Str);
) d4 u) {- u+ R/ }0 m( Q# I! |' E0 ~+ c
//给牛俊弓服
0 e6 y- X: [0 l5 x. i8 ^ Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';
) ^4 d- x+ H% N# f print (Str);0 P7 A4 ]' b/ \/ G) ~
Str := 'say 收好了..俺最喜欢的衣服~';+ m+ h% B. X( F5 d `: ?4 n
print (Str);- ?3 H I0 ~# d
exit;
$ j$ D+ u- {' e- k ], [ end;- G7 Y: C' @, g2 n( A& ]
9 b! f. ]0 w* h//判断结束语句4 J3 u( U; W- u- b, J$ c
end;
( s: Z' d! ?, s3 S6 o- G exit;
3 `' ~4 p/ R; [ l- ~" A" |% w) d, T, X; s4 z9 U# ?
end;
, E- ~. p& F% f5 Z+ `. S8 X& v6 w: ]2 m. f$ R2 z' J0 h0 Q
end.; a! _1 {5 W2 L7 {8 `
: S1 d( e9 v; X) m% \2 Qend; 3 i2 S/ R$ {9 z p6 ?' K$ h& t
|