|
本帖最后由 会飞的羊 于 2016-9-12 21:26 编辑
以下是整个J文件编号9的J语言文本。
function GCv takes nothing returns nothing
call AddSpecialEffectTargetUnitBJ("overhead",oS,"Abilities\\Spells\\Other\\TalkToMe\\TalkToMe.mdl")set be[9]=bj_lastCreatedEffect
endfunction
function GDv takes nothing returns boolean
return(IsUnitType(GetFilterUnit(),UNIT_TYPE_HERO))!=null
endfunction
function Gfv takes nothing returns boolean
return(RectContainsUnit(fV,GroupPickRandomUnit(Zu(fV,Condition(function GDv)))))
endfunction
function GFv takes nothing returns nothing
call DisableTrigger(GetTriggeringTrigger())
call DestroyEffect(be[9])
call DisplayTimedTextToForce(bj_FORCE_ALL_PLAYERS,10.,"|c008E156DПриветствую тебя, герой. Дивное существо обитает в наших землях. Мне бы очень хотелось заполучить в качестве трофея его материю. Если у тебя получится это сделать, то я тебя отблагодарю как полагается.")
call QuestMessageBJ(bj_FORCE_ALL_PLAYERS,0,"|c008E156DУбить Астральное Существо.")
call CreateQuestBJ(0,"Убить Пространственного","TRIGSTR_3093","ReplaceableTextures\\CommandButtons\\BTNRune.blp")
set ue[9]=bj_lastCreatedQuest
call CreateQuestItemBJ(bj_lastCreatedQuest,"Принести материю астрала.")
call SetUnitInvulnerable(pQ,false)
call CreateItemLoc('I0AF',GetRectCenter(vO))
call EnableTrigger(vh)
endfunction
function GGv takes nothing returns nothing
call DisableTrigger(GetTriggeringTrigger())
call AddSpecialEffectTargetUnitBJ("overhead",oS,"Abilities\\Spells\\Other\\TalkToMe\\TalkToMe.mdl")
set be[9]=bj_lastCreatedEffect
call CreateItemLoc('I03N',GetRectCenter(An))
call DisplayTimedTextToForce(bj_FORCE_ALL_PLAYERS,10.,"Астральный Дух пал. Вернитесь к загробному духу за наградой.")
call EnableTrigger(eh)
endfunction
function GHv takes nothing returns boolean
return(UnitHasItemOfTypeBJ(GetTriggerUnit(),'I03N'))
endfunction
function Gjv takes nothing returns nothing
call DisableTrigger(GetTriggeringTrigger())
call RemoveItem(GetItemOfTypeFromUnitBJ(GetTriggerUnit(),'I03N'))
call DestroyEffect(be[9])
call DisplayTimedTextToForce(bj_FORCE_ALL_PLAYERS,10.,"|c008E156DА вот и мой трофей. Спасибо тебе, странник. Как и было оговорено, вот твоя награда.")
call QuestSetCompleted(ue[9],true)
call TriggerSleepAction(3.)
call DisplayTimedTextToForce(bj_FORCE_ALL_PLAYERS,10.,"|c008E156DВы получили 7.500 золота
")
call AdjustPlayerStateBJ(7500,Player(0),PLAYER_STATE_RESOURCE_GOLD)
call AdjustPlayerStateBJ(7500,Player(1),PLAYER_STATE_RESOURCE_GOLD)
call AdjustPlayerStateBJ(7500,Player(2),PLAYER_STATE_RESOURCE_GOLD)
call AdjustPlayerStateBJ(7500,Player(3),PLAYER_STATE_RESOURCE_GOLD)
call AdjustPlayerStateBJ(7500,Player(4),PLAYER_STATE_RESOURCE_GOLD)
call AdjustPlayerStateBJ(7500,Player(5),PLAYER_STATE_RESOURCE_GOLD)
call AdjustPlayerStateBJ(7500,Player(6),PLAYER_STATE_RESOURCE_GOLD)
call CreateItemLoc('I00C',GetRectCenter(vO))
call QuestMessageBJ(bj_FORCE_ALL_PLAYERS,2,"|c008E156DЗадание выполнено.
")
endfunction
下面我们来对照完整的剖析下。我也是现学现卖。function GCv takes nothing returns nothing
call AddSpecialEffectTargetUnitBJ("overhead",oS,"Abilities\\Spells\\Other\\TalkToMe\\TalkToMe.mdl")call是调用函数,AddSpecialEffectTargetUnitBJ是对oS这个单位创造一个TalkToMe的特殊效果。TalkToMe的效果根据游戏经验应该就是NPC头顶的感叹号消失,这里我们节约时间就不证实了。那么oS是什么单位呢?这时我们就要回到J文件里去找。最后我锁定了如下一条信息: set oS=CreateUnit(p,'u002',-13742.5,15018.3,359.75) 大意是:在地图坐标X=-13742.5Y=15018.3高度=359.75的地方创建一个编号u002的单位。很好,这里有编号了,我们就能通过编号在单位编辑器里找到这个单位的样子。如下: 名字为:Загробный 模型为:亡灵的阴影
set be[9]=bj_lastCreatedEffect 表达式语句赋值
endfunction
function GDv takes nothing returns boolean
return(IsUnitType(GetFilterUnit(),UNIT_TYPE_HERO))!=null 检查单位 分类(匹配的单位(),单位类型-英雄))
endfunction
function Gfv takes nothing returns boolean
return(RectContainsUnit(fV,GroupPickRandomUnit(Zu(fV,Condition(function GDv))))) (单位在区域(fV,单位组里的随机单位(Zu(fV,限制条件为(function GDv)))))
endfunction
function GFv takes nothing returns nothing
call DisableTrigger(GetTriggeringTrigger()) 关掉触发器(当前触发器()) call DestroyEffect(be[9]) 删除特殊效果 call DisplayTimedTextToForce(bj_FORCE_ALL_PLAYERS,10.,"|c008E156DПриветствую тебя, герой. Дивное существо обитает в наших землях. Мне бы очень хотелось заполучить в качестве трофея его материю. Если у тебя получится это сделать, то я тебя отблагодарю как полагается.") 文本消息(显示10秒) 你好,英雄。在我们的土地上生活着各种奇妙的生物。我很想得到一个他母亲的奖杯。如果你帮助我,我会感激你的,真的。
call QuestMessageBJ(bj_FORCE_ALL_PLAYERS,0,"|c008E156DУбить Астральное Существо.") 任务消息 击杀星界生命
call CreateQuestBJ(0,"Убить Пространственного","TRIGSTR_3093","ReplaceableTextures\\CommandButtons\\BTNRune.blp") 创建任务 击杀Пространственного 这里的TRIGSTR_3093是引用warmap.wts的语句。这个只要在warmap.wts里翻译就行。
大意是:击杀空间野兽?请前往星芒野兽的,并从找到我的奖杯。但首先要获得三个钥匙打开门。如获得密钥碎片你需要这本书。
set ue[9]=bj_lastCreatedQuest
call CreateQuestItemBJ(bj_lastCreatedQuest,"Принести материю астрала.") 创建任务完成条件 带来星界之事
call SetUnitInvulnerable(pQ,false) 移除单位pQ的无敌/可攻击 pQ是什么呢?经查: set pQ=CreateUnit(p,'n010',-10503.9,2842.7,279.34),那么pQ的编号就是n010 我们再查细一点,boss名字: |c0000FCFFПространственный Странник 空间漫游者 模型:
call CreateItemLoc('I0AF',GetRectCenter(vO))
CreateItemLoc是创造物品,创造一个编号为I0AF的物品在编号为vO的区域中心 那么编号I0AF是什么物品呢? 答:SecretBook,Вещь для квеста(任务物品)
编号为vO的区域又在哪呢 答:set vO=Rect(-13664.,15072.,-13632.,15104.)。知道这个坐标其实我们也没什么鸟用。 call EnableTrigger(vh) 打开vh的触发器
endfunction
function GGv takes nothing returns nothing
call DisableTrigger(GetTriggeringTrigger()) 关掉触发器(当前触发器())
call AddSpecialEffectTargetUnitBJ("overhead",oS,"Abilities\\Spells\\Other\\TalkToMe\\TalkToMe.mdl") 对单位oS加上TalkToMe的特殊效果
set be[9]=bj_lastCreatedEffect
call CreateItemLoc('I03N',GetRectCenter(An)) 创造一个编号为I03N的物品在编号为An的区域中心 编号为I03N的物品名称:Астральная Материя(星芒物质) 编号为I03N的物品描述:Вещь для квеста(任务物品) 编号为I03N的物品图标:
call DisplayTimedTextToForce(bj_FORCE_ALL_PLAYERS,10.,"Астральный Дух пал. Вернитесь к загробному духу за наградой.")
文本消息(显示10秒) 星芒灵降。回到来世精神领取奖励?
call EnableTrigger(eh) 打开编号eh的触发器 endfunction
function GHv takes nothing returns boolean
return(UnitHasItemOfTypeBJ(GetTriggerUnit(),'I03N')) 英雄已有 物品 - 类型(触发单位()
endfunction
function Gjv takes nothing returns nothing
call DisableTrigger(GetTriggeringTrigger())
call RemoveItem(GetItemOfTypeFromUnitBJ(GetTriggerUnit(),'I03N')) 删除物品(英雄携带的物品类型(触发单位(),'I03N'))
call DestroyEffect(be[9]) 删除特殊效果
call DisplayTimedTextToForce(bj_FORCE_ALL_PLAYERS,10.,"|c008E156DА вот и мой трофей. Спасибо тебе, странник. Как и было оговорено, вот твоя награда.") 文本消息(显示10秒) 这确实是我的奖杯。谢谢你陌生人。正如我说的,这是你的奖励。
call QuestSetCompleted(ue[9],true) 任务完成
call TriggerSleepAction(3.) 等待3秒
call DisplayTimedTextToForce(bj_FORCE_ALL_PLAYERS,10.,"|c008E156DВы получили 7.500 золота
") 文本消息(显示10秒)你获得了7500金币。
call AdjustPlayerStateBJ(7500,Player(0),PLAYER_STATE_RESOURCE_GOLD)
call AdjustPlayerStateBJ(7500,Player(1),PLAYER_STATE_RESOURCE_GOLD)
call AdjustPlayerStateBJ(7500,Player(2),PLAYER_STATE_RESOURCE_GOLD)
call AdjustPlayerStateBJ(7500,Player(3),PLAYER_STATE_RESOURCE_GOLD)
call AdjustPlayerStateBJ(7500,Player(4),PLAYER_STATE_RESOURCE_GOLD)
call AdjustPlayerStateBJ(7500,Player(5),PLAYER_STATE_RESOURCE_GOLD)
call AdjustPlayerStateBJ(7500,Player(6),PLAYER_STATE_RESOURCE_GOLD) 系统动作增加玩家属性值 给每个玩家7500金。 call CreateItemLoc('I00C',GetRectCenter(vO)) 创造编号为I00C的物品
|c00E7131DКлинок лунного света(月光之刃)
|c00E7131D Этим клинком был убит сам Дрогнар.Повелитель теней и холода.+ 900 урона + 50 ловкости + 80 брони.|c00F183F4 Нужен 75 лвл(+900点伤害,+50点敏捷,+80点护甲。等级:75)
call QuestMessageBJ(bj_FORCE_ALL_PLAYERS,2,"|c008E156DЗадание выполнено.
")
任务消息 任务完成
endfunction
|
|