Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
ziqian zhang
Grasscutter
Commits
694b5c15
Commit
694b5c15
authored
Apr 28, 2022
by
KingRainbow44
Browse files
Merge branch 'development' into api
parents
d32f706c
d1e5fad9
Changes
48
Hide whitespace changes
Inline
Side-by-side
src/main/java/emu/grasscutter/server/packet/send/PacketChangeAvatarRsp.java
View file @
694b5c15
...
@@ -11,7 +11,7 @@ public class PacketChangeAvatarRsp extends BasePacket {
...
@@ -11,7 +11,7 @@ public class PacketChangeAvatarRsp extends BasePacket {
super
(
PacketOpcodes
.
ChangeAvatarRsp
);
super
(
PacketOpcodes
.
ChangeAvatarRsp
);
ChangeAvatarRsp
p
=
ChangeAvatarRsp
.
newBuilder
()
ChangeAvatarRsp
p
=
ChangeAvatarRsp
.
newBuilder
()
.
setRetcode
(
RetcodeOuterClass
.
Retcode
.
RET_S
VR_ERROR
_VALUE
)
.
setRetcode
(
RetcodeOuterClass
.
Retcode
.
RET_S
UCC
_VALUE
)
.
setCurGuid
(
guid
)
.
setCurGuid
(
guid
)
.
build
();
.
build
();
...
...
src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerFriendListRsp.java
View file @
694b5c15
...
@@ -8,7 +8,7 @@ import emu.grasscutter.net.packet.PacketOpcodes;
...
@@ -8,7 +8,7 @@ import emu.grasscutter.net.packet.PacketOpcodes;
import
emu.grasscutter.net.proto.FriendBriefOuterClass.FriendBrief
;
import
emu.grasscutter.net.proto.FriendBriefOuterClass.FriendBrief
;
import
emu.grasscutter.net.proto.FriendOnlineStateOuterClass.FriendOnlineState
;
import
emu.grasscutter.net.proto.FriendOnlineStateOuterClass.FriendOnlineState
;
import
emu.grasscutter.net.proto.GetPlayerFriendListRspOuterClass.GetPlayerFriendListRsp
;
import
emu.grasscutter.net.proto.GetPlayerFriendListRspOuterClass.GetPlayerFriendListRsp
;
import
emu.grasscutter.net.proto.
HeadImageOuterClass.HeadImag
e
;
import
emu.grasscutter.net.proto.
ProfilePictureOuterClass.ProfilePictur
e
;
import
emu.grasscutter.net.proto.PlatformTypeOuterClass
;
import
emu.grasscutter.net.proto.PlatformTypeOuterClass
;
public
class
PacketGetPlayerFriendListRsp
extends
BasePacket
{
public
class
PacketGetPlayerFriendListRsp
extends
BasePacket
{
...
@@ -20,7 +20,7 @@ public class PacketGetPlayerFriendListRsp extends BasePacket {
...
@@ -20,7 +20,7 @@ public class PacketGetPlayerFriendListRsp extends BasePacket {
.
setUid
(
GameConstants
.
SERVER_CONSOLE_UID
)
.
setUid
(
GameConstants
.
SERVER_CONSOLE_UID
)
.
setNickname
(
"Server"
)
.
setNickname
(
"Server"
)
.
setLevel
(
1
)
.
setLevel
(
1
)
.
set
AvatarId
(
HeadImag
e
.
newBuilder
().
setAvatarId
(
GameConstants
.
MAIN_CHARACTER_FEMALE
)
.
getAvatarId
()
)
.
set
ProfilePicture
(
ProfilePictur
e
.
newBuilder
().
setAvatarId
(
GameConstants
.
MAIN_CHARACTER_FEMALE
))
.
setWorldLevel
(
0
)
.
setWorldLevel
(
0
)
.
setSignature
(
""
)
.
setSignature
(
""
)
.
setLastActiveTime
((
int
)
(
System
.
currentTimeMillis
()
/
1000
f
))
.
setLastActiveTime
((
int
)
(
System
.
currentTimeMillis
()
/
1000
f
))
...
...
src/main/java/emu/grasscutter/server/packet/send/PacketGetShopRsp.java
View file @
694b5c15
...
@@ -3,6 +3,7 @@ package emu.grasscutter.server.packet.send;
...
@@ -3,6 +3,7 @@ package emu.grasscutter.server.packet.send;
import
emu.grasscutter.Grasscutter
;
import
emu.grasscutter.Grasscutter
;
import
emu.grasscutter.game.player.Player
;
import
emu.grasscutter.game.player.Player
;
import
emu.grasscutter.game.shop.ShopInfo
;
import
emu.grasscutter.game.shop.ShopInfo
;
import
emu.grasscutter.game.shop.ShopLimit
;
import
emu.grasscutter.game.shop.ShopManager
;
import
emu.grasscutter.game.shop.ShopManager
;
import
emu.grasscutter.net.packet.BasePacket
;
import
emu.grasscutter.net.packet.BasePacket
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
...
@@ -10,13 +11,13 @@ import emu.grasscutter.net.proto.GetShopRspOuterClass;
...
@@ -10,13 +11,13 @@ import emu.grasscutter.net.proto.GetShopRspOuterClass;
import
emu.grasscutter.net.proto.ItemParamOuterClass
;
import
emu.grasscutter.net.proto.ItemParamOuterClass
;
import
emu.grasscutter.net.proto.ShopGoodsOuterClass.ShopGoods
;
import
emu.grasscutter.net.proto.ShopGoodsOuterClass.ShopGoods
;
import
emu.grasscutter.net.proto.ShopOuterClass.Shop
;
import
emu.grasscutter.net.proto.ShopOuterClass.Shop
;
import
emu.grasscutter.utils.Utils
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
public
class
PacketGetShopRsp
extends
BasePacket
{
public
class
PacketGetShopRsp
extends
BasePacket
{
public
PacketGetShopRsp
(
Player
inv
,
int
shopType
)
{
public
PacketGetShopRsp
(
Player
inv
,
int
shopType
)
{
super
(
PacketOpcodes
.
GetShopRsp
);
super
(
PacketOpcodes
.
GetShopRsp
);
...
@@ -36,25 +37,42 @@ public class PacketGetShopRsp extends BasePacket {
...
@@ -36,25 +37,42 @@ public class PacketGetShopRsp extends BasePacket {
.
setGoodsItem
(
ItemParamOuterClass
.
ItemParam
.
newBuilder
().
setItemId
(
info
.
getGoodsItem
().
getId
()).
setCount
(
info
.
getGoodsItem
().
getCount
()).
build
())
.
setGoodsItem
(
ItemParamOuterClass
.
ItemParam
.
newBuilder
().
setItemId
(
info
.
getGoodsItem
().
getId
()).
setCount
(
info
.
getGoodsItem
().
getCount
()).
build
())
.
setScoin
(
info
.
getScoin
())
.
setScoin
(
info
.
getScoin
())
.
setHcoin
(
info
.
getHcoin
())
.
setHcoin
(
info
.
getHcoin
())
.
setBoughtNum
(
inv
.
getGoodsLimitNum
(
info
.
getGoodsId
()))
.
setBuyLimit
(
info
.
getBuyLimit
())
.
setBuyLimit
(
info
.
getBuyLimit
())
.
setBeginTime
(
info
.
getBeginTime
())
.
setBeginTime
(
info
.
getBeginTime
())
.
setEndTime
(
info
.
getEndTime
())
.
setEndTime
(
info
.
getEndTime
())
.
setNextRefreshTime
(
info
.
getNextRefreshTime
())
.
setMinLevel
(
info
.
getMinLevel
())
.
setMinLevel
(
info
.
getMinLevel
())
.
setMaxLevel
(
info
.
getMaxLevel
())
.
setMaxLevel
(
info
.
getMaxLevel
())
.
addAllPreGoodsIdList
(
info
.
getPreGoodsIdList
())
.
setMcoin
(
info
.
getMcoin
())
.
setMcoin
(
info
.
getMcoin
())
.
setDisableType
(
info
.
getDisableType
())
.
setDisableType
(
info
.
getDisableType
())
.
setSecondarySheetId
(
info
.
getSecondarySheetId
());
.
setSecondarySheetId
(
info
.
getSecondarySheetId
());
if
(
info
.
getCostItemList
()
!=
null
)
{
if
(
info
.
getCostItemList
()
!=
null
)
{
goods
.
addAllCostItemList
(
info
.
getCostItemList
().
stream
().
map
(
x
->
ItemParamOuterClass
.
ItemParam
.
newBuilder
().
setItemId
(
x
.
getId
()).
setCount
(
x
.
getCount
()).
build
()).
collect
(
Collectors
.
toList
()));
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
());
goodsList
.
add
(
goods
.
build
());
}
}
shop
.
addAllGoodsList
(
goodsList
);
shop
.
addAllGoodsList
(
goodsList
);
}
}
inv
.
save
();
this
.
setData
(
GetShopRspOuterClass
.
GetShopRsp
.
newBuilder
().
setShop
(
shop
).
build
());
this
.
setData
(
GetShopRspOuterClass
.
GetShopRsp
.
newBuilder
().
setShop
(
shop
).
build
());
}
}
}
}
src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerHeadImageRsp.java
View file @
694b5c15
...
@@ -3,7 +3,7 @@ package emu.grasscutter.server.packet.send;
...
@@ -3,7 +3,7 @@ package emu.grasscutter.server.packet.send;
import
emu.grasscutter.game.player.Player
;
import
emu.grasscutter.game.player.Player
;
import
emu.grasscutter.net.packet.BasePacket
;
import
emu.grasscutter.net.packet.BasePacket
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.proto.
HeadImageOuterClass.HeadImag
e
;
import
emu.grasscutter.net.proto.
ProfilePictureOuterClass.ProfilePictur
e
;
import
emu.grasscutter.net.proto.SetPlayerHeadImageRspOuterClass.SetPlayerHeadImageRsp
;
import
emu.grasscutter.net.proto.SetPlayerHeadImageRspOuterClass.SetPlayerHeadImageRsp
;
public
class
PacketSetPlayerHeadImageRsp
extends
BasePacket
{
public
class
PacketSetPlayerHeadImageRsp
extends
BasePacket
{
...
@@ -12,7 +12,7 @@ public class PacketSetPlayerHeadImageRsp extends BasePacket {
...
@@ -12,7 +12,7 @@ public class PacketSetPlayerHeadImageRsp extends BasePacket {
super
(
PacketOpcodes
.
SetPlayerHeadImageRsp
);
super
(
PacketOpcodes
.
SetPlayerHeadImageRsp
);
SetPlayerHeadImageRsp
proto
=
SetPlayerHeadImageRsp
.
newBuilder
()
SetPlayerHeadImageRsp
proto
=
SetPlayerHeadImageRsp
.
newBuilder
()
.
set
AvatarId
(
HeadImag
e
.
newBuilder
().
setAvatarId
(
player
.
getHeadImage
())
.
getAvatarId
()
)
.
set
ProfilePicture
(
ProfilePictur
e
.
newBuilder
().
setAvatarId
(
player
.
getHeadImage
()))
.
build
();
.
build
();
this
.
setData
(
proto
);
this
.
setData
(
proto
);
...
...
src/main/java/emu/grasscutter/server/packet/send/PacketUpdatePlayerShowAvatarListRsp.java
0 → 100644
View file @
694b5c15
package
emu.grasscutter.server.packet.send
;
import
emu.grasscutter.net.packet.BasePacket
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.proto.UpdatePlayerShowAvatarListRspOuterClass.UpdatePlayerShowAvatarListRsp
;
import
java.util.List
;
public
class
PacketUpdatePlayerShowAvatarListRsp
extends
BasePacket
{
public
PacketUpdatePlayerShowAvatarListRsp
(
boolean
isShowAvatar
,
List
<
Integer
>
avatarIds
)
{
super
(
PacketOpcodes
.
UpdatePlayerShowAvatarListRsp
);
UpdatePlayerShowAvatarListRsp
proto
=
UpdatePlayerShowAvatarListRsp
.
newBuilder
()
.
setIsShowAvatar
(
isShowAvatar
)
.
addAllShowAvatarIdList
(
avatarIds
)
.
setRetcode
(
0
)
.
build
();
this
.
setData
(
proto
);
}
}
src/main/java/emu/grasscutter/server/packet/send/PacketVehicleInteractRsp.java
0 → 100644
View file @
694b5c15
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
());
}
}
src/main/java/emu/grasscutter/server/packet/send/PacketVehicleSpawnRsp.java
0 → 100644
View file @
694b5c15
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
());
}
}
src/main/java/emu/grasscutter/utils/Utils.java
View file @
694b5c15
...
@@ -3,6 +3,8 @@ package emu.grasscutter.utils;
...
@@ -3,6 +3,8 @@ package emu.grasscutter.utils;
import
java.io.*
;
import
java.io.*
;
import
java.nio.file.Files
;
import
java.nio.file.Files
;
import
java.nio.file.StandardCopyOption
;
import
java.nio.file.StandardCopyOption
;
import
java.time.*
;
import
java.time.temporal.TemporalAdjusters
;
import
java.util.Random
;
import
java.util.Random
;
import
emu.grasscutter.Config
;
import
emu.grasscutter.Config
;
...
@@ -191,4 +193,40 @@ public final class Utils {
...
@@ -191,4 +193,40 @@ public final class Utils {
if
(
exit
)
System
.
exit
(
1
);
if
(
exit
)
System
.
exit
(
1
);
}
}
public
static
int
GetNextTimestampOfThisHour
(
int
hour
,
String
timeZone
,
int
param
)
{
ZonedDateTime
zonedDateTime
=
ZonedDateTime
.
now
(
ZoneId
.
of
(
timeZone
));
for
(
int
i
=
0
;
i
<
param
;
i
++){
if
(
zonedDateTime
.
getHour
()
<
hour
)
{
zonedDateTime
=
zonedDateTime
.
withHour
(
hour
).
withMinute
(
0
).
withSecond
(
0
);
}
else
{
zonedDateTime
=
zonedDateTime
.
plusDays
(
1
).
withHour
(
hour
).
withMinute
(
0
).
withSecond
(
0
);
}
}
return
(
int
)
zonedDateTime
.
toInstant
().
atZone
(
ZoneOffset
.
UTC
).
toEpochSecond
();
}
public
static
int
GetNextTimestampOfThisHourInNextWeek
(
int
hour
,
String
timeZone
,
int
param
)
{
ZonedDateTime
zonedDateTime
=
ZonedDateTime
.
now
(
ZoneId
.
of
(
timeZone
));
for
(
int
i
=
0
;
i
<
param
;
i
++)
{
if
(
zonedDateTime
.
getDayOfWeek
()
==
DayOfWeek
.
MONDAY
&&
zonedDateTime
.
getHour
()
<
hour
)
{
zonedDateTime
=
ZonedDateTime
.
now
(
ZoneId
.
of
(
timeZone
)).
withHour
(
hour
).
withMinute
(
0
).
withSecond
(
0
);
}
else
{
zonedDateTime
=
zonedDateTime
.
with
(
TemporalAdjusters
.
next
(
DayOfWeek
.
MONDAY
)).
withHour
(
hour
).
withMinute
(
0
).
withSecond
(
0
);
}
}
return
(
int
)
zonedDateTime
.
toInstant
().
atZone
(
ZoneOffset
.
UTC
).
toEpochSecond
();
}
public
static
int
GetNextTimestampOfThisHourInNextMonth
(
int
hour
,
String
timeZone
,
int
param
)
{
ZonedDateTime
zonedDateTime
=
ZonedDateTime
.
now
(
ZoneId
.
of
(
timeZone
));
for
(
int
i
=
0
;
i
<
param
;
i
++)
{
if
(
zonedDateTime
.
getDayOfMonth
()
==
1
&&
zonedDateTime
.
getHour
()
<
hour
)
{
zonedDateTime
=
ZonedDateTime
.
now
(
ZoneId
.
of
(
timeZone
)).
withHour
(
hour
).
withMinute
(
0
).
withSecond
(
0
);
}
else
{
zonedDateTime
=
zonedDateTime
.
with
(
TemporalAdjusters
.
firstDayOfNextMonth
()).
withHour
(
hour
).
withMinute
(
0
).
withSecond
(
0
);
}
}
return
(
int
)
zonedDateTime
.
toInstant
().
atZone
(
ZoneOffset
.
UTC
).
toEpochSecond
();
}
}
}
Prev
1
2
3
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment