init
This commit is contained in:
60
game_server/game/chat/command/give.py
Normal file
60
game_server/game/chat/command/give.py
Normal file
@@ -0,0 +1,60 @@
|
||||
from game_server.game.chat.decorators import Command
|
||||
from game_server.net.session import PlayerSession
|
||||
from game_server.resource import ResourceManager
|
||||
from game_server.resource.configdb.equipment_config import EquipmentConfig
|
||||
from game_server.resource.configdb.relic_config import RelicConfigData
|
||||
from game_server.resource.configdb.relic_main_affix_config import RelicMainAffixConfigData
|
||||
from game_server.resource.configdb.relic_sub_affix_config import RelicSubAffixConfigData
|
||||
from database.inventory.inventory_data import SubAffix
|
||||
|
||||
@Command(
|
||||
prefix="give",
|
||||
usage="/give",
|
||||
)
|
||||
async def execute(session:PlayerSession, item_id, param1=None, param2=None, param3=None, param4=None, param5=None):
|
||||
try:
|
||||
sync = False
|
||||
lightcones = ResourceManager.instance().find_by_index(EquipmentConfig,item_id)
|
||||
relics = ResourceManager.instance().find_by_index(RelicConfigData,item_id)
|
||||
|
||||
if lightcones:
|
||||
rank = 1
|
||||
if param1 and param1.startswith("r") and len(param1) == 2:
|
||||
rank_value = param1[1]
|
||||
if rank_value.isdigit() and 1 <= int(rank_value) <= 5:
|
||||
rank = int(rank_value)
|
||||
elif rank_value.isdigit() and int(rank_value) > 5:
|
||||
rank = 5
|
||||
item = session.player.add_lightcone(item_id, rank)
|
||||
if item:
|
||||
session.player.inventory_manager[item.unique_id] = item
|
||||
sync = True
|
||||
elif relics:
|
||||
main_stat = 0
|
||||
main_property = ""
|
||||
main_affix_group = ResourceManager.instance().find_all_by_index(RelicMainAffixConfigData, relics.MainAffixGroup)
|
||||
sub_affix_list = []
|
||||
|
||||
if param1 and param1.startswith("s") and len(param1) == 2 and param1[1].isdigit():
|
||||
main_affix = next((affix for affix in main_affix_group if affix.AffixID == int(param1[1])))
|
||||
if main_affix:
|
||||
main_stat = main_affix.AffixID
|
||||
main_property = main_affix.Property
|
||||
|
||||
for param in [param2, param3, param4, param5]:
|
||||
if param and len(param) >= 3 and ":" in param:
|
||||
parts = param.split(":")
|
||||
if len(parts) == 2 and all(part.isdigit() for part in parts):
|
||||
sub_affix_data = ResourceManager.instance().find_all_by_index(RelicSubAffixConfigData, relics.SubAffixGroup)
|
||||
for affix in sub_affix_data:
|
||||
if affix.AffixID == int(parts[0]) and affix.Property != main_property:
|
||||
sub_affix_list.append(SubAffix(id=int(parts[0]), count=int(parts[1]), step=int(parts[1]) * 2))
|
||||
item = session.player.add_relic(item_id,main_stat,sub_affix_list)
|
||||
if item:
|
||||
session.player.inventory_manager[item.unique_id] = item
|
||||
sync = True
|
||||
if sync:
|
||||
await session.notify(session.player.PlayerSyncProto())
|
||||
return "GIVE"
|
||||
except Exception as e:
|
||||
print(e)
|
||||
Reference in New Issue
Block a user