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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
"Опустошение" глобальной переменной
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++?
 

  • Страница 1 из 1
  • 1
Поиск:

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