搜索
查看: 4818|回复: 27

[文字、图片教程] 变量和仓库

[复制链接]
发表于 2020-3-15 22:18:21 | 显示全部楼层 |阅读模式
本帖最后由 双截龙 于 2020-3-15 22:18 编辑

先来扯一扯生活中的小例子。
假设你有N间仓库。仓库的地址为:人民路1号、人民路2号.... 一直到N号。
突然有一天,你大舅子找到你,说你的仓库让他用一间,他要把仓库当作 面仓,长期租赁。好了,你让他用了。
突然有一天,你二舅子找到你,说你的仓库让他用一间,他要把仓库当作 药仓,长期租赁。好了,你让他用了。
突然有一天,你小舅子找到你,说你的仓库让他用一间,他要把仓库当作 米仓,长期租赁。好了,你让他用了。
突然....
终于有一天,你的仓库租出去完了,你要去收租。你发现你已经分不清人民路1、2、3...号是谁在租,放的是什么了...
你很苦恼这个事情,晚上睡觉的时候你还在想这个事情,后来你做了一个梦,梦中你是这样解决这个问题的:
你把人民路1号的仓库叫做 A仓,2号叫做 B仓.... 然后你又给租你仓库的所有人打电话,询问了仓库里放的是什么,然后你写了:
A仓->面仓   B仓->药仓  C仓->米仓 ....
然后,故事就说完了。
总结一下:
人民路1号、2号、3号 是你的所有仓库的地址
A仓、B仓、C仓 是你给你所有的仓库起的一个别名,分别对应 人民路1号...
面仓、药仓、米仓 是你仓库的类型,每个仓库都有存放的上限 。
面、药、米 是你仓库里面存放的货物,每个类型的仓库都有其独特的货物。
仓库的主人是你。
拿到计算机里面  :
人民路1号、2号.... 是变量的地址(在M2中对你不可见,类似于0X00543210)。
A仓、B仓、C仓... 是变量的名字(分别对应了 0x0054321 .... ,为了方便你阅读和记忆起的名字,这个你可以看见)。
面仓、药仓、米仓...是变量的类型(有很多数据类型,但M2中只有数值类型和字符类型,数值类型还可以分为有符号的数值和无符号的数值,也就是说可以是负数的数值类型还有不能是负数的数值类型)
面、药、米 ... 是变量的值(每个类型都有其独特的值,每种数值类型都有下限和上限,超过之后就会发生意想不到的事情)。
(G/A)变量的主人是M2.(S/U....)变量的主人是游戏中的人物。
看,变量和仓库是如此的相似。
事实上,你就可以把变量当作一个仓库。唯一一点不同之处可能是 仓库里面的东西为实物,而变量里面存的是看不见的数据。存数据的好处就是,你可以随意的变量里面存放数据(不能超过上下限),而每一次的存放会把上一次的存放的数据覆盖掉。
理论上说,你往仓库里面存什么东西是你自己决定的,但事实上m2已经帮你决定好了你只能存放数值类型和字符类型,因为M2在启动的那一刻就已经申请了一些仓库,这些仓库的名字叫做(G/A)。

无论你出租或者不出租,仓库就在那里,不消不灭。
无论你用或者不用,变量就在那里,不离不弃。
比如说你有一个合成脚本,而你每合成一个新的物品的时候都需要2种物品,你的脚本可能长这个样:
<合成物品1/@1> <合成物品2/@2>
[@1]
#if
checkitem 物品a  1
checkitem 物品b 1
#act
takeitem 物品a 1
takeitem 物品b 1
give 物品c 1
#elseact
messagebox 缺少物品a或者物品b。
break;

[@2]
#if
...
...

如果你合成的物品有N个,你就需要写N边,写了N行脚本。改造一下:

<合成物品1/@1> <合成物品2/@2>
[@1]
#act
;n98代表需要物品的数量
mov n98   1
;s99代表需要检测的物品a
mov  s99   物品a
;s98代表需要检测的物品b
mov  s98   物品b
;s97代表给予物品的名字
mov s97  物品c
;n97代表给予物品的数量
mov n97 1
goto @exec
break
[@2]
#act
;n98代表需要物品的数量
mov n98   1
;s99代表需要检测的物品a
mov  s99   物品a
;s98代表需要检测的物品b
mov  s98   物品b
;s97代表给予物品的名字
mov s97  物品c
;n97代表给予物品的数量
mov n97 1
goto @exec
break


[@3]
....
...
...
...
[@exec]
#if
checkitem <$str(s99)> <$str(n98)>
checkitem <$str(s98)> <$str(n98)>
#act
takeitem <$str(s99)> <$str(n98)>
takeitem<$str(s98)> <$str(n98)>

giveitem <$str(s97)> <$str(n97)>
#elseact
messagebox 你包裹中的<$str(s99)>或者<$str(s98)>数量不足<$str(n98)>个!
break



虽说例子不怎么样,但是它是使用变量来达到一定的目的。
当你会经常使用的时候,你就会觉得很方便了,只可意会....

图片中的脚本不完整,只写出了大致的思路,当你需要一种队列的时候(假设你有一个地图,每次只能进去1个人,其他人在外面按顺序排队然后依序进入地图),你可以使用它,首先你需要测试它。就写这么多吧。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

评分

参与人数 3金钱 +139 热心值 +1 收起 理由
无敌模式 + 88 牛逼可拉屎
法海不懂爱 + 50 + 1 虽然看不太懂,但是好像很高大上的样子.
1580 + 1 赞一个!尽量用小白能看懂的实例+简要的说明.

查看全部评分

发表于 2020-3-15 22:20:28 | 显示全部楼层
你这样写他们看不懂的
发表于 2020-3-15 22:22:31 | 显示全部楼层
文采还需提高下,哈,
发表于 2020-3-15 22:23:47 | 显示全部楼层
写的非常之好
发表于 2020-3-15 22:34:25 | 显示全部楼层
共享精神,值得称赞!
发表于 2020-3-15 22:56:36 | 显示全部楼层
奥利给!!!奥利给!!!奥利给!!!
发表于 2020-3-15 23:13:44 | 显示全部楼层
6666666666666666666666
发表于 2020-3-15 23:26:53 | 显示全部楼层
没看懂你写的啥 文字太多 90%的人根本不会看完,  会的人不需要看 不会的人看不懂 没有循序渐进
发表于 2020-3-16 00:36:47 | 显示全部楼层
其實不知道你寫什麽,看你這麽多字就覺得厲害!
发表于 2020-3-16 00:48:57 | 显示全部楼层
秒懂的路过
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|HGEM2论坛

GMT+8, 2024-11-21 16:41 , Processed in 1.312958 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表