三千论坛
标题: 第一个作业——小试牛刀《意气风发来打牛》 [打印本页]
作者: 快要发癫啦 时间: 2023-1-9 09:35
标题: 第一个作业——小试牛刀《意气风发来打牛》
任务策划:5 a3 J3 Z' p! T. P3 ]+ Y
出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!
7 ?! }) Z6 `/ y( `来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)
1 s3 z% Y5 s. m4 A收集这些材料交给屠夫,他会奖励你东西
' { n, ?2 h; L+ \4 [) a4 r' Y' \这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。6 q0 [& y$ `) [: W9 e
. Y. \! ]; w/ C. E5 |目的:
' T V* g, e! p* @* @* R体会最基本的活动都是怎么设计的, d3 |0 A5 f( w+ n) N
: a6 ? W# K8 M" N( @
知识点:
' _9 } H9 k, D d# b1、检测包裹里的物品
. ?1 u# W x9 w! w2、检测包裹空间
# M( m! Z2 T5 R# [3、给与物品
/ v( G$ a1 X$ e7 M& b; B4、没收物品
//这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。
8 B" y+ i% n+ J. p p5 b% |. ^ P) O3 ~9 Y. b/ g& ^: o
unit 屠夫;
* t& e- X) a+ r" G1 O) u) A+ ?: s9 Q
//下面的是通用的调用程序内建的函数。每个脚本都有的。9 y3 {; Z! @7 d6 Y/ v2 d' I
+ Y/ n9 j7 T- x: n6 }1 y: rinte**ce
; b. ?& t, K7 X0 H* y4 h+ f! m; e6 C0 \
function GetToken (aStr, aToken, aSep : String) : String;. Z; E# c0 t5 N% W5 X! `6 V
function CompareStr (aStr1, aStr2 : String) : Boolean;
* J3 I$ P q3 t$ S7 E2 ~, l* p( Dfunction callfunc (aText: string): string;
. T( X$ Y* R7 J( v- d; bprocedure print (aText: string);
# I+ W# f% P) C0 H2 E4 x3 @function Random (aScope: integer): integer;6 O5 S4 w; k& G F+ F# Q/ o4 e
function Length (aText: string): integer;
! ^2 l3 J2 T4 qprocedure Inc (aInt: integer);6 N! v, ~ r4 e$ `& a
procedure Dec (aInt: integer);
( o, O7 P- h8 Y- n8 b) w, D$ M, X0 {9 Mfunction StrToInt (astr: string): integer;# T! B% X. n1 x* K+ f8 i: \% r
function IntToStr (aInt: integer): string;7 i6 a) z9 n+ y1 S
procedure exit;
B6 r) O7 Q. A! H2 r5 E0 ~# R& P4 H' V( P9 [8 }5 G6 i* N: l
//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么; x% P, a; ]& w
5 K* d# Q( K8 P0 H/ H1 R) ]4 K7 \) S
//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou. A/ l/ u8 _5 h2 t
5 x H: Q0 }& c3 @
//第二句的意思是当左键单击的时候响应, O, f: W" I3 E- s: @3 ^8 a' p) ^
3 j; k8 [1 C3 T' p2 c( u3 L
procedure OnGetResult (aStr : String);
# S% U' K+ m7 q/ z, Jprocedure OnLeftClick (aStr : String);
! t; s8 I0 e3 F! F- x' A c
0 l7 E5 `2 i% W3 r+ f# D! _- ?( [//以上是脚本的头部,下面是脚本的主体部分$ ?/ Q9 l' w: T* z
1 Q! c- G2 ?3 E
implementation# Z4 f- [2 s" a; M0 z, R |; ~) l. P
0 r9 ?" W7 j) L0 V+ @! H* f- U1 r//当左键单击时2 b- G# ~ J0 ], D: r) G
7 I% P F* X7 X4 A; Wprocedure OnLeftClick (aStr : String);' S8 E: y, Z! k% k. E: V
- P3 ]9 ]7 r- t+ c7 L8 V j//声明变量的类型: q& f# f2 Y2 e- ^; X' T
var5 I9 h* X% M6 v* O) `2 U* ^
7 a. ~. k: \2 l& t3 Z& n
//Str变量为字符串型0 j$ h: R3 H' x: e" r5 k
Str : String;# ?' Q ~$ y; ?
7 w. k( T5 Q( I1 I5 e5 V! n. F
//Race变量为整型
p: [7 i" G# ?9 G$ E+ \ Race : Integer;
# A+ t0 V& Q% F: A/ Gbegin
. Q2 u7 V. v# ^8 y. @8 K
6 m+ [( o$ }; @ A7 N//获取点击者的种族6 B- x% B4 b" b
Str := callfunc ('getsenderrace');: |, _; b8 r) X! o3 B7 [. ?
7 q8 H0 @8 @- z6 b5 c
//将获取的值由字符串型转换成整型% ?& Z! C9 w5 {
Race := StrToInt (Str);
t& V/ ~7 C! q- l) g, U3 }! K+ G. \& }
//如果种族为1,这里种族为1代表是玩家
% y! t' X4 i ]+ D5 @. X( Z if Race = 1 then begin. {) i- z% S6 h7 Q; |/ U
7 v% A) C: n1 Z8 \, Z V
//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种
$ q& x; u" N& @& O$ {0 \9 K Str := 'showwindow .\help\屠夫.txt 1';, [& H) w0 j; s. U) h& [
print (Str);
, L0 I5 I5 d$ [- z) j% h7 ^1 A5 j( X9 G4 Y+ c7 }9 O
//小判断结束
1 g b- y+ S* C; G v# l" L# F exit;
. o6 {5 v8 ?& @ d end;+ H) V$ X! J2 }
. r0 k# g2 u4 ~9 N; V% |//一个语句段结束0 b, n& U- z( r6 t; _( f& m
end;
* W/ V/ Z& R$ c8 F. V7 N5 Z4 \5 _2 Z% R( m1 E4 J2 i6 F* t
//另一个语句段开始2 F) D" P z5 b5 ~& L& q% Q# z
: u( x+ y9 W# s. K: Z
//当从Help文件里反馈回命令参数时,做出响应6 Q6 W) g0 I" j/ \6 f2 G" [: V7 |
1 i( h5 ?+ ~* E$ I
procedure OnGetResult (aStr : String);
- _4 |% | h9 R- }var* }* {6 ]5 y0 T) m C* K) o( A
Str, Name : String;$ N$ D$ Z, i/ ?
begin
; R; i7 N; E4 {# J
0 V9 U* g, b# x) S. X+ I( f' g//当反馈参数为close的时候就关闭对话框
5 Y0 ^9 w( H6 }: h) T0 a: _9 f if aStr = 'close' then begin
4 C- z1 N7 K/ g8 p: y7 [ exit;
- D% j. r9 _8 e/ e end;
8 H. A: i$ E, V t# v
5 d- t, }, u: I! I//当玩家选择niujiao 的命令时
' @, f# h- _/ J8 p+ J2 R9 _2 O
2 p7 |1 R, E* y6 Q J7 _ if aStr = 'niujiao' then begin
5 Z" w% @! H4 w* m2 G$ ]# W. k3 C3 G+ r( {( ]) q
//检测背包里是否有牛角& u0 w; Y+ z! i2 ]' e7 l7 i
Str := callfunc ('getsenderitemexistence 牛角:1');
1 \ E; d' h" _* h& l& M# Z$ D: B" w2 t( x
//如果反馈信息为假,也就是没有
5 q! n9 g2 @; e' j- r u if Str = 'false' then begin/ H9 K7 h# s5 i) j7 C3 h1 v/ x* h: l
8 n: S9 t- n0 V//屠夫说话1 R4 u! P" ?! e
Str := 'say 快弄牛角再说';$ W, r! k4 I/ t `* H" D- @
print (Str);
, q9 T( \( `, P! V Q( S! _6 r }8 Z a6 ?" F; g
//检测结束5 ^3 f2 T* A9 u$ @
exit;# W9 \- k, X/ d+ H
end;$ |( k/ l* K5 W5 e1 X) r# l) S1 W# }
5 A7 m8 I- f w- R* i9 q
//如果有的话就继续执行下面的
2 x5 K6 |7 D7 T5 a
9 s1 A! h- p" \ if Str = 'true' then begin
) a( y3 N1 a; G1 f
5 P9 n$ A3 l( I5 X+ E' k5 q- j//检测背包是否还有空位置
5 j% H; B1 G* d: t) {; O Str := callfunc ('checkenoughspace');. G7 _( C7 e+ j' C: z
8 E. H9 w) n. c& T( S% o/ p1 p% r! g//如果返回值为假,也就是没有- n( c: N6 S: t0 I' H+ b: p2 F, ~
if Str = 'false' then begin
3 l: f9 t- Q% [1 w/ F$ t8 ~1 a. R- H+ E4 h* T9 X8 E, ]$ n
//那么就提示物品兰已满
! u, U& F6 ~" g2 l" \% ^ print ('say 物品栏已满');
+ e# a& ]/ ?! I. ^; y$ Z. }* p6 R- e/ Y* O; Q5 I% o% `
//检测结束) e4 e7 ^. l7 `3 t9 Z
exit;
% `& S0 y* o# x( m% K! b end;5 q2 \0 K$ @) l+ `0 }
) \4 r) n0 q5 L0 G+ g+ V//如果背包有空位置,那么继续
5 f* O" f' y% y# b# [6 f! ~: o4 L* `0 n, ~" [# T
//没收牛角
& k3 X' n+ U9 t/ Z1 C R" Z9 z5 W
Str := 'getsenderitem 牛角:1';4 {$ y* ]% Y! N4 p. i2 K- i
print (Str);
( i7 T7 U* o- w
2 `; ]% C; O# l6 T' i% h. V0 b//给牛俊弓服
! f% ~2 ~; T$ Z$ v Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';
5 Q9 x, a" ~) K8 k$ E, V- d' T print (Str); g4 I- w0 ?8 {- l1 \* o, w
Str := 'say 收好了..俺最喜欢的衣服~';
q, `( W. p, R+ h- G" i print (Str);! c5 v& _! O2 g# d" P
exit; A1 a2 L K- ~; _
end;
2 C& n* f, M R% t6 |
0 T5 W; g3 ]0 T: Q//判断结束语句
& L+ ]% n! ?* t) {9 d* L1 R) A6 U end;
/ X* ?( L- k& J, n! H exit;. D( Q2 g( a5 X8 a+ z* l
$ X1 |' D. L0 Q8 y( w
end;) T6 a& D& O0 T- p3 C4 N. Y. Y
: s# F2 q; U* @, |, k% Aend.
- z8 \. z+ z" [- C- L6 p( _- }5 B1 u9 c; V. F- [, F9 J* T
end;
. F$ N/ M, g" ]6 L. I+ Z4 G9 z
欢迎光临 三千论坛 (http://www.3000y.vip/) |
Powered by Discuz! X3.4 |