Вопросы по JASS кодированию - Страница 2 - Wc3-Maps Форум













[ Главная · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 2 из 5«12345»
Модератор форума: Strateg, Melissa 
Wc3-Maps Форум » Раздел для картостроителей » GUI / Jass » Вопросы по JASS кодированию
Вопросы по JASS кодированию
-
NevermoreДата: Пятница, 16-12-2011, 13:20:33 | Сообщение # 21
GUI IMBA

загрузка наград ...
Группа: Проверенные
Сообщений: 210
Репутация: 338
Статус: Не на сайте
Quote
Nevermore, ГУИшный вариант тоже безутечен.


Я просто начал Jass изучать и хочу научится.
Плавающий текст получился ток не могу понять зачем это

Quote
call SetTextTagPermanent(texttag01,false) // блокировка текста
 
-
CaturnДата: Пятница, 16-12-2011, 13:25:17 | Сообщение # 22
Темный рыцарь

загрузка наград ...
Группа: Проверенные
Сообщений: 217
Репутация: 128
Статус: Не на сайте
Nevermore, для фиксирования текста.
Мои статьи:
1. http://wc3-maps.ru/forum/78-1507-1
Школа тригеростроения, ГУИ.
http://wc3-maps.ru/forum/99-1471-1
 
-
wetalqДата: Пятница, 16-12-2011, 14:23:07 | Сообщение # 23
Король Мёртвых

загрузка наград ...
Группа: V.I.P.
Сообщений: 1263
Репутация: 1572
Статус: Не на сайте
Nevermore, в триггерах, есть Коментарии у кожного триггера, там и описано что делает эта функция)

Покупка предметов через способность
 
-
NevermoreДата: Воскресенье, 01-01-2012, 17:50:02 | Сообщение # 24
GUI IMBA

загрузка наград ...
Группа: Проверенные
Сообщений: 210
Репутация: 338
Статус: Не на сайте
1 Вопрос:
вот такая вещь не знаю че ей надо



помогите убрать.

2 Вопрос:
У меня не запускаются карты в JNGP почему?
Прикрепления: 8937349.jpg(67Kb)
 
-
crymchaninДата: Понедельник, 16-01-2012, 20:37:51 | Сообщение # 25
Раб

загрузка наград ...
Группа: Пользователи
Сообщений: 21
Репутация: 4
Статус: Не на сайте
BJ функции не используют по нескольким причинам:
1) Возможны утечки (которые не всегда возникают из-за криворукости Близов, а и в связи с некоторыми техническими причинами)
2) Что-бы сократить, упростить код

Но, некоторые функции BJ могут быть очень полезны. Например: ModuloInteger, ModuloReal, bjAbs, TriggerRegisterAnyUnitEventBJ и т.д.
 
-
wetalqДата: Понедельник, 16-01-2012, 21:36:53 | Сообщение # 26
Король Мёртвых

загрузка наград ...
Группа: V.I.P.
Сообщений: 1263
Репутация: 1572
Статус: Не на сайте
Nevermore,
1) та кнопочка для красоты, ей никто не проверяет.
для проверки жми ctrl + S (сохранения карты)

2) не открывает потому что в пути к карте не должна быть кирилица ( русские буквы )
мапу кинь на диск D к примеру, и открывай от туда, и все будет ок


Покупка предметов через способность
 
-
wetalqДата: Вторник, 17-01-2012, 01:17:17 | Сообщение # 27
Король Мёртвых

загрузка наград ...
Группа: V.I.P.
Сообщений: 1263
Репутация: 1572
Статус: Не на сайте
Quote (Nevermore)
вот такая вещь не знаю че ей надо


если заменить на
Code
local trigger t = CreateTrigger(  )
то не будет писать там ошибку


Покупка предметов через способность
 
-
NevermoreДата: Пятница, 20-01-2012, 12:16:22 | Сообщение # 28
GUI IMBA

загрузка наград ...
Группа: Проверенные
Сообщений: 210
Репутация: 338
Статус: Не на сайте
Жассеры проверить Суть добовляет спелл герою на 5 сек. но неудаляет почему так?
Code
function BattleStations_Conditions takes nothing returns boolean
     return GetSpellAbilityId() == 'A00I'
endfunction

function TimerOFF takes nothing returns nothing
     local timer BSt = GetExpiredTimer()
     local unit BSc
     call UnitRemoveAbility(LoadUnitHandle(udg_hash,GetHandleId(BSt),1),'A00K')
     call UnitRemoveAbility(LoadUnitHandle(udg_hash,GetHandleId(BSt),1),'A00J')
     call FlushChildHashtable(udg_hash,GetHandleId(BSt))
     call DestroyTimer(BSt)
     set BSc = null
endfunction

function BattleStations_Actions takes nothing returns nothing
    local unit BSc = GetSpellAbilityUnit()
    local timer BSt = CreateTimer()
    call UnitAddAbility(BSc,'A00K')
    call UnitAddAbility(BSc,'A00J')
    call SetUnitAbilityLevel(BSc,'A00J',(GetUnitAbilityLevel(BSc,'A00I')))
    call SaveUnitHandle(udg_hash,GetHandleId(BSt),1,BSc)
    call TimerStart(BSt,5.0,false,function TimerOFF)
    call DestroyTimer(BSt)
    set BSt = null
    set BSc = null
endfunction

//===========================================================================
function InitTrig_Battle_Stations takes nothing returns nothing
     local trigger BStrg = CreateTrigger(  )
     local integer BSi
     set BSi = 0
loop   
     call TriggerRegisterPlayerUnitEvent(BStrg,Player(BSi),EVENT_PLAYER_UNIT_SPELL_EFFECT,null)  
     set BSi = BSi + 1  
     exitwhen BSi == 12  
endloop
     call TriggerAddCondition(BStrg, Condition( function BattleStations_Conditions ) )
     call TriggerAddAction(BStrg, function BattleStations_Actions )
endfunction
 
-
wetalqДата: Пятница, 20-01-2012, 17:24:12 | Сообщение # 29
Король Мёртвых

загрузка наград ...
Группа: V.I.P.
Сообщений: 1263
Репутация: 1572
Статус: Не на сайте
Nevermore
во первых перед тем как таймер уничтожить его нужно остановить)
во вторых хеш таблица инициализирована ?
зачем ты создал переменную BSc и не назначил в неё никого ?


Покупка предметов через способность
 
-
NevermoreДата: Пятница, 20-01-2012, 17:47:30 | Сообщение # 30
GUI IMBA

загрузка наград ...
Группа: Проверенные
Сообщений: 210
Репутация: 338
Статус: Не на сайте
Code
во первых перед тем как таймер уничтожить его нужно остановить)


об этом я не знал )
Code
во вторых хеш таблица инициализирована ?


АгА
Code
зачем ты создал переменную BSc и не назначил в неё никого ?


я вписал туда сначало LoadUnitHandle и не получилось и забыл удалить(

Добавлено (20/01/2012, 17:47:30)
---------------------------------------------
Вот зделал что ты написал поставил PauseTimer

Code
function TimerOFF takes nothing returns nothing
     local timer BSt = GetExpiredTimer()
     local unit BSc = LoadUnitHandle(udg_hash,GetHandleId(BSt),1)
     call UnitRemoveAbility(BSc,'A00K')
     call UnitRemoveAbility(BSc,'A00J')
     call FlushChildHashtable(udg_hash,GetHandleId(BSt))
     call PauseTimer(BSt)
     call DestroyTimer(BSt)
     set BSc = null
endfunction

function BattleStations_Actions takes nothing returns nothing
    local unit BSc = GetSpellAbilityUnit()
    local timer BSt = CreateTimer()
    call UnitAddAbility(BSc,'A00K')
    call UnitAddAbility(BSc,'A00J')
    call SetUnitAbilityLevel(BSc,'A00J',(GetUnitAbilityLevel(BSc,'A00I')))
    call SaveUnitHandle(udg_hash,GetHandleId(BSt),1,BSc)
    call TimerStart(BSt,5.0,false,function TimerOFF)
    call PauseTimer(BSt)
    call DestroyTimer(BSt)
    set BSt = null
    set BSc = null
endfunction


все= не хочет работать
 
-
wetalqДата: Пятница, 20-01-2012, 17:47:47 | Сообщение # 31
Король Мёртвых

загрузка наград ...
Группа: V.I.P.
Сообщений: 1263
Репутация: 1572
Статус: Не на сайте
Quote (Nevermore)
 local unit BSc = GetSpellAbilityUnit()


замени на GetTriggeringUnit


Покупка предметов через способность
 
-
NevermoreДата: Пятница, 20-01-2012, 18:18:34 | Сообщение # 32
GUI IMBA

загрузка наград ...
Группа: Проверенные
Сообщений: 210
Репутация: 338
Статус: Не на сайте
Code
замени на GetTriggeringUnit

GetTriggerUnit()

не робит что не так-то
 
-
crymchaninДата: Пятница, 20-01-2012, 22:08:17 | Сообщение # 33
Раб

загрузка наград ...
Группа: Пользователи
Сообщений: 21
Репутация: 4
Статус: Не на сайте
1)
Quote (Nevermore)
loop   
     call TriggerRegisterPlayerUnitEvent(BStrg,Player(BSi),EVENT_PLAYER_UNIT_SPELL_EFFECT,null)  
     set BSi = BSi + 1  
     exitwhen BSi == 12  
endloop

Не проще-ли использовать BJ функцию и избавиться от кучи повторяющегося кода во всех триггерах с таким событием?

2)
Quote (wetalq)
во первых перед тем как таймер уничтожить его нужно остановить)

Бред.

3)
Quote (wetalq)
замени на GetTriggeringUnit

Нужно заменять если спелл без указания цели (например Рев)

4)
Quote (Nevermore)
    call TimerStart(BSt,5.0,false,function TimerOFF)
    call PauseTimer(BSt)
    call DestroyTimer(BSt)

После запуска таймера, ты его тут-же ставишь на паузу и после этого сразу-же уничтожаешь, как тут что-то может работать?
 
-
wetalqДата: Пятница, 20-01-2012, 23:30:24 | Сообщение # 34
Король Мёртвых

загрузка наград ...
Группа: V.I.P.
Сообщений: 1263
Репутация: 1572
Статус: Не на сайте
Quote (crymchanin)
Quote (wetalq)
Quote
во первых перед тем как таймер уничтожить его нужно остановить)


Бред.


нет, не бред.


Покупка предметов через способность
 
-
crymchaninДата: Суббота, 21-01-2012, 00:58:03 | Сообщение # 35
Раб

загрузка наград ...
Группа: Пользователи
Сообщений: 21
Репутация: 4
Статус: Не на сайте
Quote (wetalq)
нет, не бред.

обоснуй
 
-
NevermoreДата: Суббота, 21-01-2012, 07:17:00 | Сообщение # 36
GUI IMBA

загрузка наград ...
Группа: Проверенные
Сообщений: 210
Репутация: 338
Статус: Не на сайте
Code
4)  
Quote (Nevermore)
     call TimerStart(BSt,5.0,false,function TimerOFF)  
     call PauseTimer(BSt)  
     call DestroyTimer(BSt)  

  После запуска таймера, ты его тут-же ставишь на паузу и после этого сразу-же уничтожаешь, как тут что-то может работать?


А как удалить local BSt(CreateTimer) через 5 секунд?

Добавлено (21/01/2012, 07:17:00)
---------------------------------------------
вот делал по примеру с war3info

Code
function Trig_Fire_Conditions takes nothing returns boolean  
      return (GetSpellAbilityId() == 'A000') == true  
  endfunction  

  function Group_Filter takes nothing returns boolean      
      local unit u = GetTriggerUnit()  
      local unit fu = GetFilterUnit()  
        
      if (IsUnitEnemy(fu, GetOwningPlayer(u))) then  
          call UnitDamageTarget(u, fu, 300., true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS)  
      endif  
        
      set u = null  
      set fu = null  
      return false  
  endfunction  
        
  function Timer takes nothing returns nothing  
      local timer t = GetExpiredTimer()  
      call DestroyEffect(LoadEffectHandle(udg_hash, GetHandleId(t), 2))  
      call FlushChildHashtable(udg_hash, GetHandleId(t))  
      call DestroyTimer(t)  
  endfunction  
        
  function Trig_Fire_Actions takes nothing returns nothing  
      local timer t = CreateTimer()  
      local group g = CreateGroup()  
      local filterfunc filter = Filter(function Group_Filter)  
      call SaveEffectHandle(udg_hash, GetHandleId(t), 2, AddSpecialEffect("Abilities\\Spells\\Human\\FlameStrike\\FlameStrike1.mdl", GetSpellTargetX(), GetSpellTargetY()))  
      call GroupEnumUnitsInRange(g, GetSpellTargetX(), GetSpellTargetY(), 350., filter)  
      call TimerStart(t, 3.5, false, function Timer)  
      call DestroyFilter(filter)  
      call DestroyGroup(g)  
      call DestroyTimer(t)  
      set t = null  
      set filter = null  
      set g = null  
  endfunction  

  //===========================================================================  
  function InitTrig_Fire takes nothing returns nothing  
      set gg_trg_Fire = CreateTrigger(  )  
      call TriggerRegisterAnyUnitEventBJ( gg_trg_Fire, EVENT_PLAYER_UNIT_SPELL_EFFECT )  
      call TriggerAddCondition( gg_trg_Fire, Condition( function Trig_Fire_Conditions ) )  
      call TriggerAddAction( gg_trg_Fire, function Trig_Fire_Actions )  
  endfunction
 
-
crymchaninДата: Суббота, 21-01-2012, 10:08:11 | Сообщение # 37
Раб

загрузка наград ...
Группа: Пользователи
Сообщений: 21
Репутация: 4
Статус: Не на сайте
Code

    function Timer takes nothing returns nothing    
        local timer t = GetExpiredTimer()    
        call DestroyEffect(LoadEffectHandle(udg_hash, GetHandleId(t), 2))    
        call FlushChildHashtable(udg_hash, GetHandleId(t))    
        call DestroyTimer(t)    
    endfunction

Он тут удаляется, по истечению 3.5 сек.
Code
function Trig_Fire_Actions takes nothing returns nothing    
        local timer t = CreateTimer()    
        local group g = CreateGroup()    
        local filterfunc filter = Filter(function Group_Filter)    
        call SaveEffectHandle(udg_hash, GetHandleId(t), 2, AddSpecialEffect("Abilities\\Spells\\Human\\FlameStrike\\FlameStrike1.mdl", GetSpellTargetX(), GetSpellTargetY()))    
        call GroupEnumUnitsInRange(g, GetSpellTargetX(), GetSpellTargetY(), 350., filter)    
        call TimerStart(t, 3.5, false, function Timer)    
        call DestroyFilter(filter)    
        call DestroyGroup(g)    
        call DestroyTimer(t)    
        set t = null    
        set filter = null    
        set g = null    
    endfunction

Здесь
Code
call DestroyTimer(t)
не нужен вообще. Возьми для проверки вставь в функцию Timer вывод текстового сообщения на экран и увидишь, что никакое текстовое сообщение не отобразится, так-как таймер не срабатывает (он уничтожен).
 
-
wetalqДата: Суббота, 21-01-2012, 10:18:21 | Сообщение # 38
Король Мёртвых

загрузка наград ...
Группа: V.I.P.
Сообщений: 1263
Репутация: 1572
Статус: Не на сайте
Quote (Nevermore)
вот делал по примеру с war3info


спел Тузика ?


Покупка предметов через способность
 
-
CaturnДата: Суббота, 21-01-2012, 13:51:25 | Сообщение # 39
Темный рыцарь

загрузка наград ...
Группа: Проверенные
Сообщений: 217
Репутация: 128
Статус: Не на сайте
Ну и баян вы развели. Эх жалко вчера я вырубился рано)
Мои статьи:
1. http://wc3-maps.ru/forum/78-1507-1
Школа тригеростроения, ГУИ.
http://wc3-maps.ru/forum/99-1471-1
 
-
crymchaninДата: Суббота, 21-01-2012, 13:55:45 | Сообщение # 40
Раб

загрузка наград ...
Группа: Пользователи
Сообщений: 21
Репутация: 4
Статус: Не на сайте
Quote (Caturn)
Ну и баян вы развели.

Баян?

З.Ы. Залазь в скайп
 
Wc3-Maps Форум » Раздел для картостроителей » GUI / Jass » Вопросы по JASS кодированию
Страница 2 из 5«12345»
Поиск:
Рейтинг@Mail.ru
Яндекс.Метрика

Copyright © 2010-2017
Вакансии :: Контакты
Мобильная версия сайта
chat