XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
Lipen:
function PhysStrikesMechanic takes unit uCaster, unit uTarg, integer Id, integer aid returns integer
...
	if aid == 'A000' then ...
	if aid == 'A001' then ...
...
endfunction

function YourFunc...
	local integer aid = GetSpellAbilityId()

	call PhysStrikesMechanic(uCaster, uTarg, Id, aid)
endfunction
Можешь ещё добавить BJDebugMsg(I2S(GetSpellAbilityId())) и посмотреть в обоих случаях - с ретурном и без.
я так делал. не работало.
Hatsume_Hate добавил:
Hanabishi:
Lipen, чепуха, GetSpellAbilityId() == 'A000' прескрасно работает, делал так лично очень много раз.
Hatsume_Hate, если ты говоришь, что без ретурна точно работает, то это определённо заскок вара и дело не в коде. Сделай без ретурна через глобалки (для мгновенных действий без разницы будет).
как то стремно через глобалки делать, ведь вероятность артефакта будет =С
да и не подходят как то глобалки в эту ситуацию, надо ретурнить, а ретурн гробит все
Hatsume_Hate добавил:
вот допустим ситуация, 5 "следопытов" под бафом "при уклонении от вражеской атаки уклонение увеличивается на 100", и бьют друг друга. Один уклонится, сработает глобалка, а в это время в другом месте 5 воинов колбасятся с бафом "при парировании вражеской атаки...", на уклонение будет ид 1 на парир 2, и станет так что при уклоне сработает 1 и тут же сделает 2 другой, и вся цепочка сфейлится
Старый 15.04.2012, 11:05
adic3x

offline
Опыт: 108,439
Активность:
Есть такая конструкция - elseif :
local integer i = GetSpellAbilityId ()
if (i == 'A000') then
    //
elseif (i == 'A001') then
    //
else
    //
endif
return не может влиять на работу кода, расположенного перед ним.
И можно пояснить, что именно значит "не работает"?
Старый 15.04.2012, 11:34
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
ADOLF:
Есть такая конструкция - elseif :
local integer i = GetSpellAbilityId ()
if (i == 'A000') then
    //
elseif (i == 'A001') then
    //
else
    //
endif
return не может влиять на работу кода, расположенного перед ним.
И можно пояснить, что именно значит "не работает"?
буду знать =) просто не помнил как это пишется)
так а как тогда обьяснить что есть ретурн есть, то код не работает, если нету, то работает
Старый 15.04.2012, 11:36
adic3x

offline
Опыт: 108,439
Активность:
так а как тогда обьяснить что есть ретурн есть, то код не работает, если нету, то работает
Пояснить более конретно. Что именно значит "не работает"? Покажите кстати, как Вы эту функцию вызываете.
ADOLF добавил:
set Dispersion = (((GetUnitAbilityLevel(uCaster,'A00E') * 80) / 100) * 20)
В каком классе сейчас учат сокращать примеры?
set Dispersion = GetUnitAbilityLevel (uCaster,'A00E') * 16
Старый 15.04.2012, 11:41
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
ADOLF:
так а как тогда обьяснить что есть ретурн есть, то код не работает, если нету, то работает
Пояснить более конретно. Что именно значит "не работает"? Покажите кстати, как Вы эту функцию вызываете.
ADOLF добавил:
set Dispersion = (((GetUnitAbilityLevel(uCaster,'A00E') * 80) / 100) * 20)
В каком классе сейчас учат сокращать примеры?
set Dispersion = GetUnitAbilityLevel (uCaster,'A00E') * 16
не работает = ничего не происходит.
я незнаю математику с четвертого класса до 12)
call PhysStrikesMechanic (uCaster, uTarg, Id)
Старый 15.04.2012, 12:15
adic3x

offline
Опыт: 108,439
Активность:
Ну а отладочная печать что то выдает?
Старый 15.04.2012, 14:10
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
Hatsume_Hate, отформатируй код, а то нифига не видно
Старый 15.04.2012, 14:13
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
ADOLF:
Ну а отладочная печать что то выдает?
сейчас не дома, но когда последний раз я делал отладочные сообщения то по крайней мере начиная от
if GetSpellAbilityId() == 'A000' then
ничего не шло, мб и даже сразу функция не работала, скоро вернусь домой и смогу сказать точнее
alexprey:
Hatsume_Hate, отформатируй код, а то нифига не видно
в каком смысле отформатировать) там и так комменты напиханы
Старый 15.04.2012, 14:18
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
function PhysStrikesMechanic takes unit uCaster, unit uTarg, integer Id  returns integer
--локалки--
call DisplayTextToForce( GetPlayersAll(), "ololo" ) //не показывает -> ничего дальше не идет
    // Two-handed weapon dispersion (20%)
 if GetSpellAbilityId() == 'A000' then
...
return Id
endfunction
call PhysStrikesMechanic (uCaster, uTarg, Id)
Старый 15.04.2012, 18:55
adic3x

offline
Опыт: 108,439
Активность:
call BJDebugMsg ("00")
call PhysStrikesMechanic (uCaster, uTarg, Id)
Старый 15.04.2012, 22:03
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
ADOLF:
call BJDebugMsg ("00")
call PhysStrikesMechanic (uCaster, uTarg, Id)
от
Миниатюры
Кликните на картинку для увеличения
Название:  DBG.JPG
Просмотров: 15
Размер:  106.4 Кбайт  
Старый 15.04.2012, 22:26
Doc

offline
Опыт: 63,163
Активность:
Значит что-то не так с передаваемыми юнитами.
Старый 16.04.2012, 01:32
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
Doc:
Значит что-то не так с передаваемыми юнитами.
да все норм. Ставишь ретурн - не работает. Убираешь - все ок
Старый 16.04.2012, 03:09
adic3x

offline
Опыт: 108,439
Активность:
call BJDebugMsg (I2S(GetSpellAbilityId()))
call PhysStrikesMechanic (uCaster, uTarg, Id)
Старый 16.04.2012, 11:09
ScorpioT1000
Работаем
online
Опыт: отключен
Может поток грохается?
Старый 16.04.2012, 12:13
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
ADOLF:
call BJDebugMsg (I2S(GetSpellAbilityId()))
call PhysStrikesMechanic (uCaster, uTarg, Id)
Миниатюры
Кликните на картинку для увеличения
Название:  6543.JPG
Просмотров: 10
Размер:  106.4 Кбайт  
Старый 16.04.2012, 14:07
ScorpioT1000
Работаем
online
Опыт: отключен
call BJDebugMsg (I2S(GetSpellAbilityId()-'A000'))
call PhysStrikesMechanic (uCaster, uTarg, Id)
должно давать ноль)
Старый 16.04.2012, 14:21
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
ScorpioT1000:
call BJDebugMsg (I2S(GetSpellAbilityId()-'A000'))
call PhysStrikesMechanic (uCaster, uTarg, Id)
должно давать ноль)
моя абилка которую он юзает имеет ид A002
и оно дает 0
Старый 16.04.2012, 14:34
adic3x

offline
Опыт: 108,439
Активность:
    set text = null
call BJDebugMsg("!")
    return Id
    endfunction
Старый 16.04.2012, 17:50
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
ADOLF:
    set text = null
call BJDebugMsg("!")
    return Id
    endfunction
функция же вообще не запускается. Она даже если сразу после локалок поставить ничего не выведет.
Старый 16.04.2012, 18:57
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 14:48.