в прошлом дз мы перевели скилл на джасс
в нём мы использовали TriggerSleepAction( 2 ) для того чтобы сделать паузу на 2 секунды
но эта функция очень не точная и иногда случаются различные баги(в простых скилах это не особо часто происходит но в сложных системах баги гарантированы)
для того чтобы избежать этого мы используем таймер
а для передачи данных в таймер используем структуры
поэтому в этом уроке мы рассмотрим принцип действия структур и научимся их использовать
в нём мы использовали 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
если же нам вдруг надо узнать экземпляр структуры с которой работает метод то он содержится в переменной 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 который создаёт экземпляр,присваивает ему значения и возвращает этот экземпляр
}
структура создаётся вне функции. где? в нестандартных, в библионтеке, за библиотекой, на луне?
можно в библиотеке можно вне неё
можно на луне можно в нестандартном коде
пример про собак объясняет что такое структура
если он не понят то вот другой пример
тип unit это структура
какой нить определённый юнит это экземпляр
. это показатель того что обращаемся к переменной в структуре/экземпляре
A.u
A экземпляр
u переменная
. знак без которого не будет работать
а да
ознакомьтесь
думаю после теперь перейдём к другому способу обучения
я кидаю наработку
вы в ней капаетесь и задаёте вопросы если чё не понятно
в результате вы научитесь разбираться в чужих работах
Так же стоит заметить что безопасность созданных "типов" отстутствует и все они дочерны интеджеру
unit u
real hp
}
cord.hp=100
надо экземпляру обращаться а не к структуре
структура это вид люди
экземпляр это 1 человек
ты экземпляр структуры человек
так же ты экземпляр структуры пользователь xgm