三千论坛

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

作者: 快要发癫啦    时间: 2023-1-9 09:35
标题: 第一个作业——小试牛刀《意气风发来打牛》
任务策划:% S4 `- V; c) c. g$ a7 `& r* I
出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!) `& r# h5 h1 C6 J0 G7 o
来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)
2 `& ^+ q( d- V: T6 n收集这些材料交给屠夫,他会奖励你东西1 b2 G" |! ~4 K8 n( z  [) v2 w
这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。
9 G% P4 E  b! c8 E3 h& Z( ~
8 t- i# O% ^; k目的:) d- S9 i5 ~! n% U2 Q
体会最基本的活动都是怎么设计的
* ?, \4 v- F2 D2 ]( h$ q/ C% o
0 ?9 r( |2 q% V! ~$ @$ C/ M- Z知识点:, u) n/ K1 f" v8 y! Q; P* M
1、检测包裹里的物品
* [" W" b8 Q; a; }+ k$ [2、检测包裹空间
$ B% N& s# W* n4 X8 A3、给与物品
1 b& W; @4 K$ a0 y+ w3 t$ ~4、没收物品
//这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。
6 F7 |6 M/ G# `% c" S8 X3 w
0 }/ t8 @8 m- T% [
unit 屠夫;% F! Z' @6 E% P* G( h

! O1 L/ [! I* R0 C0 U" Z
//下面的是通用的调用程序内建的函数。每个脚本都有的。$ o+ G$ Z+ Z' K1 q3 [' Z5 ?

+ k- {; l/ y; L; Q& T: j
inte**ce
2 z0 b) Y' F2 q$ t
1 N. a$ c8 q& Q1 d  L2 g
function  GetToken (aStr, aToken, aSep : String) : String;0 [& @' h0 L- ?( ]) r( ^
function  CompareStr (aStr1, aStr2 : String) : Boolean;5 I  K! r9 k( m' t/ T2 K2 }
function  callfunc (aText: string): string;; k" Q! X; e  u+ v+ s+ D) O, G
procedure print (aText: string);
/ c$ ?+ w4 c+ o. i/ @5 Z9 C2 e
function  Random (aScope: integer): integer;1 X9 K& L3 Z# D: b: J" A( x2 a. b" ?" p. y
function  Length (aText: string): integer;
3 j; |6 i- G1 s
procedure Inc (aInt: integer);
0 k0 |3 {/ D1 t! j7 `& d+ ?
procedure Dec (aInt: integer);- q6 K( P( b+ V, C5 q- O
function  StrToInt (astr: string): integer;3 a' G6 }+ J2 P) I! l/ t) p' {
function  IntToStr (aInt: integer): string;8 a) l- Y' a3 q
procedure exit;
- C8 o3 B2 i/ O. b, Z& l
% ~& `4 C0 n& J5 o: N! y* ~% _
//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么
4 j% a# C8 }- T1 s. R
2 ~/ G1 N8 V! i6 h
//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou
6 e0 u& _3 ^! z
1 Y( |% @. z9 U1 P& A
//第二句的意思是当左键单击的时候响应,  G- m' M$ r5 w, q7 B# H0 c
9 }! [$ j7 V# M0 z
procedure OnGetResult (aStr : String);
& k5 O, W" R, J" V
procedure OnLeftClick (aStr : String);7 S2 v4 q6 |! m/ G# H
7 O  }& C" I2 C, H
//以上是脚本的头部,下面是脚本的主体部分' y; w8 `$ G; n1 k% q0 _2 ^

; F1 b5 G$ {# v" ^
implementation
  O" \4 D* u2 r  k$ V+ J& _
/ O! W4 W2 h' o4 G  M: P
//当左键单击时6 H) j. r8 {  P0 S* S4 d
  \  i1 n; Q$ I
procedure OnLeftClick (aStr : String);) ?) {# v5 H. }( Z- ^
1 T. i+ S% s5 n: Q
//声明变量的类型
# O$ s# S! e& i5 z# `; R
var2 m4 E  `7 y% i$ v6 C) j
4 |3 }/ J7 V* i% ^- u
//Str变量为字符串型. n. o5 E- J" ^" m4 j* \
   Str : String;: u9 c8 P7 Q, v4 k" X3 V- I# N- B. @$ E
0 o7 `$ r6 v, {% z& s- N
//Race变量为整型* a3 w0 M7 @% Q. Q
   Race : Integer;
; [0 U+ a2 v( |# g- r% F# Y
begin
4 p3 u7 R$ r. k0 Q

+ {# @5 o2 g  c% c5 }4 A
//获取点击者的种族
7 d# Y9 a: G9 D
   Str := callfunc ('getsenderrace');
& F3 c5 g8 D8 p5 p* L
6 @3 y5 x4 D6 J2 A
//将获取的值由字符串型转换成整型. q, Q+ j5 Z$ ?9 a# G, ?
   Race := StrToInt (Str);0 b$ P- Y3 y( Z5 }& U; J
0 E6 O+ v7 C3 I/ ^; x
//如果种族为1,这里种族为1代表是玩家
6 ?2 f6 \! e5 ]6 [/ g0 M
   if Race = 1 then begin
) s: k* v% z3 E/ j

' N3 R, D/ I" c
//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种
+ B% J  O' _! S4 I
      Str := 'showwindow .\help\屠夫.txt 1';3 H1 c% k5 @, o* e4 o! e: U
      print (Str);
' g& l1 }' S. J1 O9 H8 H

0 |# _: Y7 ]) C: }! c
//小判断结束
* t! g! `# L. D; a1 D; r2 f
      exit; 1 T5 A; C  H0 c! H5 d2 b, |
   end;
5 L8 e4 ?9 @" M& e0 p

2 Y; W; L% J5 X, c9 U6 v
//一个语句段结束
' o8 x9 W5 Z: ^5 j$ X( L
end;
5 Q% {% ~6 X4 B' X7 X0 c( i
- ~* t$ }' \! P- {! r
//另一个语句段开始8 `2 s' {% g; j( f1 J
& D! N. k  T9 ?3 Y. M! X
//当从Help文件里反馈回命令参数时,做出响应
4 Y. C6 W* y6 w  |. A) i

% R3 _4 ?8 N8 R$ a+ C8 A$ h) _  B& Y
procedure OnGetResult (aStr : String);
' b" A8 [& @5 Y; ?+ r) g8 N
var& t2 F) O- c6 F! Q2 O. ~
   Str, Name : String;# D+ G( x4 ]! u' e2 {- \
begin  }+ A  {) C8 r4 e$ b
" B# y6 }% z+ S. y
//当反馈参数为close的时候就关闭对话框: y$ q, ?: I: n8 r
   if aStr = 'close' then begin
- W, S* I1 E+ Y$ Y5 G5 s
      exit;0 W1 i( p0 X6 h; N1 D+ f' ^3 G
   end;- H; e. W- _  w/ T3 V
( f7 i4 `2 C' o, S/ w* o- ]
//当玩家选择niujiao 的命令时
" x' X. g/ |3 d2 ~

, O9 e% ?3 G1 P. @! P, W
   if aStr = 'niujiao' then begin
$ p# y$ c: }4 x- j+ P7 G; K2 M% ?! E
7 L) {3 S# A  [) Y" {( }8 L1 w
//检测背包里是否有牛角9 J5 X' o$ H; S4 }* A( ?
      Str := callfunc ('getsenderitemexistence 牛角:1');/ g/ E/ U$ R9 n- W2 ?: ^

& ?. _6 k: \" @1 G7 i% D: B; }
//如果反馈信息为假,也就是没有
8 V1 I( `( X- K& u! m0 w
      if Str = 'false' then begin
$ K0 o; Q; u( M1 l

) W: _& i9 \6 _9 P6 m: p
//屠夫说话1 y, @6 J3 ^# O8 F) V$ x4 J
         Str := 'say 快弄牛角再说';
* z% F- H  A, z  m( A7 p/ @
         print (Str);
4 T, {( w/ _: Q% [) Y
0 B0 q; j7 i- s( W
//检测结束1 }2 E9 r; Y# R: t8 s" _
         exit;% w, q; c* M7 i* V0 I8 B; K6 c0 J
      end;
! Y9 y' B* z7 B% R- y5 ~

7 [! l9 W% `0 Z8 T
//如果有的话就继续执行下面的
# y" K- @# B! P( }1 _( ~
$ x& i0 N& e5 ?6 w
         if Str = 'true' then begin
1 @+ E5 \0 `* o6 N+ u

6 j, x* i  c9 G. X! ?1 e' }& K
//检测背包是否还有空位置
6 I" N# Q. ]) A" K9 W  l5 l" S5 x
            Str := callfunc ('checkenoughspace');
" O7 d) e5 K: }1 O5 E. q

; V3 P6 |( w& F0 u  g2 _# a
//如果返回值为假,也就是没有& g- G/ E8 \! Y+ R! C' \( G$ ?
            if Str = 'false' then begin
- n9 u# s) G# o' V' u: R+ z$ w7 \
) W+ X4 s7 g! Q% c
//那么就提示物品兰已满& t: N* A) p3 s% g) Q
               print ('say 物品栏已满');
5 |# B/ `" ~: A9 c# k8 B$ o- n$ s
8 x$ e# {$ T- c3 c9 y  C
//检测结束' Q. ?. v* {! @3 b) Q
               exit;
& v4 {5 h. g$ A; S
            end;
' E3 E+ E- H, [2 P# K! p1 L
  l9 L1 O/ Y& D/ P  @
//如果背包有空位置,那么继续
% O9 R( N- ~4 @; o
# n3 X/ g) _" U7 m
//没收牛角
- k5 {/ S' s+ u, \3 k

, I! f+ S, f1 r
            Str := 'getsenderitem 牛角:1';
" j4 n& Y; h7 p/ q: J2 `! x
            print (Str);
5 _2 H: x0 ]! f3 j' e2 s

. i, p; l3 C1 A6 ^/ X6 z& x' ^
//给牛俊弓服  Y4 u' m. B2 [) k+ v9 d* s
            Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';/ u. }0 x  L& }
            print (Str);( d  |! W1 C0 k9 D6 r' f( J1 |. n
            Str := 'say 收好了..俺最喜欢的衣服~';/ m7 K# }" b' l" P6 x+ u9 ]1 ~$ T8 u
            print (Str);3 b- K' U1 |2 S" ^7 u6 c
            exit;& t" W+ @( D4 I- F
         end;
/ x- D( t4 P) |6 }( I8 h1 f
8 [& Z, J" B4 s! e
//判断结束语句1 g, V) k# i# o2 w8 U
      end;
$ {1 F$ [, o6 W6 c6 k, Z. O
      exit;. x: ?  n2 E# O; a: G3 |" ]# L! \

! L* Y0 c, Y. p! [
end;# r( r( X' W+ R% j( _; t

! w" n1 d) ]' ^1 {
end.
3 }' I1 v* U3 ^% E
$ e$ j: v9 j: r9 s$ \
end;

! `0 Y# Z; f/ v6 D, V7 N




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