📄 scriptsdk.lua
字号:
-----------------------------------------------------------
--ScriptSdk.lua Created by knight 2005.1.14.
--
--定义简化策划书写任务和npc对话脚本的函数接口
print( "loading scriptsdk.lua" )
------------------------------------------------------------
--脚本系统全局变量
Page = {} --npc对话信息全局变量定义
Exchange = {}
ExchangeX = {}
FuncList = {}
Trade = {} --npc交易信息全局变量定义
Goods = {} --npc货物交易信息全局变量定义
Mission = {} --所有任务信息保存全局变量定义
MisLogList = {} --所有任务日志信息保存全局变量定义
TriggerList = {} --所有全局触发器信息保存全局变量定义
NpcMissionList = {} --npc携带任务信息全局变量定义
Trigger = {}
NpcInfoList = {} --所有npc脚本信息保存全局变量定义
NpcInfoList.count = 0 --所有npc脚本信息计数
MapList = {} --地图服务器所有地图名称信息列表
MapList.count = 0 --地图名称计数
RandParam = {} --随机任务的生成参数表
NpcList = {} --世界中所有NPC信息列表
NpcPointer = LUA_NULL --Npc初始化指针
Profession = {} --角色转职职业选择限制条件信息
Category = {} --角色转职职业选择体形限制条件信息
BerthPortList = {} --港口信息
ResourceList = {} --资源信息
ResourceList.wood = {}
ResourceList.mine = {}
BoatLevelList = {} --船只升级数据信息
talklist = {} --随机任务前后缀信息列表
--任务奖励选项类型
--多选一
PRIZE_SELONE = 0
--全给予
PRIZE_SELALL = 1
--任务类型
NOMAL_MISSION = 0 --普通任务
RAND_MISSION = 1 --随机任务
WORLD_MISSION = 2 --世界任务
--任务显示类型
ALLWAYS_SHOW = 0 --总是显示任务状态
COMPLETE_SHOW = 1 --完成任务条件时才显示任务状态,(只有角色满足完成条件,角色才会看到任务)
ACCEPT_SHOW = 2 --可以接受任务时任务才显示出来
--任务需求类型
MIS_RAND_KILL = 0 --摧毁物件
MIS_RAND_GET = 1 --获取物品
MIS_RAND_SEND = 2 --送物品
MIS_RAND_CONVOY = 3 --护送NPC
MIS_RAND_EXPLORE = 4 --探索地图
--护送NPC到达目标类型
MIS_CONVOY_NPC = 0 --护送交付NPC
MIS_CONVOY_MAP = 1 --护送到某个指定地点
--触发器类型
MIS_TRIGGER_NOMAL = 0 --普通
MIS_TRIGGER_RAND = 1 --随机(用于随机任务中,使用时根据传递的参数设置触发器信息)
--随机任务每个段必须完成的任务基数,才可以产生奖励物品
MIS_RAND_MAXCOMPLETE = 1
--随机任务等级类型
MIS_LEVEL_CHAR = 0 --角色随机任务等级类型
MIS_LEVEL_GANG = 1 --公会随机任务等级类型
--随机任务奖励经验类型
MIS_EXP_NOMAL = 0 --奖励普通经验
MIS_EXP_SAIL = 1 --奖励航海经验
MIS_EXP_LIFE = 2 --奖励生活经验
--各种实体类型信息
BASE_ENTITY = 0 --基本实体
RESOURCE_ENTITY = 1 --资源实体
TRANSIT_ENTITY = 2 --传送实体
BERTH_ENTITY = 3 --停泊实体
--NPC交易方式类型
TRADE_NOMAL = 0 --普通交易
TRADE_GOODS = 2 --货物交易
--任务奖励物品类型
MIS_ITEM_INST_BUY = 0 --商店买卖
MIS_ITEM_INST_MONS = 1 --怪物掉落
MIS_ITEM_INST_COMP = 2 --合成
MIS_ITEM_INST_TASK = 3 --任务获得
--下面是leo的黑市商人
MoliTable ={}
NakaTable ={}
CoinTable1000 ={}
CoinTable600 ={}
MoliTable[1]=0766
MoliTable[2]=0769
MoliTable[3]=0773
MoliTable[4]=0776
MoliTable[5]=0780
MoliTable[6]=0784
MoliTable[7]=0788
MoliTable[8]=0792
MoliTable[9]=0795
MoliTable[10]=0798
MoliTable[11]=0802
MoliTable[12]=0806
NakaTable[1]=0765
NakaTable[2]=0768
NakaTable[3]=0772
NakaTable[4]=0775
NakaTable[5]=0779
NakaTable[6]=0783
NakaTable[7]=0787
NakaTable[8]=0791
NakaTable[9]=0794
NakaTable[10]=0797
NakaTable[11]=0801
NakaTable[12]=0805
NakaTable[13]=0807
NakaTable[14]=0808
NakaTable[15]=0809
NakaTable[16]=0810
NakaTable[17]=0811
NakaTable[18]=0812
NakaTable[19]=0813
NakaTable[20]=0814
NakaTable[21]=0815
NakaTable[22]=0877
CoinTable1000[1]=0764
CoinTable1000[2]=0767
CoinTable1000[3]=0771
CoinTable1000[4]=0774
CoinTable1000[5]=0778
CoinTable1000[6]=0782
CoinTable1000[7]=0786
CoinTable1000[8]=0790
CoinTable1000[9]=0793
CoinTable1000[10]=0796
CoinTable1000[11]=0800
CoinTable1000[12]=0804
CoinTable1000[13]=0764
CoinTable1000[14]=0767
CoinTable1000[15]=0771
CoinTable1000[16]=0774
CoinTable1000[17]=0778
CoinTable1000[18]=0782
CoinTable1000[19]=0786
CoinTable1000[20]=0790
CoinTable1000[21]=0793
CoinTable1000[22]=0796
CoinTable1000[23]=0800
CoinTable1000[24]=0804
CoinTable1000[25]=0764
CoinTable1000[26]=0767
CoinTable1000[27]=0771
CoinTable1000[28]=0774
CoinTable1000[29]=0778
CoinTable1000[30]=0782
CoinTable1000[31]=0786
CoinTable1000[32]=0790
CoinTable1000[33]=0793
CoinTable1000[34]=0796
CoinTable1000[35]=0800
CoinTable1000[36]=0804
CoinTable600[1]=0763
CoinTable600[2]=0770
CoinTable600[3]=0777
CoinTable600[4]=0781
CoinTable600[5]=0785
CoinTable600[6]=0789
CoinTable600[7]=0799
CoinTable600[8]=0803
CoinTable600[9]=0763
CoinTable600[10]=0770
CoinTable600[11]=0777
CoinTable600[12]=0781
CoinTable600[13]=0785
CoinTable600[14]=0789
CoinTable600[15]=0799
CoinTable600[16]=0803
CoinTable600[17]=0763
CoinTable600[18]=0770
CoinTable600[19]=0777
CoinTable600[20]=0781
CoinTable600[21]=0785
CoinTable600[22]=0789
CoinTable600[23]=0799
CoinTable600[24]=0803
CoinTable600[25]=0763
CoinTable600[26]=0770
CoinTable600[27]=0777
CoinTable600[28]=0781
CoinTable600[29]=0785
CoinTable600[30]=0789
CoinTable600[31]=0799
CoinTable600[32]=0803
CoinTable600[33]=0763
CoinTable600[34]=0770
CoinTable600[35]=0777
CoinTable600[36]=0781
CoinTable600[37]=0785
CoinTable600[38]=0789
CoinTable600[39]=0799
CoinTable600[40]=0803
CoinTable600[41]=0763
CoinTable600[42]=0770
CoinTable600[43]=0777
CoinTable600[44]=0781
CoinTable600[45]=0785
CoinTable600[46]=0789
CoinTable600[47]=0799
CoinTable600[48]=0803
CoinTable600[49]=0763
CoinTable600[50]=0770
CoinTable600[51]=0777
CoinTable600[52]=0781
CoinTable600[53]=0785
CoinTable600[54]=0789
CoinTable600[55]=0799
CoinTable600[56]=0803
----------------leo黑市商人 end
------------------------------------------------------------
--初始化服务器船只升级信息
function InitBoatLevel()
BoatLevelList = {}
BoatLevelList.count = 0
end
--添加船只升级数据信息
function AddBoatLevel( level, money, exp )
BoatLevelList.count = BoatLevelList.count + 1
BoatLevelList[level] = {}
BoatLevelList[level].money = money
BoatLevelList[level].exp = exp
LG( "boatlevel_init", "AddBoatLevel: count, level, money, exp", BoatLevelList.count, level, money, exp )
end
--初始化地图列表信息
function InitMap()
MapList = {}
MapList.idname = {}
MapList.mapname = {}
MapList.count = 0
end
--添加地图名称信息自动生成地图唯一ID
function AddMap( idname, str )
for n = 1, MapList.count, 1 do
if MapList.mapname[n] == nil or MapList.idname[n] == nil then
break
end
if MapList.mapname[n] == str or MapList.idname[n] == idname then
return
end
end
MapList.count = MapList.count + 1
MapList.idname[MapList.count] = idname
MapList.mapname[MapList.count] = str
LG( "mission", "Set map ["..MapList.mapname[MapList.count].."], IDNAME = "..MapList.idname[MapList.count].."ID = "..MapList.count )
PRINT( "Set map ["..MapList.mapname[MapList.count].."], IDNAME = "..MapList.idname[MapList.count].."ID = "..MapList.count )
local ret = SetMap( MapList.idname[MapList.count], MapList.count )
if ret == LUA_FALSE then
LG( "mission", "Set map notice failed ["..MapList.mapname[MapList.count].."], IDNAME = "..MapList.idname[MapList.count].."ID = "..MapList.count )
PRINT( "Set map notice failed ["..MapList.mapname[MapList.count].."], IDNAME = "..MapList.idname[MapList.count].."ID = "..MapList.count )
end
end
--获得指定ID的地图名称
function GetMap( mapid )
if mapid > MapList.count or MapList.mapname[mapid] == nil then
return "Unknown map name"
end
return MapList.mapname[mapid]
end
--初始化对话页信息
function InitPage()
Page = {}
Page.trade = {}
for i = 1, 32, 1 do
Page[i] = {}
Page[i].count = 0
for n = 1, 12, 1 do
Page[i][n] = {}
end
end
Page[1].ismission = 1
end
--初始化交易页信息
function InitTrade()
Trade = {}
Trade.tp = TRADE_NOMAL
Trade.berth = -1
--武器
Trade[1] = {}
Trade[1].itemtype = WEAPON
Trade[1].count = 0;
Trade[1].item = {}
Trade[1].price = {}
--防具
Trade[2] = {}
Trade[2].itemtype = DEFENCE
Trade[2].count = 0;
Trade[2].item = {}
Trade[2].price = {}
--杂项
Trade[3] = {}
Trade[3].itemtype = OTHER
Trade[3].count = 0;
Trade[3].item = {}
Trade[3].price = {}
--合成
Trade[4] = {}
Trade[4].itemtype = SYNTHESIS
Trade[4].count = 0;
Trade[4].item = {}
Trade[4].price = {}
end
function InitTradeX( trade )
-- trade = {}
-- trade.tp = TRADE_NOMAL
-- trade.berth = -1
--武器
-- trade[1] = {}
trade[1].itemtype = WEAPON
trade[1].count = 0;
-- trade[1].item = {}
-- trade[1].price = {}
--防具
-- trade[2] = {}
trade[2].itemtype = DEFENCE
trade[2].count = 0;
-- trade[2].item = {}
-- trade[2].price = {}
--杂项
-- trade[3] = {}
trade[3].itemtype = OTHER
trade[3].count = 0;
-- trade[3].item = {}
-- trade[3].price = {}
--合成
-- trade[4] = {}
trade[4].itemtype = SYNTHESIS
trade[4].count = 0;
-- trade[4].item = {}
-- trade[4].price = {}
end
--初始化货物交易信息
function InitGoods( berth )
Trade = {}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -