魔兽装备修改

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了魔兽装备修改相关的知识,希望对你有一定的参考价值。

我装了个魔兽单机耍,改属性也成功过,但我想问一下,怎么能改装备属性里的那些文字,有些装备没爆率,我又怎么改属性,简单的说,我想把装备改成我自己想要的样子(属性)谢谢了。

我就曾经开过WOWSF(一区停机的那几天)
有一些研究
如果想要自定义装备的话,必须先了解数据库用法

不明白的话+QQ 131155

用navicat 打开本机的数WOW据库
在MANGOS数据表里有一个 Item_temple表格

里面的参数如下:

item_template 说明

entry = 怪物ID
class = 类
subclass = 子类
name = 名字
name2 = 名字2
name3 = 名字3
name4 = 名字4
displayid = 模型ID对应DBC
Quality = 品质:1-6
Flags = 标志
BuyCount = 购买时的堆叠数量
BuyPrice = 买价
SellPrice = 卖价
InventoryType = 是物品可以放置的位置。
AllowableClass = 允许的职业
AllowableRace = 允许的种族
ItemLevel = 道具等级
RequiredLevel = 装备需要玩家等级
RequiredSkill = 需要玩家skill ID
RequiredSkillRank = 需要玩家skill熟练度
requiredspell = 需要spell
requiredhonorrank = 需要荣誉等级
RequiredCityRank = 需要城市等级
RequiredReputationFaction = 需要声望ID (阵营)
RequiredReputationRank = 需要声望等级
maxcount = 最多可以堆叠几个
stackable = 可否堆叠
ContainerSlots = 背包格子数量(背包专用)
stat_type1 = 人物状况1
stat_value1 = 状态1的值
stat_type2 =
stat_value2 =
stat_type3 =
stat_value3 =
stat_type4 =
stat_value4 =
stat_type5 =
stat_value5 =
stat_type6 =
stat_value6 =
stat_type7 =
stat_value7 =
stat_type8 =
stat_value8 =
stat_type9 =
stat_value9 =
stat_type10 =
stat_value10 =
dmg_min1 = 最小伤害1
dmg_max1 = 最大伤害1
dmg_type1 = 伤害1种类
dmg_min2 =
dmg_max2 =
dmg_type2 =
dmg_min3 =
dmg_max3 =
dmg_type3 =
dmg_min4 =
dmg_max4 =
dmg_type4 =
dmg_min5 =
dmg_max5 =
dmg_type5 =
armor = 护甲
holy_res = 神圣抗性
fire_res = 火焰抗性
nature_res = 自然抗性
frost_res = 冰霜抗性
shadow_res = 暗影抗性
arcane_res = 奥术抗性
delay = 攻击速度(毫秒)
ammo_type = 弹药的类型2弓箭, 3 子弹
RangedModRange = 远程射程
spellid_1 = 魔法ID
spelltrigger_1 = 触发类型
spellcharges_1 = spell消耗
spellcooldown_1 = 冷却
spellcategory_1 = spell归类
spellcategorycooldown_1 = 冷却归类(相同的类一起冷却)
spellid_2 =
spelltrigger_2 =
spellcharges_2 =
spellcooldown_2 =
spellcategory_2 =
spellcategorycooldown_2 =
spellid_3 =
spelltrigger_3 =
spellcharges_3 =
spellcooldown_3 =
spellcategory_3 =
spellcategorycooldown_3 =
spellid_4 =
spelltrigger_4 =
spellcharges_4 =
spellcooldown_4 =
spellcategory_4 =
spellcategorycooldown_4 =
spellid_5 =
spelltrigger_5 =
spellcharges_5 =
spellcooldown_5 =
spellcategory_5 =
spellcategorycooldown_5 =
bonding = 绑定 1-拾取后绑定,2-装备后绑定
description = 描述
PageText = 任务页面
LanguageID = 语言ID
PageMaterial = 页面材质
startquest = 触发任务
lockid = 锁的ID
Material = 材料
sheath = 武器放的位置
Extra = 其他,可能物品由谁制造
block = 格挡
itemset = 装备套装ID
MaxDurability = 最大耐久
area = 区域
Unknown1 = 未知
ScriptName = 触发脚本名

附详细说明:
sheath:
1 = 双手,背在后面尖向下
2 = 杖,背在后面尖向上
3 = 单手,在旁边
4 = 盾,在后边
5 = 附魔棒
7 = 拳套、火把、锄头等

class代表物品的属性:
0 = 消耗品
1 = 容器
2 = 武器
4 = 盔甲
5 = 材料
6 = 弹药
7 = 商业物品(材料)
9 = 配方
11 = 箭弹药袋
12 = 任务物品
13 = 钥匙
14 = 永久(做废)
15 = 其它
subclass:代表物品详细类型,用在class之后
class=0的时候:
subclass=0 消耗品
class=1的时候:
subclass=0 容器
subclass=1 灵魂袋
subclass=2 草药袋
subclass=3 附魔材料袋
subclass=4 工程学材料袋
class=2的时候:
subclass=0 单手斧
subclass=1 双手斧
subclass=2 弓
subclass=3 枪
subclass=4 单手锤
subclass=5 双手锤
subclass=6 长柄武器
subclass=7 单手剑
subclass=8 双手剑
subclass=10 法杖
subclass=11 单手武器
subclass=12 双手武器
subclass=13 拳套
subclass=14 锄头,铁锤
subclass=15 = 匕首
subclass=16 = 投掷武器
subclass=17 = 矛
subclass=18 = 弩
subclass=19 = 魔杖
subclass=20 = 鱼杆
class=4的时候:
subclass=0 戒指
subclass=1 布甲
subclass=2 皮甲
subclass=3 锁甲
subclass=4 板甲
subclass=5 小圆盾
subclass=6 盾牌
subclass=7 圣契
subclass=8 神像
subclass=9 图腾
class=6的时候:
subclass=1 弩用
subclass=2 弓用
subclass=3 枪用
subclass=4 投掷武器
class=7的时候
subclass=0 商业物品(制造的)
subclass=1 零件
subclass=2 火药炸弹
subclass=3 工程物品
class=9的时候:
subclass=0 书
subclass=1 制皮
subclass=2 裁缝
subclass=3 工程学
subclass=4 锻造
subclass=5 烹饪
subclass=6 炼金术
subclass=7 急救
subclass=8 付魔
subclass=9 钩鱼
class=11的时候:
subclass=0 箭袋
subclass=1 箭袋
subclass=2 箭袋
subclass=3 枪子弹袋
class=12的时候
subclass=0 任务物品
class=13的时候
subclass=0 钥匙
subclass=1 开锁工具
class=14的时候:
subclass=0 永久
class=14的时候:
subclass=0 垃圾

quality:
0 = 灰白
1 = 白色
2 = 绿色
3 = 蓝色
4 = 紫色
5 = 橙色
6 = 黄色

Flags:
0 = 无
2 = 魔法制造
4 = 字箱
32 = 图腾
64 = 马,设计图等
8192 = 公会登记表

dmg=0(0普通伤害)
dmg=1(1神圣伤害)
dmg=2(2火焰伤害)
dmg=3(3自然伤害)
dmg=4(4冰霜伤害)
dmg=5(5阴影伤害)
dmg=6(6奥术伤害)
inventorytype是物品可以戴的位置。
inventorytype=0食品、泉水、奶酪、牙齿、皮毛、草药、肉类、鱼、油、各种小石头、药水、卷轴、绷带等杂物和任务物品
inventorytype=1 头盔
inventorytype=2 饰品
inventorytype=3 护肩
inventorytype=4 衬衣
inventorytype=5 外衣(胸部)
inventorytype=6 腰带
inventorytype=7 裤子
inventorytype=8 靴子
inventorytype=9 护腕
inventorytype=10 手套
inventorytype=11 戒指
inventorytype=12 非颈部饰品
inventorytype=13 剑,匕首等主手武器
inventorytype=14 盾牌
inventorytype=15 弓
inventorytype=16 斗篷、披风
inventorytype=17 法杖
inventorytype=18 袋子、包包等
inventorytype=19 工会徽章
inventorytype=20 法袍
inventorytype=21 长剑、钉锤
inventorytype=22 副手物品
inventorytype=24 箭、子弹等弹药
inventorytype=25 投掷武器
inventorytype=26 枪
material=1 金属类
material=2 草木制品
material=3 药水毒液酒等液体
material=4 戒指、眼球、炸弹等没有模型的东西
material=5 外衣、腰带等
material=6 银色物品
material=7 布质物品
material=8 皮质物品
参考技术A bj0618 你强!!!!

[JSOI2008]魔兽地图(树形dp)

DotR (Defense of the Robots) Allstars是一个风靡全球的魔兽地图,他的规则简单与同样流行的地图DotA (Defense of the Ancients) Allstars。

DotR里面的英雄只有一个属性——力量。他们需要购买装备来提升自己的力量值,每件装备都可以使佩戴它的英雄的力量值提高固定的点数,所以英雄的力量值等于它购买的所有装备的力量值之和。装备分为基本装备和高级装备两种。基本装备可以直接从商店里面用金币购买,而高级装备需要用基本装备或者较低级的高级装备来合成,合成不需要附加的金币。装备的合成路线可以用一棵树来表示。

比如,Sange and Yasha的合成需要Sange,Yasha和Sange and Yasha Recipe Scroll三样物品。其中Sange又要用Ogre Axe, Belt of Giant Strength和 Sange Recipe Scroll合成。每件基本装备都有数量限制,这限制了你不能无限制地合成某些性价比很高的装备。

现在,英雄Spectre有M个金币,他想用这些钱购买装备使自己的力量值尽量高。你能帮帮他吗?他会教你魔法Haunt(幽灵附体)作为回报的。

Solution

极强的一道树形dp题。

我们设dp[i][j][k]表示当前正在做以i为根的子树,我们需要用j个物品用于向上合成,花费了k元能够获得的最大收益。

首先我们可以递归回溯求出每个点的价格和他的限制购买次数(这个东西是和儿子节点相关的)。

然后就枚举向上传多少个物品,在这里我们记录一个辅助数组g[i][j]表示做到了第i棵子树,背包体积为j时能够获得的最大收益。

但它可能有多个联通块,做完每个子树后我们再把它合并到一个数组里就可以了。

Code

#include<iostream>
#include<cstdio>
#include<cstring>
#define inf 1e9
#define N 55
#define M 2010
using namespace std;
int dp[N][N<<1][M],g[N][M],head[N],w[N],va[N],l[N],f[N][M],tot,m,n,ji[N];
struct efr{
    int n,to,l;
}an[20009];
inline void add(int u,int v,int l){
    an[++tot].n=head[u];
    an[tot].to=v;
    an[tot].l=l;
    head[u]=tot;
}
void dfs(int u){
    if(!head[u]){
        l[u]=min(l[u],m/va[u]);//这里求出这件物品的购买限制 
        for(int i=0;i<=l[u];++i)
           for(int j=i;j<=l[u];++j)
              dp[u][i][j*va[u]]=(j-i)*w[u];//j 表示买了多少个 
        return;
    }
    l[u]=inf;
    for(int i=head[u];i;i=an[i].n){
        int v=an[i].to;
        dfs(v);
        l[u]=min(l[u],l[v]/an[i].l);//更新l得知 
        va[u]+=va[v]*an[i].l;//在这里递归计算u的价值 
    }
    l[u]=min(l[u],m/va[u]); 
    memset(g,-0x3f,sizeof(g));
    g[0][0]=0;
    for(int o=l[u];o>=0;--o){//枚举上传几个 
        int cnt=0;
        for(int i=head[u];i;i=an[i].n){
         int v=an[i].to;
         cnt++;
        for(int j=m;j>=0;--j)
          for(int k=0;k<=j;++k)
            g[cnt][j]=max(g[cnt][j],g[cnt-1][j-k]+dp[v][o*an[i].l][k]);
        }
        for(int i=0;i<=o;++i)
          for(int j=0;j<=m;++j)
             dp[u][i][j]=max(dp[u][i][j],g[cnt][j]+w[u]*(o-i)); 
    }
}
inline char rd(){
    char c=getchar();
    while(c!=A&&c!=B)c=getchar();
    return c;
}
int main(){
    scanf("%d%d",&n,&m);
    memset(dp,-0x3f,sizeof(dp));
    char c;
    for(int i=1;i<=n;++i){
        scanf("%d",&w[i]);
        c=rd();
        if(c==B)scanf("%d%d",&va[i],&l[i]);
        else{
            int x,y,z;
            scanf("%d",&x);
            for(int j=1;j<=x;++j){
               scanf("%d%d",&y,&z);
               add(i,y,z);
               ji[y]=1;
            } 
        }
    }
    int cnt=0;
    for(int i=1;i<=n;++i)
      if(!ji[i]){
          dfs(i);
          cnt++;
          for(int j=0;j<=m;++j)
            for(int k=0;k<=j;++k)
              f[cnt][j]=max(f[cnt][j],f[cnt-1][j-k]+dp[i][0][k]);
      } 
   int ans=0;
   for(int i=0;i<=m;++i)
     ans=max(ans,f[cnt][i]);
   cout<<ans;
    return 0;
} 

 

以上是关于魔兽装备修改的主要内容,如果未能解决你的问题,请参考以下文章

请问谁有魔兽世界单机的人物和道具属性修改器

[JSOI2008]魔兽地图

bzoj 1017 魔兽地图DotR

魔兽澄海3C装备属性能叠加么?

[JSOI2008]魔兽地图(树形dp)

[luogu4037 JSOI2008] 魔兽地图 (树形dp)