找回密码
 点一下
查看: 2746|回复: 21

Jass_判断单位是否死亡的语句怎么写?

[复制链接]
发表于 2008-10-22 13:29:08 | 显示全部楼层 |阅读模式
句子如下.
 [codes=jass] if (not(IsUnitDeadBJ(u) == false)) then[/codes]怎么写CJ?


这句错哪了?他不做动作.
[codes=jass]call SetPlayerState(GetOwningPlayer(us),PLAYER_STATE_RESOURCE_GOLD,-200)[/codes]
发表于 2008-10-22 13:37:26 | 显示全部楼层
IsUnitDeadBJ就是判断生命值是否小于等于0

gold不可以设成负的吧
回复

使用道具 举报

发表于 2008-10-22 14:26:09 | 显示全部楼层
if GetUnitState(WhichUnit,UNIT_STATE_LIFE)<=0 then
    .........

cj如是写。
回复

使用道具 举报

发表于 2008-10-22 21:56:12 | 显示全部楼层
其实LZ完全可以先用T写一下
然后在转化一下
OK
回复

使用道具 举报

发表于 2008-10-22 22:00:37 | 显示全部楼层
ls啊,触发赚出来的是bj,lz要的是这个的cj哦~~

用jasscraft、jassshop等工具可以查看函数的
回复

使用道具 举报

 楼主| 发表于 2008-10-22 22:20:12 | 显示全部楼层
哦,那么第2句应该怎么改?我想减掉单位(U)的200黄金.....
回复

使用道具 举报

发表于 2008-10-22 22:27:48 | 显示全部楼层
减200么就是设置为当前的金钱减200
回复

使用道具 举报

发表于 2008-10-22 22:38:45 | 显示全部楼层

什么事BJ
什么是CJ?
我小白
回复

使用道具 举报

发表于 2008-10-22 23:35:43 | 显示全部楼层
bj是blizzard.j,cj是common.j
bj里的函数都是调用cj里的函数实现效果的
回复

使用道具 举报

发表于 2008-10-23 12:24:29 | 显示全部楼层
死亡的话可以用匹配单位类型
[jass]
IsUnitType(GetTriggerUnit(), UNIT_TYPE_DEAD) == true
[/jass]
回复

使用道具 举报

发表于 2008-10-23 12:27:36 | 显示全部楼层
后面的==true可以省略的哦~~前面本身就是一个布尔类型了

这个判断应该来的比较好,因为如重生的单位生命值也是为0的,不过貌似没有死亡分类
回复

使用道具 举报

 楼主| 发表于 2008-10-28 02:50:53 | 显示全部楼层
[codes=jass]if GetUnitState(WhichUnit,UNIT_STATE_LIFE)<=0 then
IsUnitType(GetTriggerUnit(), UNIT_TYPE_DEAD) == true[/codes]

那么上面两句哪个好?


[codes=jass]call SetPlayerState(GetOwningPlayer(us),PLAYER_STATE_RESOURCE_GOLD,(GetPlayerState(GetOwningPlayer(us),PLAYER_STATE_RESOURCE_GOLD)-200))[/codes]
这句貌似又是不做动作的.
回复

使用道具 举报

发表于 2008-10-28 10:38:16 | 显示全部楼层
那两句说不出什么好与不好,一个是判断生命值,但重生中的单位生命值也为0;另一个是判断类型,但这个类型貌似是可以添加的

这句话本身没有什么问题额,我测试完全有效的
回复

使用道具 举报

 楼主| 发表于 2008-10-28 11:07:38 | 显示全部楼层
我刚才又去测试了,第2句能通过WE,但是不做动作吖~  
回复

使用道具 举报

发表于 2008-10-28 11:09:07 | 显示全部楼层
那你把设置金钱的整段代码发上来看下吧
回复

使用道具 举报

发表于 2008-10-28 11:20:40 | 显示全部楼层
引用第14楼zhuzeitou于2008-10-28 11:09发表的  :
那你把设置金钱的整段代码发上来看下吧

判断单位为死亡类型有时候会失效的哎,特别是触发多的情况下

所以还是推荐使用判断生命值比较好
回复

使用道具 举报

 楼主| 发表于 2008-10-28 11:20:40 | 显示全部楼层
[codes=jass]function Trig_thf_Conditions takes nothing returns boolean
if (not(IsUnitType(GetTriggerUnit(),UNIT_TYPE_HERO) == true)) then
return false
endif
return true
endfunction

function Trig_jjh_Actions takes nothing returns nothing
local unit u = GetTriggerUnit()
local unit us = GetKillingUnit()
local integer i = 0
loop
    exitwhen i > 11
    if (not(IsUnitAlly(us,GetOwningPlayer(u)) == true)) then
    call DisplayTextToPlayer(Player(i),0,0,udg_zifuchuan[GetPlayerId(GetTriggerPlayer())]+GetPlayerName(GetTriggerPlayer())+"|r已经阵亡!杀死他的是"+udg_zifuchuan[GetPlayerId(GetOwningPlayer(us))]+GetPlayerName(GetOwningPlayer(us))+"|r。")
    else
    call DisplayTextToPlayer(Player(i),0,0,udg_zifuchuan[GetPlayerId(GetTriggerPlayer())]+GetPlayerName(GetTriggerPlayer())+"|r已经阵亡!杀死他的是"+udg_zifuchuan[GetPlayerId(GetOwningPlayer(us))]+GetPlayerName(GetOwningPlayer(us))+"|r,这个畜生自己人也杀,扣掉他200黄金作为惩罚。")
    endif
    set i = i+1
endloop
if (not(IsUnitAlly(us,GetOwningPlayer(u)) == true)) then
    call SetPlayerState(GetOwningPlayer(us),PLAYER_STATE_RESOURCE_GOLD,(GetPlayerState(GetOwningPlayer(us),PLAYER_STATE_RESOURCE_GOLD)-200))
endif
set u = null
set us = null
endfunction

function InitTrig_Revive takes nothing returns nothing
set gg_trg_Revive = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(gg_trg_Revive,EVENT_PLAYER_UNIT_DEATH)
call TriggerAddCondition(gg_trg_Revive,Condition(function Trig_thf_Conditions))
call TriggerAddAction(gg_trg_Revive,function Trig_jjh_Actions)
endfunction[/codes]
回复

使用道具 举报

发表于 2008-10-28 11:22:12 | 显示全部楼层
引用第1楼zhuzeitou于2008-10-22 13:37发表的  :
IsUnitDeadBJ就是判断生命值是否小于等于0

gold不可以设成负的吧

还有,老狼的UI中有说,增加金币时填写负值可以减少金币~~
回复

使用道具 举报

发表于 2008-10-28 12:02:03 | 显示全部楼层
[codes=jass]if (not(IsUnitAlly(us,GetOwningPlayer(u)) == true)) then
      call SetPlayerState(GetOwningPlayer(us),PLAYER_STATE_RESOURCE_GOLD,(GetPlayerState(GetOwningPlayer(us),PLAYER_STATE_RESOURCE_GOLD)-200))
endif[/codes]
杀敌人扣200块钱??

测试下来也是地,杀了敌人就扣200,杀了自己人什么都没
回复

使用道具 举报

 楼主| 发表于 2008-10-28 12:02:40 | 显示全部楼层
不是这样的么?凶手单位(us) 干掉 触发单位(u),如果是同盟玩家就减200块.是布鲁值错了?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-21 10:33 , Processed in 0.141582 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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