案例1
创新互联2013年开创至今,先为忻州等服务建站,忻州等地企业,进行企业商务咨询服务。为忻州企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
[问题澄清]
TiDB集群启动过程中报错:
[FATAL] [main.go:111] [“run server failed”] [error=“listen tcp 192.xxx.73.101:2380: bind: cannot assign requested address”]
[原因分析]
网络问题
[解决方案]
1.使用ping命令检查ip是否可以访问
2.使用telnel命令测试端口是否可以访问
3.在tidb集群中尽量避免内网和外网ip混用
[参考案例]
PD端口无法启动
[引申学习点]
ping命令
telnet命令
案例2
[问题澄清]
PD启动过程中报错:
[PANIC] [server.go:446] [“failed to recover v3 backend from snapshot”]
[error=“failed to find database snapshot file (snap: snapshot file doesn’t exist)”]
[原因分析]
服务器掉电,导致操作系统数据丢失
[解决方案]
1. 掉电后可能目录变为只读,请运维人员帮助从操作系统层面恢复只读文件
2. 如果TiDB集群有PD节点无法启动,建议使用pd-recover命令恢复
[参考案例]
系统断电,来电后重启tidb集群,启动PD节点报错,3个PD节点有两个报错
[学习引申点]
EXT4文件系统学习(五)掉电数据损坏重启挂载失败并修复,仅限参考非标准步骤,fsck失败可能导致数据损坏
案例3
[问题澄清]
TiKV启动过程中报错:
ERRO tikv-server.rs:155: failed to create kv engine: “Corruption: Sst file size mismatch: /data/tidb/deploy/data/db/67704904.sst. Size recorded in manifest 325143, actual size 0 ”]
[原因分析]
服务器重启,导致数据未及时sync
[解决方案]
下线节点,重新扩容,参考扩容缩容步骤
会在某个新版本修复此问题
[参考案例]
TiKV节点无法启动
[学习引申点]
RocksDB - MANIFEST
案例4
[问题澄清]
TiKV启动过程中报错:
ERRO panic_hook.rs:104: thread ‘raftstore-11’ panicked ‘[region 125868]323807 to_commit 181879 is out of range [last_index 181878]’ at "/home/jenkins/.cargo/git/checkouts/raft-rs-841f8a6db665c5c0/b10d74c/src/raft_log.rs:248"3.2019/04/30 18:11:27.625 ERRO panic_hook.rs:104: thread ‘raftstore-11’ panicked ‘[region 125868]323807 to_commit 181879 is out of range [last_index 181878]’ at “/home/jenkins/.cargo/git/checkouts/raft-rs-841f8a6db665c5c0/b10d74c/src/raft_log.rs:248” stack backtrace:stack backtrace:
[原因分析]
to_commit out of range 意味着这个 peer 想要 commit 一条不存在的日志,说明因某些主动操作或者异常情况发生导致最近的 raft log 丢失了
[解决方案]
1.通过 tikv-ctl 工具定位损坏的region,指定 db 目录(当前损坏 tikv 节点的目录)。
2.通过 tikv-ctl 进行数据修复。
2.1 如果修复失败。如下:
set_region_tombstone: StringError("The peer is still in target peers")
使用tikv-ctl 执行 region tombstone 需要对损坏节点 region peer 进行判断,需要人工清理。remove 掉异常的 peer。
2.2 重复使用 tikv-ctl 工具执行修复即可。
[参考案例]
TiKV 报错 ERRO panic_hook.rs:104 是什么原因
Tikv节点挂掉后,启动报错“[region 32] 33 to_commit 405937 is out of range [last_index 405933]”
[学习引申点]
Raft 日志复制 Log replication
案例5
[问题澄清]
PD启动过程中报错:
FAILED - RETRYING: wait until the PD health page is available (12 retries left). FAILED - RETRYING: wait until the PD health page is available (12 retries left)
[原因分析]
ip地址异常
[解决方案]
1.检查是否有内外网ip导致不通
2.是否是更换PD ip地址导致,可以采用扩容缩容的方法处理PD.
[参考案例]
节点IP变化后,如何操作更新
TiDB集群启动不起来
[学习引申点]
TiDB 最佳实践系列(二)PD 调度策略最佳实践
案例6
[问题澄清]
TiDB无法启动, tidb_stderr.log 报错:
fatal error: runtime: out of memory
[原因分析]
设置 echo 2 /proc/sys/vm/overcommit_memory
[解决方案]
设置echo 0 /proc/sys/vm/overcommit_memory
[参考案例]
修改内存使用策略导致 TiDB自动下线后 无法启动
[学习引申点]
linux下overcommit_memory的问题
案例7
[问题澄清]
TiDB集群启动过程中报错:
Ansible FAILED! = playbook: start.yml; TASK: Check grafana API Key list; message: {“changed”: false, “connection”: “close”, “content”: “{“message”:“Invalid username or password”}”, “content_length”: “42”, “content_type”: “application/json; charset=UTF-8”, “date”: “Wed, 25 Dec 2019 02:22:44 GMT”, “json”: {“message”: “Invalid username or password”}, “msg”: “Status code was 401 and not [200]: HTTP Error 401: Unauthorized”, “redirected”: false, “status”: 401, “url”: “ ”}
[原因分析]
修改过 Grafana 的密码
[解决方案]
inventory.ini 中配置的用户名和密码也需要修改为新的密码
[参考案例]
启动集tidb集群出现错误
[学习引申点]
Grafana全面瓦解
案例8
[问题澄清]
TiDB集群启动过程中TiDB日志报错:
[error="[global:3]critical error write binlog failed, the last error no avaliable pump to write binlog"]
[原因分析]
pump与Draine造成的
[解决方案]
pump错误为:fail to notify all living drainer: notify drainer。将drainer启动,然后成功下线后,start.yml执行成功
[参考案例]
tidb服务已经启动了,但是wait until the TiDB port is up失败
[学习引申点]
TiDB Binlog 简介
所有的GM命令都是按回车然后输入.命令 数值(注意:一定不要忘了点和空格)(还有要点选自己的人物才有用)
改等级:.setlevel 数值
改经验:.setxp 数值
钱用命令改不了,至少我不知道,你可以加物品(代码:7)卖可值1000金(跟据不同的单机版本可能有所不同)
加物品:.add 物品代码
顶级装备代码:
荣誉武器(联盟—部落):18825-18826盾, 18827-18828斧, 18830-18831双手斧,18833-18835弓,18836-18837弩, 18838-18840匕首,18843-18844主手拳套,18847-18848副手拳套, 18855-18860枪, 18865-18866单手锤, 18867-18868双手锤,
18869-18871长柄, 18873-18874法仗 ,18876-18877双手剑
荣誉勋章(部落—联盟):18846-18856猎人,
18834-18854战士,18849-18857盗贼,
18850-18859法师,18851-18862牧师,
18852-18858术士,18853-18863得鲁伊
18845萨满,18864圣骑士
元帅套装
元帅猎装 16462-16463 16465-16468
元帅魔装 17578-17581 17583-17584
元帅德装 16448-16452 16459
元帅制服 16446 16453-16457
元帅法衣 16437 16440-16444
元帅庇护 16471-16476
元帅战甲 16477-16480 16483-16484
元帅神服 17602-17605 17607 17608
督军魔装 17586 17588 17590-17593
督军法衣 16533-16536 16539-16540
督军战甲 16541-16545 16548
督军圣装 16549 16550-16552 16554-16555
督军制服 16558 16560-16564
督军猎装 16565-16569 16571
督军震撼 16573-16574 16577-16580
督军神服 17618 17620 17622-17625
……
……
……
其它见:
你可以打开如下目录中的文件,按照格式进行修改或添加
scripts/items.scp(物品资料与代码)
scripts/creatures.scp(npc资料与代码)
saves/players.save(玩家资料)
scripts/areatrigge
scripts/items.scp(物品资料与代码)
scripts/creatures.scp(npc资料与代码)
saves/players.save(玩家资料)
scripts/areatriggers.scp(传诵换场景的资料)
scripts/emu.conf(模拟器连接资料,在这里修改IP,要让别的电脑也进来玩就改成你的IP)
saves/world.save(刷NPC的资料)
scripts/quests.scp(任务的资料)
scripts/classes.scp(应该是属于初始的天赋)
scripts/spellcost.scp(技能代码)
scripts/pages.scp(npc说话定义)
scripts/gameobjects.scp(游戏中物体名称,模型号定义)
scripts/creatures.scp(npc定义)
scripts/defines.scp(应该是所有代码编号的定义。如在spellcost.scp中写[spell10]price=120)
其中你要的装备应该是这个文件scripts/items.scp(物品资料与代码) ,下面是一些代码的解释:
[item 17783]物品编码
bonding=2
buyprice=500000 购买价格
class=2 物品属性,该物品是什么位置的属性
classes=07FFF
delay=500 武器每次攻击的时间,以毫秒计算
durability=999 耐久度(对私人服务器基本没有用)
inventorytype=21 物品可以放置的详细位置
level=1 (应该是怪物掉落该物品的等级)
material=1 (应该是涉及模型的反光效果)
model=24166 (模型编码)
name=OMFG-GM之拳 (物品的名字,但有部分物品的名字好像还有一个文件控制,光改Item不起作用)
quality=4 物品的等级,及白、绿、蓝、紫、金5类
races=01FF
reqlevel=1 装备该物品需要的等级
sellprice=39125 卖出该物品可以得到的价格
sheath=3
subclass=7 代表物品的详细类型
bonus=1 9999
bonus=2 9999
bonus=3 9999
bonus=4 9999
bonus=5 9999 (这几个是附加的物品属性,包括加生命加魔法和加5大人物属性)
damage=99999 99999 0 (伤害值)
spell=17625 1 0 -1 0 -1 (物品的特效)
先说说bonus,其格式为bonus=附加属性代码 附加值;(你要的属性应该就是这个选项的)
代码祥解
bonus=0 N 附加法力值
bonus=1 N 附加生命值
bonus=2 N 附加???值
bonus=3 N 附加的敏捷值
bonus=4 N 附加的力量值
bonus=5 N 附加的魔法值
bonus=6 N 附加的精神值
bonus=7 N 附加的耐力值
class代表物品的属性,用在subclass之前
class=0 只能放在背包里的物品
class=1 背包(背包类一定要用这个,箭袋也是这个,不是11)
class=2 手上武器
class=3 衣服裤子手套等
class=4 衣服裤子手套
class=5 绷带、调料、木材、火绒、
class=6 箭和子弹
class=7 动物肉、内脏、草药、石头及矿石、皮毛
class=9 是各种配方,正准备研究
subclass代表物品详细类型,用在class之后
subclass=0 无防御的衣服
subclass=1 布制品
subclass=2 皮革制品
subclass=3 链甲制品
subclass=4 钉锤
subclass=5 木槌,铲子等
subclass=6 盾牌、配方、长矛、*子
subclass=7 单手武器
subclass=8 双手武器
subclass=9 啤酒
subclass=10 法杖
subclass=13 拳套武器
subclass=14 无区别主手武器或工具
subclass=15 匕首
subclass=16 投掷武器
subclass=18 弩
subclass=19 魔杖(副手)
subclass=20 鱼杆
subclass=21 未知
伤害基本公式:damage=最小伤害值 最大伤害值 伤害类型
伤害类型代码:
damage=153 630 0(0代表普通伤害)
damage=13 225 2(2代表火焰伤害)
damage=10 40 3(3代表自然伤害)
damage=153 630 4(4代表冰霜伤害)
damage=10 100 5(5阴影伤害)
damage=465 1226 6(6代表奥术伤害)
防御及抗性:
公式:resistance防御类型代码=防御数值
resistance1=100(1代表装甲防御力)
resistance2=100(2代表可以有附加的魔法抗性)
resistance3=100(3代表火焰抗性)
resistance4=100(4代表自然抗性)
resistance5=10(5代表冰霜抗性)
resistance6=10(6代表阴影抗性)
resistance7(可能和2一样,但没有确定奥术抗性是多少)
bonding
=1, "拾取后绑定";
=2, "装备后绑定";
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=23的 副手物品,所有的副手物品都应该是inventorytype=22
inventorytype=24 箭、子弹等弹药
inventorytype=25 投掷武器
inventorytype=26 枪
装备怎么会有不同的颜色呢,其实也非常的简单,就是由quality=N来决定,下面是其详细代码,有了这个大家就可以制作属于自己的“诗史”级装备了。
quality=1 普通装备
quality=2 绿色装备
quality=3 蓝色装备
quality=4 紫色装备
quality=5 金色装备(像荣誉装就是这个)
其它:
stackable=N 是物品可以重叠放置的数量,比如箭,子弹,飞刀,草药,矿石等(改成200的话一个格子可以堆200个东东节省很多空间);
skill是物品所带有的内在属性,也就是具有什么样的技能,但比较难查,就不详细列出了。
skill=N 技能类型
skill=0 普通攻击
block=5 代表盾牌的格档值,用在其它物品上就不知道有没有用了
containerslots=16 包包的大小,即格子数的多少,大家不要改得过头了。
涉及模型的反光效果,我改的是20个格子。。哈哈哈
material=1 金属类
material=2 草木制品
material=3 药水毒液酒等液体
material=4 戒指、眼球、炸弹等没有模型的东西
material=5 外衣、腰带等
material=6 银色物品
material=7 布质物品
material=8 皮质物品
回答者:lyan99 - 试用期 一级 10-12 13:46
您觉得最佳答案好不好? 目前有 0 个人评价
50% (0)
50% (0)
其他回答 共 2 条
我推介你用
暴风雨物品管理工具
;SoftID=4965
这个是1.20的下载地址。
不过现在已经出到1.29版了
使用起来比较容易的,都是界面操作
一般做完装备,保存后,重启服务端才能看到自己做的装备
回答者:路飞D - 经理 四级 10-20 01:24
我的是MANGOS的
常用命令:
.lookupcreature $name 根据 $name 查找所有相关的生物, 列出符合要求的生物ID.
.displayid $num 改变当前目标生物的模型ID为 $num
.npcinfo 显示你所选择NPC 的详细信息列表
.addspw $cid 添加一个ID为 $cid 的生物
.factionid $num 改变当前目标生物的阵营为 $num
.modify faction 修改选择生物的阵营
.delete 将当前选择的目标生物,从世界中删除
.factionid 语法: .factionid #factionid 把你所选择的生物的阵营改成 #factionid.
.npcflag 语法: .npcflag #npcflag 设置你所选择的NPCFLAG为 #npcflag.
.lookupskill $name 通过 $name 查找技能, 返回符合要求的技能ID.
.addvendoritem .addvendoritem #物品号#最大数#生长时间 给商人增加一个商品。
.delvendoritem .delvendoritem #itemId 删除商人的一个商品。
.item $gid $num 添加Guid为$gid 的物品 $num个, 到你选择的商人出售列表内.
.itemrmv $gid 从你选择的商人出售列表里,移除GUID为 $gid 的物品
.goxyz $x $y $z $mapid 传送到地图的指定坐标
.goxy $x $y [$mapid] 传送玩家到地图为 $mapid 水(地)平面的X,Y坐标
.moveobject $gid 根据 $gid 移动 GameObject 到角色当前坐标
.goobject $gid 传送你的角色到 guidID 为 $gid 的 GameObject 那
.guid 语法: .guid 显示你所选择角色的GUID.
.addquest 语法: .addquest #quest_id 加1个任务ID为#quest_id的任务到任务日志里(就是接任务). 如果该任务是物品触发的则不能用该命令添加,要用.additem制造这个物品,然后再接任务.
.delticket 语法: .delticket all .delticket #num .delticket $character_name ALL将删除服务器上所有的标识, $character_name 将删除该角色名的所有标识, #num 将删除ID为 #num 的标识."
.addquest #quest_id 添加1个任务ID为#quest_id的任务到任务日志里(就是接任务). 如果该任务是物品触发的则不能用该命令添加,要用.additem制造这个物品,然后再接任务
.removequest #quest_id 设置任务为未完成和未激活。
.respawn .respawn 身边最近的生物或游戏目标将立即刷新。
.listitem .listitem #item_id [#max_count] 列出所有玩家中拥有的某一种物品,包括:银行、拍卖行、邮箱里的物品。如果没有指定最大数量,则显示10个
.turn 语法: .turn #goguid 设置 gameobject #goguid 的朝向为你所面对的方向.
.turnobject 语法: .turnobject #goguid 设置 gameobject #goguid 的朝向为你所面对的方向.
.announce GM公告。
.update #field #value 刷新你所选择怪物或角色的field #field的值#value . 如果没有提供#value, 则显示#field的内容."
.modify money #money .money #money 增加或者减少你选择玩家的钱,如果没选择玩家,则为自己. #gold为负数时是减少钱."
.respawn 所有冷却立刻结束
.modify scale 修改大小比例。
其它命令:
mangos GM命令,分类别,分组,便于查找,较详细
物品管理
.addgo $id 根据ID从 GameObject_temlate 中添加GameObject到游戏世界你所在的位置
.gameobject $id 在你当前位置增加一个 ID=$id 的 GameObject.
.targetobject [$gid,$part] 查找并显示最近的 GameObject 信息
.delobject $gid 删除 GUID 为 $gid 的 GameObject
.lookupitem $name 通过物品名查找道具, 例查找所有物品名中带'剑' 字的物品列表 .lookup 剑
.additemset $id 添加套装编号为 $id 的套装物品到你所选择角色的背包中...
.additem $id [$n]
.additem 0 $n $name 将物品添加到你所选择角色的背包里...
.object $id $save 添加模型ID=$id 的邮箱到你的当前位置,如果 $save=true 则保存至数据库
.delticket (all,$num,$name) 删除服务器上的 ticket, ALL(全部删除), $num(删除指定ID的) $name(删除角色的)
.item $gid $num 添加Guid为$gid 的物品 $num个, 到你选择的商人出售列表内.
.itemrmv $gid 从你选择的商人出售列表里,移除GUID为 $gid 的物品
NPC,生物,管理
.addspw $cid 添加一个ID为 $cid 的生物
.die 杀死你当前目标...如果没有目标...就会成为自杀...
.delete 将当前选择的目标生物,从世界中删除
.displayid $num 改变当前目标生物的模型ID为 $num
.demorph 恢复变形效果, ( 取消 morph命令的变形效果 )
.morph $id 改变你当前的模型ID为 $id, ( 用 .demorph 命令恢复 )
.npcinfo 显示你所选择NPC 的详细信息列表
.factionid $num 改变当前目标生物的阵营为 $num
.gocreature $num 传送你的角色到 GuidID 为 $num 的生物那
.changelevel $int 改变你选择生物的等级为 $int (可以改目标怪物的等级)
.guid 显示当前目标生物的 GUID
.lookupcreature $name 根据 $name 查找所有相关的生物, 列出符合要求的生物ID.
.lookupskill $name 通过 $name 查找技能, 返回符合要求的技能ID.
.addmove $guid 添加你当前的位置为 Guid=$guid 生物的路径点
.npcflag $flag 设置你所选择的 NPCFLAG 为 $flag
.turnobject $gid 设置 GameObject $gid 的朝向为你所面对的方向
.allowmove 是否允许你所选择的生物移动
.anim $mid 玩家将向你的角色做 ID=$mid 的表情
.aura $sid 为你的角色添加ID为 $sid 的光环
.setvalue $field $value $isint 设置你所选择生物FIELD的值, 如果 $isint=1, 设置值为整数的FIELD的值
.getvalue $field $isint 取得你所选择生物的 FIELD=$field 的值,,如$isint=1,取得FIELD的值为整数
.update $field $value 更新当前选择目标的 FIELD $field 的值为 $value. (若无$value,则显示$field值)
人物角色管理
.modify aspeed $num 改变玩家所有的速度(奔跑,游泳,跑回) $num 数值是0到50
.modify speed (效果同上,但只更改奔跑速度)
.modify swim $num (效果同上, 但只更改游泳速度)
.modify bwalk (效果同上, 但只更改后退速度)
.modify bit $field $bit 修改你选择角色的 $field 的 BIT 值为 $bit
.modify energy $num 修改你所选择玩家的能量值, 如果没有选择玩家,则改变自己的 (盗贼的?)
.modify faction 修改选择生物的阵营
.modify mana $num 修改所选择玩家的魔法值
.modify money $num 修改所选择玩家的金钱, $num 为负值是扣钱
.modify rage $num 修改所选择玩家的怒气值
.modify spell $num 修改所选择玩家的附魔值
.unlearn $start $end 将你选择目标的魔法ID= $start 的魔法遗忘掉...
.learnsk $id $level $max 给你所选择的角色学习 ID=$id 当前技能为 $level 最大技能为 $max 的技能
.unlearnsk $start $end 将你选择目标的技能ID= $start 的技能遗忘掉...
.hover $flag 允许或禁止你的角色悬空模式
.mod32value $field $value 添加值 $value 到你角色的 $field.
.pinfo [$player_name] 显示当前选择玩家的帐号信息, 或者使用 $player_name 指定显示
.kick $name 将角色名为 $name 的玩家从服务器上踢下线.
.learn $id 给你所选择的角色学习 ID=$ID 的魔法
.learn all 可以学习所有GM默认的魔法
.learn all_lang 来学习所有语言
.learn all_myclass 来学习自己职业的所有可用魔法 (只可以对自己使用)
.levelup $int $int 可以是正数或负数, 增加当前目标的等级,省略目标默认选择自己
.maxskill 将当前目标所有技能设置为最大值 (单手锤..双手斧...等等)
.revive 复活当前选择的目标, (如果没有目标,则复活自己).
.reset .Reset Level ( 将选定目标的等级重新设置为 1 )
.Reset spell ( 将选定目标的技能重置 )
.Reset stats ( 将选定目标的状态重置 )
.Reset talents ( 将选定目标的天赋重置 )
.standstate $id 改变你角色表情为 $id
传送相关
.recall $place 传送到世界的各个城镇 , sunr,thun,cross,ogri,neth,thel,storm,iron,under
.taxicheat $flag 开通或移除你所选择的玩家的所有飞行路线 $flag=1 表示开通, 0表示移除
.namego $string 传送到角色名为 $string 的玩家那,用角色名或点击玩家的头像,如组队时的头像
.name $string 把角色名为 $string 的玩家传送到你的身边, (也可以组队点其头像)
.gps 显示角色或生物的坐标(x,y,z) 地图标号和地区
.tele $string 可以直接输入 .tele 查看所有可以传送的地名
.searchtele $string 搜索并显示 .tele 命令的地名中包含 $string 的地名
.prog 把你传送到程序员之岛
.go $x $y $z $mapid 传送到地图的指定坐标
.goxy $x $y [$mapid] 传送玩家到地图为 $mapid 水(地)平面的X,Y坐标
.moveobject $gid 根据 $gid 移动 GameObject 到角色当前坐标
.goobject $gid 传送你的角色到 guidID 为 $gid 的 GameObject 那
其他
.gm off 禁止你角色的 前缀.
.gm on 开启你角色的 前缀.
.visible $num 设置GM当前的可视状态 $num 的值为 0 或 1
.whispers $flag 允许/禁止 GM 接受其他玩家的悄悄话,默认使用的是 mangosd.conf 的值
.bank 显示你的银行的详细目录 (移动银行啊?)
.explorecheat #flag 显示或者隐藏你所选择玩家所有的探索地图, 如果没目标,默认自己
.unaura $id 移除你身上 SpellID=$id 的光环效果
.createguild $s1 $s2 建立一个公会名为: $1 , 并且会长为: $2
.distance 显示你的角色到你选定生物的距离
.emote $id 你选择的生物,将做出 $id 的表情
服务器管理
.announce $string 广播 $string给所有在线玩家
.loadscripts $name 重新加载脚本名字为 $name 的脚本
.saveall 保存游戏里的所有角色信息
.shutdown [$delay] $delay(秒) , $delay 秒后关闭服务器,.
.shutdown cancel 停止关闭服务器
.wchange $type $status 设置当前天气为 $type, 天气情况为 $status
$type 的值 1=下雨, 2=下雪, 3=沙尘暴
$status 的值 0=禁止, 1=允许
有数据库一键安装
这种资源还是在百度或GOOGLE上搜一下,如果曾经有人在网上发布,或有网站下载,一般都会被搜索引擎收录;如果搜不到,你可以找一下相关的论坛,最好是那种人气比较高的论坛,注册会员,发帖求助,会有高手帮你的。
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款