Сейчас 08:28:49 Четверг, 18 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » То ли трубы прорвало, то ли что, но в Jass-коде утечка (О.о а может и нет)
То ли трубы прорвало, то ли что, но в Jass-коде утечка
CHLSNДата: Понедельник, 03 Января 2011, 12:26:02 | Сообщение # 1
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Вот код:
Code

unit sold = GetSoldUnit()
player buy = GetOwningPlayer( sold )
integer p = GetPlayerId( buy )
...
if IsUnitType( sold, UNIT_TYPE_HERO ) then
  udg_x[p] = sold
  DisplayTimedTextToPlayer( buy, 0, 0, 10, "Твой героин: " + GetUnitName( udg_x[p] ) )
  ...
endif

Почему-то иногда у меня выводит тупо: "Твой героин: " и всё. Хотя герой был выбран, имя у героя точно есть. Отсюда возникает неработоспособность некоторых триггеров.




Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

KartohaДата: Понедельник, 03 Января 2011, 12:37:25 | Сообщение # 2
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
Т.е. у тебя иногда выводится имя, иногда нет? Или вообще никогда не выводится? Это важно.
 

P@d®eДата: Понедельник, 03 Января 2011, 12:38:44 | Сообщение # 3
6 уровень
Группа: Пользователи
Сообщений: 221
Награды: 0
Репутация: 73
Блокировки:
Quote (CHLSN)
иногда

попробуй на собтия или условия посмотреть мож там че не то.
попробуй без глобалки сделать или сначало выполнить действия с локалкой а потом присваивать в глобалку, а так хз, почему "иногда"


Кому помог поставьте плюсичек.
 

CHLSNДата: Понедельник, 03 Января 2011, 12:51:52 | Сообщение # 4
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Kartoha, это вообще ахинея. Я еще по ребагю всех героев, но у меня в редких случаях не выводит сообщение.
Сейчас тестил. Выбрал героя. Все триггеры включились - всё норм. Но! Не работал один триггер, где используется глобальная переменная, в которую этот герой заносится (по крайней мере должен). Перезапустил карту - снова попробовал - нормально, работает.




Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

DreiiДата: Понедельник, 03 Января 2011, 13:36:11 | Сообщение # 5
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
CHLSN,
Code
local unit s=GetTriggerUnit()  
local player buy = GetOwningPlayer(s)  
local integer p=GetPlayerId(buy)  
if IsUnitType( s,UNIT_TYPE_HERO) then  
call DisplayTimedTextToPlayer( buy, 0, 0, 10, "Твой герой: " + GetUnitName(s) )  
endif
set s=null


Вот это работает отлично.тока что проверил

Добавлено (03-01-2011, 13:36)
---------------------------------------------
Вот тоже работает если герой покупается

Code
function Trig_hero1_Actions takes nothing returns nothing
local unit s=GetSoldUnit()  
local player buy=GetOwningPlayer(s)  
local integer p=GetPlayerId(buy)  
if IsUnitType( s,UNIT_TYPE_HERO) then  
   call DisplayTimedTextToPlayer( buy, 0, 0, 10, "Твой герой: " + GetUnitName(s) )  
endif
endfunction

//===========================================================================
function InitTrig_hero1 takes nothing returns nothing
local integer index=0
     set gg_trg_hero1 = CreateTrigger()
     loop
         call TriggerRegisterPlayerUnitEvent(gg_trg_hero1, Player(index),  EVENT_PLAYER_UNIT_SELL, null)
         set index = index + 1
         exitwhen index == bj_MAX_PLAYER_SLOTS
     endloop
     call TriggerAddAction( gg_trg_hero1, function Trig_hero1_Actions )
endfunction


 

CHLSNДата: Понедельник, 03 Января 2011, 13:40:26 | Сообщение # 6
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Quote (Dreii)
unit s=GetTriggerUnit()  

Если я не ошибаюсь, нет события "Боевая единица Продается" (:D "продается" х))

И ты не понял. Проблема не в выводе имени героя, а в его имении в глобальной переменной.

Добавлено (03-01-2011, 13:40)
---------------------------------------------
Выводится-то имя безпроблемно. Вот только выводить нечего, если глобалка оказалось каким-то образом пустой О.о




Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

KartohaДата: Понедельник, 03 Января 2011, 13:46:20 | Сообщение # 7
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
А зачем вообще глобалка? Почему в этом параметре
Quote (CHLSN)
GetUnitName( udg_x[p] )

вместо udg_x[p] нельзя указать локалку sold?
 

CHLSNДата: Понедельник, 03 Января 2011, 13:53:32 | Сообщение # 8
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Kartoha
Quote (CHLSN)
И ты не понял. Проблема не в выводе имени героя, а в его имении в глобальной переменной.

Это сообщение имеет две функции: оповестить, какой герой выбран и оповестить, что он удачно оказался в глобальной переменной.

Добавлено (03-01-2011, 13:53)
---------------------------------------------
Потому что если его не будет в глобалке, половина триггеров будут не работать, и вообще, давать сбои




Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

DreiiДата: Понедельник, 03 Января 2011, 13:59:44 | Сообщение # 9
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
CHLSN,
Code
globals
unit hero=GetSoldUnit()   
endglobals
function Trig_hero1_Actions takes nothing returns nothing
local unit s=GetSoldUnit()   
local player buy=GetOwningPlayer(s)   
local integer p=GetPlayerId(buy)   
if IsUnitType( s,UNIT_TYPE_HERO) then   
set hero=s
    call DisplayTimedTextToPlayer( buy, 0, 0, 10, "Твой герой: " + GetUnitName(hero) )   
endif
endfunction

//===========================================================================
function InitTrig_hero1 takes nothing returns nothing
local integer index=0
      set gg_trg_hero1 = CreateTrigger()
      loop
          call TriggerRegisterPlayerUnitEvent(gg_trg_hero1, Player(index),  EVENT_PLAYER_UNIT_SELL, null)
          set index = index + 1
          exitwhen index == bj_MAX_PLAYER_SLOTS
      endloop
      call TriggerAddAction( gg_trg_hero1, function Trig_hero1_Actions )
endfunction

Добавлено (03-01-2011, 13:59)
---------------------------------------------
Глобалка отлично беретт значение s




Сообщение отредактировал Dreii - Понедельник, 03 Января 2011, 13:57:48
 

CHLSNДата: Понедельник, 03 Января 2011, 14:01:35 | Сообщение # 10
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Ок. Я еще посмотрю, возможно ошибка уже исправлена каким-то чудодейственным образом, но если нет, вновь подниму эту тему.



Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

P@d®eДата: Понедельник, 03 Января 2011, 14:05:02 | Сообщение # 11
6 уровень
Группа: Пользователи
Сообщений: 221
Награды: 0
Репутация: 73
Блокировки:
тогда поверь другие триггеры, где это глобалка используется, мо тама она обнуляется?

Кому помог поставьте плюсичек.
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » То ли трубы прорвало, то ли что, но в Jass-коде утечка (О.о а может и нет)
  • Страница 1 из 1
  • 1
Поиск:

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