有关于地图修改单机==--死人
有关于地图修改单机、------死了没人埋
[color=Red]单机其实很简单的,只要加密的人把心思全部放在地图本身,其实不难破解![/color]
[color=Magenta]其实想改单机:
首先先进单人游戏,看看地图的表征,再动手!
一般大体分为下面3种:[/color]
[b][color=Red][u]1.强制失败类型:
表征:进游戏会出现,"失败",是个选择框
方法:此时删除J文件里面的CustomDefeatBJ
2.SAVE触发disable型
表征:出现文本提示,SINGLE PLAYER SAVE DISABLE
方法:在J文件里找到,与游戏中的文本提示一模一样的文字,分析J文件,一般就是改变条件(真-假)。
3.单人游戏与局域网密码不通用型
表征:提示说不能通用
方法:同2,找到相同的漂浮文字,把单机call的函数与局域网call函数调换位置。[/u][/color][/b]
大家都知道TD改单机比RPG改单机要困难,涉及到 刷怪的问题等等比较麻烦就是了!
这中TD呢:
[color=Red]如果碰到一个TD图,单机玩的话,进去就直接提示胜利!
象这种的TD修改就比较简单了:
(查找CustomDefeatBJ,第一个不要改,第2个CustomDefeatBJ,和第3个CustomDefeatBJ修改成DoNothing()就可以单机了![/color]另外也有比较特别的事例“
大家都知道单机图很多很多 但是触发80%都是一个样——意思大家都是拿一个图改的 原来以为是华理创造的 不过后来发现更老的外国地图就是那些触发 可见华理也是“借鉴”的 所以假如不做其他处理 触发看起来都大同小异[color=Red] 下面是我导出的华理单机的出怪触发(为了好看一些,其他我都删了):[/color]globals
// User-defined[color=Red]这些是定义变量 基本可以不用管[/color] integer array udg_Kills
boolean udg_defeated = false
integer udg_i = 0
integer array udg_EnemyCount
integer array udg_EnemyType
integer udg_pointer = 0
integer udg_lives = 0
integer array udg_EnemyGold
boolean udg_endgame = false
boolean udg_victory = false
real udg_wanjia1zb = 0
real udg_wanjia2zb = 0
real udg_wanjia3zb = 0
real udg_wanjia4zb = 0
real udg_wanjiaxuanwan = 0
timer udg_jishi30 = null
dialog udg_ti = null
button array udg_xuanxiang
integer udg_suiji = 0
// Generated
camerasetup gg_cam_Lives_Camera = null
trigger gg_trg_Spawn_Monsters = null
unit gg_unit_Hamg_0002 = null
endglobals
//***************************************************************************
//*
//* Triggers
//*
//***************************************************************************
//===========================================================================
// Trigger: Spawn Monsters 这个就是出怪触发
//===========================================================================
// 下面这4个是分别检测玩家1-4是否在线
//===========================================================================
function Trig_Spawn_Monsters_Func001001 takes nothing returns boolean
[color=Red]//返回玩家一状态[/color]
return ( GetPlayerSlotState(Player(0)) == PLAYER_SLOT_STATE_PLAYING )
endfunction
function Trig_Spawn_Monsters_Func002001 takes nothing returns boolean
[color=Red]//返回玩家二状态[/color]
return ( GetPlayerSlotState(Player(1)) == PLAYER_SLOT_STATE_PLAYING )
endfunction
function Trig_Spawn_Monsters_Func003001 takes nothing returns boolean
[color=Red]//返回玩家三状态[/color] return ( GetPlayerSlotState(Player(2)) == PLAYER_SLOT_STATE_PLAYING )
endfunction
function Trig_Spawn_Monsters_Func004001 takes nothing returns boolean
[color=Red]//返回玩家四状态[/color]
return ( GetPlayerSlotState(Player(3)) == PLAYER_SLOT_STATE_PLAYING )
endfunction
//===========================================================================
//下面是做出怪 前面有个if,看到了哈 意思就是调用上面检测的结果 假如在,则出怪;不在,则什么也不做,即call DoNothing( )
//===========================================================================
function Trig_Spawn_Monsters_Actions takes nothing returns nothing
if ( Trig_Spawn_Monsters_Func001001() ) then
[color=Red]//这是出玩家一的怪[/color]
call CreateNUnitsAtLocFacingLocBJ( 1, udg_EnemyType[udg_pointer], Player(11), GetRandomLocInRect(gg_rct_Monster_Spawn_Bottom_Left), GetUnitLoc(GetTriggerUnit()) )
else
call DoNothing( )
endif
if ( Trig_Spawn_Monsters_Func002001() ) then
[color=Red]//这是出玩家二的怪[/color]
call CreateNUnitsAtLocFacingLocBJ( 1, udg_EnemyType[udg_pointer], Player(11), GetRandomLocInRect(gg_rct_Monster_Spawn_Bottom_Right), GetUnitLoc(GetTriggerUnit()) )
else
call DoNothing( )
endif
if ( Trig_Spawn_Monsters_Func003001() ) then
[color=Red]//这是出玩家三的怪[/color]
call CreateNUnitsAtLocFacingLocBJ( 1, udg_EnemyType[udg_pointer], Player(11), GetRandomLocInRect(gg_rct_Monster_Spawn_Top_Right), GetUnitLoc(GetTriggerUnit()) )
else
call DoNothing( )
endif
if ( Trig_Spawn_Monsters_Func004001() ) then
[color=Red]//这是出玩家四的怪[/color]
call CreateNUnitsAtLocFacingLocBJ( 1, udg_EnemyType[udg_pointer], Player(11), GetRandomLocInRect(gg_rct_Monster_Spawn_Top_Left), GetUnitLoc(GetTriggerUnit()) )
else
call DoNothing( )
endif
endfunction
//===========================================================================
function InitTrig_Spawn_Monsters takes nothing returns nothing
set gg_trg_Spawn_Monsters = CreateTrigger( )
call TriggerAddAction( gg_trg_Spawn_Monsters, function Trig_Spawn_Monsters_Actions )
endfunction
//===========================================================================
function InitCustomTriggers takes nothing returns nothing
call InitTrig_Spawn_Monsters( )
endfunction
[color=Blue]下面看一个华理的无单机改版触发:
改的那个人用软件加密了 触发看起有点乱 不过不影响游戏 只影响别人修改 这也没什么 把它全部复制后 粘贴进下面这个"转换.htm"网页再复制出来 就变成规矩的形式了
同样只帖出怪部分:[/color]function Trig_Spawn_Monsters_Actions takes nothing returns nothing
[color=Red]//这是出玩家四的怪[/color]call CreateNUnitsAtLocFacingLocBJ(1,udg_EnemyType[udg_pointer],Player(11),GetRandomLocInRect(gg_rct_Monster_Spawn_Top_Left),GetUnitLoc(GetTriggerUnit()))
[color=Red]//这是出玩家三的怪[/color]call CreateNUnitsAtLocFacingLocBJ(1,udg_EnemyType[udg_pointer],Player(11),GetRandomLocInRect(gg_rct_Monster_Spawn_Top_Right),GetUnitLoc(GetTriggerUnit()))
[color=Red]//这是出玩家一的怪[/color]call CreateNUnitsAtLocFacingLocBJ(1,udg_EnemyType[udg_pointer],Player(11),GetRandomLocInRect(gg_rct_Monster_Spawn_Bottom_Left),GetUnitLoc(GetTriggerUnit()))
[color=Red]//这是出玩家二的怪[/color]call CreateNUnitsAtLocFacingLocBJ(1,udg_EnemyType[udg_pointer],Player(11),GetRandomLocInRect(gg_rct_Monster_Spawn_Bottom_Right),GetUnitLoc(GetTriggerUnit()))
endfunction
function InitTrig_Spawn_Monsters takes nothing returns nothing
set gg_trg_Spawn_Monsters=CreateTrigger()
call TriggerAddAction(gg_trg_Spawn_Monsters,function Trig_Spawn_Monsters_Actions)
endfunction
[color=Red]细心一点会发现 2个出怪的顺序不大一样 那是我在改单机的时候 把顺序理了一下 没直接在原来上面加
现在比较明朗了,第个触发没判断 对不对?这就是不能单机的原因![/color]
[color=Red]我取2个地图说明:
1:[/color]
比如:小偷TD
[color=Red]注意看清楚玩家对应的位置 不然就会出现一个玩家掉线了 其他某个玩家那儿不刷怪的情况c:Qg1~5l1TP
然后在这之前加上call TriggerSleepAction( 20.00 ) 可以增加刷怪前的休息时间20秒 H8L:a_oP;Z H
另外有些图不允许单机游戏 或者判断作弊就退出 或者正版验证之类杂七杂八的 强制失败那种 war3.wfox.cnhX C\1V*E
可以搜索CustomDefeatBJ 然后把对应行删掉就行了 注意不要把真正的失败条件也删除了 (当然删了也没什么大不了的)。。。。[/color]
[color=Red]2:
元素1.17B
此图采用缓存单机判断法,用玩家-1造成错误,用各种@$#^*&(省略)的方法判断是否作弊,如作弊启动无限刷屏文字加无限刷兵的T(By)来造成严重死机(经偶测试,偶的机器重起后SVCHOST还会出错,占用100%CPU,汗.....)《借用RA的》
改动地点很多,我把附件传上来自己看吧,死机代码已删除,理论上刷战绩应该没问题了......[/color]
[[i] 本帖最后由 死了没人埋 于 2007-8-7 17:56 编辑 [/i]] 打字很辛苦的个位! 沙发不给我......我不顶你:smile 资料可能不全面,我会尽快修正 :11: 我连地板都没的躺 晚来拉!!!!!!!!!!:2: 服 辛苦了
我看你都累:2: 怎么米人家分?> 那种进了游戏以后就自动又重新读图在进入游戏以后显示失败的地图该怎么改单机?
现在很多国内地图都是这样的如玛法传奇1和2 突破世界3.0 等
PS:按照地一种方法改可以玩了不过要读取两次地图才行啊~
[[i] 本帖最后由 z49284972 于 2007-8-7 19:46 编辑 [/i]] LS的可以把错误提示发上来! 支持的顶了。。。。。。。。。。 **** 作者被禁止或删除 内容自动屏蔽 **** J文件用什么东西提出来啊:2: :5:
[[i] 本帖最后由 1262757 于 2007-8-20 20:00 编辑 [/i]] 提出来了没CustomDefeatBJ这个文件啊 ,我晕死,对了,这图是可以建个人局网,不能单机模式~:2: :2:
同2,找到相同的漂浮文字,把单机call的函数与局域网call函数调换位置 ,这个怎么换呢?:cry
=========================
经过研究单机问题已解决了~~:kiss: :kiss:
[[i] 本帖最后由 1262757 于 2007-8-20 20:55 编辑 [/i]] 强啊-0 -`辛苦楼主了..顶下..慢慢研究 :5: :5: 很强大 谢谢
[[i] 本帖最后由 lg8711429 于 2007-8-27 20:09 编辑 [/i]] 新来的偶 到处看看 顶下你:smile 学学看。。。谢谢楼主:3: 将来我一定比你强:9: :9: 不错不错~~~~~:116: 小伙子 好象80%都是我写的哦 也不说明一下
[url]http://st001.net/viewthread.php?tid=125119&extra=page%3D1[/url] 收到!!!!!!!!!! 高手的地东西就是看不懂。:118: 来了不发言不道德:130:
灌水也得回:129: 我觉得+玩家一状态就OK了
SSSSSSS
SSSSSSSSSSAAAAAAA 看都不明 好辛苦:142: **** 作者被禁止或删除 内容自动屏蔽 **** 非常感谢 :120: :120: :120: :120: 非常感谢...先下下来慢慢看..页:
[1]
2