三千论坛

标题: 第一个作业——小试牛刀《意气风发来打牛》 [打印本页]

作者: 快要发癫啦    时间: 2023-1-9 09:35
标题: 第一个作业——小试牛刀《意气风发来打牛》
任务策划:+ D- `# y& Q& [
出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!1 k- j2 u" j( n, X) q; o
来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)) d9 Z; j( j4 y6 r
收集这些材料交给屠夫,他会奖励你东西
. T9 @% p) ]: F: B4 A这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。/ _  ~% M; X$ W& ], ?- H
: x+ ~' ~1 B, F0 z7 W
目的:
$ I& b6 q/ i7 f体会最基本的活动都是怎么设计的( a% Z" ]: }7 S5 W- @0 N# L$ ]
8 q) f# e9 K  p& @7 g' x. R0 _" g
知识点:, o8 U. ]3 V# C% p* w9 `
1、检测包裹里的物品# a3 o$ U# U: T! O
2、检测包裹空间9 J( m' j, q  h8 a
3、给与物品  d" V9 |* X; h
4、没收物品
//这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。
* p$ c5 @. H8 g+ _$ e

4 _$ d: o# R) x, H% X
unit 屠夫;6 `# x7 X  C) B* A

7 w* Z2 u& t, z
//下面的是通用的调用程序内建的函数。每个脚本都有的。1 u% L% b7 J% t

4 |# x1 v+ f$ f2 F. ~8 f
inte**ce
  J. N: h$ n0 n5 m1 ?  U0 {* e
; M5 G/ V2 c3 c. G9 r" W/ v
function  GetToken (aStr, aToken, aSep : String) : String;
. m) ^* k2 Y2 f( m
function  CompareStr (aStr1, aStr2 : String) : Boolean;% H- A: \9 O# V$ k( k' b, f1 x
function  callfunc (aText: string): string;0 V$ g. ^7 e; L& I$ D3 W- o
procedure print (aText: string);
6 L4 Z4 S# N7 w6 v- M/ p
function  Random (aScope: integer): integer;
/ F6 ^. i0 ^+ J# O
function  Length (aText: string): integer;& r5 `! g7 E- J4 S9 O
procedure Inc (aInt: integer);
! [1 P. B* L4 p; f  d6 P
procedure Dec (aInt: integer);
( X" X/ g9 q" Z, c& [+ h% f
function  StrToInt (astr: string): integer;7 N: c2 O; g- E
function  IntToStr (aInt: integer): string;
4 o, O% n- u7 z3 A% M
procedure exit;
! {: D& {( x4 \
( I: _4 x4 W+ @$ y# T0 B
//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么) |' c' F/ Q/ e7 Y5 E3 X
. j7 S$ k9 Q2 K# A0 `. H# {
//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou
) M4 U* I2 E" ^  k! W+ }4 X, M

% L7 [/ ~, L' c7 E$ l( a: a3 U
//第二句的意思是当左键单击的时候响应,
% b' z5 x; ^/ m9 p7 {1 w
$ [6 l% M! D; a
procedure OnGetResult (aStr : String);
; Y; R! G2 j" |' V
procedure OnLeftClick (aStr : String);
8 c( D: x( u) m$ L1 Z
2 R4 Y. @* Y( z1 Y' t" V
//以上是脚本的头部,下面是脚本的主体部分
. ~, l0 N3 ]3 U9 w

" m% B! X8 I8 p, E9 K4 c" }
implementation; n$ E* H' e$ E: i! E# z! P
+ Q( r, @9 e* L4 S
//当左键单击时0 T7 T* q# t" A
/ `$ \' H- e' r9 _5 z4 i! V9 S
procedure OnLeftClick (aStr : String);3 K: x, N! e, L# R

" C( p. A1 H: _: A
//声明变量的类型* L( T0 o7 ^/ G3 _6 s
var
' p* Q5 c/ O( T: i

! W1 p4 z1 A. P. ]8 K  ?
//Str变量为字符串型, e2 k' }' j0 K/ E. @
   Str : String;0 B* \3 n& ~& D. Q) h- B

& N5 `( `0 p7 d1 }2 p. B/ h
//Race变量为整型" t$ h  H* h6 C" o/ g) Z
   Race : Integer;4 v8 @, F# y3 a6 n# t- @) B+ T
begin
/ I- ?9 c6 i% c9 Q& B* m/ @8 c
* c+ z% s. @; [/ ]6 J9 U7 \" b
//获取点击者的种族
2 y) `6 Z6 r1 d1 M6 d, H
   Str := callfunc ('getsenderrace');) H% f" V8 r' N8 Q6 R
9 n) ^9 A6 }8 q/ O/ L
//将获取的值由字符串型转换成整型1 m8 A6 s1 h# s% b8 C5 Y
   Race := StrToInt (Str);8 p* B: F3 N* x) R0 ]
  p0 C+ w) Z, k
//如果种族为1,这里种族为1代表是玩家
& ]3 F" p6 b/ a$ ^+ k) z" T
   if Race = 1 then begin
  ]; S" L1 S) G: n
8 c# j& ]3 B1 f, |. n
//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种3 C+ _5 ^( @! D. h
      Str := 'showwindow .\help\屠夫.txt 1';3 I; J8 A1 r5 o4 u  k) O
      print (Str);
7 [) Q. I- ^- M% B

, {$ S% o! ?, ~1 B
//小判断结束; p. h4 W/ e% I5 Y  g) h
      exit; ! Y' L3 m# `; v2 Q* ]
   end;
; \5 R. K, ^3 k  k
; u  D2 D* ^  h- _/ m- U- R
//一个语句段结束* G6 P9 |! S9 \1 [; }
end;9 ?) p' u8 \. ^9 a7 F
# \! m0 Z# D- R4 O6 k" T. t
//另一个语句段开始
. h1 \% C4 P' @( C( }+ P* W
+ A' t4 S5 S8 {! Q: s  h
//当从Help文件里反馈回命令参数时,做出响应* q- f$ c; \; [* y% q# h" i& g

" I$ l6 g5 K  S, p/ ]! V2 R
procedure OnGetResult (aStr : String);
( B/ |/ [, \( a" t* Y8 q9 v
var6 r1 i2 b1 K; q4 P; f* _0 n) c7 u
   Str, Name : String;
3 y$ S+ N! c+ ?; h& o! B! i0 o3 e
begin
) i; ~7 J0 g) I/ [' X  x

3 p7 a  K! a6 b/ h: L) ]8 O
//当反馈参数为close的时候就关闭对话框2 a, w3 x; ^5 T) i6 B1 ?' N
   if aStr = 'close' then begin6 ?) e" a! l5 t
      exit;' y" ^9 v* w* F) E
   end;3 t; Y6 }# P' y+ {% Z
  `/ ~! u9 r1 K4 Q; b" i! {
//当玩家选择niujiao 的命令时
8 z2 S* i* K' z( O/ `

1 ]% a' y  G) `9 D5 ]( S1 s
   if aStr = 'niujiao' then begin& p+ m% D. |4 _* h4 U. J9 T6 h7 p: h

" Z- F" Q6 `$ t1 J
//检测背包里是否有牛角
+ p2 P: R9 s2 X: s' \
      Str := callfunc ('getsenderitemexistence 牛角:1');9 x) C* \" ~! Z* [# e& v

" X0 L. `( h' t
//如果反馈信息为假,也就是没有
# Z- Q! ~, X4 }0 W$ T3 d) I5 J
      if Str = 'false' then begin
$ Y: j: }( D- Z" U' O- D: J

# D; H" r! p% ?
//屠夫说话
2 R, W; E' ?5 I' Y+ |
         Str := 'say 快弄牛角再说';
7 h- {  Z8 K' n3 B+ J
         print (Str);% {' G+ A/ V, t" ]& ?( H; I

6 ^+ h) g" t" v. W/ F
//检测结束
7 S, G! O6 u% @4 _( A, D
         exit;2 M) a  B0 o9 y7 |& k; B3 B
      end;% j5 k2 s; e# U  M* A5 j9 ~0 \

$ s( @9 J! g* j0 @1 M' v
//如果有的话就继续执行下面的8 R& e: \  W$ I1 [- F+ N: x

0 `( [* Q, G0 X! y* g7 }7 x/ ~/ P
         if Str = 'true' then begin4 b0 G3 u3 X) T
4 n8 K" k7 H" k7 e
//检测背包是否还有空位置
( f8 O8 n6 ^3 }6 m6 T! J0 }
            Str := callfunc ('checkenoughspace');
; |$ h: d# R: C. O/ ~& y. _$ \6 w. M

1 h* g1 G5 X: c% N7 T
//如果返回值为假,也就是没有
+ l8 \5 z3 i# W$ F
            if Str = 'false' then begin- U" n; ?! \$ D& Y
) G1 j- c* r. T5 F( }7 A
//那么就提示物品兰已满1 K  v. e1 B! L# l+ c
               print ('say 物品栏已满');$ k" e. K# f7 E, R5 J) q
* O( k' H+ ]" Z3 G; _4 s: g
//检测结束. D+ V( o7 _/ J" B
               exit;' g% i" E) `2 \
            end;, A1 B- b* `( c+ X
# H  C' ~! y  f9 I
//如果背包有空位置,那么继续
! y. u1 W+ h+ e( ]9 S

/ t5 X" r* R$ `/ v
//没收牛角
1 z+ b& m! H) t& I; c+ F! b# q

. o. i5 ~( B% M8 \( @
            Str := 'getsenderitem 牛角:1';
$ m' J; n9 c4 s8 f4 d
            print (Str);8 n8 l1 V, y2 d3 w+ M% o: j, U
, V# R: Q% O4 s
//给牛俊弓服: `6 m4 ]" Z7 F8 X; G  }
            Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';
+ s" U# H' c) E) x5 H# ^
            print (Str);1 o/ b5 s% D7 m0 P
            Str := 'say 收好了..俺最喜欢的衣服~';- Q7 u) E9 F" T
            print (Str);8 {1 B/ X5 `& i( T2 v& Z# o
            exit;
2 r4 c* Z8 s- a! M# b+ S4 S
         end;
9 k1 v/ s+ h) B  w
" Q3 W( ~$ \& ^/ r; ]; E
//判断结束语句1 W" _2 Y# E, x/ z" c; w
      end;& q! d. {% V4 _
      exit;
; _6 y8 k- @! o- f- w. x0 C: X

; M8 h6 ~& v) s! S- Z5 e
end;# i# R; X- @& R* k
  D* a( w; n0 b2 z5 f) F
end.; m3 {1 g4 Z; r. c1 V& c3 w
1 E& r  H8 `' r9 m7 L3 B
end;

! v+ @) f. P8 b8 `, k8 n




欢迎光临 三千论坛 (http://bbs.3000y.com.cn/) Powered by Discuz! X3.4