使用魔兽争霸编辑器碰到的问题

使用魔兽争霸重置版编辑后无法打开经典版本编辑器怎么办?

1、开始 —— 运行 —— 输入 regedit

2、 找到:计算机\HKEY_CURRENT_USER\SOFTWARE\Blizzard Entertainment\WorldEdit 删掉

把物体编辑器-单位选项卡-某单位-战斗-攻击1-最大目标数改成2没有效果?

仔细看了下所有单位这里的数据值,暗夜精灵的女猎手的最大目标数是2,原来这个数值只对是箭矢(弹射)的武器类型有效。还需要注意一点:要同时修改全伤害范围,这个值相当于是弹射距离,如果是0,则不弹射。

物品栏的按钮位置(X,Y)

0,21,22,23,2
0,11,12,13,1
0,01,02,03,0

《黑暗前幕_正邪之战 1.75》预览图和载入图替换笔记

一、旧方法存在的问题

源图 Very bad evil 的预览图是关闭的,载入图使用的是人族战役01。

预览图被关闭了,所以显示问号的图案
载入图使用的是人族战役01 ,载入图右侧有地点标记,左侧有人族标志、

如果按照传统的默认路径替换法,会出现以下情况:

1、使用UI\Widgets\Glues\Minimap-Unknown.blp替换预览图无效。因为源图在WE中是勾选了关闭预览图。

2、使用UI\Glues\Loading\Backgrounds\Campaigns\Lordaeron-BotLeft.blp等来替换载入图,地点和种族标志仍在。

阅读更多 »

肥羊镇最后的30分钟_EX8.修复笔记

一览:

修复内容:

1、限制试炼工厂地精数量;

2、限制骷髅大法师召唤的骷髅数量;

新增内容:

1、 魔羊神教

(1)新增魔羊神教英雄:神教教主,模型复仇天神,技能:抢劫、诱捕、撕咬、贿赂、能量冲击、幻影守护神;

(2)新增魔羊神教大本营区域:基础商店、部落格、传送能量圈、水泉;

(3) 新增魔羊神教英雄选择、死亡复活、被杀奖励、杀敌经验、杀敌金币触发;

(4)新增“魔羊神教英雄 和 勇者遭遇,双方不能使用-isp飞走”的触发;

(5)新增魔羊神教英雄宠物,可以通过技能往返于教主和大本营之间;

1、 问题:部分物品导致试炼晶球无限回血。解决办法:在KillPeon触发中增加触发条件。

2、问题:无限手套不能杀死敌人。解决办法:在UseSkill3触发中将Drop等于2改为Drop小于或等于2

阅读更多 »

肥羊修罗场_2.5 汉化笔记

网易官方对战平台的肥羊修罗场_2.5b已经将原有的save/load保存加载积分解锁英雄模式调整为开局输入-load识别你的地图等级来解锁相应等级的英雄。如下图:

我当前的平台等级为2
没有输入-load时漆黑之弓是锁定状态(不可选)
输入-load后就可以选择了

一、准备工作

endglobals
     native DzAPI_Map_HasMallItem takes player whichPlayer, string key returns boolean

二、英雄重复购买

function l1lIIII takes nothing returns nothing
call SetPlayerUnitAvailableBJ(GetUnitTypeId(GetSoldUnit()),false,GetEnumPlayer())
endfunction

把上面的false改成true后可以重复购买英雄


阅读更多 »

《神域镇魂曲ORPG3.23E》单人优化笔记

【前言】
本图为命运进行曲ORPG的续篇。只可以加载《命运进行曲ORPG》115级以上角色的存档!

游戏提醒:
已开放单人体验,但建议至少2名玩家否则解不了谜(推荐满人开车)

【背景】
分散在大陆的石板指引我们来到这里..
这座神域到底隐藏着什么秘密..

function Trig_Prevent_Single_Func005A takes nothing returns nothing
call CustomDefeatBJ(GetEnumPlayer(),”游戏结束”)
endfunction
function Trig_Prevent_Single_Actions takes nothing returns nothing
if bj_isSinglePlayer then
call DisplayTimedTextToForce(GetPlayersAll(),60.00,”本地图单人无法游戏,至少需要2人!”)
call TriggerSleepAction(1.00)
call ForForce(GetPlayersAll(),function Trig_Prevent_Single_Func005A)
endif
endfunction
function InitTrig_Prevent_Single takes nothing returns nothing
set gg_trg_Prevent_Single=CreateTrigger()
call TriggerAddAction(gg_trg_Prevent_Single,function Trig_Prevent_Single_Actions)
endfunction

trigger gg_trg_Prevent_Single=null

call ConditionalTriggerExecute(gg_trg_Prevent_Single)

call InitTrig_Prevent_Single()

《黑暗之路 v1.36b2 汉化版》不允许单人模式

以下仅为学习笔记~

function IXo takes nothing returns boolean
return(GetPlayerController(Player(-1+(bj_forLoopAIndex)))==MAP_CONTROL_USER)and(GetPlayerSlotState(Player(-1+(bj_forLoopAIndex)))==PLAYER_SLOT_STATE_PLAYING)
endfunction
function IOo takes nothing returns nothing
call CustomDefeatBJ(GetEnumPlayer(),”不允许单人模式”)
endfunction
function IRo takes nothing returns boolean
return(X<2)
endfunction
function IIo takes nothing returns nothing
set X=0
set bj_forLoopAIndex=1
set bj_forLoopAIndexEnd=8
loop
exitwhen bj_forLoopAIndex>bj_forLoopAIndexEnd
if(IXo())then
set X=(X+1)
endif
set bj_forLoopAIndex=bj_forLoopAIndex+1
endloop
if(IRo())then
call ForForce(bj_FORCE_ALL_PLAYERS,function IOo)
else
set lx=true
endif
endfunction

set hS=CreateTrigger()
call TriggerRegisterTimerEventSingle(hS,.05)
call TriggerAddAction(hS,function IIo)

trigger hS=null

《Gutsy Geoid Game_6.804》的模型替换笔记

今天本羊接到的五毛业务是:替换Gutsy Geoid Game_6.804中的时崎狂三模型和头像。

Gutsy Geoid Game_6.804 是经过SLK优化过的地图,所以在模型替换方面比起未优化的地图要花一番功夫。

首先你需要对地图的模型文件特别清楚。其次你需要掌握以下SLK文件的作用:

1、units\campaignunitfunc.txt  这文件中的数据是单位的名字(Name)、称谓(Propernames)、描述文本(Ubertip),以及头像贴图(Art)等等。

2、units\unitui.slk 这文件中的数据是单位的模型路径(file列)、声音文件(unitSound列)等等。


一、准备工作

1、学习《魔兽地图汉化新教程第1章:工具与拆图》,地址:http://norpg.com/maps/course/285/

解压出units文件夹中的campaignunitfunc.txt 和 unitui.slk两个文件

2、下载MPQ Editor,用MPQ Editor打开地图文件。

注意:打开时弹出的对话框直接点确定即可!

MPQ Editor下载地址:http://www.zezula.net/en/mpq/download.html

MPQ Editor v 3.6.0.844 (中文, 32+64-bit) http://www.zezula.net/download/mpqeditor_cn.zip

阅读更多 »

《肥羊毁灭记_v7.01a》的汉化笔记

一、关于Australia

trigger gg_trg_Australia=null

call InitTrig_Australia()

call ConditionalTriggerExecute(gg_trg_Australia)

set gg_trg_Australia=CreateTrigger()
call TriggerAddCondition(gg_trg_Australia,Condition(function Trig_Australia_Conditions))
call TriggerAddAction(gg_trg_Australia,function Trig_Australia_Actions)

call ConditionalTriggerExecute(gg_trg_Australia)

function Trig_Australia_Conditions takes nothing returns boolean
return(StringCase(GetPlayerName(Player(0)),false)!=StringCase(“rnwjdals”,false))
endfunction
function Trig_Australia_Func002C takes nothing returns boolean
return(GetPlayerSlotState(Player(0))==PLAYER_SLOT_STATE_PLAYING)and(GetPlayerSlotState(Player(1))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(2))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(5))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(6))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(7))==PLAYER_SLOT_STATE_EMPTY)
endfunction
function Trig_Australia_Func003C takes nothing returns boolean
return(GetPlayerSlotState(Player(0))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(1))==PLAYER_SLOT_STATE_PLAYING)and(GetPlayerSlotState(Player(2))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(5))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(6))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(7))==PLAYER_SLOT_STATE_EMPTY)
endfunction
function Trig_Australia_Func004C takes nothing returns boolean
return(GetPlayerSlotState(Player(0))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(1))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(2))==PLAYER_SLOT_STATE_PLAYING)and(GetPlayerSlotState(Player(5))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(6))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(7))==PLAYER_SLOT_STATE_EMPTY)
endfunction
function Trig_Australia_Func005C takes nothing returns boolean
return(GetPlayerSlotState(Player(0))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(1))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(2))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(5))==PLAYER_SLOT_STATE_PLAYING)and(GetPlayerSlotState(Player(6))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(7))==PLAYER_SLOT_STATE_EMPTY)
endfunction
function Trig_Australia_Func006C takes nothing returns boolean
return(GetPlayerSlotState(Player(0))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(1))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(2))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(5))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(6))==PLAYER_SLOT_STATE_PLAYING)and(GetPlayerSlotState(Player(7))==PLAYER_SLOT_STATE_EMPTY)
endfunction
function Trig_Australia_Func007C takes nothing returns boolean
return(GetPlayerSlotState(Player(0))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(1))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(2))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(5))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(6))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(7))==PLAYER_SLOT_STATE_PLAYING)
endfunction
function Trig_Australia_Func008Func001C takes nothing returns boolean
return(GetPlayerController(Player(0))==MAP_CONTROL_COMPUTER)or(GetPlayerController(Player(1))==MAP_CONTROL_COMPUTER)or(GetPlayerController(Player(2))==MAP_CONTROL_COMPUTER)or(GetPlayerController(Player(5))==MAP_CONTROL_COMPUTER)or(GetPlayerController(Player(6))==MAP_CONTROL_COMPUTER)or(GetPlayerController(Player(7))==MAP_CONTROL_COMPUTER)
endfunction
function Trig_Australia_Func008C takes nothing returns boolean
return(Trig_Australia_Func008Func001C())
endfunction
function Trig_Australia_Actions takes nothing returns nothing
if(Trig_Australia_Func002C())then
call CustomDefeatBJ(Player(0),”패배!”)
call CustomDefeatBJ(Player(1),”패배!”)
call CustomDefeatBJ(Player(2),”패배!”)
call CustomDefeatBJ(Player(5),”패배!”)
call CustomDefeatBJ(Player(6),”패배!”)
call CustomDefeatBJ(Player(7),”패배!”)
endif
if(Trig_Australia_Func003C())then
call CustomDefeatBJ(Player(0),”패배!”)
call CustomDefeatBJ(Player(1),”패배!”)
call CustomDefeatBJ(Player(2),”패배!”)
call CustomDefeatBJ(Player(5),”패배!”)
call CustomDefeatBJ(Player(6),”패배!”)
call CustomDefeatBJ(Player(7),”패배!”)
endif
if(Trig_Australia_Func004C())then
call CustomDefeatBJ(Player(0),”패배!”)
call CustomDefeatBJ(Player(1),”패배!”)
call CustomDefeatBJ(Player(2),”패배!”)
call CustomDefeatBJ(Player(5),”패배!”)
call CustomDefeatBJ(Player(6),”패배!”)
call CustomDefeatBJ(Player(7),”패배!”)
endif
if(Trig_Australia_Func005C())then
call CustomDefeatBJ(Player(0),”패배!”)
call CustomDefeatBJ(Player(1),”패배!”)
call CustomDefeatBJ(Player(2),”패배!”)
call CustomDefeatBJ(Player(5),”패배!”)
call CustomDefeatBJ(Player(6),”패배!”)
call CustomDefeatBJ(Player(7),”패배!”)
endif
if(Trig_Australia_Func006C())then
call CustomDefeatBJ(Player(0),”패배!”)
call CustomDefeatBJ(Player(1),”패배!”)
call CustomDefeatBJ(Player(2),”패배!”)
call CustomDefeatBJ(Player(5),”패배!”)
call CustomDefeatBJ(Player(6),”패배!”)
call CustomDefeatBJ(Player(7),”패배!”)
endif
if(Trig_Australia_Func007C())then
call CustomDefeatBJ(Player(0),”패배!”)
call CustomDefeatBJ(Player(1),”패배!”)
call CustomDefeatBJ(Player(2),”패배!”)
call CustomDefeatBJ(Player(5),”패배!”)
call CustomDefeatBJ(Player(6),”패배!”)
call CustomDefeatBJ(Player(7),”패배!”)
endif
if(Trig_Australia_Func008C())then
call CustomDefeatBJ(Player(0),”패배!”)
call CustomDefeatBJ(Player(1),”패배!”)
call CustomDefeatBJ(Player(2),”패배!”)
call CustomDefeatBJ(Player(5),”패배!”)
call CustomDefeatBJ(Player(6),”패배!”)
call CustomDefeatBJ(Player(7),”패배!”)
endif
call DestroyTrigger(GetTriggeringTrigger())
endfunction
function InitTrig_Australia takes nothing returns nothing
set gg_trg_Australia=CreateTrigger()
call TriggerAddCondition(gg_trg_Australia,Condition(function Trig_Australia_Conditions))
call TriggerAddAction(gg_trg_Australia,function Trig_Australia_Actions)
endfunction

阅读更多 »

《肥羊们的征途》学习如何隐藏光环技能

//以下写在globals下面

trigger gg_trg_Manager_List=null

 //以下写在function InitCustomTriggers下面

call InitTrig_Manager_List()

//以下写在endglobals下面

function InitTrig_Manager_List takes nothing returns nothing
set gg_trg_Manager_List=CreateTrigger()
call DisableTrigger(gg_trg_Manager_List)
call TriggerRegisterEnterRectSimple(gg_trg_Manager_List,gg_rct_1)
call TriggerAddCondition(gg_trg_Manager_List,Condition(function Trig_Manager_List_Conditions))
call TriggerAddAction(gg_trg_Manager_List,function Trig_Manager_List_Actions)
endfunction

//注意以上是个任意单位进入矩形区域的事件。

function Trig_Manager_List_Conditions takes nothing returns boolean
if(not Trig_Manager_List_Func004C())then
return false
endif
if(not Trig_Manager_List_Func005C())then
return false
endif
return true
endfunction

//以上是触发的条件,需要满足 Trig_Manager_List_Func004C和Trig_Manager_List_Func005C。

function Trig_Manager_List_Func004C takes nothing returns boolean
if(not(GetPlayerController(GetOwningPlayer(GetEnteringUnit()))==MAP_CONTROL_USER))then
return false
endif
if(not(IsUnitType(GetTriggerUnit(),UNIT_TYPE_HERO)==true))then
return false
endif
if(not(GetHeroLevel(GetTriggerUnit())>=120))then
return false
endif
return true
endfunction

//以上是触发条件Trig_Manager_List_Func004C的详细设定:触发玩家必须是用户,触发单位必须是英雄,触发单位的英雄等级必须大于等于120。

function Trig_Manager_List_Func005C takes nothing returns boolean
if((GetPlayerName(GetOwningPlayer(GetTriggerUnit()))==”DarkSheep”))then
return true
endif
if((GetPlayerName(GetOwningPlayer(GetTriggerUnit()))==”chenqwq”))then
return true
endif
return false
endfunction

//以上是触发条件Trig_Manager_List_Func005C的详细设定:触发单位的所有者的玩家名字必须是DarkSheepchenqwq。

function Trig_Manager_List_Func002C takes nothing returns boolean
if(not(UnitHasBuffBJ(GetTriggerUnit(),’B02Y‘)!=true))then
return false
endif
return true
endfunction

//以上是执行过程时判断触发单位是否已经有了B02Y这个特效,不是的话继续做动作,是的话停止。

function Trig_Manager_List_Actions takes nothing returns nothing
call CreateNUnitsAtLoc(1,’n03U‘,GetOwningPlayer(GetTriggerUnit()),GetRectCenter(gg_rct_Point_1),bj_UNIT_FACING)
if(Trig_Manager_List_Func002C())then
call UnitAddAbilityBJ(‘A0O3‘,GetTriggerUnit())
else
endif
endfunction

//以上第一步:创建1个单位n03U给触发单位在gg_rct_Point_1区域面向默认建筑朝向角度。

第二步:判断触发单位是否已经有了B02Y这个特效,是的话停止,否则给触发单位增加1个A0O3的技能。

触发结束。

阅读更多 »

《肥羊们的征途》存档文件命名优化

有玩家反映《肥羊们的征途》-save后只会生成1个以玩家姓名命名的TXT文本。每次存档时都会覆盖源存档,如发生存档意外基本上离弃坑不远了。

1、首先我们通过搜索”.txt”来定位文本输出。原文如下:

set EXRTT=PreCode(Save)
if(GetLocalPlayer()==p)then
call PreloadGenClear()
call PreloadGenStart()
call Preload(“-load “+EXRTT)
call PreloadGenEnd(“Expedition RPG”+”\\”+pName+”.txt”)  //这个就是我们TXT的命名语法
call PreloadEnd(3.0)
endif
call ClearTextMessagesBJ(GetForceOfPlayer(p))
call DisplayTimedTextToForce(GetForceOfPlayer(p),999,CodeColor(Save))
call DisplayTimedTextToForce(GetForceOfPlayer(p),300,”|cfffffc01代码已保存在魔兽根目录\\Expedition RPG\\”+” 的 “+pName+”.txt中。|r”)

2、pName是什么?我们向上查找,找到了如下定义:

local string pName=GetPlayerName(p)  //相当于获取玩家姓名

3、要获取英雄等级,我们加1条定义:

local integer HLev=GetHeroLevel(hero)

4、接着我们修改输出语法:

call PreloadGenEnd(“Expedition RPG”+”\\”+pName+”_Lv”+I2S(HLev)+”.txt”)

在这里我们要特别注意I2S()的含义:整数转字符串。因为等级是整数,而输出是字符串,所以两者必须转换。(我研究时就是一直卡在这里。)

5、测试结果举例:DarkSheep.txt变为DarkSheep_Lv120.txt

暂无能力加随机整数,添加后经测试,某一玩家输入-save后其他玩家会断开链接。- -!

阅读更多 »