update data
This commit is contained in:
parent
eb7d74d601
commit
1f74136180
136
data/obj_item/obj_item.01.t1.base.json
Normal file
136
data/obj_item/obj_item.01.t1.base.json
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"item_type": "item_res",
|
||||||
|
"code": "01",
|
||||||
|
"weight": 1,
|
||||||
|
"exchange": "/t_01",
|
||||||
|
"auction": false,
|
||||||
|
"craftable": false,
|
||||||
|
"names": [
|
||||||
|
"Thread"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item_type": "item_res",
|
||||||
|
"code": "02",
|
||||||
|
"weight": 1,
|
||||||
|
"exchange": "/t_02",
|
||||||
|
"auction": false,
|
||||||
|
"craftable": false,
|
||||||
|
"names": [
|
||||||
|
"Stick"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item_type": "item_res",
|
||||||
|
"code": "03",
|
||||||
|
"weight": 1,
|
||||||
|
"exchange": "/t_03",
|
||||||
|
"auction": false,
|
||||||
|
"craftable": false,
|
||||||
|
"names": [
|
||||||
|
"Pelt"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item_type": "item_res",
|
||||||
|
"code": "04",
|
||||||
|
"weight": 1,
|
||||||
|
"exchange": "/t_04",
|
||||||
|
"auction": false,
|
||||||
|
"craftable": false,
|
||||||
|
"names": [
|
||||||
|
"Bone"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item_type": "item_res",
|
||||||
|
"code": "05",
|
||||||
|
"weight": 1,
|
||||||
|
"exchange": "/t_05",
|
||||||
|
"auction": false,
|
||||||
|
"craftable": false,
|
||||||
|
"names": [
|
||||||
|
"Coal"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item_type": "item_res",
|
||||||
|
"code": "06",
|
||||||
|
"weight": 1,
|
||||||
|
"exchange": "/t_06",
|
||||||
|
"auction": false,
|
||||||
|
"craftable": false,
|
||||||
|
"names": [
|
||||||
|
"Charcoal"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item_type": "item_res",
|
||||||
|
"code": "07",
|
||||||
|
"weight": 1,
|
||||||
|
"exchange": "/t_07",
|
||||||
|
"auction": false,
|
||||||
|
"craftable": false,
|
||||||
|
"names": [
|
||||||
|
"Powder"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item_type": "item_res",
|
||||||
|
"code": "08",
|
||||||
|
"weight": 2,
|
||||||
|
"exchange": "/t_08",
|
||||||
|
"auction": false,
|
||||||
|
"craftable": false,
|
||||||
|
"names": [
|
||||||
|
"Iron Ore",
|
||||||
|
"Iron ore"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item_type": "item_res",
|
||||||
|
"code": "09",
|
||||||
|
"weight": 1,
|
||||||
|
"exchange": "/t_09",
|
||||||
|
"auction": false,
|
||||||
|
"craftable": false,
|
||||||
|
"names": [
|
||||||
|
"Cloth"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item_type": "item_res",
|
||||||
|
"code": "10",
|
||||||
|
"weight": 2,
|
||||||
|
"exchange": "/t_10",
|
||||||
|
"auction": false,
|
||||||
|
"craftable": false,
|
||||||
|
"names": [
|
||||||
|
"Silver Ore",
|
||||||
|
"Silver ore"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item_type": "item_res",
|
||||||
|
"code": "100",
|
||||||
|
"weight": 0,
|
||||||
|
"exchange": "",
|
||||||
|
"auction": false,
|
||||||
|
"craftable": true,
|
||||||
|
"names": [
|
||||||
|
"Pouch of Gold"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item_type": "item_res",
|
||||||
|
"code": "11",
|
||||||
|
"weight": 2,
|
||||||
|
"exchange": "/t_11",
|
||||||
|
"auction": false,
|
||||||
|
"craftable": false,
|
||||||
|
"names": [
|
||||||
|
"Bauxite"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
@ -1,138 +1,4 @@
|
|||||||
[
|
[
|
||||||
{
|
|
||||||
"item_type": "item_res",
|
|
||||||
"code": "01",
|
|
||||||
"weight": 1,
|
|
||||||
"exchange": "/t_01",
|
|
||||||
"auction": false,
|
|
||||||
"craftable": false,
|
|
||||||
"names": [
|
|
||||||
"Thread"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"item_type": "item_res",
|
|
||||||
"code": "02",
|
|
||||||
"weight": 1,
|
|
||||||
"exchange": "/t_02",
|
|
||||||
"auction": false,
|
|
||||||
"craftable": false,
|
|
||||||
"names": [
|
|
||||||
"Stick"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"item_type": "item_res",
|
|
||||||
"code": "03",
|
|
||||||
"weight": 1,
|
|
||||||
"exchange": "/t_03",
|
|
||||||
"auction": false,
|
|
||||||
"craftable": false,
|
|
||||||
"names": [
|
|
||||||
"Pelt"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"item_type": "item_res",
|
|
||||||
"code": "04",
|
|
||||||
"weight": 1,
|
|
||||||
"exchange": "/t_04",
|
|
||||||
"auction": false,
|
|
||||||
"craftable": false,
|
|
||||||
"names": [
|
|
||||||
"Bone"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"item_type": "item_res",
|
|
||||||
"code": "05",
|
|
||||||
"weight": 1,
|
|
||||||
"exchange": "/t_05",
|
|
||||||
"auction": false,
|
|
||||||
"craftable": false,
|
|
||||||
"names": [
|
|
||||||
"Coal"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"item_type": "item_res",
|
|
||||||
"code": "06",
|
|
||||||
"weight": 1,
|
|
||||||
"exchange": "/t_06",
|
|
||||||
"auction": false,
|
|
||||||
"craftable": false,
|
|
||||||
"names": [
|
|
||||||
"Charcoal"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"item_type": "item_res",
|
|
||||||
"code": "07",
|
|
||||||
"weight": 1,
|
|
||||||
"exchange": "/t_07",
|
|
||||||
"auction": false,
|
|
||||||
"craftable": false,
|
|
||||||
"names": [
|
|
||||||
"Powder"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"item_type": "item_res",
|
|
||||||
"code": "08",
|
|
||||||
"weight": 2,
|
|
||||||
"exchange": "/t_08",
|
|
||||||
"auction": false,
|
|
||||||
"craftable": false,
|
|
||||||
"names": [
|
|
||||||
"Iron Ore",
|
|
||||||
"Iron ore"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"item_type": "item_res",
|
|
||||||
"code": "09",
|
|
||||||
"weight": 1,
|
|
||||||
"exchange": "/t_09",
|
|
||||||
"auction": false,
|
|
||||||
"craftable": false,
|
|
||||||
"names": [
|
|
||||||
"Cloth"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"item_type": "item_res",
|
|
||||||
"code": "10",
|
|
||||||
"weight": 2,
|
|
||||||
"exchange": "/t_10",
|
|
||||||
"auction": false,
|
|
||||||
"craftable": false,
|
|
||||||
"names": [
|
|
||||||
"Silver Ore",
|
|
||||||
"Silver ore"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"item_type": "item_res",
|
|
||||||
"code": "100",
|
|
||||||
"weight": 0,
|
|
||||||
"exchange": "",
|
|
||||||
"auction": false,
|
|
||||||
"craftable": true,
|
|
||||||
"names": [
|
|
||||||
"Pouch of Gold"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"item_type": "item_res",
|
|
||||||
"code": "11",
|
|
||||||
"weight": 2,
|
|
||||||
"exchange": "/t_11",
|
|
||||||
"auction": false,
|
|
||||||
"craftable": false,
|
|
||||||
"names": [
|
|
||||||
"Bauxite"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"item_type": "item_res",
|
"item_type": "item_res",
|
||||||
"code": "12",
|
"code": "12",
|
208
item.go
208
item.go
@ -277,12 +277,13 @@ func getCraftItemID(cmd string) (int64, error) {
|
|||||||
|
|
||||||
func loadObjItem() error {
|
func loadObjItem() error {
|
||||||
var (
|
var (
|
||||||
obj_id int64
|
obj_id int64
|
||||||
type_id int64
|
type_id int64
|
||||||
intl_id string
|
intl_id string
|
||||||
name string
|
name string
|
||||||
weight int64
|
weight int64
|
||||||
craftable int
|
craftable int
|
||||||
|
objItemsBuf []ChatWarsItem
|
||||||
)
|
)
|
||||||
|
|
||||||
muxObjItem.Lock()
|
muxObjItem.Lock()
|
||||||
@ -295,122 +296,123 @@ func loadObjItem() error {
|
|||||||
for _, a := range AssetNames() {
|
for _, a := range AssetNames() {
|
||||||
m, err := regexp.MatchString("data/obj_item/.*\\.json", a)
|
m, err := regexp.MatchString("data/obj_item/.*\\.json", a)
|
||||||
logOnError(err, "loadObjItem : MatchString")
|
logOnError(err, "loadObjItem : MatchString")
|
||||||
itemsBefore := len(objItems)
|
|
||||||
if m {
|
if m {
|
||||||
b, err := Asset(a)
|
b, err := Asset(a)
|
||||||
logOnError(err, "loadObjItem : load Asset("+a+")")
|
logOnError(err, "loadObjItem : load Asset("+a+")")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
objItemsBuf = make([]ChatWarsItem, 0)
|
||||||
|
err = json.Unmarshal(b, &objItemsBuf)
|
||||||
|
objItems = append(objItems, objItemsBuf)
|
||||||
|
log.Printf("%d items parsed from %s.\n", len(objItemsBuf), a)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
err = json.Unmarshal(b, &objItems)
|
var k int64
|
||||||
var k int64
|
for k = 0; k < int64(len(objItems)); k++ {
|
||||||
for k = 0; k < int64(len(objItems)); k++ {
|
if len(objItems[k].Names) == 0 {
|
||||||
if len(objItems[k].Names) == 0 {
|
log.Printf("loadObjItems : %s : name missing.\n", objItems[k].Code)
|
||||||
log.Printf("loadObjItems : %s : name missing.\n", objItems[k].Code)
|
} else {
|
||||||
} else {
|
if id, ok := cacheObjItem[objItems[k].Code]; ok {
|
||||||
if id, ok := cacheObjItem[objItems[k].Code]; ok {
|
log.Printf("loadObjItem : %s : duplicate code found. Belong to %s\n", objItems[id].Code, objItems[id].Names[0])
|
||||||
log.Printf("loadObjItem : %s : duplicate code found. Belong to %s\n", objItems[id].Code, objItems[id].Names[0])
|
} else {
|
||||||
|
cacheObjItem[objItems[k].Code] = k
|
||||||
|
objItems[k].ItemTypeID = cacheObjSubType[objItems[k].ItemType]
|
||||||
|
|
||||||
|
for _, n := range objItems[k].Names {
|
||||||
|
if id, ok := cacheObjItem[n]; ok {
|
||||||
|
log.Printf("loadObjItem : %s - %s : duplicate name found. Belongs to %s\n", objItems[k].Code, n, objItems[id].Code)
|
||||||
} else {
|
} else {
|
||||||
cacheObjItem[objItems[k].Code] = k
|
cacheObjItem[n] = k
|
||||||
objItems[k].ItemTypeID = cacheObjSubType[objItems[k].ItemType]
|
|
||||||
|
|
||||||
for _, n := range objItems[k].Names {
|
|
||||||
if id, ok := cacheObjItem[n]; ok {
|
|
||||||
log.Printf("loadObjItem : %s - %s : duplicate name found. Belongs to %s\n", objItems[k].Code, n, objItems[id].Code)
|
|
||||||
} else {
|
|
||||||
cacheObjItem[n] = k
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
objs, err := db.Query(`SELECT oi.obj_id, o.obj_sub_type_id, oi.intl_id, oi.weight, oi.craftable FROM obj o, obj_item oi WHERE o.id = oi.obj_id;`)
|
objs, err := db.Query(`SELECT oi.obj_id, o.obj_sub_type_id, oi.intl_id, oi.weight, oi.craftable FROM obj o, obj_item oi WHERE o.id = oi.obj_id;`)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logOnError(err, "loadObjItem : querying items")
|
logOnError(err, "loadObjItem : querying items")
|
||||||
return err
|
return err
|
||||||
|
}
|
||||||
|
defer objs.Close()
|
||||||
|
|
||||||
|
for objs.Next() {
|
||||||
|
err = objs.Scan(&obj_id, &type_id, &intl_id, &weight, &craftable)
|
||||||
|
if err != nil {
|
||||||
|
logOnError(err, "loadObjItem : scanning items")
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if id, ok := cacheObjItem[intl_id]; !ok {
|
||||||
|
log.Printf("loadObjItem : %s : orphaned item in database (id : %d)\n", intl_id, obj_id)
|
||||||
|
} else {
|
||||||
|
objItems[id].ObjID64 = obj_id
|
||||||
|
|
||||||
|
if weight != objItems[id].Weight {
|
||||||
|
log.Printf("loadObjItem : %s - %s : weight changed : %d => %d\n", objItems[id].Code, objItems[id].Names[0], weight, objItems[id].Weight)
|
||||||
|
setObjItemWeight(obj_id, objItems[id].Weight)
|
||||||
}
|
}
|
||||||
defer objs.Close()
|
|
||||||
|
|
||||||
for objs.Next() {
|
if (craftable == 0 && objItems[id].Craftable) || (craftable == 1 && !objItems[id].Craftable) {
|
||||||
err = objs.Scan(&obj_id, &type_id, &intl_id, &weight, &craftable)
|
log.Printf("loadObjItem : %s - %s : craftable changed : %v => %v\n", objItems[id].Code, objItems[id].Names[0], !objItems[id].Craftable, objItems[id].Craftable)
|
||||||
if err != nil {
|
setObjItemCraftable(obj_id, objItems[id].Craftable)
|
||||||
logOnError(err, "loadObjItem : scanning items")
|
}
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if id, ok := cacheObjItem[intl_id]; !ok {
|
cacheObjItemId[obj_id] = id
|
||||||
log.Printf("loadObjItem : %s : orphaned item in database (id : %d)\n", intl_id, obj_id)
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
names, err := db.Query(`SELECT oi.obj_id, obn.name FROM obj_item oi, obj_name obn WHERE oi.obj_id = obn.obj_id;`)
|
||||||
|
if err != nil {
|
||||||
|
logOnError(err, "loadObjItem : querying names")
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer names.Close()
|
||||||
|
|
||||||
|
for names.Next() {
|
||||||
|
err = names.Scan(&obj_id, &name)
|
||||||
|
if err != nil {
|
||||||
|
logOnError(err, "loadObjItem : scanning names")
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if _, ok := cacheObjItem[name]; !ok {
|
||||||
|
if id, ok := cacheObjItemId[obj_id]; ok {
|
||||||
|
log.Printf("loadObjItem : %s : orphaned name in database for item %s\n", name, objItems[id].Code)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, i := range cacheObjItem {
|
||||||
|
if objItems[i].ObjID64 == 0 {
|
||||||
|
id, _ := addObjItem(objItems[i].Code, objItems[i].Names[0], objItems[i].ItemTypeID, objItems[i].Weight, objItems[i].Exchange, objItems[i].Auction, objItems[i].Craftable)
|
||||||
|
objItems[i].ObjID64 = id
|
||||||
|
cacheObjItemId[id] = i
|
||||||
|
for _, n := range objItems[i].Names {
|
||||||
|
objAddName(id, n)
|
||||||
|
cacheObjItem[n] = id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, i := range cacheObjItem {
|
||||||
|
if objItems[i].Craft != nil {
|
||||||
|
cacheObjItemCraft[objItems[i].Craft.Command] = i
|
||||||
|
setObjItemCraft(objItems[i].ObjID64, objItems[i].Craft.Command, objItems[i].Craft.Mana)
|
||||||
|
emptyObjItemCraftItem(objItems[i].ObjID64)
|
||||||
|
for k, o := range objItems[i].Craft.Items {
|
||||||
|
if id, ok := cacheObjItem[o.Code]; !ok {
|
||||||
|
log.Printf("loadObjItem : %s : unknown item %s for recipe.\n", objItems[i].Code, o.Code)
|
||||||
} else {
|
} else {
|
||||||
objItems[id].ObjID64 = obj_id
|
objItems[i].Craft.Items[k].ItemID64 = objItems[id].ObjID64
|
||||||
|
|
||||||
if weight != objItems[id].Weight {
|
|
||||||
log.Printf("loadObjItem : %s - %s : weight changed : %d => %d\n", objItems[id].Code, objItems[id].Names[0], weight, objItems[id].Weight)
|
|
||||||
setObjItemWeight(obj_id, objItems[id].Weight)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (craftable == 0 && objItems[id].Craftable) || (craftable == 1 && !objItems[id].Craftable) {
|
|
||||||
log.Printf("loadObjItem : %s - %s : craftable changed : %v => %v\n", objItems[id].Code, objItems[id].Names[0], !objItems[id].Craftable, objItems[id].Craftable)
|
|
||||||
setObjItemCraftable(obj_id, objItems[id].Craftable)
|
|
||||||
}
|
|
||||||
|
|
||||||
cacheObjItemId[obj_id] = id
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
for _, o := range objItems[i].Craft.Items {
|
||||||
names, err := db.Query(`SELECT oi.obj_id, obn.name FROM obj_item oi, obj_name obn WHERE oi.obj_id = obn.obj_id;`)
|
addObjItemCraftItem(objItems[i].ObjID64, o.ItemID64, o.Quantity)
|
||||||
if err != nil {
|
|
||||||
logOnError(err, "loadObjItem : querying names")
|
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
defer names.Close()
|
|
||||||
|
|
||||||
for names.Next() {
|
|
||||||
err = names.Scan(&obj_id, &name)
|
|
||||||
if err != nil {
|
|
||||||
logOnError(err, "loadObjItem : scanning names")
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if _, ok := cacheObjItem[name]; !ok {
|
|
||||||
if id, ok := cacheObjItemId[obj_id]; ok {
|
|
||||||
log.Printf("loadObjItem : %s : orphaned name in database for item %s\n", name, objItems[id].Code)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, i := range cacheObjItem {
|
|
||||||
if objItems[i].ObjID64 == 0 {
|
|
||||||
id, _ := addObjItem(objItems[i].Code, objItems[i].Names[0], objItems[i].ItemTypeID, objItems[i].Weight, objItems[i].Exchange, objItems[i].Auction, objItems[i].Craftable)
|
|
||||||
objItems[i].ObjID64 = id
|
|
||||||
cacheObjItemId[id] = i
|
|
||||||
for _, n := range objItems[i].Names {
|
|
||||||
objAddName(id, n)
|
|
||||||
cacheObjItem[n] = id
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, i := range cacheObjItem {
|
|
||||||
if objItems[i].Craft != nil {
|
|
||||||
cacheObjItemCraft[objItems[i].Craft.Command] = i
|
|
||||||
setObjItemCraft(objItems[i].ObjID64, objItems[i].Craft.Command, objItems[i].Craft.Mana)
|
|
||||||
emptyObjItemCraftItem(objItems[i].ObjID64)
|
|
||||||
for k, o := range objItems[i].Craft.Items {
|
|
||||||
if id, ok := cacheObjItem[o.Code]; !ok {
|
|
||||||
log.Printf("loadObjItem : %s : unknown item %s for recipe.\n", objItems[i].Code, o.Code)
|
|
||||||
} else {
|
|
||||||
objItems[i].Craft.Items[k].ItemID64 = objItems[id].ObjID64
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
for _, o := range objItems[i].Craft.Items {
|
|
||||||
addObjItemCraftItem(objItems[i].ObjID64, o.ItemID64, o.Quantity)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
log.Printf("%d items loaded for %s.\n", len(objItems)-itemsBefore, a)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user