三千论坛

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

作者: 快要发癫啦    时间: 2023-1-9 09:35
标题: 第一个作业——小试牛刀《意气风发来打牛》
任务策划:
  n8 f! o; N+ v# S2 |出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!0 h3 U: A$ Q/ w$ L& Q2 }
来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)9 m7 F" T* I) j. Q& x! |5 }5 \. U
收集这些材料交给屠夫,他会奖励你东西
3 t' E$ ~6 E; x* s" c+ b- ~这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。
( w" K: |4 m3 x
5 Z8 }# C3 a& q9 L  Z目的:/ Y; Y  R1 G6 f
体会最基本的活动都是怎么设计的
" R: N: v8 Q2 o" @0 H) b
' z: e6 l0 x8 d: [( x知识点:
9 e0 J2 t5 |- l- A4 u1、检测包裹里的物品
7 O# X& v6 f4 J2、检测包裹空间- Y$ |& n- ]8 }0 ^- [1 q  _
3、给与物品
5 O. I; m# i( h8 F# P/ t( w4、没收物品
//这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。' L( B2 H/ g: c3 B! f
2 w1 S  ^' v9 q( P' d! @8 K
unit 屠夫;' h( f4 J3 D  q1 a. @

  G: O9 v3 l: b2 v8 M2 p
//下面的是通用的调用程序内建的函数。每个脚本都有的。
8 D8 q! f! V2 \) }" L+ z" R& v

, }" ]3 {8 i: i2 D& s" Q
inte**ce' A9 V: e6 h7 B

9 }. G6 l& ]1 e' @
function  GetToken (aStr, aToken, aSep : String) : String;% T$ ?5 p8 }4 ]
function  CompareStr (aStr1, aStr2 : String) : Boolean;& f/ I% K% j5 y% e% S
function  callfunc (aText: string): string;' l2 Z! b/ {- ]1 q
procedure print (aText: string);$ R- r  C7 l( b
function  Random (aScope: integer): integer;1 o1 i6 }+ m  }* q" a. j! f- `
function  Length (aText: string): integer;
  }$ ^0 K% L9 I2 e2 O
procedure Inc (aInt: integer);
7 F4 _6 S& l/ n8 q/ ?
procedure Dec (aInt: integer);
# G# a/ J/ G5 N5 ~. @7 X. j
function  StrToInt (astr: string): integer;! U  K9 v4 R+ V) o: u, B
function  IntToStr (aInt: integer): string;
, s) Y2 d" A& K" ^
procedure exit;
; _. j7 ^( I5 z6 X

, y% H- d. u/ M& t9 b9 t; m
//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么# l: J' Z4 |; b7 I" N) m. b+ [- {) X
+ N3 N. h4 m2 m1 P6 X$ J
//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou. Z% i$ n9 E' ]$ T
; q& J& T; b- V2 l1 b' d' z1 q
//第二句的意思是当左键单击的时候响应,  ?8 v  O/ K5 F
7 v9 P' i# ]' d% D$ Y
procedure OnGetResult (aStr : String);
& i  T1 r4 ~8 A
procedure OnLeftClick (aStr : String);
1 u0 Y% f: T2 }. V. ]# U' B; p1 z
/ V- z! x6 L# e( q% M, L  ~, j% |5 N
//以上是脚本的头部,下面是脚本的主体部分
2 f3 j' e% w1 V' h

% ]/ R5 z  x( _' v& E; l
implementation
$ Y; h# N3 y8 [# ?9 G0 [. o
+ p! S4 ?9 I: ]; y
//当左键单击时
- b2 y) i, \: x% I5 x
+ s$ ~, Y2 t0 _  x4 r8 s
procedure OnLeftClick (aStr : String);
6 ^4 Z  q" F! c1 M) L2 g, E1 }
8 F: v/ a: Z4 E! V! }6 v* z
//声明变量的类型/ z- H+ S9 H! Z
var' r$ _% k2 @. f% x$ |: X' [/ [" j
. I, V$ m6 k) H: C" c* `4 {
//Str变量为字符串型& |. H+ P; D6 R" e2 F) \, e( |" S+ f
   Str : String;1 j/ M. i$ u5 l, h

  [2 z, y" m! Z; u0 M
//Race变量为整型; ]* T$ z, Y1 B# f6 J
   Race : Integer;
! a6 f7 N: a" `% u9 p6 @
begin1 G* t2 [: x$ K( |1 q  q+ A

! `& \$ w5 R% W" e; w) y' E
//获取点击者的种族
2 X. y! S2 q# w5 V) y
   Str := callfunc ('getsenderrace');
3 |  v) S* F% g1 }' p. n
% H8 e2 Z$ h' L8 {& V
//将获取的值由字符串型转换成整型& u/ \' l0 E, c" v/ ]6 W" f
   Race := StrToInt (Str);/ Y) v' {0 @% ]9 v" E$ h) H
% b6 k: R, \6 L& T
//如果种族为1,这里种族为1代表是玩家7 c: }, R% w! ]- O
   if Race = 1 then begin
+ ^/ p' r3 O$ M: d( d4 ?
) A- z2 k1 y8 [7 L* }
//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种
2 I- C0 ]9 I& K1 S5 x
      Str := 'showwindow .\help\屠夫.txt 1';
0 J9 N) j8 G9 ^" m( ^3 C) ~
      print (Str);
6 i4 x- R: K2 h3 h0 \2 y; c+ [, a

9 Q# \4 |1 K1 O
//小判断结束, e0 ]( Z* J5 S1 w. e
      exit;
$ V) t% |3 J* ~9 T% l! u
   end;; ^# X! ]6 K2 i; }. V6 L
% O4 v4 B0 M! T5 B( d# \! y
//一个语句段结束, j: K1 w2 d) |) j$ s
end;* z7 c/ G7 Y0 M1 u% l0 w/ [6 @% o

$ Y6 ~) m" C1 r
//另一个语句段开始/ {  f3 k8 l( |( O

8 O# N+ r3 m) @" X, `7 c, z
//当从Help文件里反馈回命令参数时,做出响应9 ?- N" c  s; w: k0 Z

# o& L# W5 k1 h$ I  O
procedure OnGetResult (aStr : String);
% t2 X7 V0 |& t! |
var
, n: s; I0 q3 x0 Y# R! N4 f3 }9 e
   Str, Name : String;
8 K7 l% t' u9 x" a
begin
, P! ^/ @6 G1 X, W- j0 T
% X5 |2 H* P. V( [
//当反馈参数为close的时候就关闭对话框
7 Q$ L- s+ G* b: F8 Y& m0 C; Y
   if aStr = 'close' then begin
0 S2 `3 q1 z. u1 W
      exit;% p4 `/ r' w  }& b
   end;
4 Z: c* Q7 h1 V

1 e3 @' z' y: B0 C# ^, c( r
//当玩家选择niujiao 的命令时9 V0 `! `& o& ^5 S

# ?4 @+ T; N6 `0 P' |' v; X5 \% n
   if aStr = 'niujiao' then begin! D' h! H2 L3 ], `- e$ e! P, Z

% s; w5 t$ R9 P3 s
//检测背包里是否有牛角
5 I  [; a3 _4 [
      Str := callfunc ('getsenderitemexistence 牛角:1');: L* g1 g( F+ j7 S' ]

4 l# j! L" C, n2 C8 m* W
//如果反馈信息为假,也就是没有
9 @# {% L* q6 I- i
      if Str = 'false' then begin( A; Q; A, q7 \
; t7 \% |8 B8 L% s
//屠夫说话3 t4 L# H# W6 z" P9 ?
         Str := 'say 快弄牛角再说';. C3 i) b9 L) X8 t
         print (Str);. w/ W% m5 M# s7 q, g
5 A  y# _% r( u$ m
//检测结束& J! `! v  s. Y/ S
         exit;8 U* U/ J7 @" n( C" ]3 L* _1 k
      end;
; C& h  r# y; |; |) J0 W  i" R, _# w; v

& {. d9 x: D/ M
//如果有的话就继续执行下面的0 d8 V  W9 U$ T8 S2 m/ J3 J
8 \1 W& }$ [8 \5 J) B' R1 ^
         if Str = 'true' then begin& l& e9 ]/ |, {: l
  v7 D. R2 H; B8 o3 X; L  ~9 a
//检测背包是否还有空位置  Y3 m, f9 y+ o- D! V$ i% Y
            Str := callfunc ('checkenoughspace');
% C8 b' e5 w8 q& z9 T  A. H0 W

3 o1 t  L5 k4 ], Z* X3 K$ E
//如果返回值为假,也就是没有
5 q5 k/ \3 S5 w* L2 r+ s* x! a
            if Str = 'false' then begin
) X; D1 v$ b* [* v8 ?5 Q9 t

* S7 V  S& J0 V/ ~+ H/ w
//那么就提示物品兰已满
& }( h9 l0 b/ Y( K' ]5 D
               print ('say 物品栏已满');6 ~+ E8 |# J" E8 @! A. l

9 t- y/ n$ S: X3 s
//检测结束
4 N& g* p  L8 N) E6 v: c* v: w
               exit;
  [1 l- l% Q! w  C( m9 c
            end;
# O  f  e; q4 ?* M, `5 k
$ S8 r, |  h8 D. p, R
//如果背包有空位置,那么继续: N  C: a, e0 l8 |0 t) L
8 A+ D, t. e$ t2 s" ?- r' Z
//没收牛角
' C0 X3 Z2 q3 d- r
% U! T8 ^! L: [
            Str := 'getsenderitem 牛角:1';4 g3 C6 b* y. ^4 _& k
            print (Str);1 u) a4 p. _5 T. C+ P
' d% [% N. f& l: h5 i0 T
//给牛俊弓服- j5 w, G# [3 Y
            Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';
3 B8 \4 j! Q$ `
            print (Str);
) v  ~; t. ~2 }6 Q# R
            Str := 'say 收好了..俺最喜欢的衣服~';
2 B$ c3 I) w6 l7 H/ M
            print (Str);
3 I, X7 m) H; [
            exit;& S  U$ N9 j/ r7 U, u, s. U0 p
         end;/ t4 h9 R; i) {+ j; h3 _9 w0 A6 [

) R/ p2 z) ^! e0 l& }; ~
//判断结束语句
/ [0 t4 w2 Q" x7 M# f2 j# a
      end;# o4 ^8 P0 h! i  H$ C4 q3 X
      exit;
! u# \- K" G& _+ A
" e8 X" p, X( z& W, C( Q. `0 O
end;
+ V! _; q4 z6 L9 @" g

7 K7 |) E" c5 u  v, O) W
end.
& g2 [0 c* _) S/ W3 `! N" e
  I, G" f) @1 x
end;

; J9 _1 ?3 h3 D" ?4 `/ Y; `  X




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