|
|
|
|
[ВАЖНО] Общалка кодеров
|
|
Ty3uK | Дата: Суббота, 27 Июля 2013, 10:21:11 | Сообщение # 276 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Триггерно
|
|
|
|
Naturekid | Дата: Четверг, 08 Августа 2013, 17:09:28 | Сообщение # 277 |
Группа: Заблокированные
Сообщений: 4982
Награды: 3
Репутация: 3347
Блокировки:
| как быть с наркоманским вейтом в роликах? он каждый раз разной величины, сначала подумал, что это я рачело, но спецом проверил на новой карте - вейт 0.45 сек оборачивается 4 или 5 разными сроками ожидания. Если обычно можно заменить таймером, то что делать в ролике?
|
|
|
|
NightCatty | Дата: Четверг, 08 Августа 2013, 17:28:41 | Сообщение # 278 |
6 уровень
Группа: Проверенные
Сообщений: 201
Награды: 0
Репутация: 21
Блокировки:
| Naturekid, вместо вейта ставишь даммика, делаешь ему таймед лайф на n времени, заводишь вечный цикл от 1 до 10 где for loop a = 1 каждый раз задаешь, либо CS loop endloop, и в цикле проверяешь - если юнит мёртв, for loop a = 10, либо CS exitwhen(true) такой вот костыль
Тщетно бытиё! :c
|
|
|
|
SirNikolas | Дата: Четверг, 08 Августа 2013, 17:38:51 | Сообщение # 279 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Цитата (Naturekid) как быть с наркоманским вейтом в роликах? Наркоманскому wait'у уже не помочь.Цитата (Naturekid) Если обычно можно заменить таймером, то что делать в ролике? Ну а что мешает в ролике использовать таймер?
|
|
|
|
Naturekid | Дата: Четверг, 08 Августа 2013, 19:32:39 | Сообщение # 280 |
Группа: Заблокированные
Сообщений: 4982
Награды: 3
Репутация: 3347
Блокировки:
| Цитата (SirNikolas) Ну а что мешает в ролике использовать таймер? ага куда? Добавлено (08 Августа 2013, 19:32:39) --------------------------------------------- вообщем я в старом клипике хочу строку караоке норм сделать по слогам и естесственно у меня хрень получается, иногда вейты в этом действии короче и текст отстаёт на 6-7 сек иногда спешит на столько же. Уродство получается.
|
|
|
|
SirNikolas | Дата: Пятница, 09 Августа 2013, 09:05:44 | Сообщение # 281 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| 0.00 seconds and Не ждать?
|
|
|
|
Naturekid | Дата: Пятница, 09 Августа 2013, 15:47:11 | Сообщение # 282 |
Группа: Заблокированные
Сообщений: 4982
Награды: 3
Репутация: 3347
Блокировки:
| не ждать - влияет на пропуск синематики ескейпом вроде. насчёт 0.00 ... ну проверю, но если соль такая же как у вейта обычного - то никакой разницы что 4ю5 что таймер 4ю5 +0.00
|
|
|
|
SirNikolas | Дата: Пятница, 09 Августа 2013, 18:26:11 | Сообщение # 283 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Цитата (Naturekid) не ждать - влияет на пропуск синематики ескейпом вроде. Пара вырезок из Blizzard.j:Код //=========================================================================== // Display a text message to a Player Group with an accompanying sound, // portrait, speech indicator, and all that good stuff. // - Query duration of sound // - Play sound // - Display text message for duration // - Display animating portrait for duration // - Display a speech indicator for the unit // - Ping the minimap // function TransmissionFromUnitWithNameBJ takes force toForce, unit whichUnit, string unitName, sound soundHandle, string message, integer timeType, real timeVal, boolean wait returns nothing call TryInitCinematicBehaviorBJ()
// Ensure that the time value is non-negative. set timeVal = RMaxBJ(timeVal, 0)
set bj_lastTransmissionDuration = GetTransmissionDuration(soundHandle, timeType, timeVal) set bj_lastPlayedSound = soundHandle
if (IsPlayerInForce(GetLocalPlayer(), toForce)) then // Use only local code (no net traffic) within this block to avoid desyncs.
if (whichUnit == null) then // If the unit reference is invalid, send the transmission from the center of the map with no portrait. call DoTransmissionBasicsXYBJ(0, PLAYER_COLOR_RED, 0, 0, soundHandle, unitName, message, bj_lastTransmissionDuration) else call DoTransmissionBasicsXYBJ(GetUnitTypeId(whichUnit), GetPlayerColor(GetOwningPlayer(whichUnit)), GetUnitX(whichUnit), GetUnitY(whichUnit), soundHandle, unitName, message, bj_lastTransmissionDuration) if (not IsUnitHidden(whichUnit)) then call UnitAddIndicator(whichUnit, bj_TRANSMISSION_IND_RED, bj_TRANSMISSION_IND_BLUE, bj_TRANSMISSION_IND_GREEN, bj_TRANSMISSION_IND_ALPHA) endif endif endif
if wait and (bj_lastTransmissionDuration > 0) then // call TriggerSleepAction(bj_lastTransmissionDuration) call WaitTransmissionDuration(soundHandle, timeType, timeVal) endif
endfunction Это та самая функция Transmission from unit. В ней нас интересует последний параметр - bool wait - и последний, так сказать, абзац кода. Если передано значение "Ждать" и время ожидания положительно, вызывается некая функция WaitTransmissionDuration. А вот и она сама:Код //=========================================================================== function WaitTransmissionDuration takes sound soundHandle, integer timeType, real timeVal returns nothing if (timeType == bj_TIMETYPE_SET) then // If we have a static duration wait, just perform the wait. call TriggerSleepAction(timeVal)
elseif (soundHandle == null) then // If the sound does not exist, perform a default length wait. call TriggerSleepAction(bj_NOTHING_SOUND_DURATION)
elseif (timeType == bj_TIMETYPE_SUB) then // If the transmission is cutting off the sound, wait for the sound // to be mostly finished. call WaitForSoundBJ(soundHandle, timeVal)
elseif (timeType == bj_TIMETYPE_ADD) then // If the transmission is extending beyond the sound's length, wait // for it to finish, and then wait the additional time. call WaitForSoundBJ(soundHandle, 0) call TriggerSleepAction(timeVal)
else // Unrecognized timeType - ignore. endif endfunction Как видно, ничего замысловатого, все отлично прокомментировано. Ждем нужное время в зависимости от звука, модификатора (добавить/удалить/установить) и переданного значения.
Таким образом, во всех репликах передаем "Не ждать" и заменяем ожидания таймером.
|
|
|
|
Naturekid | Дата: Пятница, 09 Августа 2013, 18:39:36 | Сообщение # 284 |
Группа: Заблокированные
Сообщений: 4982
Награды: 3
Репутация: 3347
Блокировки:
| SirNikolas, так это же здорово. классно если так. Переделаю тогды
|
|
|
|
Волчачка | Дата: Пятница, 09 Августа 2013, 23:53:28 | Сообщение # 285 |
САЙТ УМЕР ППЦ
Группа: Проверенные
Сообщений: 1361
Награды: 0
Репутация: 2165
Блокировки:
| Понаркоманил в WE. Код globals integer INT_UNIT = 0 integer INT_TEN = 1 integer INT_HUNDRED = 2 integer INT_THOUSAND = 3 endglobals
Код function mod takes integer x, integer y returns integer local integer z = x - (x / y) * y if z < 0 then set z = z + y endif return z endfunction
Код function GetUBN takes integer IsIntValue, integer IsIntModal, integer Value returns integer local integer Result = 0 //Из десятки по числу if IsIntModal == INT_TEN then if IsIntValue == INT_UNIT then set Result = mod(Value, 10) elseif (IsIntValue == INT_TEN) then set Result = (Value - mod(Value, 10)) / 10 endif endif //Из сотки по числу if IsIntModal == INT_HUNDRED then if IsIntValue == INT_UNIT then set Result = mod(mod(Value, 100), 10) elseif (IsIntValue == INT_TEN) then set Result = mod(Value, 100) / 10 elseif (IsIntValue == INT_HUNDRED) then set Result = Value / 100 endif endif //Из тысячи по числу if IsIntModal == INT_THOUSAND then if IsIntValue == INT_UNIT then set Result = mod(mod(mod(Value, 1000),100),10) elseif (IsIntValue == INT_TEN) then set Result = mod(mod(Value, 1000),100) / 10 elseif (IsIntValue == INT_HUNDRED) then set Result = mod(Value, 1000) / 100 elseif (IsIntValue == INT_THOUSAND) then set Result = Value / 1000 endif endif return Result endfunction
Код function SetUnitDamageBonus takes unit u, integer BonusDamage returns nothing
if (BonusDamage < 9 and BonusDamage >= 0) then
call SetUnitAbilityLevel( u, 'A00M', BonusDamage +1 ) call SetUnitAbilityLevel( u, 'A01Q', 0) call SetUnitAbilityLevel( u, 'A01P', 0) call SetUnitAbilityLevel( u, 'A00N', 0)
elseif( BonusDamage > 9 and BonusDamage <= 99) then
call SetUnitAbilityLevel( u, 'A00M', GetUBN( INT_UNIT, INT_TEN, BonusDamage) +1) call SetUnitAbilityLevel( u, 'A01Q', GetUBN( INT_TEN, INT_TEN, BonusDamage) +1) call SetUnitAbilityLevel( u, 'A01P', 0) call SetUnitAbilityLevel( u, 'A00N', 0)
elseif( BonusDamage > 99 and BonusDamage <= 999 ) then
call SetUnitAbilityLevel( u, 'A00M', GetUBN( INT_UNIT, INT_HUNDRED, BonusDamage) +1) call SetUnitAbilityLevel( u, 'A01Q', GetUBN( INT_TEN, INT_HUNDRED, BonusDamage) +1) call SetUnitAbilityLevel( u, 'A01P', GetUBN( INT_HUNDRED, INT_HUNDRED, BonusDamage) +1 ) call SetUnitAbilityLevel( u, 'A00N', 0)
elseif( BonusDamage > 999 and BonusDamage <= 9999 ) then
call SetUnitAbilityLevel( u, 'A00M', GetUBN( INT_UNIT, INT_THOUSAND, BonusDamage) +1) call SetUnitAbilityLevel( u, 'A01Q', GetUBN( INT_TEN, INT_THOUSAND, BonusDamage) +1) call SetUnitAbilityLevel( u, 'A01P', GetUBN( INT_HUNDRED, INT_THOUSAND, BonusDamage) +1) call SetUnitAbilityLevel( u, 'A00N', GetUBN( INT_THOUSAND, INT_THOUSAND, BonusDamage) +1) endif
endfunction
|
|
|
|
NightCatty | Дата: Суббота, 10 Августа 2013, 14:36:28 | Сообщение # 286 |
6 уровень
Группа: Проверенные
Сообщений: 201
Награды: 0
Репутация: 21
Блокировки:
| Волчачка, читал на хайве что 1 абилка с 10 уровнями вызывает больше лагов чем 10 абилок с 1 уровнем, делай выводы и вообще 2 4 8 16 лучше подходят, меньше уровней/абилок нужно, да и система проще
Тщетно бытиё! :c
|
|
|
|
Волчачка | Дата: Суббота, 10 Августа 2013, 15:46:16 | Сообщение # 287 |
САЙТ УМЕР ППЦ
Группа: Проверенные
Сообщений: 1361
Награды: 0
Репутация: 2165
Блокировки:
| NightCatty, смотря какая ещё. С бонус дамагом и бонус бронёй не будет, так, как они способности статики или же пассивки. А вот способность типа молота, или жара с уроном(пассивка живая статика) то да. И походу вы не удосужились прочитать это: Цитата (Волчачка) Понаркоманил в WE. Цитата (Волчачка) Понаркоманил в WE. Цитата (Волчачка) Понаркоманил в WE.
|
|
|
|
NightCatty | Дата: Суббота, 10 Августа 2013, 17:08:06 | Сообщение # 288 |
6 уровень
Группа: Проверенные
Сообщений: 201
Награды: 0
Репутация: 21
Блокировки:
| Цитата (Волчачка) NightCatty, смотря какая ещё. С бонус дамагом и бонус бронёй не будет, так, как они способности статики или же пассивки. А вот способность типа молота, или жара с уроном(пассивка живая статика) то да. И походу вы не удосужились прочитать это: нет же, речь о любой абилке. сам тред
Тщетно бытиё! :c
|
|
|
|
Naturekid | Дата: Суббота, 10 Августа 2013, 18:34:28 | Сообщение # 289 |
Группа: Заблокированные
Сообщений: 4982
Награды: 3
Репутация: 3347
Блокировки:
| Люди киньте ктонить чтонить про наклон юнита. Не деформацией почвы же его делать. Как сделано в CZ?
|
|
|
|
Волчачка | Дата: Суббота, 10 Августа 2013, 18:35:44 | Сообщение # 290 |
САЙТ УМЕР ППЦ
Группа: Проверенные
Сообщений: 1361
Награды: 0
Репутация: 2165
Блокировки:
| Цитата (NightCatty) нет же, речь о любой абилке. Сколько раз тестировал способности, лаг давали только те, которые делали больше действий, чем были статичными как (Броня, атака и бонусы к характеристикам, хп и мане(зы хп и ману надо к сожалению раскладывать на другие способности)) А мне интересно по другому >D Каждый делает по своему. Не бывает плохого действия выполнения, бывают либо кривые руки, либо неправильное применение. На этом закроем наш диалог.
|
|
|
|
Melodia | Дата: Понедельник, 26 Августа 2013, 01:05:45 | Сообщение # 291 |
Группа: Проверенные
Сообщений: 8026
Награды: 5
Репутация: 5051
Блокировки:
| вы послушайте ребята, что я вам сейчас скажу..... Особенно СэрНиколас. Короче. Создаются точки - point с оффсетами по формуле от точки Point[0], Далее они нигде не изменяются. В том поганом отделе триггера создавалось изображение, создавалось оно в точке Point[0]. которая задавалась по новому(она вроде много где меняется временно для разных целей) .... Хотя да, тут до меня допёрло...Хотя и я не думал даже о таком я присваиваю Point[0] = Point[нужная позиция] Ну вообщем как результат - у меня "Съедались" точки, потому и чудеса творились... А в коде у мну всё правильно было всё таки. Ну кроме вот этого... Ой лол...
|
|
|
|
SirNikolas | Дата: Понедельник, 26 Августа 2013, 07:40:01 | Сообщение # 292 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Цитата (Melodia) я присваиваю Point[0] = Point[нужная позиция] А потом ремуваешь?
|
|
|
|
Melodia | Дата: Четверг, 26 Сентября 2013, 14:16:23 | Сообщение # 293 |
Группа: Проверенные
Сообщений: 8026
Награды: 5
Репутация: 5051
Блокировки:
| Цитата (SirNikolas) А потом ремуваешь? именно... как всегда самая лолистическая ошибка оказалась...Добавлено (26 Сентября 2013, 14:00:36) --------------------------------------------- Есть ли аналог set unit x для декорации(разрушаемого)? Добавлено (26 Сентября 2013, 14:16:23) --------------------------------------------- И триггерный поворот тоже надо (((
|
|
|
|
Волчачка | Дата: Четверг, 26 Сентября 2013, 15:37:16 | Сообщение # 294 |
САЙТ УМЕР ППЦ
Группа: Проверенные
Сообщений: 1361
Награды: 0
Репутация: 2165
Блокировки:
| Цитата (Melodia) Есть ли аналог set unit x для декорации(разрушаемого)?
Добавлено (26 Сентября 2013, 14:16:23) --------------------------------------------- И триггерный поворот тоже надо ((( Такого нет.
Если был бы, то был бы SetWidgetX() или SetDestructableX() А так существует только получение позиции декорации.. Угол поворота декорации нельзя узнать.
Сообщение отредактировал Волчачка - Четверг, 26 Сентября 2013, 15:49:06 |
|
|
|
WarMasterDi | Дата: Четверг, 26 Сентября 2013, 22:06:06 | Сообщение # 295 |
5 уровень
Группа: Проверенные
Сообщений: 147
Награды: 0
Репутация: 103
Блокировки:
|
Сообщение отредактировал WarMasterDi - Четверг, 26 Сентября 2013, 22:07:14 |
|
|
|
Melodia | Дата: Среда, 13 Ноября 2013, 16:07:18 | Сообщение # 296 |
Группа: Проверенные
Сообщений: 8026
Награды: 5
Репутация: 5051
Блокировки:
| Много ли сэкономишь, если юзать movelocation вместо создания и удаления точки?
|
|
|
|
SirNikolas | Дата: Среда, 13 Ноября 2013, 17:08:56 | Сообщение # 297 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| [url]http://ru.wikipedia.org/wiki/Куча_(память)[/url] Если каждый раз создавать точку, в куче каждый раз будет искаться свободное место, достаточное для размещения информации о точке (три координаты плюс внутренняя инфа интерпретатора) (кстати, есть шанс, что координат всего две, а Z вычисляется по данным рельефа). Если использовать одну и ту же точку, этих манипуляций не понадобится. Много ли сэкономишь - зависит от реализации кучи в интерпретаторе JASS.
Сообщение отредактировал SirNikolas - Четверг, 14 Ноября 2013, 20:53:16 |
|
|
|
Melodia | Дата: Среда, 13 Ноября 2013, 22:26:26 | Сообщение # 298 |
Группа: Проверенные
Сообщений: 8026
Награды: 5
Репутация: 5051
Блокировки:
| //TESH.scrollpos=0 //TESH.alwaysfold=0
Частенько вижу эту бяку, что она значит?
|
|
|
|
nvc123 | Дата: Среда, 13 Ноября 2013, 23:49:23 | Сообщение # 299 |
6 уровень
Группа: Проверенные
Сообщений: 229
Награды: 0
Репутация: 24
Блокировки:
| Melodia, это пишет TESH
научите нуба писать на jass пишу игры под андроид за еду
|
|
|
|
SirNikolas | Дата: Четверг, 14 Ноября 2013, 20:52:05 | Сообщение # 300 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| В JNGP есть галочки: "Сохранять позицию в документе" и "Сворачивать все при открытии". С помощью таких комментариев в начале он сохраняет эти значения для каждого триггера.
|
|
|
|
|
|
|
|
|
|
|