三千论坛

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

作者: 快要发癫啦    时间: 2023-1-9 09:35
标题: 第一个作业——小试牛刀《意气风发来打牛》
任务策划:
- d/ u( z% y( t, z6 \" c出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!
4 o8 F$ d  Z* O来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍): a, K! I* A( C4 c
收集这些材料交给屠夫,他会奖励你东西
" C* u2 _* [" c6 L; G' T这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。0 ^6 I6 {" }$ ~9 m) v7 ?
0 ^' H: S8 s0 V# h  C
目的:
$ D! I# H; H9 t体会最基本的活动都是怎么设计的
/ ~& H7 u/ A% O9 _9 k" v% y
2 m/ {; `+ J/ ^0 g' U# `知识点:
3 Y9 ^2 W+ j% {- }) P, V1、检测包裹里的物品
( T9 o1 A8 f7 j9 o2 \2、检测包裹空间
0 z# i6 Q  k5 j; ~: f. g3、给与物品
% _: B1 ^: u& ?& ?0 C4、没收物品
//这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。
7 {: \, B0 ~$ j. V) ?+ T7 a
6 l( {1 s6 C9 Y: V: L( x4 Z
unit 屠夫;
& {/ L8 v2 Y4 t5 d% x: T. ^4 H

; f+ T6 G9 ?1 n; I2 ]; Q
//下面的是通用的调用程序内建的函数。每个脚本都有的。
0 ]7 z# o3 f" ]5 ~$ n% {( B0 C
0 H3 r. S) j! Y2 G% }" ]# d
inte**ce7 R) R, b5 F6 t; B  R, z' r4 J4 H/ \

6 W1 r, J2 W& e; q/ L& S( p/ R& L5 N
function  GetToken (aStr, aToken, aSep : String) : String;- l% B+ L0 i8 G. x1 Q/ A
function  CompareStr (aStr1, aStr2 : String) : Boolean;2 K( ], d! N2 C/ o7 z, \- j' `
function  callfunc (aText: string): string;
, F+ k5 W( ~; L0 r
procedure print (aText: string);
1 G0 X5 E: q- h4 m: a6 j2 u
function  Random (aScope: integer): integer;* Q8 ]2 |' `  }8 V0 a4 ~0 E/ {
function  Length (aText: string): integer;
# d& |5 M' _% \" |1 I
procedure Inc (aInt: integer);
9 j1 _3 g$ n3 d' G# A
procedure Dec (aInt: integer);# N3 J6 b% K- Z4 J! M" d
function  StrToInt (astr: string): integer;
6 A/ P8 C5 s1 j' Y
function  IntToStr (aInt: integer): string;, W8 n3 N6 o) r. S
procedure exit;
/ w) R! h# G6 z3 ^7 A0 Z0 r3 l# \
/ H, V) J! L; H0 v- }, q* y
//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么$ X% X# f' E0 |8 w

! q. g9 v8 v$ F+ _0 T% _
//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou
! V& L! F. \7 }9 }5 O( Z5 V) }
& O- f* j# Q/ R  f; q: V: X
//第二句的意思是当左键单击的时候响应,8 I4 E6 Y% O! M  H- F# B4 S: O+ w1 P
% r5 e2 n% \5 W# O/ j3 Z5 j' W
procedure OnGetResult (aStr : String);( p6 I! i5 a+ P  {  J5 u
procedure OnLeftClick (aStr : String);; T3 n! H4 S3 x3 A. O6 d0 A
  C1 k, W6 Y# W* q% b7 Q3 y3 E# v
//以上是脚本的头部,下面是脚本的主体部分6 E  Z) u9 S, i: m. t
; d4 E, |( R6 U+ s" n$ R8 ]
implementation
, \! y0 c: H. u! o( m( V, l4 I

+ b! A2 K7 i3 ^( i% S' h/ U
//当左键单击时
  W0 G# Y5 T+ ^0 {/ j; E5 Z: t9 {
* f8 z8 t2 K! H, A& C9 Y
procedure OnLeftClick (aStr : String);
+ b- |- [0 W% [0 P

& S& @; m7 I: n
//声明变量的类型
0 C0 C" `# a, L0 q! C$ G  k
var
: q0 V9 P" g- E3 j+ b; k2 m  j
3 I  z6 e, F: x+ r7 ^6 j3 `
//Str变量为字符串型
- f# R2 W+ F# X! ]2 ~( I" w
   Str : String;
3 j3 W5 f# {$ T6 K9 n8 G8 h
+ P3 \! y: E. g; ]. C; J; F; z
//Race变量为整型
4 z- A, W( n1 K' U( x: F9 K
   Race : Integer;* s/ u( v" Z! \( W6 \8 _( ~  Q/ @
begin* p; a( H0 q7 l  t8 H
: C$ M$ l3 a( @1 P
//获取点击者的种族
5 r6 i  {0 [* ~- b
   Str := callfunc ('getsenderrace');( R5 b. H; }# Y0 {+ E

% g- m! d+ @8 p; L/ E0 o0 u
//将获取的值由字符串型转换成整型
- G1 @& U, Y* O! ~& Y9 S
   Race := StrToInt (Str);$ Q: R- @  N% {: H. y+ ^/ L

/ q5 _9 o1 n! C0 _" ?1 H
//如果种族为1,这里种族为1代表是玩家
* ?5 _1 y5 t; X( R4 I
   if Race = 1 then begin
8 ?) B* K$ l+ I, q3 P: a7 f' R

- T  T" e' e3 h% [
//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种
' Y% k' y) T7 k! ^" y
      Str := 'showwindow .\help\屠夫.txt 1';
3 p0 V( U4 ~7 ~) S% e. G/ j1 d  `
      print (Str);$ z6 |! m* f# t+ s

, e: x( A4 x( v; c& O
//小判断结束
- {. S- J% }# |' B
      exit;
, J+ Y4 c, B; G6 ?
   end;8 R1 l. Z( C/ b, i0 |) X

6 T! ?4 T: _( o  H
//一个语句段结束5 |/ f; b/ Y* N& g9 b7 f$ U% D* M
end;
7 h$ X; D2 Y8 t1 U* f

; w. M! {& \# ]2 l% d* I
//另一个语句段开始
+ }; G4 B- n: O! g7 b6 \( n

# O8 l% n- f& o5 G) I% R0 p) n
//当从Help文件里反馈回命令参数时,做出响应) n7 U7 @8 q3 S

3 p' b# r% n2 ]% w9 U' Q, c& v
procedure OnGetResult (aStr : String);
# o" d7 V) g: l% z7 t
var
9 }% t. ]% g3 \1 x4 T- J" n- v
   Str, Name : String;
, i2 \7 l8 Q& H/ v" ~/ H
begin
4 K0 s" L. N$ d- g
$ w6 _+ J" ^# F: k& _7 L
//当反馈参数为close的时候就关闭对话框
3 d' W  @/ a9 P) a* c+ v6 ~
   if aStr = 'close' then begin3 a8 _* i$ I4 }1 C" s
      exit;
# h: |; o! L2 b6 s3 U' X1 F
   end;
) C# |' Y0 o* k- J. X6 G
) O1 Y; S6 W5 e; C3 l3 Q4 A6 M0 q- a
//当玩家选择niujiao 的命令时
( i: b; |* A1 p0 B3 J
6 q. |9 T6 {. r& _; e7 e. ?1 ^
   if aStr = 'niujiao' then begin
, Z. |$ R3 R- T6 {

; E, C7 e6 R$ L& ?7 C% u5 ^  ~
//检测背包里是否有牛角6 y5 |+ X% i% ]# |
      Str := callfunc ('getsenderitemexistence 牛角:1');
  g+ w/ B, g3 K: R$ B4 f

& c- f* Q+ D1 B: n
//如果反馈信息为假,也就是没有, t5 W% b" e/ f* T) c
      if Str = 'false' then begin
1 `; W' w" F) k/ w. R1 X9 e
! L9 K! e/ Y( Y8 Y' w+ s
//屠夫说话
# z5 o3 x9 T! B  Z
         Str := 'say 快弄牛角再说';# v; M7 o$ b' ~0 ~
         print (Str);) C* a( ?" |- q  h  p

% t- K5 x4 y7 D. M" J
//检测结束
! F; k) K( z2 p5 U2 j
         exit;
' z1 V1 r: A+ J' ~
      end;: v- J" }: ?" P2 F/ b$ a

8 h1 i4 _4 U1 r4 t1 l. N# l
//如果有的话就继续执行下面的: {, h' x; U/ F- P6 E7 @2 y' s: v$ i

* L2 |. z; {. y
         if Str = 'true' then begin
4 i/ B6 j, M  v3 n8 W

1 z  E4 f' q8 a4 i5 m
//检测背包是否还有空位置- ^! e6 U9 J6 c( Q5 |7 a( r
            Str := callfunc ('checkenoughspace');
9 p' E6 t5 s8 o2 \6 J5 Z- b7 R& q( q
0 [; m1 u2 q) h% B2 K, k0 h
//如果返回值为假,也就是没有& H9 Q8 V. R! g9 M- t$ F, P8 Z; N
            if Str = 'false' then begin6 o9 Y+ e4 i5 \  y/ N) z& ]
" s. _8 W8 N6 ^+ S8 `' I
//那么就提示物品兰已满8 L$ ^1 V/ f2 p" Y7 D! i, q
               print ('say 物品栏已满');" d3 y8 u& Q+ V, r" B
) e5 v8 g$ M! R! Z* ~. T! y2 f$ C
//检测结束& p7 u8 n1 I5 _' o3 ^) o- E5 \* Z
               exit;
5 G; @: l( B: K( f) |
            end;! E3 d/ [7 b9 ^# A, Z( Z$ {6 ]
8 G- h3 u& m& G; \
//如果背包有空位置,那么继续, U6 ?) x/ n/ e1 T

# b$ z' H6 p! U: a0 o/ j( @
//没收牛角6 j0 t: ^% t, d, |, g; t' ]

3 {/ s7 c/ I& {- p$ {7 }/ z
            Str := 'getsenderitem 牛角:1';
+ `0 H9 Y5 I, q& r! o5 }
            print (Str);4 `/ q! H. n" _" p: v
, B; P5 d3 z- Y* d5 b
//给牛俊弓服
; v6 }' a0 g! t( Q) ~/ q7 |" u
            Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';
* c% P+ @/ \# d* n8 _
            print (Str);
; n: Y2 K, E8 S2 g5 N
            Str := 'say 收好了..俺最喜欢的衣服~';: F  N) Q! }. ?
            print (Str);
: A5 K, U% Q& t" D! L$ a0 n
            exit;$ f6 t+ a* p0 H; Z" o  T5 R
         end;
" P  ^, b5 u3 f4 b. l
# C- O8 E7 m1 v! e
//判断结束语句
5 y! ~9 T/ K" c# z$ ^/ z
      end;
& h: @! Y, o5 d9 U
      exit;
8 M8 l4 ~: u7 E

3 l6 @7 b* a: x: K: i6 Z
end;9 Y6 B3 W7 ?$ j$ }0 v* [# s# z

3 z1 `. i9 [8 |( ?. z- ^7 f
end.3 g) k4 \% T* H- r" P. B3 c

; c$ k, i9 i' I3 D
end;
3 J7 o$ I3 n5 l" C/ i+ m& i





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