mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-20 02:45:52 +01:00
Merge branch 'development' into dungeon-scripts
This commit is contained in:
@@ -3,6 +3,7 @@ package emu.grasscutter.server.packet.send;
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.shop.ShopInfo;
|
||||
import emu.grasscutter.game.shop.ShopLimit;
|
||||
import emu.grasscutter.game.shop.ShopManager;
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
@@ -10,13 +11,13 @@ import emu.grasscutter.net.proto.GetShopRspOuterClass;
|
||||
import emu.grasscutter.net.proto.ItemParamOuterClass;
|
||||
import emu.grasscutter.net.proto.ShopGoodsOuterClass.ShopGoods;
|
||||
import emu.grasscutter.net.proto.ShopOuterClass.Shop;
|
||||
import emu.grasscutter.utils.Utils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class PacketGetShopRsp extends BasePacket {
|
||||
|
||||
public PacketGetShopRsp(Player inv, int shopType) {
|
||||
super(PacketOpcodes.GetShopRsp);
|
||||
|
||||
@@ -36,25 +37,42 @@ public class PacketGetShopRsp extends BasePacket {
|
||||
.setGoodsItem(ItemParamOuterClass.ItemParam.newBuilder().setItemId(info.getGoodsItem().getId()).setCount(info.getGoodsItem().getCount()).build())
|
||||
.setScoin(info.getScoin())
|
||||
.setHcoin(info.getHcoin())
|
||||
.setBoughtNum(inv.getGoodsLimitNum(info.getGoodsId()))
|
||||
.setBuyLimit(info.getBuyLimit())
|
||||
.setBeginTime(info.getBeginTime())
|
||||
.setEndTime(info.getEndTime())
|
||||
.setNextRefreshTime(info.getNextRefreshTime())
|
||||
.setMinLevel(info.getMinLevel())
|
||||
.setMaxLevel(info.getMaxLevel())
|
||||
.addAllPreGoodsIdList(info.getPreGoodsIdList())
|
||||
.setMcoin(info.getMcoin())
|
||||
.setDisableType(info.getDisableType())
|
||||
.setSecondarySheetId(info.getSecondarySheetId());
|
||||
if (info.getCostItemList() != null) {
|
||||
goods.addAllCostItemList(info.getCostItemList().stream().map(x -> ItemParamOuterClass.ItemParam.newBuilder().setItemId(x.getId()).setCount(x.getCount()).build()).collect(Collectors.toList()));
|
||||
}
|
||||
if (info.getPreGoodsIdList() != null) {
|
||||
goods.addAllPreGoodsIdList(info.getPreGoodsIdList());
|
||||
}
|
||||
|
||||
int currentTs = Utils.getCurrentSeconds();
|
||||
ShopLimit currentShopLimit = inv.getGoodsLimit(info.getGoodsId());
|
||||
int nextRefreshTime = ShopManager.getShopNextRefreshTime(info);
|
||||
if (currentShopLimit != null) {
|
||||
if (currentShopLimit.getNextRefreshTime() < currentTs) { // second game day
|
||||
currentShopLimit.setHasBoughtInPeriod(0);
|
||||
currentShopLimit.setNextRefreshTime(nextRefreshTime);
|
||||
}
|
||||
goods.setBoughtNum(currentShopLimit.getHasBoughtInPeriod());
|
||||
goods.setNextRefreshTime(currentShopLimit.getNextRefreshTime());
|
||||
} else {
|
||||
inv.addShopLimit(goods.getGoodsId(), 0, nextRefreshTime); // save generated refresh time
|
||||
goods.setNextRefreshTime(nextRefreshTime);
|
||||
}
|
||||
|
||||
goodsList.add(goods.build());
|
||||
}
|
||||
shop.addAllGoodsList(goodsList);
|
||||
}
|
||||
|
||||
inv.save();
|
||||
this.setData(GetShopRspOuterClass.GetShopRsp.newBuilder().setShop(shop).build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.entity.GameEntity;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.VehicleInteractTypeOuterClass.VehicleInteractType;
|
||||
import emu.grasscutter.net.proto.VehicleInteractRspOuterClass.VehicleInteractRsp;
|
||||
import emu.grasscutter.net.proto.VehicleMemberOuterClass.VehicleMember;
|
||||
|
||||
public class PacketVehicleInteractRsp extends BasePacket {
|
||||
|
||||
public PacketVehicleInteractRsp(Player player, int entityId, VehicleInteractType interactType) {
|
||||
super(PacketOpcodes.VehicleInteractRsp);
|
||||
VehicleInteractRsp.Builder proto = VehicleInteractRsp.newBuilder();
|
||||
|
||||
GameEntity vehicle = player.getScene().getEntityById(entityId);
|
||||
if(vehicle != null) {
|
||||
proto.setEntityId(vehicle.getId());
|
||||
proto.setInteractType(interactType);
|
||||
|
||||
VehicleMember vehicleMember = VehicleMember.newBuilder()
|
||||
.setUid(player.getUid())
|
||||
.setAvatarGuid(player.getTeamManager().getCurrentCharacterGuid())
|
||||
.build();
|
||||
|
||||
proto.setMember(vehicleMember);
|
||||
}
|
||||
this.setData(proto.build());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.entity.EntityVehicle;
|
||||
import emu.grasscutter.game.props.FightProperty;
|
||||
import emu.grasscutter.game.entity.GameEntity;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.VehicleSpawnRspOuterClass.VehicleSpawnRsp;
|
||||
|
||||
import emu.grasscutter.utils.Position;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||
|
||||
public class PacketVehicleSpawnRsp extends BasePacket {
|
||||
|
||||
public PacketVehicleSpawnRsp(Player player, int vehicleId, int pointId, Position pos, Position rot) {
|
||||
super(PacketOpcodes.VehicleSpawnRsp);
|
||||
VehicleSpawnRsp.Builder proto = VehicleSpawnRsp.newBuilder();
|
||||
|
||||
EntityVehicle vehicle = new EntityVehicle(player.getScene(), player, vehicleId, pointId, pos, rot);
|
||||
|
||||
switch (vehicleId) {
|
||||
// TODO: Not hardcode this. Waverider (skiff)
|
||||
case 45001001,45001002 -> {
|
||||
vehicle.addFightProperty(FightProperty.FIGHT_PROP_BASE_HP, 10000);
|
||||
vehicle.addFightProperty(FightProperty.FIGHT_PROP_BASE_ATTACK, 100);
|
||||
vehicle.addFightProperty(FightProperty.FIGHT_PROP_CUR_ATTACK, 100);
|
||||
vehicle.addFightProperty(FightProperty.FIGHT_PROP_CUR_HP, 10000);
|
||||
vehicle.addFightProperty(FightProperty.FIGHT_PROP_CUR_DEFENSE, 0);
|
||||
vehicle.addFightProperty(FightProperty.FIGHT_PROP_CUR_SPEED, 0);
|
||||
vehicle.addFightProperty(FightProperty.FIGHT_PROP_CHARGE_EFFICIENCY, 0);
|
||||
vehicle.addFightProperty(FightProperty.FIGHT_PROP_MAX_HP, 10000);
|
||||
}
|
||||
default -> {}
|
||||
}
|
||||
|
||||
player.getScene().addEntity(vehicle);
|
||||
|
||||
proto.setVehicleId(vehicleId);
|
||||
proto.setEntityId(vehicle.getId());
|
||||
|
||||
this.setData(proto.build());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user