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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » смерть бе (?)
смерть бе
Dark_ZarichДата: Понедельник, 16 Мая 2011, 13:59:51 | Сообщение # 1
9 уровень
Группа: Проверенные
Сообщений: 1022
Награды: 0
Репутация: 942
Блокировки:
Вот представим триггер :

Событие : бе умирает

и тут возникает вопрос если после того как умер воин через 3 секунды умрет еще воин то выполнение тех действий при первой смерти прекратится ?

если да то это означает что постепенно бе будет становится меньше и меньше

и как тогда с этим бороться ?


MAL

Все тлен...


Сообщение отредактировал Dark_Zarich - Понедельник, 16 Мая 2011, 14:00:22
 

Mep3aB4uKДата: Понедельник, 16 Мая 2011, 14:14:36 | Сообщение # 2
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
Dark_Zarich, не устанавливай точку. Создать 1 юнита в случайная точка neutral <gen>
 

Dark_ZarichДата: Понедельник, 16 Мая 2011, 14:27:38 | Сообщение # 3
9 уровень
Группа: Проверенные
Сообщений: 1022
Награды: 0
Репутация: 942
Блокировки:
почему ? все равно же оптимизирована а так будет утечка

MAL

Все тлен...
 

SirNikolasДата: Понедельник, 16 Мая 2011, 14:42:19 | Сообщение # 4
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Точка установлена (и удалена) правильно. Все дело в ожидании. Нужно переделывать с помощью параллельных массивов или хэша. Сейчас напишу функцию.

 

Dark_ZarichДата: Понедельник, 16 Мая 2011, 14:43:34 | Сообщение # 5
9 уровень
Группа: Проверенные
Сообщений: 1022
Награды: 0
Репутация: 942
Блокировки:
SirNikolas, без жасс плиз

MAL

Все тлен...
 

SirNikolasДата: Понедельник, 16 Мая 2011, 14:55:13 | Сообщение # 6
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Code
function ReviveCreep_Timer takes nothing returns nothing
     local timer t = GetExpiredTimer()
     local integer i = GetHandleId(t)
     local rect point = LoadRectHandle(udg_Hash, i, 1)
     call GroupAddUnit(udg_CreepsGroup[LoadInteger(udg_Hash, i, 2)], CreateUnit(LoadPlayerHandle(udg_Hash, i, 3), LoadInteger(udg_Hash, i, 0), GetRandomReal(GetRectMinX(point), GetRectMaxX(point)), GetRandomReal(GetRectMinY(point), GetRectMaxY(point)), 270.))
     call DestroyTimer(t)
     call FlushChildHashtable(udg_Hash, i)
     set t = null
     set point = null
endfunction

function ReviveCreep takes integer id, real time, rect point, integer groupNum, player p returns nothing
     local timer t = CreateTimer()
     local integer i = GetHandleId(t)
     call SaveInteger(udg_Hash, i, 0, id)
     call SaveAgentHandle(udg_Hash, i, 1, point)
     call SaveInteger(udg_Hash, i, 2, groupNum)
     call SaveAgentHandle(udg_Hash, i, 3, p)
     call TimerStart(t, time, false, function ReviveCreep_Timer)
     set t = null
endfunction
Вызывается функция таким образом:
Code
call ReviveCreep(id, time, point, groupNum, p)
, где id - raw-код юнита, time - задержка воскрешения, point - область, в которой он будет воскрешен, groupNum - номер группы, в которую юнит будет записан, p - игрок, владелец юнита. Пример:
Code
call ReviveCreep(GetUnitTypeId(GetTriggerUnit()), 15., gg_rct_neutral, 1, Player(12))

- возродит юнита типа умершего через 15 секунд в области neutral <gen> для игрока (12 + 1) - нейтрально-враждебного, а также запишет в CreepsGroup[1].


 

Dark_ZarichДата: Понедельник, 16 Мая 2011, 14:56:47 | Сообщение # 7
9 уровень
Группа: Проверенные
Сообщений: 1022
Награды: 0
Репутация: 942
Блокировки:
SirNikolas, а ее можно вызвать с помощью костюм скрипт ?

MAL

Все тлен...
 

SirNikolasДата: Понедельник, 16 Мая 2011, 14:56:54 | Сообщение # 8
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Dark_Zarich, если без JASS, то нужно открывать WE, потому что ты вряд ли поймешь все эти массивы, а я сейчас спешу.
P. S. Требуется создать переменную Hash типа хэш-таблица и в триггере инициализации написать:
Code
set udg_Hash = InitHashtable()


 

Dark_ZarichДата: Понедельник, 16 Мая 2011, 14:58:01 | Сообщение # 9
9 уровень
Группа: Проверенные
Сообщений: 1022
Награды: 0
Репутация: 942
Блокировки:
напишите кто нибудь на гуи

MAL

Все тлен...
 

SirNikolasДата: Понедельник, 16 Мая 2011, 14:58:39 | Сообщение # 10
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Dark_Zarich)
ее можно вызвать с помощью костюм скрипт
Можно.


 

Mep3aB4uKДата: Понедельник, 16 Мая 2011, 15:33:56 | Сообщение # 11
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
Dark_Zarich, можно и без хеша... но локальными переменными. Конвертируеш в текст, копириуеш строчку(только те где используется переменная) потом отменяеш и вставляеш ее в cs
вначале делаеш:
local location loc
бла-бла(на гуи)
там где установить точку (переведи и скопируй все)
будет примерно: set udg_TempPoint[1]=RandomPoint
поменяй udg_TempPoint[1] на loc....примерно: set loc=RandomPoint
также с текстом создания юнита, меняеш udg_TempPoint[1] на loc
удаляеш точку loc
и в конце
set loc=null


Сообщение отредактировал Mep3aB4uK - Понедельник, 16 Мая 2011, 16:18:00
 

Dark_ZarichДата: Понедельник, 16 Мая 2011, 16:30:56 | Сообщение # 12
9 уровень
Группа: Проверенные
Сообщений: 1022
Награды: 0
Репутация: 942
Блокировки:
Quote (Mep3aB4uK)
удаляеш точку loc

этого непонял


MAL

Все тлен...
 

Mep3aB4uKДата: Понедельник, 16 Мая 2011, 16:55:24 | Сообщение # 13
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
Dark_Zarich, call RemoveLocation loc
 

Dark_ZarichДата: Понедельник, 16 Мая 2011, 17:04:56 | Сообщение # 14
9 уровень
Группа: Проверенные
Сообщений: 1022
Награды: 0
Репутация: 942
Блокировки:
Mep3aB4uK, слушай а тот код что ты написал и будет ответом на мой вопрос ?

MAL

Все тлен...
 

Mep3aB4uKДата: Понедельник, 16 Мая 2011, 17:08:30 | Сообщение # 15
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
Dark_Zarich, да

Сообщение отредактировал Mep3aB4uK - Понедельник, 16 Мая 2011, 17:09:25
 

adigaДата: Понедельник, 16 Мая 2011, 17:08:51 | Сообщение # 16
7 уровень
Группа: Проверенные
Сообщений: 489
Награды: 0
Репутация: 14
Блокировки:
да ты б хоть проверил, триггер действует как положено! не прерываются события, и для каждого юнита как положено ожидается 3 сек затем происходит то что тебе надо

триггеринг 439/450
спеллкрафт 447/450
картокрафт 427/450
ландшафтинг 189/450
фастмэйкинг 225/225
иконкрафтинг 310/450
импортинг 110/450
самооценкинг 450/450
 

Mep3aB4uKДата: Понедельник, 16 Мая 2011, 17:14:06 | Сообщение # 17
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
Quote (adiga)
да ты б хоть проверил, триггер действует как положено!

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

SirNikolasДата: Понедельник, 16 Мая 2011, 17:17:17 | Сообщение # 18
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Mep3aB4uK, adiga, wait очень и очень часто глючит. И если у вас он работает нормально, это не значит, что то же самое будет в другой карте.
Quote (Mep3aB4uK)
можно и без хеша
Согласен. Можно массивами.


 

Keeper_of_the_LifeДата: Понедельник, 16 Мая 2011, 17:22:01 | Сообщение # 19
7 уровень
Группа: Проверенные
Сообщений: 467
Награды: 1
Репутация: 130
Блокировки:
Quote (SirNikolas)
wait очень и очень часто глючит

Согласен. Багнутая команда. Надо делать таймерами.
 

Dark_ZarichДата: Понедельник, 16 Мая 2011, 17:22:27 | Сообщение # 20
9 уровень
Группа: Проверенные
Сообщений: 1022
Награды: 0
Репутация: 942
Блокировки:
скажите плиз правильный и рабочий ответ

MAL

Все тлен...
 

SirNikolasДата: Понедельник, 16 Мая 2011, 17:24:24 | Сообщение # 21
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Да вот же он.

 

Mep3aB4uKДата: Понедельник, 16 Мая 2011, 17:25:32 | Сообщение # 22
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
Dark_Zarich, если на 1 игрока то можешь использовать свой вариант, а если в сетку то хешом выше

Сообщение отредактировал Mep3aB4uK - Понедельник, 16 Мая 2011, 17:26:03
 

Dark_ZarichДата: Понедельник, 16 Мая 2011, 17:28:57 | Сообщение # 23
9 уровень
Группа: Проверенные
Сообщений: 1022
Награды: 0
Репутация: 942
Блокировки:
у меня так должны реcпатся 3 игрока

1. нейтрально враждебный (в neutral)
2. бе игрока синего не герои (в зоне X)
3. бе игрока красного не герои (в зоне У)

Добавлено (16-05-2011, 17:28)
---------------------------------------------
каждая их бе респается 10 сек


MAL

Все тлен...
 

Mep3aB4uKДата: Понедельник, 16 Мая 2011, 17:32:55 | Сообщение # 24
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
Dark_Zarich, смотри, если ко го то из игроков заглючит на 9 сек., то до респа останется 1 сек.,а не 10. если для тебя это не сыграет большой роли то делай по своему варианту, иначе копируй то что SirNicolas написал

Сообщение отредактировал Mep3aB4uK - Понедельник, 16 Мая 2011, 17:33:37
 

FkoFFДата: Понедельник, 16 Мая 2011, 17:34:59 | Сообщение # 25
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Dark_Zarich, все варианты которые я до этого пробовал в плане респа приводили к эпик фейлу. Единственный рациональный (действительно рациональный вариант) - джасс. Реализация по типу того что предложил SirNikolas (код не читал, но представляю что там). Посему вот тебе и первое ненавязчивое знакомство с джасс.

 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » смерть бе (?)
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск:

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