Class TaskDesc
public id
public name
public typeTask
public klass
public state
public frd
public reqLev
public taskPre1
public taskPre2
public taskPre3
public taskPre4
public taskPre5
public teamReq
public timeReq
public numReq
public bakReq
public acceptNpc
public conveyNpc
public conveyPath
public taskTargetDesc
public NpcDialog1
public PlayerDialog1
public NpcDialog2
public PlayerDialog2
public NpcDialog3
public PlayerDialog3
public NpcDialog4
public PlayerDialog4
public GiveItem1
public GiveItem2
public GiveItem3
public GiveItem4
public GiveItem5
public SubmitNpc
public TaskStep
public TaskComplteDesc
public SubmitItem1
public SubmitItem1Num
public SubmitItem2
public SubmitItem2Num
public SubmitItem3
public SubmitItem3Num
public SubmitItem4
public SubmitItem4Num
public SubmitItem5
public SubmitItem5Num
public SubmitNpcDialog
public AwardExp
public AwardTael
public AwardMoney
public AwardGift
public AwardFriend
public AwardOther
public AwardItem1
public AwardItem1Num
public m_AwardItem1SelToken
public AwardItem2
public AwardItem2Num
public m_AwardItem2SelToken
public AwardItem3
public AwardItem3Num
public m_AwardItem3SelToken
public AwardItem4
public AwardItem4Num
public m_AwardItem4SelToken
public AwardItem5
public AwardItem5Num
public m_AwardItem5SelToken
public ClanBuilding
public ClanContrib
public PExp
Private Sub Class_Initialize()
id = 0
name = 0
typeTask = 0
klass = 0
state = 0
frd = 0
reqLev = 0
taskPre1 = 0
taskPre2 = 0
taskPre3 = 0
taskPre4 = 0
taskPre5 = 0
teamReq = 0
timeReq = 0
numReq = 0
bakReq = 0
acceptNpc = 0
conveyNpc = 0
conveyPath = 0
taskTargetDesc = 0
NpcDialog1 = 0
PlayerDialog1 = 0
NpcDialog2 = 0
PlayerDialog2 = 0
NpcDialog3 = 0
PlayerDialog3 = 0
NpcDialog4 = 0
PlayerDialog4 = 0
GiveItem1 = 0
GiveItem2 = 0
GiveItem3 = 0
GiveItem4 = 0
GiveItem5 = 0
SubmitNpc = 0
TaskStep = 0
TaskComplteDesc = 0
SubmitItem1 = 0
SubmitItem1Num = 0
SubmitItem2 = 0
SubmitItem2Num = 0
SubmitItem3 = 0
SubmitItem3Num = 0
SubmitItem4 = 0
SubmitItem4Num = 0
SubmitItem5 = 0
SubmitItem5Num = 0
SubmitNpcDialog = 0
AwardExp = 0
AwardTael = 0
AwardMoney = 0
AwardGift = 0
AwardFriend = 0
AwardOther = 0
AwardItem1 = 0
AwardItem1Num = 0
m_AwardItem1SelToken = 0
AwardItem2 = 0
AwardItem2Num = 0
m_AwardItem2SelToken = 0
AwardItem3 = 0
AwardItem3Num = 0
m_AwardItem3SelToken = 0
AwardItem4 = 0
AwardItem4Num = 0
m_AwardItem4SelToken = 0
AwardItem5 = 0
AwardItem5Num = 0
m_AwardItem5SelToken = 0
ClanBuilding = 0
ClanContrib = 0
PExp = 0
End Sub
End Class
Dim gPath
Out_1()
Sub Out_1()
if wscript.arguments(0) = "-h" Then
'MsgBox "使用说明" & Chr(13) & Chr(10) & "windows系统运行 cmd 进入对应文件目录 -h 帮助 -s 读取文件Task.xlsx路径"
MsgBox "使用说明" & vbCrLf & "windows系统运行 cmd 进入对应文件目录" & vbCrLf & " -h 帮助 -s 读取文件Task.xlsx路径"
ElseIf wscript.arguments(0) = "-s" Then
Out_2()
Else
MsgBox "噢噢!! 输入错误!! 文件名 -h 查看帮助"
End If
End Sub
Dim task_desc
Sub Out_2()
gPath = CreateObject("Scripting.FileSystemObject").GetFolder(wscript.arguments(1)).Path
'MsgBox "OK1"
'msgbox(gPath)
Dim oSheet,oWb,oExcel
Set oExcel = CreateObject("Excel.Application")
Set oWb = oExcel.Workbooks.Open(gPath & "\Task2.xlsx")
Set oSheet = oWb.Sheets("Task")
Max = oSheet.UsedRange.Rows.Count
ColumnMax = oSheet.UsedRange.Columns.Count
For row = 2 To Max
Set task_desc = new TaskDesc
For column = 1 To ColumnMax
Dim value_column
value_column = oSheet.Cells(row, column).Value
'id name type preTaskId playerLevel klass step describe toolsPublish awardExp awardTael awardItem
If oSheet.Cells(1, column).Value = "id" Then
task_desc.id = value_column
ElseIf oSheet.Cells(1, column).Value = "name" Then
task_desc.name = value_column
ElseIf oSheet.Cells(1, column).Value = "type" Then
task_desc.typeTask = value_column
ElseIf oSheet.Cells(1, column).Value = "preTaskId" Then
task_desc.taskPre1 = value_column
ElseIf oSheet.Cells(1, column).Value = "playerLevel" Then
task_desc.reqLev = value_column
ElseIf oSheet.Cells(1, column).Value = "klass" Then
task_desc.klass = value_column
ElseIf oSheet.Cells(1, column).Value = "step" Then
task_desc.TaskStep = value_column
ElseIf oSheet.Cells(1, column).Value = "describe" Then
task_desc.TaskComplteDesc = value_column
'暂留
ElseIf oSheet.Cells(1, column).Value = "toolsPublish" Then
task_desc.GiveItem1 = split(value_column, "|")
ElseIf oSheet.Cells(1, column).Value = "awardExp" Then
task_desc.AwardExp = value_column
ElseIf oSheet.Cells(1, column).Value = "awardTael" Then
task_desc.AwardTael = value_column
'暂留
ElseIf oSheet.Cells(1, column).Value = "awardItem" Then
task_desc.AwardItem1 = split(value_column, "|")
End If
Next
Call WriteLuaFile(task_desc, gPath)
Set task_desc = Nothing
Next
oExcel.Workbooks.Close
MsgBox "OK"
End Sub
Sub WriteLuaFile(task_desc, Path)
If task_desc.id = 1101 Then
msgbox(task_desc.id)
dim f
set f = CreateObject("ADODB.Stream")
f.Type=2
f.Charset = "UTF-8"
f.Open
'-----------------------------------------------------------------------------------------
f.WriteText "--任务的接受条件", 1
f.WriteText "function Task_Accept_0000" & task_desc.id & "()", 1
If task_desc.state <> 2 Then
f.WriteText " if GetPlayerData(6) ~= " & task_desc.state & " then", 1
f.WriteText " return false;", 1
f.WriteText " end", 1
End If
f.WriteText " local player = GetPlayer();", 1
If task_desc.reqLev <> 0 Then
f.WriteText " if player:GetLev() < " & task_desc.reqLev & " then", 1
f.WriteText " return false;", 1
f.WriteText " end", 1
End If
f.WriteText " local task = player:GetTaskMgr();", 1
f.WriteText " if task:HasAcceptedTask(" & task_desc.id & ") or task:HasCompletedTask(" & task_desc.id & ") or task:HasSubmitedTask(" & task_desc.id & ") then", 1
f.WriteText " return false;", 1
f.WriteText " end", 1
'前置任务
If task_desc.taskPre1 <> 0 Then
f.WriteText " if not task:HasSubmitedTask(" & task_desc.taskPre1 & ") then" , 1
f.WriteText " return false;" , 1
f.WriteText " end" , 1
End If
f.WriteText " return true;", 1
f.WriteText "end", 1
'-----------------------------------------------------------------------------------------
f.WriteText "-----可接任务条件", 1
f.WriteText "function Task_Can_Accept_0000" & task_desc.id & "()", 1
f.WriteText " local player = GetPlayer();", 1
f.WriteText " local task = player:GetTaskMgr();", 1
If task_desc.state <> 2 Then
f.WriteText " if GetPlayerData(6) ~= " & task_desc.state & " then", 1
f.WriteText " return false;", 1
f.WriteText " end", 1
End If
If task_desc.reqLev <> 0 Then
f.WriteText " if player:GetLev() < " & task_desc.reqLev & " then", 1
f.WriteText " return false;", 1
f.WriteText " end", 1
End If
If task_desc.typeTask = 6 Then
f.WriteText " if task:HasAcceptedTask(" & task_desc.id & ") or task:HasCompletedTask(" & task_desc.id & ") or task:HasSubmitedTask(" & task_desc.id & ") or not player:isClanTask(" & task_desc.id & ") then", 1
Else
f.WriteText " if task:HasAcceptedTask(" & task_desc.id & ") or task:HasCompletedTask(" & task_desc.id & ") or task:HasSubmitedTask(" & task_desc.id & ") then", 1
End If
f.WriteText " return false;", 1
f.WriteText " end", 1
f.WriteText " if not task:HasSubmitedTask(" & task_desc.taskPre1 & ") then" , 1
f.WriteText " return false;" , 1
f.WriteText " end" , 1
f.WriteText " return true;" , 1
f.WriteText "end" , 1
f.WriteText " ", 1
f.WriteText " ", 1
'-----------------------------------------------------------------------------------------
f.WriteText "--任务完成条件", 1
f.WriteText "function Task_Submit_0000" & task_desc.id & "()", 1
f.WriteText " if GetPlayer():GetTaskMgr():HasCompletedTask(" & task_desc.id & ") then", 1
f.WriteText " return true;", 1
f.WriteText " end", 1
f.WriteText " return false;", 1
f.WriteText "end", 1
f.WriteText " ", 1
f.WriteText " ", 1
'-----------------------------------------------------------------------------------------
f.WriteText "---------------------------------------", 1
f.WriteText "------NPC交互的任务脚本", 1
f.WriteText "---------------------------------------", 1
f.WriteText "function Task_0000" & task_desc.id & "(npcId)", 1
f.WriteText " local player = GetPlayer();", 1
f.WriteText " local task = player:GetTaskMgr();", 1
f.WriteText " local action = ActionTable:Instance();", 1
f.WriteText " ", 1
f.WriteText " if task:GetTaskAcceptNpc(" & task_desc.id & ") == npcId and Task_Accept_0000" & task_desc.id & "() then", 1
f.WriteText " action.m_ActionType = 0x0001;", 1
f.WriteText " action.m_ActionID = ", 1
f.WriteText " action.m_ActionToken = 1;", 1
f.WriteText " action.m_ActionStep = 01;", 1
'有待商榷
f.WriteText " action.m_ActionMsg = task_msg_294", 1
If task_desc.klass = 4 Then
f.WriteText " elseif task:GetTaskAcceptNpc(" & task_desc.id & ") == npcId and task:HasAcceptedTask(" & task_desc.id & ") then", 1
f.WriteText " action.m_ActionType = 0x0001;", 1
f.WriteText " action.m_ActionID = " & task_desc.id, 1
f.WriteText " action.m_ActionToken = 3;", 1
f.WriteText " action.m_ActionStep = 11;", 1
'有待商榷
f.WriteText " action.m_ActionMsg = task_msg_294", 1
End If
f.WriteText " elseif task:GetTaskSubmitNpc(" & task_desc.id & ") == npcId then", 1
f.WriteText " action.m_ActionStep = 01;", 1
f.WriteText " if Task_Submit_0000" & task_desc.id & "() then", 1
f.WriteText " action.m_ActionType = 0x0001;", 1
f.WriteText " action.m_ActionID = " & task_desc.id, 1
f.WriteText " action.m_ActionToken = 2;", 1
f.WriteText " action.m_ActionStep = 10;", 1
'有待商榷
f.WriteText " action.m_ActionMsg = task_msg_294", 1
f.WriteText " elseif task:HasAcceptedTask(" & task_desc.id & ") then", 1
f.WriteText " action.m_ActionType = 0x0001;", 1
f.WriteText " action.m_ActionID = " & task_desc.id, 1
f.WriteText " action.m_ActionToken = 0;", 1
f.WriteText " action.m_ActionStep = 0;", 1
'有待商榷
f.WriteText " action.m_ActionMsg = task_msg_294", 1
f.WriteText " end", 1
f.WriteText " end", 1
f.WriteText " return action;", 1
f.WriteText "end", 1
f.WriteText " ", 1
f.WriteText " ", 1
'交互步骤 这块暂时不写
'-----------------------------------------------------------------------------------------
f.WriteText "--接受任务", 1
f.WriteText "function Task_0000" & task_desc.id & "_accept()", 1
f.WriteText " local player = GetPlayer();", 1
f.WriteText " local task = player:GetTaskMgr();", 1
f.WriteText " if not Task_Accept_0000" & task_desc.id & "() then", 1
f.WriteText " return false", 1
f.WriteText " end", 1
for i = 0 to ubound(task_desc.GiveItem1)
if i = 0 Then
f.WriteText " local awards = {{" & task_desc.GiveItem1(i) & "}", 1
ElseIf i = ubound(task_desc.GiveItem1) Then
f.WriteText " ,{" & task_desc.GiveItem1(i) & "}}", 1
Else
f.WriteText " ,{" & task_desc.GiveItem1(i) & "}", 1
End If
next
f.WriteText " local fixReqGrid = 0", 1
f.WriteText " for i = 1, #awards do", 1
f.WriteText " fixReqGrid = fixReqGrid + package:GetItemUsedGrids(awards[i][1],awards[i][2],1)", 1
f.WriteText " end", 1
f.WriteText " if fixReqGrid > player:GetFreePackageSize() then", 1
f.WriteText " player:sendMsgCode(2, 1013, 0);", 1
f.WriteText " return false;", 1
f.WriteText " end", 1
f.WriteText " for i = 1, #awards do", 1
f.WriteText " if IsEquipTypeId(awards[1]) then", 1
f.WriteText " for k = 1, awards[2] do", 1
f.WriteText " package:AddEquip(awards[1], 1);", 1
f.WriteText " end", 1
f.WriteText " else", 1
f.WriteText " package:AddItem(awards[1],awards[2],1);", 1
f.WriteText " end", 1
f.WriteText " end", 1
f.WriteText "end", 1
f.WriteText "", 1
f.WriteText "--提交任务", 1
f.WriteText "function Task_0000" & task_desc.id & "_submit(itemId, itemNum)", 1
If task_desc.typeTask <> 3 Then
f.WriteText " local player = GetPlayer();", 1
f.WriteText " ", 1
End If
f.WriteText " local package = player:GetPackage();", 1
f.WriteText " if not player:GetTaskMgr():SubmitTask(" & task_desc.id & " then", 1
f.WriteText " return false;", 1
f.WriteText " end", 1
f.WriteText " ", 1
for i = 0 to ubound(task_desc.AwardItem1)
if i = 0 Then
f.WriteText " local awards = {{" & task_desc.AwardItem1(i) & "}", 1
ElseIf i = ubound(task_desc.AwardItem1) Then
f.WriteText " ,{" & task_desc.AwardItem1(i) & "}}", 1
Else
f.WriteText " ,{" & task_desc.AwardItem1(i) & "}", 1
End If
next
f.WriteText " local fixReqGrid = 0", 1
f.WriteText " for i = 1, #awards do", 1
f.WriteText " fixReqGrid = fixReqGrid + package:GetItemUsedGrids(awards[i][1],awards[i][2],1)", 1
f.WriteText " end", 1
f.WriteText " if fixReqGrid > player:GetFreePackageSize() then", 1
f.WriteText " player:sendMsgCode(2, 1013, 0);", 1
f.WriteText " return false;", 1
f.WriteText " end", 1
f.WriteText " for i = 1, #awards do", 1
f.WriteText " if IsEquipTypeId(awards[1]) then", 1
f.WriteText " for k = 1, awards[2] do", 1
f.WriteText " package:AddEquip(awards[1], 1);", 1
f.WriteText " end", 1
f.WriteText " else", 1
f.WriteText " package:AddItem(awards[1],awards[2],1);", 1
f.WriteText " end", 1
f.WriteText " end", 1
f.WriteText " player:AddExp(" & task_desc.AwardExp & ");", 1
f.WriteText " player:getTael(" & task_desc.AwardTael & ");", 1
f.WriteText "end", 1
f.WriteText "", 1
'-----------------------------------------------------------------------------------------
f.WriteText "--放弃任务", 1
f.WriteText "function Task_0000" & task_desc.id & "_abandon()", 1
f.WriteText " local package = GetPlayer():GetPackage();", 1
f.WriteText " return GetPlayer():GetTaskMgr():AbandonTask(" & task_desc.id & ");", 1
f.WriteText "end", 1
SaveFile Path & "\" & "TaskTest\" & "Task_0000" & task_desc.id & ".lua", f
f.Close()
set f = Nothing
End If
End Sub
Sub SaveFile(Path, txtStream)
dim f
set f = CreateObject("ADODB.Stream")
f.Type=1
f.Open
txtStream.position = 3
txtStream.CopyTo f,txtStream.size-3
f.SaveToFile Path, 2
f.Close()
set f = Nothing
End Sub
VBS excel 导出生成lua文件
最新推荐文章于 2021-12-14 15:28:44 发布