wbsrwk 发表于 2013-5-2 21:58

通用内置修改器的一点小修改

首先感谢blackgodx的无私奉献,修改器参见原帖:
[首发]《饥荒》全版本通用内置修改器。纯脚本。(更新若干新功能2/19)
http://bbs.3dmgame.com/forum.php?mod=viewthread&tid=3530975&fromuid=3455207

拿过来后发现用着不是很顺手,只支持10个物品创建,而且修改后必须保存游戏再读档重进,于是简单修改了下:
(添加到main.lua的末尾)
----from here
temp_copy_entity = nil;
-- copy inst
TheInput:AddKeyUpHandler(KEY_C, function()
if TheInput:IsKeyDown(KEY_CTRL) then
local target = nil
local ent = TheInput:GetWorldEntityUnderMouse()
if ent and not ent:HasTag("player") then
   target = ent
end
temp_copy_entity = target
end
end
);
-- paste inst
TheInput:AddKeyUpHandler(KEY_V, function()
if TheInput:IsKeyDown(KEY_CTRL) and temp_copy_entity ~= nil then
if temp_copy_entity.prefab ~= "" then
   local inst = Spawn(temp_copy_entity.prefab)
   inst.Transform:SetPosition(TheInput:GetMouseWorldPos():Get())
end
end
end
);
-- del inst
TheInput:AddKeyUpHandler(KEY_D, function()
if TheInput:IsKeyDown(KEY_CTRL) and temp_copy_entity ~= nil then
temp_copy_entity:Remove()
temp_copy_entity = nil
end
end
);
-- move inst
TheInput:AddKeyUpHandler(KEY_X, function()
if TheInput:IsKeyDown(KEY_CTRL) and temp_copy_entity ~= nil and temp_copy_entity.Transform then
temp_copy_entity.Transform:SetPosition(TheInput:GetMouseWorldPos():Get())
end
end
);
--to here
大意是Ctrl+C 复制鼠标指向的对象,Ctrl+V 复制一份到鼠标位置,Ctrl+D是删除(不要乱用!), Ctrl+X自然是把刚复制的对象移动到鼠标制定位置。

最近简单读了下游戏的源码和结构,发现还是很好懂的,简单改了几个像蜂巢存储蜂蜜上限和背包特异功能等,觉得这游戏就是用来改的嘛~

最后还是得郑重提醒: 修改游戏会导致游戏失去初始的乐趣,不喜勿入!

top10001 发表于 2013-5-3 00:08

CTRL + V 會錯誤當機

其他功能正常...

我要 ctrl + v ><

boss灬楚轩 发表于 2013-5-3 07:25

lz的这个办法好

wbsrwk 发表于 2013-5-3 20:06

top10001 发表于 2013-5-3 00:08 static/image/common/back.gif
CTRL + V 會錯誤當機

其他功能正常...


能不能贴个错误图片或错误提示给我,我这试过能用的;

quishuang 发表于 2013-5-3 20:10

发个修改好的文件吧。

wbsrwk 发表于 2013-5-3 20:36

quishuang 发表于 2013-5-3 20:10 static/image/common/back.gif
发个修改好的文件吧。

不是我不发啊:
1 这个是有版权的啊,先发的大大们会不开心的;P
2 这里包含我自己的一些习惯修改,如果你不想用,还是手动添加那段吧~
   跑速加速我改成了2, 鼠标传送我改成了按键Z,不需要Ctrl,去掉了原来末尾的那段调试,还有前面数组里的创造物件也全动过了。

将就着用吧,希望大大们看了别见怪。

top10001 发表于 2013-5-5 20:49

我 ctrl + v 出現的錯誤,其他都正常><

wbsrwk 发表于 2013-5-6 19:21

top10001 发表于 2013-5-5 20:49 static/image/common/back.gif
我 ctrl + v 出現的錯誤,其他都正常><

你有没有用我贴中提到的原版修改器啊?
这个是在那个基础上添加的功能,需要那个修改器里的一个函数支持;
如果你没用的话,那就把这段添到main.lua前面:
local Spawn = function(aa)
TheSim:LoadPrefabs({aa})
return SpawnPrefab(aa)
end

wbsrwk 发表于 2013-5-6 19:22

额,该死的表情转义:local Spawn = function(aa)
        TheSim:LoadPrefabs({aa})
        return SpawnPrefab(aa)
end
页: [1]
查看完整版本: 通用内置修改器的一点小修改