кто знает наработку дуоса помогите плиз! там вначале он сетает звук и строку и максимальное число до 9,но при убийстве выпадает 1 стринг,с текстом убивает единицу! мне надо чтобы 1 стринга не было,но если его удаляешь то он сразу переходит ко 2 стрингу и уже делает килинг спри.... когда удаляешь в 1 стринге строку с текстом то высвечивается просто ник убившего,А это не годится!!!
set KS_Sound[3]=gg_snd_Killingspree set KS_Sound[4]=gg_snd_Dominating set KS_Sound[5]=gg_snd_Megakill set KS_Sound[6]=gg_snd_Unstoppable set KS_Sound[7]=gg_snd_Monsterkill set KS_Sound[8]=gg_snd_Multikill set KS_Sound[9]=gg_snd_Godlike set KS_Text[3]=" совершает |cFF0042FFсмертельную шутку!|r" set KS_Text[4]=" |cFF20C000господствует!|" set KS_Text[5]=" |cFFFF0303мега убийца!|r" set KS_Text[6]=" |cFFFE8A0Eнепреодолимый!|r" set KS_Text[7]=" |cFF4E2A04монстр убийца!|r" set KS_Text[8]=" |cFFFF0555совершает резню!|r" set KS_Text[9]=" |cFFFFFC01подобно богу!|r" set pcn[0]="|cFFFF0303"+GetPlayerName(Player(0))+"|r" set pcn[1]="|cFF0042FF"+GetPlayerName(Player(1))+"|r" set pcn[2]="|cFF1CE6B9"+GetPlayerName(Player(2))+"|r" set pcn[3]="|cFF540081"+GetPlayerName(Player(3))+"|r" set pcn[4]="|cFFFFFC01"+GetPlayerName(Player(4))+"|r" set pcn[5]="|cFFFE8A0E"+GetPlayerName(Player(5))+"|r" set pcn[6]="|cFF20C000"+GetPlayerName(Player(6))+"|r" set pcn[7]="|cFFE55BB0"+GetPlayerName(Player(7))+"|r" set pcn[8]="|cFF959697"+GetPlayerName(Player(8))+"|r" set pcn[9]="|cFF7EBFF1"+GetPlayerName(Player(9))+"|r" set pcn[10]="|cFF106246"+GetPlayerName(Player(10))+"|r" set pcn[11]="|cFF4E2A04"+GetPlayerName(Player(11))+"|r" set pcn[12]="|cFF282828"+GetPlayerName(Player(12))+"|r"
Code
function Trig_KillHero_Timer takes nothing returns nothing local timer t=GetExpiredTimer() local integer i=0 loop exitwhen t==KillTimer[i] set i=i+1 endloop set kill[i]=0 set t=null endfunction function Trig_KillHero_Actions takes nothing returns nothing local player pk=GetOwningPlayer(GetKillingUnit()) local player pd=GetOwningPlayer(GetTriggerUnit()) local integer idpk=GetPlayerId(pk) local integer idpd=GetPlayerId(pd) local real gold=150 if IsUnitType(GetTriggerUnit(),UNIT_TYPE_HERO)==true then set kill[idpk]=kill[idpk]+1 if fb==false then set gold=250 call StartSound(gg_snd_Firstblood) call DisplayTextToPlayer(GetLocalPlayer(),0.,0.,pcn[idpk]+" пролил |cFFFF0303первую кровь!|r") set fb=true endif if kill[idpk]==2 then set gold=225 call StartSound(gg_snd_Doublekill) call DisplayTextToPlayer(GetLocalPlayer(),0.,0.,pcn[idpk]+" |cFF0042FFдвойное убийство!|r") endif if kill[idpk]==3 then set gold=275 call StartSound(gg_snd_Triplekill) call DisplayTextToPlayer(GetLocalPlayer(),0.,0.,pcn[idpk]+" |cFFFFFC01тройное убийство!|r") endif if kill[idpk]==4 then set gold=325 call StartSound(gg_snd_Ultrakill) call DisplayTextToPlayer(GetLocalPlayer(),0.,0.,pcn[idpk]+" |cFFFF0303кровавое убийство!|r") endif if kill[idpk]>=5 then set gold=375 call StartSound(gg_snd_Rampage) call DisplayTextToPlayer(GetLocalPlayer(),0.,0.,pcn[idpk]+" |cFF7EBFF1яростное убийство!|r") endif call DisplayTextToPlayer(GetLocalPlayer(),0.,0.,pcn[idpk]+" убил игрока "+pcn[idpd]+" и получил за его голову " + "|c00FFFF00"+I2S(R2I(gold))+"|r") call TimerStart(KillTimer[idpk],10.,false,function Trig_KillHero_Timer) endif endfunction
//=========================================================================== function InitTrig_KillHero takes nothing returns nothing local integer index=0 set gg_trg_KillHero=CreateTrigger() loop call TriggerRegisterPlayerUnitEvent(gg_trg_KillHero,Player(index),EVENT_PLAYER_UNIT_DEATH,null) exitwhen index==11 set index=index+1 endloop call TriggerAddAction(gg_trg_KillHero,function Trig_KillHero_Actions) endfunction
Code
function Trig_SpreeSystem_Cond takes nothing returns boolean return IsUnitType(GetTriggerUnit(),UNIT_TYPE_HERO) endfunction function Trig_SpreeSystem_Actions takes nothing returns nothing local player pk=GetOwningPlayer(GetKillingUnit()) local player pd=GetOwningPlayer(GetTriggerUnit()) local integer idpk=GetPlayerId(pk) local integer idpd=GetPlayerId(pd) set spree[idpk]=spree[idpk]+1 set spree[idpd]=0 if spree[idpk]>2 then if spree[idpk]>=9 then call StartSound(KS_Sound[9]) call DisplayTextToPlayer(GetLocalPlayer(),0,0,pcn[idpk]+KS_Text[9]) else call StartSound(KS_Sound[spree[idpk]]) call DisplayTextToPlayer(GetLocalPlayer(),0,0,pcn[idpk]+KS_Text[spree[idpk]]) endif endif endfunction
//=========================================================================== function InitTrig_SpreeSystem takes nothing returns nothing local integer index=0 set gg_trg_SpreeSystem=CreateTrigger() loop call TriggerRegisterPlayerUnitEvent(gg_trg_SpreeSystem,Player(index),EVENT_PLAYER_UNIT_DEATH,null) exitwhen index==11 set index=index+1 endloop call TriggerAddCondition(gg_trg_SpreeSystem,Condition(function Trig_SpreeSystem_Cond)) call TriggerAddAction(gg_trg_SpreeSystem,function Trig_SpreeSystem_Actions) endfunction
function Trig_KillHero_Timer takes nothing returns nothing local handle t = GetExpiredTimer() local integer i = 0 loop exitwhen t == KillTimer[i] set i = i + 1 endloop set kill[i] = 0 set t = null endfunction
Лучше вот так. И кстати, ты в этом куске кода не инициализируешь переменные (таймеры, звуки и т. д.).
И кстати, ты в этом куске кода не инициализируешь переменные (таймеры, звуки и т. д.).
всмысле?
Добавлено (18-03-2011, 18:28) --------------------------------------------- SirNikolas, а чем отличаеться handle от timer и чем лучше?И использовать только для истекающего?
handle - это прародитель всех типов, которые нужно обнулять, иногда удается заменить дочерний тип типом handle в целях оптимизации. handle нельзя передать в функцию, которая берет, например, timer, но его можно сравнивать с timer.
Добавлено (18-03-2011, 18:39) --------------------------------------------- Точно так же кое-где, если хорошенько посмотреть, можно заменить unit на widget.