肥羊毁灭记_v7.01a 魔兽地图下载

源图名:HMRPG

源作者:Maievs

韩国官方论坛:https://cafe.naver.com/hmrpg

汉化名:肥羊毁灭记

汉化者:Shakbaris

百度网盘下载地址:https://pan.baidu.com/s/1RdonAk4Q4866PpjhP5kLOw

注意:此版本为平台通用版本。在源图的基础上进行了SLK优化,且单人可存档。


一、地图介绍

这绝对不是一张进圈刷刷的ORPG!你的初心是在限制的等级范围内撸BOSS啊!进入口在安全区的上方能量圈。

第一阶突袭:40~70萨满,70~100骑士,100~120步兵,120~140娜迦,140~159骨法,160~175牛头,175~190地精,190~205小炮,205~215雕像,215~225傀儡,225~235蓝胖……

前面8个可以在B站看击杀录像,附传送门:https://www.bilibili.com/video/av19403191/

二、地图指令

选英雄:-选择 数字

存档:-save

读档:先-load回车,再粘贴代码回车

自杀:00(这是数字零零)

骰子:-roll(装备roll点)

定位其它玩家:1/2/3/4/5/6/7/8

视野:-视野 50~180(视野最近是:-视野 50,视野最远是:-视野 180)

自爆:-自爆(死亡伤害 On,就是在撸BOSS的时候你的死亡能给BOSS带了伤害)

称号:-称号

效果:-效果(效果精简 On,降低技能特效效果)

 

《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

3、解压替换模型的压缩包

注意:不要改变模型的文件名字及位置关系,请保持原样!

比如这个模型的组成是:hero_kurumi.mdx、eternityskin文件夹以及eternityskin文件夹中的hero_kurumi_cloth.blp、hero_kurumi_skin.blp贴图文件。你使用War3 Model Editor 双击hero_kurumi.mdx是可以查看模型的。

但是如果你改变它们,就会报错,这样是无法读取到模型的。

4、把解压的模型文件(这里是包含hero_kurumi_cloth.blp、hero_kurumi_skin.blp的eternityskin文件夹和hero_kurumi.mdx)拖入用MPQ Editor打开地图文件的根目录。

注意:不要拖入到其他文件夹中!

准备工作完成!


二、替换要点

1、寻找单位的物编编码

使用EmEditor打开units\campaignunitfunc.txt,Ctrl+F搜索“时崎”,很好,只有一条对应数据,那么它的物编编码是:H01F

2、使用Microsoft Excel打开units\unitui.slk,Ctrl+F搜索“H01F”(第1列),查看第3列的路径。

原路径是:units\kurumi.mdl,这里我们修改为:hero_kurumi.mdl。原因:我们在拖入时将模型放在了根目录。

注意:不要改成hero_kurumi.mdx,而是沿用它.mdl的文件后缀,改成hero_kurumi.mdl

保存时弹出对话框“是否保持工作簿的这种格式?”点:是(Y),关闭时弹出对话框“是否保持对XX的修改?”点:保存(S),弹出对话框“要替换它吗?”点:是(Y)

3、回到MPQ Editor进行新旧units\unitui.slk替换。先找到旧的unitui.slk文件,再把新的unitui.slk文件往里拖,弹出对话框点:是(Y)


三、结果对比

从模型查看而言,替换前的模型更精细,替换后的模型裙子上有个脸状图案。

看!脸状图案!我们的模型替换是成功的。


四、收尾工作

收尾工作本羊没做,理论上我们应该把无用的模型从地图中删除。但是仅删units\kurumi.mdl文件又是不完整的,还需要把它的blp贴图文件找出来一并删除,才是完美的。


五、结语

头像文件本羊没有替换,因为替换模型压缩包中的头像文件像素是339×335,大小是147-283kb,不是标准像素的BLP文件。

标准的头像blp的文件像素应该是:128×128,大小应在10kb-30kb左右。

如果你要替换——

(1)头像文件BLP转JPG格式

(2)修改JPG格式头像文件的像素大小为128×128

(3)修改大小后的头像文件再JPG转BLP

(4)标准的头像文件拖入MPQ Editor,修改units\campaignunitfunc.txt  中的 头像贴图(Art)路径

(5)进行新旧campaignunitfunc.txt  文件替换,完成!

《肥羊毁灭记_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


二、关于称号激活

废人称号有三个功能。输入 -称号 激活。等级大于等级250级有三件物品:杀戮之剑、遗弃之剑、审判之剑。其中杀戮之剑捡起来会删除角色。


三、关于单人存档

call DestroyTrigger(gg_trg_Save)   ——>   call TriggerExecute(gg_trg_Save)


四、学习心得

关键在于对PLAYER_SLOT_STATE_PLAYING的理解。PLAYER_SLOT_STATE_PLAYING是指正在游戏的玩家。


五、地图优化

经查看外国优化版本JASS,发现它是使用actboy168的W3x2Lni进行优化的。SLK优化可以大大的加快你地图的读图速度。本羊用《肥羊毁灭记_v7.01a》掐秒表的读图测试结果是:未优化读图时间183.08秒,优化后读图时间78秒。(我的笔记本电脑比较老旧,win7系统,Intel Core I3-3217u 1.8GHz ,4G内存,500G机械硬盘,无独立显卡。如果你们的电脑比较新,应该会比本羊读图更快。)

本羊尝试后初步成功(可以进游戏但未深入测试),经验如下:

1、需要W3x2Lni v2.4.4(其他版本的未试验)

2、需要完成的地图(listfile),也就是地图文件列表。否则优化后会有错误。

3、地图拖入后,选择SLK,不勾任何选项,开始。

 

绝地羊岛:快活战场_test29 魔兽地图下载

源图名:Keroro_Survival

源作者:정우

韩国官方论坛:https://cafe.naver.com/w3mkeroro

汉化名:绝地羊岛:快活战场

汉化者:DarkSheep

百度网盘下载地址:链接:https://pan.baidu.com/s/1xaZq7uZaEfF9ZUvsptQJ0Q
提取码:9rbb


地图精彩之处:

众所周知,《绝地求生》是第一/第三人称射击游戏。超大地图,逼真场景,百人大战等是这款游戏的特色。魔兽争霸基于十年前的游戏引擎,是无法完全还原以上游戏特点,但《绝地羊岛:快活战场》的作者另辟蹊径,在借鉴《绝地求生》众多元素的基础上,结合魔兽争霸固有特点,制作了一张欢乐向的枪战地图。

这里有《绝地求生》的单排,双排,多排模式,有飞机跳伞落地的开场,有搜索物资的发展方式,有安全磁场缩小的冲突设计。从操作上来说,虽然没有《绝地求生》的蹲、趴、跑,但是我们有翻滚,跳窗,突进等位移操作。想站到最后不仅需要运气,也需要一定的技巧。

“地图目前只是一个雏形的设计阶段,我们会不断的思考完善”。


【从test22到test29的更新变化】

1、增加1个角色:Tamama二等兵。·技能 「武斗派」所有近战武器伤害提高20%。剑术的终极奥义就是:劈开子弹!

2、增加了若干物品,并对物品图标进行美化。例如:QBZ95(自动步枪)、AUG(突击步枪)、 Kar98k(毛瑟狙击步枪)、Vector(冲锋枪)、防弹衣 4lv、杨桃(治疗)、肾上腺素注射器(法力恢复)

3、优化了安全磁场变化的小地图效果。

4、增加了K隆星(空投)随机出现事件。消灭K隆星(空投)可获得优质物品。

5、游戏模式人数要求变化:双排模式至少4人可开,三排模式至少6人可开。

6、物品栏扩展至12格。按E可以进行切换。

7、删除了原有物品数量上限的设定,增加了物品重量/背包负重的设定。例如在test22版本,止痛药只能携带3瓶,更多的无法拾取,那么在test29版本中,你要你的背包负重有空间就可以拾取。

8、增加拆分物品的设计。这意味着你在小组模式或者在背包超重的情况下,可以将物品进行拆分。

9、默认视野范围3000->3200,手榴弹范围从400->500,狙击枪范围+500