Записи участника (H_A_PK) - Форум


Правила форума ·

Результаты поиска

H_A_PK

#31 | Тема: Последний победитель!
нужно создать две группы игроков, в одну занести всех кроме одного, о вторую группу занести вампира игрока. И при смерти того или иного игрока удалять его из одной группы и доболять в другую. Группы между собой враги.Понятно ?=)
Ползут 2 пирожка.
Первый: Я тебя щас трахну.
Второй: Почему?
Первый: Потому что я с яйцами :D

H_A_PK

#36 | Тема: H_A_PK
Фото:
Имя: Дима
Другие ники: N_A_P
Город: Нижний-Тагил
Род занятий: Учёба и работа и прочая мутодень
Проекты: нету
О себе:
Люблю: Спать, девушек, вкусно поесть, играть, курить, дуть, бухать, маму, молоко, рисовать картину кишёк привязаных к люстре, выбегать в падик и орать "Мир тесен", маслать, рыбалку, рыбачить, сидеть с удочкой, гонять на мотоцикле, гонять в любом другом смысле, ржать люблю очень.
Не Люблю: не высыпаться, учиться, быть без денег, когда почан чихает, когда товарисч коворяется в носу ну и так далее
Из кинчиках все любимые, что мне нравятся и все новинке в 3D :3
Поиграть там люблю в Gothic 1, 2, 3, 4 ; Risen; The Elder Scrolls III; IV; ну и варьку ещё
Послушать повыкладывать мозги на пол от krec Гуф Наггано Баста весь и весьма стандартно же, что это рэп ну нимного другого
Ползут 2 пирожка.
Первый: Я тебя щас трахну.
Второй: Почему?
Первый: Потому что я с яйцами :D

H_A_PK

#38 | Тема: Введение в Jass
Прежде чем приступить к изучения азам жасс,советую скачать эти софты:

И вообще что такое Jass ?
Жасс - это событийно-ориентированный скриптовый язык программирования, созданный компанией Blizzard Entertainment. Используется в играх, таких как Warcraft и Starcraft. Язык функций, функции из common.j и blizzard.j , а точнее на нативки и бж.
Все действия в нём проводятся именно в функции
какое бы не было оно должно проводится именно под блоком функции.
Вот вы когда-нибудь ковенвертировали тригер в жасс, не ? Чтож давайте попробуем!
Редактор триггеров создоём триггер. Далее правка/конвентировать в текс.
Тот у кого JassCraft, да пажалуйста, File/New/Templates/New Tigger.
Мы должны увидеть это:

вариант JassCraft:

[jass]function Trig_NewTrigger_Conditions takes nothing returns boolean

return
endfunction

function Trig_NewTrigger_Actions takes nothing returns nothing

endfunction

//==== Init Trigger NewTrigger ====
function InitTrig_NewTrigger takes nothing returns nothing
set gg_trg_NewTrigger = CreateTrigger()
//call TriggerRegister__(gg_trg_NewTrigger, )
call TriggerAddCondition(gg_trg_NewTrigger, Condition(function Trig_NewTrigger_Conditions))
call TriggerAddAction(gg_trg_NewTrigger, function Trig_NewTrigger_Actions)
endfunction[/jass]
вариант WorldEditor:

[jass]function Trig_NewTrigger_Actions takes nothing returns nothing
endfunction

//================================
function InitTrig_NewTrigger takes nothing returns nothing
set gg_trg_NewTrigger = CreateTrigger()
call TriggerAddAction(gg_trg_NewTrigger, function Trig_NewTrigger_Actions)
endfunction[/jass]
И без слов понятно, что

[jass]function Trig_NewTrigger_Actions takes nothing returns nothing
endfunction[/jass]
Функция в которой могут присутствовать наши действия как это выгледило в триггерах под блоком "Действия". Слово "function" должно присутствовать всегда перед блоком функции, на то что дальше этого слова можете не вникать на следуйщих уроках мы подробнее разберём, что к чему и с чем едят это. "gg_trg_NewTrigger" Это название нашего триггера , а точнее "NewTrigger", у вас оно может быть другое. А вот "gg_trg_" это присутствует всегда перед названием т.к. триггер наш создан путём "Создать триггер".
Думаю, то что дальше присутствует в коде выглядит непонятно и странно. Для этого давайте изучим некоторые операторы в нашем Jass'e

Существующие блоки

[jass]function //с этим мы уже познакомились
endfunction //обозначает конец блока функции
takes // аргументы запрашивающая функция
returns // тип переменой должный возвратится после обработки функцией
loop // цикл
endloop // конец блока цикла
if // если
then // конец строки если, внимание должна быть написано обязательно после вашего условия в той же строке через пробел
endif // конец блока условий
elseif // иначе с условием
else / просто иначе
type // тип переменной
extends // от чего наследуется
constant //наверное все не раз слышали об const это те переменые, которые принемают одно значение и никогда не миняются
native // нативная функция
globals // объявление глобальной переменной
endglobals //конец блока глобалок[/jass]
Операторы работающие в блоке

[jass]call // Вызов функции, напротив call нужно написать имя функции например Trig_NewTrigger_Actions() или DoNothing()
return // если функция возвращает параметр то это строка просто необхадима
set // присвоить значение переменной напротив данного оператора
exitwhen // строка обозначающая условия выхода из цикла
local // объявление локальной переменной, напротив тип и потом имя "local unit u = null"
not // знак отрицания юзается в условиях
and // логическая И
or // логическая ИЛИ[/jass]
Значение типа "пусто" , " да ", "нет".

[jass]null //пусто
true //да
false // нет [/jass]
булевая необходимы для сравнения wink
Дополнительные операторы и простейшии(основные) типы переменных

[jass]nothing // ничего
array // массив пример "local unit array u"
string // строка
integer //целочисленая вроде 32 бит
real // реальное число
jass // напротив функция
boolean // логическое "пусто" , " да ", "нет".[/jass]
Остальные типы переменных с ними мы познакомимся позже
[jass]
hashtable
handle
event
player
widget
unit
destructable
item
ability
buff
force
group
trigger
triggercondition
triggeraction
timer
location
region
rect
boolexpr
sound
conditionfunc
filterfunc
unitpool
itempool
race
alliancetype
racepreference
gamestate
igamestate
fgamestate
playerstate
playerscore
playergameresult
unitstate
aidifficulty
eventid
gameevent
playerevent
playerunitevent
unitevent
limitop
widgetevent
dialogevent
unittype
gamespeed
gamedifficulty
gametype
mapflag
mapvisibility
mapsetting
mapdensity
mapcontrol
playerslotstate
volumegroup
camerafield
camerasetup
playercolor
placement
startlocprio
raritycontrol
blendmode
texmapflags
effect
effecttype
weathereffect
terraindeformation
fogstate
fogmodifie r
dialog
but ton
quest
questitem
defeatcondition
timerdialog
leaderboard
multiboard
multiboarditem
trackable
gamecache
version
itemtype
texttag
attacktype
damagetype
weapontyp e
soundtype
lightning
pathingtype
image
ubersplat
playerscore[/jass]
Мы с вами видем, что операторов не так уж и мало, что и вообщем-то даёт нам наши с вами способности картостроя в вакрафте ;). А теперь снова гляним на наш триггер

[jass]
function Trig_NewTrigger_Actions takes nothing returns nothing
endfunction

//================================
function InitTrig_NewTrigger takes nothing returns nothing
set gg_trg_NewTrigger = CreateTrigger()
call TriggerAddAction(gg_trg_NewTrigger, function Trig_NewTrigger_Actions)
endfunction
[/jass]
Картина начинает раскрываться
"InitTrig_" Состоит перед названием функции иницилизации нашего с вами триггера. Согласно war3map.j-коду, компилируемому WE-средствами, он вызывает поочерёдную инициализацию триггеров карты, а функции-инициализаторы понимаются под приставкой InitTrig_Название
[jass]
set gg_trg_NewTrigger = CreateTrigger()
[/jass]

просто присваевает глобальной переменной типа trigger её создание вот и всё.
[jass]
call TriggerAddAction(gg_trg_NewTrigger, function Trig_NewTrigger_Actions)
[/jass]
Вызывает функцию добавления действия в триггер "Trig_NewTrigger_Actions".
[jass]
endfunction
[/jass]
Конец блока
[jass]
//================================
[/jass]
Вызывает недоверие , она такая противная, поэтому я её всегда срезаю. Вообщем "//" озночает коментарий после которых можно писать, что душе угодно только в одно строчку ! Например "//Ололо Масер нуб".

Ну-с думаю на этот урок достаточно.
Ползут 2 пирожка.
Первый: Я тебя щас трахну.
Второй: Почему?
Первый: Потому что я с яйцами :D

H_A_PK

#39 | Тема: Введение в Jass
Итак, после ознакомления с азами Jass копнём чуть поглубже и разберём два вида переменных.
В Jass существует 2 вида переменных - локальные и глобальные. Разберём плюсы и минусы каждого из них.

Локальные:
+ Сохраняют своё значение после ожиданий.
+ Создаются уникально при каждом запуске триггера (не перезаписываются после второго запуска триггера).
+ Легко регулируемы.
+ MUI.

- Действуют только в пределах функции, где их задали.

Глобальные:
+ Действуют во всех триггерах карты.

+ MPI (Хоть и массивным способом)

- Есть риск потерять значение после ожидания (Если триггер запустится во время ожидания, переменная перезапишется).
- Каждый раз нужно писать приставку udg_
- Немного неудобны по сравнению с локальными.


Лучше по возможности отказываться от глобальных переменных и использовать только локальные (Исключение - хеш-таблицы), т.к. они дают гарантию того, что значение сохранится.
Как объявить локальную переменную? Очень просто:

[jass]local <тип> <название>[/jass]

Пример:

[jass]local integer i[/jass]
Это будет целочисленная под названием i. Вводя название, мы обращаемся к целочисленной переменной.
Кое-когда объявляют переменные и тут же задают им значение:

[jass]local <тип> <название> = <значение>[/jass]
Пример:

[jass]local integer i = 0[/jass]
Тогда наша целочисленная будет равна 0.
Можно задать её значение не сразу, а по ходу кода. Делают это так:

[jass]set <название> = <значение>[/jass]
Пример:

[jass]set i = 0[/jass]

Подобным образом задают глобальные переменные, но добавляют приставку udg_

[jass]set udg_<название> = <значение>[/jass]
Пример:

[jass]set udg_Integer = 0[/jass]
.
Глобальные переменные создаются в Редакторе переменных, локальные же - только в функциях непосредственно.
Переменные бывают утечные (те, которые наследуются от типа handle), их надо обнулять:

[jass]set <название> = null[/jass]
Неутечные типы переменных: boolean, integer, real. Запомните их.

By [DUOS] aka Simpler
Прикрепления: 400kg.cfg (3.9 Kb)

H_A_PK

#40 | Тема: Введение в Jass
Начинки функций. common.j и blizzard.j



Сегодня мы рассмотрим функции, а точнее их начинки и научимся определять к какому типу принадлежит функция.
Существует два вида функций, а - это native и bj.
native - не долго думая, зная английский язык слово native означает "родная" т.е. функция родная движку варкрафта, она не имеют начинки, хотя нет имеет, но не в виде жасса, а ассемблера.


Пример нативки:

bj - а именно blizzard.j функции имеющие начинку.
Пример:

Начинка - это внутренности функции, те действия которые она вызывает в последствии вызова самой функции. Так что нам будет проще избавить начинку от это функции, но не всегда это проще;)

Но не каждая функция с начинкой имеет в конце названия такое клеймо как BJ.
Начинка в каждой функции своя, будто тонна кода или вызов одной лишь функции или тонна кода которая также имеет начинку.
Как узнать начинку той или иной функции ? Жаль, но обыкновенный ВЕ нам в этом не поможет. Необходим JNGP ну или JassCraft, можно открыть в блокноте файл в папке blizzard.j.
Покажу на примере JassCraft'a:
Выберем интересующую нам функцию из Native List и снизу мы увидим её начинку, если начинка начинается со слова "native"
функция нативная и начинки мы так и не увидим, а если с "function" то имеет и собственно мы её и видим.

В JNGP можно узнать начинку, зажав ctrl и щёлкнуть по интересующей нами функции, ну или открыть лист функций и выбрать там.
Ну увидели мы начинку и что дальше ? А дальше я покажу вам на примере как их разворачивать!
Для примера я разверну эту функцию:
[jass]function action takes nothing returns nothing
local unit u = <ваш юнит>
local location loc = <ваша точка>
local location loc2 = <ваша точка>
call SetUnitPositionLocFacingLocBJ(u,loc,loc2)
endfunction[/jass]
Для начала нам нужно узнать начинку функции SetUnitPositionLocFacingLocBJ.
А вот и она:
[jass]function SetUnitPositionLocFacingLocBJ takes unit whichUnit, location loc, location lookAt returns nothing
call SetUnitPositionLoc(whichUnit, loc)
call SetUnitFacing(whichUnit, AngleBetweenPoints(loc, lookAt))
endfunction[/jass]
Разберём всё подробно т.к. для вас это кажется тучей буков и не больше:

function SetUnitPositionLocFacingLocBJ takes unit whichUnit, location loc, location lookAt returns nothing
call SetUnitPositionLoc(whichUnit, loc)
call SetUnitFacing(whichUnit, AngleBetweenPoints(loc, lookAt))

endfunction

То что выделено оранжевым мы копируем и вставляем в нашу функцию
[jass] function action takes nothing returns nothing
local unit u = <ваш юнит>
local location loc = <ваша точка>
local location loc2 = <ваша точка>
call SetUnitPositionLoc(whichUnit, loc)
call SetUnitFacing(whichUnit, AngleBetweenPoints(loc, lookAt))
endfunction[/jass]
Ага, а дальше под ставим все значения для этого нам следует ещё раз заглянуть в начинку.
function SetUnitPositionLocFacingLocBJ takes unit whichUnit, location loc, location lookAt returns nothing

обозначив все аргументы нам будет не сложно подставить их все в нашу развёртку
[jass] call SetUnitPositionLoc(u, loc)
call SetUnitFacing(u, AngleBetweenPoints(loc, loc2))[/jass]
Ну и в конце концов всё выглядит вот так вот:
[jass]function action takes nothing returns nothing
local unit u = <ваш юнит>
local location loc = <ваша точка>
local location loc2 = <ваша точка>
call SetUnitPositionLoc(u, loc)
call SetUnitFacing(u, AngleBetweenPoints(loc, loc2))
call RemiveLocation(loc)
call RemoveLocation(loc2)
set u = null
set loc = null
set loc2 = null
endfunction[/jass]
Есть одно НО, функцию AngleBetweenPoints тоже стоит развернуть, что мы сейчас и сделаем.

[jass]function AngleBetweenPoints takes location locA, location locB returns real
return bj_RADTODEG * Atan2(GetLocationY(locB) - GetLocationY(locA), GetLocationX(locB) - GetLocationX(locA))
endfunction[/jass]

Ага! Берём это:

[jass]bj_RADTODEG * Atan2(GetLocationY(locB) - GetLocationY(locA), GetLocationX(locB) - GetLocationX(locA))[/jass]

И начинаем подставлять туда наши аргументы

[jass]bj_RADTODEG * Atan2(GetLocationY(loc2) - GetLocationY(loc), GetLocationX(loc2) - GetLocationX(loc))[/jass]

А лучше взять это в локалку:

[jass]local real r = bj_RADTODEG * Atan2(GetLocationY(loc2) - GetLocationY(loc), GetLocationX(loc2) - GetLocationX(loc))[/jass]

Ну и наш код приобретёт немного другой вид:
Её начинка:
[jass]function action takes nothing returns nothing
local unit u = <ваш юнит>
local location loc = <ваша точка>
local location loc2 = <ваша точка>
local real r = bj_RADTODEG * Atan2(GetLocationY(loc2) - GetLocationY(loc), GetLocationX(loc2) - GetLocationX(loc))
call SetUnitPositionLoc(u, loc)
call SetUnitFacing(u, r)
call RemiveLocation(loc)
call RemoveLocation(loc2)
set u = null
set loc = null
set loc2 = null
endfunction[/jass]
Так - то!
Также список нативных функций находится в файле common.j, а список бж функций в файле blizzard.j.
Прикрепления: 8351946.cfg (3.9 Kb)
Ползут 2 пирожка.
Первый: Я тебя щас трахну.
Второй: Почему?
Первый: Потому что я с яйцами :D

H_A_PK

#41 | Тема: Отчеты Модераторов Закрепленных За Подфорумами
недельный отчёт:

  • Закрыты не нужные темы ответы на вопросы, в которых, даны.
  • Произведена помощь ньюфагам в триггерах
  • Введение в жасс уже висит, и вопросы к ниму тоже.
  • Несколько несоответствующих тем перенесены в библиотеку
  • Залил жассКрафт
Ползут 2 пирожка.
Первый: Я тебя щас трахну.
Второй: Почему?
Первый: Потому что я с яйцами :D

H_A_PK

#42 | Тема: H_A_PK
Quote (M@}{)
H_A_PK, меньше в лесу с компом теряйся...

что бы это могло значить dry
Quote (M@}{)
Позитиффф в человеке на уровне гавнослива Нано, ооочень высокий

позитифф это хорошо говорила мне бабушка, чем быть унылой какашкой sad
Quote (MElkiyO_o)
Крутой чел, ведет веселый а не здоровый образ жизни

Quote (MElkiyO_o)
Тоже рыбачить люблю, помню это весной вместо школы с друзьями на рыбалку пошли, а друг кальян взял=)Рыбачу, кальян дую а рядом значит девочка сидит.......

спасибо MElkiyO_o, ну я на рыбалку люблю ходить с 3х литровой сиськой пивандрия biggrin
Quote (nikikin)
H_A_PK, наркоман)

nikikin, *никикинфейс*
Сообщение отредактировал H_A_PK - Вт, 05.07.11, 18:54
Ползут 2 пирожка.
Первый: Я тебя щас трахну.
Второй: Почему?
Первый: Потому что я с яйцами :D

H_A_PK

#43 | Тема: H_A_PK
Quote (MElkiyO_o)
А ты че туда только бухать идеш? Побухать и в парке можно

Нет) Просто когда есть пиво рыба сама выползает на берег за ним )
Ползут 2 пирожка.
Первый: Я тебя щас трахну.
Второй: Почему?
Первый: Потому что я с яйцами :D

H_A_PK

#44 | Тема: H_A_PK
Quote (nikikin)
H_A_PK, ты зло))

ЗЛО - замечательный ловкий оченьумный))

Добавлено (06.07.11, 19:14)
---------------------------------------------

Quote (MElkiyO_o)
Слышал поговорку-На словах ты рыбак а на деле мудак))) Эт мой друг, я за 5 часов 24 рыбы поймал а он две)))

слышал) , да не, я и сам порой приношу трофеи домой, ну один раз вообще двух лещей по 1 кг выловил)
Ползут 2 пирожка.
Первый: Я тебя щас трахну.
Второй: Почему?
Первый: Потому что я с яйцами :D
Поиск: