魔兽装备修改
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; }
以上是关于魔兽装备修改的主要内容,如果未能解决你的问题,请参考以下文章