三千论坛

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

作者: 快要发癫啦    时间: 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: r
inte**ce
; b. ?& t, K7 X0 H* y
4 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( D
function  callfunc (aText: string): string;
. T( X$ Y* R7 J( v- d; b
procedure 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 q
procedure 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 M
function  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, J
procedure 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; W
procedure 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/ G
begin
. 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. k
3 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/ Z
1 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% A
end.
- 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