游客您好
  • 点击联系客服

    在线时间:8:30-18:00

    客服微信

    Wkr-3000y-kf

    电子邮件

    3000y@wenkeruan.com
  • 手机版

    随时掌握游戏动态

  • 扫一扫二维码

    添加微信客服

Lv.5 解脱境
277号会员,0活跃值,2022.10.27 加入
  • 207发帖
  • 173主题
  • 0关注
  • 0粉丝
这个人很懒,什么也没有留下。
独家推荐 更多>

[安全工具] 第一个作业——小试牛刀《意气风发来打牛》

[复制链接]
快要发癫啦 发表于 2023-1-9 09:35:32 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
任务策划:
# \  _7 L- c! G1 y. \' u# q- {5 k! t出入江湖,当然要证明自己的实力。什么??实力?还是先证明你的力量吧!" v+ Y. R( p& _" c- R4 N' v2 T7 z
来到新手村杀牛,牛爆牛皮、牛肉、牛角(有点残忍)
0 S! L# w" M, T/ a5 Z: U& M, b收集这些材料交给屠夫,他会奖励你东西
) G6 y) \5 b" x7 ]  ^9 i# |6 O这里,我们设计用牛皮换金币,牛肉换银币,牛角换牛俊弓服。# @  J- N( ?! |9 K# H) @% b
5 C+ P/ l2 k+ Z+ r, S3 `
目的:
4 H6 z: _1 v) ]( W0 F体会最基本的活动都是怎么设计的* l# n+ u. l. l8 {( S

6 H/ x; h! v: F7 ]% F0 H; i知识点:& g# t2 P- \- U: C) m
1、检测包裹里的物品/ G' \5 v( I% e( \. J
2、检测包裹空间- X2 D- ]* b' v! ^
3、给与物品
- A* b# B% D- O# D7 q1 D- f4、没收物品
//这部分先声明脚本的名字。如果脚本出错,tgs会做一个错误纪录,文件名就是我们声明的这个。
: q* U( E9 l; n$ K- F% s
, `! I# I" |) \3 o" V( X
unit 屠夫;1 v7 [, q3 y1 H8 ^. k
: e1 t3 D( t. W+ D' C) u
//下面的是通用的调用程序内建的函数。每个脚本都有的。
: l1 z0 `% Z% |/ O) [
$ e; x; U- Q: @: j& h% T- n0 R
inte**ce: c0 Q' b$ F: F

3 i& t/ m' n. C8 p1 l
function  GetToken (aStr, aToken, aSep : String) : String;/ ~" O6 f* h' |% H; A
function  CompareStr (aStr1, aStr2 : String) : Boolean;
3 \$ x7 R/ Q  ?$ V5 O$ L9 N
function  callfunc (aText: string): string;
/ |2 Z! f0 U2 k* ~
procedure print (aText: string);
3 R2 C- m# g7 ]( a/ S& A
function  Random (aScope: integer): integer;$ P  N( y+ G1 V3 f2 J% t( w
function  Length (aText: string): integer;
3 s6 e# i8 q1 v
procedure Inc (aInt: integer);/ m6 e* ?4 `: q$ e- }
procedure Dec (aInt: integer);7 J$ T5 L0 |# d0 q
function  StrToInt (astr: string): integer;! Y6 [8 Z7 S8 D
function  IntToStr (aInt: integer): string;
4 ~& E9 d8 [' [; V0 ]
procedure exit;
5 ^8 }3 g( r5 O) U
/ `6 K& P8 r# t" M
//下面的就是针对本脚本的函数了。注意,用到什么就在这里声明什么
! w4 |& i6 w" T/ J

7 n( {* F# F) w, W
//第一句的意思是当反馈参数的时候响应,比如牛肉换东西,我们弄个参数niurou. w  Z5 f; b. N) _& R
$ D1 ^0 ]; e+ @$ s
//第二句的意思是当左键单击的时候响应,( h9 E, G3 }1 _: z3 G* F+ J

* m% W- j$ G$ c1 z
procedure OnGetResult (aStr : String);
5 P- f( ]# L" W4 _+ o. ?3 _
procedure OnLeftClick (aStr : String);
! z+ {0 a1 c  ?% T2 j0 k

* U- x2 w; X& c$ o( I% T# ?+ e
//以上是脚本的头部,下面是脚本的主体部分
, H- n) o6 g+ Z/ Y! {+ ]$ G! s

8 V$ [* k2 U9 V, O
implementation4 N( m! @; p  u6 ~* G) R% V

$ H5 b, p) k( i& ~
//当左键单击时
  Z' S* k4 Q7 Z( m6 `: n/ e" `  p
5 z: j! W6 C- s
procedure OnLeftClick (aStr : String);' l8 z! H1 ~% ]* h- d& d' \3 Q

5 u+ M4 r; ^/ n* [4 W) k# Q4 W
//声明变量的类型
" T6 [' h& U3 l" e# l9 t( L, a
var
# n' u0 ~6 q8 D% R6 e

8 J) E7 x) X& U4 g/ u+ T8 p  e
//Str变量为字符串型
. q( e; L' ^0 d
   Str : String;/ u; {9 ]7 i3 x
. o8 e6 A( w8 P. x3 u% U, e% n7 H6 ^
//Race变量为整型0 s( c. T8 W$ H
   Race : Integer;
# j! l0 p. f% ~1 N6 Y. S) f
begin; G7 v6 f# \) p. _4 Q

* k" \! }9 ?+ X3 s1 P
//获取点击者的种族: C- _) @: H2 P( f- Z
   Str := callfunc ('getsenderrace');
! |; i5 i' s% V/ d! P3 U

0 n- m8 E. P; I! C; ]
//将获取的值由字符串型转换成整型
2 g+ @% J, s& `% C, J. r4 b+ p
   Race := StrToInt (Str);6 x+ G( _5 J) V! z/ U3 K- v
+ b9 _0 k1 g& d5 r, I
//如果种族为1,这里种族为1代表是玩家- @2 k9 t9 n& ~- W9 G
   if Race = 1 then begin
6 Y2 X; E* H# z" i! z3 T

2 k6 C0 Z" N! p6 W
//那么调出Help文件夹下的对话框 注意,这里对话框的类型是1 也就是不带滚动条的那种/ \. I' C, X1 W3 Q1 ]2 G0 m1 m! [) n
      Str := 'showwindow .\help\屠夫.txt 1';4 |9 s( D( Q) E7 q% W
      print (Str);4 ~; m9 N( ^1 m; T  U! R$ N) L
  P0 l, Q0 `  O1 h
//小判断结束9 p2 Q$ e2 @  X+ K% [1 ]
      exit; 4 R9 K4 P1 k  F! t
   end;+ {( D: ~6 M- C# M
& m4 d3 f6 O8 Z3 m6 U
//一个语句段结束
/ I# x3 t- j4 J' ^/ _
end;
: q, [& U# ]1 U+ i: @# W2 _
- c3 b3 g. b. c. @- e
//另一个语句段开始3 G1 i6 N$ }' C7 m

/ l9 D, @) ]0 m1 Z
//当从Help文件里反馈回命令参数时,做出响应
9 a0 ~$ D7 @" F
. [& }7 E7 g# j! g
procedure OnGetResult (aStr : String);
" O# ]$ f0 [: ^4 B5 B1 Q$ v4 t0 e( `
var
- {3 {8 y8 P' Y/ a* B3 X
   Str, Name : String;
+ F2 v5 u, U7 W
begin
7 R; d! g1 y' q% P6 l
) R" I5 \) i0 {6 N
//当反馈参数为close的时候就关闭对话框% o9 v: t; L" p' d6 T! E9 D; r# D) G
   if aStr = 'close' then begin
1 {( V0 ^- G2 w' F! L3 a, u5 ^, U
      exit;5 Q  S3 x* @& A( N+ O4 N
   end;, p  g; V" k% @1 Q" w9 P

2 K7 ]$ F* h7 E% d; l; x
//当玩家选择niujiao 的命令时3 L8 ^2 o+ X- T8 U( N& h* r
2 D' ?, ^, A) _- b7 H* _
   if aStr = 'niujiao' then begin
  O; a" [3 K: c3 r( H+ P

. X1 d' Y: \% o- q! b
//检测背包里是否有牛角
# ^) V4 a3 n  \" \* r/ N7 w* D
      Str := callfunc ('getsenderitemexistence 牛角:1');' N, p2 [8 a+ v% G: W
$ _5 g7 s8 E: ]$ e
//如果反馈信息为假,也就是没有
/ }; L0 ^( Z4 n- j  `0 C
      if Str = 'false' then begin
- j' C4 T  \+ U* Z$ O5 Y6 m* F) e4 r

" x" n# p8 z9 E9 M$ c
//屠夫说话& K$ j. @, t% N+ Z* v7 }0 w# |
         Str := 'say 快弄牛角再说';
" m6 T5 P( s( ?: Z+ l  F
         print (Str);7 N6 D& p: {# x5 n/ K
* l0 C! J% \+ H
//检测结束
4 W2 R+ ~9 n& }
         exit;
6 z2 e$ C9 A5 d2 Y! H, e; }
      end;
4 P6 T" N% C- f8 N
, \8 z5 I  i4 u1 p
//如果有的话就继续执行下面的
/ O  S$ A; P) Z9 O1 P) U
  n8 U+ U4 ^, v
         if Str = 'true' then begin9 o: ?) b1 F0 a) M+ \- c# \' V

& U% @9 V; C' E: X
//检测背包是否还有空位置
' j! o: i. W/ V1 V! \
            Str := callfunc ('checkenoughspace');7 L" K* R0 R/ H4 y! Q. E
* {) ]: L  n) G) O# g( L
//如果返回值为假,也就是没有
" `% w* d7 I9 A) n" J% |
            if Str = 'false' then begin, Z- D! T9 w% D1 |3 t; @
+ Z; f1 \" C$ t2 ~: ]" T% e( R" G% O
//那么就提示物品兰已满
( O; y6 p+ V  N: v8 [7 A' S
               print ('say 物品栏已满');9 S% |% {, i/ b/ ?% P% y+ D! L
/ j# C  L1 Q* [
//检测结束/ w* K% d- ~* }3 G- L9 N
               exit;
8 I  Q( _8 X' a3 T5 E
            end;
2 g+ ^5 [. R( G: l$ p( C

6 Z+ ^" H8 P0 v8 i7 e
//如果背包有空位置,那么继续- a. S; M5 M4 J5 x7 x

, I- Q% e; c7 A* O1 V1 q: F
//没收牛角4 b7 D! _0 ]- \' X

6 Z$ N. R6 M1 z( f' z9 J  S
            Str := 'getsenderitem 牛角:1';; f$ [1 D4 M" c& O. V8 C
            print (Str);9 L- d: u' ^4 X( i1 S$ p
$ v3 n2 _% g" |8 j3 R
//给牛俊弓服0 z" ~; F, o! \2 i
            Str := 'putsendermagicitem 牛俊弓服:1 @屠夫 4';
- R) `8 ?" n4 }$ H) H: @
            print (Str);
* B' _& ]8 J9 t$ ]+ `& b$ O+ Q% @
            Str := 'say 收好了..俺最喜欢的衣服~';
- N: M( }& x, C# ~) R% i9 J% ]5 t
            print (Str);
, ^8 Q" k0 n, f; `
            exit;  C% k% a& }" X  N8 L
         end;
8 x. Q; |2 Z8 t) b+ X0 v8 w) K6 l
. H- b3 c$ z8 d3 d8 x
//判断结束语句
4 a( U. v7 p3 Y$ Q' Q  e4 B5 W7 R
      end;5 o% H5 j0 m0 C5 z( P# D. C' b! o
      exit;3 U! E% f1 v( o1 C) O3 O( ~" F

/ q" _, `+ f% b- D$ D% M$ u! v
end;4 }7 b- f# E2 `" I* p' ?
8 A* }7 S& B* d! z# `' Z4 P
end.
4 K8 a/ V+ ^. s  F5 `

* i' n& O  R( S% S$ x
end;

! X; }( s7 N* K  C
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

Powered by Discuz!X3.4 ©2001-2013 Comsenz Inc.闽公网安备 35099902000100号增值电信业务经营许可证 闽B2-20220593 闽ICP备2023014375号