diff --git a/conf/server/GameSetting.txt b/conf/server/GameSetting.txt index c6e311ddf..b585002df 100644 --- a/conf/server/GameSetting.txt +++ b/conf/server/GameSetting.txt @@ -1,3 +1,3 @@ Id BornItem SpeedFormula InitialEnergy EnergyRecoverSpeed ActionPowerRormula Speed HeroNumlimit EquipNumlimit WorldTalking BornPosition int mut,int#int,2 mut,float#float,1 int mut,int#int,1 mut,int#int,1 mut,int#int,1 int int int mut,int#int,1 -1 10008#1|10013#1|10023#1|1503#8 0#0#0.3164#0 100 60#1 0#0#1#0 70#100 999 9999 1 08#19 +1 10008#1|10013#1|10023#1|1503#8|2#60 0#0#0.3164#0 100 60#1 0#0#1#0 70#100 999 9999 1 08#19 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java index 7ac9f8f4a..5f48565cc 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java @@ -212,20 +212,35 @@ public class MapManager extends MongoBase { if (itemMap.containsKey(Global.STAMINA)) { itemNum = itemMap.get(Global.STAMINA).getItemNum(); } - MapManager mapManager = user.getMapManager(); - int lastUpdateEnergyTime = mapManager.getLastUpdateEnergyTime(); - if(itemNum < playerInfoManager.getMaxStamina()){ - int updateTime = (int)(System.currentTimeMillis()/1000); - int[] energyRecoverSpeed = SGameSetting.getGameSetting().getEnergyRecoverSpeed(); - int addValue = (updateTime - lastUpdateEnergyTime)/60/energyRecoverSpeed[1] * energyRecoverSpeed[0]; - if(addValue != 0){ - int curEnergy = MathUtils.setBetweenWithMax(itemNum + addValue,0,SGameSetting.getGameSetting().getInitialEnergy()); - ItemUtil.drop(user, StringUtil.parseFiledInt2( Global.STAMINA+"#"+curEnergy)); - mapManager.setLastUpdateEnergyTime(updateTime); + Item item = user.getItemManager().getItemMap().get(Global.STAMINA); + int updateTime = (int)(System.currentTimeMillis()/1000); + int lastUpdateEnergyTime = item.getEndingTime(); + if ((updateTime -lastUpdateEnergyTime)/60 >= 1){ + if(itemNum < playerInfoManager.getMaxStamina()){ + int[] energyRecoverSpeed = SGameSetting.getGameSetting().getEnergyRecoverSpeed(); + int addValue = (updateTime - lastUpdateEnergyTime)/60/energyRecoverSpeed[1] * energyRecoverSpeed[0]; + if(addValue != 0){ + int curEnergy = MathUtils.setBetweenWithMax(itemNum + addValue,0,SGameSetting.getGameSetting().getInitialEnergy()); + item.setItemNum(curEnergy>playerInfoManager.getMaxStamina()?playerInfoManager.getMaxStamina():curEnergy); + setLastUpdateEnergyTime(item, updateTime, lastUpdateEnergyTime); + } + }else { + setLastUpdateEnergyTime(item, updateTime, lastUpdateEnergyTime); } } } + private static void setLastUpdateEnergyTime(Item item, int updateTime, int lastUpdateEnergyTime) throws Exception { + int time = lastUpdateEnergyTime + ((updateTime -lastUpdateEnergyTime)/60 )* 60; + item.setEndingTime(time); + } + + public static void main(String [] args){ + int lastUpdateEnergyTime = 1552170600; + int nowTime = 1552170735; + int time = lastUpdateEnergyTime + ((nowTime -lastUpdateEnergyTime)/60 )* 60; + System.out.println(time); + } public void setLastUpdateEnergyTime(int lastUpdateEnergyTime) { updateString("lastUpdateEnergyTime", lastUpdateEnergyTime); this.lastUpdateEnergyTime = lastUpdateEnergyTime; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java index 3a11d78fd..5fe8aae76 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -396,12 +396,15 @@ public class ItemUtil { } - public static List getAllItem(User user){ + public static List getAllItem(User user) throws Exception { List itemList = new ArrayList<>(); ItemManager itemManager = user.getItemManager(); Map itemMap = itemManager.getItemMap(); if (itemMap.size() !=0 ){ for (Map.Entry entry :itemMap.entrySet()){ + if (entry.getKey() ==Global.STAMINA){ + MapManager.getEnergy(user); + } itemList.add(CBean2Proto.getItem(entry.getValue(),-1)); } }