Добавлен
при срабатывании триггера который отвечает за получение урона почему то активная функция срабатывает почти бесконечно вот сами посмотрите и что я делаю не так,функция action под таймером в 0.025
static void DamageUnitAction(){
unit u=GetTriggerUnit()
int i = Proverka(u)

Display(u,I2S(i))
Name[i].Amount-=R2I(GetEventDamage())
}
private void EventDamage(){
trigger DamageUnit= CreateTrigger()
int i = 0

TriggerRegisterUnitEvent(DamageUnit, .u , EVENT_UNIT_DAMAGED)
TriggerAddAction( DamageUnit, function SusanoKakashi.DamageUnitAction )

}

private void Action(){
Move()
AmountSusano()
EventDamage()
}
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
30
8 лет назад
0
Принятый ответ
0
17
8 лет назад
Отредактирован ledoed
0
Clamp:
прежде чем написать я перерыл и эти наработки,вы даже наверно не смотрели на код а тыкнули в в статичный отлов урона а мне нужен индивидуальный динамический отлов обрабатываемый структурой
0
30
8 лет назад
0
мне нужен индивидуальный динамический отлов обрабатываемый структурой
Берёшь логику и используешь в индивидуальной динамической обрабатываемой структуре.

А не в том псевдокоде с кучей неизвестных референсов, что ты прислал.
0
17
8 лет назад
Отредактирован ledoed
0
Clamp:
мне нужен индивидуальный динамический отлов обрабатываемый структурой
Берёшь логику и используешь в индивидуальной динамической обрабатываемой структуре.

А не в том псевдокоде с кучей неизвестных референсов, что ты прислал.
так я что делаю моей логики сильно не хватило я сюда прислал вопрос
почему триг срабатывает бесконечно раз а некак ему положено
прочтите вопрос хотяб
А не в том псевдокоде с кучей неизвестных референсов, что ты прислал
так и есть он же в разделе вопросов было бы забавно такое увидеть в наработках
0
30
8 лет назад
Отредактирован Clamp
0
так и есть
"Скажите, что у меня в коде не так? Только я вам код не пришлю, так угадывайте!"

Кстати, система по ссылке поддерживает и динамическое использование в своём первом варианте.
0
17
8 лет назад
0
"Скажите, что у меня в коде не так? Только я вам код не пришлю, так угадывайте!"
конечно если вам нужна вся цепочка то да (просто что выше наглядный пример)
library KakashiSpell{


private SusanoKakashi SusanoKakashiStruct=0
public void Update(){
SusanoKakashiStruct.Awake()

}


define {
private Name=SpellKakasi
private Susano = 'h00P'
}


//вызов сусано
public void KakashiSusanoAction(unit u){
SusanoKakashi A = SusanoKakashi.create()
A.AddToUnit(u)
A.destroy()
}

struct SusanoKakashi{

static SusanoKakashi Name[]
static int count = 0

//===================
unit u,k
int taimer=0
int Amount=5000
texttag text

private void Move(){
SetUnitX(.k,GetUnitX(.u))
SetUnitY(.k,GetUnitY(.u))
SetUnitFacing(.k,GetUnitFacing(.u))
}
private void AmountSusano(){
if(.Amount<=0){
RemoveUnit(.u)
SetUnitVertexColor(.u,255,255,255,255)
RemoveUnitMovie(.u)
}
DestroyTextTag(.text)
.text=CreateTextTagUnitBJ( I2S(.Amount), .u, 0, 10, 100, 100, 100, 0 )
}

static void DamageUnitAction(){
unit u=GetTriggerUnit()
int i = Proverka(u)

Display(u,I2S(i))
Name[i].Amount-=R2I(GetEventDamage())
}
private void EventDamage(){
trigger DamageUnit= CreateTrigger()
int i = 0

TriggerRegisterUnitEvent(DamageUnit, .u , EVENT_UNIT_DAMAGED)
TriggerAddAction( DamageUnit, function SusanoKakashi.DamageUnitAction )

}

private void Action(){
Move()
AmountSusano()
EventDamage()
}

private void Create(){
.k=CreateUnit(GetOwningPlayer(.u),Susano,GetUnitX(.u),GetUnitY(.u),GetUnitFacing(.u))
SetUnitVertexColor(.u,255,255,255,0)
}
private void Remove(){
RemoveUnit(.u)
SetUnitVertexColor(.u,255,255,255,255)
RemoveUnitMovie(.u)
}


static void AmountDamageKakashi(unit u,float damage){
int i = Proverka(u)
if(i==-1){return}
Name[i].Amount-=R2I(damage)
SetUnitState(Name[i].u,UNIT_STATE_LIFE,GetUnitState(Name[i].u,UNIT_STATE_LIFE)+damage)
Display(Name[i].u,"ttt")
}

//==========================
static void AddToUnit(unit u){
int i = Proverka(u)
if(i!=-1){
Name[i].Remove()

}else{
Name[count++] = SusanoKakashi.create() 
Name[count-1].u=u
Name[count-1].Create()
  }
}

static int Proverka(unit u){
int i = 0
while (i<count){
if(Name[i].u==u){return i};i++}
return -1
}
//Удаление
static void RemoveUnitMovie(unit u){
int i = Proverka(u)
if(i==-1){return};count--;
while(i<count){Name[i]=Name[i+1];i++}
}

static void Update(){int i =0;while(i<count){Name[i].Action();i++}}
public void Awake(){Update()}//=========================================Проверки 
}//end struct
//=======================================================================



}
+навсякий пожарный начало цепочки
scope InitSpellAbility initializer Init{
globals
timer globaltimmer=CreateTimer()
endglobals


//Гай
private void RU_GaiVrata8(){
eighthgate_eighthgateAction(GetTriggerUnit())
eighthgate_Utreniy_Pavlin_Remove_Action(GetTriggerUnit())
}//8е врата Гая
private void RU_NightGuy(){eighthgate_NightFlyGuy(GetTriggerUnit())}//Ночной мотылёк
private void RU_NightSlon(){eighthgate_Vecherniy(GetTriggerUnit(),GetSpellTargetX(),GetSpellTargetY())}//Вечерний Слон
private void RU_GuySkillVozdushniy(){eighthgate_SlonUdar(GetTriggerUnit())}//Удар слона
private void RU_PoludeniyTigr(){eighthgate_Poludeniy_Tigr_Action(GetTriggerUnit())}//Полуденный тигр
private void RU_UtreniyPavlin(){eighthgate_Utreniy_Pavlin_Action(GetTriggerUnit())}//Павлин
private void RU_UraganKonoha(){eighthgate_SpellonefiveVrat_Action(GetTriggerUnit())}//Ураган
private void RU_Rosposhnoy(){eighthgate_Rosposhnoy_Action(GetTriggerUnit())}//Лотус
//========================================================
//Мадара
private void RU_MadaraSpellLazer(){MadaraSpell_MadaraSpell1(GetTriggerUnit())}//лазер
private void RU_MadaraSpellShar(){MadaraSpell_MadaraSpell2(GetTriggerUnit())}//летящий шар чёрный
private void RU_MadaraSpellClon(){MadaraSpell_MadaraCloneSpell(GetTriggerUnit(),GetSpellTargetUnit())}//спелл клонов
private void RU_MadaraSpellMeteor(){MadaraSpell_MadaraSpell3(GetTriggerUnit())}
//Какаши
private void RU_KakashiSusano(){KakashiSpell_KakashiSusanoAction(GetTriggerUnit())}

//===========================================================================
private bool Trig_InitSpell_Condition(){
string s = GetObjectName(GetSpellAbilityId())

if(SubString(s,0,2)=="RU"){
ExecuteFunc(SCOPE_PRIVATE+s)
//DisplayTextToPlayer(Player(0), 0, 0, SCOPE_PRIVATE+s)
}
return false
}
public void Update(){
eighthgate_Update()
MadaraSpell_Update()
KakashiSpell_Update()
//test_Update()
}





//===========================================================================
private void Init(){
TimerStart(globaltimmer,0.025,true,function Update)

    trigger SpellCast = CreateTrigger(  )
    int i=0
    while(i<12){TriggerRegisterPlayerUnitEvent(SpellCast, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null);i++}
    TriggerAddCondition( SpellCast, Condition(function Trig_InitSpell_Condition) )
    }

}
Кстати, система по ссылке поддерживает и динамическое использование в своём первом варианте.
вообще не то,но я разобрался в своей и сделал так как нужно там вообще ерунда была
если кому будет интересно,я пропускал триггер через таймер а оказывается над было всего 1 раз его на нужного юнита пропустить чтобы всё работало
Чтобы оставить комментарий, пожалуйста, войдите на сайт.