三千论坛

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

作者: 快要发癫啦    时间: 2023-1-9 09:35
标题: 第一个作业——小试牛刀《意气风发来打牛》
任务策划:
3 x6 t& }$ `: Q  D& k- ?出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!  _# _" m1 m8 M' v$ J
来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)" P  s! V# e0 W
收集这些材料交给屠夫,他会奖励你东西0 Y- y) f- t9 n% K  m, u
这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。
3 [8 ]# y7 `& l* P' [9 @
# D' e% _: H$ r目的:
8 g. |& E+ _% z# {$ a$ B# E体会最基本的活动都是怎么设计的/ d1 X) N. h9 P4 h/ r' ]1 P9 _# s

$ z9 t7 r8 ~7 J( l  f4 k知识点:1 @6 v. _5 i3 A/ I
1、检测包裹里的物品$ W* x+ [5 [* n
2、检测包裹空间) R6 H& j7 E5 Z( r! Z# Y' t
3、给与物品
: j" j  F1 L, i5 {4、没收物品
//这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。" \% L4 V1 q- f7 ?
1 M" ?9 o. S  I7 z# V
unit 屠夫;
* V4 ~" C9 p% W' v
6 G5 r1 |6 a3 o, N) U5 {6 U
//下面的是通用的调用程序内建的函数。每个脚本都有的。) Z6 e7 q( ~) F. T* j/ F0 f
* p/ q% @9 d( J* D4 J: b* ^
inte**ce
- g. H# |5 }' N! u
/ q' f+ V. q% O& E
function  GetToken (aStr, aToken, aSep : String) : String;- ]/ O/ j. s6 ?$ ?, {5 A
function  CompareStr (aStr1, aStr2 : String) : Boolean;
6 M" g3 W& G+ ^; a
function  callfunc (aText: string): string;
/ B* l1 ?  `  J6 S7 c
procedure print (aText: string);
* ^" H* J3 k+ \2 m) d2 p
function  Random (aScope: integer): integer;
0 ~8 i1 B/ f, o
function  Length (aText: string): integer;
9 A5 b* r+ Z1 F" t( Z8 R
procedure Inc (aInt: integer);+ V* ]6 r5 r$ V( i: A* u/ z" C9 N
procedure Dec (aInt: integer);
$ w: z; Y! K" f% r8 M
function  StrToInt (astr: string): integer;
1 M# y1 e  ^3 }+ M7 i
function  IntToStr (aInt: integer): string;) @2 n- B$ U. Z1 r3 f
procedure exit;
/ ]$ R- x8 p; X* ^6 o3 N
3 j$ w& h+ K0 q4 t7 \7 U
//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么; B# J% a3 O+ J. j' w

/ h: T2 O9 G# b2 E9 G2 m# {  _4 z
//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou/ i. ?1 `, G# r8 {3 N( ]

6 R; |& }1 G7 H# K
//第二句的意思是当左键单击的时候响应,
5 ?- r, p% B2 Y7 A$ @

  Y6 ~1 _3 E$ W. @% o. i& ^
procedure OnGetResult (aStr : String);3 k( f5 _' {% U
procedure OnLeftClick (aStr : String);
' V; ~- G. u$ k

5 t$ B0 g" ?" r$ e" p% d
//以上是脚本的头部,下面是脚本的主体部分- C9 U! y: H$ }
# k" |2 u: z8 l& X, [
implementation. [4 w' r4 s9 h

5 D0 A- @4 d. e  j7 u/ T
//当左键单击时- @' c- L8 y9 @  e( S# T: Q

9 h" b: @! c, K; A/ l7 n9 h
procedure OnLeftClick (aStr : String);
: I( l4 H* r/ N5 b: e3 G) a
( F- ~2 ?1 \$ R" p0 C; Z
//声明变量的类型
) w, i2 ^1 Y- P1 s
var0 ?. i$ I0 q0 r8 E* o6 N3 c
, V# U3 @/ }- \: y2 D- e
//Str变量为字符串型9 R9 y/ E4 l' E8 s" z$ D) O8 c& N
   Str : String;
, Z$ R0 e) N: `9 m
; Z* B: W0 i1 K3 e
//Race变量为整型
: J8 D: B: c# P* o' X5 U
   Race : Integer;
* |0 j; w/ a. z' L% ?
begin
0 ?) v% o! v3 _6 w; E% v
7 w  Y( c, [+ C/ A: n! V2 Q
//获取点击者的种族) \2 `. Z2 j, e  H( w
   Str := callfunc ('getsenderrace');
( t+ O# i( h- y9 v) J: w3 i$ k( H( W# S) u

' `# Q8 r2 b. k3 ?# t: n6 [
//将获取的值由字符串型转换成整型( `; B' S8 S* p  x
   Race := StrToInt (Str);7 l2 ^2 j% @$ b; j4 q4 v( \2 d# @! Z8 l

# d) u2 f- Z. E! p/ {
//如果种族为1,这里种族为1代表是玩家4 y* C9 {, P* B9 F# S3 o% N7 `
   if Race = 1 then begin
% s& i: [+ e  i$ T0 M( p0 h2 M& A
9 ~. i( K# D, o& K( @" e2 g
//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种" ?' ?$ q+ O( [1 ~6 N
      Str := 'showwindow .\help\屠夫.txt 1';3 G4 ?' D& B: @2 j1 D
      print (Str);
# r3 _8 v: e! h: |

$ N6 @$ W3 E6 |/ y5 e' D
//小判断结束9 B% Z( _+ b7 n9 |! n. {1 z
      exit;
, `4 o: z* y( v  x8 w
   end;
$ p# r5 {7 }- S+ d. D

' b! j$ H% o& n
//一个语句段结束
3 `/ u) b6 r, ~% h% ^
end;0 @. h& @: f4 u/ g0 @

, T# ?3 E) k3 [, Y
//另一个语句段开始9 s5 n+ N9 x: Z/ M" u( d" K

* K" A9 X: j; P
//当从Help文件里反馈回命令参数时,做出响应4 }7 Z, E7 Y6 l/ Y
5 P: i; l2 m% N2 R# g' R
procedure OnGetResult (aStr : String);
5 K0 q6 M% W1 h: z
var: f$ q+ P3 d2 R' c! c: l& {
   Str, Name : String;0 I8 }8 u) q$ Q* p8 x) a2 D
begin* n. L- X4 R# }* ~% B/ C

9 d6 n) b5 ^1 m  L8 i
//当反馈参数为close的时候就关闭对话框: N0 {7 b* t+ P; \  T- t
   if aStr = 'close' then begin& V2 a. y9 I) ?% x# ^; y
      exit;
- F! \2 E  J# [& J1 V1 {
   end;
* s( p! K& p0 p+ O2 R

3 b, S( r2 i  _9 ?+ H+ p0 J
//当玩家选择niujiao 的命令时
& u: D  P; ~  m" w

4 Z# ]5 P* A2 |+ ?5 s! T1 @
   if aStr = 'niujiao' then begin
# t- \9 r6 A+ v  L7 A

: V# g, T: r1 x- Q
//检测背包里是否有牛角
/ v1 {8 H3 q) V, }* P: J7 a
      Str := callfunc ('getsenderitemexistence 牛角:1');0 z" b7 t  i; b2 w# j7 o; S; z0 e

- v0 V7 e; \- t) L$ R- X0 G2 ]
//如果反馈信息为假,也就是没有8 A  ?' c/ V9 z/ ]% J6 W# }' J
      if Str = 'false' then begin
: |1 k- L6 r6 N% D9 u& ]! u
: n' K7 ~% V/ D, i8 _7 P3 p  f" u
//屠夫说话
. p5 t: e5 @/ ^4 X: j/ Z
         Str := 'say 快弄牛角再说';6 I8 Z1 {; O( r
         print (Str);9 R: L. o- ]- K! |' ^- _' o
; a( F6 f( |9 Z- ]3 m+ [( }
//检测结束" O* s$ B& d" L7 N8 k) q8 e* A+ l3 n
         exit;
& j" c# C8 g" ^0 p( w  f; j) m. |
      end;% F$ E8 k5 W0 O) d# d2 k; V; I$ J
& k; u0 L' r/ v2 S' f- W3 m
//如果有的话就继续执行下面的
  O# G' {, J, u
, {) H" b) }) ~& Q  J! ?8 Y0 C
         if Str = 'true' then begin! m. ]# O9 u" b
1 G( p; j9 J& @6 x) e
//检测背包是否还有空位置/ e8 e; X& m7 _( ^; K; ]7 m
            Str := callfunc ('checkenoughspace');2 u8 k, I, I- T. S* k5 O

5 l( o( ^* B8 S8 s3 F
//如果返回值为假,也就是没有
# ^4 k% f7 c& @7 M# a
            if Str = 'false' then begin
, u; P# p7 I( c5 a1 O
* s# K6 _1 U! n- A0 b4 u
//那么就提示物品兰已满
' r' {0 x: z& }  @
               print ('say 物品栏已满');9 k, ^0 M+ A+ {3 P
9 ]7 N8 L4 F9 Q+ F8 r
//检测结束  r8 a/ H: n1 g4 |  Z
               exit;
2 [" B& c9 S% |6 w2 M  b( D; p" V; P* n
            end;
8 p$ e$ J0 i: R1 Q$ I6 k
; U# o% i3 H  ]0 Q6 j
//如果背包有空位置,那么继续
  }$ f' D, L; t

+ F# R; R4 n/ W" {5 e! {
//没收牛角
4 k/ e* d% i1 C# K+ o; q
1 \: E9 t" d* }& [0 v' b
            Str := 'getsenderitem 牛角:1';# u0 B' p# D8 Q
            print (Str);4 g2 M/ R7 x: q3 ~1 N

+ m* i' F/ X; Q( Q. \
//给牛俊弓服
; X4 j/ N- R/ L1 E
            Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';: k. u" [# D0 k6 d; M5 d
            print (Str);
+ m2 a0 f! q# h  U/ `* h
            Str := 'say 收好了..俺最喜欢的衣服~';7 @5 x; L- n: i$ Q1 Q& i) x2 ^
            print (Str);' p1 a1 K* `6 r/ [. m
            exit;" |, ^% _" F' T1 l4 m
         end;- w: F  w9 ^1 ^% @* M) p: P  S! t
1 {/ U1 t# x1 w% m. L* F& r
//判断结束语句
- {8 K* p5 K' {! F3 }% u  v
      end;
5 W) p4 i: x1 Z" {4 z: S
      exit;
7 o- L: w: L2 ]$ w

% V0 C4 U" }1 Q: ^- @1 p: I& U
end;
' O9 k6 ]9 ~; f4 v

' K  H0 s7 q) p4 i) ?
end.
8 s. [9 S9 t. k
8 c# [5 ^5 O. \: e6 K8 a
end;
1 L# }- _$ N% I" v





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