三千论坛
标题: 第一个作业——小试牛刀《意气风发来打牛》 [打印本页]
作者: 快要发癫啦 时间: 2023-1-9 09:35
标题: 第一个作业——小试牛刀《意气风发来打牛》
任务策划:
! C! c% t( H! O4 N% t( [1 w出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!
8 z) r4 f) Z$ ?8 g3 k$ {3 H7 M来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)7 h8 S/ O: Q- a; u
收集这些材料交给屠夫,他会奖励你东西
4 @& Y( ~5 m* W( @3 T这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。5 x" ]! k8 y( t9 W' i
4 x* e7 t r7 h/ n目的:
) ?" k. U/ r, H/ ]. k, |体会最基本的活动都是怎么设计的+ T' M$ @+ t1 n) U
) [3 e/ ^$ P7 b6 }/ U* j8 m1 g6 `
知识点:- t& B. w) {/ T- K# \# e; z
1、检测包裹里的物品" U0 F6 A8 w8 v
2、检测包裹空间
3 a: e) K4 i/ K& c3、给与物品
4 k3 y. |6 N ^: l4 g4、没收物品
//这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。2 d1 ^+ B) j4 @* K q2 [! O; U
) z6 A( G6 O' t: V: s. V2 t' s4 Y
unit 屠夫;
/ c7 L; O; m! y( i2 R1 x) ]1 g0 m C
//下面的是通用的调用程序内建的函数。每个脚本都有的。$ Z( }, m" u; D8 k5 M& R
" ]% ~9 M# e! m2 z- M4 l3 W
inte**ce
+ q- i. C0 Y& [! N2 K" L( `! l
2 F" u1 l2 m3 w: U( K/ z, K- ?+ @7 Bfunction GetToken (aStr, aToken, aSep : String) : String;% F" Z* q# Y4 H1 t! i: d j
function CompareStr (aStr1, aStr2 : String) : Boolean; Z" L' V; T" J; m$ W+ P+ f
function callfunc (aText: string): string;
8 f4 O, F6 a7 L0 c) T4 @- Eprocedure print (aText: string);2 n5 P* u. Z/ H ~; r7 l- M# B
function Random (aScope: integer): integer;
2 K. P P* Y4 ?3 Sfunction Length (aText: string): integer;
! Z$ v9 r7 X; Q; ]4 _# x0 o4 X% Oprocedure Inc (aInt: integer);; u6 ~' K' v% E; ^# K0 K5 O* k
procedure Dec (aInt: integer);) h2 W& _1 s1 ~8 a) F
function StrToInt (astr: string): integer;$ d* k' m2 U. t4 H! c' E+ {
function IntToStr (aInt: integer): string;
: m4 N( l3 B; e8 m, eprocedure exit;. G, |3 N9 i: @- {& S
1 f8 ~* N. t. l* Y& y//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么
- f: T5 E. u% i) q4 \7 y. P! o9 A( ^ w2 ^% W; [5 b
//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou
! j% ^; b' J1 W% M5 X; |9 \0 m; o% R+ I/ A! ]
//第二句的意思是当左键单击的时候响应,% E( j% z, p6 o* N4 ^5 P
. m8 t1 G) v# T: _) s3 Zprocedure OnGetResult (aStr : String);
% R/ _5 x9 P' m' E6 nprocedure OnLeftClick (aStr : String);/ l) z) P |* s
% F+ l- ?: C s4 [1 y8 D* N- g; T//以上是脚本的头部,下面是脚本的主体部分9 Y# C/ G+ S3 ^
% N( Z6 S+ m+ _& c0 timplementation
$ z' U7 L8 c q: }; L8 ^7 J+ D) M3 S1 [* z- r4 k
//当左键单击时
5 d1 @) r3 c9 x! `: c1 j# e: J8 _1 e) a7 D5 J
procedure OnLeftClick (aStr : String);
% r& V' u' }- Z. R
( s9 j. U4 U8 @//声明变量的类型
; Q+ K# K0 z) D* [9 z/ Evar& N. `5 v8 a: T9 Y8 O; ~
; q6 r1 b- s: k, Q: D3 g//Str变量为字符串型
+ ^ m* w/ X! ?7 N, A! c Str : String;4 T8 y% e3 V+ i
- I- P, l, y" O7 \- G$ J//Race变量为整型: ?7 k A7 u; `: J3 I8 V2 v
Race : Integer;/ D6 M3 S; ]( E- {
begin
. F* {" B, t. d
$ k( U* v- ]" d& y- H//获取点击者的种族
) P- b2 i5 l8 k* J$ c1 f Str := callfunc ('getsenderrace');
4 B( C- Z F3 m7 h1 Q- |" V8 X7 x4 T0 W3 B
//将获取的值由字符串型转换成整型
$ {, G% d3 y- k% n1 K0 B Race := StrToInt (Str);
1 b7 i* }. X% @4 l' N! W9 e% I5 h0 p! Y, h' f' [% Q
//如果种族为1,这里种族为1代表是玩家
3 Y/ E& L5 r! S8 F$ d6 S. B if Race = 1 then begin
( @8 Y( u7 R0 G7 [$ f4 T' d4 [& M* V G% } b* }2 e
//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种8 v3 J0 ?0 j& O' E! d0 m
Str := 'showwindow .\help\屠夫.txt 1';
9 C3 x0 D! B4 U5 Y" w' t print (Str);
2 o2 b1 k/ K3 o6 c+ m" M
' L0 R7 e. l! H+ q; Q//小判断结束
" y( V) V5 N8 _& ]" y exit;
8 G" @' C$ f# r h& n* y/ Q1 Q end;( q4 b* Y& P$ E# z: w, H- ~
8 ^; G5 X& v& O4 c' _) u
//一个语句段结束9 m/ ~ o% L: v6 h) Q; N- D
end;& F: N* Y0 p8 U; A7 @
' ?. d( ?( f' N
//另一个语句段开始; |- T6 j! Q1 ?$ l1 S" l( h
' J3 _$ M5 c7 O6 ]//当从Help文件里反馈回命令参数时,做出响应6 m, R7 \/ |2 F1 S
M: A+ B+ t4 U1 o8 }
procedure OnGetResult (aStr : String);
* k G4 q5 G8 z7 F1 V" X3 t$ G! \var B: C5 y" t2 ?$ W
Str, Name : String;) T$ h$ k) ?! a
begin
" X: v) p) U6 A# }1 l) |* C K/ J$ ^' D# ]
//当反馈参数为close的时候就关闭对话框. V. q" y9 T1 [
if aStr = 'close' then begin# q/ q; I* q Z) S7 V
exit;
[6 Z1 [, `1 E# Y end;
, @1 p4 K8 D6 H: x5 @: {' Q$ z6 e6 p( c5 q$ w _) l0 f, v$ v
//当玩家选择niujiao 的命令时& |, X$ H2 ~ t) R
9 j5 N7 B6 V! E5 M: D E4 u8 K3 l
if aStr = 'niujiao' then begin
7 @' Q" U1 {: h1 ]( P; k6 d& n0 Y9 K) J% W' R2 P9 ^. U
//检测背包里是否有牛角/ W9 c: K* n; z! ?6 [
Str := callfunc ('getsenderitemexistence 牛角:1');3 y9 T! q/ r" }2 e3 A) G
/ E5 f& ~ T" J9 T3 \$ s//如果反馈信息为假,也就是没有
2 a$ ], P! q# {' ^. a. ]" v" [ if Str = 'false' then begin% Y M* v0 z* ?" n* X3 G
6 u0 u0 Y2 `1 O7 L# v3 n. b//屠夫说话
) ?/ y5 t+ V1 x: Y' | Str := 'say 快弄牛角再说';
5 c3 ?* Z9 K& ~( ] r% @ print (Str);/ d+ x) W9 n! j" _. G) ?/ g6 f4 T/ q
# l a, G5 p" x( w6 l& L//检测结束- `7 w7 w% o( l8 U) E: a
exit;. I3 k& n# L+ i: t _, e
end;
! ^* @ S" I' ~8 G) s b' X# c* [( L
//如果有的话就继续执行下面的
9 \# o& z" P6 i( S4 C) ^
+ i1 l } y6 J! M' p% A" T r& f if Str = 'true' then begin1 ~$ m/ ~$ g/ p/ Z' }, q5 K
- D# [ i6 O# h, o7 }; N5 s- ~2 R
//检测背包是否还有空位置
" y8 p* w/ _" f! L& p* {; t Str := callfunc ('checkenoughspace');0 l6 c: l# V* v$ w% e( \* N
2 g; |# n' r: Z7 b; h/ H1 Q4 o//如果返回值为假,也就是没有8 I5 J, X; Y2 @& W* m6 N' H7 B
if Str = 'false' then begin# g9 p# g* r; ~& t' {
/ |( ~, j0 k, q) Y9 _# }0 W$ J# F$ h
//那么就提示物品兰已满 C) j2 b6 ]4 @) s5 Q
print ('say 物品栏已满');
+ N% m* i, D! w1 @
1 P( y+ e3 i+ F/ h: O! e ^//检测结束8 T8 q3 `: \3 W% g2 f9 d
exit;
$ c- y( q! r. z end;. O& O8 f4 r4 y( l+ w0 i8 A; i# y ]
0 H0 q: ~# ]8 } t
//如果背包有空位置,那么继续
6 Z( |4 K1 A; A) r$ R9 ?+ `+ T8 R, @ X
//没收牛角
* c4 `6 L! P/ H3 ^, G, _
& j- U+ q! b0 P3 G+ u8 [) o Str := 'getsenderitem 牛角:1';
2 h! L9 H( Z$ e" I$ J( q print (Str);2 ` B6 W" l4 r
$ m" }: z0 Z1 ^//给牛俊弓服
1 S% W' `* M$ n Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';
3 a/ G( Q* N5 S print (Str);, [# h+ z( i) `3 E- z2 S* y
Str := 'say 收好了..俺最喜欢的衣服~';
" v+ k7 \% X6 ] print (Str);
" k, P5 t+ V1 T7 M! d( ~! ~ exit;' g2 s* g. }+ Y# s
end;/ w9 U0 g" B% G7 R9 U: }
1 }1 V) H- t F9 m0 f4 c, U
//判断结束语句
/ P! p. r; `/ M" F% T end;: z, A$ ?; \3 r
exit;
/ Y+ P, T- @( c& S" B- h2 p2 m2 Y
end;
" s% ]5 \; G( X( a7 b p% Y* T4 z' [
end.
& p* n8 ^3 H+ J; ?; B/ T
! [: d1 ^" a7 W: oend;
2 D1 ?/ M+ \# P6 A/ w4 O7 n' h
欢迎光临 三千论坛 (http://bbs.3000y.com.cn/) |
Powered by Discuz! X3.4 |