в прошлом дз мы перевели скилл на джасс
в нём мы использовали TriggerSleepAction( 2 ) для того чтобы сделать паузу на 2 секунды
но эта функция очень не точная и иногда случаются различные баги(в простых скилах это не особо часто происходит но в сложных системах баги гарантированы)
для того чтобы избежать этого мы используем таймер
а для передачи данных в таймер используем структуры
поэтому в этом уроке мы рассмотрим принцип действия структур и научимся их использовать

сначала пишем стандартное:
include "cj_types.j"

library abclib initializer init{
структура создаётся вне функции,например:
struct cord{
	unit u
	real dmg
}
эта структура содержит переменную типа юнит и переменную типа реал и называется cord
мы создали структуру
теперь рассмотрим создание экземпляра структуры:
void act(){
	cord A=cord.create() //создаём экземпляр и записываем его в переменную A
	A.u=GetTriggerUnit() // заносим в переменную u юнита
	A.dmg=50.5 // заносим в переменную dmg число
}
можно представить что структура это собаки(животные такие)
тогда экземпляр структуры это одна определённая собака(шарик например или какие вы там клички собакам даёте)
в джасс структура является числом int
то есть с ней можно делать всё что и с числом
например её можно записать в глобальную переменную и достать из другой функции
	int ivar

	void act(){
		cord A=cord.create() //создаём экземпляр и записываем его в переменную A
		A.u=GetTriggerUnit() // заносим в переменную u юнита
		A.dmg=50.5 // заносим в переменную dmg число
		ivar=A
	}

	void act2(){
		cord a=ivar //заносим в переменную а наш экземпляр структуры
		unit b=a.u //присваиваем переменной b юнита которого записали в функции act
		real c=a.dmg //присваиваем переменной с число которое записали в функции act
		a.destroy() //удаляем экземпляр структуры
	}
так же есть такое понятие как метод
метод это функция которая работает с экземпляром структуры
метод пишется внутри структуры в отличие от функций:
struct abc{
	int i1
	int i2

	void st(int a,int b ){ // создаём метод который берёт 2 числа(а и b)
		i1=a //присваиваем переменной i1 число a
		i2=b
	}

}

void act(){
	abc a=abc.create()
	a.st(10,20) //вызываем метод st 
}
в методе не надо писать переменную в которой содержится экземпляр структуры
если же нам вдруг надо узнать экземпляр структуры с которой работает метод то он содержится в переменной this
так же есть такое понятие как статичный метод
статичный метод это метод который не содержит экземпляра структуры,то есть ведёт себя как обычная функция
их удобно использовать для альтернативного создания экземпляра структуры
например:
struct abc{
	int i1
	int i2

	static abc new(int a,int b){ //перед статичными методами пишется static
		abc this=abc.create() //создаём экземпляр
		i1=a
		i2=b
		return this //возвращаем экземпляр
	}

}

void act(){
	abc a=abc.new(10,20) //вызываем статичный метод new который создаёт экземпляр,присваивает ему значения и возвращает этот экземпляр
}
`
ОЖИДАНИЕ РЕКЛАМЫ...
17
что такое структура, для чего она и что с ней делать. в статье ты написал действие над структурой, экземпляром и методом, но что такое структура а что такое метод и что такое экземпляр - не раскрыл. пример про собак вообще непонятно к какому селу. также непонятно что означает точка(A.u).
структура создаётся вне функции. где? в нестандартных, в библионтеке, за библиотекой, на луне?
28
просто вне функции и вне других структур
можно в библиотеке можно вне неё
можно на луне можно в нестандартном коде
пример про собак объясняет что такое структура
если он не понят то вот другой пример
тип unit это структура
какой нить определённый юнит это экземпляр
. это показатель того что обращаемся к переменной в структуре/экземпляре
A.u
A экземпляр
u переменная
. знак без которого не будет работать
33
А задание какое? задать вопрос? ну так я уже 2 задал <==
28
задание сейчас напишу
а да
ознакомьтесь
думаю после теперь перейдём к другому способу обучения
я кидаю наработку
вы в ней капаетесь и задаёте вопросы если чё не понятно
в результате вы научитесь разбираться в чужих работах
21
Наталкивающая мысль: с помощью структур можно создавать свои типы, мб потом примерчик накидаю)
Так же стоит заметить что безопасность созданных "типов" отстутствует и все они дочерны интеджеру
17
тобишь при обращении к стируктуре
struct cord{
unit u
real hp
}
я пишу
cord.u=GetTriggerUnit()
cord.hp=100
так?
28
глянь пример ещё раз
надо экземпляру обращаться а не к структуре
структура это вид люди
экземпляр это 1 человек
ты экземпляр структуры человек
так же ты экземпляр структуры пользователь xgm
Чтобы оставить комментарий, пожалуйста, войдите на сайт.