三千论坛

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

作者: 快要发癫啦    时间: 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 n
inte**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 J
procedure Inc (aInt: integer);
3 [! [5 _$ z0 f5 @
procedure Dec (aInt: integer);
# K% p: x+ h" g0 e
function  StrToInt (astr: string): integer;
) S6 n* [2 y$ [6 N- [- q; z+ q* N
function  IntToStr (aInt: integer): string;
* @9 o. a8 v5 R* Y  A3 L
procedure exit;
2 T  k9 ^' S: o( Y
2 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+ U
1 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 l
implementation- 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& a
procedure 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  }" G
4 \# 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 R
end;
( 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/ d
procedure OnGetResult (aStr : String);
7 E: \6 b0 @0 S4 k6 |4 J
var
$ 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  q
4 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