From 62959f80e499a5cdb77a241adce93dc1493cc5a3 Mon Sep 17 00:00:00 2001 From: "PC-20230316NUNE\\Administrator" <2858626794@qq.com> Date: Mon, 27 Nov 2023 19:00:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DataTables/Datas/__tables__.xlsx | Bin 10189 -> 10093 bytes DataTables/Datas/战斗/属性.xlsx | Bin 0 -> 9710 bytes DataTables/Datas/战斗/角色/角色初始属性.xlsx | Bin 0 -> 9729 bytes .../assets/resources/config/data/schema.ts | 138 ++++++++++++++++++ .../resources/config/json/tbgattribute.json | 12 ++ .../config/json/tbgattribute.json.meta | 11 ++ .../config/json/tbgrolebaseattribute.json | 7 + .../json/tbgrolebaseattribute.json.meta | 11 ++ JisolGameServer/JNGame | 2 +- .../src/main/java/cfg/TB/TbGAttribute.java | 55 +++++++ .../java/cfg/TB/TbGRoleBaseAttribute.java | 55 +++++++ .../Main/src/main/java/cfg/Tables.java | 6 + .../Main/src/main/java/cfg/TbGAttribute.java | 37 +++++ .../main/java/cfg/TbGRoleBaseAttribute.java | 37 +++++ .../controller/game/GPlayerPetController.java | 18 +++ .../game/mode/GOnHookController.java | 2 + .../service/impl/ResourceServiceImpl.java | 3 + .../src/main/resources/json/tbgattribute.json | 12 ++ .../resources/json/tbgrolebaseattribute.json | 7 + 19 files changed, 412 insertions(+), 1 deletion(-) create mode 100644 DataTables/Datas/战斗/属性.xlsx create mode 100644 DataTables/Datas/战斗/角色/角色初始属性.xlsx create mode 100644 JisolGameCocos/assets/resources/config/json/tbgattribute.json create mode 100644 JisolGameCocos/assets/resources/config/json/tbgattribute.json.meta create mode 100644 JisolGameCocos/assets/resources/config/json/tbgrolebaseattribute.json create mode 100644 JisolGameCocos/assets/resources/config/json/tbgrolebaseattribute.json.meta create mode 100644 JisolGameServer/Main/src/main/java/cfg/TB/TbGAttribute.java create mode 100644 JisolGameServer/Main/src/main/java/cfg/TB/TbGRoleBaseAttribute.java create mode 100644 JisolGameServer/Main/src/main/java/cfg/TbGAttribute.java create mode 100644 JisolGameServer/Main/src/main/java/cfg/TbGRoleBaseAttribute.java create mode 100644 JisolGameServer/Main/src/main/resources/json/tbgattribute.json create mode 100644 JisolGameServer/Main/src/main/resources/json/tbgrolebaseattribute.json diff --git a/DataTables/Datas/__tables__.xlsx b/DataTables/Datas/__tables__.xlsx index e696bca07a9b86e19cd618c9d2cac361fedfebf4..d883e1322fb233b0a35ec6b610b7f8fdb217032e 100644 GIT binary patch delta 5859 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 Saad7-9YoMTx(VWEzW)Qk; literal 0 HcmV?d00001 diff --git a/DataTables/Datas/战斗/角色/角色初始属性.xlsx b/DataTables/Datas/战斗/角色/角色初始属性.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e7456072dcd67f98c70ac8c534b5bd0cde5c4171 GIT binary patch literal 9729 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 + private _dataList: TB.TbGAttribute[] + constructor(_json_: any) { + this._dataMap = new Map() + this._dataList = [] + for(var _json2_ of _json_) { + let _v: TB.TbGAttribute + _v = new TB.TbGAttribute(_json2_) + this._dataList.push(_v) + this._dataMap.set(_v.id, _v) + } + } + + getDataMap(): Map { return this._dataMap; } + getDataList(): TB.TbGAttribute[] { return this._dataList; } + + get(key: number): TB.TbGAttribute | undefined { return this._dataMap.get(key); } + + resolve(tables:Tables) + { + for(let data of this._dataList) + { + data.resolve(tables) + } + } + +} + + + + +export class TbGRoleBaseAttribute{ + private _dataMap: Map + private _dataList: TB.TbGRoleBaseAttribute[] + constructor(_json_: any) { + this._dataMap = new Map() + this._dataList = [] + for(var _json2_ of _json_) { + let _v: TB.TbGRoleBaseAttribute + _v = new TB.TbGRoleBaseAttribute(_json2_) + this._dataList.push(_v) + this._dataMap.set(_v.id, _v) + } + } + + getDataMap(): Map { return this._dataMap; } + getDataList(): TB.TbGRoleBaseAttribute[] { return this._dataList; } + + get(key: number): TB.TbGRoleBaseAttribute | undefined { return this._dataMap.get(key); } + + resolve(tables:Tables) + { + for(let data of this._dataList) + { + data.resolve(tables) + } + } + +} + + + + type JsonLoader = (file: string) => any export class Tables { @@ -838,6 +968,10 @@ export class Tables { get TbGRoleUpStar(): TbGRoleUpStar { return this._TbGRoleUpStar;} private _TbSServerInfo: TbSServerInfo get TbSServerInfo(): TbSServerInfo { return this._TbSServerInfo;} + private _TbGAttribute: TbGAttribute + get TbGAttribute(): TbGAttribute { return this._TbGAttribute;} + private _TbGRoleBaseAttribute: TbGRoleBaseAttribute + get TbGRoleBaseAttribute(): TbGRoleBaseAttribute { return this._TbGRoleBaseAttribute;} constructor(loader: JsonLoader) { this._TbGGlobal = new TbGGlobal(loader('tbgglobal')) @@ -851,6 +985,8 @@ export class Tables { this._TbGRoleUpLevel = new TbGRoleUpLevel(loader('tbgroleuplevel')) this._TbGRoleUpStar = new TbGRoleUpStar(loader('tbgroleupstar')) this._TbSServerInfo = new TbSServerInfo(loader('tbsserverinfo')) + this._TbGAttribute = new TbGAttribute(loader('tbgattribute')) + this._TbGRoleBaseAttribute = new TbGRoleBaseAttribute(loader('tbgrolebaseattribute')) this._TbGGlobal.resolve(this) this._TbGRole.resolve(this) @@ -863,5 +999,7 @@ export class Tables { this._TbGRoleUpLevel.resolve(this) this._TbGRoleUpStar.resolve(this) this._TbSServerInfo.resolve(this) + this._TbGAttribute.resolve(this) + this._TbGRoleBaseAttribute.resolve(this) } } diff --git a/JisolGameCocos/assets/resources/config/json/tbgattribute.json b/JisolGameCocos/assets/resources/config/json/tbgattribute.json new file mode 100644 index 00000000..4ece033b --- /dev/null +++ b/JisolGameCocos/assets/resources/config/json/tbgattribute.json @@ -0,0 +1,12 @@ +[ + { + "id": 110001, + "name": "攻击", + "sign": "Attack" + }, + { + "id": 110002, + "name": "防御", + "sign": "Defend" + } +] \ No newline at end of file diff --git a/JisolGameCocos/assets/resources/config/json/tbgattribute.json.meta b/JisolGameCocos/assets/resources/config/json/tbgattribute.json.meta new file mode 100644 index 00000000..7bbc5504 --- /dev/null +++ b/JisolGameCocos/assets/resources/config/json/tbgattribute.json.meta @@ -0,0 +1,11 @@ +{ + "ver": "2.0.1", + "importer": "json", + "imported": true, + "uuid": "9f49c5b6-38df-450b-8700-3172b090f838", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": {} +} diff --git a/JisolGameCocos/assets/resources/config/json/tbgrolebaseattribute.json b/JisolGameCocos/assets/resources/config/json/tbgrolebaseattribute.json new file mode 100644 index 00000000..a5e7765b --- /dev/null +++ b/JisolGameCocos/assets/resources/config/json/tbgrolebaseattribute.json @@ -0,0 +1,7 @@ +[ + { + "id": 0, + "Attack": 10, + "Defend": 5 + } +] \ No newline at end of file diff --git a/JisolGameCocos/assets/resources/config/json/tbgrolebaseattribute.json.meta b/JisolGameCocos/assets/resources/config/json/tbgrolebaseattribute.json.meta new file mode 100644 index 00000000..43431ef3 --- /dev/null +++ b/JisolGameCocos/assets/resources/config/json/tbgrolebaseattribute.json.meta @@ -0,0 +1,11 @@ +{ + "ver": "2.0.1", + "importer": "json", + "imported": true, + "uuid": "588bcee5-9782-46ce-9cee-5b9de08327cd", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": {} +} diff --git a/JisolGameServer/JNGame b/JisolGameServer/JNGame index 0795f18e..cd18e8d3 160000 --- a/JisolGameServer/JNGame +++ b/JisolGameServer/JNGame @@ -1 +1 @@ -Subproject commit 0795f18e7e61b8f8f5bcef1b11fe388e290d031a +Subproject commit cd18e8d3444e584393b0dca23a1c11e0ab3c691f diff --git a/JisolGameServer/Main/src/main/java/cfg/TB/TbGAttribute.java b/JisolGameServer/Main/src/main/java/cfg/TB/TbGAttribute.java new file mode 100644 index 00000000..9850b756 --- /dev/null +++ b/JisolGameServer/Main/src/main/java/cfg/TB/TbGAttribute.java @@ -0,0 +1,55 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg.TB; + +import luban.*; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; + + +public final class TbGAttribute extends AbstractBean { + public TbGAttribute(JsonObject _buf) { + id = _buf.get("id").getAsInt(); + name = _buf.get("name").getAsString(); + sign = _buf.get("sign").getAsString(); + } + + public static TbGAttribute deserialize(JsonObject _buf) { + return new cfg.TB.TbGAttribute(_buf); + } + + /** + * id + */ + public final int id; + /** + * 属性名称 + */ + public final String name; + /** + * 属性标识 + */ + public final String sign; + + public static final int __ID__ = 1361501859; + + @Override + public int getTypeId() { return __ID__; } + + @Override + public String toString() { + return "{ " + + "(format_field_name __code_style field.name):" + id + "," + + "(format_field_name __code_style field.name):" + name + "," + + "(format_field_name __code_style field.name):" + sign + "," + + "}"; + } +} + diff --git a/JisolGameServer/Main/src/main/java/cfg/TB/TbGRoleBaseAttribute.java b/JisolGameServer/Main/src/main/java/cfg/TB/TbGRoleBaseAttribute.java new file mode 100644 index 00000000..6e9b3b13 --- /dev/null +++ b/JisolGameServer/Main/src/main/java/cfg/TB/TbGRoleBaseAttribute.java @@ -0,0 +1,55 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg.TB; + +import luban.*; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; + + +public final class TbGRoleBaseAttribute extends AbstractBean { + public TbGRoleBaseAttribute(JsonObject _buf) { + id = _buf.get("id").getAsInt(); + Attack = _buf.get("Attack").getAsInt(); + Defend = _buf.get("Defend").getAsInt(); + } + + public static TbGRoleBaseAttribute deserialize(JsonObject _buf) { + return new cfg.TB.TbGRoleBaseAttribute(_buf); + } + + /** + * 角色Id (0 则默认) + */ + public final int id; + /** + * 默认攻击属性 + */ + public final int Attack; + /** + * 默认防御属性 + */ + public final int Defend; + + public static final int __ID__ = 1489419004; + + @Override + public int getTypeId() { return __ID__; } + + @Override + public String toString() { + return "{ " + + "(format_field_name __code_style field.name):" + id + "," + + "(format_field_name __code_style field.name):" + Attack + "," + + "(format_field_name __code_style field.name):" + Defend + "," + + "}"; + } +} + diff --git a/JisolGameServer/Main/src/main/java/cfg/Tables.java b/JisolGameServer/Main/src/main/java/cfg/Tables.java index e5e0bb64..2c4769fa 100644 --- a/JisolGameServer/Main/src/main/java/cfg/Tables.java +++ b/JisolGameServer/Main/src/main/java/cfg/Tables.java @@ -41,6 +41,10 @@ public final class Tables public cfg.TbGRoleUpStar getTbGRoleUpStar() { return _tbgroleupstar; } private final cfg.TbSServerInfo _tbsserverinfo; public cfg.TbSServerInfo getTbSServerInfo() { return _tbsserverinfo; } + private final cfg.TbGAttribute _tbgattribute; + public cfg.TbGAttribute getTbGAttribute() { return _tbgattribute; } + private final cfg.TbGRoleBaseAttribute _tbgrolebaseattribute; + public cfg.TbGRoleBaseAttribute getTbGRoleBaseAttribute() { return _tbgrolebaseattribute; } public Tables(IJsonLoader loader) throws java.io.IOException { _tbgglobal = new cfg.TbGGlobal(loader.load("tbgglobal")); @@ -54,6 +58,8 @@ public final class Tables _tbgroleuplevel = new cfg.TbGRoleUpLevel(loader.load("tbgroleuplevel")); _tbgroleupstar = new cfg.TbGRoleUpStar(loader.load("tbgroleupstar")); _tbsserverinfo = new cfg.TbSServerInfo(loader.load("tbsserverinfo")); + _tbgattribute = new cfg.TbGAttribute(loader.load("tbgattribute")); + _tbgrolebaseattribute = new cfg.TbGRoleBaseAttribute(loader.load("tbgrolebaseattribute")); } } diff --git a/JisolGameServer/Main/src/main/java/cfg/TbGAttribute.java b/JisolGameServer/Main/src/main/java/cfg/TbGAttribute.java new file mode 100644 index 00000000..36bfb628 --- /dev/null +++ b/JisolGameServer/Main/src/main/java/cfg/TbGAttribute.java @@ -0,0 +1,37 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg; + +import luban.*; +import com.google.gson.JsonElement; + + +public final class TbGAttribute { + private final java.util.HashMap _dataMap; + private final java.util.ArrayList _dataList; + + public TbGAttribute(JsonElement _buf) { + _dataMap = new java.util.HashMap(); + _dataList = new java.util.ArrayList(); + + for (com.google.gson.JsonElement _e_ : _buf.getAsJsonArray()) { + cfg.TB.TbGAttribute _v; + _v = cfg.TB.TbGAttribute.deserialize(_e_.getAsJsonObject()); + _dataList.add(_v); + _dataMap.put(_v.id, _v); + } + } + + public java.util.HashMap getDataMap() { return _dataMap; } + public java.util.ArrayList getDataList() { return _dataList; } + + public cfg.TB.TbGAttribute get(int key) { return _dataMap.get(key); } + +} diff --git a/JisolGameServer/Main/src/main/java/cfg/TbGRoleBaseAttribute.java b/JisolGameServer/Main/src/main/java/cfg/TbGRoleBaseAttribute.java new file mode 100644 index 00000000..5adad843 --- /dev/null +++ b/JisolGameServer/Main/src/main/java/cfg/TbGRoleBaseAttribute.java @@ -0,0 +1,37 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg; + +import luban.*; +import com.google.gson.JsonElement; + + +public final class TbGRoleBaseAttribute { + private final java.util.HashMap _dataMap; + private final java.util.ArrayList _dataList; + + public TbGRoleBaseAttribute(JsonElement _buf) { + _dataMap = new java.util.HashMap(); + _dataList = new java.util.ArrayList(); + + for (com.google.gson.JsonElement _e_ : _buf.getAsJsonArray()) { + cfg.TB.TbGRoleBaseAttribute _v; + _v = cfg.TB.TbGRoleBaseAttribute.deserialize(_e_.getAsJsonObject()); + _dataList.add(_v); + _dataMap.put(_v.id, _v); + } + } + + public java.util.HashMap getDataMap() { return _dataMap; } + public java.util.ArrayList getDataList() { return _dataList; } + + public cfg.TB.TbGRoleBaseAttribute get(int key) { return _dataMap.get(key); } + +} diff --git a/JisolGameServer/Main/src/main/java/cn/jisol/game/controller/game/GPlayerPetController.java b/JisolGameServer/Main/src/main/java/cn/jisol/game/controller/game/GPlayerPetController.java index 3c4c8e14..7444354f 100644 --- a/JisolGameServer/Main/src/main/java/cn/jisol/game/controller/game/GPlayerPetController.java +++ b/JisolGameServer/Main/src/main/java/cn/jisol/game/controller/game/GPlayerPetController.java @@ -15,6 +15,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; @@ -52,6 +53,7 @@ public class GPlayerPetController { @ApiImplicitParams({}) @ApiOperation(value = "提升宠物星") @PostMapping("/up/star") + @Transactional public NewsResource onUpStar(@RequestBody PetUpStarOV info, @CurrentPlayer Player player){ //判断参数 @@ -116,4 +118,20 @@ public class GPlayerPetController { } + //提升宠物等级 + @ApiImplicitParams({}) + @ApiOperation(value = "提升宠物等级") + @PostMapping("/up/level/{petId}") + public NewsResource onUpLevel(@PathVariable Integer petId, @CurrentPlayer Player player){ + + //获取需要升级的宠物 + PlayerPet pet = playerPetService.getById(petId); + if(Objects.isNull(pet) || !Objects.equals(pet.getPetPlayerId(), player.getPlayerId())){ + return NewsResource.onFail("你未拥有这个宠物"); + } + + return NewsResource.onFail("升级成功"); + + } + } diff --git a/JisolGameServer/Main/src/main/java/cn/jisol/game/controller/game/mode/GOnHookController.java b/JisolGameServer/Main/src/main/java/cn/jisol/game/controller/game/mode/GOnHookController.java index d09c8bd2..40b86022 100644 --- a/JisolGameServer/Main/src/main/java/cn/jisol/game/controller/game/mode/GOnHookController.java +++ b/JisolGameServer/Main/src/main/java/cn/jisol/game/controller/game/mode/GOnHookController.java @@ -21,6 +21,7 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.http.ResponseEntity; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; @@ -89,6 +90,7 @@ public class GOnHookController { @ApiImplicitParams({}) @ApiOperation(value = "出售野怪") @PostMapping("/onSellCreeps/{creepId}") + @Transactional public NewsResource onSellCreeps(@PathVariable String creepId, @CurrentPlayer Player player){ //玩家的野怪 diff --git a/JisolGameServer/Main/src/main/java/cn/jisol/game/service/impl/ResourceServiceImpl.java b/JisolGameServer/Main/src/main/java/cn/jisol/game/service/impl/ResourceServiceImpl.java index b00baa07..aab47630 100644 --- a/JisolGameServer/Main/src/main/java/cn/jisol/game/service/impl/ResourceServiceImpl.java +++ b/JisolGameServer/Main/src/main/java/cn/jisol/game/service/impl/ResourceServiceImpl.java @@ -8,6 +8,7 @@ import cn.jisol.game.service.ResourceService; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.Objects; @@ -21,6 +22,7 @@ public class ResourceServiceImpl extends ServiceImpl i * @return */ @Override + @Transactional public Resource addResourceValue(Long playerId, ResourceId type, Long value) { //获取玩家资源 @@ -28,6 +30,7 @@ public class ResourceServiceImpl extends ServiceImpl i Wrappers.lambdaQuery(Resource.class) .eq(Resource::getPlayerId, playerId) //玩家 .eq(Resource::getResourceTbId, type.id) //资源 + .last(" for update") //加锁 ); //如果没有资源则默认给一个0的资源 diff --git a/JisolGameServer/Main/src/main/resources/json/tbgattribute.json b/JisolGameServer/Main/src/main/resources/json/tbgattribute.json new file mode 100644 index 00000000..4ece033b --- /dev/null +++ b/JisolGameServer/Main/src/main/resources/json/tbgattribute.json @@ -0,0 +1,12 @@ +[ + { + "id": 110001, + "name": "攻击", + "sign": "Attack" + }, + { + "id": 110002, + "name": "防御", + "sign": "Defend" + } +] \ No newline at end of file diff --git a/JisolGameServer/Main/src/main/resources/json/tbgrolebaseattribute.json b/JisolGameServer/Main/src/main/resources/json/tbgrolebaseattribute.json new file mode 100644 index 00000000..a5e7765b --- /dev/null +++ b/JisolGameServer/Main/src/main/resources/json/tbgrolebaseattribute.json @@ -0,0 +1,7 @@ +[ + { + "id": 0, + "Attack": 10, + "Defend": 5 + } +] \ No newline at end of file