修改任务系统
This commit is contained in:
parent
405fed5123
commit
5112693089
11 changed files with 1645 additions and 1013 deletions
214
.codex/mcp_996_gui_proxy.js
Normal file
214
.codex/mcp_996_gui_proxy.js
Normal file
|
|
@ -0,0 +1,214 @@
|
||||||
|
const URL = process.env.MCP_996_GUI_URL;
|
||||||
|
const AUTH = process.env.MCP_996_GUI_AUTH;
|
||||||
|
const fs = require("fs");
|
||||||
|
const LOG = process.env.MCP_996_GUI_LOG || "C:\\Users\\Administrator\\.codex\\mcp_996_gui_proxy.log";
|
||||||
|
|
||||||
|
function log(message) {
|
||||||
|
try {
|
||||||
|
fs.appendFileSync(LOG, `${new Date().toISOString()} ${message}\n`, "utf8");
|
||||||
|
} catch {
|
||||||
|
// Logging must never break the MCP server.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
log(`start pid=${process.pid}`);
|
||||||
|
|
||||||
|
const tools = [
|
||||||
|
{
|
||||||
|
name: "list_rule_files",
|
||||||
|
description: "List all client GUI API rule files.",
|
||||||
|
inputSchema: { type: "object", properties: {}, additionalProperties: false },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "list_versions",
|
||||||
|
description: "List available client GUI API versions.",
|
||||||
|
inputSchema: { type: "object", properties: {}, additionalProperties: false },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "list_apis",
|
||||||
|
description: "Search client GUI APIs by keyword.",
|
||||||
|
inputSchema: {
|
||||||
|
type: "object",
|
||||||
|
properties: {
|
||||||
|
keyword: { type: "string", default: "" },
|
||||||
|
limit: { type: "integer", default: 50 },
|
||||||
|
version: { type: "string", default: "" },
|
||||||
|
},
|
||||||
|
additionalProperties: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "generate_lua",
|
||||||
|
description: "Generate client Lua code from the original natural language query.",
|
||||||
|
inputSchema: {
|
||||||
|
type: "object",
|
||||||
|
properties: {
|
||||||
|
query: { type: "string" },
|
||||||
|
top_k: { type: "integer", default: 3 },
|
||||||
|
version: { type: "string", default: "" },
|
||||||
|
},
|
||||||
|
required: ["query"],
|
||||||
|
additionalProperties: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "generate_lua_996",
|
||||||
|
description: "Alias of generate_lua for 996 API client GUI code generation.",
|
||||||
|
inputSchema: {
|
||||||
|
type: "object",
|
||||||
|
properties: {
|
||||||
|
query: { type: "string" },
|
||||||
|
top_k: { type: "integer", default: 3 },
|
||||||
|
version: { type: "string", default: "" },
|
||||||
|
},
|
||||||
|
required: ["query"],
|
||||||
|
additionalProperties: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
let input = Buffer.alloc(0);
|
||||||
|
|
||||||
|
process.stdin.on("data", (chunk) => {
|
||||||
|
log(`stdin bytes=${chunk.length}`);
|
||||||
|
input = Buffer.concat([input, chunk]);
|
||||||
|
readMessages();
|
||||||
|
});
|
||||||
|
|
||||||
|
process.stdin.on("end", () => log("stdin end"));
|
||||||
|
process.on("uncaughtException", (error) => log(`uncaught ${error.stack || error.message || error}`));
|
||||||
|
|
||||||
|
function readMessages() {
|
||||||
|
while (true) {
|
||||||
|
let headerEnd = input.indexOf("\r\n\r\n");
|
||||||
|
let separatorLength = 4;
|
||||||
|
if (headerEnd < 0) {
|
||||||
|
headerEnd = input.indexOf("\n\n");
|
||||||
|
separatorLength = 2;
|
||||||
|
}
|
||||||
|
if (headerEnd < 0) return;
|
||||||
|
|
||||||
|
const header = input.slice(0, headerEnd).toString("ascii");
|
||||||
|
const match = /Content-Length:\s*(\d+)/i.exec(header);
|
||||||
|
if (!match) {
|
||||||
|
input = input.slice(headerEnd + separatorLength);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const length = Number(match[1]);
|
||||||
|
const start = headerEnd + separatorLength;
|
||||||
|
const end = start + length;
|
||||||
|
if (input.length < end) return;
|
||||||
|
|
||||||
|
const body = input.slice(start, end).toString("utf8");
|
||||||
|
input = input.slice(end);
|
||||||
|
|
||||||
|
log(`message ${body}`);
|
||||||
|
handle(JSON.parse(body)).catch((error) => {
|
||||||
|
respond(JSON.parse(body).id, null, {
|
||||||
|
code: -32603,
|
||||||
|
message: error && error.message ? error.message : String(error),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function handle(message) {
|
||||||
|
if (message.id === undefined) return;
|
||||||
|
log(`handle ${message.method}`);
|
||||||
|
|
||||||
|
if (message.method === "initialize") {
|
||||||
|
respond(message.id, {
|
||||||
|
protocolVersion: message.params?.protocolVersion || "2025-03-26",
|
||||||
|
capabilities: { tools: { listChanged: false } },
|
||||||
|
serverInfo: { name: "996 Client GUI Proxy", version: "1.0.0" },
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (message.method === "tools/list") {
|
||||||
|
respond(message.id, { tools });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (message.method === "tools/call") {
|
||||||
|
const name = message.params?.name;
|
||||||
|
const args = message.params?.arguments || {};
|
||||||
|
const result = await callRemote(name, args);
|
||||||
|
respond(message.id, { content: [{ type: "text", text: stringifyResult(result) }] });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
respond(message.id, null, { code: -32601, message: `Unknown method: ${message.method}` });
|
||||||
|
}
|
||||||
|
|
||||||
|
async function callRemote(name, args) {
|
||||||
|
if (!URL || !AUTH) throw new Error("MCP_996_GUI_URL or MCP_996_GUI_AUTH is missing");
|
||||||
|
|
||||||
|
const init = await post(null, {
|
||||||
|
jsonrpc: "2.0",
|
||||||
|
id: 1,
|
||||||
|
method: "initialize",
|
||||||
|
params: {
|
||||||
|
protocolVersion: "2025-03-26",
|
||||||
|
capabilities: {},
|
||||||
|
clientInfo: { name: "codex-996-gui-proxy", version: "1.0.0" },
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const session = init.session;
|
||||||
|
await post(session, { jsonrpc: "2.0", method: "notifications/initialized", params: {} });
|
||||||
|
|
||||||
|
const response = await post(session, {
|
||||||
|
jsonrpc: "2.0",
|
||||||
|
id: 2,
|
||||||
|
method: "tools/call",
|
||||||
|
params: { name, arguments: args },
|
||||||
|
});
|
||||||
|
return response.data?.result ?? response.data;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function post(session, payload) {
|
||||||
|
const headers = {
|
||||||
|
Authorization: AUTH,
|
||||||
|
Accept: "application/json, text/event-stream",
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
};
|
||||||
|
if (session) headers["mcp-session-id"] = session;
|
||||||
|
|
||||||
|
const response = await fetch(URL, {
|
||||||
|
method: "POST",
|
||||||
|
headers,
|
||||||
|
body: JSON.stringify(payload),
|
||||||
|
});
|
||||||
|
|
||||||
|
const text = await response.text();
|
||||||
|
if (!response.ok) throw new Error(`Remote MCP HTTP ${response.status}: ${text}`);
|
||||||
|
|
||||||
|
return {
|
||||||
|
session: response.headers.get("mcp-session-id"),
|
||||||
|
data: parseMcpBody(text),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseMcpBody(text) {
|
||||||
|
if (!text || !text.trim()) return null;
|
||||||
|
const dataLine = text
|
||||||
|
.split(/\r?\n/)
|
||||||
|
.find((line) => line.startsWith("data:"));
|
||||||
|
return JSON.parse(dataLine ? dataLine.slice(5).trim() : text);
|
||||||
|
}
|
||||||
|
|
||||||
|
function stringifyResult(result) {
|
||||||
|
if (typeof result === "string") return result;
|
||||||
|
return JSON.stringify(result, null, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
function respond(id, result, error) {
|
||||||
|
const payload = error
|
||||||
|
? { jsonrpc: "2.0", id, error }
|
||||||
|
: { jsonrpc: "2.0", id, result };
|
||||||
|
const body = JSON.stringify(payload);
|
||||||
|
log(`respond id=${id} bytes=${Buffer.byteLength(body, "utf8")} error=${Boolean(error)}`);
|
||||||
|
process.stdout.write(`Content-Length: ${Buffer.byteLength(body, "utf8")}\r\n\r\n${body}`);
|
||||||
|
}
|
||||||
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -27,3 +27,6 @@ Mirserver/Mir200/!Setup.txt
|
||||||
Mirserver/DBServer/dbsrc.ini
|
Mirserver/DBServer/dbsrc.ini
|
||||||
client/env.json
|
client/env.json
|
||||||
|
|
||||||
|
# Local Codex MCP config
|
||||||
|
.codex/config.toml
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ ServerName=996Mir
|
||||||
ServerAddr=127.0.0.1
|
ServerAddr=127.0.0.1
|
||||||
GatePort=7200
|
GatePort=7200
|
||||||
GateAddr=127.0.0.1
|
GateAddr=127.0.0.1
|
||||||
ServerPath=F:\°ËÓò¹¥ËÙ\bayuMir\Mirserver\DBServer\
|
ServerPath=E:\传奇版本\bayuMir\Mirserver\DBServer\
|
||||||
plateformid=1881
|
plateformid=1881
|
||||||
DynamicIPMode=0
|
DynamicIPMode=0
|
||||||
Attack=0
|
Attack=0
|
||||||
|
|
@ -28,12 +28,12 @@ ServerID=1881
|
||||||
ServerType=0
|
ServerType=0
|
||||||
|
|
||||||
[DBSetup]
|
[DBSetup]
|
||||||
HeroDBName=box_6
|
HeroDBName=box
|
||||||
SQLIP=10.10.10.1
|
SQLIP=127.0.0.1
|
||||||
SQLUSERNAME=sa
|
SQLUSERNAME=sa
|
||||||
SQLPASSWORD=www.996m2.com
|
SQLPASSWORD=www.996m2.com
|
||||||
SQLPORT=1433
|
SQLPORT=1433
|
||||||
|
|
||||||
[DB]
|
[DB]
|
||||||
LogDir=F:\°ËÓò¹¥ËÙ\bayuMir\Mirserver\DBServer\\Log\
|
LogDir=E:\传奇版本\bayuMir\Mirserver\DBServer\\Log\
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -221,18 +221,18 @@ BoneKingMonster1=BoneCaptain
|
||||||
BoneKingMonster2=BoneArcher
|
BoneKingMonster2=BoneArcher
|
||||||
BoneKingMonster3=BoneSpearman
|
BoneKingMonster3=BoneSpearman
|
||||||
[Share]
|
[Share]
|
||||||
BaseDir=F:\°ËÓò¹¥ËÙ\bayuMir\Mirserver\Mir200\share\
|
BaseDir=E:\传奇版本\bayuMir\Mirserver\Mir200\share\
|
||||||
GuildDir=F:\°ËÓò¹¥ËÙ\bayuMir\Mirserver\Mir200\GuildBase\Guilds\
|
GuildDir=E:\传奇版本\bayuMir\Mirserver\Mir200\GuildBase\Guilds\
|
||||||
GuildFile=F:\°ËÓò¹¥ËÙ\bayuMir\Mirserver\Mir200\ShareV\
|
GuildFile=E:\传奇版本\bayuMir\Mirserver\Mir200\ShareV\
|
||||||
VentureDir=d:\Mirserver11\Mir200\ShareV\
|
VentureDir=d:\Mirserver11\Mir200\ShareV\
|
||||||
ConLogDir=F:\°ËÓò¹¥ËÙ\bayuMir\Mirserver\Mir200\ConLogDir\
|
ConLogDir=E:\传奇版本\bayuMir\Mirserver\Mir200\ConLogDir\
|
||||||
CastleDir=F:\°ËÓò¹¥ËÙ\bayuMir\Mirserver\Mir200\Castle\
|
CastleDir=E:\传奇版本\bayuMir\Mirserver\Mir200\Castle\
|
||||||
EnvirDir=F:\°ËÓò¹¥ËÙ\bayuMir\Mirserver\Mir200\Envir\
|
EnvirDir=E:\传奇版本\bayuMir\Mirserver\Mir200\Envir\
|
||||||
MapDir=F:\°ËÓò¹¥ËÙ\bayuMir\Mirserver\Mir200\map\
|
MapDir=E:\传奇版本\bayuMir\Mirserver\Mir200\map\
|
||||||
NoticeDir=F:\°ËÓò¹¥ËÙ\bayuMir\Mirserver\Mir200\Notice\
|
NoticeDir=E:\传奇版本\bayuMir\Mirserver\Mir200\Notice\
|
||||||
PlugDir=.\
|
PlugDir=.\
|
||||||
LogDir=F:\°ËÓò¹¥ËÙ\bayuMir\Mirserver\Mir200\Log\
|
LogDir=E:\传奇版本\bayuMir\Mirserver\Mir200\Log\
|
||||||
CastleFile=F:\°ËÓò¹¥ËÙ\bayuMir\Mirserver\Mir200\Castle\List.txt
|
CastleFile=E:\传奇版本\bayuMir\Mirserver\Mir200\Castle\List.txt
|
||||||
PayMentPointName=秒卡点
|
PayMentPointName=秒卡点
|
||||||
ChatDir=.\ChatLog\
|
ChatDir=.\ChatLog\
|
||||||
GameGold=人民币
|
GameGold=人民币
|
||||||
|
|
|
||||||
113
Mirserver/Mir200/Envir/QuestDiary/cfgcsv/cfg_主线任务 - 复制.lua
Normal file
113
Mirserver/Mir200/Envir/QuestDiary/cfgcsv/cfg_主线任务 - 复制.lua
Normal file
|
|
@ -0,0 +1,113 @@
|
||||||
|
-- cfg_主线任务
|
||||||
|
local config = {
|
||||||
|
[1] = {
|
||||||
|
id = 1,
|
||||||
|
next = 2,
|
||||||
|
enabled = true,
|
||||||
|
title = "[主线]了解首充",
|
||||||
|
desc = "了解首充后,前往任意地图击杀任意怪物5只。",
|
||||||
|
doingDesc = "前往任意地图击杀任意怪物。",
|
||||||
|
rewardText = "经验100万、金币5000",
|
||||||
|
visit = { type = "module", keys = { "ShouChongOBJ" }, open = "ShouChongOBJ_main" },
|
||||||
|
target = { type = "kill_mon", count = 5, map = "*", mon = "*" },
|
||||||
|
rewards = { { "money", "经验", 1000000 }, { "money", "金币", 5000 } },
|
||||||
|
},
|
||||||
|
[2] = {
|
||||||
|
id = 2,
|
||||||
|
next = 3,
|
||||||
|
enabled = true,
|
||||||
|
title = "[主线]拜访渡劫天尊",
|
||||||
|
desc = "拜访渡劫天尊后,前往任意地图击杀怪物5只。",
|
||||||
|
doingDesc = "前往任意地图击杀怪物。",
|
||||||
|
rewardText = "经验100万、金币10000",
|
||||||
|
visit = { type = "npc", ids = { 6 }, scripts = { "转生" } },
|
||||||
|
target = { type = "kill_mon", count = 5, map = "*", mon = "*" },
|
||||||
|
rewards = { { "money", "经验", 1000000 }, { "money", "金币", 10000 } },
|
||||||
|
},
|
||||||
|
[3] = {
|
||||||
|
id = 3,
|
||||||
|
next = 4,
|
||||||
|
enabled = true,
|
||||||
|
title = "[主线]拜访神兽淬体",
|
||||||
|
desc = "拜访神兽淬体后,前往任意地图击杀怪物5只。",
|
||||||
|
doingDesc = "前往任意地图击杀怪物。",
|
||||||
|
rewardText = "神兽之血*50、神兽之骨*50",
|
||||||
|
visit = { type = "npc", ids = { 5 }, scripts = { "神兽淬体" } },
|
||||||
|
target = { type = "kill_mon", count = 5, map = "*", mon = "*" },
|
||||||
|
rewards = { { "item", "神兽之血", 50, 0 }, { "item", "神兽之骨", 50, 0 } },
|
||||||
|
},
|
||||||
|
[4] = {
|
||||||
|
id = 4,
|
||||||
|
next = 5,
|
||||||
|
enabled = true,
|
||||||
|
title = "[主线]拜访紫金仙人",
|
||||||
|
desc = "拜访紫金仙人后,前往任意地图击杀怪物5只。",
|
||||||
|
doingDesc = "前往任意地图击杀怪物。",
|
||||||
|
rewardText = "经验100万、千年玄石*50、金币10000",
|
||||||
|
visit = { type = "npc", ids = { 189 }, scripts = { "紫金葫芦" } },
|
||||||
|
target = { type = "kill_mon", count = 5, map = "*", mon = "*" },
|
||||||
|
rewards = { { "money", "经验", 1000000 }, { "item", "千年玄石", 50, 0 }, { "money", "金币", 10000 } },
|
||||||
|
},
|
||||||
|
[5] = {
|
||||||
|
id = 5,
|
||||||
|
next = 6,
|
||||||
|
enabled = true,
|
||||||
|
title = "[主线]了解绝学NPC",
|
||||||
|
desc = "了解绝学NPC后,前往任意地图击杀怪物5只。",
|
||||||
|
doingDesc = "前往任意地图击杀怪物。",
|
||||||
|
rewardText = "灵石*50、武林秘籍*1",
|
||||||
|
visit = { type = "npc", ids = { 12 }, scripts = { "绝学修炼" } },
|
||||||
|
target = { type = "kill_mon", count = 5, map = "*", mon = "*" },
|
||||||
|
rewards = { { "item", "灵石", 50, 0 }, { "item", "武林秘籍", 1, 0 } },
|
||||||
|
},
|
||||||
|
[6] = {
|
||||||
|
id = 6,
|
||||||
|
next = 7,
|
||||||
|
enabled = true,
|
||||||
|
title = "[主线]拜访幸运仙子",
|
||||||
|
desc = "拜访幸运仙子后,前往任意地图击杀怪物5只。",
|
||||||
|
doingDesc = "前往任意地图击杀怪物。",
|
||||||
|
rewardText = "经验100万、金币10000",
|
||||||
|
visit = { type = "npc", ids = { 11 }, scripts = { "幸运项链" } },
|
||||||
|
target = { type = "kill_mon", count = 5, map = "*", mon = "*" },
|
||||||
|
rewards = { { "money", "经验", 1000000 }, { "money", "金币", 10000 } },
|
||||||
|
},
|
||||||
|
[7] = {
|
||||||
|
id = 7,
|
||||||
|
next = 8,
|
||||||
|
enabled = true,
|
||||||
|
title = "[主线]前往装备重铸",
|
||||||
|
desc = "前往装备重铸后,前往任意地图击杀怪物5只。",
|
||||||
|
doingDesc = "前往任意地图击杀怪物。",
|
||||||
|
rewardText = "经验100万、金币10000",
|
||||||
|
visit = { type = "npc", ids = { 10 }, scripts = { "装备重铸" } },
|
||||||
|
target = { type = "kill_mon", count = 5, map = "*", mon = "*" },
|
||||||
|
rewards = { { "money", "经验", 1000000 }, { "money", "金币", 10000 } },
|
||||||
|
},
|
||||||
|
[8] = {
|
||||||
|
id = 8,
|
||||||
|
next = 9,
|
||||||
|
enabled = true,
|
||||||
|
title = "[主线]前往武器升级",
|
||||||
|
desc = "前往武器升级后,前往任意地图击杀怪物5只。",
|
||||||
|
doingDesc = "前往任意地图击杀怪物。",
|
||||||
|
rewardText = "黑铁矿石*4、金币10000",
|
||||||
|
visit = { type = "npc", ids = { 13 }, scripts = { "武器升级" } },
|
||||||
|
target = { type = "kill_mon", count = 5, map = "*", mon = "*" },
|
||||||
|
rewards = { { "item", "黑铁矿石", 4, 0 }, { "money", "金币", 10000 } },
|
||||||
|
},
|
||||||
|
[9] = {
|
||||||
|
id = 9,
|
||||||
|
next = nil,
|
||||||
|
enabled = true,
|
||||||
|
title = "[主线]任务结束",
|
||||||
|
desc = "主线任务已完成。",
|
||||||
|
doingDesc = "主线任务已完成。",
|
||||||
|
rewardText = "无",
|
||||||
|
visit = nil,
|
||||||
|
target = nil,
|
||||||
|
rewards = {},
|
||||||
|
finish = true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
return config
|
||||||
285
Mirserver/Mir200/Envir/QuestDiary/cfgcsv/cfg_主线任务.lua
Normal file
285
Mirserver/Mir200/Envir/QuestDiary/cfgcsv/cfg_主线任务.lua
Normal file
|
|
@ -0,0 +1,285 @@
|
||||||
|
-- cfg_主线任务
|
||||||
|
local config = {
|
||||||
|
[1] = {
|
||||||
|
next = 2,
|
||||||
|
enabled = true,
|
||||||
|
title = "[主线]了解首充",
|
||||||
|
desc = "了解首充后,前往任意地图击杀任意怪物5只。",
|
||||||
|
doingDesc = "前往任意地图击杀任意怪物。",
|
||||||
|
rewardText = "经验100万、金币5000",
|
||||||
|
visit_type = "module",
|
||||||
|
ShouChongOBJ = "",
|
||||||
|
visit_open = "ShouChongOBJ_main",
|
||||||
|
visit_ids_1 = 0,
|
||||||
|
visit_scripts_1 = "",
|
||||||
|
target_type = "kill_mon",
|
||||||
|
target_count = 5,
|
||||||
|
target_map = "*",
|
||||||
|
target_mon = "*",
|
||||||
|
finish = false,
|
||||||
|
reward = {
|
||||||
|
[1] = {
|
||||||
|
type = "money",
|
||||||
|
name = "经验",
|
||||||
|
num = 1000000,
|
||||||
|
bind = 0,
|
||||||
|
},
|
||||||
|
[2] = {
|
||||||
|
type = "money",
|
||||||
|
name = "金币",
|
||||||
|
num = 5000,
|
||||||
|
bind = 0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[2] = {
|
||||||
|
next = 3,
|
||||||
|
enabled = true,
|
||||||
|
title = "[主线]拜访渡劫天尊",
|
||||||
|
desc = "拜访渡劫天尊后,前往任意地图击杀怪物5只。",
|
||||||
|
doingDesc = "前往任意地图击杀怪物。",
|
||||||
|
rewardText = "经验100万、金币10000",
|
||||||
|
visit_type = "npc",
|
||||||
|
ShouChongOBJ = "",
|
||||||
|
visit_open = "",
|
||||||
|
visit_ids_1 = 6,
|
||||||
|
visit_scripts_1 = "转生",
|
||||||
|
target_type = "kill_mon",
|
||||||
|
target_count = 5,
|
||||||
|
target_map = "*",
|
||||||
|
target_mon = "*",
|
||||||
|
finish = false,
|
||||||
|
reward = {
|
||||||
|
[1] = {
|
||||||
|
type = "money",
|
||||||
|
name = "经验",
|
||||||
|
num = 1000000,
|
||||||
|
bind = 0,
|
||||||
|
},
|
||||||
|
[2] = {
|
||||||
|
type = "money",
|
||||||
|
name = "金币",
|
||||||
|
num = 10000,
|
||||||
|
bind = 0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[3] = {
|
||||||
|
next = 4,
|
||||||
|
enabled = true,
|
||||||
|
title = "[主线]拜访神兽淬体",
|
||||||
|
desc = "拜访神兽淬体后,前往任意地图击杀怪物5只。",
|
||||||
|
doingDesc = "前往任意地图击杀怪物。",
|
||||||
|
rewardText = "神兽之血*50、神兽之骨*50",
|
||||||
|
visit_type = "npc",
|
||||||
|
ShouChongOBJ = "",
|
||||||
|
visit_open = "",
|
||||||
|
visit_ids_1 = 5,
|
||||||
|
visit_scripts_1 = "神兽淬体",
|
||||||
|
target_type = "kill_mon",
|
||||||
|
target_count = 5,
|
||||||
|
target_map = "*",
|
||||||
|
target_mon = "*",
|
||||||
|
finish = false,
|
||||||
|
reward = {
|
||||||
|
[1] = {
|
||||||
|
type = "item",
|
||||||
|
name = "神兽之血",
|
||||||
|
num = 50,
|
||||||
|
bind = 0,
|
||||||
|
},
|
||||||
|
[2] = {
|
||||||
|
type = "item",
|
||||||
|
name = "神兽之骨",
|
||||||
|
num = 50,
|
||||||
|
bind = 0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[4] = {
|
||||||
|
next = 5,
|
||||||
|
enabled = true,
|
||||||
|
title = "[主线]拜访紫金仙人",
|
||||||
|
desc = "拜访紫金仙人后,前往任意地图击杀怪物5只。",
|
||||||
|
doingDesc = "前往任意地图击杀怪物。",
|
||||||
|
rewardText = "经验100万、千年玄石*50、金币10000",
|
||||||
|
visit_type = "npc",
|
||||||
|
ShouChongOBJ = "",
|
||||||
|
visit_open = "",
|
||||||
|
visit_ids_1 = 189,
|
||||||
|
visit_scripts_1 = "紫金葫芦",
|
||||||
|
target_type = "kill_mon",
|
||||||
|
target_count = 5,
|
||||||
|
target_map = "*",
|
||||||
|
target_mon = "*",
|
||||||
|
finish = false,
|
||||||
|
reward = {
|
||||||
|
[1] = {
|
||||||
|
type = "money",
|
||||||
|
name = "经验",
|
||||||
|
num = 1000000,
|
||||||
|
bind = 0,
|
||||||
|
},
|
||||||
|
[2] = {
|
||||||
|
type = "item",
|
||||||
|
name = "千年玄石",
|
||||||
|
num = 50,
|
||||||
|
bind = 0,
|
||||||
|
},
|
||||||
|
[3] = {
|
||||||
|
type = "money",
|
||||||
|
name = "金币",
|
||||||
|
num = 10000,
|
||||||
|
bind = 0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[5] = {
|
||||||
|
next = 6,
|
||||||
|
enabled = true,
|
||||||
|
title = "[主线]了解绝学NPC",
|
||||||
|
desc = "了解绝学NPC后,前往任意地图击杀怪物5只。",
|
||||||
|
doingDesc = "前往任意地图击杀怪物。",
|
||||||
|
rewardText = "灵石*50、武林秘籍*1",
|
||||||
|
visit_type = "npc",
|
||||||
|
ShouChongOBJ = "",
|
||||||
|
visit_open = "",
|
||||||
|
visit_ids_1 = 12,
|
||||||
|
visit_scripts_1 = "绝学修炼",
|
||||||
|
target_type = "kill_mon",
|
||||||
|
target_count = 5,
|
||||||
|
target_map = "*",
|
||||||
|
target_mon = "*",
|
||||||
|
finish = false,
|
||||||
|
reward = {
|
||||||
|
[1] = {
|
||||||
|
type = "item",
|
||||||
|
name = "灵石",
|
||||||
|
num = 50,
|
||||||
|
bind = 0,
|
||||||
|
},
|
||||||
|
[2] = {
|
||||||
|
type = "item",
|
||||||
|
name = "武林秘籍",
|
||||||
|
num = 1,
|
||||||
|
bind = 0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[6] = {
|
||||||
|
next = 7,
|
||||||
|
enabled = true,
|
||||||
|
title = "[主线]拜访幸运仙子",
|
||||||
|
desc = "拜访幸运仙子后,前往任意地图击杀怪物5只。",
|
||||||
|
doingDesc = "前往任意地图击杀怪物。",
|
||||||
|
rewardText = "经验100万、金币10000",
|
||||||
|
visit_type = "npc",
|
||||||
|
ShouChongOBJ = "",
|
||||||
|
visit_open = "",
|
||||||
|
visit_ids_1 = 11,
|
||||||
|
visit_scripts_1 = "幸运项链",
|
||||||
|
target_type = "kill_mon",
|
||||||
|
target_count = 5,
|
||||||
|
target_map = "*",
|
||||||
|
target_mon = "*",
|
||||||
|
finish = false,
|
||||||
|
reward = {
|
||||||
|
[1] = {
|
||||||
|
type = "money",
|
||||||
|
name = "经验",
|
||||||
|
num = 1000000,
|
||||||
|
bind = 0,
|
||||||
|
},
|
||||||
|
[2] = {
|
||||||
|
type = "money",
|
||||||
|
name = "金币",
|
||||||
|
num = 10000,
|
||||||
|
bind = 0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[7] = {
|
||||||
|
next = 8,
|
||||||
|
enabled = true,
|
||||||
|
title = "[主线]前往装备重铸",
|
||||||
|
desc = "前往装备重铸后,前往任意地图击杀怪物5只。",
|
||||||
|
doingDesc = "前往任意地图击杀怪物。",
|
||||||
|
rewardText = "经验100万、金币10000",
|
||||||
|
visit_type = "npc",
|
||||||
|
ShouChongOBJ = "",
|
||||||
|
visit_open = "",
|
||||||
|
visit_ids_1 = 10,
|
||||||
|
visit_scripts_1 = "装备重铸",
|
||||||
|
target_type = "kill_mon",
|
||||||
|
target_count = 5,
|
||||||
|
target_map = "*",
|
||||||
|
target_mon = "*",
|
||||||
|
finish = false,
|
||||||
|
reward = {
|
||||||
|
[1] = {
|
||||||
|
type = "money",
|
||||||
|
name = "经验",
|
||||||
|
num = 1000000,
|
||||||
|
bind = 0,
|
||||||
|
},
|
||||||
|
[2] = {
|
||||||
|
type = "money",
|
||||||
|
name = "金币",
|
||||||
|
num = 10000,
|
||||||
|
bind = 0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[8] = {
|
||||||
|
next = 9,
|
||||||
|
enabled = true,
|
||||||
|
title = "[主线]前往武器升级",
|
||||||
|
desc = "前往武器升级后,前往任意地图击杀怪物5只。",
|
||||||
|
doingDesc = "前往任意地图击杀怪物。",
|
||||||
|
rewardText = "黑铁矿石*4、金币10000",
|
||||||
|
visit_type = "npc",
|
||||||
|
ShouChongOBJ = "",
|
||||||
|
visit_open = "",
|
||||||
|
visit_ids_1 = 13,
|
||||||
|
visit_scripts_1 = "武器升级",
|
||||||
|
target_type = "kill_mon",
|
||||||
|
target_count = 5,
|
||||||
|
target_map = "*",
|
||||||
|
target_mon = "*",
|
||||||
|
finish = false,
|
||||||
|
reward = {
|
||||||
|
[1] = {
|
||||||
|
type = "item",
|
||||||
|
name = "黑铁矿石",
|
||||||
|
num = 4,
|
||||||
|
bind = 0,
|
||||||
|
},
|
||||||
|
[2] = {
|
||||||
|
type = "money",
|
||||||
|
name = "金币",
|
||||||
|
num = 10000,
|
||||||
|
bind = 0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[9] = {
|
||||||
|
next = 0,
|
||||||
|
enabled = true,
|
||||||
|
title = "[主线]任务结束",
|
||||||
|
desc = "主线任务已完成。",
|
||||||
|
doingDesc = "主线任务已完成。",
|
||||||
|
rewardText = "无",
|
||||||
|
visit_type = "",
|
||||||
|
ShouChongOBJ = "",
|
||||||
|
visit_open = "",
|
||||||
|
visit_ids_1 = 0,
|
||||||
|
visit_scripts_1 = "",
|
||||||
|
target_type = "",
|
||||||
|
target_count = 0,
|
||||||
|
target_map = "",
|
||||||
|
target_mon = "",
|
||||||
|
finish = true,
|
||||||
|
reward = {},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
return config
|
||||||
|
|
@ -5,117 +5,67 @@ MainLineTaskOBJ.STATUS_WAIT_VISIT = 0
|
||||||
MainLineTaskOBJ.STATUS_DOING = 1
|
MainLineTaskOBJ.STATUS_DOING = 1
|
||||||
MainLineTaskOBJ.STATUS_FINISH = 9
|
MainLineTaskOBJ.STATUS_FINISH = 9
|
||||||
|
|
||||||
MainLineTaskOBJ.cfg = {
|
MainLineTaskOBJ.cfg = Func.require("cfg_Ö÷ÏßÈÎÎñ")
|
||||||
[1] = {
|
|
||||||
id = 1,
|
local function appendCfgValue(list, value)
|
||||||
next = 2,
|
if value == nil or value == "" or tonumber(value) == 0 then
|
||||||
enabled = true,
|
return
|
||||||
title = "[主线]了解首充",
|
end
|
||||||
desc = "了解首充后,前往任意地图击杀任意怪物5只。",
|
table.insert(list, value)
|
||||||
doingDesc = "前往任意地图击杀任意怪物。",
|
end
|
||||||
rewardText = "经验100万、金币5000",
|
|
||||||
visit = { type = "module", keys = { "ShouChongOBJ" } },
|
local function normalizeTaskCfg(cfg)
|
||||||
target = { type = "kill_mon", count = 5, map = "*", mon = "*" },
|
for id, task in pairs(cfg or {}) do
|
||||||
rewards = { { "money", "经验", 1000000 }, { "money", "金币", 5000 } },
|
task.id = tonumber(task.id or id) or id
|
||||||
},
|
|
||||||
[2] = {
|
if not task.visit and task.visit_type and task.visit_type ~= "" then
|
||||||
id = 2,
|
local visit = { type = task.visit_type }
|
||||||
next = 3,
|
if visit.type == "module" then
|
||||||
enabled = true,
|
visit.keys = {}
|
||||||
title = "[主线]拜访渡劫天尊",
|
appendCfgValue(visit.keys, task.visit_keys_1)
|
||||||
desc = "拜访渡劫天尊后,前往任意地图击杀怪物5只。",
|
if #visit.keys <= 0 and task.ShouChongOBJ ~= nil then
|
||||||
doingDesc = "前往任意地图击杀怪物。",
|
table.insert(visit.keys, "ShouChongOBJ")
|
||||||
rewardText = "经验100万、金币10000",
|
end
|
||||||
visit = { type = "npc", ids = { 6 }, scripts = { "转生" } },
|
if #visit.keys <= 0 and task.visit_open and task.visit_open ~= "" then
|
||||||
target = { type = "kill_mon", count = 5, map = "*", mon = "*" },
|
table.insert(visit.keys, string.gsub(task.visit_open, "_main$", ""))
|
||||||
rewards = { { "money", "经验", 1000000 }, { "money", "金币", 10000 } },
|
end
|
||||||
},
|
if task.visit_open and task.visit_open ~= "" then
|
||||||
[3] = {
|
visit.open = task.visit_open
|
||||||
id = 3,
|
end
|
||||||
next = 4,
|
elseif visit.type == "npc" then
|
||||||
enabled = true,
|
visit.ids = {}
|
||||||
title = "[主线]拜访神兽淬体",
|
appendCfgValue(visit.ids, task.visit_ids_1)
|
||||||
desc = "拜访神兽淬体后,前往任意地图击杀怪物5只。",
|
visit.scripts = {}
|
||||||
doingDesc = "前往任意地图击杀怪物。",
|
appendCfgValue(visit.scripts, task.visit_scripts_1)
|
||||||
rewardText = "神兽之血*50、神兽之骨*50",
|
end
|
||||||
visit = { type = "npc", ids = { 5 }, scripts = { "神兽淬体" } },
|
task.visit = visit
|
||||||
target = { type = "kill_mon", count = 5, map = "*", mon = "*" },
|
end
|
||||||
rewards = { { "item", "神兽之血", 50, 0 }, { "item", "神兽之骨", 50, 0 } },
|
|
||||||
},
|
if not task.target and task.target_type and task.target_type ~= "" then
|
||||||
[4] = {
|
task.target = {
|
||||||
id = 4,
|
type = task.target_type,
|
||||||
next = 5,
|
count = tonumber(task.target_count) or 0,
|
||||||
enabled = true,
|
map = task.target_map,
|
||||||
title = "[主线]拜访紫金仙人",
|
mon = task.target_mon,
|
||||||
desc = "拜访紫金仙人后,前往任意地图击杀怪物5只。",
|
}
|
||||||
doingDesc = "前往任意地图击杀怪物。",
|
end
|
||||||
rewardText = "经验100万、千年玄石*50、金币10000",
|
|
||||||
visit = { type = "npc", ids = { 189 }, scripts = { "紫金葫芦" } },
|
if not task.rewards then
|
||||||
target = { type = "kill_mon", count = 5, map = "*", mon = "*" },
|
task.rewards = {}
|
||||||
rewards = { { "money", "经验", 1000000 }, { "item", "千年玄石", 50, 0 }, { "money", "金币", 10000 } },
|
for _, reward in ipairs(task.reward or {}) do
|
||||||
},
|
table.insert(task.rewards, {
|
||||||
[5] = {
|
reward.type,
|
||||||
id = 5,
|
reward.name,
|
||||||
next = 6,
|
tonumber(reward.num) or 0,
|
||||||
enabled = true,
|
tonumber(reward.bind) or 0,
|
||||||
title = "[主线]了解绝学NPC",
|
})
|
||||||
desc = "了解绝学NPC后,前往任意地图击杀怪物5只。",
|
end
|
||||||
doingDesc = "前往任意地图击杀怪物。",
|
end
|
||||||
rewardText = "灵石*50、武林秘籍*1",
|
end
|
||||||
visit = { type = "npc", ids = { 12 }, scripts = { "绝学修炼" } },
|
return cfg
|
||||||
target = { type = "kill_mon", count = 5, map = "*", mon = "*" },
|
end
|
||||||
rewards = { { "item", "灵石", 50, 0 }, { "item", "武林秘籍", 1, 0 } },
|
|
||||||
},
|
MainLineTaskOBJ.cfg = normalizeTaskCfg(MainLineTaskOBJ.cfg)
|
||||||
[6] = {
|
|
||||||
id = 6,
|
|
||||||
next = 7,
|
|
||||||
enabled = true,
|
|
||||||
title = "[主线]拜访幸运仙子",
|
|
||||||
desc = "拜访幸运仙子后,前往任意地图击杀怪物5只。",
|
|
||||||
doingDesc = "前往任意地图击杀怪物。",
|
|
||||||
rewardText = "经验100万、金币10000",
|
|
||||||
visit = { type = "npc", ids = { 11 }, scripts = { "幸运项链" } },
|
|
||||||
target = { type = "kill_mon", count = 5, map = "*", mon = "*" },
|
|
||||||
rewards = { { "money", "经验", 1000000 }, { "money", "金币", 10000 } },
|
|
||||||
},
|
|
||||||
[7] = {
|
|
||||||
id = 7,
|
|
||||||
next = 8,
|
|
||||||
enabled = true,
|
|
||||||
title = "[主线]前往装备重铸",
|
|
||||||
desc = "前往装备重铸后,前往任意地图击杀怪物5只。",
|
|
||||||
doingDesc = "前往任意地图击杀怪物。",
|
|
||||||
rewardText = "经验100万、金币10000",
|
|
||||||
visit = { type = "npc", ids = { 10 }, scripts = { "装备重铸" } },
|
|
||||||
target = { type = "kill_mon", count = 5, map = "*", mon = "*" },
|
|
||||||
rewards = { { "money", "经验", 1000000 }, { "money", "金币", 10000 } },
|
|
||||||
},
|
|
||||||
[8] = {
|
|
||||||
id = 8,
|
|
||||||
next = 9,
|
|
||||||
enabled = true,
|
|
||||||
title = "[主线]前往武器升级",
|
|
||||||
desc = "前往武器升级后,前往任意地图击杀怪物5只。",
|
|
||||||
doingDesc = "前往任意地图击杀怪物。",
|
|
||||||
rewardText = "黑铁矿石*4、金币10000",
|
|
||||||
visit = { type = "npc", ids = { 13 }, scripts = { "武器升级" } },
|
|
||||||
target = { type = "kill_mon", count = 5, map = "*", mon = "*" },
|
|
||||||
rewards = { { "item", "黑铁矿石", 4, 0 }, { "money", "金币", 10000 } },
|
|
||||||
},
|
|
||||||
[9] = {
|
|
||||||
id = 9,
|
|
||||||
next = nil,
|
|
||||||
enabled = true,
|
|
||||||
title = "[主线]任务结束",
|
|
||||||
desc = "主线任务已完成。",
|
|
||||||
doingDesc = "主线任务已完成。",
|
|
||||||
rewardText = "无",
|
|
||||||
visit = nil,
|
|
||||||
target = nil,
|
|
||||||
rewards = {},
|
|
||||||
finish = true,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
function MainLineTaskOBJ:getTask(id)
|
function MainLineTaskOBJ:getTask(id)
|
||||||
return self.cfg[tonumber(id or 1)]
|
return self.cfg[tonumber(id or 1)]
|
||||||
|
|
@ -419,12 +369,33 @@ GameEvent.add(EventCfg.onKillMon, function(actor, mon, itype, kill, monName, map
|
||||||
MainLineTaskOBJ:onKillMon(actor, mon, itype, kill, monName, mapID)
|
MainLineTaskOBJ:onKillMon(actor, mon, itype, kill, monName, mapID)
|
||||||
end, MainLineTaskOBJ)
|
end, MainLineTaskOBJ)
|
||||||
|
|
||||||
MainLineTaskOBJ.allowFunc = { "query", "visit" }
|
MainLineTaskOBJ.allowFunc = { "query", "visit", "route" }
|
||||||
|
|
||||||
function MainLineTaskOBJ:query(actor)
|
function MainLineTaskOBJ:query(actor)
|
||||||
self:sync(actor)
|
self:sync(actor)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function MainLineTaskOBJ:route(actor)
|
||||||
|
if not isnotnull(actor) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if self:getStatus(actor) ~= self.STATUS_WAIT_VISIT then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local id = self:getTaskId(actor)
|
||||||
|
local task = self:getValidTask(id)
|
||||||
|
if not task or task.finish or not task.visit then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local visit = task.visit
|
||||||
|
if visit.type == "module" and visit.open then
|
||||||
|
Message:SubLink(actor, visit.open)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if visit.type == "npc" and visit.ids and visit.ids[1] then
|
||||||
|
opennpcshowex(actor, tonumber(visit.ids[1]), 6, 2)
|
||||||
|
end
|
||||||
|
end
|
||||||
function MainLineTaskOBJ:visit(actor, p1, p2, p3, data)
|
function MainLineTaskOBJ:visit(actor, p1, p2, p3, data)
|
||||||
local visitKey = p1
|
local visitKey = p1
|
||||||
if type(data) == "table" then
|
if type(data) == "table" then
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,10 @@ end
|
||||||
TaskShowOBJ.UIfile = getUifile()
|
TaskShowOBJ.UIfile = getUifile()
|
||||||
TaskShowOBJ.mainLineData = nil
|
TaskShowOBJ.mainLineData = nil
|
||||||
|
|
||||||
|
local function canRouteMainLine(data)
|
||||||
|
return data and tonumber(data.status or 0) == 0 and not data.finish
|
||||||
|
end
|
||||||
|
|
||||||
local function getShortDesc(data)
|
local function getShortDesc(data)
|
||||||
local status = tonumber(data.status or 0) or 0
|
local status = tonumber(data.status or 0) or 0
|
||||||
if data.finish then
|
if data.finish then
|
||||||
|
|
@ -60,6 +64,26 @@ local function getRewardItems(data)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function TaskShowOBJ:createMainLineTouch()
|
||||||
|
if not self.ui or GUI:Win_IsNull(self.ui.TaskShow_Layout) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
self.ui.MainLineTouch_Layout = GUI:Layout_Create(self.ui.TaskShow_Layout, "MainLineTouch_Layout", 0, 58, 202, 130, false)
|
||||||
|
GUI:setTouchEnabled(self.ui.MainLineTouch_Layout, false)
|
||||||
|
GUI:addOnClickEvent(self.ui.MainLineTouch_Layout, function()
|
||||||
|
local data = self.mainLineData or (MainLineTaskOBJ and MainLineTaskOBJ.data)
|
||||||
|
if canRouteMainLine(data) then
|
||||||
|
ssrMessage:SubLink("MainLineTaskOBJ_route")
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
function TaskShowOBJ:updateMainLineTouch(data)
|
||||||
|
if self.ui and self.ui.MainLineTouch_Layout and GUI:Win_IsNotNull(self.ui.MainLineTouch_Layout) then
|
||||||
|
GUI:setTouchEnabled(self.ui.MainLineTouch_Layout, canRouteMainLine(data))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function TaskShowOBJ:main()
|
function TaskShowOBJ:main()
|
||||||
local parent = GUI:Win_FindParent(110)
|
local parent = GUI:Win_FindParent(110)
|
||||||
if GUI:Win_IsNotNull(parent) then
|
if GUI:Win_IsNotNull(parent) then
|
||||||
|
|
@ -71,6 +95,7 @@ function TaskShowOBJ:main()
|
||||||
self.ui = GUI:ui_delegate(parent)
|
self.ui = GUI:ui_delegate(parent)
|
||||||
|
|
||||||
if self.UIfile == "game/Tongyong/TaskShowUI" then
|
if self.UIfile == "game/Tongyong/TaskShowUI" then
|
||||||
|
self:createMainLineTouch()
|
||||||
self:renderMainLine(self.mainLineData or (MainLineTaskOBJ and MainLineTaskOBJ.data))
|
self:renderMainLine(self.mainLineData or (MainLineTaskOBJ and MainLineTaskOBJ.data))
|
||||||
ssrMessage:SubLink("MainLineTaskOBJ_query")
|
ssrMessage:SubLink("MainLineTaskOBJ_query")
|
||||||
SL:ScheduleOnce(function()
|
SL:ScheduleOnce(function()
|
||||||
|
|
@ -94,6 +119,7 @@ end
|
||||||
|
|
||||||
function TaskShowOBJ:renderMainLine(data)
|
function TaskShowOBJ:renderMainLine(data)
|
||||||
if not data or not self.ui then
|
if not data or not self.ui then
|
||||||
|
self:updateMainLineTouch(nil)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
if GUI:Win_IsNotNull(self.ui.TaskTitle_Text) then
|
if GUI:Win_IsNotNull(self.ui.TaskTitle_Text) then
|
||||||
|
|
@ -114,11 +140,13 @@ function TaskShowOBJ:renderMainLine(data)
|
||||||
if GUI:Win_IsNotNull(self.ui.TaskReward_Text) then
|
if GUI:Win_IsNotNull(self.ui.TaskReward_Text) then
|
||||||
GUI:Text_setString(self.ui.TaskReward_Text, "奖励:")
|
GUI:Text_setString(self.ui.TaskReward_Text, "奖励:")
|
||||||
end
|
end
|
||||||
|
self:updateMainLineTouch(data)
|
||||||
if GUI:Win_IsNotNull(self.ui.RewardItems_Layout) then
|
if GUI:Win_IsNotNull(self.ui.RewardItems_Layout) then
|
||||||
GUI:removeAllChildren(self.ui.RewardItems_Layout)
|
GUI:removeAllChildren(self.ui.RewardItems_Layout)
|
||||||
local items = getRewardItems(data)
|
local items = getRewardItems(data)
|
||||||
if #items <= 0 then
|
if #items <= 0 then
|
||||||
local EmptyReward_Text = GUI:Text_Create(self.ui.RewardItems_Layout, "EmptyReward_Text", 0, 24, 12, "#ffd36a", "无")
|
local EmptyReward_Text = GUI:Text_Create(self.ui.RewardItems_Layout, "EmptyReward_Text", 0, 24, 12, "#ffd36a",
|
||||||
|
"无")
|
||||||
GUI:setAnchorPoint(EmptyReward_Text, 0.00, 0.50)
|
GUI:setAnchorPoint(EmptyReward_Text, 0.00, 0.50)
|
||||||
GUI:Text_enableOutline(EmptyReward_Text, "#000000", 1)
|
GUI:Text_enableOutline(EmptyReward_Text, "#000000", 1)
|
||||||
return
|
return
|
||||||
|
|
@ -129,19 +157,23 @@ function TaskShowOBJ:renderMainLine(data)
|
||||||
end
|
end
|
||||||
local name = item.name or item[1]
|
local name = item.name or item[1]
|
||||||
local count = tonumber(item.count or item[2]) or 1
|
local count = tonumber(item.count or item[2]) or 1
|
||||||
local x = 22 + (i - 1) * 44
|
local x = 22 + (i - 1) * 60
|
||||||
local y = 29
|
local y = 4
|
||||||
local index = SL:GetMetaValue("ITEM_INDEX_BY_NAME", name)
|
local index = SL:GetMetaValue("ITEM_INDEX_BY_NAME", name)
|
||||||
if index then
|
if index then
|
||||||
local itemShow = GUI:ItemShow_Create(self.ui.RewardItems_Layout, "RewardItem_" .. i, x, y, {
|
local itemshow_bg = GUI:Image_Create(self.ui.RewardItems_Layout, "RewardItemBg_" .. i, x, y,
|
||||||
|
"res/custom/43/1.png")
|
||||||
|
local bg_size = GUI:getContentSize(itemshow_bg)
|
||||||
|
local itemShow = GUI:ItemShow_Create(itemshow_bg, "RewardItem_" .. i, bg_size.width / 2, bg_size.height / 2, {
|
||||||
index = index,
|
index = index,
|
||||||
count = count,
|
count = count,
|
||||||
bgVisible = true,
|
bgVisible = false,
|
||||||
look = true
|
look = true
|
||||||
})
|
})
|
||||||
GUI:setScale(itemShow, 0.86)
|
GUI:setAnchorPoint(itemShow, 0.50, 0.50)
|
||||||
else
|
else
|
||||||
local RewardText = GUI:Text_Create(self.ui.RewardItems_Layout, "RewardText_" .. i, x - 18, y, 11, "#ffd36a", tostring(name or "奖励"))
|
local RewardText = GUI:Text_Create(self.ui.RewardItems_Layout, "RewardText_" .. i, x - 18, y, 11,
|
||||||
|
"#ffd36a", tostring(name or "奖励"))
|
||||||
GUI:setAnchorPoint(RewardText, 0.00, 0.50)
|
GUI:setAnchorPoint(RewardText, 0.00, 0.50)
|
||||||
GUI:Text_enableOutline(RewardText, "#000000", 1)
|
GUI:Text_enableOutline(RewardText, "#000000", 1)
|
||||||
end
|
end
|
||||||
|
|
@ -157,15 +189,18 @@ function TaskShowOBJ:upLuanDou(data)
|
||||||
self.ui[list_Layout] = GUI:Layout_Create(self.ui.rank_list, list_Layout, 0, 0, 200, 30, false)
|
self.ui[list_Layout] = GUI:Layout_Create(self.ui.rank_list, list_Layout, 0, 0, 200, 30, false)
|
||||||
|
|
||||||
local list_rank = string.format("list_rank_%d", i)
|
local list_rank = string.format("list_rank_%d", i)
|
||||||
self.ui[list_rank] = GUI:Text_Create(self.ui[list_Layout], list_rank, 27, 16, 16, SL:GetHexColorByStyleId(255 - i), i)
|
self.ui[list_rank] = GUI:Text_Create(self.ui[list_Layout], list_rank, 27, 16, 16,
|
||||||
|
SL:GetHexColorByStyleId(255 - i), i)
|
||||||
GUI:setAnchorPoint(self.ui[list_rank], 0.50, 0.50)
|
GUI:setAnchorPoint(self.ui[list_rank], 0.50, 0.50)
|
||||||
|
|
||||||
local list_name = string.format("list_name_%d", i)
|
local list_name = string.format("list_name_%d", i)
|
||||||
self.ui[list_name] = GUI:Text_Create(self.ui[list_Layout], list_name, 101, 16, 16, SL:GetHexColorByStyleId(255 - i), v[2])
|
self.ui[list_name] = GUI:Text_Create(self.ui[list_Layout], list_name, 101, 16, 16,
|
||||||
|
SL:GetHexColorByStyleId(255 - i), v[2])
|
||||||
GUI:setAnchorPoint(self.ui[list_name], 0.50, 0.50)
|
GUI:setAnchorPoint(self.ui[list_name], 0.50, 0.50)
|
||||||
|
|
||||||
local list_jifen = string.format("list_jifen_%d", i)
|
local list_jifen = string.format("list_jifen_%d", i)
|
||||||
self.ui[list_jifen] = GUI:Text_Create(self.ui[list_Layout], list_jifen, 172, 16, 16, SL:GetHexColorByStyleId(255 - i), v[3])
|
self.ui[list_jifen] = GUI:Text_Create(self.ui[list_Layout], list_jifen, 172, 16, 16,
|
||||||
|
SL:GetHexColorByStyleId(255 - i), v[3])
|
||||||
GUI:setAnchorPoint(self.ui[list_jifen], 0.50, 0.50)
|
GUI:setAnchorPoint(self.ui[list_jifen], 0.50, 0.50)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1 +1 @@
|
||||||
{"gm":0,"signkey":"634eff98723b31da43ed35f0dd4edf36","oper_mode":1,"modlist":"http://list.dhsf.xqhuyu.com/testmodlist/modlist_tool_1942.txt","resolution":"1024x768","channel":1}
|
{"modlist":"http:\/\/list.dhsf.xqhuyu.com\/testmodlist\/modlist_tool_1942.txt","channel":1,"gm":0,"signkey":"634eff98723b31da43ed35f0dd4edf36","resolution":"1136x640","oper_mode":2}
|
||||||
11
csv/cfg_主线任务.csv
Normal file
11
csv/cfg_主线任务.csv
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
序列,下一任务,是否启用,标题,待拜访描述,进行中描述,奖励描述,拜访类型,模块Key_1,模块打开对象,NPC_ID_1,NPC脚本_1,目标类型,目标数量,目标地图,目标怪物,奖励_1_类型,奖励_1_名称,奖励_1_数量,奖励_1_绑定,奖励_2_类型,奖励_2_名称,奖励_2_数量,奖励_2_绑定,奖励_3_类型,奖励_3_名称,奖励_3_数量,奖励_3_绑定,是否结束任务
|
||||||
|
id,next,enabled,title,desc,doingDesc,rewardText,visit_type,visit_keys_1,visit_open,visit_ids_1,visit_scripts_1,target_type,target_count,target_map,target_mon,reward_1_type,reward_1_name,reward_1_num,reward_1_bind,reward_2_type,reward_2_name,reward_2_num,reward_2_bind,reward_3_type,reward_3_name,reward_3_num,reward_3_bind,finish
|
||||||
|
1,2,TRUE,[主线]了解首充,了解首充后,前往任意地图击杀任意怪物5只。,前往任意地图击杀任意怪物。,经验100万、金币5000,module,ShouChongOBJ,ShouChongOBJ_main,,,kill_mon,5,*,*,money,经验,1000000,0,money,金币,5000,0,,,,,
|
||||||
|
2,3,TRUE,[主线]拜访渡劫天尊,拜访渡劫天尊后,前往任意地图击杀怪物5只。,前往任意地图击杀怪物。,经验100万、金币10000,npc,,,6,转生,kill_mon,5,*,*,money,经验,1000000,0,money,金币,10000,0,,,,,
|
||||||
|
3,4,TRUE,[主线]拜访神兽淬体,拜访神兽淬体后,前往任意地图击杀怪物5只。,前往任意地图击杀怪物。,神兽之血*50、神兽之骨*50,npc,,,5,神兽淬体,kill_mon,5,*,*,item,神兽之血,50,0,item,神兽之骨,50,0,,,,,
|
||||||
|
4,5,TRUE,[主线]拜访紫金仙人,拜访紫金仙人后,前往任意地图击杀怪物5只。,前往任意地图击杀怪物。,经验100万、千年玄石*50、金币10000,npc,,,189,紫金葫芦,kill_mon,5,*,*,money,经验,1000000,0,item,千年玄石,50,0,money,金币,10000,0,
|
||||||
|
5,6,TRUE,[主线]了解绝学NPC,了解绝学NPC后,前往任意地图击杀怪物5只。,前往任意地图击杀怪物。,灵石*50、武林秘籍*1,npc,,,12,绝学修炼,kill_mon,5,*,*,item,灵石,50,0,item,武林秘籍,1,0,,,,,
|
||||||
|
6,7,TRUE,[主线]拜访幸运仙子,拜访幸运仙子后,前往任意地图击杀怪物5只。,前往任意地图击杀怪物。,经验100万、金币10000,npc,,,11,幸运项链,kill_mon,5,*,*,money,经验,1000000,0,money,金币,10000,0,,,,,
|
||||||
|
7,8,TRUE,[主线]前往装备重铸,前往装备重铸后,前往任意地图击杀怪物5只。,前往任意地图击杀怪物。,经验100万、金币10000,npc,,,10,装备重铸,kill_mon,5,*,*,money,经验,1000000,0,money,金币,10000,0,,,,,
|
||||||
|
8,9,TRUE,[主线]前往武器升级,前往武器升级后,前往任意地图击杀怪物5只。,前往任意地图击杀怪物。,黑铁矿石*4、金币10000,npc,,,13,武器升级,kill_mon,5,*,*,item,黑铁矿石,4,0,money,金币,10000,0,,,,,
|
||||||
|
9,,TRUE,[主线]任务结束,主线任务已完成。,主线任务已完成。,无,,,,,,,,,,,,,,,,,,,,,,TRUE
|
||||||
|
Loading…
Reference in a new issue