Сейчас 03:05:34 Четверг, 25 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 10
  • «
  • 1
  • 2
  • 3
  • 4
  • 9
  • 10
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [ВАЖНО] Jass: Полезные функции
[ВАЖНО] Jass: Полезные функции
lawsonДата: Пятница, 25 Февраля 2011, 23:56:17 | Сообщение # 26
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Не знаю мне так удобней - если в триггере это требуеться.

Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Пятница, 25 Февраля 2011, 23:56:36
 

FaionДата: Суббота, 26 Февраля 2011, 11:22:26 | Сообщение # 27
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
Quote (lawson)
function ExExecuteFunc takes string text returns nothing
call ExecuteFunc(text)
endfunction

А теперь скажи, зачем ты продублировал функцию, которую можно вызвать на прямую?


О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас.
My Project: Nindogatari
MAL
 

rixt7956Дата: Суббота, 26 Февраля 2011, 13:00:14 | Сообщение # 28
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
Я это у него и спросил :)

Добавлено (26-02-2011, 13:00)
---------------------------------------------
Вот функция определения угла между координатами, выведено из бж

Code
function AngleXY takes real х1, real y1,real x2, real y2 returns real
return 57.2957795*Atan2(y2-y1,x2-x1)
endfunction
 

lawsonДата: Суббота, 26 Февраля 2011, 13:15:36 | Сообщение # 29
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
А в BJ что это за функция?

Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

FaionДата: Суббота, 26 Февраля 2011, 13:54:33 | Сообщение # 30
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
BlizzardJass, это то во что преобразовывается Гуи.

О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас.
My Project: Nindogatari
MAL
 

lawsonДата: Суббота, 26 Февраля 2011, 14:04:33 | Сообщение # 31
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Да это я знаю я спрашивал как выглядит вот эта функция в BJ

Добавлено (26-02-2011, 14:04)
---------------------------------------------
Я тоже тогда вывел одну функцию из BJ
Это функция в замен функции UnitHastItemOfType только без утечек.

Code
function ItemFromUnit takes unit u, integer id returns boolean
local integer index = 0
loop
exitwhen index > 5
if id == GetItemTypeId(UnitItemInSlot(u, index)) then
return true
endif
set index = index + 1
endloop
return false
endfunction


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Суббота, 26 Февраля 2011, 14:08:28
 

rixt7956Дата: Воскресенье, 27 Февраля 2011, 11:33:54 | Сообщение # 32
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
Code
real ConvertReal(real min,real max,real r)
{
whilenot r<max
{
r-=max
}
whilenot r>min
{
r+=max
}
return r
}

Возвращает число в указанном диапозоне.
Если не понятно то вот на обычном джас :)
Code
function ConvertReal takes real min,real max,real r returns real
loop
exitwhen r<max
set r=r-max
endloop
loop
exitwhen r>min
set r=r+max
endloop
return r
endfunction


Сообщение отредактировал rixt7956 - Воскресенье, 27 Февраля 2011, 12:54:32
 

lawsonДата: Воскресенье, 27 Февраля 2011, 13:12:07 | Сообщение # 33
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Прикольно придумал, но зачем это где использовать?

Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

rixt7956Дата: Воскресенье, 27 Февраля 2011, 13:29:11 | Сообщение # 34
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
При движение по окружности или в спирали, или в рекошете :)
 

SirNikolasДата: Воскресенье, 27 Февраля 2011, 19:25:53 | Сообщение # 35
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Code
define {
      DamagePhysical(u, w, a) = UnitDamageTarget(u, w, a, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS)
      DamagePure(u, w, a) = UnitDamageTarget(u, w, a, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_UNIVERSAL, WEAPON_TYPE_WHOKNOWS)
      DamageMagic(u, w, a) = UnitDamageTarget(u, w, a, true, false, ATTACK_TYPE_MAGIC, DAMAGE_TYPE_MAGIC, WEAPON_TYPE_WHOKNOWS)
}
Нанесение физического, чистого и магического урона соответственно.

rixt7956, спасибо, что заметил, торопился.




Сообщение отредактировал SirNikolas - Понедельник, 28 Февраля 2011, 13:52:37
 

rixt7956Дата: Воскресенье, 27 Февраля 2011, 20:10:20 | Сообщение # 36
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
SirNikolas, в двух последних значениях макросов, в функциях не все аргументы (я про true, и false) :)
 

lawsonДата: Воскресенье, 27 Февраля 2011, 22:57:09 | Сообщение # 37
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (rixt7956)
SirNikolas

Не ну так не интересно тут же тема JASS а не cJASS давайте писать полезные функ-ции на понятном БОЛЬШИНСТВУ языке!


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

rixt7956Дата: Воскресенье, 27 Февраля 2011, 23:22:14 | Сообщение # 38
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
А что там не понятного? :)

Добавлено (27-02-2011, 23:22)
---------------------------------------------
SirNikolas, только у меня к тебе вопрос, не легче вызывать функцию на прямую, ведь в твоих функциях, меняется только 2 константы, и я думаю их не так уж и трудно выучить. :)

 

lawsonДата: Воскресенье, 27 Февраля 2011, 23:59:03 | Сообщение # 39
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Функция для тех кому хочеться выводить сообщения только для одного игрока или для его союзников.
Простенькая но взамен DisplayTextToForce()
Code
function DTP takes player p, string text, boolean b returns nothing
local integer i = 0
if (b == false) then
call DisplayTextToPlayer(p, 0, 0, text)  
else
loop
exitwhen i > bj_MAX_PLAYERS
if (IsPlayerAlly(Player(i), p)) then
call DisplayTextToPlayer(Player(i), 0, 0, text)  
endif
set i = i + 1
endloop
endif
endfunction

Находу придумал что сделать. :)

Добавлено (27-02-2011, 23:43)
---------------------------------------------

Quote (SirNikolas)
SirNikolas

Действительно легче напрямую все равно там все в одной строке записываеться.

Добавлено (27-02-2011, 23:59)
---------------------------------------------
Еще одна.

Code
call SetPlayerState(Player(l), PLAYER_STATE_GIVES_BOUNTY, 1)

Эта функция аналог StPlayerFlagBJ только она не вызывает две ненужных функции.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

rixt7956Дата: Понедельник, 28 Февраля 2011, 12:42:06 | Сообщение # 40
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
Quote (SirNikolas)
Code
Code
define {
       DamagePhysical(u, w, a) = UnitDamageTarget(u, w, a, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS)
       DamagePure(u, w, a) = UnitDamageTarget(u, w, a, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_UNIVERSAL, WEAPON_TYPE_WHOKNOWS)
       DamageMagic(u, w, a) = UnitDamageTarget(u, w, a, ATTACK_TYPE_MAGIC, DAMAGE_TYPE_MAGIC, WEAPON_TYPE_WHOKNOWS)
}

Нанесение физического, чистого и магического урона соответственно.

Quote (lawson)
Не ну так не интересно тут же тема JASS а не cJASS давайте писать полезные функ-ции на понятном БОЛЬШИНСТВУ языке!



Сообщение отредактировал rixt7956 - Понедельник, 28 Февраля 2011, 12:42:23
 

lawsonДата: Понедельник, 28 Февраля 2011, 13:11:46 | Сообщение # 41
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (rixt7956)
rixt7956

Да то что он написал на сJASS мне понятно.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

SirNikolasДата: Понедельник, 28 Февраля 2011, 13:57:28 | Сообщение # 42
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (rixt7956)
не легче вызывать функцию напрямую, ведь в твоих функциях меняется только 2 константы, и, я думаю, их не так уж и трудно выучить. :)
cJASS сделан для того, чтобы было удобней писать. К тому же, при сохранении все приведется к тому виду, что написан справа от знака равенства, это не будет считаться вызовом функции.


 

FkoFFДата: Понедельник, 28 Февраля 2011, 20:33:34 | Сообщение # 43
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Quote (lawson)
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Items\\AIem\\AIemTarget.mdl", юнит, "origin"))

это как бы вызов одной функции и уж не ты точно его изобрел.


 

lawsonДата: Понедельник, 28 Февраля 2011, 22:05:05 | Сообщение # 44
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (FkoFF)
и уж не ты точно его изобрел

Я не знаю кто до меня его изобрел и что теперь мне им не пользоваться? потому что не я ее изобрел?


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

FkoFFДата: Понедельник, 28 Февраля 2011, 22:24:41 | Сообщение # 45
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Quote (lawson)
Я не знаю кто до меня его изобрел и что теперь мне им не пользоваться? потому что не я ее изобрел?

не постить как "свое" и уж тем более не как отдельную "полезную функцию"


 

romaN-1998Дата: Понедельник, 28 Февраля 2011, 23:02:46 | Сообщение # 46
10 уровень
Группа: Проверенные
Сообщений: 1368
Награды: 0
Репутация: 10
Блокировки:
Ну вот... что-то попробовал:
Code
function XY takes nothing returns nothing
local real X = GetWidgetX(юнит)
local real Y = GetWidgetY(юнит)
if X <= MinX or X >= MaxX then or Y <= MinY or Y >= MaxY
call SetUnitX(юнит,GetWidgetX(юнит2)
call SetUnitY(юнит,GetWidgetY(юнит 2)
endif
endfunction

Что-то типо этого (писал без редактора..), вообщем функция определяет позицию юнита, если он за границами карты, телепортировать к юниту 2. Может понадобится, если использовать SetUnitX/Y..

Добавлено (28-02-2011, 23:02)
---------------------------------------------
Поправьте, если чё не так.

 

FkoFFДата: Понедельник, 28 Февраля 2011, 23:19:56 | Сообщение # 47
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
romaN-1998, функция бессмысленная. Надо проверять не юнита а точку и не проводить выход за пределы карты. То есть нужная функция будет выглядеть примерно вот так:
Code

globals
real udg_MinX = GetRectMinX(GetPlayableMapArea)
real udg_MinY = GetRectMinY(GetPlayableMapArea)
real udg_MaxX = GetRectMaxX(GetPlayableMapArea)
real udg_MaxY = GetRectMaxY(GetPlayableMapArea)
endglobals

function CME takes real x, real y returns boolean
return x > udg_MinX and x < udg_MaxX and y > udg_MinY and y < udg_MaxY
endfunction

в последствии во все триггеры с движением юнита (а лучше в функцию по смещению юнита) следует вбить условие

Code
if CME(PolarX,PolarY)==true then
move unit
endif




Сообщение отредактировал FkoFF - Понедельник, 28 Февраля 2011, 23:20:16
 

lawsonДата: Вторник, 01 Марта 2011, 13:45:12 | Сообщение # 48
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (FkoFF)
как отдельную "полезную функцию"

Я знаю это какбы больше к оптимизации карты.

Добавлено (01-03-2011, 13:45)
---------------------------------------------

Quote (FkoFF)
globals real udg_MinX = GetRectMinX(GetPlayableMapArea) real udg_MinY = GetRectMinY(GetPlayableMapArea) real udg_MaxX = GetRectMaxX(GetPlayableMapArea) real udg_MaxY = GetRectMaxY(GetPlayableMapArea) endglobals

Ни че не понимаю зачем в глобальный приставка udg_?


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

rixt7956Дата: Вторник, 01 Марта 2011, 14:00:23 | Сообщение # 49
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
FkoFF, Я понял бы если ты создал глобалки в редакторе переменных, но
Quote (FkoFF)
globals
real udg_MinX = GetRectMinX(GetPlayableMapArea)
real udg_MinY = GetRectMinY(GetPlayableMapArea)
real udg_MaxX = GetRectMaxX(GetPlayableMapArea)
real udg_MaxY = GetRectMaxY(GetPlayableMapArea)
endglobals
Не являеться ли извращением над своим кодом, временем, и своими руками :)


Сообщение отредактировал rixt7956 - Вторник, 01 Марта 2011, 14:00:48
 

FkoFFДата: Среда, 02 Марта 2011, 21:07:09 | Сообщение # 50
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Quote (rixt7956)
Не являеться ли извращением над своим кодом, временем, и своими руками

нет, мне так было проще написать какие глобалки как используются. Вообще можно даже константы сделать с этими минхмаксх

Добавлено (02-03-2011, 21:07)
---------------------------------------------

Quote (lawson)
Я знаю это какбы больше к оптимизации карты.

как бы это как раз то что ты выложил, только сделанное нормальным путем. В твоей функции основная проблема - не возможно откатить юнита на предыдущую позицию. Моя же ф-я дает эту возможность


 

Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [ВАЖНО] Jass: Полезные функции
  • Страница 2 из 10
  • «
  • 1
  • 2
  • 3
  • 4
  • 9
  • 10
  • »
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz