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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Респмобов, на их изночальной позиции. (ээ пачему не работает ?? О_О)
Респмобов, на их изночальной позиции.
H_A_PKДата: Четверг, 25 Марта 2010, 15:50:44 | Сообщение # 1
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
вообщем проблема опять. я начал делать по другому.

1й триг

Code
function Trig_Init_Func003A takes nothing returns nothing
       set udg_Integer_MobsCount = ( udg_Integer_MobsCount + 1 )
       call SetUnitUserData( GetEnumUnit(), udg_Integer_MobsCount )
       set udg_Location_MobsPos[udg_Integer_MobsCount] = GetUnitLoc(GetEnumUnit())
endfunction

function Trig_Init_Actions takes nothing returns nothing
       set udg_Group_Mobs = GetUnitsOfPlayerAll(Player(11))
       call ForGroup( udg_Group_Mobs, function Trig_Init_Func003A )
endfunction

//===========================================================================
function InitTrig_Init takes nothing returns nothing
       set gg_trg_Init = CreateTrigger()
       call TriggerAddAction( gg_trg_Init, function Trig_Init_Actions )
endfunction

2й триг. каторый с ХТ.

Code
globals
    hashtable Hash=InitHashtable()
endglobals

function ef takes nothing returns nothing
    local timer t=GetExpiredTimer()
local unit En=LoadUnitHandle(Hash, GetHandleId(t), 1)
    local location loc=LoadLocationHandle(Hash, GetHandleId(t), 2)
    call DisplayTimedTextToForce( GetPlayersAll(), 5.00, UnitId2StringBJ(GetUnitTypeId(En)))
    local unit u=CreateUnitAtLoc(Player(11), GetUnitTypeId(En), loc, bj_UNIT_FACING )
           call SetUnitUserData(u, GetUnitUserData(En))
           call GroupAddUnit(udg_Group_Mobs, u)
           call RemoveUnit(En)
    call DestroyTimer(t)
    call FlushChildHashtable(Hash,GetHandleId(t))
    set En = null
    set u = null
    set t = null
endfunction

function Trig_Respawn_Func001A takes nothing returns nothing
local unit u
local unit Enum = GetEnumUnit()
local location loc = udg_Location_MobsPos[GetUnitUserData(Enum)]
local timer t=CreateTimer()
       if GetUnitState(Enum, UNIT_STATE_LIFE) <= 0 then
       call DisplayTimedTextToForce( GetPlayersAll(), 5.00, UnitId2StringBJ(GetUnitTypeId(Enum)))
        call SaveUnitHandle(Hash, GetHandleId(t), 1, Enum)
        call SaveLocationHandle(Hash, GetHandleId(t), 2, loc)
        call TimerStart(t, 10, false, function ef)
        call GroupRemoveUnit(udg_Group_Mobs, Enum)
       endif
set u =null
set Enum = null
endfunction

function Trig_Respawn_Actions takes nothing returns nothing
       call ForGroup(udg_Group_Mobs, function Trig_Respawn_Func001A)
endfunction

//===========================================================================
function InitTrig_Respawn takes nothing returns nothing
       set gg_trg_Respawn = CreateTrigger()
       TriggerRegisterPlayerUnitEvent(gg_trg_Respawn, Player(11), EVENT_PLAYER_UNIT_DEATH, null)
       call TriggerAddAction( gg_trg_Respawn, function Trig_Respawn_Actions )
endfunction

здесь всё правельно находит юнита находит его точку но
проблема одна в этой строчке...

Code
call SaveUnitHandle(Hash, GetHandleId(t), 1, Enum)

у меня юнит сохранился
Code
local unit En=LoadUnitHandle(Hash, GetHandleId(t), 1)

а здесь он загружается как null.
вообщем я проверил это с помощью обыкновеного вывода на экран.

Добавлено (26-03-2010, 14:13)
---------------------------------------------
почему он загружается так, и имено юнит.
локацию он загружает по нормальному.
и выводин на экран координаты


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец


Сообщение отредактировал H_A_PK - Пятница, 26 Марта 2010, 14:19:19
 

windrunnerДата: Четверг, 25 Марта 2010, 17:57:51 | Сообщение # 2
10 уровень
Группа: Проверенные
Сообщений: 1259
Награды: 0
Репутация: 218
Блокировки:
Quote (Дятел)
Используй гениционые канстаты джаза, нуб

Название щас придумал?=)
Если нет то поведай что это.И судя по тому что это знают не все то зачем это юзать тут?


И в правду мир сошел с ума...
И до тех пор пока нас не обесточат
Пока не догорит аварийных фонарей заряд
Мы будем жечь тут электричество что есть мочи
Русский мапмейкинг - бессмысленный и беспощадный.xD
 

H_A_PKДата: Четверг, 25 Марта 2010, 18:21:51 | Сообщение # 3
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Quote (Дятел)
1 нах!
Используй гениционые канстаты джаза, нуб <_<

О_О..
мб заместа тролинга мас ты мне поможешь ?
Quote (windrunner)
Название щас придумал?=)
Если нет то поведай что это.И судя по тому что это знают не все то зачем это юзать тут?

или ты windrunner,


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

windrunnerДата: Четверг, 25 Марта 2010, 19:42:17 | Сообщение # 4
10 уровень
Группа: Проверенные
Сообщений: 1259
Награды: 0
Репутация: 218
Блокировки:
Я могу=)

И в правду мир сошел с ума...
И до тех пор пока нас не обесточат
Пока не догорит аварийных фонарей заряд
Мы будем жечь тут электричество что есть мочи
Русский мапмейкинг - бессмысленный и беспощадный.xD
 

FkoFFДата: Четверг, 25 Марта 2010, 21:33:19 | Сообщение # 5
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
А вообще какой то странный способ респавна... не проще сделать на гуи? сделать Neutral_Group[x] в которую добавлять мобов по месту дислокации. И если дохнут мобы из данной группы - респавнить их через wait \ create 1 unit xx at location[x] facing x...

 

ProfiДата: Четверг, 25 Марта 2010, 22:07:59 | Сообщение # 6
7 уровень
Группа: Проверенные
Сообщений: 332
Награды: 0
Репутация: 131
Блокировки:
Я не силен конечно в жасс, но как я понимаю при смерти юнита каждый раз инициализируется хешь таблица, а она должна только 1 раз это делать, при загрузке карты.

Добавлено (25-03-2010, 22:05)
---------------------------------------------
Или пользуйся наработками, как это делают крутые мапмэйкеры, типа меня)

Добавлено (25-03-2010, 22:07)
---------------------------------------------
Да и код ужасный в 1ой функции как мне кажется.

 

KаratДата: Четверг, 25 Марта 2010, 22:10:13 | Сообщение # 7
3 уровень
Группа: Пользователи
Сообщений: 69
Награды: 0
Репутация: 10
Блокировки:
Quote (Profi)
Я не силен конечно в жасс, но как я понимаю при смерти юнита каждый раз инициализируется хешь таблица, а она должна только 1 раз это делать, при загрузке карты.

По логике, один раз. Инициализация кэша ведь происходит вне функций.
Quote (Profi)
Или пользуйся наработками, как это делают крутые мапмэйкеры, типа меня)

А я-то думал, что крутые мапмейкеры их создают) Ну да ладно, не имею ничего против использования наработок.
H_A_PK, По теме, хотелось бы увидеть пример с этим кодом, так разобраться трудно.
 

windrunnerДата: Четверг, 25 Марта 2010, 22:33:11 | Сообщение # 8
10 уровень
Группа: Проверенные
Сообщений: 1259
Награды: 0
Репутация: 218
Блокировки:
Лол ладно нап уговорил завтра дам наработку + код(щас башка не варит)

И в правду мир сошел с ума...
И до тех пор пока нас не обесточат
Пока не догорит аварийных фонарей заряд
Мы будем жечь тут электричество что есть мочи
Русский мапмейкинг - бессмысленный и беспощадный.xD
 

БюллетеньДата: Четверг, 25 Марта 2010, 23:06:44 | Сообщение # 9
6 уровень
Группа: Проверенные
Сообщений: 160
Награды: 0
Репутация: 21
Блокировки:
Quote (Profi)
Я не силен конечно в жасс, но как я понимаю при смерти юнита каждый раз инициализируется хешь таблица, а она должна только 1 раз это делать, при загрузке карты.

Нет, таблица из блока глобалс, будет подшиватся в глобалки при загрузки карты

Плюс ты вываешь из функции выше, функцию ниже :о

Просто при загрузки запоминай все позиции, и записывай их через GetHandleId() юниту, при смерти загрузим и все дела о-о


[ZorDe]
Ф бой Тускарцы, вы мега %)
 

H_A_PKДата: Пятница, 26 Марта 2010, 08:50:43 | Сообщение # 10
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Quote (FkoFF)
А вообще какой то странный способ респавна... не проще сделать на гуи? сделать Neutral_Group[x] в которую добавлять мобов по месту дислокации. И если дохнут мобы из данной группы - респавнить их через wait \ create 1 unit xx at location[x] facing x...

лол ну там так и стоит, тока не ждать а таймер...
Quote (Profi)
Да и код ужасный в 1ой функции как мне кажется.

ну там я прото гуи в джасс конвертнул.
Quote (Kаrat)
По логике, один раз. Инициализация кэша ведь происходит вне функций.

ну дак итак.
Quote (Бюллетень)
Нет, таблица из блока глобалс, будет подшиватся в глобалки при загрузки карты

Плюс ты вываешь

Quote (Бюллетень)
Плюс ты вываешь из функции выше, функцию ниже :о

где ты это увидел, мб я из функции ниже в функцию выше, да и темболее не функцию я вызываю, а тригер запускаю.
Quote (Бюллетень)
Просто при загрузки запоминай все позиции, и записывай их через GetHandleId() юниту, при смерти загрузим и все дела о-о

тоесть к юниту пришить его локацию )). а это мысль.

Добавлено (26-03-2010, 08:50)
---------------------------------------------

Code
globals
  hashtable Hash = InitHashtable()
endglobals

function Trig_One_Func003A takes nothing returns nothing
     local location loc
     set udg_i = udg_i + 1
     set udg_Creeps[udg_i] = GetEnumUnit()
     set loc = GetUnitLoc(GetEnumUnit())
     call SaveLocationHandle(Hash, GetHandleId(udg_Creeps[udg_i]), 1, loc)
endfunction

function Trig_One_Actions takes nothing returns nothing
     set udg_i = 0
     call ForGroup(GetUnitsOfPlayerAll(Player(11)), function Trig_One_Func003A)
endfunction

function ef takes nothing returns nothing
  local timer t=GetExpiredTimer()
  local location in = LoadLocationHandle(Hash, GetHandleId(t), 1)
  local unit un = LoadUnitHandle(Hash, GetHandleId(t), 2)
  local integer i = LoadInteger(Hash, GetHandleId(t), 3)
  local unit u = CreateUnitAtLoc(Player(11), GetUnitTypeId(un), in, bj_UNIT_FACING )
  set udg_Creeps[i] = u
  call DestroyTimer(t)
  call FlushChildHashtable(udg_Hash,GetHandleId(t))
  set un = null
  set u = null
  set in = null
  set t = null
endfunction

function Trig_Death_Actions takes nothing returns nothing
     local timer t = CreateTimer()
     local location loc
     local unit u = GetDyingUnit()
     if IsUnitInGroup(u, GetUnitsOfPlayerAll(Player(11))) == true then
         set udg_i = 1
         loop
             exitwhen udg_i > CountUnitsInGroup(GetUnitsOfPlayerAll(Player(11)))
              if u == udg_Creeps[udg_i] then
                 set loc = LoadLocationHandle(Hash, GetHandleId(udg_Creeps[udg_i]),1)
                 call SaveLocationHandle(Hash, GetHandleId(t), 1, loc)
                 call SaveUnitHandle(Hash, GetHandleId(t), 2, u)
                 call SaveInteger(Hash, GetHandleId(t), 3, udg_i)
                 call TimerStart(t, 10, false, function ef)
              endif
             set udg_i = udg_i + 1
         endloop
     endif
endfunction

//===========================================================================
function InitTrig_Death takes nothing returns nothing
     local trigger gg_trg_Death = CreateTrigger(  )
     set gg_trg_One = CreateTrigger(  )
     call TriggerAddAction( gg_trg_One, function Trig_One_Actions )
     call TriggerRegisterAnyUnitEventBJ( gg_trg_Death, EVENT_PLAYER_UNIT_DEATH )
     call TriggerAddAction( gg_trg_Death, function Trig_Death_Actions )
     set gg_trg_Death = null
endfunction

сделал так ща гляну будет ли идти.


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец


Сообщение отредактировал H_A_PK - Пятница, 26 Марта 2010, 09:31:07
 

windrunnerДата: Пятница, 26 Марта 2010, 11:12:02 | Сообщение # 11
10 уровень
Группа: Проверенные
Сообщений: 1259
Награды: 0
Репутация: 218
Блокировки:
H_A_PK, Уменьшай кол-во функций=) И юзай цикл а не форгроуп

И в правду мир сошел с ума...
И до тех пор пока нас не обесточат
Пока не догорит аварийных фонарей заряд
Мы будем жечь тут электричество что есть мочи
Русский мапмейкинг - бессмысленный и беспощадный.xD
 

БюллетеньДата: Пятница, 26 Марта 2010, 13:27:30 | Сообщение # 12
6 уровень
Группа: Проверенные
Сообщений: 160
Награды: 0
Репутация: 21
Блокировки:
Если через ХТ, запиши всем локации в loc[GetHandleId(unit)]
При смерти загружай лок с ИДхендлом юнита.
Если нужно ждать, то к таймеру юнита привяжи.

Quote (windrunner)
И юзай цикл а не форгроуп

Чем плох фор гроуп?

Quote (H_A_PK)
где ты это увидел, мб я из функции ниже в функцию выше, да и темболее не функцию я вызываю, а тригер запускаю.

Палим >>
Quote (H_A_PK)
Code
      set udg_group[30] = GetUnitsInRectMatching(GetPlayableMapRect(), Condition(function Trig_One_Func002002002))

Фильтер ниже


[ZorDe]
Ф бой Тускарцы, вы мега %)
 

H_A_PKДата: Пятница, 26 Марта 2010, 14:13:37 | Сообщение # 13
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
вообщем проблема опять. я начал делать по другому.

1й триг

Code
function Trig_Init_Func003A takes nothing returns nothing
       set udg_Integer_MobsCount = ( udg_Integer_MobsCount + 1 )
       call SetUnitUserData( GetEnumUnit(), udg_Integer_MobsCount )
       set udg_Location_MobsPos[udg_Integer_MobsCount] = GetUnitLoc(GetEnumUnit())
endfunction

function Trig_Init_Actions takes nothing returns nothing
       set udg_Group_Mobs = GetUnitsOfPlayerAll(Player(11))
       call ForGroup( udg_Group_Mobs, function Trig_Init_Func003A )
endfunction

//===========================================================================
function InitTrig_Init takes nothing returns nothing
       set gg_trg_Init = CreateTrigger()
       call TriggerAddAction( gg_trg_Init, function Trig_Init_Actions )
endfunction

2й триг. каторый с ХТ.

Code
globals
    hashtable Hash=InitHashtable()
endglobals

function ef takes nothing returns nothing
    local timer t=GetExpiredTimer()
local unit En=LoadUnitHandle(Hash, GetHandleId(t), 1)
    local location loc=LoadLocationHandle(Hash, GetHandleId(t), 2)
    call DisplayTimedTextToForce( GetPlayersAll(), 5.00, UnitId2StringBJ(GetUnitTypeId(En)))
    local unit u=CreateUnitAtLoc(Player(11), GetUnitTypeId(En), loc, bj_UNIT_FACING )
           call SetUnitUserData(u, GetUnitUserData(En))
           call GroupAddUnit(udg_Group_Mobs, u)
           call RemoveUnit(En)
    call DestroyTimer(t)
    call FlushChildHashtable(Hash,GetHandleId(t))
    set En = null
    set u = null
    set t = null
endfunction

function Trig_Respawn_Func001A takes nothing returns nothing
local unit u
local unit Enum = GetEnumUnit()
local location loc = udg_Location_MobsPos[GetUnitUserData(Enum)]
local timer t=CreateTimer()
       if GetUnitState(Enum, UNIT_STATE_LIFE) <= 0 then
       call DisplayTimedTextToForce( GetPlayersAll(), 5.00, UnitId2StringBJ(GetUnitTypeId(Enum)))
        call SaveUnitHandle(Hash, GetHandleId(t), 1, Enum)
        call SaveLocationHandle(Hash, GetHandleId(t), 2, loc)
        call TimerStart(t, 10, false, function ef)
        call GroupRemoveUnit(udg_Group_Mobs, Enum)
       endif
set u =null
set Enum = null
endfunction

function Trig_Respawn_Actions takes nothing returns nothing
       call ForGroup(udg_Group_Mobs, function Trig_Respawn_Func001A)
endfunction

//===========================================================================
function InitTrig_Respawn takes nothing returns nothing
       set gg_trg_Respawn = CreateTrigger()
       TriggerRegisterPlayerUnitEvent(gg_trg_Respawn, Player(11), EVENT_PLAYER_UNIT_DEATH, null)
       call TriggerAddAction( gg_trg_Respawn, function Trig_Respawn_Actions )
endfunction

здесь всё правельно находит юнита находит его точку но
проблема одна в этой строчке...

Code
call SaveUnitHandle(Hash, GetHandleId(t), 1, Enum)

у меня юнит сохранился
Code
local unit En=LoadUnitHandle(Hash, GetHandleId(t), 1)

а здесь он загружается как null.
вообщем я проверил это с помощью обыкновеного вывода на экран.

Добавлено (26-03-2010, 14:13)
---------------------------------------------
почему он загружается так, и имено юнит.
локацию он загружает по нормальному.
и выводин на экран координаты


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец


Сообщение отредактировал H_A_PK - Пятница, 26 Марта 2010, 14:19:03
 

windrunnerДата: Пятница, 26 Марта 2010, 15:00:57 | Сообщение # 14
10 уровень
Группа: Проверенные
Сообщений: 1259
Награды: 0
Репутация: 218
Блокировки:
Quote (Бюллетень)
Чем плох фор гроуп?

Форгроуп насколько я знаю медленнее=)

Добавлено (26-03-2010, 15:00)
---------------------------------------------

Quote (Бюллетень)
Если через ХТ, запиши всем локации в loc[GetHandleId(unit)]

Нельзя в глобалке макс ячейка 8192 а хендл 10-12 значное число


И в правду мир сошел с ума...
И до тех пор пока нас не обесточат
Пока не догорит аварийных фонарей заряд
Мы будем жечь тут электричество что есть мочи
Русский мапмейкинг - бессмысленный и беспощадный.xD
 

H_A_PKДата: Пятница, 26 Марта 2010, 15:17:13 | Сообщение # 15
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
всё клоуз тему. я сделал то что хотел.
и всё шло к чертям из-за того , что у умника в карте стояло действие удолить умирающего юнита через 6 секунд.


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

windrunnerДата: Пятница, 26 Марта 2010, 15:47:27 | Сообщение # 16
10 уровень
Группа: Проверенные
Сообщений: 1259
Награды: 0
Репутация: 218
Блокировки:
H_A_PK, Хех а кто этот умник?

И в правду мир сошел с ума...
И до тех пор пока нас не обесточат
Пока не догорит аварийных фонарей заряд
Мы будем жечь тут электричество что есть мочи
Русский мапмейкинг - бессмысленный и беспощадный.xD
 

H_A_PKДата: Суббота, 27 Марта 2010, 13:10:50 | Сообщение # 17
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Forum_Russia ))

Добавлено (27-03-2010, 13:10)
---------------------------------------------
драгон клоуз тему О_О, ато открыта а проблема решина.


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

AriusДата: Суббота, 27 Марта 2010, 13:24:43 | Сообщение # 18
10 уровень
Группа: Проверенные
Сообщений: 2163
Награды: 2
Репутация: 267
Блокировки:
Quote (H_A_PK)
драгон клоуз тему О_О, ато открыта а проблема решина.

его с субботы нет
 

DragoNДата: Воскресенье, 28 Марта 2010, 12:20:55 | Сообщение # 19
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
мне написать в лс что ли очень сложно?

El Psy Congroo
 

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

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