H_A_PK
#751 | Тема: Мастерская аватарок.CoRVu$, Спасибо
Ползут 2 пирожка.
Первый: Я тебя щас трахну.
Второй: Почему?
Первый: Потому что я с яйцами :D
Первый: Я тебя щас трахну.
Второй: Почему?
Первый: Потому что я с яйцами :D
Форум Записи участника |
Результаты поиска |
H_A_PK#751 | Тема: Мастерская аватарок.CoRVu$, Спасибо
Ползут 2 пирожка.
Первый: Я тебя щас трахну. Второй: Почему? Первый: Потому что я с яйцами :D |
|
H_A_PK#753 | Тема: Введение в JassФункции в Jass Что такое функция? Функция, это фрагмент кода, в который можно передавать параметры, который может возвращать один параметр и производить определенные действия. Кроме того, Вы наверное замечали, что при переводе триггера в jass, в итоге создаются несколько функций. Обычно, функция для действий триггера, для условия, а также функция для присоединения события. Самое главное, что функции можно использовать, чтобы сделать код более удобным и коротким. Синтаксис функции выглядит следующим образом: [jass]function <ИМЯ ФУНКЦИИ> takes <ПЕРЕЧЕНЬ ПАРАМЕТРОВ, которые функция БЕРЕТ> returns <тип параметра, который функция ВОЗВРАЩАЕТ> ... <ПЕРЕЧЕНЬ ДЕЙСТВИЙ ФУНКЦИИ> ... endfunction[/jass] Всё это выглядит не очень понятно, а даже страшно не для некоторых читателей. Самый простой пример функции, та которая ничего не берёт и нечего не возвращает (nothing) [jass]function MyFunction takes nothing returns nothing call DoNothing() endfunction [/jass] Эта функция не берёт ничего и не чего не возвращает, имеет название MyFunction. Nothing - с английского ничего, что в общем-то и делает нам всё понятно. Для того, чтобы вызвать эту функцию на исполнение, достаточно написать команду [jass]call MyFunction()[/jass] () - это скобки, в которых указывается список параметров для функции, но в нашем случае он пуст. Вы можете вставить эту команду в триггеры (в виде custom script) или в jass. А что если мы хотим чтобы наша функция выполняла какие-то действия ? Всё очень просто, в перечень действий функции мы прописываем все необходимые нам действия. Например сделать функцию, которая будет добавлять игроку золото. [jass] function property takes nothing returns nothing call AdjustPlayerStateBJ( 1000, Player(0), PLAYER_STATE_RESOURCE_GOLD ) endfunction [/jass] Эта функция добавит игроку Player(0) (Игрок 1 красный) 1000 золотых монет. Почему Player(0) ? Это потому что в жасс нумерация идёт с нуля. Т.е. Player(1) это игрок 2 синий. PLAYER_STATE_RESOURCE_GOLD - кодовое слово, которое означает, что прибавляется именно золото, а не скажем лес. Чтобы наше зоветное золото игрок 1 наконец получил [jass]call property()[/jass] Когда триггер запущен и очередь дойдет до этой команды, будет запущена функция и выполнены все ее действия. И при каждом запуске игрок1 будет получать 1000 золота.Конечно, функция состоящая из одного действия не имеет смысла, но действий может быть и больше. Если в триггерах или коде имеются часто повторяющиеся фрагменты, то имеет смысл создать функцию и заменять фрагмент на вызов функции. Пока что я не рассказал, а куда нужно вставлять текст функции. Это нельзя делать куда попало. Нельзя вставлять функцию внутрь другой функции. Функцию можно вставить в пустое пространство между другими функциями в триггере или в специально отведенное место (второй вариант предпочтительнее, позже расскажу почему). Путь к этому специальному месту: открой редактор триггеров. Слева в окне найди дерево триггеров (список папок и самих триггеров). Самая высокая позиция этого дерева - иконка карты. Щелкни на нее. Справа откроется окно "Нестандартный код". Вот в него и нужно вставлять функции. Итак, первая и самая простая функция сделана. Но функции очень удобны тем, что они могут принимать определенные параметры, которые влияют на действие функции. К примеру, модернизируем функцию property, чтобы она давала не 1000 золота, а например столько золота, сколько мы укажем в параметре. [jass] function property takes integer n returns nothing call AdjustPlayerStateBJ(n, Player(0), PLAYER_STATE_RESOURCE_GOLD ) endfunction [/jass] [jass]call property(500)[/jass] Теперь игрок1 получит только 500 золотых монет. Итак давайте посмотрим, чтоже изменилось в нашей функции. takes integer n - Означает, что функция будет брать какой-то параметр в виде числа, в самой функции этот параметр используется как n. [jass]call property(<какое-то число>)[/jass] И это самое число будет передано в функцию при запуске и записано в локальную переменную n. Вот такой фокус. Мы можем вводить количества золота, которые мы хотим отдать игроку1 и этот номер будет передан в функцию. Еще несколько слов о параметрах. Во-первых, параметров может быть любое число и они могут быть любого типа. Если параметров более одного, то они идут перечислением через запятую. Например, вот модернизированная функция, в которую мы в качестве параметров передаем не только номер игрока, но и количество золота. [jass] function property takes integer n, integer id returns nothing call AdjustPlayerStateBJ(n, Player(id-1), PLAYER_STATE_RESOURCE_GOLD ) endfunction [/jass] Но сколько параметров у функции, столько должно передаваться и при ее вызове. Т.е. для вызова нужно использовать строку [jass]call property(<кол-во золота> , <номер игрока>)[/jass] Ну и еще одно замечание. В большинстве языков программирования имеется разделение понятий процедура и функция. Процедура - фактически тоже самое что и функция, но она ничего не возвращает в качестве параметра. Все примеры, рассмотренные нами выше - брали или не брали параметры, но все равно ничего не возвращали. Т.е. грамотнее было бы назвать их процедурами. И переходим к последнему - самому общему варианту, когда функция что-то возвращает. Раньше мы везде писали returns nothing, но если мы хотим, чтобы функция что-то вернула, нужно указать какой-нибудь тип. Скажем returns integer (возвратить параметр типа integer). Например, если мы хотим создать функцию, которая будет возвращать нам сумму чисел от 1 до n, где n - параметр, передаваемый в функцию. Функция выглядит так: [jass]function summa takes integer n returns integer local integer i local integer s set i = 1 set s = 0 loop exitwhen i > n set s = s + i set i = i + 1 endloop return s endfunction[/jass] Попытайся разобраться с действием этой функции. Внутри есть цикл, который нужен для нахождения суммы 1+2+...+n. Далее есть ключевое слово return - это одновременно команда прекратить выполнение функции, и способ заставить функцию вернуть значение. return s означает, что функция вернет значение из переменной s, т.е. искомую сумму. Как же обратиться к такой функции для ее вызова? Функции, возвращающие определенное значение, вызываются по-особому. Их можно использовать в каких-то выражениях или равенствах. К примеру, если у тебя есть глобальная переменная i, ты можешь вызвать функцию summa следующим образом: [jass]cs set udg_i = summa(10) [/jass] И тогда РЕЗУЛЬТАТ ФУНКЦИИ, то что она возвращает - сумма, будет помещен в переменную i. Или можно сделать так: [jass]cs set udg_i = summa(9+1)+2[/jass] Тогда в переменную i будет помещена сумма чисел от 1 до 10 плюс еще 2 единицы. В этом и состоит смысл функций, с возвращаемым значением. Примечания: 1.Тип данных, возвращаемых функцией должен совпадать с переменной, куда мы пишем это значение. integer-integer или real-real. 2.Вообще говоря, даже если функция возвращает значение, ее можно запустить методом [jass] call <Функция> (<параметры>)[/jass] Но понятное дело, значение функции, которое оно возвращает, не будет никуда записано. 3.Команда return представляет определенный интерес сама по себе. Если ты проверишь, во что превратится команда skip remaining actions в jass - она превратится в return. Т.е. это команда, которая прерывает исполнение функции. 4.Допускается запуск одной функции из другой. К примеру, в функцию summa можно вставить строчку Но может возникнуть ошибка. Обращаться можно только к функции, которая записана выше данной (т.е. создана раньше). Т.е. если функция property будет ниже чем summa - то обращаться к property из summa нельзя. Кстати, код в специальном месте для триггерных функций расположен ВЫШЕ чем код всех игровых триггеров. Поэтому к функциям записанным здесь можно обращаться из любого триггера. 5. Если внимательно приглядеться, то кроме функций, определенных пользователем (т.е. тобой) существуют еще и встроенные функции. К примеру, глянь команду На этом о функциях пока все. Прикрепления:
1874404.png
(10.4 Kb)
Ползут 2 пирожка.
Первый: Я тебя щас трахну. Второй: Почему? Первый: Потому что я с яйцами :D |
H_A_PK#754 | Тема: Досчитаем до 1 000 000 0003285
Ползут 2 пирожка.
Первый: Я тебя щас трахну. Второй: Почему? Первый: Потому что я с яйцами :D |
H_A_PK#755 | Тема: Цвет модерам.У вас недостаточно прав для просмотра данного сообщения.
Ползут 2 пирожка.
Первый: Я тебя щас трахну. Второй: Почему? Первый: Потому что я с яйцами :D |
H_A_PK#756 | Тема: Ternox 4.0У вас недостаточно прав для просмотра данного сообщения.
Ползут 2 пирожка.
Первый: Я тебя щас трахну. Второй: Почему? Первый: Потому что я с яйцами :D |
H_A_PK#757 | Тема: Ваши вопросы по Jass'yQuote (Omni174) Я его написал,в переменную загнал,ошибок не выдает,но не воскрешает когда пишу 1,т.е. по условию. Code local unit Revive_Hero = udg_myHero call ReviveHero(Revive_Hero,0,0,true) Ползут 2 пирожка.
Первый: Я тебя щас трахну. Второй: Почему? Первый: Потому что я с яйцами :D |
H_A_PK#758 | Тема: Ваши вопросы по Jass'yQuote (Omni174) H_A_PK, Спасибо работает!)) Мой первый код на джассе)) Не за что Ползут 2 пирожка.
Первый: Я тебя щас трахну. Второй: Почему? Первый: Потому что я с яйцами :D |
H_A_PK#759 | Тема: Ваши вопросы по Jass'yQuote (Omni174) H_A_PK, Где-нибудь можно узнать все эти коды на customScript?) Jass craft почитай эту статью тык там всё написано о функциях и как писать свои функции Добавлено (24.08.11, 22:59) Quote (SunCreep) bllizard bj,но я не помню ссылки. blizzard.j и common.j Ползут 2 пирожка.
Первый: Я тебя щас трахну. Второй: Почему? Первый: Потому что я с яйцами :D |
H_A_PK#760 | Тема: Ваши вопросы по Jass'yQuote (Omni174) Чем вскрыть? Д.крафтом? блокнотом пробовал ? Quote (Omni174) Не понял Оо Code native ReviveHero takes unit whichHero, real x, real y, boolean doEyecandy returns boolean воскрешает героя чтобы вызвать пишим так Code call ReviveHero(<юнит>, <число по Х>, <число по Y>, <true или false>) <число по Х>, <число по Y> - координаты где воскресить героя <юнит> - герой которого воскрешаем <true или false> - true показать граффу воскрешения, false - нет Ползут 2 пирожка.
Первый: Я тебя щас трахну. Второй: Почему? Первый: Потому что я с яйцами :D |
H_A_PK#761 | Тема: НовостиВы же журналюги, в конце концов хватит ограничивать себя новостями одними. Берите интервью у известных модъмейкеров, таких как ADOLF и прочии. Берите интервью у лидеров самых ожидаемых русских проектов
Ползут 2 пирожка.
Первый: Я тебя щас трахну. Второй: Почему? Первый: Потому что я с яйцами :D |
H_A_PK#762 | Тема: Ваши вопросы по Jass'yцитирую из этой статьи ! тык
Code function <ИМЯ ФУНКЦИИ> takes <ПЕРЕЧЕНЬ ПАРАМЕТРОВ, которые функция БЕРЕТ> returns <тип параметра, который функция ВОЗВРАЩАЕТ> ... <ПЕРЕЧЕНЬ ДЕЙСТВИЙ ФУНКЦИИ> ... endfunction обращаем внимание на Code function <ИМЯ ФУНКЦИИ> takes <ПЕРЕЧЕНЬ ПАРАМЕТРОВ, которые функция БЕРЕТ> returns <тип параметра, который функция ВОЗВРАЩАЕТ> видим после слова takes <ПЕРЕЧЕНЬ ПАРАМЕТРОВ, которые функция БЕРЕТ>. Это и есть (<юнит>, <число по Х>, <число по Y>, <true или false>) которые я извлёк из Quote (H_A_PK) native ReviveHero takes unit whichHero, real x, real y, boolean doEyecandy returns boolean Ползут 2 пирожка.
Первый: Я тебя щас трахну. Второй: Почему? Первый: Потому что я с яйцами :D |
|
H_A_PK#764 | Тема: Досчитаем до 1 000 000 0003295
Ползут 2 пирожка.
Первый: Я тебя щас трахну. Второй: Почему? Первый: Потому что я с яйцами :D |
H_A_PK#765 | Тема: The astral murdererMurador,
Code SetCameraBoundsToRect Ползут 2 пирожка.
Первый: Я тебя щас трахну. Второй: Почему? Первый: Потому что я с яйцами :D |
| ||