помогите криворукому не знаю в чём проблема но когда скилл юзается юнит начинает поворачивать не туда(я даже насильно его заставляю а он не вкакую),карта прикрепленна(кому не лень помогите уже мучаюсь над этим долго)

вот
спелл на основе канала
сначала открой в игре не запуская редактор (чтобы убедиться что всё работает)
а потом только в редакторе
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
10
Наруто! Как мило!
У меня вообще ошибку выбивает при сохранении карты джнгп нету так что пока.
28
ledoed, скилл триггерный?
если да то кинь код/скрин скилла
ибо качать карту а потом искать редактор лень
кроме того по старым традициям карты без дебага не принимаются
17
До сих пор проблему не решил
library EighthGate initializer init{
unit Unit=null
define{
raddeg=0.0174
degrad=57.3
Speell= 'A000'
SpeedGuy =4
}


void TextDisplay(unit u,string text){
force f = CreateForce()
ForceAddPlayer(f, GetOwningPlayer(u))
if (IsPlayerInForce(GetLocalPlayer(), f)) {
DisplayTextToPlayer(GetLocalPlayer(), 0, 0, text)

}
DestroyForce(f)
f=null
}
//===================================================

//гай врата
struct GuyVrataStruct{
unit u=null
int ivrata=0
int speed = 10
int predelvrat=40

static int timmer=0


float onclicX=0,onclicY=0

void VrataUpdate(){

.predelvrat--
if(.predelvrat<=0){

 RemoveUnitMovie(.u)
 TextDisplay(.u,I2S(count))
return
}


string text=I2S(.predelvrat)+" / "+"40"
TextDisplay(.u,text)


}




void Move(){


float x,y,posunitx=GetUnitX(.u),posunity=GetUnitY(.u)
x=.onclicX-posunitx
y=.onclicY-posunity

float rad = degrad*Atan2(y,x)

float distanse = SquareRoot(x*x+y*y)

if(distanse>=100){
SetUnitX(.u,posunitx+.speed*.ivrata*Cos(rad*raddeg))
SetUnitY(.u,posunity+.speed*.ivrata*Sin(rad*raddeg))
SetUnitFacing(.u,rad)





}else{
SetUnitAnimation( .u, "stand ready alternate" )
}


}

static void Update(){
int i =0
timmer++
while(i<count){
guyvrata[i].Move()
i++
}
i=0
if(timmer>40){
while(i<count){
guyvrata[i].VrataUpdate()
//guyvrata[i].Point()
i++
}
timmer =0
}



if(count <=0){
DestroyTimer(t)
t=null
}
i=0
}


//------------------------------
static GuyVrataStruct guyvrata[]
static int count=0
static timer t=null
//----------------------
static void AddToSpeedVrata(unit u,float onclicX,float onclicY,int speed){
int proverka = UnitProverka(u)
if(proverka==-1){return}
guyvrata[proverka].onclicX=onclicX
guyvrata[proverka].onclicY=onclicY
guyvrata[proverka].speed=speed
}
//-------------------
static void AddToVrata(unit u){

int proverka = UnitProverka(u)

if(proverka !=-1){

guyvrata[proverka].ivrata++
guyvrata[proverka].predelvrat=40
}else{

guyvrata[count++]=GuyVrataStruct.create()
guyvrata[count-1].u=u
guyvrata[count-1].ivrata++


if(t==null){
t=CreateTimer()
}
TimerStart(t,0.025,true,function GuyVrataStruct.Update)
}

}
//--------------
static int GetUnitVrata(unit u){
int proverca = UnitProverka(u)

if(proverca==-1){
return 0
}

int vrata = 0
vrata = guyvrata[proverca].ivrata

return vrata
}
//-----------------
static void RemoveUnitMovie(unit u){
int i = UnitProverka(u)
if(i==-1){return}
count--
while(i<count){
guyvrata[i]=guyvrata[i+1]
i++
}
}
//-----------------
static int UnitProverka(unit u){
int i =0

while(i<count){

if(guyvrata[i].u==u){return i}

i++
}

return -1
}

}
//====================================================
//=====================================================

//=================================================
private bool GuyVrataCondition(){
return (GetUnitAbilityLevel(GetTriggerUnit(), Speell) > 0)
}
private void GuyVrataAction(){
unit u=GetTriggerUnit()
float x = GetOrderPointX()
float y = GetOrderPointY()
float rad = degrad * Atan2(y-GetUnitY(u), x-GetUnitX(u))
SetUnitAnimationByIndex(u,9)
GuyVrataStruct A = GuyVrataStruct.create()
A.AddToSpeedVrata(u,x,y,SpeedGuy)
A.destroy()


}
//==========================================
private void GuyVrata_Actions(){

unit u =GetSpellAbilityUnit()
int predel = 0

GuyVrataStruct A = GuyVrataStruct.create()



int vrata = A.GetUnitVrata(u)

if(vrata<GetUnitAbilityLevel(u,Speell)){
TextDisplay(u,"|c00FF0000Открытие врат "+I2S(vrata+1)+"|r")
A.AddToVrata(u)
A.AddToSpeedVrata(u,GetUnitX(u),GetUnitY(u),SpeedGuy)
}



A.destroy()
}  


/////////-===========================
private bool GuyVrata_Conditions(){
return GetSpellAbilityId() == Speell
} 
//======================================================
    private void init(){
     trigger a=CreateTrigger()
     trigger GuyVrata = CreateTrigger(  )
  
      TriggerAddAction(a,function GuyVrataAction)
      TriggerAddCondition(a,function GuyVrataCondition)

      
      TriggerAddCondition( GuyVrata, Condition( function GuyVrata_Conditions ) )
      TriggerAddAction( GuyVrata, function GuyVrata_Actions )
      
        int index=0
    while(index<6){
    TriggerRegisterPlayerUnitEvent(GuyVrata, Player(index), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
        TriggerRegisterPlayerUnitEvent(a, Player(index), EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER, null)
        index++
    }
        

      
      GuyVrata=null
      a=null
    }
    

}
28
что это за ужас
void TextDisplay(unit u,string text){
force f = CreateForce()
ForceAddPlayer(f, GetOwningPlayer(u))
if (IsPlayerInForce(GetLocalPlayer(), f)) {
DisplayTextToPlayer(GetLocalPlayer(), 0, 0, text)

}
DestroyForce(f)
f=null
}
неужели так сложно написать вот так
DisplayTextToPlayer(GetOwningPlayer(u), 0, 0, text)
17
nvc123:
что это за ужас
что то похожее на это DisplayTextToForce( GetPlayersAll(), "-------" )
неужели так сложно написать вот так
DisplayTextToPlayer(GetOwningPlayer(u), 0, 0, text)
""
не работает почемуто
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.