郁金香游戏辅助教程笔记-十一-

郁金香游戏辅助教程笔记(十一)

P90:101-打开(关闭)商店,关闭NPC对话 - 教到你会 - BV1DS4y1n7qF

大家好,我是郁金香老师,那么这节课呢我们一起来分析一下,打开商店,一起关闭商店,关闭npc对话的相关功能啊,并且把它封装成相应的一个函数。

那么首先呢我们打开ot嗯,附加到我们的游戏里面。

那么我们通过之前的一个分析的网络,知道他在打开npc的时候呢,我打开商店的时候要向我们的服务器发送这个信息,而这个发包的这个函数的话。

在我们的这个代码里面呢,我们有相应的机制,那么我们先转到机子单元来看一下嗯,这个是我们最新的包包的这个函数。

那么我们转到发包函数这里来,等会在打开商店的时候呢,我们下一个断点,那么我们先打开n p c,那么这个时候马上我们需要打开这个买卖的这个商店,那么我们在这里呢下一个断点,那么切换到游戏里面。

那么这个时候我们还没有点击商店的时候,断下的,我们不管它,那么现在我们点击打开商店啊,那么这个时候呢断下断下之后呢,我们在这个堆栈里面呢按一下回车键啊,返回到发包的这个地址。

那么这个地方的话就是我们的打开商店的这个代码,那么我们顺便看一下现在ex呢这里呢是它的一个数据的缓冲区,那么我们可以用db的形式来看一下ex,那么更简单的方式呢,像这种缓冲区数据比较少的情况下。

我们直接可以用d word形式来显示,那么我们把它的缓冲区的参数呢把它取出来,那么后边这里是大片的零,我们就不管它,那么有数据的地方呢,我们把它复制出来,那么前面的18个字节相当于。

那么这里这里加上了一共是20个字节的数据呢,我们把它复制出来啊,那么这个20个字节呢是16进制的0x20 ,那么这,是打开商店的分析,那么这是它的一个缓冲区,这是它相关的代码,那么我们先让它跑起来。

然后我们再来看一下关闭商店的时候,它的缓冲区是一个什么数据,同样的在这个地方能下断,但是我们发现的时候来关闭这个商店的时候,它没有断下,那么接下来我们看一下呃,结束对话啊,结束npc对话的时候。

那么我们从就在里边吧,看一下这里呢是关闭npc的哎嘛,那么我们看一下缓冲区呢是一dx,那么从这里来看的话啊,这前面的一共是16个字节啊,0x0 c啊。

那么这一段数据呢就是我们关闭的关闭npc对话的一个代码,那么我们也把它复制出来,那么这里的参数呢也是复习到ux 1,好的,那么我们接下来呢我们进行一下打开商店,我关闭npc对话的一个测试。

那么呃应当来说呢,这个关闭npc对话的话可能就会自动的啊关闭这个商店。

好的,我们来试一下,那么我们可以先把工地的这个分析来退出。

然后我们在这里来编辑一下相应的代码,看一下主线程单元单元,那么在主线程单元这里txt 3的时候呢,我们有一个任务的一个交任务的一个相应的一个缓冲区的数据的发送,那么我们可以在他的基础上来进行一下修改。

那么只需要把这个缓冲区设大一点就可以了,那么这里呢我们尽量的方法设置大一点,0x868 ,所以因为呢这个d问的类型的话,一个元素呢是占四字节,那么除以四之后的话,我们大概是等于二一个样子。

那么这样的话缓冲区就足够大了,但是呢我们相对有用的只是前边的一段数据啊,那么我们把这一段数据呢把它移植到我们的这个缓冲区就可以了,那么我们就在它的基础上来进行测试,那么首先测试题这里注释掉,466。

然后我们把相应的数据来复制进去,好的,那么这一段呢这里的参数呢是1e那么这里呢我们就是打开商店里,那么我们再把这一段了哈,复制一下,那么在它的基础上,我们再修改一下关闭npc的这个缓冲区。

那么这里呢我们只需要改为二人,那么其他的数据的话,下面这里是三,那么后边这里是零,就只只只需要来做一个少量的修改就可以了,那么好的啊,接下来呢我们可以来进行相关的测试,这里是关闭npc。

那么我们移到窗口上边啊,进行相应的代码的关联测试,一这里,然后再是测试这个地方,我们再来看一下,好的,那么我们编译一下这段代码,在这里呢我们需要来设置它的调试目录。

好的,我们先挂接到主线层,然后我们到游戏里面先打开npc的对话,然后呢打开商店,这里呢是关闭npc对话,我们看它主要是看能不能关闭商店,那么是能够关闭的嘛,那么说明我们的测试人是成功的。

那么测试成功之后呢,我们再把它封装成我们相应的呃函数的形式,再回到我们的主线成家园里,那么我们在这里呢需要因为在可能的话可能不同的npc呢,他的这个打开对话的代码有一些区别。

那么所以说在这里吧打开npc的这个代码,我这个关闭mc的代码的话,我们也也用了呃,相应的这个与我们的npc名字呢进行一个观点,那么我们先啊封装一下啊,打开这个商店的,那么打开商店这个代码的话,嗯。

我们可以把它单单独的成分啊,也可以的把它关联到我们的这个怪物列表里面,它实际上应该与我们的这个外部列表的话应该有一些关系啊,只是我们没有去深入的分析,那么理论上我们通过这个对象的一些成员函数来操作呢。

它应当来说也能够实现同样的这个目的啊,好的,那么我们先添加相应的代码,那么这里的话我们当时呢实际上我们打开n p c对话的时候,它掉了这个np c对象里面加四这个地方的函数。

那么实际上我们在关闭npc的时候,可能也会调用这个函数,但是这节课呢我们先不分析这一类的数据啊,我们先把我们已经分析好的数据了,做一个封装测试,然后我们再封装一下,关闭npc对话的。

好复制一下上面的代码,可以在上边的代码的基础上进行相应的修改,那么关闭mp 4对话的代码,复制一下,好的我们编译生成一下,对了这里呢我们还需要来定义一个相应的变量啊,在这个地方啊。

这一段局部变量的一个定义了,把它复制过来,哈哈哈哈,好的,这个时候呢生成成功啊,成功之后呢,我们还需要来进行一个代码了,一个封装在主线层单元,在这这个地方,好的,那么我们先定义这两个函数。

一个是打开这个商店的,一个是关闭npc的,那么在这里呢我们也需要来定义两个相应的这个啊,可,那么另外一个呢是关闭商店啊,是通过这个npc的这个名字,那么这个呢是打开我们npc对话的。

我们在他的基础上呢呃进行修改,首先是打开商店,那么另外一个呢是关闭我们的npc对话,然后我们再转到主线程单元,添加对这两个消息的一个,嗯,那么这里面应该是关闭npc的,转到npc的定义。

这里玩b n p c,然后在这里呢我们在呃调用相应的这个函数,这里呢都是npc的名字,仅在上面的这个基础上进行修改,复制这一行的代码,然后在这里呢我们改为这个close啊。

fpp这对方通过他的一个这个名字好的,那么我们再次测试的时候呢,我们调用一下嗯,新定义的这两个函数来进行一下测试,打开npc,打开商店,打开我们的关闭我们的这个商店啊。

这三个函数呢我们再进行相应的一个测试,等着,那么现在的话在这里的话,实际上我们的npc的名字呢呃没有利用起来啊,这个时候我们在调用这个相应的这个库的时候,这个是为我们后边呢预留一个相关的一个接口。

在这个地方,那么后边的话我们如果还是按照这种啊发送数据包的方式,来实现这个npc的打开的话,那么我们可以建立一个开始结构啊,那么不同的npc的话,那么我们进行一个名字的一个判断。

然后呢我们给它在这里呢缓冲区的数据来给它填充不同的这个数据嗯,那么我们具体的实现呢可能要要在后边一些的课,程好的,我们再次进行一下相关的测试,再重新编译型,挂接到主线程,然后打开mp c打开商店。

然后是关掉我们的pc对话,好的,那么我们中间的话,这个时候呢我们就只差我们的卖出这个商品啊,还有这个买入我们的需要5g的这个商品,也就是差差这一个步骤啊,那么关闭商店和关闭n p c对话呢。

它实际上是疫情,关闭分批次对话的时候就关闭了这个商店,第六部就欺负了它是同一个不成,那么基本上我们所要这个功能的话,基本上已经完成了,那么还有呢就是我们这个在出售物品,我这个购买物品的时候。

他也需要一个呃循环啊,需要一个循环,那么还有呢这里也布置一个作业啊,大家可以下去尝试进行一下分析,看不通过我们的这个发送这个封包的这个形式,通过另外一种形式。

也就是调用我们的这个对象里面的成员函数的形式,看能不能够实现我们这个对话的关闭呃,以及我们这个商店呢要打开啊,好的,那么这个呢只是可以进行一下尝试,不一定可以的。

但是有很大的可能是可以通过我们的这个成员函数,传递不同的参数的形式呢来打开一个n p c对话,我一个打开m p c呃,这个菜单,那么如果在这种形式能够实现的话,我们的这个风中这个函数的时候呢。

那么更加的方便一些啊,行那么我们所用的代码的量的话会更少一些,好的那么我们下一节课再见,这节课呢我们就讨论到这个地方,那么还有一个做了呢,也就是把我们相关的这个今天的这个代码,我们可以把它添加到。

这个为什么补剂里面把开商店,我关闭这个商店。

那么这个呢是在我们的挂机单元里面,那么实际上我们在设计的时候呢,我们可以把在这之前呢还可以加上一个条件的一个判断,看一下是不是啊,呼吸条件是否成立,那么不成立的话,我们就直接来,那么我们就直接去看。

直接就反了,那么后面呢我们就可以啊,不用执行,也就是说我们到时候呢只需要在我们的这个挂机搬运里边了,直接调用这个函数啊进行补剂就行了,那么这个函数内部呢它自动啊形成这个条件的一个检测,好的。

那么我们下一节课再见。

P91:102-完善回城补给功能GoToCityForSupply - 教到你会 - BV1DS4y1n7qF

大家好,我是郁金香老师,那么这节课呢我们继续来完善回城补剂的这个函数,那么我们先打开第101课的代码。

然后我们转到挂机类,转到回城补给的这个函数,那么打开商店这个呢我们之前呢在上一节课已经完成了这个函数,那么我们在这里添加这个功能,然后关闭商店这个函数我们之前也有呃,封装这个功能直接调用。

关闭商店和关闭npc的话是一个功能,我们直接添添加在这后边就可以了,那么最后呢是我们返回啊,直接调用这个函数呃,完成了前面的功能之后呢,我们直接调用返回就可以了。

当然在这里呢我们需要来一个时间的一个间隔,那么我们给它呃0。1秒的时间来反应,或者是0。5秒的时间呢,让他来响应我们的这个关闭的兑换的这个窗口,那么前边的他这里呢。

我们同样的给他预留一段时间来进行相应动作的一个响应,好的,那么最后呢我们又返回到以前的这个坐标就可以了,那么关键这里呢是我们要补剂的这个药品啊,也就是要购买的这个药品。

那么我们看一下全局变量单元有关于商店的,那么这里呢我们购买相应的这个物品,那么需要购买这个物品的名字呢,我们在呃这个相应的参数里边呢,呃应当是有,那么也就是这个名字啊,但是呢之前的话。

我们并没有给这个参数来进行一个相应的一个初始化啊,所以说在这里的话我们先呢直接的啊输入这个物品的名字,就是精通要小,那么在这里呢它所用的这个hp药品的名字呢是给我们预留了一个接口。

到时候我们在窗口界面的时候嗯,传入这个参数,当然我们测试的时候呢,现在这个参数呢他用不着啊,那么我们再来看一下,好的,我们先编译生成一下,那么这里呢我们在复制这个变量的时候呢。

把它写成了这个结构的名字啊,那么我们把它修改一下,那么还有一个药品的一个数量,那么在这里呢我们也直接啊直接传入这个药品的一个数量啊,先做一个测试,好的。

那么我们打开游戏呢来进行相应的测试。

那么在测试之前的话,我们还需要给它加上一个条件的一个判断啊,那么我们先看一下呃,现在的一个金创药是金疮药,小的是三个啊,它的总量的话大概是347个啊,那么我们就可以对它的总量来进行一个判断。

现在的一个技巧347,那么我们就要保证它的金疮药的一个数量保持在,比如说是要保证它的这个数量呢在400以上,那么在这里呢我们可以做一个条件的一个判断,当然这个条件判断的话,我们也也可以写成一个函数。

啊就是说是否需要记得这个函数,那么我们直接写在这里面,那么这里的话我们已经有一个相应的这个函数了,但是呢这个初始值呢他们并没有跟他呃初始化这相应的这个数值。

那么我们先把这个函数呢先添加到我们的回城补记里边,那么如果这个普及的条件成立的话,我们就要执行下边的一个代码,那么如果不成立的时候啊,我们就返回,但是呢这里边所用的这些呃,我们所用的这些数量的话。

它的都是未初始化的,比如说我们的最小值最大值,那么这些数字的话我们需要来,现在的话我们可以在它的一个呃构造函数里边呢先进行一个初始化啊,也就是这个地方,那么我们看一下我们有哪些参数将会用到。

我们先把它复制出来,那么现在我们所涉及到的呢,也就是全部是hp的这这一部分药品嘛,那么也就是这四个数字会不会用到,我们把它复制一下,那么首先呢是否需要补剂啊,这个呢我们测试的时候的话肯定要设设置为啊。

真那么低于此值的时候呢,我们回程补给,那么这个数字为了方便测试的话,我们肯定要大于它的一个当前的一个数值啊,也就是一个总量的话,也就是这个数字的话是300这样子啊,基于这个数字或者是340。

能把他340或者是330都可以把它设置稍微大一点,那么最大的一个数值的一个保有量,我们把它设置为400这里,那么需要补剂的这个名字的话,这里呢我们那就可以不进行设置了,因为在这后边的话。

我们直接是传的金创药小,当然如果是要初始化的话,我们也可以把它直接嗯初始化为精重要小,那么这里呢我们就改成了这个成员变量,那么我们再来检测一下啊,那么这是补习条件的一个判断,再转到这个函数里边。

那么同样的这里呢我们还有一个地方也需要初始化,因为这里呢对我们的最小的这个数值呢也进行了一个判断,那么我们看现在的一个hp的一个数量,那么这个数量的话,我们为了测试方便呢,我们可以把它设置小一点啊。

也就是相当于越过这个条件,那么我们把hp啊这个mp的这个物品呢也进行一下初始化,那么最大我们要保持一个数值的话,这里呢我们先设置为100啊,这里好的,我们再检测一下我们的这个逻辑的一个思路啊。

那么在这里呢当小于这个数值的时候呢,呃hp的药品总量小于330的时候呢,将会成补给啊,补计满400这个数字,那么也就是说它真正的补剂的一个数量,这个精装要小的话,我们需要的是一个差值。

这里这里的话我们需要定义一个变量啊,把它算出来,那么或者是直接传入呃这个相关的一个数据,那么你这就是我们前面的这个变量,来减掉我们当前的那所拥有的这个hp药品的一个总量。

那我们来看一下前面的这个相关数值,也就是这个最大的这个数值减去当前的这个值啊,就是我们要购买的这个金创药的这个数量,那么这个呢是我们当前hp药品的一个总量,按ctrl加减号来,我们退回来。

啊to在这个地方,那么这两个相减的一个数值呢,就是我们要记得这个数量。

嘟嘟嘟嘟好。

那么我们只需要购买这么多数量呢,最后呢我们hp药品的总量的话呃,就是400个好的,我们再编译生成影响,那么这段代码的话,我们需要添加在什么什么地方呢,那么我们需要把它添加在自动挂机的代码里面。

也就是这个回调函数的一点,那么这里呢是一个定点打怪的一个范围的一个检测啊,那么我们需要呃是一个循环的话,我们需要来加在他的一个同步来完成,啊啊,那么实际上这个定轨定点打怪的话。

这里的话我们也可以把它呃进行一些修改,那么我们再ctrl减号退回来,我们看一下,那么这是一个范围的一个判断,那么在这里的话我们可以把它简单的写一下,这里有一个寻路的相关的。

那么在这里的话我们可以把它进行简化啊,这一段代码呢我们把它去掉,那么直接那我们转到这个呃限定范围的定点,这个我们叫做近点,打破了,没办法,那么直接我们在这个函数里边呢啊给它封装这样的一个功能。

那么当它超出这个范围的时候,也就是说这个距离大于这个范围的时候呢,我们就在这个地方啊,呃给他来一个寻路啊,群落到某一个地点,就考虑,好的,我们再次申请一下代码,然后我们看一下我们的调试的一个位置。

输入到游戏里边啊,进行测试,挂机主线程,然后呢,我们寝室外挂,然后呢我们开始挂机,我们看一下,那么这个时候呢我们的这个数量的话要小于某一个数值呢,它才会回程的条件,回程补给的这个条件呢才会达成。

我们再来看一下我们回城补齐的一个条件,那么低于330的时候呢,才会呃回程进行一个补给,那么这个时候呢我们可以来使用一下这些药品,让它的总总量呢到达330以下,那么这个时候是39相应的这个数量。

那么我们可以看到这个时候的话可以看到这个小地图的呃,这个角色的话它就在往回城的这个方向呢啊进行一个寻路,但是呢这个时候呢角色它被卡住了,可能是我由于我们中间呢有人为的在干净率在操作这个嗯。

这操作是个外挂啊,所以说呢超神呢他寻路的过程当中呢被抢救了,那么我们再次编译一下,重新注入一下。

那么我们看一下调试信息,那么我们再把这个代码来进行进一步的一些修改哈,呃添加我们的调试信息进去,那么现在呢我们是这个寻路的时候呢,出现了这个问题啊,因为没有没有寻路到我们指定的这个地理嗯。

我们再来看一下嗯回城补剂的代码,那么我们把这个相应的被卡住的这个时间呢,我们进行一个调整,那么如果是30秒没有到达指定的这个地点的话,呃我们就就是说就返回就说了,这个地方人被卡住了啊。

那么在前面呢我们也输出一段调试信息,我们看它执行到了什么地方啊,主要是来判断,那么在这里的话我们这种测试的话,它需要在寻路的时候呢,因为它寻路之后就进入到这个循环里面了,所以说在进入循环里面的时候的话。

我们测试的时候呢不能够去动这个鼠标,那么如果我们要去让他反复的寻路的话,我们就应该把这个寻路的这个库啊,加在这个循环的里边啊,夹在这个循环的里边,或者是加在这个位置,让他反复的往一个地方跑。

那么这个时候的话就应该是在反复的在进行群殴,然后呢他开始进行一个返回,返回到我们相应的一个地址,当然这个地址的话也就是我们之前的所在的这个地址,而不是我们打怪的这个地址,好的。

我们再次把我们的嗯这个外挂来卸载掉,再退出来,那么重新找一个地方来进行一个测试,好那么我们就在这个地方进行一个测试,重新啊再次注入我们的代码。

嗯这个时候呢我们需要呢嗯改动一下它的这个数量啊,这个条件我们需要改动一下,因为现在的这个数量的话已经有400块了,嗯在这里的话我们把它的这个条件改动一下,不然的话我们要浪费掉很多的药品。

那么这里呢我们把它设置为390个总量,那么低于这个数值的时候呢,就回城补剂,啊,那么这个时候呢它也会反复的寻路看一下,啊因为这附近的怪物呢比较少,好的我们再使用一下这个物品。

那么这个时候呢呃物品的总量的话就是小于我们的390个了,我们可以在这个小地图上面能看到它,它就在往平时指的这个方向呢在移动,那么我们看一下,但是在这个地方呢它被卡住了啊,被卡住了之后,然后呢超时了。

超时之后呢,他就回到了原有的这个地址,那么是寻路失败了,在前面这个地方,那么这可能是我们设置的这个时间呢,呃太短了,也就是我们卡住的这个时间太短了,那么我们再把它的这个卡住的时间设置长一点。

那我们再转到回程补给这里,查看一下我们的坐标是否正确,那么在这里呢我们呢也打印出相应的x坐标和y坐标,嗯,那我们再来看一下,输入之后呢,我们挂接到主线程显示外挂,然后呢获得当前的坐标嗯。

在这里来开始开始挂机,那么这个时候呢,他会发现了这个药品的数量低于了我们所要所要保持的这个数量啊,最低数量,所以说它呃回城正确的话,应该跑到平时指这个地方呢去补充药品,但是他在寻路的过程当中呢。

被卡在了这个地方,那么这个时候呢成功的补充了这个17个这个金创药,然后呢开始原路的返回,那么返回到这个地点去啊,这是他之前我们保存的这个地点,然后呢应该是继续的开始嗯,寻路完成,开始打怪。

但是我们看一下现在的药品的一个数量,这个时候呢已经是400个啊,这个药品,那么他就应该是退出我们的这个寻路系统啊,但是现在呢还在继续的进行一个寻路,那么可能是我们的这个距离的话,计算呢出现了一些问题。

好的,那么我们这节课呢我们暂时来进行到这里,那么下一节课呢我们再来纠正这节课的一些错误,好的。

P92:103-解决寻路问题,完善回城补给功能GoToCityForSupply - 教到你会 - BV1DS4y1n7qF

大家好,我是郁金香老师,那么这节课呢,我们主要主要来解决这个寻路道的这个,函数的这个问题,那么上一节课我们在测试这个g啊,回城g的这个函数,go to s was plan,呃。

那么测试这个函数的时候呢,我们发现了它不能够到达我们的目的地,那么应该是这个寻路到的这个函数呢,出了相应的这个问题,那么我们先打开第102课的代码,我们先单独的测试一下这两个函数。

那么首先呢我们移到测试窗口上,添加一个按钮,那么另外呢添加两个坐标啊,我们看一下啊,通过这个寻路到,它能不能够到达我们的目的地坐标,然后在这里呢我们添加一个变量,整形或者是浮点型就可以。

然后在这里呢我们添加去录到的这个代码,首先把我们窗口的数据更新到我们,我们的变量里面,然后调用这个寻路道,那么这里的调试信息呢,我们也把它写详细一点啊,看是什么原因,它是由于这个距离呢,还是我们的坐标。

还是我们本身这个函数的呃,写写法有一些问题,那么我们把它相距的距离呢也打印出来,那么这是距离,那么还有还有两个坐标哈,我们看一下这两个坐标呢,当前的这两个坐标的话是佛点类型的,那么在这里的话。

我们需要用宝典类型呢来格式化,好的,那么我们先编译一下,那么在初始化的时候呢,我们看一下之前的这个平时指的坐标,我们把它调过来。

那么在这个位置呢,是这两个变量的x坐标和y坐标,的一个初始化,那么在这里呢我们写上它的值,797191,2737190,好的,我们再次编译一下,嗯调试查看啊,这个调试信息查看器,我们查看一下。

设置一下调试目录,首先我们挂接到主线层,然后呢我们点这个寻路道,我们先看一下它输出的一些信息,那么这个时候呢我们的距离在变化在变化,说明的话它在寻路,那么这个时候的话,我们的寻路呢它是成功的啊。

那么我们到游戏里面看一下,这个时候呢他跑到了平时直接个位置啊,那么我们在另外啊把它移动远一点,另外移动到一个位置的时候,等一会儿我们再来看,好的,那么这个时候呢我们让它停下来啊,停下来之后呢。

我们再次调用我们的寻路道,看一下它的一个流程,那么这个时候呢距离呢也在不断的减少,然后在这个地方的话应当是被卡住了,距离呢就没有减少,就没有检测了,一直被卡住,那么我们来看一下呃游戏当中的一个情况。

那么这里也有一个障碍物啊,它被这个障碍物呢给卡住掉了哈,卡掉了,那么这个时候呢一直处在这个循环当中啊,所以说这里呢嗯这个我们的测试窗口呢,它也被嗯也停止这个响应了,因为一直处在这个循环当中的。

它才会吐出来,我们来看一下,啊这个时候呢寻路失败哈,要60秒之后呢,他才会退出来,好的,那么我们先把这个代码呢取消掉啊,现在叫掉这个主线程,然后退出嗯,那么这个时候呢,我们在测试这个扩的时候呢。

我们发现这个小地图上,它没有显示这个路径,那么我们想办法把这个路径呢,也就是这个红色的这个小点呢,把它显示出来,那么这个小小点的话应该是有一个标记,可能就在这个寻路货的这个附近,嗯,那么我们用og呢啊。

附加一下。

先找找一下这个红色的小点呢,这个坐标啊,路径的啊,帮助我们分析,那么我们首先看一下它的这个呃,就是我们的这个安全路径,对不对,那么我们先找到这个屏幕的库,这个位置,搜索一下。

那么我们看一下这个扩的地址的话,它是通过我们的人物角色来计算出来的啊,取两次,然后再加上一个偏移四,那么我们看一下这是人物角色的机制,再按ctrl减号哈,退回来。

前四这个位置,那么也就是这个括,我们在反馈汇编窗口里边跟随,也就是转到这个地址,然后我们在这里下断,但是呢这个库来调用的地方呢非常的多,下段之后呢。

他马上就会断下,嗯所以说这个时候呢,我们需要下一个条件断点,那么我们看一下它的一个断下的一个条件。

我们就根据这两个参数来,那么这个参数的话是e s p加四这个地方,而这个猜出来e s p加八,那么这里呢是usp加0c,那么我们就在这两个位置了,下一个条件断点,那么下最终的结果呢就是e s p加四。

要等于我们的1x31 f,那么并且呢另外一个条件也要达成,usp加零碎,这里要等于我们的x54 ,好的,我们把这个条件的复制一下,然后呢我们再次啊点这个小地图,那么这个时候呢。

我们会调用这个相应的寻路控,我们从这里返回,那么这里的话应该就是在这个寻路廓里边,啊,啊临近的这个地方,我们三in f这里啊,那么我们在这里下一个断点,那么这里下断点的话,就能够保证它不会反复的被断下。

但是呢我们在寻路的时候呢,它会断下,那么在这里边我们在它的前面来找一下,有没有这样的一个标志啊,呃也就是写了这个一般这种标志的话是呃,零或者是一这一类的,或者是其他的调用或啊这一类的,也有可能。

我们仔细的找一下,那么找的话我们找一下目录指令,注意一下写入的像某个机子里面写入的,那么这里呢都是读取数据啊,这一段这里有一个写入的,但是呢呃这一类写入的话,它是一个局部的一个变量啊。

我们不管它再往前面来看啊,这里也是一个局部的变量,这次读取读取,那么只有这个地方呢写入的写入的地方呢,我们给他标记一下,等会我们来查看,还有这个地方呢它也写入了数据,啊这里是读取的啊,另外呢这个地方。

那么这里有代码呢也是写了一个字节的,那么像这种一个字节的话,可能它的可能性要大一些,因为我们零和一的话,他用一个字节来表示就够了啊,而且这里的话有一个目录啊,1b x为一。

那么也就是说我们的b l的它为一了啊,这个地方的话,那么我们首先来测试一下这个地方,那么再让它跑起来,那么进入到游戏里面,我们来看一下呃,首先查一下,现在e s i加上228这个位置的数值。

那么现在是零,那么下面呢就是我们的寻路扩啊,在寻路的过程当中呢,它马上就会值一了啊,这个市场我们可以看到啊,这个时候寻路的一个变化,它被质疑,那么在寻路过程当中呢,这个地方呢可能都是一。

但是他马上就到达这个地方,那么我们再来看一下看,由于我们把这个群众,那么我们先来测试一下,我们可以这样测试,在这里呢我们弄不掉这一句,那么local这一句的话,也就是说,他不会往我们这个地址里面写入一。

那么也就是说我们巡逻的时候的话,如果是正确的话,那么这个时候呢我们的这个红色的小点,这个路径的话就不会在小地图上显示,那么我们再把下边的断点取消掉,那么这个时候我们来看一下,这个时候呢。

小小地图上的这个安全路径呢就没有了啊,好的我们把这个弄出来恢复恢复一下,那么说明这个地方的话,就是我们的安全路径,或者叫安全路线啊,嗯嗯,好的我们把这一段复制一下,做一个特制码,这里是寻路。

哈哈那么理论上来说的话,这一段的话都与我们的寻路相关的。

那么前面这两个扩呢,可能也有一些相关的功能,但我们只要这些关键的这些数据,那么呃得到了这个安全路线的这个呃,标记之后呢,我们还需要来对es si这个数字来进行查找,找一下它的一个机制的一个来源。

那么我们最方便的话还是用我们的c来讲,这个数据。

那么我们再次在这个地方断下,或者我们往前找一下呃,有没有看一下这个e si的来源,如果用o d找不到的话,我们再用c一来找,那么我们看一下前边有没有对yes si,这个数据进行显著的。

我们发现了它来源于e c x,那么再往上找一下来源于e s i,那么再往前走,它又来源于上一次的那e4 x,那么我们再往前走,那么这里呢他再一次的这个1e x呢,来源于我们上一层的这个参数。

这个地方我们可以看到,那么再从这里来访问,那么返回的话也就是这个ex,那么这个一二来来源于e s i,那么这里的话,我们就找到这个所有对象里面去了啊,呃31416640,这个的话应该是我们的所有对象。

找到这个对象数组里面去了啊,所以说这样的话我们找不到啊,通过我们这个o d的方法的话,就找到这个要需要去骗你这个对象,我们才能够获得,还要做一些属性的判断,那么我们通过c一来找一下,看有没有呃。

其他地方保存了这个机制,那么按减号退回一步,在这里下一个断点,好再让它断向,那么我们看一下现在e si的这个数值,我们把它复制出来,看一下另外的地方有没有保存,我们的所要的这个机子。

那么这个呢就是我们刚才所找到的,应该是所有对象数组的地方,我们可以尝试一下,搜一下这个3116670,3116670,那么当然这个时候呢我们找不到啊,那么找不到的话,说明的话。

这个呢不是我们所要的真实的一个机制,那么我们直接从后边的这些数字里面来找,那么这个地方呢,我们可以先对它下一个断点,看一下有什么地方呢对它进行了访问的,我找到另外的一个偏移,那么这个时候呢我们看一下啊。

他在这个位置呢会断一下,我们再把ea x的数值呢复制出来,那么这个时候呢我们找到第二个偏移,就是298,这个偏移,好298啊,这里有一个,好的,那么我们把这个偏移了删掉,这里298,那么在这里的话。

我们实际上我们就找到了他的一个机制,e4 x呢,它来源于我们的f8840 这个地方,可这下面的是e4 x加上298啊,在这个地方断一下,好的我们注释一下啊,而且这个机子的话我们应当也有录像啊。

把他先让他跑起来。

这个58840的话,我们看在这个起始单元里面有没有这里啊,这里也就是我们的f一到f 10的这个call的,一个e c x的一个这个参数,快捷栏的时候呢,要传递的这个参数呢,就是这个机制,好的。

那么我们把这个机子呢,添加到我们的寻路库里面啊,就也就是说把这个安全的路线呢,标记出来了,他的一个路径啊,寻路的一个路径的标示出来,那么再次转到我们的许诺库里,嗯嗯,嗯,那么在这个位置呢。

我们应当向他写入这个数字一啊,只切如一字节就可以了。

好的,那么我们再移到游戏里面看一下,现在我们群众回去,那么我们可以看到它标记的路径的话,应当是正确的,这个时候我们看一下调试信息,在这里的话,那这个能够移动的距离大概是十啊,距离是大概是10左右,分数。

那么这个时候呢没有被卡住哈,继续的在移动,让它让它跑快一点,那么现在的话我们可以看到它也可以呃,移动到这个地方,但是有可能呢也也会被卡住,那么我们再来看一下我们的询问,那么像这这一类的话。

需要很多的时间呢去做这个测试好的,那么我们再次调用这个,再次调用这个寻路的空啊来进行测试,再来看一下我们的调试信息,那么这个时候呢再次被卡住了哈,再次被卡在了这个地方啊,说明这个地方呢它总容易被卡住。

距离还有37的时候,我们看一下,那么这里呢也有一个障碍物呢,把它挡住了啊,所以呢所以说这卡在了这个地方,那么像这种问题的话,我们呢嗯可以了,呃一个是可以用穿墙的功能来解决,第二个我们可以试一下嗯。

可以试一下,把这个函数来单独的来测试一下哈,有可能是我们这个函数封装的一个,写法的问题,那么也可能是我们的这个寻路的这个过程,它本身就有可能被卡住,好的我们再次单独的测一下,现在卸载掉我们的主线程。

再添加一个按钮,嗯,那么这个海这个按钮里边呢,我们直接调用这个寻路的函数,那么我们看一下,直接调用这个屏幕的函数会不会被卡住。

我们看一下我们的这个动态链接库来,这个时候我们又可以卸载干净,再重新把它卸载一下,好的,那么我们再次输入,那么这个时候呢我们再次来挂接主线层,来看一下我们的调试信息嗯,看一下直接调用寻路。

那么这个时候呢直接调用群众之后呢,我们这里有没有这个调试信息的输出呢,这里看不到结果,我们只有进游戏里边点查看,同样的被卡在了这里,那么如果我们站在这个地方的话,我们再来测试一下嗯。

也写上我们相应的这个调试信息,这里的话我们写这个调试信息的,不是很方便,要这个寻路到了,在这个循环里面呢,我们才才能够输出这种信息,那么在这里的话,我们最多呢能够输出一个坐标。

不能够检测它当前的一个距离啊,因为没有这个循环,那我们直接来直接在这里边测试查看,那么我们记住这个位置,看我们直接调用调用这个寻路道,会不会被卡住,那么寻路到的时候呢,在这个地方呢被卡住了。

那么被卡住之后的话,它只能够等待这个,卡住的这个时间到了之后呢,它有一个相应的一个提示,那么这个时间呢我们为了方便测试呢,我们现在把它改小一点,再看一下啊,60秒哈,还要等十多秒。

好那么这个时候他退出来了,我再重新退出一下,那么为了方便测试呢,我们这里呢只等待20年,那么现在我们要做的测试呢,是直接我们调用这个群众的货,看它嗯,也就是不用这个循用到的这个循环,看会不会被卡住。

那么我们再次走到这个位置,这个位置,然后我们点寻路,那么这个时候呢,它也会有一个安全的一个坐标记出来,然后呢他能够直接跑到这个位置,那么我们这个时候呢,我们再用寻路道在同一个位置做测试。

那么用寻路到的时候呢,我们发现了它卡在了这个位置,如果我们在这个地方用寻路的话,他不会啊又被卡住了,像这种情况被卡住的话,可也有可能是,我们多次调用这个屏幕的问题,群众示范退出。

那么我们再次把这个寻路的这个扩呢,把它移到这个外边来进行一个判断啊,那么只调用一次,不去循环的调用啊,我们再来做测试,卸载掉主线层,好再次测试,挂机到主线程,然后呢我们同样的跑在上一个地方啊。

这个地方呢上次被卡住了,那么我们再次用全力道来看一下,他绕了一个大弯子啊,最后到达了这个地方,那么可能是与我们多次调用,这个寻路的问题,如果是在这个循环里面的话,在这个位置位置呢,它就容易被卡住一点啊。

那么这样写的话,那就,容易被卡住,当然最终我们要解决问题的话,我们还是应当然,也就是说去掉这个障碍物啊,能够穿墙穿,穿过,穿透这这些障碍物的这个功能,分析出来的话,这个问题呢就能够彻底的解决,好的。

那么我们就是,就是说呃目前的这个测试的话,嗯就到这里,那么我们再把这个相应的功能呢,啊回城补给的这个功能来进行一下测试,看一下自动自动玩的这个单元哈,工程补剂,那么我们看一下现在的初始值是多少。

那么现在的话是不是要求是低于,390的时候呢,回城补给我们看一下里面的数值,那么现在的话加起来呢一共是400啊,400,那么我们另外找一个地方,去城外,把它慢慢到了城外之后呢。

我们在这里呢选择啊显示外挂,获取当前的一个坐标,在这里呢我们实实行这个挂机,然后呢我们再把相应的这个药品呢,让它低于这个390这个数值,那么这个时候的话我们发现的话,它会执行这个相应的这个寻路。

但是我们发现的话,它寻路呢呃也不能够到达这个目的地,那么许诺中,那么你在一个位置应当是被卡住了,310这个位置,当前坐标,但是这个目的地的坐标不对,我们可以看一下,这里的话它传入的坐标的话。

我们当时1399212嗯,那这个才是我们的目的地坐标,那么这个时候呢,他他写的这个目的地坐标呢呃是错的啊,所以说呢他不能就够这个笔记啊,我们从这里可以看出,那么我们卸载掉我们的主线程。

那么也就是说我们传入的坐标实际上错了,那么我们再来看一下我们的回城补给单元,但是我们这里的话应当是写的这个坐标啊,他应该是执行到到了这个地方,这里应该是返回我们的这个坐标地址。

我们再来看一下这个寻路到白云,因为20秒的这个距离,这个时间太短了哈,因为这个时候呢,我们是这里我们应当设置大一点这个数值,那么我们重新把,这个外挂啊,现在这样重新编译一下。

好那么我们这个时候来挂件属性值,显示外挂获取当前的坐标啊,然后呢我们开启我们的调试器,来查看一下应用设置,开始挂机,那么这个时候呢,我们发现了,他没有开始这个进行相应的一个群众,看一下吧。

这个时候呢他直接在打坏,那我们再来看一下,那么应当是这个判断的条件哈,可能是出了问题,按ctrl减号退回来,那么这里呢我们是条件不成立的时候呢,就返回,那么如果这里是返回的,是真的话。

那么在后面的数字呢才会被执行,我们再看一下,这是我们药品的一个总量,它小于这个指定的数值的时候,它的一个初始号,我们去看一下最小的这个数值,那么这里是390,再来看一下,这个时候呢它运行了一段时间之后。

好像是检测到了,那么我们看一下购买的这个药品,有没有成功,63个,65个恰好是390个,这是什么,因为它是低于这个数值,他应该是这个时候呢去选择了这个打官,在巡逻的时候呢,他就选择了一个npc啊。

所以说这个时候呢他被卡住了,因为呢他这个把这个npc当成,当成一个是怪物去的,上传了这个相应的怪物,那么我们先停止挂机,再来看一下,那么在在这里边的话,我们还应该呢,呃也就是说呢。

把他的这个选择的怪物人应该取消掉啊,不然的话这个技能的话,它在自动的放这个技能,所以说呢他要去打这个周围的这个怪物啊,那么在这里呢,我们首先呢是应该停止打怪啊,停止这个释放技能。

所以说在这个为什么补剂里面的话,如果条件成立了,我们还需要做一件事啊,也就是在进行寻路之前,我们还要就是说嗯选中怪物,这里呢要做一些,停止,旋转或者是清除首选怪物,那么我们看一下这里嗯。

打怪里面的话应该有一个选怪的,我们转转进去看一下,那么我们看一下选怪里面的选择怪物,那么这里呢选的是对象,那么这个时候的话,我们实际上是要去除这个选中的这个对象,那么我们需要来另外写一个函数啊。

在这里面,好的,那么我们在前面呢,需要先定义一下这个变量,word,那么现在我们把它复制为空,那么这个数值呢,我们再把它添加到这个日常处理里面的,好的,那么我们再次编译一下嗯。

这里呢我们需要添加一个头文件的一个说,明,还需要,那么这个是在人物角色里面,这里我们写错了,嗯嗯,好的,那么我们再次进行测试,那么化解主线层显示外挂呢,获取当前当前坐标,选一个有怪的地方,好。

那么这个时候呢,我们再一次打开我们的信息调试器啊,查看器,然后呢开始挂机,我们再看一下,那么这个时候呢没有被卡住,我们看这里的距离呢不断的在减少,这个是我们的目的地坐标哈,也是对的啊。

737要求平时几个坐标,那么这个时候呢我们,没有成功,那么这个时候可能已经买好了这个药品,那么我们可以到游戏里面来看一下,那么这里的话买了11个金创药小啊,那么好了之后呢。

又返回到我们的目的地进行这个挂机打怪,那么目前的测试的话应当是成功的啊,但是呢还有一些错误啊,这个时候呢他没有打怪,这个时候到了我们的目的地坐标之后,可能是离这个npc的距离太近了。

他把这个npc当成了这个怪物,所以说我们下一节课呢,我们还要写一个打怪的时候,我们要对mtc来进行一个判断,好的那么这个bug我们在下一节课再解决,这节课呢我们暂时就到这里,那么大家下去之后呢。

也可以尝试一下啊,解决这个bug,也就是我们在打怪里边呢,要加上一个怪物的npc的一个判断,那么如果是npc的话,我们就把它过滤掉啊,那么再加一个坐垫,打怪做那个pc好的,那么这节课呢我们就到这里。

P93:104-打怪过滤NPC - 教到你会 - BV1DS4y1n7qF

大家好,我是预期香老师,那么这一节课我们主要是分析出npc与怪物的区别啊,那么如果不能够分清n p c或与这个怪物的区别的话,那么我们在怪物的周围有这个n p c的时候,那么如果去攻击这个npc的话。

那么我们的呃这个辅助呢就不能够正常的工作,就会卡在这里好的,那么这节课呢我们嗯主要是先分析一下他们的区别,然后呢再去改动一下哈,自动选怪的啊,这这个函数在里边呢我们加上一个n p c的一个判断。

那么如果是npc的话,我们就要跳过它好的,那么我们打开o d请附加到游戏里面。

嗯,嗯那么然后呢。

我们,那么这是最新的哈这个公司啊,我们附近对象的这个公式包括了玩家npc以及怪物。

那么还有我们掉落在地上的物品,那么都在这个列表里面,那么这个的话加零八这个位置呢是三幺啊,表示的是玩家,那么我们再来看一下第二个,那么我们先找一个怪物,那么这个是怪物,那么我们看一下怪物的名字是多少。

这个是n p c啊,实际上呃我们是在城里边啊,这个是n p c,那么我们看一下n p c的过项属性里边嗯,先看一下呃,768这个位置现在不知道啊,我们先看一下怪物的血量,还有没有,零比四这句。

那么它的血量呢这个时候我们看到他的血量的话是32000比较大啊,但是这个时候呢它并不能够作为一个区分我们啊怪物与pc的一个区分。

那么我们再来看一下怪物等级。

这里,那么我们发现了这个地方呢怪物的等级来为零为零,那么我们再来看一下其他的地方,那么我们再来看一下,好那我们再来看一下呃,首先来看一下它的路径,这个呢也是一个怪物,那么我们来看一下怪物类型的。

那么我们来看一下它的名字,那么这也这也是一个npc的名字,那么我们来看一下它的血量和等级,那么这是它的血量也是比较大啊,3200,那么五比八这个位置,那么这个地方应该是它的等级啊,呃等级呢那是文明啊。

那么这里的话就可以做一个与我们呃怪物区分的一个偏移,那么怪怪物的等级的话肯定是大于零的,嗯n p c等于几呢,那么是等于零,嗯那么也也有可能这个偏移呢它已经发生了变化,这个呃我们这个对象的等级。

那么我们再跑到有怪物的地方来查看一下。

那么我们去这个被挖过的菜田,这里,好那么这里呢有一些野猪和这个黄牛,那么我们再来看一下这个地方的啊,怪物那么同样的,但是这个地方呢它怪物呢已经发生了变化啊,这个地方的话我们看一下320这个位置啊。

那么这个是野猪,那么我们再来看5。4,五比四,这里是他的血量是160,那么它的等级是12级,也就那么我们发现的话。

这个怪物等级的偏移呢,它是没有变化的,同样的视频平方,那么np设备等级的四零,那么通过这一点的话。

我们就可以做一个判断哈,那么如果怪物等级为零的话,我们就不选择他,他那么不选择他的话,那么最终呢它也不会攻击他,好的,我们打开第103课的代码,啊,好那么我们找到自动选怪这里。

那么这里呢他会选最近的怪啊,那么如果我们在这里呢需要再加上一个条件,如果怪物的等级为零的话,我们也需要跳过它啊啊,啊,那么这一项呢是它的等级,那么如果这个等级等于零,表明了是n p c。

那么我们就跳过一,那么继续来啊,进行下一个怪物的一个判断,嗯嗯嗯嗯嗯嗯嗯嗯嗯好的,那么我们重新编译一下,那么我们看一下现在他的这个刚好是400个啊,那么400个我们的回程补剂的要求的话是390个啊。

我们再改一下啊,进入挂机位子。

那么300 398个啊,我们低于这个数量的时候呢,就回城补剂,好那么我们注入一下啊,先把我们的o d来退出来,这样我们可以注入的速度呢可以快一些好。

那么输入进去之后呢,先挂接主线长,然后呢我们显示外挂或者当前的坐标,然后呢应用设置开始挂机,那么过去之后呢,我们这个时候呃使用一下这个金创药,让它的数量变少,那么变少了之后呢,我们可以看到啊。

还在继续的打断,好,那么这个时候我们可以从这个线路图里边可以看到他往这个npc,平时指这个地方呢进行了移动啊,五,那么这个时候呢他应当是回城去买这个相应的呃,药品去了,我们可以看一下这里的调试信息。

好那么这个时候呢他买到了这个药品,然后呢开始返回挂机的这个地点,好这个时候呢返回的吧,挂机地点的,返回到之后呢,再次它进行巡逻啊,看来是刚才的这个药品的话啊,没有买成功,我们看一下60。

那么这个药品的话,我们呢呃这个基本的过程呢我们已经ok了,但是呢就是买的过程当中呢啊没有成功,那么我们再来检测一下我们的代码,那么出现这种情况的话,肯定是我们这个补剂的这个函数呢啊出现了这个问题。

那么我们转到补给的这个函数里面,那么我们在这里哈是打开npc,打开商店嗯,然后呢再是我们从这里呢买这个药品,最后来关闭这个商店,那么我们来看一下它的这个相关的信息,那么在这里的话。

他根本就没有买这个药品的这个信息啊,那么我们再来检测一下我们的代码是什么地方出现了问题,那么这里的这个名字呢,我们可能呢呃我们再来看一下调试信息啊,这个时候调试信息呢已经被我们清掉了。

那么也就是这个物品的名字可能出现了错误,或者是这个物品的这个数量出现的错误,这是当前的这个数量,那么我们在这里呢打印出在购买的时候呢,我们打印出这个它的物品以及它的这个数量,2021061,哈哈哈。

当着,好的后面我们把药品的名字以及它的数量传递性能,那么我们看我们的参数是否传递到了这个位置,好再重新编译生成一下,那还有另外一种情况呢,也就是我们打开这个窗口的这个时间还不够长啊。

呃也就是说我们在这里呢,在我们打开商店之后,这个延迟的时间太太太少了,那么我们这里呢把它赏赐改为1000啊,1500,这里改为改为1500,那么可能是在这两个地方都有可能出现问题。

好的我们再次注入到游戏里面,然后我们挂接主线程显示外挂,获取当前的坐标啊,然后呢应用设置嗯,主要我们就来看一下调试信息啊,嗯开始挂机,那么这个时候呢应该是被卡住了,我们看一下。

那么我们自己跑跑到这个地方来看一下他能不能够购买成功,那么我们发现的话,这个时候呢他没有购买成功啊,这里的也是金窗,要小数量的话也对,那么是不是我们嗯已经购买的购买经创业的这个函数的机子。

是不是有了这个相应的这个变化,那么我们再来做一个单独的一个测试,嗯,而且这里的话我们应当是呃挂在主线程里面买买这个物品,嗯,应该是调用这里边购买物品的这个函数,你看有没有,那还要把这个函数的封装一下啊。

再退回,那么然后呢我们再转到这个主线程单元这里了,对吧,转到这里之后呢,我们再为它添加相应的代码,复制这段函数的说明,转到这个存放物品这个函数这里,那么这个函数的话看来也是没有定义。

那么我们就通过寻路的啊,这个函数呢在它的基础上进行一个修改啊,这一段代码复制一下,因为这段代码的话,它也是有两个参数,这里x y和y,那么这里呢我们传送呢嗯我们的物品名以及物品的数量这两个啊。

这里我们强制的把滤芯的把它转换一下,好然后呢我们把这里我们需要来另外注册一个消息的类型,那么这个类型呢我们按照这个顺序来设为九,然后复制一下这个红转到定义这里,那么我们把这个相应的参数传递进去。

当然这个变量名的话也可以改一下,也可以不改,那么我们这里就叫对体,可是,好了,我们再转到这个相应的课时去这里,在这里呢我们再调用这个商店里面的这个函数,然后呢我们再取出啊相应的这个数值,啊。

然后这里呢取出来的是它的这个数量啊,那么这里的话我们取出来呢,我们需要转换一下,把这个数值需要转换成我们的呃物品的名字类型,那么这里呢是下标一下标一好的,我们编译一下。

那么这里呢我们需要把它当成一个整体,还需要加上一层括号,那么才能够用这种数字的方式,当然为了更清晰的表达的话,可以借鉴这个寻路的这种方式,这种方式的话啊更简洁一些了,那么这里呢我们只讨论一下这种写法啊。

当然这种写法要难以理解一点啊,但是呢大家可以做一个参考,嗯,好成功之后呢,我们再次进行一下测试,看我们购买物品的这个货有没有问题,那么我们在这里呢也购买这个金创药箱。

那么在这里呢我们就把我们嗯这个自动啊p里面的这段代码,把它复制出来,你,啊,然后初始化这里我们把它的这个数据来看复制出来,那么这里呢我们购买,购买三个啊,作为一个城市,挂件主线程啊,然后呢我们呃打开。

看一下,然后呢我们购买清仓一下线,那么这个时候呢我们发现呢呃这个清创要小的话,他购买不了啊,再来看一下,那么说明是我们的这个函数呢,它本身出现了这个问题,那么我们再来看一下我们的代码。

但是这里的话他也没有出现相应的这个异常,购买精装要想呃执行到了这个地方,好,这里是路行啊,这里是塑料,然后呢这里也是看到一个类型,最后呢我们调用这个空,那么我们看一下这里的机子是否发生了这个变化。

那么我们再切换到我们的vs里面,首先来看一下4a6690 这个,生的代替,4a6691 f2077 ,这个零零,436690,那么这两个扩的话,从括来说的话都没有变化。

那么有可能出现的就是我们的这个参数呢,它发生了一些变化,可能是我们传入的这个参数呢不正确,那么我们在这个地方呢,嗯让它断下啊,我们分析一下这个参数,那么我们可以在这前面呢用一个message box。

好那么我们再重新编译一下,然后呢我们用ot啊附加进去看一下,然后我们下一个断点cp。

好那么注入成功的时候,我们挂接我们的主线程,然后呢呃这里呢购买我们的精装要小。

再来看一下调试信息,当然这个时候我们发现的话,我们的这个呃mebook呢,这里呢它并没有断下,就是这个地方它并没有断下,那么可能是我们的这个代码能需要重新编译,那么还有一种可能呢。

也就是这个货这里呢它并没有被执行到,也就是说我们的这个药品的名字可能错了啊,有可能是这种情况,嗯那么我们再退回来看一下,因为在这里的话,他需要查询这个名字,那么如果我们的名字呃在这里传送错了的话。

那么呃也会造成我们最终购买这个物品失败的金疮药小啊,然后我们再来看一下药店里的名字,金疮药,其经常要向看起来是没有错啊,嗯但是为什么我们就是说可能他是这里返回的这个数值呢,它等于零零啊。

那么我们再重新退出一下啊,现在掉我们的主线程,那么这个时候呢好像它是没有发送这个相应的这个数据包,我们把这个调试去了,直到下边这里了,那么打印出它的一个数值来看一下,好那么再重新编译一下。

嗯嗯。

好的,那么我们再次挂接我们的主线程,在清空调试信息,那么在使用我们的金创药嗯,我们看一下最后的数值,那么这里呢他最终呢我们的这个数字版,为什么最终是写的这个ut不值封印dex,那么使用了我们的精创。

要想,嗯传送的这个信息好像不对,这里对吧,这个时候呢我们发现呢它最终是没有查询到这个金疮药小的这个名字,在这个商店背包里面,那么所以说他最终返回了返回的这个数值呢是-1,嗯那么我们的错误的原因的话。

基本上已经找到了,那么我们再来看一下,那么我们看一下商店列表,现在它的机制是多少。

收藏一下吧,那么也就是这个机制,那么我们先来看一下它里边的这个名字,那么我们发现呢应当是这个机子的话他失失效了哈,也就是说呃这里边的话他找不到这个对象啊。

是这个机子的问题在这里。

白色固体你说过,那么我们先看一下这个机子。

先看一下最最底层,他的访问,啊,七八,再加四,再加上我们的410,那么这一片的话都是为零的啊,我们看一下是不是中间某一个地方出错了,再加一层括号试一下,那再加上c0 。

那么这些数字呢它也也不像是我们的对象。

呃那么我们既然找到了这个原因呢,那么下一节课呢我们再想办法来更新一下这个商店的一个机制,那么这个公式好的,那么这节课我们就到这里,那么我们下节课再见。

那么这节课的重量同样能力就是去啊更新这个商店列表的这个机制,嗯嗯嗯啊,好的。

P94:105-获取商店列表基址GetShopListBase - 教到你会 - BV1DS4y1n7qF

大家好,我是郁金香老师,那么这节课呢我们主要的呃来看一下我们啊商店列表的一个更新,呃,主要我们是用来获得某一个物品的一个呃对象的一个id啊,我们再来看一下104克里面的一个代码。

那么在我们结构单元里面的一个函数,哎,那么也就是在这个商店列表里面呢,我们要查询这个物品啊,要来查询这个物品栏是否存在,然后再返回它的一个呃,具体的一个,那么我们再来看一下对于这个函数的一个调用。

在购买物品的时候啊,在这里呢它需要的一些呃数值。

那么现在我们要做的呢也就是要嗯找到一种方式哈,就是说要获得一个准确的这个这前面的这一段啊,也就是我们的呃商店的一个列表的一个机制,但是我们上一节课通过这个公式来计算的话,他有时候呢会偏离不出来哈。

这个相应的机制它会偏离出来的这个数据来是为为零的啊,那么我们先看一下这个公式。

继续,那么当时这个时候我们用这个公式呢,它又可以了,那么上一节课的话,我们用这个公司呢,它不能够偏离出来,那么首先呢我们来看一下它的一些属性。

把它做一下记录,那么首先呢我们来看一下呃,他是怎么把我们在前面的这一段人嗯,怎么把它计算出来的啊,那么我们把这整个数据哈复制一下。

那么它最终的话计算的实际上是这个位置呢,是我们的一个相对的一个机制。

那么通过这个地址的话,加上一个我们后边的一个412,加上一个四啊,再加上我们的410,这样呢组成了组成我们的这个商店列表的一个公式。

那么我们来查找一下对这个地方来进行访问的一个数字,那么我们看一下现在一si的这个数字,也就是我们的f299 c啊,那在这里呢它通过了一个循环的来骗你,最终的这个e si的词呢,它不断的在这里。

它会不断的进行啊相加啊,相当于是在偏离这个数组,那么这个数组的大小呢可能就是这个0x1900 这么大,那我们再看另外一个地方,这个地方的话,因为它没有一些条件的一些判断,嗯加油,那么一个是分析这个代码。

从这个代码来看的话,它里面也没有一些就是说cao啊这样的一些的指令啊,最终把它取出来嗯,那么我们再来看一下,就是我们把先把这个商店来关掉,然后看一下他什么时候呢对我们里边的这个数字啊进行了访问。

嗯也就是这个数字,假设这个位置呢,因为这个数字它最终呢加上了410,我们看它是什么时候把它取出来的,在这里我们添加一个内存访问的断点,这里有个comple,那么这个时候我们先把它退出来。

先用c一来找一下,那么我们要找的话,应当是在我们打开商店的时候,他来访问的这个数字才对啊,那么我们先把这个数字来取出来,那么因为是这个数值,它加上410,这个偏移,然后加上了四乘以我们的下标。

这个地方呢就是我们的商店里的物品。

那么所以说我们现在呢需要找这个对象的一个来源,当然,那么我们主要是找一些条件看它是怎么判断啊,怎么把这个数字来取出来的啊,我们因为这个公司的话,之前呢实际上我们已经做过相应的这个分析了。

因为这个这个公司呢它不是很靠谱啊,嗯那么我们先用c要先把o d来退出来,先用c e来尝试一下,当然在这个所有对象列表里面呢,它也存在这个对象,实际上我们也可以偏离这个列表呃,来实现啊。

也就是我们最新的这个所有对象机制的话,也就是这个数值了640这个数字,但是呢我们如果是要偏偏离这个对象列表来实现的话,我们就需要了他的一些属性来做判断啊,当然我们先试一下其他的地方能不能够找到。

那么这里有很多的列表,我们先看一下,那么我们打开商店的时候啊,那么打开商店的时候没有访问的话,这个地方呢它是有访问的,有一个比较的一个指令,那么我们再看一下。

但是这个时候呢它不是在我们打开商店的时候访问题,那么这个地址的话,我们可以把它删除掉,好我们先把这里面所有的地址来都添加进来,那么这个地方的话也是呢我们看一下,也是在我们打开商店的时候,他们有这个反应。

应当来说的话,我们打开商店的时候呢,它会去访问这个地方,而且只访问一次啊,那么所以说这个地址的话也不是的,我们再继续找一下,那么而且好像每个代码都是在这个地址进行的访问,我们先把它复制下来。

再打开一下商店,那么这里呢他没有这个技术呢,它没有马上增加,所以说这个的话可能性也比较小,那么也删掉,那我再继续下一个地址,那么都是同一个地方在这里访问的,我们看有没有其他的地方就给它删掉。

那么这个的话根本就没有反应啊,最后呢他也是转到了这个地方,那么继续看一下下边,那么这个呢也删掉,删掉,那我们找一下后面的这些数字来看一下,那么这个的话看着的话可能有点像打开的一瞬间的话。

很多地方都访问到这个地址,但是呢他访问的次数比较多啊,有一个22c的这样一个,这样的一个地址e d i,那我们看一下现在e d i的数值是多少,又是另外一个数值,那么我们先把这个数字来啊,复制一下。

等会可能可能能够用得上,好的把这个删掉,然后呢再对这个地方呢下一个断点,然后再打开我们的商店,但是呢这里呢没有反应,也就是说没有访问到这个地方删掉,那么这里呢我们,打开商店啊,那么从这里来看的话。

这个呢可能是我们所有对象列表里面的这个数据,他在不停地在偏离这个地方,那么这个呢也删掉,那么再来看一下这个这个对象列表啊,这个对象那么同样的是断在了同一个地方去比较,那么我们就把它关掉,那我随便选一个。

再看一下吧,这个呢没有反应,怎么删掉,这个访问的地方过多哈,我们也把它删掉,这个是断在了同一个地址,我们之前啊分析的很多很多的数据呢都断在一个相同的代码,那么在这一大片我们看到它断的了。

都是在626a39 这个位置啊,那么这这种的话可能我们看一下这些,其实地址呢也都差不多,那么可能能够分析出其他机子我偏移的可能性呢也是比较小的,那么我们先尝试一下刚才这个可能性较大的这一个。

那么我们看一下它的e d i的数值是多少,那么我们来搜一下这个对象,看能不能够找到另外一个机制或偏移指向我们的这个商店列表,311,那么我们看一下311开始,那么311开始的应该是所有对象数组。

那么所以说这个呢机子呢我们又不用考虑,而一七开始的呢是我们的堆栈里面的一个数据,从这里呢我们也不需要考虑,那么我们来看一下后面的这一串数字,看能不能找到另外的机子,好的我们打开一下商店列表。

那么这个时候呢我们从第一个来这里能够找到一个二八的一个偏移,那么我们也把它做出来,那么同样的一dx的数字呢,我们需要复制出来,那么我们继续从这里找吧,之前是e d i。

我们需要这里可以看到这个e s p e bp开始是从一七开始的,所以说刚才的这两个数据呢,我们不需要,然后关掉我们的商店,那么这个数据呢可能是一个比较重要的数据。

然后呢我们再从一dx看能不能够找到对它进行访问,那么这个时候呢也是有一个311开始问的,那么这里我们取名为一,或者说我们以他之前的一个偏移来一名,也就是22c的这个偏移啊,找到了e d i的一个数字。

那么我们这里呢因为2c,好那么这些新的对象呢,我们再次给它添加进来,那么这些对象呢也比较多啊,然后我们再找一下对这个对象的一个访问,打开一下商店,那么没有访问的呢,我们先做一个标记。

那么我们每一段地址呢,我们都可以做一个标记,进行一下尝试,你看一下它的,dx,那么这个呢又跑到了另外的一个数组里面去啊,这样找的话也比较复杂哈,那么我们再找一下其他的也没有,简单一点的。

能不能够直接找出这个偏移的,那么这一串的地址呢都是从1a开始的,我们找一个不同的它的可能性呢可能要大一些,啊这里呢又跑到了我们的66a39 这个对象里面去了,再看一下这个地方。

那么全部都跑到了这个循环里面去啊,那么所以说我们用这种查找机制的办法的话,可能呢就除了我们之前这里分析的这个机制,可能还有一些作用之外,也就是我们的之前分析的这个机制了,有一些作用之外呢。

那么现在的这个呢可能它没有太大的一个作用,那么所以说的话我们得另外想办办法来获得这个商店对象的这个机制,也就是我们的1030,这个78这个数字,好的,这个是时候呢游戏呢它被卡掉了啊,死掉了。

那么我们重新打开一下游戏。

那么重新打开游戏之后呢,我们用d来附加到游戏里面。

那么既然我们不能够直接找到这个偏移呃,我这个机子的话,那么我们可以通过它现有的这个列表呢,可以进行一个偏离,但是要加上某一些条件的一个判断来判断它,就是我们的这个相应的一个机制。

那么我们再次打开我们的商店列表。

来看一下我们的这个公式。

那当然这个时候呢它又可以用啊,嗯那么可以用的时候呢,我们就直接用这个公式,那么如果如果这个公式它在嗯在偏离出错的时候呢,我们另外再准备一个预备的一个方案,那么我们可以这样做哈。

可以来直接的从这个下标来开始进行一个偏离,那么偏离了我们需要一些条件,那么它的条件呢我们可以这样来判断,比如说这个商店里面的第一个是这个精通要小,那么我们就来看一下它能不能够取出第一个物品。

那么第一个物品是不是我们的精创要小啊,可以做这一类的一个判断,那么或者我们可以通过呃,因为不同的npc的话,可能它出色的在第一个商店里面的这个商品呢,它可能不一样,比如说换一个n p c。

他可能第一个药品呢不是青春要小,那么我们还可以通过他的一个嗯类型来做一个判断,也就是说不是五色的这个偏移,我们看一下它其它的一个偏移,那么我们可以通过加八这个啊它的一个类型要判断呢。

它是1a1 a1 a呢代表它是一个嗯物品,加零八这个偏移我们进行判断,那么在这里判断呢,我们就需要判断它是否这个数值呢,是不是等于0x1 a那么如果是商店里面的物品的话,那么这里呢他是。

因为那么我们看一下,如果是背包里边的话,它会是什么情况,我们也可以看一下,two two two two two。

那么我们再来看一下背包里面的一个最新的一个机制。

嗯,那么我们发现了这个地方呢,它也会是1a啊,那么我们来找一下他们之间有没有一些区别啊,这个背包里面的,我们把这个金创药小也放到第一个,看起相同的物品之间,他们有没有什么区别,这两个都是轻松要想。

那么它有一个区别的话,我相信呢可能会在数量这个上边啊。

因为背包里面的这个数量的话,它肯定不一样,那么我们看一下244这个地方。

加240,这是背包里面的啊,现在好像是变成了444,那么这是金创药小,那么有59个它的一个数量。

那么这里的变化了是c40 。

那么我们再来看一下,这里面的cs 4。

那么我们可以看到它这里的数量的话是f f啊,也就是-1,那么数量这里的话它不一样,那么我们在这里下一个断点,看看有没有相应的这个访问这一类,啊这里呢它也有一个cs 4,也有一个相应的一个判断。

证明他也是有这个偏移,有这个属性的,那么还他还有一个c48 ,这两个呢都为-1,那么我们可以做一个条件的一个判断。

那么如果是商店的话,cs是这个来这里要点一,上面是38,也就是等于-1,还有48这个地方是为-1,那么我们可以就可以通过这前面的一个条件,这里来等于1a啊,这两个地方呢等于-1啊。

那么我们可以通过这两个数据来进行一些判断,当然另外的可能呢还有就是我们的一个所属的一个关系,这个对象的,那么这个需要大量的时间可能去分析一下,也就是说嗯可能还有另外的一个属性。

用来表示这个对象究竟是我们商店里面的,还是我们背包里边的,还是在我们地面上啊,它可能有一个相相关的一个标志来进行一个区别。

当然这个时候呢需要仔细地对这个属性呢去进行一个分析啊,比较才可以,那么我们通过现有的这些数据的话,也可以来我们进行一些区别,当然那么这一串里面呢我们还可以把它复制出来进行一下比较。

看看还能不能够找到一些其他引用的数据,那么这是背包里面的。

啊啊刚才的是商店里面,那么这个呢是我们背包里面。

那么我们看一下第一个竖起来都是一样的啊,当然这个t呢不一样,灵异,这里是一,那么28这个位置还不一样,日c这几个位置好像是它的一个坐标,还有这两个位置呢它不一样,三八和3c这个地方。

四在这个地方呢是一样的,那么试试这个地方呢就是我们物品的一个i d啊,就是说一个分类的一个编号。

它的类型呢肯定是一样的,在这。

那么好的,我们有了现在这些条件的话,实际上我们已经可以写一个函数来进行偏离,然后获得我们的一个嗯这个商店列表的一个机制,那么我们再另外写一个函数,用来获取我们的这个商店列表的一个机制。

那么我们先打开第104课的代码,我们看一下在他的基础上,我们进行怎么进行一个优化修改。

那么我们结构单元转到我们的商店,这个单元做补,那么首先呢我们再添加一个函数在这里,dio,那么这个函数呢我们就用来获取这个商店的一个机制,觉得,那么我们所说的这个商店列表机制。

也就是这一段哈公式里面的一个数字,好复制一下,然后转到我们的这个相关的成员函数的前面,在这里呢我们,我们来添加它相应的代码,那么这里呢我们也需要一个循环啊,一个循环的来骗你。

他当然在后边这个家事呢我们都可以啊,不需要了啊,我们只需要偏离这里给他数据,但是呢这个我们也要参照这个公式来,那么也就是这个啊相应的一个公司来进行一个偏离,那么我们首先来看一下。

首先我们也需要一个for循环,那么因为它的这个坐标的话,都是在210这个附近呢进行一个变化啊,那么在这里呢我们把它写稍微写大一点啊,当然这个具体的数值呢我们需要了进行一个尝试啊。

那么我们暂时把它写为310,或者是我们这样啊,这里的为21比加嗯,一般,那么它的起始数值呢我们等于x2 经理啊,简易反应,也就是说我们向前向后啊来进行一个搜索,i加加啊,那么这是它一个相应的一个下标。

然后呢我们开始了对它进行一个偏离,那么首先我们是要取出这里面的一个数值啊,这个公式的一个数值,那么我们来看一下它相关的一个机制,商店的,那么另外我们在定义一个指针啊,用于指向这个嗯这里面的这个对象,啊。

啊,好那么这是最新的一个机制,那么这个机制呢我们需要来呃来加上一个i乘以四,那么因为这里呢它这个加四呢我们就可以了把它省略掉了啊,省略掉的话,这里应该是211211。

那么这里我们也可以把它改变向是体积啊,这个公司呢就可以这样的进行一个简化,那么这样的话我们就能够取出里边的这个对象啊,那么取出这个对象之后呢,我们嗯需要来进行一个判断。

判断它最终是不是指向着我们的一个商店列表啊,需要做这样一个判断,那么首先呢我们需要把里面的这个数字来读取出来,那么在这里呢我们需要进行一个类型的转化,那么先把它转换成指针的类型。

那么最终呢我们在前面加上一个星号啊,表示了读出里面的这个地址,那么读出来之后啊,我们可以呢在这里呢还有一个加四啊,那么呢我们也可以在他的基础上进行加四,加四,那玩家加四之后呢,我们需要做一个判断啊。

嗯再次把它读取出来,或者我们这个加四的话,也可以在后边这里来实现,然后我们读出这个数值,这个数字读出来之后呢,我们需要做一个判断,判断它是否为空啊,如果里边取出来的对象是为空的话。

那么我们继续来下一个循环啊,那么如果不为空的话,那么我们接着啊进行一个判断,那么我们现在呢已经把这前面这一段了,已经把读取出来啊,已经读取出来了,这里一个括号,两个两个括号啊,这前面呢也是两个括号。

您当然已经是把这前面一段啊都已经读取出来了,那么读取出来之后呢,这个时候呢我们就需要加上410啊,来取出这个商店里面的列表里边的一个对象,410应该是加上嗯,这里呢四乘以一个数字下标,看一下啊。

i s e4 啊,并且读出了相应的一个数据啊,也就是那如果正常情况下的话,它可能就是它的一个机制,但是我们要判断啊究竟是不是,那么是不是的话,我们可以通过商店列表的一些属性加八这个位置。

加50这个位置看能不能够读取出来啊,如果不能够读取出来的话,可能它相应的位置呢就是提,那么我们再加上一个410,首先呢它加上一个0x410 ,那么再加上一个相应的一个物品的一个下标。

当然这里呢我们实际上我们不需要下标,只需要取他的第一个,也就是四神一平,但是这个四神一民呢我们可以省略掉啊,但是在这里为了呃一个可读性呢,我们把它加上去第一个商店列表第一,那么我们先取出这个数据。

那么取出来看一下,看一下这个对象呢是否为也是需要进行一个判断,再次的判断,那么也就是前面这一句啊,再次进行判断,看它是否为零,啊如果为零的话,也继续了下一次循环,那么如果不为零的话,我们就分别取出呃。

加8+5 c加八和加c44 这两个地方呢进行比较啊,那么在这里呢我们另外的定义的变量就达到了,那么一个是我们的类型位置type,这个呢用来表示我们加八这个位置它的一个类型。

另外一个呢用来表示它的一个数量,再定义一个变量,拉普那么也赋值为,首先呢我们复制为零,那么首先呢呃在这里的话,如果这个数值不为空的话,我们就可以尝试取它的一个类型和数量出来啊。

但是呢实际上这些必有关于指针的操作的话,都有可能的出现异常啊,那么如果是出现了异常的话,我们也进行需要进行一个相应的处理,哈哈那么进行的异常的话,我们就继续来下一次循环就可以。

当然这里呢我们也可以打印出一些调试信息啊,二,好那么如果是正常的情况下的话,我们就接着取它的类型和数量,类型呢是加八这个位置,当时好像是定义了一个对象类型的一个偏移的一个红利,啊这里加八这个位置。

那么我们取出它的一个类型,然后来做一个判断啊,另外呢我们需要来去除它的一个数量,啊,那么这里呢我们也可以定义一个相应的一个红啊,物品的一个数量的,那么我们就到前面来进行一个红的一个定义。

或者是物品对象的,数量,在ctrl减号啊,退回了,好那么我们在这里呢加一个判断,那么如果我们的这个对象类型,那么等于0x1 a也就是表示的是物品,那么这当然这里的话我们也可以了嗯,做一个红的一个定义啊。

表示它是一个物品,在这里我们也把它定义为题,嗯,那么另外呢还有一个条件呢,也就是它的一个数量,这里呢我们要等于的是-1或者是0x的f f这个数字,那么如果这两个条件都达成的话。

呃我们就返回这个对象的一个地址,啊这是取出的物品的对象,不是他的机制,他的机制在,在这个地方我们需要对它的一个机制来进行一个保存,你倒是这样来写的,这是它的一个相应的一个机制,那么如果这两个都相等的话。

在这里呢我们就直接返回嗯这个机制,当然如果是执行到最后的话,这里呢我们就返回空啊,就表示了没有找到这个相应的机制啊,获取失败了,那么我们先编译生成一项,那这里呢我们少了一个新号,那么我们就再检测一下啊。

先把这个数字呢我们打印出来看一下,那么我们获取的这个数值是否正确的,先测试一下,在主线程单元看一下,测试一这里。

好的,那么我们注入一下我们的游戏啊,进行一下相应的测试。

不可能。

这,首先挂机我们的主线程啊测试呃,最终得到的机子呢是这个19f,b6918 ,那么我们看一下嗯,这个对象是否正确,那么因为还有另外一种情况,他也可能会偏离到这个机子,有可能是偏离到了我们的仓库。

或者是偏离到了我们的背包,它也可能会存在这样的对象,那么我们先来看一下啊,背包应该是不可能,因为我背包里面没有这个数量,那么因为我们仓库里面的这个物品的话也是有数量的,那么可能会偏离到我们的仓库里面。

那么我们在附加到游戏里面。

好的,那么我们再用之前的公式来查看一下。

那么也就是410前边这一部分,这几个点,918,那么我们看一下我们所找到的这个地方,也是一九fb 6918,一九fb 6918,196169678,那么这个地址呢加上我们的410,这大概就是这个地方了。

再加上40米,我们的下标i,再加上c。

金疮要小,金疮要重,经常要大啊,人生嗯,那么基本上的话是正确的哈,嗯好的,那么我们接下来呢我们再进行嗯,再把我们的这个机子呢把它利用起来,对我们的这个商店啊,相关的这个函数来进行修改。

嗯嗯嗯嗯第一个我们就是购买物品。

即可能我们需要进行一个修改,by gods blame,这个,那么在这里的话它有一个偏离,还有一个get dirty的话,也应当有一个它的一个初始化,我们也需要主要是它的一个初始化,我们需要来进行一个。

修改它的一个机制,也就是这个公式啊,这里它的一个相应的一个base,那么这个这个base的话,我们就需要通过这个函数,该提到题了,用的这个函数来替代它,来完成,好的,那么我们接下来呢,恢复一下主线程。

然后呢我们退出,那么我们再来看一下我们可不可以购买这个相应的这个物品,那么这里有一个购买精装要小的,我们继续用它来做一个测试,卸载掉主线程了,突出,重新再申请一下,好再次注入,那么我们看一下啊。

现在精装要小59个挂机主线产购买精装要小,那么我们发现这个时候呢他依然没有反应,我们看一下,结果呢他这里返回的结果的话依然是-1,说明我们还是有一些问题,那我们再来看一下,异常了啊,这个时候呢我们的。

或许这个机制失败了啊,这个时候,那我们再来看一下相应的代码,那么刚才我们县里的时候的话,这个数字都是正确的,来我们看一下刚才是怎么确定,啊刚才是测试一这里我们看一下测试一这里。

那么当时测试一这里它是正确的,那为什么这个购买精装要小,这里它会出现异常,哦他有出现几次异常,但是最后他返回了这个机子的接口的话是正确的,那么它的有出现异常的话。

说明我们的条件的一个判断的话还不是很准确哈,那么我们再来看一下我们的代码,购买金疮药行还是没有查询到指定的这个物品,那么我们把这个范围缩小一点,前后呢我们嗯这个十个对象啊进行一个偏离。

卸载掉我们的主线程,那么可能是这个范围过大,从,还有我们再来看一下购买的物品,这个题desplay啊,再来看一下这,那么因为我们在调用的时候就已经初始化了,这一句话是可以不要的。

但是我们现在的话还没有发现这个代码什么地方有出现错误,嗯,给体的题,再转到它的初始化函数里面去看一下,那么在这里呢我们显示一下它相关的一个获取的一个机体,是否对正确的。

对了这里呢他还再次把这个机子加了四啊,最后呢这里呢再加上了一个410,那么在这里的话,实际上我们应该是forest cobase呢,应当等于我们的这个机制,好像是这样才对,那么我们再转进去看一下。

商店列表的机制啊,应该是410之前的这个,但是这一步呢我们就要省略掉这一步,我们需要省略掉,那么这样的话应当才不会出错啊,好的,那么我们继续来再进行一下测试。

那么我们这里的话它取得的是这前面这一段的一个数值,那么也就是说这个加时啊,这里的话他用不着再次加上这个四,直接加上这个410就可以了,好那么我们再重新编译一下,好挂机到主线程,然后我们再来看一下。

购买清仓,要想,这个时候呢还是没有正确,那么这个时候我们返回的下标的话已经是正确的,这里异常的话,我们可以不管它,这个时候他返回的它相应的下标是正确的,那么我们看一下呃,接下来输出应该是出错在什么地方。

那么这里呢他返回了它相应的一个下标,10%,百分之d,sd,好像是这这段代码它并没有被执行到,我们再来看一下,购买情况下写,那么它执执行到这个i估值不令,哦是执行到这里了,它产生了一个异常。

但是这段代码它也没有被执行到啊,这很奇怪,直接就跳到了我们的下边的这个异常,这里啊对啊,这里他是被执行到的,这前面这一段呢就是我们的这个调试语句打印出来的这个代码啊,然后呢执行到下边的时候呢。

这里面出现了这个异常,那么这个异常的话可能是我们的这个库呃引起的一个相应的一个异常,但这个扩的话,它里边呢它也有相应的一个处理,那么这里有个message box。

但是呢呃这个时候好像他没有执行到这个message box这个地方,那么我们再次按ctrl减号退回来,那么如果是出现异常的话,我们看一下是什么地方最可能出现,那么这里呢也打印出来一个调试信息。

那么这一段的话都没有对我们的相应的指针进行一个读取,一,那么这里是数组下标的零的一个读取,那我们再看一下调试信息,这里输入输出的话也是正常的,我们再次把汽车掉主线程,再检查一下这段代码。

这里肯定是不会被执行的,然后是执行到这个下边的时候呢,才出现了一个异常,但是这里呢它并没有被执行到,那么就产生了一个异常,如果这句被执行到的话。

它就会显示我们的这里面的这个message box会被显示出来,那么我们在前边呢再加上一些调试去,那么我们这个时候呢可以这样来做啊,这里面加上一个一,那么我们看某年去调试一句没有被打印出来的话。

说明的是相应的地方呢出现了异常,那么这里的话一般是不可能出现异常啊,那么等会儿我们可以看到它执行了几个一,或者在这里呢给他编一个号码,那么我们就知道一个异常的一个位置,那么再重新申请一下。

那么这也是我们诊断错误的一种方法,好的,那么我们再次挂一些主线层,再用调试查看器查看一下,那么我们可以看到是1234啊,嗯都有执行,那么异常的话证明是在这里在这个框里面啊,产生对这个异常。

那么很有可能就是我们的这个地方产生的异常,那么我们把这个message book注释掉,好的,那么我们呢再次来卸载掉我们的主线程,再重新申请一下。

当时我们用这个message box呢是为了在这里有一个断点,让它会断一下,因为我们看一下出错的话,只可能是呃在这个地方突出,因为这里的话它另外的加了异常处理,如果是在这里报了异常的话,应该是在这里报。

或者是这一段好的,那么我们看一下还有没有错误的化解主线成嗯,然后我们再来看一下游戏里边嗯购买情况要想啊,这个时候呢呃能够正常的购买吗,好的,那么这节课呢我们就到这里了,那么我们下一节课了啊,再见,嗯。

那么这里呢我们需要再加上一个判断啊,他就会呃这里的异常呢就会被忽略掉啊,因为这个对象呢他读出来也有可能为空的时候,这前面的这个对象好的。

P95:106-回城补给功能测试-添加补给选项卡界面 - 教到你会 - BV1DS4y1n7qF

我是郁金香老师,那么首先呢我们测试一下回城补剂的一个功能啊,上一节课呢我们嗯对回声补剂的一些功能来进行了修改,并且我们修正了我们商店列表的机子,那么首先我们先测试一下。

那么我们首先看一下它的一个数量哈,需要记得这个条件,那么我们看一下游戏里面,现在现在是418,那么在这里的话,我们需要来,回程普及的一个数值的话,这里呢我们需要把它设大一点,410。

那么这里呢我们7042030是要帮我们需要使用哈,八个这个相应的hp的这个药品啊,那么它才会回神器补剂,好的我们再次申请一下,那么首先呢我们挂接主线成,然后获取当前的一个坐标。

我们看一下周围有没有怪物嗯,有这个怪物存在,那么我们应用一下设置,开始挂机,然后呢我们在这里来使用一下相应的这个物品,按f,那么再算一下f5 ,那么这个时候呢我们看到它的这个路径的话已经形成了。

也就是要回到城里边去买这个东西,那么我们打开我们的这个调试信息查看器,我们看一下,那么这个时候呢他购买了七个金创药啊,呃然后返回我们的挂机地点,二,一,好的,那么我们来看一下现在我们的人物角色在做什么。

那么现在呢他已经在开始了嗯打怪,那么并且呢这里呢是在统计我们的这个药品做一个相应的一个判断,在这里的话我们能够看到他购买了这个七个金创药啊,那么说明我们的这个g功能的话,基本上嗯是可以了啊。

那么这节课呢我们为这个补剂的的这个功能呢,添加一个专门的一个页面啊,用来设置我们混成补剂的一些参数啊,那么我们先停止挂机,卸载掉主线程退出来,那么我们现在的这些接口的话。

也就是我们的这个呃i t哈里边的笔记的相关的这些成员变量,那么这些成员变量的值的话,我们要需要一个窗口来来做一个设置的一个接口,就像我们之前的啊挂机这个选项一样,那么比如说我们在挂机的哈。

这里的话也有很多很多的数字,我们通过一个窗口的设置,那么最终呢实际上也是改变这个呃录音里面的一些成员变量啊,比如说我们的定点的坐标,还有我们的是否定点打怪,还有我们的这个呃滴血保护啊。

这一类的都在这个挂机选项卡里面呢可以设置,那么今天呢我们就是要添加一个补剂的几个选项卡,那么在这里呢我们首先可以插插入一个这个窗口,那么在这里呢更改一下它的i d,super line啊统计。

那么另外呢我们可以啊改变一下窗口的一些大小,还有窗口的样式啊,呃让它是没有边框的啊,这种样式好的,我们保存一下,那么首先呢我们看一下我们需要提供哪些接口,那么第一个的话肯定是两个浮选框啊。

那么复选框控件呢用于呃选择是否我们要回城补给啊,比如说我们的这个mp药品的数量低于某个数字的时候,或者是hp药品低于某个数字的时候好的,那么我们首先呢添加两个复选框啊,那么这个时候可以按住控制键啊。

拖动鼠标啊,这个时候呢就有两个,然后呢我们把它左对齐,那么这里我们可以设置为hp,药品数量低于,那么这个呢是mp药品数量低于某个数值,那么具体的低于某个数字呢,我们可以在这里加上一个编辑框。

就是低于某个数的时候,那么低于某个数的时候呢,我们就什么呢,就回城补剂,那我也按住控制键啊,再拖拖出一个这个窗口,那么顶端对齐啊,再给你选择,好那么后边呢我们添加一个静态的文本。

那么当这个hp药品的数量低于这个数值的时候呢,我们就是应当是要回城补剂,那么要回程补剂的这个物品的话,在这里呢我们改变一下它的设置,那么之前我们的一个设计的话是单独的啊。

需要补剂的这个mp的药品或者是这个mp的药品呢进行了一个复制,而形成了一个成员变量,但是我们还要考虑到他可能还要去其他的,比如说我们的啊回城符或者是其他的一些呃。

这个比如说还有我们弓箭手要记得弓箭这一类的,那么所以说在这里呢我们用一个控件来给它添加一个补剂的列表,那么在这里呢我们添加一个list box,那么在添加这个misty boss之前呢。

在这里呢我们给它添加一个主控件,那么这里呢我们给它,设置为啊对了,他的ip我们需要给他改过,那么在这里呢我们设置为它系列表啊,或者是设置设置为武器啊,那么里边我们再添加一个武器的一个列表。

那么普及列表这边呢我们再给它添加一些要补剂的内容,那么回去补气的时候,由于n p c不同呢,他店里面的物品也不同,那么如果是回程补气弓箭的话,我们就是要去这个地图里边啊。

这个刀剑鞘这个商店七上店的名气补剂,而药品我回城符这类的需要在这个平时指这里补记得,那么还有可能要在其他这个n p c这里补记其他的这个物品,那么所以说呢在这里呢我们呃设置几个补充的这个地点。

在这里我们也添加静态的文本,那么第一个呢我们是药店的,嗯,那么第二个地方呢,我们暂时把它呃属于这个武器,或者是仓库,我们也可以去的仓库取这个物品啊,那么我们暂时把它设置为仓库。

那么后边呢我们就是跟我们要记得这个物品的名字,那么也就是一些常用的这个物品,那么后边呢我们跟一个焊点添加,那么首先呢我们也让它左对齐啊,这个也是啊左对齐,那么添加后边的话还需要有一个数量。

那么数量呢我们也用一个编辑框来表示,好那么我们再次把它对齐,那么这里呢我们选择顶端对齐,那么这里我们同样的是顶端对齐,好的,那么接下来呢我们就是给他关联一个相应的一个变量,那么在关联这个变量之前呢。

我们需要来先把它添加一个类啊,不然的话我们是不能够添加这个呃相应变量的,那么在添加变量之前呢,我们把它的id呢啊也做一下相应的这个修改,嗯嗯,不知道,哈,好的,那么还有这里呢是相应的一个数量啊,一品。

那么接下来呢我们就是给他关联一个相应的变量,但是在关联这个变量之前的话,我们需要来先给它建立一个类,要添加一个类,那么这里呢我们创建一个g的这个类,然后点完成,那么完成之后呢。

我们再跟他关联这个相应的一个变量,那么首先是hp药品的这个啊,那么我们看一下这个观点的话,应当是关联我们的这个呃相应的成员变量的这个啊前面,那么我们在这里呢添加相应的一个变量,那么选数值类型。

那么成员变量呢我们以m开头,那么第二个成员变量呢,我们是这个mp的啊,那么这里也是选数字类型,乘用变量以小写的m开头嗯,这个完成,那么这里是不记得一个呃最低的一个数量,那么它关联了数字的这个数字。

那么低于辞职的时候呢,将会成补气,选数值类型,那么在这里呢我们选d word啊,这个类型,那么回程补给的这个数值的话啊,嗯那么这个数字的话我们也可以不要了,嗯这个数字呢我们可以再添加在这个位置啊。

np啊,药店里面啊,那么这两个我们可以呢在下一节课呢进行一些修改了,那么接下来的话还有我们的这个回城补给的这个药品的名字嗯,那么这个呢我们也可以把它注释掉啊,做一些修改,那么在下一课的时候。

因为这这些呢我们都是通过啊这两个控件来完成,然后往里面添加的这个物品,那么所有的这个物品的名字和数量呢将添加到这个列表里边啊,到时候我们要另外的写一个结构啊,来获得相应的这个药品的名字和数量。

那么在这里呢我们需要对它进行一些初始化啊,嗯这个仓库的这里呢我们暂时用不到啊,那么我们就以这个药店里面的这个药品为例,那么比如说我们需要这些药品,那么它的初始化呢我们可以放在它有一个个体这一项。

那么另外排序这里我们称为fast,然后这里面代替我们添加这些初始化的一些数字,那么比如说我们仓库里边,我们要去取的是这些回城符是什么,那么我们举个例子,在这里呢我们也给它进行一个初始化,对,好的。

那么在这里呢我们也关联一下啊,相应的成员变量,那么这里呢我们表示控件啊c t l,那么这个控件的话,它是用来补给我们的啊,这个物品的一个列表,嗯,或者是这个呢我们写的是商店的药店,就。

那么这个呢是仓库的,破图,那么在这里的话我们也是关联的是数量哈,第二段飞行,这里添加一个相应的一个变量,数值是jo的类型,那么这个呢是仓库的就可,好那么这些添加完了之后呢,我们嗯在这里添加的时候呢。

我们将把这些相关的这个数据的药物,这是要补记得这个药品的名字,那么这里是要普及药品的一个数量嗯,那么添加在我们的这个补剂列表里边,我们进去看一下,那么这是我们相应的一些数值,它的一个初始化。

那么我们可以在这里呢输入一个初始化的一个数值,那么这个我们初始化为一,我们看一下啊,这个是我们要添加的这个物品,那么这里是要回城5g的一个最小的一个数值,那么这里呢我们初始化为102 10。

那么接下来呢我们在这里呢把这两个数据呢,添加到我们的这个列表里边去,在这里呢添加我们相应的一个代码,那么首先呢我们可以用一个sister来获取,我们这个combbox里面的一个数据,哈哈哈,对对对。

那么这里呢它是一个序号,那么这个序号呢就是我们选中的这个序号,我们选择,也就是说它当前的一个选中的一个数值,然后后边呢我们可以用,就是我们之前申请的这个变量来获取一个相应的一个数值,他选择的这个数值。

那么这里呢我们可以把它格式化了,那么首先呢这个我们是去药店,那么去药店买什么呢,我们就是前面啊选中的这个物品,要去买的这个物品,那么后边呢是他要买的这个数量,那么数量的话我们,来吧没问题。

那么也就是去商店购买物品的这个数量,那么大致就是这样的呃,但是这个数量的话我们需要来首先呢update从窗口的这个数据呢,把它更新到我们的变量里面啊,然后把它添加进去好,那么这次我们要添加的这个字串。

然后我们把这个字串来添加到列表,那么我们再来看一下它的一个成员变量,那么还有一个成员变量呢,我们没有添加,啊也就是这里我们还需要添加一个变量,嗯,那么最后呢我们把这个我们要添加到这个药品的一个信息呢。

添加到这个列表里面去,还有一个成员变量a d d c string啊,然后呢是t r t h好的,那么我们先编译编译一下,那么这个页面存在了之后呢。

我们还需要来把这个页面呢显示到我们的这个选项卡里面去啊,那么这个时候呢我们需要在我们的这个主选项卡上面呢,添加我们的相应的一个代码,那么首先呢我们在初始化里面啊,初始化我们相关的一个数据。

那么在这之前呢,我们需要了到他的这个头文件里边呢,嗯添加一个相应的一个成员变量,那么首先呢我们包含这个新的图文件,那么这是我们的挂机选项卡,那我们再来看一下它的这个绿的一个名字,什么还sl就是大写的。

然后呢这里呢我们添加一个相应的成员变量更清啊,那么这是我们的武器全参考,那么我们再转到初始化单元,那么我们可以在前面的基础上呢啊复制一下,那我把这前面这段代码复制一下,我们进行一下修改。

那么这是我们记得成员变量,进行替换,那么同样的这里呢也是记得先拍几下面,那么它的i d我们传送进去,那么这里呢我们设置为七,那么这里的序号呢我们设置为一,那么这里的工作我们做完之后呢。

我们还需要呢在这个选项卡的啊,选项卡的动作里面呢添加这个相应的代码,那么如果,开始的时候我们显示某一个数值,那么这个时候呢是嗯看一下最先这里,那么这个的话我们最先呢我们还是显示这个挂机的这个选项看看。

那么在这里的话单击这个选项和选项卡一的时候呢,我们这个是fly武器的选项卡呢,我们先把它引进你,跳,那么在班级这个选项卡日的时候呢,我们在这里显示他,好的,那么大致就是这样子,我们再次编辑一下。

然后就用,那么我们显示一下外挂啊,呃点击一下补给的这个选项卡,那么这个时候呢它的大小呢我们还需要进行一些调整啊,那么这里我们还没有添加相应的这个代码,好的,那么这里呢就是我们回城补给的一个数量。

当然这个呢我们还得另外写一个函数来解析这个字串里面的这些信息,那么一个是我们要回去购买的物品名和这个物品的数量,因为这是字符串类型的,到时候我们还要专门写一个函数呢。

把里边的这个相应的信息和物品名和这个物品的数量,那么提取之后呢存放到一个结构里面,那么另外还有这里呢它的一个数字呢没有进行一个初始化,那么我们还有一些要改动的,那么我们来看一下,那么首先是界面。

我们要改动一下它的一个大小,然后我们改变这个选项卡的一个大小啊,它就能够呃相应的改变它的一个大小,那么再次移到普及的这个选项卡上边,嗯那么我们看一下还有一个数值呢,嗯这里有一个数字呢。

我们没有对它进行一个初始化,那么我们首先看一下它有没有关联一个相应的一个变量,那么这个数字呢我们还没有给他管理一个相应的一个变量,这是当我们的m p的这个药品低于某一个数值的时候。

那么呢我们要回身进行一个补给,好那么我们来看一下mp的这个药品,那么这里是mp的这个药品,那么我们也是当它的数值来低于逆时的时候呢,才回城补给啊,这是一个默认的一个数值,那么再回到头文件查看一下。

那么还有一个数字呢,我们在这里呢,嗯这里这两个数字好像没有进行一个初始化,不能微信,我们再过来看一下,啊这里也有进行一个初始化,初始化呢都是零啊,这两个数字好的,我们再把这段出去复制一下。

那么我们再次编辑,嗯那我们再来看一下普及的这个界面啊,那么这个列表呢我们还可以把它调整大一些嗯,那么这里呢我们也可以做一些调整啊,那么这里呢我们再把它调整小一点。

再来看一下。

啊这个坎普列列表框呢我们可以把它呃调整大一点,单击这个这个部分往下拉,那么这里也是我们往下拉一点,好的保存一下,那么这节课呢我们界面的设计呢暂时就到这里。

那么下一节课呢我们对这个回程补给的这个结构的一些成员变量呢,呃进行一下修改,还有这个补剂物品,这里我们需要把这个补剂的这个列表呢,呃把它同步到我们的这个成员函数里面,所以说我们还要添加一些成员啊。

那么这个大家下去了也可以做一个坐力啊,试一下,那么作者之一呢,我们就是要把这个列表框里面的这个数据哈提取出来,放到一个结构里面,那么就这个结结构的话,可以说有两个成员。

那么一个呢也就是我们要补贴的一个物品名,要把它提取出来,那么第二个呢应当是一个,d word类型的一个物品数量需要提取出来,那么这两个一个结构啊,那么这个呢我们应该是一个字符类型的。

那么大概呢是这样的一个结构啊,一个结构列表,那么具体的我们下一节课呢再设计,那么这个列表里面的一个数据,这我们看一下它的一个名字。

好。

P96:107-容器vector的使用,为补给页面添加代码 - 教到你会 - BV1DS4y1n7qF

大家好,我是郁金香老师,那么这节课我们学习的目标呢一个是呃剩下家里面的总体的微课堂嗯,那么另外一个呢,我们就是把我们呃这个补剂选项卡里面的这个呃补给物品的列表呢,更新到我们的这个对象当中啊。

就是挂机类的这个对象当中,那么在这之前呢,我们需要来设计一个结构啊,那么这个结构呢也就是用来存放我们的物品啊,第一个我们是要普及的一个物品,那么第二个呢我们是要统计的一个数量啊。

那么第一个呢我们这个补剂的这个物品的话,去向来可以是仓库或者是药店,那么或者我们把它设置得更细一点啊,去某一个坐标点呃,某一个npc或者这里可以也可以是一个呃npc的一个名字啊,都是可以的啊。

嗯这个呢我们主要是能够通过呃这个关键,自然能够确定一个我们嗯补给的一个坐标,那么通过这个,那么第二个呢我们是要普及物品的一个名字啊,最后一个呢我们是不计数这个物品的这个数量。

那么我们首先打开106课的代码,那么我们先添加这些成员变量。

那么我们在在补剂这个选项卡这里呢有一个呃补贴的这个列表啊,就是我们通过这个药店呢添加进去的相关的一些信息啊,那么我们最后呢我们在呃泰国选项卡这里点应用设置的时候呢。

我们就要把这个数据呢要更新到我们的挂机柜里面,那么我们需要在挂机录这里来添加一些成员变量用来替换啊,一个是我们回城补贴的一个mp的药品一,以及我们这一个啊成员变量hp的药品名。

那么在这里呢我们用一个新的呃5g列表物物品,其他数据或者是列表来替代啊,它的一个功能啊,物品普及这个数组,那么这个数组呢也就是我们之前所说的呃,呃这个结构的一个类型啊。

那么我们先呢在前面呢添加这个结构的一个说明啊,这样写一个结构,然后我们再添加一个成员变量啊,这里呢我们回升股息相关的,那么这个呢也就是我们回程补剂的一个数组,那么这个数组呢它是一个动态的,是一个容器啊。

那么微课呢这个我们需要来包含一个它的一个图文件啊,那么有了这个图文件的支持了,我们才能够使用这个v k的,那么但是这个wk呢它需要一个命名空间的一个支持啊。

也就是这个using this space std用来限定它的一个就是匿名的一个空间啊,这个把它放在前边就可以了,在这个地方,那么在这里呢我们就定义了一个容器啊,也就是相当于一个动态的一个数组。

因为我们在这里的话,因为我们的普及列表呢它是不固定的啊,这种情况下呢,我们最好呢就用这个维克特来描述它,这样呢是一个动态的一个数组,当然我们也可以使用一个静态的一个这个补给的一个列表。

把它的数字呢设置较大一点也是可以的哈,那么这里我们用这个微课题来,主要也是呃对这个c加加一个容器的一个认识啊,好那么这里添加了这个相应的这个数组列表之后呢,我们接下来就要想办法把我们的这个补剂哈。

里面的这些呃信息要把它呃转化到我们的嗯这个动态数组里面啊,那么在这里呢我们可以编写如下的代码来实现,那么我们先把这段代码呢啊复制进去,我们一起来认识一下这段代码的一个功能。

那么首先我们转到哈应用设置这里啊,那么在这后边呢我们添加这个武器选项卡数据的一个定期,那么补给页面的一个数据盘,那么这里呢我们在前面呢还要定义一个啊字符数组,嗯然后这里呢我们还需要另外一个函数啊。

嗯需要了一个字符替代的一个函数,那么这个函数的功能我们说一下,先把它复制到它的一个前边,那么这个函数的功能呢也就是替换这个字符串里面的呃,先查找某一个字符,那么查找之后呢,然后把它替换成后边的这个字母。

那么比如说我们这里啊,他就是来找到这个函数里边,然后呢呃找到这个冒号,然后替换成这个结束的字符零,那么在这前边呢我们还需要呢再申请一个变量,啊啊这就是我们普及数组的这个结构啊。

在这前面呢我们有这个相应的定义,它包含三个项啊,前面两个是一个字符串,字符数组,后面一个是一个主机物品的一个数量,那么这里呢我们还需要来定义一个这个字符串的一个数据。

那么这个数组呢我们就是用来获得这个列表里面的一个字符串啊,在这里,那么首先我们是偏离整个,那么整个这个列表啊,笔记的一个列表,偏离这个列表,那么偏离列表我们从这个下标一下标零开始。

然后呢我们把偏离的这个字符串的数据呢把它存放到这个s z啊,ly这个变量里边啊,然后呢我们对这个字符串呢,因为这个字符串它的格式的话就会是药店啊,呃就会是这种格式啊,取出来它是一行一行的取出来。

那么取出来的话就可能呢是这个药店,然后呢是我们的药品名,比如说这里可能就是我们的金创药小,然后呢这里是他的要购买的一个数量,就是说要一,那么首先的话我们就是取出了这样一个字串,那么取出来之后呢。

我们需要把这几个数字呢要把它拆分出来,拆分成三项,第一项是药店,第二项呢是金创药小,那么第三部分呢是这个数字类型的呃,幺幺啊,那么我们拆分的话,我们可以这样啊,首先呢我们把这个字串来把它复制出来。

也就是把整个字串来复制到我们的这个地址数组里边,然后呢我们再找到找到这个分号的位置哈,第一个分号的位置,那么呢我们把它替换成了这个结束的字符零,那么也就是说在这里呢我们就把这个字符串呢独立出来了。

在这个位置呢就是我们字串的一个结束,那么后边的话肯定就没有用了啊,那么这样的话我们就能够拆分出第一个数据,那么第一个数据拆分之后呢,我们拆分第二行数据啊,要的是金创药小,那么这个呢我们也可以了。

因为前面这个药药店那么一个汉字呢,它是占两个字节,两个汉字是占四个字节,再加上一个这个封号的话呃,它是英文状态下的封号,只占一个字节,那么所以说这里呢它占了五个字节,那么所以说我们可以从数组加五这。

里呢开始复制这个字串啊,加五这个位置,那么复制到我们的这个物品名字这个字串里面啊,然后就是这一串,然后这一串之后呢,我们再用这个替换字符的这个函数呢,把这这个啊封号替换成我们的一个结束的一个字符。

也就是零啊,实际上是向这个位置来写出来一个零,那么也就是说这个字串的话在判断的时候呢,它就是独立的单独的一个字串啊,在这个地方呢就结束了,因为这个地方呢被替换掉了啊。

那么这样呢我们能够拆分出第二个数据下,把物品,那么稍微难一点呢,就是我们的最后这一个啊,因为要把它转换成我们d word的一个数量啊,数字类型整形成一个数字,那么首先我们也是要取出幺幺这个字符串。

那么这个字符串的话我们啊也很方便把它找出来,首先呢我们用一个循环来找到这个左括号哈,找到这个位置,那么定位到它的一个下标记啊,把它的这个下标呢j啊计算出来,因为在这里呢我们不认可它。

也就是从这里跳出这个循环,那么也就是说,那么这个最终呢这个界这个变量的位置呢,恰好是停留在我们这个组号这里,那么我们在复制这个字串的时候呢,我们就从这个左括号再加一的这个位置开始复制。

那么他得到的就是一一或一个右括号,然后呢复制到我们这个临时的字符串变量里面去了哈,嗯我们看一下,首先呢是这样把它复制过去啊,呃然后我们复制过去就是这一串这个字符串,那么复制过去之后呢。

我们后边这个右括号呢我们是不需要的,那么不需要的呢,我们就找不到这个用括号,也用这个结束字符去替换,那么替换之后呢,他就得到了一个字符串与幺幺啊,那么得到之后呢,我们再用一个hi啊。

把字符串转换成我们的整数,那么最终呢这里物品的数量呢也可以得出啊,可以得出啊,那么最后呢我们就是要涉及到这个victor,victor的话,它其中呢有这样一项哈,呃它可以了呃。

victory它是嗯先进后出的一个模式,是一个站的一个模式,就像我们亚战一样,就像我们平时的有一点类似于我们的嗯,它所组成的这个容器呢有点相当于我们一bp暂停与我们的1p啊,那么压战之后呢。

他用一个push back压战之后呢,那么这个结构的数据呢就在占点啊,就在我们的战局啊,然后也就是相当于放进这个容器里里边去了,然后它是叠加的,那么我们可以用一个模型来表示一下。

然后我们可以大致的画一下啊,画一下这个所谓的战,那么我们打个比方,如果这就是一个赞哈,那么我们第一次复习的时候呢,它就会向这里来压入一个结构,那么这个结构呢肯定有三项,那么第一项呢是我们的地址。

第二项是我们要补给的这个名字,第三三项呢这里是一个数量,那么第二次亚战的时候呢,他也压在这个位置,那么比如说这里是二,这里是一啊,那么第三次压战的时候呢,他压在这里啊,那么每一次呢他都放在这个站停。

那么在弹出数据的时候呢,它也是从这个站点这里呢取这个数据啊,从占点这里取数据啊,这个取了之后呢,弹出去之后呢,然后取这一个啊,最后取这个,那么这是最底层的取数据的时候呢,最先进去的数据呢。

他最后才能够取得到啊,当然这是我们一个是嗯push push bike,另外还有一个purple啊,弹出我们的一个数据,当然除了这个这个pp bug嗯,它是阐述我们战警的一个数据。

当然还有另外一种访问方式,也就是一个培根所恨的这种反访问的一个方式啊,那么begin的话,他也就是他这个时候呢才是从这个战绩来开始取这个数据,一项一项的去啊,如果是啊,大致就是这样的,好的。

我们来看一下它执行的一个情况,那么像这样的话,我们就把我们的数据呢呃添加到我们的这个呃,相应的动态数组列表里面去了,读机物品的,那么我们要来验证啊,也就是说要偏离这个数。

主要取出差了一个数据中应该怎么取出来啊,那么这个时候呢,我们也可以用一个循环来取出我们的这个相应的数据项,那么我们这个时候呢可以转到这里来添加一个按钮啊,任意地方都可以啊。

那么我们只要能够访问到这个相应的自动挂机的这个全局变量的地方,我们都可以建立这样一个测试案例,那么这个这个时候呢我们可以要用到这个victory里面的一个啊,这rector啊要用到这样一个成员啊。

它的一个静态的一个成员,那么呢用它来定义一个呃相应的一个指针啊,那么这个是我们指针的变量名,就相当于我们之前的这个引导,有一点相当于我们这种啊for int i。

那么副词为多少多少的这一个数字的个初始化啊,那么这个地方那么前面这一段啊就相当于是我们的一个类型啊,相当于这个inte,那么这一段呢就相当于与我们的i赋值为零。

但是这个时候呢它是从我们的这个也就是说这个vector对象啊,这个结构的啊,我们从这个微课等等这个类型的一个列表,从begin这个地方来开始访问,那么也就是我们占占比的啊,这个一那比如说这里是三啊。

这里是四,那么它就是从这个元素一这里开始访问,那么最后它的一个结束条件呢,在这里呢这个议题的还要小于这个n的,小于这个n的,那么也就是相当于这里了i它小于我们数组的一个下标啊。

那么这里呢比如说小于三小于二啊,放到最后呢哎加加,那么它它这里呢也也有一个指针指针的一个字加,那么它每次加一的话,实际上就是加的这个元素的呃,这个字节数,那么也就是这个结构的一个大小,相当于加的。

那么从这个占点的话,最先呢这个一体只是呢指向这里,那么因为他的话占了12个字节啊,那么所以说他加一次呢也是12个字节,第二次指向这个地方,第三次加的时候指向这个地方,第四次的时候像这个位置啊,嗯好的。

我们一起来看一下,再次编译一下,那么先挂机主线程显示外挂,那么首先呢我们需要在记这个选项卡,那么这里我们需要添加一些数据啊,进去啊,金疮要中,比如说精通要到这里添加两个,精通要小,这里添加三个。

那么这里添加四个嗯,这里呢我们添加了很多很多个啊,那这里的话我们还可以了,因为他有一个排序啊,把这个顺序把它排乱了,那么我们可以在这里进行一下设置武器选项卡,它其中呢有一个选项说的,那么我们来看一下。

那么这里呢排序了,自动排序呢我们把它禁用掉啊,关掉再重新编一下,但这个时候这个时候呢只是为了我们测试的一个方便,也可以把它打开,实际上挂件主线程,然后显示外挂啊,呃到我们的这里。

我们顺序的添加二要先金创药啊,这个我们三,然后呢我们这里呢是最后随便选一个集中要大,那么我们多添加一点,好的,然后呢我们开始应用设置,应用设置之后呢,我们的这个数据的话就更新到我们的这个成员变量。

记得这个数组里面用维克特呢就一个一个的压战了,他啊就压到了这这个里面,就把这几个元素,那么压到里边之后呢,我们然后测试的时候再开始呢取出里边的一个数值啊,那么也就是从比跟从这个站点这里开始取数据打造。

然后你像一项的啊往上去,那么最后的话它的这个下载也相当于是从已经开始,但是呢最后呢他要小于四,这个数值相当于这个地方的一个地址,相当于四,那么我们来看一下,打开我们的强势信息查看器,那我们测试一下。

那么这里我们可以看到我们啊取药店哈,补齐这个金创药小数量多少多少,因为我们这里里边的这个数数据的话是一致的,那么最先的话我们偏离这个列表的时候,最先是把这个数据压榨,它就是在占比的。

但是我们从begin这里啊开始偏离的时候的话,他是首先呢从这个一也就是说占比这里的开始,我们呃骗你啊,那么我们还有另外的一种方式,啊,那么还有另外一种方式呢。

我们就是通过呃取站点元素一直以及我们的这个呃谈战呢,也就弹出这个数据来实现嗯,那么我们可以把这一段呢先注释掉,嗯那么在这里呢我们但是另一种方法的话可以实现骗你啊,在这里的话并不是很实用。

那么我们也可以做一个研究啊,真的,那么首先在这里判断的时候呢,我们判断它不为空的时候呢,我们可以不断的让他出战啊,那么也就是我们把这个对象里边的列表先取出来,那么另外呢它有一个成员啊,susize。

也就是说它的一个大小,那么这个大小它大于呃,大于零的时候呢,我们就让它循环,那么下边这一段呢我们可以是一样的嘛,三,那么我们每次访问他的一个站点,它的占比呢是back,然后这里我们用点来代替啊。

因为它不是指占理,而是直接取出这个站点的一个元素,那么每次取出站点了元素之后呢,我们让他出一次战场,有一个popo就把你当成google bike,这样呢我们就是呃清除掉,战警的一个元素。

那么也就是执行一次这个po bike的话,那么我们比如说现在执行一个pp bk,那么这一点啊,第四元素呢将被擦除掉,下一次执行的时候呢,这个元素呢会被擦除掉,那么这样取出来的一个顺序呢。

他也是一个最后压榨的,这个顺序的话是最先出来,是从占领这样出来,那么它的顺序的话就是4321,那么如果开始的一个亚洲顺序是1234的话,那么我们可以来看一下嗯,他骗你的一个情况,挂机主线程啊。

显示我们的外挂呃,补贴选项卡,那么我们开始验证的数据,比如说是123,四,嗯,你说了好吧,这样的一个顺序,那么我们先应用设置了,把数据呢更新到我们的容器里边啊,然后呢开始测试,那么这个时候我们发现的话。

它最先的话,那这个元素的话是我们最后添加进去的啊,最后添加进去的也就是说是一个暂停的一个元素,那么它的一个操作过程的话,也就是我们的在这个push bike的时候呢,他最先压战的时候是在。

看一下在补习的一个选项卡里面了,嗯应用设置里面,那么在这里的话,最先呢它是把这个元素来用push bike来入账啊,那么我们再来演示一下它的一个过程,那么首先呢我们看一下它里边的一个工具。

嗯用来画一个字啊,那么我们打个比方啊,这个是一个账,然后来看一下它的一个,那么这样的话,比如说第一次呢它是压轴的啊,元素一,但是元素一里边的话,他肯定分为我们的三个单元,第一个单元是我们的地址。

也就是药店,第二个单元是药品的名字,金创药小,第三个单元呢是我们药品的数量,那么这是我们第一次压榨,第一次来这个push bike,那么第二次压战的时候呢,他就压到这个地方啊,这是远处,第二个元素。

它也是分为三个地址空间片啊,那么第一个这里呢也是药店呃,金创药中啊,这里是数量二啊,然后呢第三次压战的时候呢,呃压到这个地方,然后呢它也是一共是可能也就是我们一个结构大小的一个地址啊。

那么这里可能是60个字节,这里也可能是60个字节,那么这里呢是四字节的,我们的数量,比如说这里是三啊,这里呢也就是一个字串的一个空间,一个药店和我们的物品,然后是第四次亚战啊,然后呢第五次要战。

刚才我们来看一下它的这个嗯情况,那么第五次下降的时候呢,这里的数量就是呃555,啊这个地方才是无语,那么第六次压战的时候在这个地方啊,那我前面的同样是字算,那么最后这里要占的数量,这里的话是八八啊。

那么然后呢最后再是一个出站,那么出站也就是在我们测试的时候呢,它这里呢会首先呢判断它的一个大小,那么它的大小的话,从这里来看的话,它就是一共56个元素啊,那么这里的大小的话可能就是六啊。

然后呢在骗你之后呢,我们取得bike来就是占点,首先取得这个这个元素啊,把里面的这个元素的数值取出来之后,然后执行一个popo bag,那么执行这个pop bike呢。

就相当于我们用这个叉子把栈顶的元素来就去掉了,那么下一次这个b卡呢嗯就指向这个地方啊,拜托,占比,而麦克指向这里来取出它它的数据之后呢,我们再次执行一个破口拜访,然后呢他只是呢又往下移啊。

然后呢这上面的一个数据呢被清除掉啊,这一段数据了都在被清除掉啊,然后呢一个一个的清除,那么所以说我们这种偏离方式的话,只是在这里演示一下,那么实际上它呃这种方式来不适合我们游戏里面这样骗你啊。

那么这样偏离之后的话,一次之后呢,我们就把这里面的数据就清空了,那么下次要补剂的时候的话啊,我们就找不到这个补贴率高,武器列表里面的一个数据啊。

那么所以说在这里呢我们只是一个测试啊,对一个这个文科的一个了解好的,那么这节课呢我们就讲到这里。

P97:108-回城补给-背包物品处理界面设计 - 教到你会 - BV1DS4y1n7qF

大家好,我是郁金香老师,那么这节课我们主要是做一些界面的设计,那么一个是仓库的一个记的一个列表,那么另外一个是我们背包物品一个处理的,一个界面的一个设计,那么也就是我们背包物品的一些去向。

回神补迹的时候,那么一个是回神补迹的物品,我们有可能从仓库里面去物品,那么另外一种情况,也就是从商店里面买物品来进行补充物品,那么另外一种也就是我们出售物品给商店,或者是放物品到仓库。

那么一般分为这几种情况,那么补记的也就是从仓库和商店这两个地方,那么出售的我们另外写一个列表,那么一个是相当于一个是补记的一个列表,另外一个是出售或者是保存的一个列表,好的。

那么我们先打开第107个的代码,那么首先我们简单的处理一下,记得这个列表,添加仓库的这一部分。

那么首先我们也跟他添加相应的初始化部分,把精创药这一类的我们都给他添加进去,然后我们需要来在这里来添加相应的代码,那么它的代码的话,我们可以在之前的基础上进行修改,把前面的这一段复制过来。

然后在这里添加相应的代码,那么这是我们保存到仓库的,那么同样的这里的关键字格式化,也就是一个去向问题了,我们就要写去仓库这里补记,然后这里的名字我们需要做一下修改,那么这里是仓库的成员变量复制一下。

那么最后这里我们把它添加进去,当然这里我们它的一个物品,也是仓库的,那么大致我们就可以这样的修改,那么我们现在测试一下,那么我们还需要来打开游戏。

好的。

那么我们注入一下游戏。

看一下我们这边界面的一个效果,那么我们显示一下外挂。

看一下补记这里,添加一个这个时候显示仓库,这里显示我们的药店去向式,从药店,一个是从我们的仓库进行补习,好的,那么这些数据我们就添加到了一个,补记的一个列表,那么另外的我们就是说还需要来添加。

一个背包物品的一个处理,比如说背包里面肯定有很多垃圾,这一类的,我们有的需要存放到仓库里面,那么有的我们需要来储备给我们的,商店,那么我们在这里再添加另外的一个,按钮用来处理我们仓库的一个物品。

在这里我们再添加一个按钮,可以放在这上面这个空位,那我们就把它叫做背包物品处理,或者我们叫做简单的物品处理,只要知道它的一个大致意思就可以了,那么在这个物品处理这里面,我们另外来显示一个仓库的一个界面。

在这边我们给它另外添加一个仓库的,一个资源,插入一个窗口,那么这个窗口也就是我们要显示的窗口,因为我们刚才的界面的话,它已经放不下这么多东西了,所以说这里我们另外用一个窗口来进行一个相应的处理。

我改一下它的ID,就叫物品的一个处理,那么在这里我们主要的添加一个列表的空间,ListControl,那么这个空间我们就来相当于我们刚才的列表,就来因为设计的物品可能要多一些。

如果我们再用刚才的listBox,用这个空间来处理的话就不是很好,那么我们最好来用像Excel这一类表格来处理,可能要好一些,那么这里我们再添加几个项目,一个是静态文本的一个说明。

那么我们可以跟它分一个类,那么这里是物品的一个种类,那么种类后边我们跟一个listBox或者是comboBox,用来显示物品的一个种类,那么这里我们可以做一个初始化。

那么这里分类里面我们可以添加一些数据,比如说我们的是衣服这一类的,或者是我们石头这一类的,或者是武器,那么还有或者是一个活字,或者是其他的这一类的,或者是药品,好的,那么在后边。

我们再跟一个物品的一个名字用来添加到我们的列表里面去,那么先添加一个静态的文本,那么物品名后边我们跟一个编辑框,编辑框也就是我们物品的名字,那么后边我们添加几个按钮。

这个按钮用来我们添加我们相应的一个数据,那么我们把它复制一下,那么我们用来删除选中的一个项,那么另外我们还需要一个用来返回,把它大一点,那么在这里我们按内容来调整大小,那么这里我们叫转转。

那么最后我们还需要一个来返回到上一层,这里是Tab,我们调整一下它的一个位置,调整好之后,我们需要在这里来添加我们的一个代码,那么在添加代码之前,我们需要把Nisti Country进行一个初始化。

要设置一下它的一个格式,那么我们先把这个界面进行内化,这个是基页面下面的,我们作为一个物品处理的一个页面,那么在这里,我们还需要来进到相应的类里面,那么我们要重写它的初始化函数,在初始化函数这里。

我们需要了初始化我们的Nisti Country,当然在这之前的话,我们需要了给它关联一个电量。

那么这里我们选空间类型,这是变量的一个名字,那么方便我们在这个类的初始化函数,里面对它进行一个初始化,转到初始化函数,那么我们重写的这个函数,刚才我们选错了,应该是在前面这一个,那么在初始化函数这里。

我们需要设置它的一个相应的格式,那么由于代码比较多,我们直接把初始化的这段代码的,那么我们做一下相应的一个说明,那么首先我们需要获得Nisti Country,它原有的一个格式。

那么最后我们需要的主要的是要跟它加上一个report,这个格式也就是它的实际上数值为1,那么有了report这个格式,它表现出来的才是一个网格,一个表格的形式,那么另外需要设置的一个是网格线。

这个是一个扩展的格式里面的,可以通过这个函数来获得它本身的一个扩展的格式,然后保存在这个常量里面,然后再跟它添加新的格式,网格线或者是选择某行的高量,这两个是扩展格式里面。

我们要把这个属性来跟它添加进去,保存在这个变量里面,最后用这个settingstyle来设置扩展的一个风格,那么最后就是我们的相当于是一个选项卡,这里的添加每一页的相应的名称,那么添加了之后。

我们先编译一下来看一下现在的一个效果,物品除了这里来我们还需要来显示,显示相应的窗口,那么在这之前的话,我们还需要到这里来显示窗口,那么要显示它的话,我们需要在补给的这个类里面来添加相应的一个成员。

我们先移到这个类的定义这里,那么首先我们包含它的一个投文件,物品处理的页面的一个投文件,那么在这里我们需要进行一个相应的说明,那么在这里我们把它设置一致,等会这些代码才可以利用起来,那么成员编程的名字。

我们就设为这一个,那么设置了成员编程之后的话,我们就可以在这里来对它进行一个操作,那么物品处理这里来我们就显示这个页面,当然在这里面我们也要添加一个按钮,就是这个返回这里。

那么返回这里我们就隐藏它本身对象,好的,那么我们先编译一下,那么我们先编译一下,那么我们再来看一下,去页面这里,那么我们还应当要对它进行一些初始化,这个页面,我们需要在这个窗口创建的同时。

要创建这个窗口的一个页面,不然的话我们不能够对它进行一个显示,那么我们再转到我们的这个补给的内里面,在它的一个初始化函数这里,我们进行重启,那么首先我们要创建这个物品,然后它的ID,我们要给它传进去。

那么只有先创建了我们这个页面,我们才可以显示它,好的,我们再来看一下,那么创建之后的话,显示不出来了,它可能已经显示了,可能是被其他的窗口遮挡掉了,那么在这里创建的时候,我们还需要来跟它设置一个副窗口。

或者是这个副窗口的话,我们最好是设置为选项卡,那么这样的话,它与我们当前的窗口的话,才属于同一个显示的一个层次,那么我们移动到table这里,看一下它的初始化部分,後來才能夠做到,所以就是,我們再看看。

這瓶酒,我們再看看,這瓶酒的味道,這瓶酒的味道,這瓶酒的味道,形成一種,不同的行為,我們再看看,這瓶酒的味道,這瓶酒的味道,後來,我們來看看,我們來看看,我們來看看,這瓶酒的味道,這瓶酒的味道。

這瓶酒的味道,這瓶酒的味道,這瓶酒的味道,這瓶酒的味道,這瓶酒的味道,這瓶酒的味道,這瓶酒的味道,這瓶酒的味道,這瓶酒的味道,這瓶酒的味道,在這個補氣這個地方,我們同時也對它的成員的頁面進行一個設置。

那麼設置首先是設置它的一個服裝卡,這樣的話我們物品處理的窗口與補氣的窗口就處於同一個層次,然後我們再設置一下它的相應的一個大小,把這兩句複製一下,然後我們在這裡添加一個所屬關係,好的。

那麼我們再重新編譯一下,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體,這是一個廣東話的字體。

P98:109-修改回城补给界面和更新窗口数据到对象列表 - 教到你会 - BV1DS4y1n7qF

大家好。

我是俞京翔老師,那麼這集我們主要來是修改一個錯誤,另外來添加一個物品結構,還有也就是把我們NIST country,控件裡面的數據,更新到我們的,玩家掛機位裡面,好的。

那麼我們首先來查找一下上一課的一個錯誤,那麼我們先把代碼來打開,109克的代碼,那麼打開代碼之後。

我們再來看一下我們出錯的代碼的地方,物品處理,然後我們是NIST country的控件,那麼這個控件裡面的話,我們看一下我們哪些地方容易出錯,那麼像前面這一類的API函數的話,這個它沒有參數。

不可能出錯,那麼這裡也沒有涉及到指針的一個訪問,基本上是不可能出錯的,那麼另外就是這個函數,這個函數的話,這裡我們也跟他分配了一個結構,這個指針的話也是正確的,理論上也不可能出錯。

那麼這裡我們也跟他分配了相應的結構,也不可能出錯,那麼可能出錯的話,這個函數這裡,這裡我們是打印的是整數,也不是自創或者是結構這類的,它不涉及到指針的這類的訪問,它理論上也不會出錯。

那麼唯一可能出錯的就是這個地方,那麼這個地方涉及到一個座標,那麼這兩個座標的話,它有可能來造成一個下標的一個越界,那麼比如說我們只添加了兩行,但是如果這個Y座標,如果它越界了,那麼就可能造成出錯。

那麼我們再把後邊這一段,先把它return,也就是相當於注釋掉後邊的代碼,不會被執行了,那麼我們再來看一下,它執行的一個流程,那麼順便我們把這些有警告的地方,也把它更改一下。

那麼這裡我們加上一個強制類型的一個轉換,因為警告過多的話,我們看著也不是很舒服,那麼這裡我們調用安全版本的橫豎,這樣就沒有警告了,看起來輸出的信息就比較乾淨,好的,那麼我們顯示一下我們的這個勃起窗口。

那麼這裡我們添加幾個行,然後我們再查看一下,輸出的調試信息,那麼但是我們注意一點,在這裡的話,我們單擊了一個項,它一共一下子就產生了三者相應的信息,那麼這種處理的話,它本身也不是很效率。

而且我們如果是單擊了,在後面的這些區域的話,這裡下標它會越界,它會越界,那麼本身它也不是很效率,那麼所以說我們考慮了,另外跟它關聯一個相關的信息,那麼比如說我們可以關聯這個鼠標單擊的信息。

那麼現在的話我們看一下,這個它一共我們單擊某一行的時候,它會產生兩個信息,兩個就是說我們選出的信息更改了,它一共會被執行兩次,那麼如果我們是另外選一行的話,甚至它會執行三次,這樣的話我們的代碼的話。

它會反復的多執行幾次,這樣影響我們的效率,所以說出錯的地方也可能就是我們的剛才的函數,它可能是一個下部的越界,還有可能也是代碼被執行了三次,造成了其他的異常。

那麼我們可以把這部分代碼移植到我們的鼠標單擊的信息裡面去,它相關聯,那麼把這個輿圖先注釋掉,也可以一起把它移植過去,那麼這後面這一片數據,剪掉,然後我們找到這裡,空間的事件。

找到去這個Click單擊鼠標的左鍵,那麼在這裡我們與它關聯的相應的函數,添加我們的代碼,把我們的代碼輻射到這裡來,那麼然後我們再來看一下,然後我們再次進行測試,再來看一下調試信息。

然後我們在這裡隨便的添加幾個物品名,然後我們再訪問相應的地方,那麼這個時候我們可以發現我們單擊某一行的時候,它也能夠取得相應的座標,但是這個時候我們就顯得更加的效率,因為你選中某一個單元格的時候。

它只會執行一次相應的代碼,那麼理論上的話這個時候可能會出錯了,那麼我們再來進行一下調試,那麼這個時候我們可以發現,響應的速度也快上了很多,那麼而且不會出錯,但是代碼還是有一些錯誤,因為我們第一行的時候。

這個物品名的話我們不應當去改變它,所以說在這裡我們還需要加上一個下標的判斷,在這裡,那麼一個是不能夠超出範圍,那麼我們還要加上一個判斷,也就是我們的X座標,它必須要大於0,必須要大於0才可以。

它不能夠為0,因為為0的話,我們是對第一個標籤進行設置,也就是我們的第一列進行設置,好的,那麼我們再來看一下,好的,編譯之後,我們再次進行測試,那麼這個時候來選中前面的時候就不會。

那麼從倉庫或賣商店只能選一個,這個時候也是可以的,那麼不撿這個東西,也就是不拾取與賣商店或者是存倉庫,可以是同時選取的,好的,那麼我們再來看一下,應用下設置測試,當然這個時候測試裏面。

我們沒有添加相應的代碼,因為我們之前的話測試它只遍領了這個地方,遍領了這個地方,那麼這幾個我們也把我們的物品處理的,表格裏面的數據,我們也把它更新到我們的掛機率裏面,那麼也就是說我們需要在掛機率裏面。

設計一個相應的結構,來接收這些數據,接收這些數據,那麼我們可以這樣的設計,我們先把窗口關掉,那麼首先我們在這前面添加一個相應的結構,那麼由於這個數據比較多,那麼我們為了精簡一點,我這裏提前就把它準備好。

那麼我們首先直接複製出來,那麼這個結構一個是物品的一個名字,那麼後面這個Dword的變量,用來標記了我們的處理的方式,那麼0表示不處理,1表示存倉庫,2表示賣商店,4表示不拾取,那麼這個原理的話。

它是利用的我們的二進制來實現的,那麼比如說我們的4,那麼4的話轉換成二進制,就是124,也就是第三位,第三的一個二進制位,它等於1,是這樣來實現的,那麼如果我們是2的話,我們來看一下。

那麼這個是我們利用的二進制的原理,因為我們最大的這個數的話,它一共可以是32位,也就是4個字節,32位的話它可以表示32種狀態,實際上那麼我們這裏,它這裏相當於0表示沒有。

那麼1表示我們的二進制的第一位為1,那麼2的話表示第二位為1,那麼這裏第三位為1,它是為4,就是我們剛才在這個計算器裏面看到的,那麼我們也可以用這種方式來看一下,12345678。

那麼這就是我們的4字節的-1,那麼當然-1是相當於是帶符號的數來表示的,那麼如果是無符號的數,那麼這個8個F的話就表示的是一個整數的最大值,那麼我們用二進制來顯示看一下,它一共就有32個這個數字的1。

是32個,那麼這個數字1的話,我們就相當於來這裏的這個存倉庫來表示第一位為1,那麼售商店的第二位為1,但是它的數字也就是為2,轉換成我們的四進制,那麼這一位它為1,也就是第三位的時候為1,我們是4。

那麼通過這幾個數字的一個組合的話,那麼我們進行一些位運算,我們就可以了取得它相應的一個設置的一個數字,當然如果是對位運算沒有具體的了解的話,那麼可能這樣理解起來比較複雜,那麼等一會我們看一下我們的代碼。

可能就更好的理解了,而且這種方式來用的比較多,它比較節省我們的空間,好的,那麼這個也就是說它可以表示幾種類型,那麼也可以表示我們存倉庫和博實區,這兩個都選擇的話,那麼它最終的一個數字就是5。

那麼這個數字5的話,它也包含4,那麼也包含1,那麼如果是這個數字7的話,就表示了這三位都已經選取,當然我們到時候可以取相應的位,可以取相應的位,好的,那麼我們的結構就是這樣的一個設計。

那麼這個結構設計好了之後,我們整個列表的話,它肯定包含了很多項,那麼是一個樹種,但是這個樹種的大小它又不固定,那麼我們就可以用之前的這個Wiktor來進行一個操作,它就相當於是一個動態樹種。

那麼在這裡我們也用,我們剛才定義的物品處理的結構,然後我們把這個結構定義成一個動態的一個Wiktor的容器的一個樹種,那麼也添加到它的一個成員裡面去,那麼這裡是相當於我們物品,物品補給的一個樹種。

那麼這裡相當於是回程補給式了物品的一個去向的一個樹種的一個列表,那麼這個設計好了之後,我們就可以來開始把我們的相應的補給列表裡面的這些數據,更新到我們的樹種裡面,那麼在這裡邊的話。

它每一行就是一個我們的數據,我們可以來看一下,那麼這一行的話,我們應該怎麼來表示了,那麼首先我們第一個是物品名,我們先把它取出來,取出來之後,我們就存放到我們的結構裡面,是相當於這個對的結構裡面。

那麼我們現在可以定義一個變量存放物品的名字,那麼後面我們這裡只有一個變量,那麼怎麼去存放這三個數據,這裡有一個兩個有三個數據,那麼這個時候我們就可以用一個未運算了,這裡的表示的是1,這裡是2,這裡是4。

那麼我們可以用剛才我們說的未運算,那麼如果第一位它是1的話,那麼我們再來與1進行一個運算,進行一個運算,那麼如果它本身這裡是為0的話,那麼它就為1了,表示這裡選中,那麼如果這裡沒有選中的話。

那麼我們就可以不管它,它本身就是為0的,因為我們肯定要進行一個初始化,那麼如果是這一下與這一下不時取兩項,都同時選取了,那麼最後這裡它的結果就是,二進制的就是101,那麼最後就是我們的數字6。

應該是數字5,就是數字5,那麼數字5我們到時候要取數據的時候,我們可以進行一個貨運算,那麼我們可以取相應的這一位,檢測它的第一位,這裡是不是為1,如果是為1的話,就表示了這個存倉庫,都去了。

那麼如果我們要檢查第二位的時候,我們可以就檢查它的第二位是不是為1,這個二進制的,那麼我們也可以檢查它的第三位是不是為1,那麼第三位這裡實際上就是檢測裡面,它是不是,就是這裡的話。

它表示的話就是二進制的001,實際上,那麼這裡實際上我們可以這樣表示,就是表示100檢查這一位,那麼這裡表示的是0010,那麼這裡表示的是二進制的001,那麼我們進行貨運算的時候,就是去檢測相應的位。

這個是貨運算,那麼我們進行位的一個運算的時候,那麼我們就是去檢測這一位,那麼這個是為了一個操作,把相應的數據添加到裡面去,好的,那麼我們接下來我們就可以開始,測分我們的數據。

然後把它保存到我們的解庫裡面,然後再添加到Wikipedia的容器裡面,那麼在這裡的話,我們需要在應用設置裡面,進行相應的數值的一個添加,好的,我們來看一下代碼應該怎麼寫,這個代碼比較多。

那麼我們來看一下,那麼首先我們是取得,這個Wikipedia這個Nested Country,這個空降的一個指針,因為這個數據來太長了,我們直接操作的話不是很方便,所以說我們用另外一個指針。

來對它進行一個操作,那麼首先我們要遍離整個列表,要遍離整個列表,那麼這個列表一共有三行,那麼這裡我們就循環三次,那麼這裡它這個項目的數量就是3,012,它肯定也執行三次,那麼這樣我們對它遍離之後。

首先在這裡我們取出它第I行,這樣第I行,比如說它最先是從0開始,就是取第一行,那麼取第一行的第一個縮影,那麼取第一個縮影的話為0的話,也就是取1,也就是物品的名字,先把它取出來,先取出來。

取出來之後存放到SizeText的緩衝區裏面,然後因為下標為0的時候,它是物品的名字,所以說我們就把物品的名字,用STR Copy複製到這個結構裏面去,因為在這裡我們定義了這個結構的名詞變量,好。

那麼這是物品名,我們就這樣把它取出來了,然後我們在這裡再對它的一個標記做一個初始化,那麼這個標記初始化了之後,然後我們再取一個存倉庫狀態,看這裡有沒有勾選,那麼我們把這個字串取出來了之後。

也是保存在SizeText裏面,也是取得我們的第一,某一行的第一項,也就是存倉庫這裡,那麼取出來,如果它裏面的字符串等於勾選的,那麼我們在這裡就給它做一個什麼呢,做一個貨運算,貨運算。

那麼也就是說它本身為0的,那麼做了一個貨運算之後,也就是說它的第一位,如果它本身是為0的話,那麼做一個貨運算之後,它就為1了,但是我們做多次了,它也是為1,也是為1。

那麼我們又接下來又檢查商店的一個狀態,如果賣商店這裡的它也是勾選的,那麼我們也給它做一個貨運算,那麼把我們相應的狀態添加到我們相應的位,那麼當然這裡我們就是添加到二進制位的第二位,那麼這裡是第三位。

如果是不檢取的話,那麼這樣我們就把我們的狀態就添加進去了,添加到這個結構,那麼整個循環結束之後,我們的相當於第一行的數據的話,就添加到這個結構裡面去了,然後我們再把這個結構的Pushback進行壓榨。

壓到我們那個容器Wicked裡面,放到它的底部相當於,這就我們就添加了一個元素,像我們的這個容器裡面,然後整個循環,然後是第二次取物品,你也是取狀態,一次取狀態,然後放到標誌位裡面,狀態位裡面。

然後三行循環完,它的工作簡介就完成了,也就添加了三個元素,添加到我們的這個Wicked容器裡面,這樣添加完了之後,我們也可以做一個測試,那麼測試的話。

我們也是要直接來看代碼測試的時候。

那麼測試就要簡單很多。

那麼測試的話,這裡也是一個循環,那麼首先我們在這裡也是定一個Wicked指針對象,因為這個太長了,當然本來是這一行的話,可以寫在這個Four循環的這個位置,因為這一段代碼太長了。

所以說把它提到外邊來定義,定義這個指針,定義了之後,我們在這裡直接它的初始化這個條件,我們就不要就直接在這裡進行一個片例,那麼直到了它結束之後,條件結束之後,那麼我們的片例才結束。

那麼每次我們指針這個結構指值+1,那麼+1之後,我們也要從裡面取出相應的數據,那麼循環到第一的時候,它就取最底部的數據開始取,那麼開始取之後,最先我們取出的是它的一個標誌位,那麼標誌位取出來之後。

也是放到一個Dword的類型裡面,那麼首先我們就要檢測這個標誌位,那麼檢測標誌位,我們這裡就要用一個運算進行一個運行,那麼也就是說取出它相應的位,那麼是否就是相應的未來是否為1。

那麼在這裡我們取它的第一位,就是對它的第一位檢查是否是唯一的,那麼唯一的話,那麼我們這裡定義了三個支串類型的,那麼如果是唯一的話,那麼這裡我們就設1,就指向勾選的支串,然後檢測我們的第二位。

然後這裡是檢查的第三位相當於是,那麼第三位的話,也就是這個4,我們就是表示的1。0,二進制,那麼這一位如果它是唯一的話,那麼最後它的結果才為真,才大於0,還是一個大於0的,如果這一位它為0的話。

那麼最後整個表達式的值也為0,那麼這裡也就不會被執行,不會被執行的話,它本身也就是一個空支串,好,我們來看一下,編輯之後我們看一下最終的一個結果,那麼這就是一個結果,然後這就是我們取出的一個狀態。

這裡我們先要退出,然後重新生成,那麼我們需要把DLL要把它卸載掉,再重新輸入,然後我們在這裡顯示我們的物品窗口,那麼在這裡我們隨便給它添加一些名字,然後在這裡我們做一下相應的一個選擇。

那麼選擇之後我們把數據更新到我們的,Wikipedia容器列表裡面去,然後我們在這裡再測試,把信息清掉,再測試一下,那麼這個時候我們可以看到這個XX這個物品,它要存倉庫,但是不賣商店也不失去。

那麼XX第二行的它只是賣給商店,那麼第三行的存倉庫,它是只存倉庫,不賣店它也不失去,那麼金窗鑰,這裡它也是只賣商店,我們這裡可以看到,那麼最後兩行這裡它有兩條勾選,賣商店或者拾取,最後這裡存倉庫。

這裡也是不拾取,這裡也是打勾的,那麼這樣的話,我們的數據的話就是正確的,那麼在下面的這個過程裡面,我們就可以根據這些數據來處理我們背包裡面的相關的物品,它的一個去向,那麼是該留在背包裡面,還是該存倉庫。

還是該賣給商店,那麼它的一個物品處理的一個去向,我們就可以來從這些數據裡面來獲取,好的,那麼今天我們的課程就到這裡,那麼我們下一期課再見。

敬愛的觀眾朋友們 敬愛的朋友們今天是如何過的。

P99:110-回城补给设计与打开仓库关闭仓库 - 教到你会 - BV1DS4y1n7qF

大家好,我是郁金香老师,那么这节课呢我们简单的说一下呃,灰尘笔记的一个大致的一个设计,那么回身补剂呢我们可以把它分为两个部分,那么一个是去仓库啊进行一个呃物品的一个存储的一个操作。

那么有的一部分物品呢我们需要保存到仓库的,那么我们就先到仓库里面去保存,保存了仓库之后呢,有一部分物品呢我们可能需要在仓库里面取出来,那么我们也在这一个功能函数里边完成,那么完成了之后呢。

我们再另外设计一个函数,去商店进行一个补给啊,买东西,那么另外还有一些背包的一些不要的一些东西呢,我们需要出售给商店的,那么也在这个函数里面来完成,那么我们先设计仓库这一部分啊。

仓库的话首先呢我们也要寻路到相应的npc的这个坐标,停下来之后呢,然后我们需要打开m pc,打开仓库呃,打开仓库之后呢,进行一个传获取的一个操作,完了之后呢,我们才在关闭仓库。

但是取啊我们从仓库里面取物品,这个函数呢我们在之前有封装和这个有分析和封装,但是我们的这个呃纯物品到仓库,还有就是打开m pc和关闭这个仓库的这个npc的话,我们没有封装相应的这个函数。

那么首先呢我们这节课呢就来分封装一下相应的这个函数,来看e109 课的代码,那么我们分析的流程呢,我们是要先取得这个缓冲区啊。

那么这个缓冲区的话我们可以呢,那也就是打开这个仓库的时候呢。

呃发包的一个缓冲区,那么我们可以先打开我们的附加到我们的游戏里面。

为什然后呢,我们呃转到我们发包的地址上边啊。

进行一个断点,下一个断点,把这个包包的获得这个弟子们扶持一下,然后我们在这个地方呢嗯下段先把游戏调出来,下一个断点啊,然后呢我们打开npc,在点击npc的时候呢,这个时候这个地方呢会断一下。

那么我们先把断点呢取消掉,返回到上一层的,这个地方啊不断下,但是这个地方会断一下,多次会断一下,多次的话,可能我们就这个断点来,可能是下错了吧,那么我们重新再下一下下一个这个断点,那么点击一下npc。

在这个地方下段再试一下,那么另外还有一个地方,把这个地方的断点了取消掉,然后我们再来看一下音乐,1g啊,这里有个地方啊断下了,另外有一个地方注意这个压榨呢参数呢是1亿啊,这个要多试几次。

那么我们再把这个断点呢取消掉,那么我们所要的话是只断一次的,在我们打开mp 3的时候,那么我们在此啊断一下,这个时候呢我们发现这个地方呢会被执行一次,那么刚才那个地方呢是断两次啊。

那么另外呢我们还需要再次打开mp 4的时候呢,进行一下测试,那么看一下他ex的这个数据,那么打开npc的时候来这里呢,这一段数据呢是我们npc嗯发包的这个缓冲区,我们把它取下来啊。

打开mp 4的这这个我们应该可以不要这个我们已经在怪物列表里边,我们已经有封装这个打开mp 4的这个相应的这个功能,那么我们所要的应应当是打开仓库才对啊,那么我们再次回到这个发包的这个缓冲区呢。

那下一个断点打开仓库的时候啊,让它断下,然后让我们返回那这个地方,我们发现了打开商店和打开仓库啊,可能是断在同一个地方,那么这里呢我们来看一下它一,因为这里的话缓冲区呢它是传到ex的。

那我们来看一下ex里面的一个数数值啊,那么复制下来呢,就是这一段啊,我们所取的这一段啊,550018这个100,这个100,这就是缓冲缓冲区的一个相应的一个数据,那么另外一个呢在关闭仓库的时候。

我们再次在这里下断,也取得它相应的一个缓冲区的数据好,那么这个时候断下把断点取消掉,那么我们看一下它的缓冲区呢也是ex,而且它这里传递的参数的话也是一,那么我们来看一下它相应的参数,那么就是这一段哈。

20018,这里100,这里是900,那么也就是我们下边的这一段参数啊,也就是缓冲区的一个数据好的,那么既然缓冲区的这个数据有了呃,另外呢我们对这个发包的这个货的话已经有一些封装了。

那么我们可以来呃参照他之前的打开商店的代码来进行这个设计,那么我们来看一下啊,结构单元,打开商店,我们搜一下shop商店相关的,那么再再说一下啊,给学分析,人大还有一个打开商店的这个动作。

我们看一下有没有,那么这个open shop的话,当时呢可能是封装错了哈,被封装到了我们的这个怪物列表里面来了,那么这里呢我们呃应当来把它封装在我们的,这个商店的列表里面呢更活力一些啊。

这里那么我们在这里呢把它改一下,我找一下shop,那么这里呢前缀我们也做一个相应的一个修改,那么修改之后呢,我们再把这个怪物列表里面的这个相应的代码呢,把它复制一下,找一下,转到它的这个定义部分。

那么把这一段代码再复制一下,好的,那么我们先申请一下,然后我们接下来的话我们就可以了,在这个函数的基础上来进行一个修改,那么在我们把这段代码来复制一下吧,那么我们可以先添加两个函数,在这个仓库这里边呢。

我们添加两个函数,那么一个是打开我们仓库的这,个是关闭我们仓库的,那么我们先转到图文件啊,仓库的,记下,那么另外一个呢是打开我们的npc,那么这段代码我们写好了之后呢。

我们可以把前面的代码呢你一直过来就可以了,然后把这两段代码复制一下,转到我们的cp p p p,然后我们再找到,说服相关的,我们说服,那么实际上后边这个参数来考虑可无,因为我们暂时没有用到哈。

只是预留了这样一个接口,那么我们把里边的代码复制一下,在ctrl减号退回,这里呢我们也进行复制,那么我们只需要改改变一下这个缓冲区就可以了,那么这里呢备注的名字呢我们可以写成它啊一大包。

然后这个缓冲区就是我们在后边哈取得的这个数据,那么这里呢我们只需要改为五,那么后面呢这里呢我们改为腰好,这样呢我们就可以来打开我们的仓库,那么关闭仓库呢,我们再来看一下,关闭仓库在这里啊。

那么我们来看一下关闭仓库的这个缓冲区,那么首先这里是二啊,这里我们需要改一下,那么这里呢我们改为腰,那么后边的话这篇呢都是零,那么我们这里呢把它改为零就可以了,这里呢可以不修改啊,也可以把它先简单一点。

那么这样的话我们就能够看,就能够关闭我们的这个仓库,那么最后呢我们把这里的异常处理呢,这里进行相应的信息呢进行替换,嗯,那么这是我们的打开仓库里关闭仓库啊,那么接下来我们封装好了之后呢。

我们可以来来进行相应的测试,先编译一下,那么编译成功之后呢,我们转到我们的主线程单元,那么这里呢有三个test,那么我们把之前的这个打开商店的这类信息呢先删掉,然后呢在这里呢我们首先呢通过怪物列表。

那么我们先注意要先调用这个get it,get it,get it代替初始化怪物列表,然后再调用我们的打开n p c对话的注意,这个名字一定要对大鹏,那么打开它的这个对话之后呢。

我们接着来通过我们的仓库列表,那么仓库列表来这里,我们需要来打开我们的这个仓库啊,当然后面的这个名字的话,我们站起来可以不要啊,也可以随便传一个名字,证据,因为这个时候呢我没有去什么作用啊。

这里呢最多只是为了增加一个可读性,我后边呢我们会有一个接口,那么这里呢我们最后呢啊关闭,那么这里呢关闭的话,我们可以不调用这个代替,当然也可以调用嗯,最后呢我们关闭这个仓库的这个对话。

那么另外呢我们还可以来做一个测试,因为在这里边呢我们另外的定义了一个呃,取这个仓库物品的这个函数啊,我们也可以一起来来进行测试啊,这条good for deport。

那么我们在这里呢需要另外随便添加一个按钮,那么我们这个还出来,我们就可以了,不挂解这个主线程上来测试也可以,那么在这里呢我们再添加一个按钮,取仓库物品,啊,那么这里呢我们取其中要小。

注意这个名字一定要对哈,那么呢我们一次取三个出来啊,这取三个四个都可以,为了方便测试哈,也可以取两个嗯,那么我们来看一下啊,重新再编译生成一下,好在输入调试,挂机主线程,那么我们把游戏前提下来看一下。

测试能打开仓库,那么这个时候我们发现打开仓库的时候的话,好像出现了一个相应的问题,那么我们看一下,打开仓库没有成功哈,那我们先卸载掉主线程,那么再看一下它相应的啊,tt 1。

那么这里呢我们开始调二并没有起作用,那我们也需要注释掉,因为打开平时值的话,这个打开商店的代码的话,他最终呢不能够测试重新投资,但是关闭这个商店的代码的话,可能呢它是通用的啊,那么重新让我们编译一下哈。

再次测试。

因为这个时候o d o d被打开副驾了。

所以注入的时候呢会慢一些,啊那么测试打开仓库啊,这个时候能够打开,现在的金创药小是12个,那么我们来看一下去仓库物品,那么这个时候呢只有十个了啊,那么我们从这个信息里面也能够看到你下来取了两个啊。

是然后呢我们再次去,每次呢他都会啊取两个,那么我们再取两次的话,最后就就是每六个啊取常用物品再取一次,生了两个,那么最后呢我们完毕点啊,好的那么这一节课的测试呢,我们暂时就到这里。

那么下一节课呢我们再对相应的这几个函数来进行一个啊封装,把它封装成这个message的这个函数,那么我们转到心里了,就是我们啊这这类啊格式的这个函数,我们把这个所有的相应的这个数据呢都挂机。

在这个主线程上通过发消息来传递,那么这个呢也作为一个拙劣啊,大家先去完成一下,当然这两个号的函数呢我们在后边呢,我们把这些前面的数据啊准备齐之后呢,我们才可以来编写这两个函数。

那么这节课的版本呢就是是编写相应的这个message的这个版本,好的这就是我们相应的这个作业啊,当然另外还有从仓库里面取物品的这个相应的代码啊,这个也需要把它写一个message,不是一个版本的好。

的那么我们下节课再见啊。

posted @ 2024-09-30 11:13  绝不原创的飞龙  阅读(2)  评论(0编辑  收藏  举报