找回密码
 点一下
查看: 3283|回复: 28

新手超级傻瓜的问题. 请帮下忙.

[复制链接]
发表于 2008-2-8 02:32:20 | 显示全部楼层 |阅读模式
如题  我已经升为JASS时间一天一夜的新手...


现在遇到问题了....  请帮忙解决..



问题:




我在WE里   把一个释放技能的触发转化成 文本形式...


然后在里面编了很多JASS ,     进游戏后发现无效果...




请问...   一个触发能包容很多个触发吗?

简单地说编的东西应该放在哪呀.................

为什么我看教程里   要加到  地图自定义那里``

然后在某某触发里  用个   CALL XXX GREATS()



另外T转化为文本后

里面有个

//================================================================

这个可以去掉吗???     




如果我自己遍的东西    有动作   

然后有

fuction  jjjjjxx  nothing returns nothing
   local trigger trg = GreateTrgger()
   call xxxxxxxxxxx
   call  xxxxxxxxx
endfuction

那么我上面的这段 语言应该放在线上还是线下..   到底应该放哪里...

然后我的对应上面那段语言jjjjjxxxx那些   Conditions  和 Actions  应该放哪里呀...



.........   非常不懂...   请求帮忙``
发表于 2008-2-8 02:44:43 | 显示全部楼层
“//”后面的东西是注释,要不要都一样
//=================================
这样用分隔线的写法会让脚本层次清晰,结构明朗。
fuction  jjjjjxx  nothing teuns nothing

  local trigger trg = TrggerGreats()

  call xxxxxxxxxxx
  call  xxxxxxxxx
endfuction
这个嘛,你在WE种创建的触发器,在生成脚本的时候WE会在main(也就是一个脚本的其中一个入口)函数里面调用该触发器的初始化函数。
你自己的jjjjjxx函数应该在地图初始化的时候调用。里面的内容才能生效。
建议你创建一个空地图,创建一个触发器后在主窗口的菜单栏(不是触发器的窗口) 文件-导出游戏脚本 看看WE生成的代码
回复

使用道具 举报

 楼主| 发表于 2008-2-8 02:54:01 | 显示全部楼层
我更不懂了........

我的一个触发...    是 任意一个单位发动技能效果

设置技能目标 = zzTarget    设置施法单位= zzCaster

为 触发2 增加 zzTarget 接受伤害

然后我在触发2里


动作是命令zzCaster  造成 zzTarget  100伤害.

上面两个触发用了判定  不会无限循环...    听说.  这样会泄露    所以学J做...


我也学了 动态注册等东西.....  并且编辑了


就是不知道   触发2的   那些东西应该放在哪...    放在触发1吗?

应该放在哪  呀....  超级不懂...
回复

使用道具 举报

 楼主| 发表于 2008-2-8 03:04:02 | 显示全部楼层
简单地说    我编的东西应该放在哪呀....
回复

使用道具 举报

发表于 2008-2-8 03:06:39 | 显示全部楼层
这个我以前写过的

[jass]
function MyAction takes nothing returns nothing
         //防止引起死循环,在最开始销毁这个触发
         call DestroyTrigger(GetTriggeringTrigger())

         //后面是你做的动作        
endfunction

function Trig_XXX_Actions takes nothing returns nothing
         local trigger trig=CreateTrigger()
         local unit target=GetSpellTargetUnit()
//这里是你触发的其他动作
//..........
//在最后加上这两行
         call TriggerRegisterUnitEvent( trig,target,EVENT_UNIT_DAMAGED)
         call TriggerAddCondition(trig,Condition(function MyAction))
endfunction
[/jass]

大概是这样吧.
回复

使用道具 举报

 楼主| 发表于 2008-2-8 03:18:31 | 显示全部楼层
那么你这个东西 应该放在哪?   放在一个触发转化为文本后   然后把这些东西都放里面吗?
回复

使用道具 举报

发表于 2008-2-8 03:19:28 | 显示全部楼层
MyAction放最上面Trig_XXX_Action就是一个叫XXX的触发器转换后的出来的函数,一个叫A的触发器会生成一个叫Trig_A_Action的函数
回复

使用道具 举报

 楼主| 发表于 2008-2-8 03:24:52 | 显示全部楼层
强烈要求  LS的     耐心地和我说下 怎么回事啊..

为什么要加到   地图名的那个自定义脚本里呀...

而别的触发都是独立创造的呀....



JASS我看了很多东西  多少会编一些了...

就是不懂   它怎么放....     多触发的关系等.
回复

使用道具 举报

发表于 2008-2-8 03:34:50 | 显示全部楼层
因为WE的某些局限性,一个函数只能被写在它下面的函数识别Trig_XXX_Action注册动态事件需要用到MyAction所以把MyAction放到自定义脚本框,自定义脚本框的内容永远在任何一个触发器之前。还有先建立的触发器代码会在后建立的触发器的上面。
回复

使用道具 举报

 楼主| 发表于 2008-2-8 03:44:27 | 显示全部楼层
太难了.    根本不理解
回复

使用道具 举报

发表于 2008-2-8 04:03:16 | 显示全部楼层
举个例子
[jass]
function A takes nothing returns nothing
endfunction
function B takes nothing returns nothing
    call A()
endfunction
[/jass]
上面是正确的
[jass]
function A takes nothing returns nothing
    call B()
endfunction

function B takes nothing returns nothing
endfunction
[/jass]
这个就是错的,在函数A里面系统还没认识函数B。
T最终会转换成Jass,并且会放在自定义脚本下面。
一个脚本文件的顺序是
[jass]
globals
//声明全局变量

    trigger gg_trg_A =null//假设声明一个A触发器
endglobals
//---------------------------------------------------------------
//这里是自定义脚本代码
//---------------------------------------------------------------

function Trig_A_Action takes nothing returns nothing
//动作
endfunction

function Trig_A_CondFunctakes nothing returns boolean
//条件
return true//或者false
endfunction

function InitTrig_A takes nothing returns nothing
    set gg_trg_A=CreateTrigger()
    call TriggerAddCondition(gg_trg_A,Condition(function Trig_A_CondFunc)
    call TriggerAddAction(gg_trg_A,function Trig_A_Action)
    call TriggerRegisterAnyUnitEvent(gg_trg_A,EVENT_UNIT_ATTACK)//这里假设事件是攻击
endfunction

//main() 和config()是游戏开始的时候自动调用的两个函数

function main takes nothing returns nothing
    //初始化工作
  call InitTrig_A()
    //其他工作
endfunction

function config takes nothing returns nothing
//初始化工作
endfunction
//注意 Trig_A_Action() 等与A相关的函数仅仅是WE生成一个函数,
//函数名并不能代表什么,仅仅是让系统记住。如果你用某些优化图的工具后
//函数名可能变成 A() B()等,同时在main()里面也会变化
//

[/jass]
回复

使用道具 举报

 楼主| 发表于 2008-2-8 04:43:09 | 显示全部楼层
你帮我做个技能 看下`

任意一个单位发动战争践踏  让进入施法者500范围的单位 被 弹走100距离

或者 进入施法者点500范围的矩形区域 被弹走   



我用多个触发是完成了..     

触发Z1
  
事件
         任何人发动技能效果

条件
         释放技能 等于 xingxing

动作
         为Z2添加 单位进入500 范围 距离zCaster

触发Z2

动作

         设置 触发单位= zrun

         设置zCasterPoint= zCaster 的位置

        设置zrunPoint = zrun 的位置

         设置zrunPoint2=从zrunPoint开始 距离-100 方向为 zrunCasterPoint 到 zrunPoint的方向

         立刻移动zrun 到 zrunPoint2

         清除 zrunPoint

         set udg_zrunPoint = null

         清除 zCasterPoint

         set udg_zrunCasterPoint = null

         清除 zrunPoint 2

         set udg_zrunPoint2 = null



以上是用触发做的.     JASS该怎么用 动态注册事件  或别的方法来做..

防止一直发生在Z1触发的 添加事件...






我用不来JASS.    因为根本  不知道该怎么弄
回复

使用道具 举报

发表于 2008-2-8 10:04:46 | 显示全部楼层
不是所有人都善于表达的,也不是所有东西都是说的清楚的
lz既然看过教程,应该知道动态事件注册,教程中也有相关的事例
看一下,研究一下吧
回复

使用道具 举报

发表于 2008-2-8 10:11:01 | 显示全部楼层
这个用不到动态事件,要用的是Timer
好吧,就帮你做这个
回复

使用道具 举报

发表于 2008-2-8 10:19:21 | 显示全部楼层
额………………仔细看了一下,为什么我觉得用单位组就好了………………
继续研究………………
回复

使用道具 举报

 楼主| 发表于 2008-2-8 10:29:41 | 显示全部楼层
晕.... 我表达错了.....   如果是单向的    就超级容易了...

直接把用拥有BUFF的单位  推走就是了....

我做的是双向技能    还会有个往里推的.....      


所以你别  单纯地用BUFF推人....


就用那个进入区域   谁进入  范围再推....
回复

使用道具 举报

 楼主| 发表于 2008-2-8 10:31:36 | 显示全部楼层
不是双向....``

就是还会有个触发  是   用来推里面的   

说不清楚了.....      


你反正   能把触发Z1的  动作处理好就行...

别把它删了..  然后用BUFF直接推了.....
回复

使用道具 举报

 楼主| 发表于 2008-2-8 10:36:44 | 显示全部楼层
如果你做好了  .   最要紧地是告诉我...   你那段JASS放哪里...


放在自定义脚本里... ?    还是放在一个触发转文本后的里面?

还是放在SanguoV3.9E-CB8-10.w3x.j里面.... ?  

然后告诉我下  SanguoV3.9E-CB8-10.w3x.j 这个该怎么打开编辑啊...?

编辑好里  然后怎么放地图啊.....?
回复

使用道具 举报

发表于 2008-2-8 10:43:29 | 显示全部楼层
引用第17楼苍木于2008-02-08 10:36发表的  :
如果你做好了  .   最要紧地是告诉我...   你那段JASS放哪里...


放在自定义脚本里... ?    还是放在一个触发转文本后的里面?

.......

lz为什么不先看一下教程里的演示呢??

公用函数放在自定义脚本里,只在此触发中用到的就放在这个触发的脚本里阿
回复

使用道具 举报

 楼主| 发表于 2008-2-8 10:50:07 | 显示全部楼层


什么函数什么的.....    没搞到好么````

触发一
比如  一个技能释放后

设置 技能目标= xxTarget

如果没有为 第二个触发  增加 xxTarget 接受伤害事件

第二个触发就无效了...         加了又会泄露  

你打算把什么  放到自定义脚本里呀....
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-22 03:38 , Processed in 0.047692 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表