三千论坛
标题: 第一个作业——小试牛刀《意气风发来打牛》 [打印本页]
作者: 快要发癫啦 时间: 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" Qinte**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 Oprocedure Inc (aInt: integer);
7 F4 _6 S& l/ n8 q/ ?procedure Dec (aInt: integer);
# G# a/ J/ G5 N5 ~. @7 X. jfunction 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 Aprocedure 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; limplementation
$ 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 Oprocedure 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" abegin
, 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) Wend.
& 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 |