找回密码
 点一下
查看: 559|回复: 4

触发创建闪电效果,战争迷雾中仍然显示,应该如何解决

[复制链接]
发表于 2014-2-21 17:34:33 | 显示全部楼层 |阅读模式
本帖最后由 徐依尘 于 2014-2-23 16:04 编辑

触发创建闪电效果,战争迷雾中仍然显示,应该如何解决
真心求解~


QQ截图20140221173412.jpg
============算是答案吧====================
最后还得是使用本地玩家的方法PS:把这些乱七八糟的代码复制进自定义代码,然后就用自定义代码 call LOM_CLE2U(单位1变量单位2变量,闪电类型,持续时间
  1. //  创建一个链接两个单位闪电效果

  2. globals
  3.    hashtable udg_HT=InitHashtable()  
  4. endglobals

  5. function LOM_SLEV1P takes lightning le,player p,real xr returns nothing  
  6.   if GetLocalPlayer()==p then
  7.     call SetLightningColor(le,1,1,1,xr)
  8.   endif
  9.   set le=null
  10.   set p=null
  11. endfunction

  12. function LOM_MLE2U takes lightning le,unit u1,unit u2 returns nothing
  13.    local player p=null
  14.    local real x1=GetUnitX(u1)
  15.    local real y1=GetUnitY(u1)
  16.    local real z1=(50+GetUnitFlyHeight(u1))
  17.    local real x2=GetUnitX(u2)
  18.    local real y2=GetUnitY(u2)
  19.    local real z2=(50+GetUnitFlyHeight(u2))
  20.    local integer i=0
  21.    call MoveLightningEx(le,false,x1,y1,z1,x2,y2,z2)         
  22.    loop
  23.      set p=Player(i)
  24.      exitwhen i>11
  25.      if (GetPlayerController(p)==MAP_CONTROL_USER) and (GetPlayerSlotState(p)==PLAYER_SLOT_STATE_PLAYING) then
  26.        if (IsVisibleToPlayer(x1,y1,p) or IsVisibleToPlayer(x2,y2,p)) then
  27.           call LOM_SLEV1P(le,p,1)
  28.        else
  29.           call LOM_SLEV1P(le,p,0)
  30.        endif  
  31.      endif
  32.      set p=null
  33.      set i=i+1
  34.    endloop   
  35.    set u1=null
  36.    set u2=null
  37.    set le=null
  38.    set p=null   
  39. endfunction

  40. function LOM_CLE2U_IAT takes nothing returns nothing
  41.   local timer t=GetExpiredTimer()
  42.   local integer k=GetHandleId(t)
  43.   local unit u1=LoadUnitHandle(udg_HT,k,1)
  44.   local unit u2=LoadUnitHandle(udg_HT,k,2)
  45.   local lightning le=LoadLightningHandle(udg_HT,k,3)
  46.   local real i=LoadReal(udg_HT,k,5)-1   
  47.   call LOM_MLE2U(le,u1,u2)
  48.   if i>0 then
  49.       call SaveReal(udg_HT,k,5,i)
  50.       call TimerStart(t,LoadReal(udg_HT,k,4),false,function LOM_CLE2U_IAT)
  51.   else
  52.       call DestroyLightning(le)
  53.       call DestroyTimer(t)
  54.       call FlushChildHashtable(udg_HT,k)
  55.   endif
  56.   set u1=null
  57.   set u2=null
  58.   set le=null
  59.   set t=null
  60. endfunction

  61. function LOM_CLE2U takes unit u1,unit u2,string letid,real xtr returns nothing
  62.   local timer t=CreateTimer()
  63.   local integer k=GetHandleId(t)
  64.   local lightning le=AddLightningEx(letid,false,GetUnitX(u1),GetUnitY(u1),(35+GetUnitFlyHeight(u1)),GetUnitX(u2),GetUnitY(u2),(35+GetUnitFlyHeight(u2)))
  65.   local real ddtr=0.03
  66.   call SetLightningColor(le,1,1,1,0)
  67.   call SaveUnitHandle(udg_HT,k,1,u1)
  68.   call SaveUnitHandle(udg_HT,k,2,u2)
  69.   call SaveLightningHandle(udg_HT,k,3,le)
  70.   call SaveReal(udg_HT,k,4,ddtr)
  71.   call SaveReal(udg_HT,k,5,(xtr/ddtr))
  72.    
  73.   call TimerStart(t,0.01,false,function LOM_CLE2U_IAT)
  74.    
  75.   set u1=null
  76.   set u2=null
  77.   set le=null
  78.   set letid=null  
  79. endfunction
复制代码






发表于 2014-2-22 00:52:15 | 显示全部楼层
有没有打开检查可见性?

点评

打开了,创建时在迷雾中确实不显示闪电效果,但是看了一眼,再退后时,闪电效果就一直在在迷雾中显示了  详情 回复 发表于 2014-2-22 07:44
回复

使用道具 举报

 楼主| 发表于 2014-2-22 07:44:40 | 显示全部楼层
chyj4747 发表于 2014-2-22 00:52
有没有打开检查可见性?

打开了,创建时在迷雾中确实不显示闪电效果,但是看了一眼,再退后时,闪电效果就一直在在迷雾中显示了
回复

使用道具 举报

发表于 2014-2-22 08:55:38 | 显示全部楼层
徐依尘 发表于 2014-2-22 07:44
打开了,创建时在迷雾中确实不显示闪电效果,但是看了一眼,再退后时,闪电效果就一直在在迷雾中显示了

你得更新闪电效果,比如重新移动到闪电所在的地方并重新检查可见
回复

使用道具 举报

发表于 2014-2-22 22:14:17 | 显示全部楼层
本地玩家?否则透明?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 06:13 , Processed in 0.299253 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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