找回密码
 点一下
查看: 1971|回复: 10

本地玩家特效

[复制链接]
发表于 2008-11-22 12:31:33 | 显示全部楼层 |阅读模式
[jass]function Trig_First_Actions takes nothing returns nothing
    local unit u = GetKillingUnit()
    call DisableTrigger( GetTriggeringTrigger() )
    call PlaySoundOnUnitBJ(gg_snd_firstblood,100.,u)
    if (GetLocalPlayer() == GetOwningPlayer(u)) then
    call AddSpecialEffectTarget("UI\\Feedback\\GoldCredit\\GoldCredit.mdl",u,"overhead")//如果加上这句就会出现掉线!!!!!!!
    call CreateTextTagUnitBJ( "+150", u, 0, 10, 100, 100, 0.00, 0 )
    call SetTextTagVelocityBJ( GetLastCreatedTextTag(), 64, 90 )
    call SetTextTagPermanent( GetLastCreatedTextTag(), false )
    call SetTextTagFadepoint( GetLastCreatedTextTag(), 2.00 )
    call SetTextTagLifespan( GetLastCreatedTextTag(), 4.00 )
    endif
    call DisplayTextToForce( GetPlayersAll(), GetPlayerName(GetOwningPlayer(u))+"刚刚获得了第一滴血,得到150金的奖励!" )
endfunction[/jass]

不是给部分玩家创建特效是不会掉线的么?
 楼主| 发表于 2008-11-22 13:09:37 | 显示全部楼层
啊,因为觉得太奇怪了,就打开dota657b看了看,发现他是这么写的[jass]if GetLocalPlayer()==lp then
call SetTextTagVisibility(t,true)
set s="UI\\\\Feedback\\\\GoldCredit\\\\GoldCredit.mdl"
else
call SetTextTagVisibility(t,false)
set s=""
endif
if GetUnitState(lu,UNIT_STATE_LIFE)>0.5 then
call DestroyEffect(AddSpecialEffectTarget(s,lu,"overhead"))
endif[/jass]
原来,特效也是必须要创建的,如果只给部分玩家创建特效依然会引发掉线。
但是可以利用创建一个空特效,这样的做法不会引起掉线啊。
回复

使用道具 举报

发表于 2008-11-22 14:16:12 | 显示全部楼层
意思是,不管怎么样,特效都是创建的,但创建的特效内容可以不同是这样么?
回复

使用道具 举报

 楼主| 发表于 2008-11-22 14:50:15 | 显示全部楼层
应该是这样吧。因为如果只给部分玩家创建特效就绝对会引起掉线。
回复

使用道具 举报

发表于 2008-11-22 16:05:00 | 显示全部楼层
应该是这样,大部分HANDLE类型都需要同步创建,比如漂浮文字和特效,这个我做过试验,不同步创建就会掉线,估计是因为要保持HANDLE在HASH表里面的值相同
回复

使用道具 举报

发表于 2008-11-23 00:45:53 | 显示全部楼层
我试过漂浮文字可以不同步创建。
回复

使用道具 举报

发表于 2008-11-23 01:58:38 | 显示全部楼层
漂浮文字用的handle表跟其他对象不同的~~其数量增减不会改变主handle表~~

而闪电效果也是~~而特效占用的是主handle表~~
回复

使用道具 举报

发表于 2008-11-23 13:58:55 | 显示全部楼层
也许能挖几个War3漏洞出来。
比如说局域网作弊
- -
回复

使用道具 举报

发表于 2008-11-25 21:20:47 | 显示全部楼层
local string s

要不要set s = null?
回复

使用道具 举报

发表于 2008-11-25 22:29:39 | 显示全部楼层
不需要
回复

使用道具 举报

发表于 2008-11-26 16:10:11 | 显示全部楼层
[jass]
function Vision takes nothing returns nothing
local string TXS
set udg_TXP=GetUnitLoc(GetTriggerUnit())
set udg_TXN=udg_TXN+1
if GetLocalPlayer() == Player(0)  then
     set TXS="units\\\\orc\\\\StasisTotem\\\\StasisTotem.mdl"
else
     set TXS=""
endif
call AddSpecialEffectLocBJ(udg_TXP,TXS)
set udg_TX[udg_TXN]=bj_lastCreatedEffect
call RemoveLocation(udg_TXP)
endfunction
[/jass]

然后在需要的时候对所有玩家删除udg_TXP就可以了

试了下 貌似没有问题
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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