Skip to content

misalignaddr/BetterWasteland

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Smooth Bug fix

问题描述

打开BarWindow - 快递接单 - 弹出委托UI - 点击定位 - 返回 在这之后就没有BarWindow页面UI了,这显然不符合逻辑。

解决方案

创建一个双端队列,这个队列的大小固定为2

每一个Open、Close的操作都会进行出入队列,我们不用管,根据经验观察,

在打开了bar之后,如果此时此刻Close的是NewMapUI,那么在他之前,就一定会关闭BarWindow。

所以在此就要检查:队列中两个元素是否相邻,如果是,就要把in_bar置为true。

所以在关闭MissionWindow之时,就要打开BarWindow。这样才能保证玩家退出去之后,仍然能够退回BarWindow界面

问题描述

有一些制作出来的Food,第一次设置了禁止自动进食的,这个时候没有问题。

但是在主动投喂给角色之后,这种菜耗光了之后:

第二次制作出来这种菜的时候,就还是未禁止状态。这个时候还需要玩家手动设置一遍 禁止自动进食

这让玩家非常难受,不想再手动挨个点一次。

如果要禁止自动进食,那么同理,就应该是持续上锁状态,玩家主动解锁才能奏效。

也就是说:再一次制作出来这种菜的时候,同样应该是自动上锁状态。

解决方案

MainUI.AutoEat 这个是一个bool值,用来说明在MainUI里面,是否打开自动进食。现在就是要找到底是谁访问了它?

  • Lua里面没法手动构造一个Food类出来,所以食物数据的来源全在OnEat方法。
    • OnEat()方法中,手动记录每一个吃过的食物。
    • 查询这个食物,是否是禁止自动进食状态。
      • 如果是,将食物的ID加入一个有序链表中。
      • 如果不是,在有序链表中查找:
        • 如果找到了,就移除出去,因为这个时候表示解锁了。不可以存在在这个链表中。
  • OnCook()方法中,对于制作出来的食物result进行遍历:
    • 如果食物存在于这个链表中,说明是禁用状态,调用item.Characteristic:Add("ItemBuff_DontAutoEat", 0);方法给他上锁

开关禁用的操作,应该在“仓库管理”这个里面能够找到。

找东西的思路:应该是在MainUI里面开始找,层层往下找。

WareHouseWindow里面,Items有一个属性叫Characteristic:ContainsKey("ItemBuff_DontAutoEat")

整体思路采用二分方法处理整个过程,算法复杂度为O(logn)

问题描述

在交易的时候,会交易高品质的东西

应该要把所有物品进行排序,优先交易低品质的东西才行。

解决方案

call stack:

  • TradeAction -> SynthesisController.SynthesisCost -> ItemManager.DiscardGoods(id, count)

在DiscardGoods中,while循环的逻辑有问题,重写整个方法,重点关注while循环中的迭代逻辑。

问题描述

旅行者事件,选择了一个选项之后,再退出来的时候,什么都没有了,这显然是不合理的。

坦克营地 - 【旅行者】 - 有很多选项

解决方案

在OnEvent(旅行者)的时候,就标记flag为true。 在OnEvent(交易废品)的时候,如果前面的flag为true,那么flag2也为true,记录一下零钱的数量。 在OnCloseUI(交易废品)的时候,如果前两个的flag都为true,并且零钱没减少,首先把前两个的都记为false,然后再启动事件【旅行者】

在OnEvent(聊天)的时候,如果前面的flag为true,就标记flag2为true。记录一下时间。 在OnCloseUI(聊天)的时候,如果前面两个flag窦唯true,并且时间没减少,把前两个记为false,然后再启动事件【旅行者】

这个方案有一个问题就是,先关闭NewEventUI,再计算交易金额,再弹出来对话框。所以现在算了是没有效果的

问题描述

在交易面板中,拖动滑块的问题很恼火,可不可以加:

  • 一个按钮,自动选择最合适的数值
  • 一个输入框,输入数值以进行选择?

解决方案

在商店页面中,那个叫PurchasePanel

在交易废品页面中,那个是BargainWindow里面的一个函数OpenxxxPanel,是两个不同的东西。

但是都是私有private的。估计要想其他办法。

  • 想清楚、摸清楚xlua.private_accessible()
  • 要么重写方法,在更上一层hook进去,让他不要弹出原来的东西。

问题描述

Esc快捷键功能

解决方案

针对战斗界面:

  • UnderAttackUI
  • DialogWindowUI

bug:

  • 初始的时候直接跳过小女孩的对话框了,导致根本没法继续玩下去
  • 送货问题

问题描述

酒馆的NPC,把他的东西买完了之后,他这辈子可能都不会刷新更多东西了。

解决方案

问题描述

添加一个输入框的功能

解决方案

这个逻辑,首先是SetChooseList()函数,里面会打开一个base._gos["ChooseAmountPanel"].SetActive(value: **true**);

这个才是最关键的,也是打开滑动栏的核心代码,也就是让他显性。

需要注意的是,它并不是任何一个UI窗口,而是一个UI子模块,仅此而已。

以道路维修的代码为案例

Other Issue page

  • 增加数字输入框
  • 增加搜索框
  • 改变商店角色刷新逻辑

Introduction

本Mod旨在为游戏提供优化,让玩家更舒适、方便地游玩整个游戏,修复了原版游戏中不合理的地方。

[spoiler] [b] 注意,因为本Mod经常发布更新,如果您要更新Mod的话,您可能需要 “取消订阅 - 订阅” 以完成更新。 [/b] [/spoiler]

因为Mod的定位与功能区别于其他功能性Mod,所以主要组成部分也只有Lua脚本,专为优化而生,追求轻量的同时增加游戏体验。 目前修复的地方如下:

  1. 酒馆UI消失的问题:在酒馆中进行快递接单-打开地图之后,关闭地图时,酒馆的UI会消失。(实际上不应该消失)

  2. “禁用自动进食”总是需要重复进行设置的问题:设置了自动进食的食物,在用光后,重新制作出来该食物的时候,仍然需要重新设置一遍禁用自动进食。(Mod会固定进食状态,无需下次手动设置)

  3. 旅行者事件:触发旅行者事件之后,点击交易,如果这时候不想交易了,再退出来的时候,什么都没有了,这显然是不合理的,应该返回上一层页面。(Mod会记录玩家的选择,在退出来的时候,会根据选择来重新启动旅行者事件)

  4. 红点闪烁问题:游戏会频繁地触发人物技能点的红点闪烁,Mod通过稍微暴力的方式解决了这个问题,在大多数时候不会有红点闪烁。(即使是有,您可以随意点击一个UI,就可以关闭红点闪烁。)

  5. 新增Esc快捷键功能:在游戏中,按下Esc键可以快速退出当前界面,Mod会在大多数界面中添加Esc快捷键,方便玩家快速退出。不用手动点击。

  6. 交易bug:在交易的时候,有可能会顺走您的高品质物品(传奇物品),本Mod重写并修复了原代码中交易部分的逻辑,默认从低品质的物品开始交易,避免被迫交易传奇物品。

  7. 新增数字输入框:在游戏中,有些地方需要输入数字,比如在酒馆交易的时候。Mod增加了一个数字输入框,可以方便玩家输入数字。

  8. 新增搜索框:游戏中地图UI进行搜索的时候,提供了一个输入框,便于玩家进行搜索。

  9. 提示弹窗:在交易的时候,很有可能因为误操作而导致没有选择任何支付用品,进而导致乘员的口才无缘无故-1,Mod提供了一个弹窗,会在第一次提示玩家。

该Mod会随着游戏推进而不断更新(持续维护)

About

A game mod for Wasteland Express, aiming at optimizing the game.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages