任务策划:( z: N. ` w2 T" u3 A) N
出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧! @5 k/ `4 W( |
来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)
5 C2 c7 i. F' e! }; w收集这些材料交给屠夫,他会奖励你东西
* \" M3 q5 h3 g9 @/ o! P" w8 W这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。
" G% H; \ J9 j9 G+ r& O. T. r8 O8 n0 A O5 T
目的:
1 p3 C0 [" P5 {; v3 v7 l, c4 ^体会最基本的活动都是怎么设计的
( |! b0 L' b# H1 I8 K# I! `- S; u
知识点:
/ R2 y' |: O! t5 y) \7 \+ }1、检测包裹里的物品
8 O9 ^. W! s3 Q# B. ?* q. u% |2、检测包裹空间
. t1 l; p; G! v. f3、给与物品
6 |$ s( Z `! q0 V4、没收物品 //这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。( q4 _( N% R) X/ K3 J' F% D+ w
& g% A$ r- W6 W3 \; R `" Punit 屠夫;
' t6 Z5 b! ~7 M4 I% o5 D
7 \, W* b# Q8 l8 f' ~; Q//下面的是通用的调用程序内建的函数。每个脚本都有的。
7 ?) R2 \" h' {5 t
, T" {7 j: p$ g# Yinte**ce3 }8 c: O. C1 J
8 P$ v/ G/ _9 t% T+ \function GetToken (aStr, aToken, aSep : String) : String;
* x/ P8 n$ C8 a2 o: gfunction CompareStr (aStr1, aStr2 : String) : Boolean;
& G+ J0 G- J( |0 Y: Pfunction callfunc (aText: string): string;* S$ \6 _( w$ k. d9 q( Z y; [# r
procedure print (aText: string); q+ v. E0 [3 Y* ~6 J4 A' K" V5 Q
function Random (aScope: integer): integer;
6 {' N( \& a5 S0 F$ a: E# Nfunction Length (aText: string): integer;( F% z, _, z R) V z; i
procedure Inc (aInt: integer);: ^8 U- x# H3 c9 V& ]# I6 d8 a
procedure Dec (aInt: integer);
4 l H8 s3 e2 G$ e. mfunction StrToInt (astr: string): integer;3 }- d- U y" J0 E
function IntToStr (aInt: integer): string;
4 D. O: H; ], w5 H* Nprocedure exit;+ k, K9 b7 p+ j9 h) m
1 U- v- ?! n3 F! m
//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么
' t' w( B: T/ j1 E+ S7 Z
z' u8 M& ] `& {//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou
. i5 I: e& L/ ]/ `0 I8 ~6 A+ C" g
/ D/ R! U' z' }& Q |//第二句的意思是当左键单击的时候响应,
; U# |% A) x2 d& I' F0 d0 J! t* c
8 o0 Z& k5 x( d' ^- t& O2 _procedure OnGetResult (aStr : String);
: v$ _- U; D$ R! E Y) z7 K8 S5 P/ ?5 Pprocedure OnLeftClick (aStr : String);
3 |, t; n9 A- P. R" @5 g& E0 H/ T. h6 J2 E$ R( O# @4 b
//以上是脚本的头部,下面是脚本的主体部分
$ S" e. T F7 x& Y4 B( r$ m- B" k, T3 A2 N) |
implementation: v' X& H! e1 D
+ }) }' _/ g$ S8 O//当左键单击时1 w u, X1 {& w- v: J, F
" \7 M, a3 U8 J: O
procedure OnLeftClick (aStr : String);9 u& h2 H$ E' x3 P% x) w
1 f- L2 N+ s: c" A% u: V
//声明变量的类型1 p/ D7 @8 Z2 V# ?% `1 T" \
var7 X7 i0 \' Z6 c/ z
7 x. g7 ~# r5 G2 |$ Y
//Str变量为字符串型
# C; v; ~/ X. }$ @ Str : String;& q2 R" R" z/ g4 [1 Q
; `: K' K; W& T) h7 ~8 y8 C
//Race变量为整型
6 J/ `) g6 x' ?- X Race : Integer;4 O# I7 K0 k! e0 e g9 h
begin
- |+ I' Z# w/ ^# u! [2 T F, A8 F7 P. W
//获取点击者的种族
# A( J# R" F' k' ?0 \ Str := callfunc ('getsenderrace');" _/ n' v9 T4 z- v \
, v0 X+ q2 j: y H
//将获取的值由字符串型转换成整型
2 K: c; p6 B, Y6 [ X. `" G Race := StrToInt (Str);
% I* l9 `1 T# a/ T' ?: G- H W3 v/ o9 L
//如果种族为1,这里种族为1代表是玩家
" x7 F1 Y8 u9 ^+ C. a if Race = 1 then begin" c4 v6 T+ C4 p( C I, @" _
8 W. t; T8 V! n//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种
4 s2 b* X/ P/ `; D5 J0 F Str := 'showwindow .\help\屠夫.txt 1';; M5 s5 A V( x' }& z) v6 ?2 ^$ B2 M' X
print (Str);
5 n+ R) Y5 e& {% k
4 a8 ?8 O& m( o8 U' e( t! i//小判断结束
; E9 A/ Y6 R8 k9 N1 S& C g exit; # o0 S) K, y3 i
end;
9 Z/ P/ w8 l. G, a* L
# Y. {; ]4 c# |//一个语句段结束
- n/ L# a4 ^6 y R+ Bend;
4 F R; J/ K8 `! ^% y; U4 G3 s5 t& `- A. x
//另一个语句段开始, ^ v, m( a) y" Z+ S* h( q
' M- g3 s, D/ K% [3 L+ m6 k//当从Help文件里反馈回命令参数时,做出响应
2 b# N2 \6 R+ r, @) }1 |- Z2 ~. [* r& g' M8 |4 d& P
procedure OnGetResult (aStr : String);
; j0 V" O. `, R9 n Wvar7 r4 u+ v" d; J8 w! b
Str, Name : String;
1 ?% I# | n, t1 z, ]- |) v7 sbegin
' o w( ?1 ^% e+ S9 C/ W$ A! j) H4 }7 C' U' i% m- }1 f9 Y) Q
//当反馈参数为close的时候就关闭对话框
. G+ {' c7 A# s! y if aStr = 'close' then begin
7 V, e* ^ w W- l3 l7 B: I exit;
6 Y$ y; d4 i' W; n7 H9 y! r end;
, l# y# Z0 r, P8 \$ Q1 z. j/ q" Q$ T5 E' q' U, f1 l' N
//当玩家选择niujiao 的命令时5 o( P/ o: q$ \/ U, ^
) d% i' a) [& Z if aStr = 'niujiao' then begin
9 l/ G! ?0 M0 b6 j$ R, G4 d; ~5 Z* a+ r% f% ~0 a) v" c
//检测背包里是否有牛角. K7 ?4 R& _# i# m4 G& U
Str := callfunc ('getsenderitemexistence 牛角:1');
7 r3 Y4 J" H2 ^+ ^- x' \
" u* w+ U( W- N//如果反馈信息为假,也就是没有
; m/ L, X5 X6 w5 m if Str = 'false' then begin
s# e g( i1 ^# h3 `1 y: Q. J( `* D/ _/ j' \' ]; j
//屠夫说话
# M" k# p6 Q5 p4 {- g4 N0 N" _ Str := 'say 快弄牛角再说';9 U% I$ v3 h; W; ]# ~& K& Q
print (Str);
4 A o7 X5 h3 @) ^( m" Q( `% J% n" m1 {- A! @' S& c- _
//检测结束8 R$ U1 |( D+ \% ]
exit;
2 b+ f- S3 Q: i: \0 P* v+ o. C end;6 |8 f x# M! x0 k
6 b+ x1 }$ `$ p//如果有的话就继续执行下面的8 L0 o" V0 _- X) B* p# ?% v+ ~
0 s5 g! v' y6 J6 K- _6 P if Str = 'true' then begin2 s) E0 J* d" n
0 P4 V/ `/ n' z, i' w$ M
//检测背包是否还有空位置! A7 {3 |- L) R3 U7 @! u" j
Str := callfunc ('checkenoughspace');
/ \+ o9 x3 a8 d) ?7 z4 J7 V' X3 W+ B; H$ t
//如果返回值为假,也就是没有
. H* M8 [, k' W/ o" R. h if Str = 'false' then begin
% j0 o1 Y" ?- R( m- w2 v! z" u% o( d$ y h3 @# T, Y+ X
//那么就提示物品兰已满: X7 `1 g7 F2 |2 l" Z. y% I
print ('say 物品栏已满');
O1 y/ U" Q/ F8 L9 |
# A- c/ @0 y' b8 `//检测结束
7 c6 D6 L J) v) `* s exit;: g1 U' b* B3 l& Q
end;( A3 r5 @* \) L3 }, X
: ^; z, y( k5 U1 X
//如果背包有空位置,那么继续1 U7 K* B* h+ F8 M' C
1 H |" J' [3 g" p% D//没收牛角" V8 h) b1 P2 b$ Z* n7 j
- S0 T" ]+ G$ o8 i Str := 'getsenderitem 牛角:1';; Y$ h o1 {# N9 O
print (Str);" N6 b% a- E) y9 ]* W
3 T7 O4 B3 D( q* V4 K" N+ u//给牛俊弓服( d9 g( x2 b$ F6 x
Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';
) @- A8 F% P; A& [ print (Str);$ R3 n4 q$ i' P: B7 W/ }& S5 v
Str := 'say 收好了..俺最喜欢的衣服~';3 _6 Z2 q$ q8 X4 s
print (Str);6 t9 P( ]; b* O9 j0 u( g
exit;; D! u5 e g/ c2 l$ W
end;: c) {+ |. |8 s7 Q0 e1 u7 i& T
; v" o! z" X( c
//判断结束语句
+ g1 _2 Q5 f! ~8 y end;
4 {: R9 n- {3 ]2 Z* B exit;
0 p0 r9 J7 I4 F7 ^0 y
, Y) C) z3 I2 _0 Bend;2 h J8 ~/ d: f1 Q; F
+ z# L3 N4 C0 C. W) R2 _0 @7 H
end.
: ^0 I' s0 [* w) c9 c4 i+ _ T8 E+ _1 c7 k7 A
end; 1 D; L: b! C+ }1 c9 o5 B+ W
|