您当前的位置:首页 > 其他技术 > 其他技术

魔神争霸数据库脚本指令说明

本文出处:网游动力作者:本站发布时间:2010-01-09阅读次数:

80%可用,有一些错误,个人在开服过程中已经修改!  

slk文件夹-需要压缩到客户端一份:
---------------------------------------------------------------------
D:mszbslkActionEx.slk    记录模型动作中要用的模型ID是天方中用的(可以考虑删除)
D:mszbslkarmour.slk        记录防具的模型ID和属性数值
D:mszbslkbuildingType.slk    记录建筑的属性是天方中的(可以考虑删除)
D:mszbslkcharmodulus.slk    记录各个角色的攻击系数
D:mszbslkcity.slk        记录各个城市的名字的 (目前用不到)
D:mszbslkcjvisual.slk    记录武器和防具模型的ID (可以考虑删除)
D:mszbslkCompound.slk    记录合成公式的
D:mszbslkCreateItemRule.slk    记录合成公式的
D:mszbslkcreaturesound.slk    记录音效的
D:mszbslkExpAndLevel.slk    记录升级要的经验
D:mszbslkExpression.slk    记录人物的表情
D:mszbslkgameaction.slk    记录人物的动作播放信息
D:mszbslkgem.slk        记录铁石的功用
D:mszbslkitem.slk        这是个复合表,将好几张别的表里的内容存在这里
D:mszbslkModel.slk        记录人物模型的动作以及对应的文件信息
D:mszbslkModelProj.slk    记录道具模型以及对应的文件信息
D:mszbslkmonster.slk        记录怪物信息-怪物暴率
D:mszbslkOfficialSetting.slk    记录功勋值和官位的信息
D:mszbslkParam_Desc.slk    天方里的 (可以考虑删除)
D:mszbslkParam_Formula.slk    天方里的 (可以考虑删除)
D:mszbslkProfession.slk    天方里的 (可以考虑删除)
D:mszbslkreel.slk        天方里的 (可以考虑删除)
D:mszbslkrestore.slk        记录恢复性道具的信息
D:mszbslkreputelist.slk    ***称号属性代码
D:mszbslkShopCenter.slk    ***商城修改物品
D:mszbslkskill.slk        记录游戏中所有的技能信息
D:mszbslkSkillEffect.slk    记录特殊技能的配置信息
D:mszbslkstatus.slk        记录所有的状态信息
D:mszbslkstone.slk        记录符石的信息
D:mszbslkString.slk        记录不同的语言提示-以及服务器名字
D:mszbslkweapon.slk        记录武器的信息
D:mszbslkWorldMapCfg.slk    记录游戏世界中所有的地图
---------------------------------------------------------------------
Script文件夹:
---------------------------------------------------------------------
D:mszbScriptCreatePlayer.s    注册上线送物品
D:mszbScriptGMtool.s        GM专用物品工具
D:mszbScriptNPC.slk        游戏NPC属性
D:mszbScriptUseItem.slk    增加新脚本
---------------------------------------------------------------------


====GameAccount数据库============================================
GameAccount        游戏帐户
------------------------------------
t_Game_Account        t_游戏帐户
    |-    ga_AccountID    注册用户名
    |-    ga_Password    注册用户密码MD5
t_Game_LoginLog        t_游戏登录记录
------------------------------------

====Role数据库===================================================
Role            角色
------------------------------------
GuildTop        公会顶端
LevelTop        水平顶端
MoneyTop        钱顶端
t_game_character    t_游戏角色
    |-    CharacterId    角色ID号
    |-    CharName    角色名
    |-    Lev        角色等级
    |-    Money        角色XX金
    |-    DataInfo    角色职业
    |-    OtherData    角色所在城市坐标,为空的话就认定为从为进过游戏的角色。此时进游戏会按照新手送物品送出新手装备。
    |-    KillValue    角色荣誉
    |-    Exp        角色总经验数值
t_game_Friend        t_游戏朋友
t_game_GMInfo        t_游戏 GM 信息
t_game_Guild        t_游戏公会
t_game_GuildMember    t_游戏公会成员
t_game_Item        t_游戏项目
t_game_ItemTraceLog    t_游戏项目痕迹记录
t_game_public_messages    t_勇敢的公众信息
t_game_ScriptVar    t_游戏手写体变容体
t_game_VisualInfo    t_游戏视觉的信息,时装
    |-    CharacterId    对应“t_游戏角色”中的CharacterId
    |-    DataInfo    角色已装备在身上的物品
t_game_YuanBao_ToGame    t_游戏元对游戏的 Bao
t_game_YuanBao_ToWeb    t_游戏元对网络的 Bao
t_guild_stake_record    t_公会赌注记录
UndueWord        不适当的字
------------------------------------

====ServerInfo数据库============================================
ServerInfo        伺候器信息
------------------------------------
t_game_Log        t_游戏记录
t_Online_Info        t_在线信息
t_server_Info        t_伺候器信息
t_User_Info        t_使用者信息
------------------------------------


天机脚本指令说明

proc_start,proc_end
proc_start n :
脚本开始,n脚本编号0~15
  0:是初始化当前的脚本
  1:是脚本的入口。
  2~15:是脚本的其它过程
proc_end
脚本结束
proc_start与proc_end这两条必须成对出现。
例子:

proc_start 0
  // 初始化脚本
proc_end
proc_start 1
  // 开始运行脚本入口
  // 做一些事
  jump 2
proc_end
proc_start 2
  // 做一些事
proc_end 
= , += , -= , *= , /=
设置变量
x = n
当x是数字时
0-5999:自定义的变量(3000~5999:任务变量)
n是值
注:0~5999的玩家变量范围为:-127~+127
  全局变量与临时变量范围为:- 2147483647~+2147483647

3000 = 0   // 设置3000号变量为0
2000 += 3   // 把2000号变量加上3
1000 -= 11   // 把1000号变量减去11
100 *= 2   // 把10号变量乘于2
1000 /= 10   // 把1000号变量除于10 
当x是字符串时
设置的是当前触发脚本的玩家的属性
name = 名称

Name = 织田信长
名称不能超过15个汉字或30个英文数字 
HeaderName = 队长名称

Dlg 0 你的队长是:%s HeaderName 
DstPlayerName = 目标玩家名称

Dlg 0 目标玩家是是:%s DstPlayerName 

Pos = x坐标 y坐标 方向

Pos = 59 128 6
x与y坐标为当前地图坐标
方向为0~7(右,右上,上,左上,左,左下,下,右下) 
map  = 地图编号

Map = 2 
model = 模型编号

Model = 5017 
Level = 等级

Level = 20 
Profession = 职业编号

Profession = 1 (职业编号查看<附表1>) 
Sex = 性别编号

Sex = 0 (性别编号查看<附表1>) 
[key] 操作 数量

[key]为如下:
money:金钱
exp:经验
skillexp:技能经验
con:体质
str:力量
dex:敏捷
int:智力
mgc:魔力
lky:运气
hp:生命量
mp:魔法量
操作为:
+=:加
-=:减
=:相同
如:
money += 100
hp -= 20
mp += 10 
if, else, endif
if:条件判断,这三条指令必须匹配出现
else:转折
endif:结束判断。
If [key] 逻辑操作符 数值
[key]
当[key]是数字时
为玩家身上的变量(0~4095)
当[key]是字符串时
为玩家的属性(同Set [key]的[key])
逻辑操作符
>:大于
>=:大于等于
<:小于
<=:小于等于
==:等于
!=:不等于

if money > 1000
  // 条件成立做某事
Else
  // 条件不成立做某事
endif 
call  n
调用某个编号的脚本,当脚本执行完毕,返回调用的地方,然后继续向下执
n: 脚本编号

call 3
脚本3调用完毕返回 
jump  n
跳转到某个编号的脚本,当脚本执行完毕,不返回调用的地方。(注意与call的区别)
n: 脚本编号

jump 3
脚本3调用完毕不返回 
return
返回当前脚本
dlg  0  text  $m
显示对话框。
参数:
第一参数为0表示有下一句、为1表示是最后一句
第二参数是对话内容
第三个到N个参数为变量

dlg 0 显示”下一步”按钮
dlg 1 显示”关闭按钮”
var $x
$x = 10
dlg  1  馒头为%s个,我的名字叫%s  $x  name
注:后面的变量将代替%s显示出来,运行结果为“馒头为10个,我的名字叫WitSun” 
Talk  time  color  text
在激活脚本玩家的屏幕显示信息
time: 显示的时间(毫秒,1000毫秒=1秒)
color: 字的颜色
text: 信息内容

Talk 10000 0xffff0000 你好呀 
TalkAll  time  color  text%s  $n
在所有玩家的屏幕显示信息
参数的意思同“Talk”指令

TalkAll 10000 0xffff0000 你有%s个物品 $n 
TalkArea  mapid  x  y  time  color  text%s  $n
在指定区域内玩家的屏幕显示信息
Mapid: 地图ID
x,y: 区域坐标
参数的意思同“TalkAll”指令

TalkArea 0 3 4 10000 0xffff0000 你有%s个物品 $n 

Tell  text
text: 信息内容
向玩家聊天框显示信息

Tell 你好呀 
flytomap
立即飞行到指定的地方,后面的参数为地图编号与地图坐标

Flytomap 1 45 47
1:为地图ID
45:为地图x坐标
47:为地图y坐标 
ask
多个选择项目的排列
[var] = ask 提示内容 选项0选项1选项3选项n
[var]:为系统变量

Var _n
_n = Ask 选项测试 上海 北京 深圳
if _n == 0
  dlg 你选择了上海
else
endif
if _n == 1
  dlg 你选择了北京
else
endif
if _n == 2
  dlg 你选择了深圳
else
endif 
RemoveAllEquip
卸去所有装备
RemoveAllItem
卸去所有道具

Shop_Item  id  price  mincount  maxcount  percount  x
设定商店卖的物品(与Shop指令配合使用)
id: 物品ID
price: 物品其本价格(-1时从SLK表读入)
mincount: 物品最少数量(库存)
maxcount: 物品最大数量(库存)
percount: 所卖物品数量
X: 物品活跃度(55~100)

Shop_Item 5700 10 60 5 80
表示:
5700: 物品ID
10: 基本价格
60: 库存最大数
5: 每批出售个数
80: 活跃度80% 
Shop  id  rate  type
交易指令(与Shop_Item指令配合使用)
id: 商店ID,每个商店有自己的唯一ID,范围由策划规定(ID不能重复)
rate: 物品刷新周期(分钟)
type: NPC回收物品的类型(查看<附表1>, 为-1时表示任意物品)

Shop_Item 5700 10 60 5 80
Shop_Item 7715 100 60 5 80
Shop 1 30 -1
表示: 商店出售ID5700物品,与ID7715物品
1: 商店唯一ID
30: 每30分钟刷新商店的物品,如果目前该商品少于30%,就补足数量,否则不补足
-1: 表示此商店回收任意类型物品 
HaveThisItem
判断是否有该道具

Var _n
_n = HaveThisItem 小刀
_n:为变量,返回数目 
RemoveThisItem
从包裹移除道具

RemoveThisItem 盔甲 3
3:移除所有该道具数量
-1移除所有该道具 
IsThisItemEquipped
判断该道具是否被装备

Var _n
_n = IsThisItemEquipped 盔甲
_n:为变量,返回结果(返回0为没有,返回1是)  
IsThisSkillActived
判断玩家是否有该技能5  u w l.n e t

Var _n
_n = IsThisSkillActived  1090  1
1090:技能ID
1:技能级别
_n:为变量,返回结果(返回0为没有,返回1是) 
BC  苹果数为%s  $n
向所有玩家广播内容

BC 大家好呀 
SetBornPoint
设置出生点

SetBornPoint 1 30 40
1:地图ID
30,40:地图坐标 
TeachSkill
学习技能

TeachSkill 1000 1001 1001
1000,1001,1002:为技能ID
最多为64项 
Add_Item
玩家获得某样道具

Add_Item 大刀 1
大刀:道具名
1:数量 
Can_get_new_quest
是否可以接新的任务

Var _n
_n = Can_get_new_quest
_n:为变量,返回值,1为可以,0为不行 
Cancel_quest
取消任务

Cancel_quest 3000
3000:为任务变量 
Done_quest
完成任务

Done_quest 3000
3000:为任务变量 
Set_quest_state
设置任务状态

Set_quest_state 3000 1
3000:为任务变量
1:为任务状态, 为系统变量,返回值
0:未接过任务
-1:已完成任务
1~254:任务过程 
Get_quest_state
取得任务状态

Var _n
_n = Get_quest_state 3000
3000:为任务变量
_n:为任务状态 
Relate_quest  id  state  enter
关连任务
id: 任务ID
state: 任务状态
enter: 脚本入口

Relate_quest 3000 1 2
3000:为任务变量
1:为任务状态
2:为脚入入口
注:
任务NPC脚本始化时要对”自己所感兴趣的任务状态”进行关连
如:
proc_start 0
relate_quest 3000 0
relate_quest 3000 3
proc_end 
Var $
变量声明

Var $n
Var $g_n
$n:为临时变量
$g_n:为系统变量
临时变量前面加标识符’$’
系统变量以’$g_’开头
如:
Var $m
$m = 100
if $m == 100
else
endif 
RefreshMonster
刷怪

RefreshMonster  n  x  y  m
n:地图ID (当n为-1时表示刷新触发脚本的玩家或怪物所在地图上的怪)
x,y:小地图编号
m:区块ID
如:
RefreshMonster 0 3 4 3
在0号地图3,4编号为3的区块刷怪
(要在MonsterConfig.exe里事先编辑好) 
PlayMusic
播放音乐

PlayMusic n filename
n:
0:播放一次
1:重复播放
-1:停止播放
filename:音乐文件名
如:
PlayMusic data/music/1.mp3 
{#FFFF0000=文字#}
   基本格式使用“{}”大括号
   “#”字符代表16进制
在“#”后面跟8位16进制符号(16进制——0~~F),每2位代表一个颜色
“00”代表全透
“FF”代表实不透
“00~FF”之间可按情况任意取值
具体说明:
2位               2位              2位              2位
↓                 ↓                ↓               ↓
透明通道              红                绿               蓝
例子:{#FFFF0000=文字#}
形成效果就是“文字”
地点:地点名称{#FFFF0000=文字#}
人名:人物名称{#FFFFFF00=文字#}
道具:道具名称{#FF00FF00=文字#}
事件:事件名称{#FFFF9900=文字#}
//超链接
{h文字h}
例子: {h村长h}
形成效果: 村长
MakeItem
合成/精炼/强化

MakeItem  NeworOld  maketype(old)  rate  equiptype(new)  itemtype(new)  x1 x2 x3 x4  y a x waste(以上全是new) I d1begin  id1end  id2begin  id2end …(以上全是old)
NeworOld: 1是新的合成 0是老的
maketype: 制作类型
0:合成
1:精炼
2:强化
rate: NPC附加合成几率
equiptype: 指定是武器还是防具
itemtype: 生成物品具体类型(查看<附表1>,)
x1: 影响材料强度的作用大小系数;       x1=50-100
x2: 影响合成物品等级的作用大小系数;   x2=20
x3: 影响合成武器攻击强度总体大小的系数 x3=5-6
x4: 影响合成防具防御强度总体大小的系数 x4=5-6
y:  影响合成物品的耐久                 y=0
a:  影响合成物品的耐久                 a=1
x:  影响物品的耐久                     x=1
waste 各类合成物品的消耗度;
双手武器消耗度=0.1-0.3
单手武器消耗度=0.5-0.8
衣服消耗度=0.1-0.2
护腿消耗度=0.2-0.3
肩膀消耗度=0.4-0.5
护腕消耗度=0.5-0.8
腰带消耗度=0.3-0.5
头盔消耗度=0.4-0.6
鞋子消耗度=0.3-0.5
盾牌消耗度=0.1-0.4
idnbegin, idnend: 物品ID开始与结束区间
(最多8组) 
Rand
随机数值提取
Rand X    X为可变数值(1~32767)
假设 rand 10  取值范围为(0-9)

Var $n
$n = rand 2
if $n == 0
else
endif 
GetCharCount  x
获得x号地图玩家与NPC的数量
GetCharCount n
n: 地图ID

Var $n
$n = GetCharCount 3
// 获得3号地图的玩家数量
if $n == 0
else
endif 
注:是(玩家+NPC)的数量
ShowQuestDlg
显示任务对话框
$n = ShowQuestDlg请问你有什么事吗?
$n:返回值
-1:没有可用的任务
0:用户没选择任务
其它:任务ID号

proc_start 0
relate_quest 3000 0 1
relate_quest 3000 1 2
relate_quest 3001 1 1
proc_end
proc_start 1
var $n
$n = ShowQuestDlg 请问你有什么事吗?
If $n == -1
  Dlg 1 没任务
Else
Endif
If $n == 0
  Dlg 1 你没选择任务
Else
Endif
If $n == 3000
  Dlg 1 你选择了3000号任务
Else
Endif

proc_end 
UseSkill  id  level
使用技能
Id: 技能ID
Level: 技能等级

UseSkill 1024 1 
PopNpcList
显示当前地图NPC列表

PopNpcList 
AddSkill
添加技能

AddSkill 1000
1000:为技能ID 
GetWorldTime  type
获得游戏世界时间(天机时间)
type为:  Year  年
  Month 月
  Day  日
  Hour 时
  Minute 刻

var $n
$n = GetWorldTime  Day 
NpcMoveNext
让NPC移动到下一点

NpcMoveNext 
NpcPlayAnim  name  count  end
让NPC做一个动作(只有触发角本的玩家看得到)
Name: 动作名称
Count: 做这个动作的次数
End: 结束动作名称

NpcPlayAnim sayhello 4 idle 
NpcPlayAnimForAll  name  count  end
让NPC做一个动作(所有可视玩家看得到)
Name: 动作名称
Count: 做这个动作的次数
End: 结束动作名称

NpcPlayAnimForAll sayhello 4 idle 

CanLearnSkill  id  level
判断能否学习某个技能
id: 技能ID
level: 技能等级(从1开始!)

Var $n
$n = CanLearnSkill 1000 1 
ShowBank
获得玩家钱庄信息。

ShowBank 
DoRide  id
乘坐骑
id: 坐骑ID

DoRide 1000 
SetDialogName  name
显示对话框的名字
name: 名字

SetDialogName 天书 
SetHotkey  index  id
设置热键
Index: 所要放置热键的索引
Id: 热键ID

SetHotkey 0 1000 
SetStorage
玩家存取物品到仓库,NPC的名字请填写当地城市的名字来标志城市

SetStorage 
LogInfoToDB  info
把信息存储到数据库中
返回值:0失败,1成功

Var $return
$return = LogInfoToDB 打宝活动(%s-%s-%s-%s) $a $b $c $d 
GetTeamPlayerCount
获得团队里玩家数量
返回值最少是1人,也就是自己

Var $count
$count = GetTeamPlayerCount 
GetTeamPlayerLevel  x
获得团队里玩家等级
x:  0: 最低的等级
1: 最高的等级

Var $level
$level = GetTeamPlayerLevel 0 
SetTeamVar  key  var
设置团队变量
Key: 变量名
Var: 值

SetTeamVar 500 1 
GetTeamPlayerID  index
获得团队里某成员的ID
Index: 成员索引
注:如这团队有3个人,那索引就是0,1,2
而且0号索引的是队长

Var $count
$count = GetTeamPlayerCount
If $count == 2
   Var $id
   $id = GetTeamPlayerID 1
Else
endif 
GetCurPlayerID
获得当前脚本玩家的ID

Var $id
$id = GetCurPlayerID 
GetPlayerVar  id  key
获得玩家的变量
Id: 玩家ID
Key: 变量

Var $id
$id = GetTeamPlayerID 1
Var $hp
$hp = GetPlayerVar $id hp 
SetDstPlayer  id
设置目标玩家
Id: 玩家ID

Var $id
$id = GetTeamPlayerID 1
SetDstPlayer $id 
CreateMonster  mapid  x  y  r  bodysize  index  num
创建怪物
Mapid: 地图ID
x,y: 地图坐标
r: 半径
bodysize: 体形大小
index: 怪物索引
num: 怪物数量

CreateMonster 0 100 100 20 1 100 2 


 
注: 在游戏中查看脚本变量的方法,在聊天框输入“/var 变量名”
如:
/var 1000
/var $n 

附表1:

物品类型编号   
0 :恢复药品
1 :武器
2 :防具
8 :卷轴
9 :原料
10:勋章
12:工具
13:宝石   
   
职业编号   
0:刺客
1:战士
2:猎人
3:方士
4:牧师   
   
性别编号   
0:男
1:女   
武器编号   
0: 拳头,相当于徒手
1: 单手剑
2: 双手剑
3: 长弓
4: 枪,弩
5: 棍棒
6: 匕首
7: 盾牌
8: 拳套
9: 单手斧
10: 双手斧   
   
防具编号   
0: 头发
1: 头盔
2: 脸
3: 盔甲
4: 手套
5: 鞋子
6: 左手物品
7: 右手物品
8: 头饰
9: 盾
10: 护肩
11: 护腿
12: 戒指
13: 手镯
14: 项链
15: 腰带

removethisitem 凤翔血刃 1    从你背包中删掉一个物品
add_item 凤翔血刃 1        从你背包中加上一个物品
tell 你失去了一把摩斧镇魂    输出一句话(弹出对话框形式)