|
|
|
|
"Опустошение" глобальной переменной
|
|
CHLSN | Дата: Суббота, 30 Апреля 2011, 09:50:36 | Сообщение # 1 |
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
| Тему уже поднимал, но так ни к чему и не пришли. Проблема такая. Герой покупается в таверне, unit sold = GetSoldUnit, и в глобальный массив udg_m[ GetPlayerId( GetOwningPlayer(sold) ] = sold заносим этого юнита. Проворачиваем пару функций с udg_m[x] в качестве передаваемого параметра, после чего успешно теряем ссылку на этого юнита в udg_m[x]. Кто знает в чем подвох?
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
|
|
|
|
FkoFF | Дата: Суббота, 30 Апреля 2011, 09:51:53 | Сообщение # 2 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| возможно где то стоит udg_m[x] = null.
|
|
|
|
CHLSN | Дата: Суббота, 30 Апреля 2011, 09:54:37 | Сообщение # 3 |
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
| FkoFF, 10 раз проверил, нигде udg_m[x] = null не написано, мне оно и не надо вовсе, я эту переменную передаю только для "чтения".
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
|
|
|
|
FkoFF | Дата: Суббота, 30 Апреля 2011, 09:55:11 | Сообщение # 4 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| CHLSN, на самом деле с подобной фигней не сталкивался.
|
|
|
|
CHLSN | Дата: Суббота, 30 Апреля 2011, 10:05:03 | Сообщение # 5 |
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
| Да, кстати, у меня рядом с udg_m объявлен другой массивчик udg_m_s. В обоих массивах я поставил размерность 12 (может не стоило?), оба изначально обнулены. Я заношу в udg_m[x] sold-юнита, вызываю функцию, которая инициализирует переменные для героя, при этом там же создается юнит (sounit) в udg_m_s[x], далее вызывается функция перемещения героя на респаун. Debug-сообщения ( "Герой" + GetUnitName( udg_m[x] ) ) выдают чудеса: - до функций - после первой функции - после второй функции Запуск 1: Герой: Паладин Герой: Sounit Герой: Запуск 2: Герой: Паладин Герой: Герой:
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
|
|
|
|
SirNikolas | Дата: Суббота, 30 Апреля 2011, 11:30:13 | Сообщение # 6 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Интересно. Можно взглянуть на функции? Скорее всего, как сказал FkoFF, ты или перезаписываешь переменную, или обнуляешь ее.Quote (CHLSN) (может, не стоило?) Это всего лишь инициализирует элементы с 0 по 12 как null.
|
|
|
|
CHLSN | Дата: Суббота, 30 Апреля 2011, 11:39:06 | Сообщение # 7 |
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
| SirNikolas, еще раз пересмотрел Find Next'ом, udg_m встречается только в таких строках: udg_bla-bla = udg_m[x] TriggerRegisterUnitEvent( gg_trg_g, udg_m[x], EVENT_UNIT_DAMAGED ) Юнита Sounit точно создаю в udg_m_s[x]. Что я, совсем на дебила похож? ) Добавлено (30-04-2011, 11:39) --------------------------------------------- Quote (SirNikolas) Это всего лишь инициализирует элементы с 0 по 12 как null. Quote (CHLSN) Debug-сообщения ( "Герой" + GetUnitName( udg_m[x] ) ) выдают чудеса: - до функций - после первой функции - после второй функции Запуск 1: Герой: Паладин Герой: Sounit Герой: Запуск 2: Герой: Паладин Герой: Герой: Чудеса техники, не правда ли? . . . . . . . Да, и еще, юнит не записывается случайно куда-то не туда, весь массив пустой
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
Сообщение отредактировал CHLSN - Суббота, 30 Апреля 2011, 11:44:48 |
|
|
|
SirNikolas | Дата: Суббота, 30 Апреля 2011, 11:43:53 | Сообщение # 8 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Чему у тебя равен x в каждой функции?
|
|
|
|
CHLSN | Дата: Суббота, 30 Апреля 2011, 11:46:16 | Сообщение # 9 |
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
| Quote (CHLSN) GetPlayerId( GetOwningPlayer(sold) Номер игрока. Игрок 1 Красный = 0.
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
|
|
|
|
lawson | Дата: Суббота, 30 Апреля 2011, 13:44:07 | Сообщение # 10 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| CHLSN, Бред так можно гадать и гадать, покажи триггер где ты устанавливаешь перменную эту, и триггер где тебе надо прочитать эту перменную.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
CHLSN | Дата: Суббота, 30 Апреля 2011, 17:16:00 | Сообщение # 11 |
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
| Code function SetExpParametres takes unit u returns nothing local player pl = GetOwningPlayer(u) local integer p = GetPlayerId(pl) local integer t = GetUnitTypeId(u)
udg_d = 5
//Archimagician of Water if t=='Hamg' then udg_hero_amw = udg_m[p] endif //Paladin if t=='Hart' then EnableTrigger( gg_trg_phl ) EnableTrigger( gg_trg_auc ) endif
udg_m_s[p] = CreateUnit( pl, 'N013', 0, 0, 0 )
p = 0 pl = null t = 0 u = null endfunction function Trig_Pick takes nothing returns nothing local unit sold = GetSoldUnit() local unit sell = GetSellingUnit() local player buy = GetOwningPlayer(sold) local integer p = GetPlayerId( buy ) if IsUnitType( sold, UNIT_TYPE_HERO ) == true then udg_m[p] = sold DisplayTimedTextToPlayer( buy, 0, 0, 10, "Герой: " + GetUnitName( udg_m[p] ) ) SetExpParametres( udg_m[p] ) // DisplayTimedTextToPlayer( buy, 0, 0, 10, "Герой: " + GetUnitName( udg_m[p] ) ) RelifeHeroEgida( udg_m[p] ) TriggerRegisterUnitEvent( gg_trg_damer, udg_m[p], EVENT_UNIT_DAMAGED ) DisplayTimedTextToPlayer( buy, 0, 0, 10, "Герой: " + GetUnitName( udg_m[p] ) ) endif sold = null sell = null buy = null p = 0 endfunction lawson, легче стало, анугадебл? После вызова SetExpParametres udg_m[x] как и не бывало.
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
Сообщение отредактировал CHLSN - Суббота, 30 Апреля 2011, 17:17:49 |
|
|
|
lawson | Дата: Суббота, 30 Апреля 2011, 18:40:47 | Сообщение # 12 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| udg_hero_amw = udg_m[p] это поменяй на это udg_hero_amw = u Добавлено (30-04-2011, 18:40) --------------------------------------------- Без понятия все так запутано. с чего ты вляз что именно Quote (CHLSN) После вызова SetExpParametres udg_m[x] как и не бывало. ?
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Суббота, 30 Апреля 2011, 18:41:36 |
|
|
|
SirNikolas | Дата: Суббота, 30 Апреля 2011, 18:59:26 | Сообщение # 13 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (lawson) с чего ты взял У него debug'ов понаставлено, не видишь? Я абсолютно ничего не понимаю. Единственное, что приходит в голову: "udg_m_s[p] = CreateUnit( pl, 'N013', 0, 0, 0 )" - вошедший юнит активирует какой-нибудь левый триггер, который и обнуляет udg_m. P. S. integer обнулять не надо.
|
|
|
|
CHLSN | Дата: Суббота, 30 Апреля 2011, 19:22:03 | Сообщение # 14 |
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
| Дорогие господа, я скажу Вам больше: Code function Trig_Pick takes nothing returns nothing local unit sold = GetSoldUnit() local unit sell = GetSellingUnit() local race r = GetUnitRace( sold ) local player buy = GetOwningPlayer( sold ) local integer t = GetUnitTypeId( sold ) local integer p = GetPlayerId( buy ) local string s if IsUnitType( sold, UNIT_TYPE_HERO ) == true then SetUnitPosition( sold, udg_point_return_x[p], udg_point_return_y[p] ) PanCameraToTimedForPlayer( GetOwningPlayer( sold ), GetUnitX( sold ), GetUnitY( sold ), 1 ) TriggerRegisterUnitEvent( gg_trg_d, sold, EVENT_UNIT_DAMAGED ) udg_Heroes_of_Players[p] = GetSoldUnit() DisplayTimedTextToPlayer( buy, 0, 0, 10, "Герой: " + GetUnitName( udg_Heroes_of_Players[p] ) ) DisplayTimedTextToPlayer( buy, 0, 0, 10, "Герой: " + GetUnitName( sold ) ) endif sold = null sell = null r = null buy = null t = 0 p = 0 endfunction Он мне выдал: Герой: Герой: Добавлено (30-04-2011, 19:22) ---------------------------------------------
Quote (SirNikolas) P. S. integer обнулять не надо. Надо, на всякий случай... У меня созрело пока что 3 варианта происходящего: - либо у меня wacraft тупит - либо JNGP забаженый - либо кривость исполнения с виду нормального кода
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
|
|
|
|
SirNikolas | Дата: Суббота, 30 Апреля 2011, 19:22:41 | Сообщение # 15 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (CHLSN) Code udg_Heroes_of_Players[p] = GetSoldUnit() DisplayTimedTextToPlayer( buy, 0, 0, 10, "Герой: " + GetUnitName( udg_Heroes_of_Players[p] ) ) Quote (SirNikolas) Я абсолютно ничего не понимаю. Здесь один вариант - у тебя стоит неправильное событие.
|
|
|
|
CHLSN | Дата: Суббота, 30 Апреля 2011, 19:28:24 | Сообщение # 16 |
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
| Quote (SirNikolas) Здесь один вариант - у тебя стоит неправильное событие. В варике нет события "Боевая единица - Продается". GetSoldUnit() возвращает проданного юнита. При чем GetSoldUnit() вполне хорошо возвращает этого юнита, но правда почему-то у меня и в локальных и глобальных его потом увидеть затруднительно...
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
|
|
|
|
FkoFF | Дата: Воскресенье, 01 Мая 2011, 00:50:44 | Сообщение # 17 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| CHLSN, судя по всему ты вообщем то нуб, если учесть что обнуляешь интегеры и зачем то локального игрока создаешь. Что до кода - он похож на мазню пальцем, если быть честным. Объясни чего ты хочешь добиться. Бтв, нафиг тебе вджасс когда ты джасс то толком не знаешь? )
|
|
|
|
CHLSN | Дата: Воскресенье, 01 Мая 2011, 03:05:45 | Сообщение # 18 |
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
| FkoFF, во-первых, это гораздо удобнее, во-вторых, не настолько плохо, но невнимательности хватает, а в-третьих, я загноил JNGP, поправил код, убрал все ошибки, на которые ругался WE, и как ни странно, при определенной работе триггеров, переменная не очищается, работа с юнитом ведется идеально. Quote (FkoFF) Объясни чего ты хочешь добиться. Перечитай 1 пост этой темы -_-
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
Сообщение отредактировал CHLSN - Воскресенье, 01 Мая 2011, 03:06:03 |
|
|
|
Impregnable | Дата: Воскресенье, 01 Мая 2011, 03:50:28 | Сообщение # 19 |
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
| Quote (CHLSN) У меня созрело пока что 3 варианта происходящего: - либо у меня wacraft тупит - либо JNGP забаженый - либо кривость исполнения с виду нормального кода Warcraft тупить никак не может, сколько раз уже убеждался... JNPG тоже наврятли, хотя попробуй поставить еще раз. Проверил у себя - все работает идеально, так что это и не 3 вариант. Ищи ошибку в других функциях или дай полный код.
|
|
|
|
CHLSN | Дата: Воскресенье, 01 Мая 2011, 03:58:50 | Сообщение # 20 |
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
| Impregnable, в общем-то уже нашел. TriggerSleepAction завалялся в ненужном месте, из-за которого функция выбора героя просто не срабатывала, или срабатывала частично (по крайней мере я на это очень надеюсь, но таков получился вывод).
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
|
|
|
|
|
|
|
|
|
|
|