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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Героя не считает за героя 0_о
RemosДата: Воскресенье, 18 Апреля 2010, 02:11:01 | Сообщение # 1
2 уровень
Группа: Пользователи
Сообщений: 22
Награды: 0
Репутация: 0
Блокировки:
Копирую любого стандартного героя игры,добавляю его в *алтарь королей* когда покупаю героя в алтаре,он не исчезает,и можно его строить как простых юнитов,много(кстати когда он умирает,воскрешается он как стандартный герой)...
Как зделать так чтобы его щитало за героя,и чтобы его портрет после покупки исезал...?
Помогите !!

Добавлено (18-04-2010, 02:11)
---------------------------------------------
Ненашел редактора соопщения 1-го... Нашел тему http://warcraft3ft.info/board/kak_sdelat_tavernu_s_gerojami/14-1-0-1155
Там описано про круги и т.п.
Я делаю простую карту на расстройку... Можно както в 2 предложениях сказать как зделать чтобы герой исчезал и нельзя больше было заказывать героя пока не улутшиш замок :)
З.Ы. Еще раз напомню что я простую расстройку делать...Трагерами пользоватся НЕумею.

 

Fox3Дата: Воскресенье, 18 Апреля 2010, 03:35:32 | Сообщение # 2
6 уровень
Группа: Проверенные
Сообщений: 247
Награды: 0
Репутация: 10
Блокировки:
Ну чтобы герой полностью исчезал без тригерров не сделаеш
 

UnetcoДата: Воскресенье, 18 Апреля 2010, 08:05:52 | Сообщение # 3
10 уровень
Группа: Проверенные
Сообщений: 2307
Награды: 2
Репутация: 648
Блокировки:
Quote (Remos)

З.Ы. Еще раз напомню что я простую расстройку делать...Трагерами пользоватся НЕумею.

Для этого триггеры не нужны. Нужно только сделать хороший и сбалансированный ландшафт, расставить стартовые позиции и указать сколько игроков в карте максимум.
 

SucksДата: Воскресенье, 18 Апреля 2010, 08:41:27 | Сообщение # 4
7 уровень
Группа: Проверенные
Сообщений: 377
Награды: 0
Репутация: 90
Блокировки:
Quote (Remos)
Как зделать так чтобы его щитало за героя,и чтобы его портрет после покупки исезал...?

Ни разу такой проблемы не было, руки наверное просто настолько глубоко запихнуты..)

Добавлено (18-04-2010, 08:41)
---------------------------------------------
И если у тебя в триггерах не будет этой функции (выделил синим) то ты ЛЮБЫХ геров сможешь призывать неограниченное кол-во раз (ограничевается только крепостью, замком и аналогом)



Сообщение отредактировал Sucks - Воскресенье, 18 Апреля 2010, 08:43:28
 

SirNikolasДата: Воскресенье, 18 Апреля 2010, 08:59:52 | Сообщение # 5
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
В Редакторе Объектов "Технологии - Требования - Используемые классы" ставь на 1.

 

SucksДата: Воскресенье, 18 Апреля 2010, 09:20:03 | Сообщение # 6
7 уровень
Группа: Проверенные
Сообщений: 377
Награды: 0
Репутация: 90
Блокировки:
Quote (SirNikolas)
В Редакторе Объектов "Технологии - Требования - Используемые классы" ставь на 1.

У стандарт героев стоит 3. Не в этом дело.

 

RemosДата: Воскресенье, 18 Апреля 2010, 10:16:02 | Сообщение # 7
2 уровень
Группа: Пользователи
Сообщений: 22
Награды: 0
Репутация: 0
Блокировки:
Все стандартные герои сразу исчезают(рабатают как нужно) из алтаря,и больше нельзя покупать героев пока не улутшиш крепость !!!
А новый(точнее скопированный стандартный) нехочет так делать :(

Добавлено (18-04-2010, 10:16)
---------------------------------------------
Могу скинуть карту,тем кто помоет разобраться...Невиду как тут залить ее...пишу свой скайп,я там всегда remos81 пишите,скину.

 

ProfiДата: Воскресенье, 18 Апреля 2010, 12:11:59 | Сообщение # 8
7 уровень
Группа: Проверенные
Сообщений: 332
Награды: 0
Репутация: 131
Блокировки:
В игровых константах нужно добавить нестандартного героя в соответствующее поле. Поищи там, там будут добавлены уже все стандартные...
 

EvilManДата: Воскресенье, 18 Апреля 2010, 12:48:00 | Сообщение # 9
3 уровень
Группа: Заблокированные
Сообщений: 65
Награды: 0
Репутация: -15
Блокировки:
Quote (Remos)
Remos

не много ступил лучше бы не создавал нового а изменял стандартного и было бы все норм


Мне откровенно @^*%$ на минусы!
 

RemosДата: Воскресенье, 18 Апреля 2010, 13:51:45 | Сообщение # 10
2 уровень
Группа: Пользователи
Сообщений: 22
Награды: 0
Репутация: 0
Блокировки:
Профи,спасибо поищу.
ЕвилМан,ррр....читай !!!! Я так и делал !! Я взял за основу героя из простой таверны ! Изменил ему модеть,и т.п. Но он нехочет быть героем !)
З.Ы. Посмотрю сейчас в константах,если решу проблему,отпишу.

Добавлено (18-04-2010, 13:51)
---------------------------------------------
Профи,проблему решил частично ! Герой теперь исчезает,и его считает за героя...НО...но если его заказать на 2 уровне крепости,все герои исчезнут как и должноо быть,а когда крепость улутшиш,он опять появится...т.е. я могу зделать 3 одинаковых героя 0_о....
Макс количество у героя стоит 1.
Используемые классы 3.
Что делать ?

 

SucksДата: Воскресенье, 18 Апреля 2010, 13:58:46 | Сообщение # 11
7 уровень
Группа: Проверенные
Сообщений: 377
Награды: 0
Репутация: 90
Блокировки:
Quote (Remos)
Я взял за основу героя из простой таверны

А может дело в том что он из таверны? Попробуй создать, допустим, из паладина.

 

RemosДата: Воскресенье, 18 Апреля 2010, 14:16:00 | Сообщение # 12
2 уровень
Группа: Пользователи
Сообщений: 22
Награды: 0
Репутация: 0
Блокировки:
Пробовал,аналогично.
 

EnforcerДата: Воскресенье, 18 Апреля 2010, 14:27:23 | Сообщение # 13
Энф
Когда-то смотрел за порядком
Группа: Ветераны
Сообщений: 3127
Награды: 7
Репутация: 981
Блокировки:
Я триггерами решил дело.
При покупке героя игроку Установить максимум героев = 0.
Действует на всех типов героев, включая нестандартные.




Сообщение отредактировал Enforcer - Воскресенье, 18 Апреля 2010, 14:35:07
 

RemosДата: Воскресенье, 18 Апреля 2010, 14:40:11 | Сообщение # 14
2 уровень
Группа: Пользователи
Сообщений: 22
Награды: 0
Репутация: 0
Блокировки:
Enforcer, Это все конечно хорошо,но в триггерах я 0

Добавлено (18-04-2010, 14:40)
---------------------------------------------
И еще раз скажу что я делаю НЕ псевдодоту,я делаю обычную расстройку,так что тут припокупке героя,установить колич героев на 0,не прокатит...Читай тему :(

 

[DUОS]Дата: Воскресенье, 18 Апреля 2010, 15:51:33 | Сообщение # 15
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Code
function MeleeStartingVisibility takes nothing returns nothing
      // Start by setting the ToD.
      call SetFloatGameState(GAME_STATE_TIME_OF_DAY, bj_MELEE_STARTING_TOD)

      // call FogMaskEnable(true)
      // call FogEnable(true)
endfunction

Code
function MeleeStartingHeroLimit takes nothing returns nothing
      local integer index

      set index = 0
      loop
          // max heroes per player
          call SetPlayerMaxHeroesAllowed(bj_MELEE_HERO_LIMIT, Player(index))

          // each player is restricted to a limit per hero type as well
          call ReducePlayerTechMaxAllowed(Player(index), 'Hamg', bj_MELEE_HERO_TYPE_LIMIT)
          call ReducePlayerTechMaxAllowed(Player(index), 'Hmkg', bj_MELEE_HERO_TYPE_LIMIT)
          call ReducePlayerTechMaxAllowed(Player(index), 'Hpal', bj_MELEE_HERO_TYPE_LIMIT)
          call ReducePlayerTechMaxAllowed(Player(index), 'Hblm', bj_MELEE_HERO_TYPE_LIMIT)

          call ReducePlayerTechMaxAllowed(Player(index), 'Obla', bj_MELEE_HERO_TYPE_LIMIT)
          call ReducePlayerTechMaxAllowed(Player(index), 'Ofar', bj_MELEE_HERO_TYPE_LIMIT)
          call ReducePlayerTechMaxAllowed(Player(index), 'Otch', bj_MELEE_HERO_TYPE_LIMIT)
          call ReducePlayerTechMaxAllowed(Player(index), 'Oshd', bj_MELEE_HERO_TYPE_LIMIT)

          call ReducePlayerTechMaxAllowed(Player(index), 'Edem', bj_MELEE_HERO_TYPE_LIMIT)
          call ReducePlayerTechMaxAllowed(Player(index), 'Ekee', bj_MELEE_HERO_TYPE_LIMIT)
          call ReducePlayerTechMaxAllowed(Player(index), 'Emoo', bj_MELEE_HERO_TYPE_LIMIT)
          call ReducePlayerTechMaxAllowed(Player(index), 'Ewar', bj_MELEE_HERO_TYPE_LIMIT)

          call ReducePlayerTechMaxAllowed(Player(index), 'Udea', bj_MELEE_HERO_TYPE_LIMIT)
          call ReducePlayerTechMaxAllowed(Player(index), 'Udre', bj_MELEE_HERO_TYPE_LIMIT)
          call ReducePlayerTechMaxAllowed(Player(index), 'Ulic', bj_MELEE_HERO_TYPE_LIMIT)
          call ReducePlayerTechMaxAllowed(Player(index), 'Ucrl', bj_MELEE_HERO_TYPE_LIMIT)

          call ReducePlayerTechMaxAllowed(Player(index), 'Npbm', bj_MELEE_HERO_TYPE_LIMIT)
          call ReducePlayerTechMaxAllowed(Player(index), 'Nbrn', bj_MELEE_HERO_TYPE_LIMIT)
          call ReducePlayerTechMaxAllowed(Player(index), 'Nngs', bj_MELEE_HERO_TYPE_LIMIT)
          call ReducePlayerTechMaxAllowed(Player(index), 'Nplh', bj_MELEE_HERO_TYPE_LIMIT)
          call ReducePlayerTechMaxAllowed(Player(index), 'Nbst', bj_MELEE_HERO_TYPE_LIMIT)
          call ReducePlayerTechMaxAllowed(Player(index), 'Nalc', bj_MELEE_HERO_TYPE_LIMIT)
          call ReducePlayerTechMaxAllowed(Player(index), 'Ntin', bj_MELEE_HERO_TYPE_LIMIT)
          call ReducePlayerTechMaxAllowed(Player(index), 'Nfir', bj_MELEE_HERO_TYPE_LIMIT)

          set index = index + 1
          exitwhen index == bj_MAX_PLAYERS
      endloop
endfunction

Code
function MeleeGrantHeroItems takes nothing returns nothing
      local integer index
      local trigger trig

      // Initialize the twinked hero counts.
      set index = 0
      loop
          set bj_meleeTwinkedHeroes[index] = 0

          set index = index + 1
          exitwhen index == bj_MAX_PLAYER_SLOTS
      endloop

      // Register for an event whenever a hero is trained, so that we can give
      // him/her their starting items.
      set index = 0
      loop
          set trig = CreateTrigger()
          call TriggerRegisterPlayerUnitEvent(trig, Player(index), EVENT_PLAYER_UNIT_TRAIN_FINISH, filterMeleeTrainedUnitIsHeroBJ)
          call TriggerAddAction(trig, function MeleeGrantItemsToTrainedHero)

          set index = index + 1
          exitwhen index == bj_MAX_PLAYERS
      endloop

      // Register for an event whenever a neutral hero is hired, so that we
      // can give him/her their starting items.
      set trig = CreateTrigger()
      call TriggerRegisterPlayerUnitEvent(trig, Player(PLAYER_NEUTRAL_PASSIVE), EVENT_PLAYER_UNIT_SELL, filterMeleeTrainedUnitIsHeroBJ)
      call TriggerAddAction(trig, function MeleeGrantItemsToHiredHero)

      // Flag that we are giving starting items to heroes, so that the melee
      // starting units code can create them as necessary.
      set bj_meleeGrantHeroItems = true
endfunction

Code
function MeleeStartingResources takes nothing returns nothing
      local integer index
      local player  indexPlayer
      local version v
      local integer startingGold
      local integer startingLumber

      set v = VersionGet()
      if (v == VERSION_REIGN_OF_CHAOS) then
          set startingGold = bj_MELEE_STARTING_GOLD_V0
          set startingLumber = bj_MELEE_STARTING_LUMBER_V0
      else
          set startingGold = bj_MELEE_STARTING_GOLD_V1
          set startingLumber = bj_MELEE_STARTING_LUMBER_V1
      endif

      // Set each player's starting resources.
      set index = 0
      loop
          set indexPlayer = Player(index)
          if (GetPlayerSlotState(indexPlayer) == PLAYER_SLOT_STATE_PLAYING) then
              call SetPlayerState(indexPlayer, PLAYER_STATE_RESOURCE_GOLD, startingGold)
              call SetPlayerState(indexPlayer, PLAYER_STATE_RESOURCE_LUMBER, startingLumber)
          endif

          set index = index + 1
          exitwhen index == bj_MAX_PLAYERS
      endloop
endfunction

Code
function MeleeClearExcessUnits takes nothing returns nothing
      local integer index
      local real    locX
      local real    locY
      local player  indexPlayer

      set index = 0
      loop
          set indexPlayer = Player(index)

          // If the player slot is being used, clear any nearby creeps.
          if (GetPlayerSlotState(indexPlayer) == PLAYER_SLOT_STATE_PLAYING) then
              set locX = GetStartLocationX(GetPlayerStartLocation(indexPlayer))
              set locY = GetStartLocationY(GetPlayerStartLocation(indexPlayer))

              call MeleeClearNearbyUnits(locX, locY, bj_MELEE_CLEAR_UNITS_RADIUS)
          endif

          set index = index + 1
          exitwhen index == bj_MAX_PLAYERS
      endloop
endfunction

Code
function MeleeStartingUnits takes nothing returns nothing
      local integer  index
      local player   indexPlayer
      local location indexStartLoc
      local race     indexRace

      call Preloader( "scripts\\SharedMelee.pld" )

      set index = 0
      loop
          set indexPlayer = Player(index)
          if (GetPlayerSlotState(indexPlayer) == PLAYER_SLOT_STATE_PLAYING) then
              set indexStartLoc = GetStartLocationLoc(GetPlayerStartLocation(indexPlayer))
              set indexRace = GetPlayerRace(indexPlayer)

              // Create initial race-specific starting units
              if (indexRace == RACE_HUMAN) then
                  call MeleeStartingUnitsHuman(indexPlayer, indexStartLoc, true, true, true)
              elseif (indexRace == RACE_ORC) then
                  call MeleeStartingUnitsOrc(indexPlayer, indexStartLoc, true, true, true)
              elseif (indexRace == RACE_UNDEAD) then
                  call MeleeStartingUnitsUndead(indexPlayer, indexStartLoc, true, true, true)
              elseif (indexRace == RACE_NIGHTELF) then
                  call MeleeStartingUnitsNightElf(indexPlayer, indexStartLoc, true, true, true)
              else
                  call MeleeStartingUnitsUnknownRace(indexPlayer, indexStartLoc, true, true, true)
              endif
          endif

          set index = index + 1
          exitwhen index == bj_MAX_PLAYERS
      endloop
        
endfunction

Code
function MeleeStartingAI takes nothing returns nothing
      local integer index
      local player  indexPlayer
      local race    indexRace

      set index = 0
      loop
          set indexPlayer = Player(index)
          if (GetPlayerSlotState(indexPlayer) == PLAYER_SLOT_STATE_PLAYING) then
              set indexRace = GetPlayerRace(indexPlayer)
              if (GetPlayerController(indexPlayer) == MAP_CONTROL_COMPUTER) then
                  // Run a race-specific melee AI script.
                  if (indexRace == RACE_HUMAN) then
                      call PickMeleeAI(indexPlayer, "human.ai", null, null)
                  elseif (indexRace == RACE_ORC) then
                      call PickMeleeAI(indexPlayer, "orc.ai", null, null)
                  elseif (indexRace == RACE_UNDEAD) then
                      call PickMeleeAI(indexPlayer, "undead.ai", null, null)
                      call RecycleGuardPosition(bj_ghoul[index])
                  elseif (indexRace == RACE_NIGHTELF) then
                      call PickMeleeAI(indexPlayer, "elf.ai", null, null)
                  else
                      // Unrecognized race.
                  endif
                  call ShareEverythingWithTeamAI(indexPlayer)
              endif
          endif

          set index = index + 1
          exitwhen index == bj_MAX_PLAYERS
      endloop
endfunction

Code
function MeleeInitVictoryDefeat takes nothing returns nothing
      local trigger    trig
      local integer    index
      local player     indexPlayer

      // Create a timer window for the "finish soon" timeout period, it has no timer
      // because it is driven by real time (outside of the game state to avoid desyncs)
      set bj_finishSoonTimerDialog = CreateTimerDialog(null)

      // Set a trigger to fire when we receive a "finish soon" game event
      set trig = CreateTrigger()
      call TriggerRegisterGameEvent(trig, EVENT_GAME_TOURNAMENT_FINISH_SOON)
      call TriggerAddAction(trig, function MeleeTriggerTournamentFinishSoon)

      // Set a trigger to fire when we receive a "finish now" game event
      set trig = CreateTrigger()
      call TriggerRegisterGameEvent(trig, EVENT_GAME_TOURNAMENT_FINISH_NOW)
      call TriggerAddAction(trig, function MeleeTriggerTournamentFinishNow)

      // Set up each player's mortality code.
      set index = 0
      loop
          set indexPlayer = Player(index)

          // Make sure this player slot is playing.
          if (GetPlayerSlotState(indexPlayer) == PLAYER_SLOT_STATE_PLAYING) then
              set bj_meleeDefeated[index] = false
              set bj_meleeVictoried[index] = false

              // Create a timer and timer window in case the player is crippled.
              set bj_playerIsCrippled[index] = false
              set bj_playerIsExposed[index] = false
              set bj_crippledTimer[index] = CreateTimer()
              set bj_crippledTimerWindows[index] = CreateTimerDialog(bj_crippledTimer[index])
              call TimerDialogSetTitle(bj_crippledTimerWindows[index], MeleeGetCrippledTimerMessage(indexPlayer))

              // Set a trigger to fire whenever a building is cancelled for this player.
              set trig = CreateTrigger()
              call TriggerRegisterPlayerUnitEvent(trig, indexPlayer, EVENT_PLAYER_UNIT_CONSTRUCT_CANCEL, null)
              call TriggerAddAction(trig, function MeleeTriggerActionConstructCancel)

              // Set a trigger to fire whenever a unit dies for this player.
              set trig = CreateTrigger()
              call TriggerRegisterPlayerUnitEvent(trig, indexPlayer, EVENT_PLAYER_UNIT_DEATH, null)
              call TriggerAddAction(trig, function MeleeTriggerActionUnitDeath)

              // Set a trigger to fire whenever a unit begins construction for this player
              set trig = CreateTrigger()
              call TriggerRegisterPlayerUnitEvent(trig, indexPlayer, EVENT_PLAYER_UNIT_CONSTRUCT_START, null)
              call TriggerAddAction(trig, function MeleeTriggerActionUnitConstructionStart)

              // Set a trigger to fire whenever this player defeats-out
              set trig = CreateTrigger()
              call TriggerRegisterPlayerEvent(trig, indexPlayer, EVENT_PLAYER_DEFEAT)
              call TriggerAddAction(trig, function MeleeTriggerActionPlayerDefeated)

              // Set a trigger to fire whenever this player leaves
              set trig = CreateTrigger()
              call TriggerRegisterPlayerEvent(trig, indexPlayer, EVENT_PLAYER_LEAVE)
              call TriggerAddAction(trig, function MeleeTriggerActionPlayerLeft)

              // Set a trigger to fire whenever this player changes his/her alliances.
              set trig = CreateTrigger()
              call TriggerRegisterPlayerAllianceChange(trig, indexPlayer, ALLIANCE_PASSIVE)
              call TriggerRegisterPlayerStateEvent(trig, indexPlayer, PLAYER_STATE_ALLIED_VICTORY, EQUAL, 1)
              call TriggerAddAction(trig, function MeleeTriggerActionAllianceChange)
          else
              set bj_meleeDefeated[index] = true
              set bj_meleeVictoried[index] = false

              // Handle leave events for observers
              if (IsPlayerObserver(indexPlayer)) then
                  // Set a trigger to fire whenever this player leaves
                  set trig = CreateTrigger()
                  call TriggerRegisterPlayerEvent(trig, indexPlayer, EVENT_PLAYER_LEAVE)
                  call TriggerAddAction(trig, function MeleeTriggerActionPlayerLeft)
              endif
          endif

          set index = index + 1
          exitwhen index == bj_MAX_PLAYERS
      endloop

      // Test for victory / defeat at startup, in case the user has already won / lost.
      // Allow for a short time to pass first, so that the map can finish loading.
      call TimerStart(CreateTimer(), 2.0, false, function MeleeTriggerActionAllianceChange)
endfunction

О,да... тут ещё и половина БЖшных функций... Близзы не тащат.
А насчёт героев - там же при создании нового гера меняется ID. Пускай иниц. сражения автор сконвертирует (Правка -> Конвертировать в текст", затем вставит этот код выше (по частям).
Чтобы гер был только один раз доступен, в редакторе объектов нажми Ctrl-D. Посмотри на своего нестандартного героя, что ты вставил. Там перед его именем будет надпись в формате 'XXXX'. Эту надпись копируешь и после call ReducePlayerTechMaxAllowed(Player(index), 'Nfir', bj_MELEE_HERO_TYPE_LIMIT) вставляешь call ReducePlayerTechMaxAllowed(Player(index), 'XXXX', bj_MELEE_HERO_TYPE_LIMIT), где ХХХХ - твой тип нестандартного героя.

Не умеете вы новичкам объяснять.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

RemosДата: Воскресенье, 18 Апреля 2010, 16:22:23 | Сообщение # 16
2 уровень
Группа: Пользователи
Сообщений: 22
Награды: 0
Репутация: 0
Блокировки:
Всем спасибо,проблема решилась...БЕЗ триггеров :) Тему можно закрывать.
 

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

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