Сейчас 17:42:45 Пятница, 22 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
[Вопрос] порядок в Jass
Volk9503Дата: Понедельник, 26 Декабря 2011, 10:52:57 | Сообщение # 1
7 уровень
Группа: Проверенные
Сообщений: 311
Награды: 0
Репутация: 13
Блокировки:
Правильно ли я понимаю куда что пишется
Code

function Trig_w_Actions takes nothing returns nothing
// Действия триггера
// если нежно условия то  
// if Condition  then
// Действия, если условие выполнено
//endif
endfunction

//===========================================================================
function InitTrig_w takes nothing returns nothing
     set gg_trg_w = CreateTrigger(  )
//События
     call TriggerAddAction( gg_trg_w, function Trig_w_Actions )
endfunction

Если что неправильно напишите в таком же виде как правильно
и еще вопрос можноли то что написано до //======================================== и после поменять местами


Системы на заказ писать в л.с.
RGhost — файлообменник
 

Ty3uKДата: Понедельник, 26 Декабря 2011, 11:01:53 | Сообщение # 2
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Volk9503, в целом прав, но условия лучше выносит в отдельный Condition

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

HexingДата: Понедельник, 26 Декабря 2011, 11:39:06 | Сообщение # 3
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Quote (Ty3uK)
Volk9503, в целом прав, но условия лучше выносит в отдельный Condition

не лучше


 

Ty3uKДата: Понедельник, 26 Декабря 2011, 11:41:25 | Сообщение # 4
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Hexing, пруф?

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

HexingДата: Понедельник, 26 Декабря 2011, 11:52:24 | Сообщение # 5
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Quote (Ty3uK)
Hexing, пруф?

если ты не запруфишь своё нет смысла пруфить моё ибо это и будет пруф моего => я прав ^_^
ну или докажи обратное

Добавлено (26 Декабрь 2011, 11:52:24)
---------------------------------------------
я аргументирую лишним вызовом Condition() которая хз какую бяку делает, а проще в актионсах проверять, а дальше иесли условие ок каллим другую функцию(в твоём случаи актионс) которая продолжит поток(кк и в твоем случае) но мы избежим этого Condition + вызова TriggerAddCondition + его дестроя(-1 обьект от хэндла, наверное) => делать как я лучше


 

Ty3uKДата: Понедельник, 26 Декабря 2011, 11:56:59 | Сообщение # 6
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Hexing, чтобы проверить в действиях - тебе надо перед этим насоздавать локалок (для своего же удобства). А это, прости меня, уйма лишних действий

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

HexingДата: Понедельник, 26 Декабря 2011, 12:21:33 | Сообщение # 7
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Ty3uK, ничего не надо, не ври
по сути это является тем же кондитионом и ничем не отличается только не нужно делать return и кучу лишних действий для регистрации кондишина


 

Ty3uKДата: Понедельник, 26 Декабря 2011, 12:24:11 | Сообщение # 8
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
А теперь давай подумаем, умный человек:
Ты пишешь Конд у действия. Перед этим ты создаешь локалки для своего удобства, которые идут в память. Но если конд не прошел, то и локалки не используются. И обнуляются. В итоге: выделил и засрал память без причины, совершил лишние действия (обнулил). Пруф. Если нет - докажи обратное


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек


Сообщение отредактировал Ty3uK - Понедельник, 26 Декабря 2011, 12:24:22
 

SirNikolasДата: Понедельник, 26 Декабря 2011, 12:36:52 | Сообщение # 9
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Ty3uK, Hexing имеет в виду вот такую конструкцию:
Code
function Trig_test_Actions takes nothing returns nothing
     //...
endfunction

function Trig_test_Conditions takes nothing returns nothing
     if true /*Условия*/ then
         call Trig_test_Actions()
     endif
endfunction

function InitTrig_test takes nothing returns nothing
     local trigger trig = CreateTrigger()
     //События
     call TriggerAddAction(trig, function Trig_test_Conditions)
     set trig = null
endfunction

Добавлено (26 Декабрь 2011, 12:36:52)
---------------------------------------------
Кстати, у IceFrog'а так и сделано. Хотя использовать его код как пруф - мягко говоря, нелогично.


 

HexingДата: Понедельник, 26 Декабря 2011, 12:52:40 | Сообщение # 10
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Quote (SirNikolas)
Кстати, у IceFrog'а так и сделано. Хотя использовать его код как пруф - мягко говоря, нелогично.

не знал что фрог делает также, я делаю так всегда ибо это оптимальнее и эффективнее


 

Ty3uKДата: Понедельник, 26 Декабря 2011, 13:56:35 | Сообщение # 11
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Hexing, нефиг оскорблять меня, окда?
Научись давать пруф без оскорблений, ибо Николас же смог разъяснить доступно и без оскорблений.


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

Volk9503Дата: Понедельник, 26 Декабря 2011, 13:58:38 | Сообщение # 12
7 уровень
Группа: Проверенные
Сообщений: 311
Награды: 0
Репутация: 13
Блокировки:

где ошибка

Добавлено (26 Декабрь 2011, 13:58:38)
---------------------------------------------
а точней почему


Системы на заказ писать в л.с.
RGhost — файлообменник
 

HexingДата: Понедельник, 26 Декабря 2011, 14:17:13 | Сообщение # 13
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
убери первое true и приготовься к замечанию за оффтоп
Quote (Ty3uK)
Hexing, нефиг оскорблять меня, окда?
Научись давать пруф без оскорблений, ибо Николас же смог разъяснить доступно и без оскорблений.

извини, просто мы с тобой очень обидчивы и быстро заводимся... вот для таких случаев и нужны сэры николасы ^_^


 

SirNikolasДата: Понедельник, 26 Декабря 2011, 14:19:25 | Сообщение # 14
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Ошибка в выделенной строке. Потому что true я написал для примера, нужные условия следует писать вместо него, а не после.

 

Volk9503Дата: Понедельник, 26 Декабря 2011, 14:24:24 | Сообщение # 15
7 уровень
Группа: Проверенные
Сообщений: 311
Награды: 0
Репутация: 13
Блокировки:
уже вижу сразу просто не заметил что нету да поставил

Системы на заказ писать в л.с.
RGhost — файлообменник


Сообщение отредактировал Volk9503 - Понедельник, 26 Декабря 2011, 14:25:44
 

SirNikolasДата: Понедельник, 26 Декабря 2011, 14:24:36 | Сообщение # 16
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
А, нет, вру. IceFrog функцию условий прогоняет в boolexpr:
Code
function Trig_test_Conditions takes nothing returns boolean
     if true then
         call Trig_test_Actions()
     endif
     return false
endfunction

function InitTrig_test takes nothing returns nothing
     local trigger trig = CreateTrigger()
     //События
     call TriggerAddCondition(trig, Condition(function Trig_test_Conditions))
     set trig = null
endfunction


 

HexingДата: Понедельник, 26 Декабря 2011, 14:31:14 | Сообщение # 17
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Quote (SirNikolas)
function Trig_test_Conditions takes nothing returns boolean
if true then
call Trig_test_Actions()
endif
return false
endfunction

это же бред


 

SirNikolasДата: Понедельник, 26 Декабря 2011, 14:41:12 | Сообщение # 18
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Ну, некоторые говорят, что условия быстрее действий.

На примере событий входа в регион и юза спеллов лично я бы составил базу данных, которая принимает object sender (rect/integer) и вызывает что надо через ExecuteFunc(...). Вообще для каждого события достаточно одного триггера.


 

HexingДата: Понедельник, 26 Декабря 2011, 14:48:25 | Сообщение # 19
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Quote (SirNikolas)
На примере событий входа в регион и юза спеллов лично я бы составил базу данных, которая принимает object sender (rect/integer) и вызывает что надо через ExecuteFunc(...).

немного не понял, тоесть на все ректы один триггер? а как ты определишь какой рект издает ивент?


 

Ty3uKДата: Понедельник, 26 Декабря 2011, 15:11:45 | Сообщение # 20
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Hexing,


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

SirNikolasДата: Понедельник, 26 Декабря 2011, 15:26:31 | Сообщение # 21
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Hexing)
немного не понял, то есть на все ректы один триггер? а как ты определишь, какой рект издает ивент?
Code
include "cj_types.j"
include "cj_types_ex.j"

//! runtextmacro DeclareDictionary("handle","string","true","false","HandleComparison","8191")

Dictionary_handle_string RegionDict

void Trig_RegionEvents_Actions() {
     ExecuteFunc(RegionDict[GetTriggeringRegion()])
}

void InitTrig_RegionEvents() {
     trigger trig = new trigger
     region r = new region
     RegionDict = Dictionary_handle_string.Create()
     RegionAddRect(r, gg_rct_Region_000)
     TriggerRegisterEnterRegionEvent(trig, r, null)
     RegionDict[r] = "Trig_EnterRegion_000_Actions"
     r = new region
     RegionAddRect(r, gg_rct_Region_001)
     TriggerRegisterEnterRegionEvent(trig, r, null)
     RegionDict[r] = "Trig_EnterRegion_001_Actions"
     //...
     RegionDict.Rebuild()
     TriggerAddAction(trig, function Trig_RegionEvents_Actions)
     trig = null
     r = null
}




Сообщение отредактировал SirNikolas - Понедельник, 26 Декабря 2011, 15:36:13
 

HexingДата: Понедельник, 26 Декабря 2011, 15:34:19 | Сообщение # 22
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Quote (SirNikolas)
GetTriggeringRegion()

вот оно что
кстати
Quote (SirNikolas)
include "cj_types_ex.j"

делает код трудным для восприятия, ну или это мне с непривычки...

Добавлено (26 Декабрь 2011, 15:34:19)
---------------------------------------------
кстати,

Quote (SirNikolas)
RegionDict[GetTriggeringRegion()]

это вы используете тот ваш словарь, раз передаете хэндл?


 

SirNikolasДата: Понедельник, 26 Декабря 2011, 15:37:18 | Сообщение # 23
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Ну да.
Quote (SirNikolas)
//! runtextmacro DeclareDictionary("handle","string","true","false","HandleComparison","8191")

Dictionary_handle_string RegionDict


 

  • Страница 1 из 1
  • 1
Поиск:

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