三千论坛
标题: 第一个作业——小试牛刀《意气风发来打牛》 [打印本页]
作者: 快要发癫啦 时间: 2023-1-9 09:35
标题: 第一个作业——小试牛刀《意气风发来打牛》
任务策划:
, h7 m: Y. l( Q, a' Q; h6 g: M! n出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!6 F2 e: M' f8 l* o* R1 B2 N
来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)
8 a4 X- Q2 F) I: T收集这些材料交给屠夫,他会奖励你东西
; ^/ l! z* m/ k这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。+ d( L& R0 R2 `
+ Y5 D9 o, l: H1 _
目的:
/ F7 h0 G* i: ?4 `; @0 T2 j1 z体会最基本的活动都是怎么设计的
! ^8 j( G# T5 {0 b$ v, b2 x# H9 h
- M, }. ]3 ]+ D# C2 c( T/ J* H知识点:
+ N- e0 G8 d6 Z" }" F2 t8 ~, k, l- z+ w1、检测包裹里的物品- l, `7 ?- q a/ ^& r
2、检测包裹空间8 g' k( X1 n5 ~. e* u. v l
3、给与物品- ]9 _' X6 K6 M; n
4、没收物品
//这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。0 u2 A& \! R6 I. x$ \2 W
5 N' W J+ e1 c
unit 屠夫;6 }3 Q) n( _) ?$ ]% N) x* Y
: f( Y+ ^9 t! A! {, B" {2 I
//下面的是通用的调用程序内建的函数。每个脚本都有的。
5 ? z/ ]4 J1 a/ V! u
! K0 s$ X7 p( B0 W! T. V. r' P3 ninte**ce5 \1 v: H: b: G) E
$ X6 ~! G$ C8 B6 a$ ]) ]
function GetToken (aStr, aToken, aSep : String) : String;' k& O% S! |+ _! w" P% W0 t
function CompareStr (aStr1, aStr2 : String) : Boolean;
- S# D, @; k. u: G q7 E ]function callfunc (aText: string): string;
+ A0 Q9 ^# v! _procedure print (aText: string);" N) H' m# ?2 C/ l! `3 _
function Random (aScope: integer): integer;4 Z9 \, h: `( R' g( r
function Length (aText: string): integer;
, S( k" E" o- O- w3 }! i1 Jprocedure Inc (aInt: integer);
3 [! [5 _$ z0 f5 @procedure Dec (aInt: integer);
# K% p: x+ h" g0 efunction StrToInt (astr: string): integer;
) S6 n* [2 y$ [6 N- [- q; z+ q* Nfunction IntToStr (aInt: integer): string;
* @9 o. a8 v5 R* Y A3 Lprocedure exit;
2 T k9 ^' S: o( Y2 h; b3 k! _! k/ t& S
//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么% u+ i, s! \( ~- K! Y
" |/ c! O- f+ j' k//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou8 }0 |; v# }0 f" S8 E
7 q1 X( v% a5 s! R' |$ P//第二句的意思是当左键单击的时候响应,
3 c/ r; H k) |- Q: D; D3 d. L+ U1 A( Z8 n" x: V$ V0 f, n
procedure OnGetResult (aStr : String);
5 a) L: H6 r; Q% P9 E5 ^procedure OnLeftClick (aStr : String);3 [' w& }, j" f6 A6 U
# s+ Q- h! ~: C( b9 c4 p {) Q//以上是脚本的头部,下面是脚本的主体部分0 |$ A* P, A V; J. f% K) E" e
* r! w! u3 e. A$ Y4 limplementation- Y$ m( D7 x! g2 B9 V
' S/ _1 c& a) `! k' _
//当左键单击时
! G5 A( ]$ [- t4 w) R$ ]% q, v* v
7 q9 m' j2 `9 w/ o" W& aprocedure OnLeftClick (aStr : String);
- {$ w/ p* b/ s0 c& \: o0 G: m+ Q/ o
) O; W1 d' o0 e ^//声明变量的类型( o1 W( G+ i/ l- U- ]" K Q- |
var
+ W8 G6 W }" G4 \# L1 N* V3 f; k
//Str变量为字符串型
$ L4 M; r* J8 s! C7 \; }3 | Str : String;
' q) K: a/ b, A5 o9 n
' e P' Q/ R+ [% ~; U- M5 E//Race变量为整型" o ]7 v1 ]. ]" E+ S: R( c
Race : Integer;
7 X# H2 ~/ k! i3 M* j5 w: F5 B) C# {begin
/ l- q) N3 V; }, Z" t, x$ a& M7 ~2 v, E8 z
//获取点击者的种族
4 l2 X! ?! q A4 `' i Str := callfunc ('getsenderrace');% O4 b* O1 h0 f" a* l
6 g' Q. e# q* }6 o, a/ H, Y
//将获取的值由字符串型转换成整型8 t& G: E4 Z' g& i7 @5 ~2 r
Race := StrToInt (Str);
- ]8 g" t J; @9 j
7 o! l% X$ ?3 d0 k1 @//如果种族为1,这里种族为1代表是玩家1 {' h$ g. g) i0 e8 K0 X
if Race = 1 then begin
5 x1 {3 j5 X( {8 A
8 _! C% L$ c w; {* G5 e: Z: U5 G5 `6 w//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种
$ m8 X! B4 K9 [) O3 l, A$ m0 J Q, d Str := 'showwindow .\help\屠夫.txt 1';6 X A m0 g0 b; ]' {
print (Str); l7 o9 b" _6 V9 y; r4 O5 B0 y
6 s" V; w' O' U1 V; f f//小判断结束
- B+ l: @' H5 h; e' D# ?& H exit;
( C! w! J# w5 Y( p end;( w% z7 h0 r9 v
8 Z- ^* F7 H8 g8 e+ |0 s//一个语句段结束
/ o: D' e W7 V: P( y+ D5 Rend;
( z& `' Y: G- a) E" u* c/ `+ B& m: l* E/ i
//另一个语句段开始
) s5 q/ j [6 H: y2 m/ d7 |. H
- x, V% W1 n- }2 U/ m* J/ H0 X ^6 B//当从Help文件里反馈回命令参数时,做出响应& O1 ]! A/ |& u. d0 L% a: N) t
# g8 p$ S4 X/ dprocedure OnGetResult (aStr : String);
7 E: \6 b0 @0 S4 k6 |4 Jvar
$ y/ ~- n' U1 N# z Str, Name : String;# N3 b. R6 t0 k5 r+ x! K5 u T
begin/ r2 M+ B' s* D2 ~/ ?; n
. O2 w% V& s7 [: A% r
//当反馈参数为close的时候就关闭对话框
( H% p% M/ c: W2 C" B+ j8 S7 D4 X if aStr = 'close' then begin2 \; X/ p1 L# @6 `1 C* x8 V4 I
exit;, W% X& [8 m' @& B- r1 c- M1 U
end;! r! H- G* l+ R9 @$ o$ \4 g _
% u" k+ y8 b- ~4 F7 |# k
//当玩家选择niujiao 的命令时
9 F8 N2 s) b8 m, y8 b7 z) T7 v( Y: D2 G/ _
if aStr = 'niujiao' then begin
; H: k" t' v& D" f) a' c1 v q4 Q% H. j9 ~. L& x7 `9 h B
//检测背包里是否有牛角
' k1 c7 T2 C& s& J8 Y& j Str := callfunc ('getsenderitemexistence 牛角:1');$ _6 F0 h: X, }" u% t. ]
! c" X# o; T/ o1 C! N Q" x+ @4 J& X//如果反馈信息为假,也就是没有9 q" r3 {0 x) f0 d" U: s" ?: G
if Str = 'false' then begin# P8 m% ~2 g! k; N+ w
' A+ a% [/ G( u; \7 Y//屠夫说话7 d% c, V3 N) _' e- h! I
Str := 'say 快弄牛角再说';
0 g: o# z" P5 o; r# A print (Str);4 \! M, z6 R$ I, S6 e
5 a% u4 |) w, H" v+ |$ f4 \
//检测结束
9 g. Y: i; v: s exit;
) t. P3 h' |( I end; q/ ^8 I' h6 E# ^0 _' X
& ^5 g; q" U# d) [, r//如果有的话就继续执行下面的
; n2 o2 _) F; d3 P8 h" K
: t! R f2 K1 Y if Str = 'true' then begin; J& b1 E. o9 ~7 X- w: V
, C3 e# g6 y, T" n
//检测背包是否还有空位置/ Z r$ y* m& z3 L8 ~3 I8 h
Str := callfunc ('checkenoughspace');
" S: r7 O! B8 T2 _; u* d( Y# K4 n" i' N' s
//如果返回值为假,也就是没有% Y; g' v/ M2 [
if Str = 'false' then begin
7 z, o/ T( j3 x/ s; u5 U% Z# m* p. R0 {; V8 {5 U" I+ n. j5 t+ c
//那么就提示物品兰已满" L- f- E9 z9 i' w+ r4 K& d
print ('say 物品栏已满');
1 R! J- A% y' z/ Y- c' B, D2 ]5 J& k
//检测结束( A, e* V' y A' V& V! b
exit;
' L1 r6 y- ~: P# X$ l& k end;
0 i* M7 g; H; }$ j% c: @, z, ]- J5 U$ t9 N5 W; }
//如果背包有空位置,那么继续. a' L3 h5 L9 T ]5 `- f
1 h6 X/ F6 U! N; _9 e
//没收牛角
/ ^( ?5 _: ^7 e) c8 L& M
4 B( R4 j; A. ]; [9 [: q" a5 U Str := 'getsenderitem 牛角:1';) n" G! E; g! I/ i
print (Str);
4 R& l5 {: i* `. _% h( O; E3 ?5 C6 U2 ^" O- f7 ]
//给牛俊弓服# @7 }/ B3 o" S t; B
Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';0 a. @5 b- n( K9 S+ n) X4 T
print (Str);
) }; d& a3 g/ V! m V Str := 'say 收好了..俺最喜欢的衣服~';
# d9 r: i8 D5 g) p, F( ^ @; J. f print (Str);
; s i3 N) R$ R) o* V exit;& R9 j# L& b/ g q: m
end;/ J; ~5 y& O6 e" W3 D# T
8 f% e( U8 }; o! J9 N7 r' J5 q
//判断结束语句
D m% z6 K# t2 M) \+ X end;1 r$ |& n7 F& j8 y
exit;8 R' j2 p! z0 \
; j3 Z( X6 n, p; k( Z
end;- v. p* y& \' b5 N; v2 Q
/ M% N$ n& z2 L) X2 b& n6 B" }
end.
9 h2 b% v! d! ?# P+ D. O; p& f5 D- e w3 A" U
end;
6 x- c( u1 V! f5 d8 D9 {; l
欢迎光临 三千论坛 (http://www.3000y.com.cn/) |
Powered by Discuz! X3.4 |