三千论坛
标题: 第一个作业——小试牛刀《意气风发来打牛》 [打印本页]
作者: 快要发癫啦 时间: 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 w0 }/ 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: jinte**ce
2 z0 b) Y' F2 q$ t1 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 efunction 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 sprocedure 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. R2 ~/ G1 N8 V! i6 h
//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou
6 e0 u& _3 ^! z1 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" Vprocedure 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# `; Rvar2 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# Ybegin
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* L6 @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( Lend;
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& Yprocedure OnGetResult (aStr : String);
' b" A8 [& @5 Y; ?+ r) g8 Nvar& 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% ?! E7 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% [) Y0 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$ s8 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 f8 [& 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 |