sleepw
offline
Опыт:
8,449Активность: |
респаун - проблемма
вот скрипт:
» respawn Код:
проблемма следующая. поставил для теста героев (нейтрально враждебные) и крипов(нейтрално враждебные) респаунятся только герои О_О что может быть за чудо такое? sleepw добавил: ps. на чистой карте этот же скрипт работает как по маслу.. sleepw добавил: в чём трабл понял. в скрипте есть чтото про Player 12 у меня этот плеер занят игроком. в этом трабл может быть? sleepw добавил: эх.. не дело не в этом потестил.. что ещё может быть? |
02.01.2008, 15:16 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
exploder
iOS zealot
offline
Опыт:
19,394Активность: |
Скрипт работает следующим образом:
При инициализации триггера (загрузке карты), для каждого юнита принадлежащего 13 игроку (по дефолту Neutral Hostile), сохраняются его координаты и направление, это делается в функции SetCreepRespawnPoints. Далее создается триггер с событием срабатывания - Смерть юнита принадлежащего 13 игроку. При срабатывании триггера запускается функция RespawnCreeps, которая извлекает сохраненые координаты умершего юнита, ждет какое то время, делает проверку на видимость точки где респавнится крип для всех игроков (хотя в данном случае проверка отключена) и потом если проверку успешна создает крипов. Проверь принадлежат ли крипы 13 игроку. Если крипы расставляются триггерами уже после загрузки карты, то данный скрипт работать не будет. |
02.01.2008, 16:22 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
sleepw
offline
Опыт:
8,449Активность: |
нет крипы стоят изначально..
а как проверить?:( sleepw добавил: зы. и что я мог такого сделать на карте чтобы скрипту чтото мешало?.. если на чистой карте всё пашет.. хотя потом начал крутить эту самую "чистую карту" и после того как я сделал кланы и фиксирование игроков скрипт перестал работать... как же быть ?( sleepw добавил: Всё я точно понял проблемму! когда ставится Сценарий - Свойства игрока - Кланы """Фикс. параметры игрока""",перестаёт работать скрипт!. Как поступить в даной ситуации?... фиксирование мне чрезвычайно необходимо! sleepw добавил: exploder Зы. и зачем вообще проверять?.. герои вить спаунятся,а они тоже были нейтрально-враждебными.. sleepw добавил: тут трабл дето в другом.. sleepw добавил: работает всё.. непойму что я сделал:) хотелось бы узнать О_О |
02.01.2008, 19:11 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Harakternyk
offline
Опыт:
2,703Активность: |
exploder, этот script будет работать и тогда, кода creep-ы будут создаваться после иннициации карты, однако, местом их последующего respawn-а будет точка гибели последнего creep-а.
Чтобы всё работало корректно нужно задёствовать функцию SetCreepRespawnPoints с момента первичного создания creep-ов (т.е. триггер, их создающий, должен вызывать эту функцию после создания оных, однако, чтобы не нарушить место respawn-а ранее созданных другими триггерами creep-ов, нужно будет адаптировать эту функцию под юнитов, создаваемых конкретным триггером ). sleepw, проблема решалась довольно просто: для корректной работы системы нужно перенести задержку respawn-a в место после определения значений локальных переменных "c" и"b". Это связано с тем, что функция задержки ( TriggerSleepAction( r ), равно как и PolledWait( r ) ) прерывает дальнейшие присвоения значений тем локальным переменным, которые устанвливались до её задействования (см. вложение к этому посту). Замечание (!): Однако, эта проблема не имеет место, если creep-ом является герой. Пока не знаю почему так, но может разберусь позже. Просьба (!): Если кто-нибудь знает, по какой причинe эта ошибка не действует на героев, то напишите об этом в этой теме, пожалуйста (думаю, что ответ на этот вопрос будет интересен не только мне и автору данной темы, но и другим картостроителям). Заранее спасибо! Отредактировано Harakternyk, 03.01.2008 в 15:45. |
03.01.2008, 15:07 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
sleepw
offline
Опыт:
8,449Активность: |
зы и просто интересно ещё.. зачем ставить там вот наприер a=1 и в какихто функциях значения player 12+a не легче было там просто написать плеер 13?:) |
03.01.2008, 15:27 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Harakternyk
offline
Опыт:
2,703Активность: |
sleepw, читай код внимательней!
Переменная а создаётся только в основной функции действия триггера по respawn-у и задействуется для проверки того, находится ли точка respawn-а в поле зрения какого-либо игрока, чтобы "воскрешать" creep-ов только тогда, когда точка их "возрождения" будет в поле зрения соответствующего игрока. Обрати внимание, что проверка заканчивается тогда, когда а становится больше, либо равно 11,т.е. 12-му игроку (да, да, не удивляйся, объясню далее ), т.к. в jass-е индексирование игроков начинается не с "1", а с "0", поэтому 12-й игрок в редакторе триггеров, это 11 в jass-script-е. Соответственно 12 в этом script-е будет 13-м в упомянутом редакторе, т.е. "нетрально-враждебным". Надеюсь, что ты всё понял. Успехов тебе в картостроительстве! |
03.01.2008, 15:39 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
exploder
iOS zealot
offline
Опыт:
19,394Активность: |
Цитата:
Этой точкой будет т.(0, 0), хотя не суть... под "работой" я иммел ввиду корректную работу триггера. --- По-моему скрипт легче переписать с нуля... Вместо убогой TriggerSleepAction() лучше воспользоватся таймером... |
|
03.01.2008, 18:43 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
sleepw
offline
Опыт:
8,449Активность: |
Цитата:
спс... :) |
|
03.01.2008, 20:13 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|