XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
sleepw

offline
Опыт: 8,449
Активность:
Преместить Юнитов (jass)
хелп ктото.. немогу понять в чём трабл..вот там в функции MoveUnits
получается идёт проверка в какой тиме игрок..
но почемуто всё время перемещает в gg_rct_t2..
де ошибка?)

Код:
function TeamCheck takes nothing returns boolean
    if ( not ( GetOwningPlayer(GetLastCreatedUnit()) == ForcePickRandomPlayer(udg_Team1) ) ) then
        return false
    endif
    return true
endfunction

function MoveUnits takes nothing returns nothing
    if ( TeamCheck() ) then
        call SetUnitPositionLoc( GetLastCreatedUnit(), GetRandomLocInRect(gg_rct_t1) )
        call PanCameraToTimedLocForPlayer( GetOwningPlayer(GetLastCreatedUnit()), GetUnitLoc(GetLastCreatedUnit()), 0.00 )
    else
        call SetUnitPositionLoc( GetLastCreatedUnit(), GetRandomLocInRect(gg_rct_t2) )
        call PanCameraToTimedLocForPlayer( GetOwningPlayer(GetLastCreatedUnit()), GetUnitLoc(GetLastCreatedUnit()), 0.00 )
    endif
endfunction

function Trig_Rndm_Actions takes nothing returns nothing
    local integer i = 0
    local integer hero
    loop
        exitwhen i > 8
        if GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING then
            set hero = RandomTypeHero()
            //...
            //Создать hero Для игрока i+1
            //...
            call CreateNUnitsAtLoc( 1, hero, Player(i), GetRectCenter(GetPlayableMapRect()), bj_UNIT_FACING )
            set udg_HeroID[GetConvertedPlayerId(GetOwningPlayer(GetLastCreatedUnit()))] = GetLastCreatedUnit()
            call DisplayTimedTextToForce(GetPlayersAll(),8,GetPlayerNameColor(GetPlayerId(GetOwni  ngPlayer(GetLastCreatedUnit())))+" has randomly selected the "+GetUnitName(GetLastCreatedUnit()))
            call MoveUnits()
        endif
        set i = i + 1
        call TriggerSleepAction(1)
    endloop
endfunction

//===========================================================================
function InitTrig_Rndm takes nothing returns nothing
    set gg_trg_Rndm = CreateTrigger(  )
    call TriggerAddAction( gg_trg_Rndm, function Trig_Rndm_Actions )
endfunction
Старый 23.02.2008, 22:08
Elisar

offline
Опыт: 2,031
Активность:
Цитата:
if ( TeamCheck() ) then

я бы с этим поэксперементировал)может сделать if ( TeamCheck()==true ) then
а то так он у тебя вечно на нет уходит так как проверка глючит)

Elisar добавил:
хотя я и сам не особо в этом разбираюсь)

Elisar добавил:
а вообще вроде бы там не оч правильна структура))ты откуда это брал?
Старый 23.02.2008, 22:18
sleepw

offline
Опыт: 8,449
Активность:
ну мув юнитс и тим чек сам написал..
на гуи пашет.. так - нет.

sleepw добавил:
Цитата:
Сообщение от Elisar
я бы с этим поэксперементировал)может сделать if ( TeamCheck()==true ) then

так чёто непонятное..
1 го кинуло правильно второго нет..
Старый 23.02.2008, 22:25
ScorpioT1000
Работаем
offline
Опыт: отключен
почитай "Ищем баги сами"
Старый 23.02.2008, 23:41
sleepw

offline
Опыт: 8,449
Активность:
окок проверь мне тем нюбским способ тут..
и вообще давай удалим все темы с вопросами в академии и кинем туда ссылку на Ищем баги сами?
Старый 23.02.2008, 23:43
ScorpioT1000
Работаем
offline
Опыт: отключен
sleepw мне влом разбираться в огромном коде, ну да ладно...

Смотри раз не выполняется
Цитата:
TeamCheck

то следовательно ошибка в
Цитата:
return false

может трабла тут?
Цитата:
PickRandomPlayer

че за тима то?
Старый 23.02.2008, 23:54
sleepw

offline
Опыт: 8,449
Активность:
ну заносятся игроки от 1-4 в udg_Team1 и 5-8 в Тим2..
тобишь если Овнер ов Тим1 переместить тудато если нет то тудато..
это просто было написано на гуи и работало на ура.
конвертнул в жас и вот вставил.. почемуто работает по дебильному..

sleepw добавил:
а когад идёт проверка на плеер слот статус равно играет комп считается за Играет или нет?
Старый 24.02.2008, 00:10
ScorpioT1000
Работаем
offline
Опыт: отключен
реально попробуй прописать текстом кем является тот или иной юнит, но мне кажется что ошибка в
Цитата:
ForcePickRandomPlayer

очевидно рандом плейер)

ScorpioT1000 добавил:
Цитата:
а когад идёт проверка на плеер слот статус равно играет комп считается за Играет или нет?

есть там 2 разных условия вродь:
1 - Открыто/Игрок/Комп
2 - нет игрока/Играет/Вышел из игры
Старый 24.02.2008, 00:12
DeaDoK

offline
Опыт: 5,783
Активность:
if(PlayerIsActive(udg_team1))then

[i]DeaDoK добавил:

А комп никак не Играет.(только Игрок)
Старый 24.02.2008, 00:19
J
expert
offline
Опыт: 48,447
Активность:
Код:
function Trig_Rndm_Actions takes nothing returns nothing
    local integer i = 0
    local integer hero
    local unit u
    local real X
    local real Y
    loop
        exitwhen i > 8
        if GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING then
            set hero = RandomTypeHero()
            if IsPlayerInForce(Player(i), udg_Team1) then  
                set X = GetRectCenterX(gg_rct_t1) 
                set Y = GetRectCenterY(gg_rct_t1)
            else  
                set X = GetRectCenterX(gg_rct_t2) 
                set Y = GetRectCenterY(gg_rct_t2)
            endif 
            set u = CreateUnit( Player(i), hero, X, Y, 0)
            set udg_HeroID[i+1] = u
            call DisplayTimedTextToForce(bj_FORCE_ALL_PLAYERS, 8, GetPlayerNameColor(i) + " has randomly selected the " + GetUnitName(u)) 
            call PanCameraToTimedForPlayer( Player(i), GetUnitX(u), GetUnitY(u), 0)
        endif
        set i = i + 1
        call TriggerSleepAction(1)
    endloop
endfunction

Отредактировано Jon, 24.02.2008 в 01:12.
Старый 24.02.2008, 00:36
sleepw

offline
Опыт: 8,449
Активность:
Jon
set u = CreateUnit(Player(i) , hero , X , Y)
not enough arguments passed to function :(

sleepw добавил:
а всё там фейсинга нефатало..
Старый 24.02.2008, 01:11
J
expert
offline
Опыт: 48,447
Активность:
подправил

Jon добавил:
убюери там функцию мова юнита в конце
Старый 24.02.2008, 01:12
sleepw

offline
Опыт: 8,449
Активность:
о зачет.. всё как нужненько..
мм а что было не правильно просвети ) хочецо знать :)

sleepw добавил:
эмь.. замени плз не ректцентр а рандом ин рект:)
я чёт нешарю как О_о
Старый 24.02.2008, 01:15
ScorpioT1000
Работаем
offline
Опыт: отключен
Jon, ты вечно ошибаешься ^_^
Старый 24.02.2008, 01:15
sleepw

offline
Опыт: 8,449
Активность:
ScorpioT1000
зато как помогает:)
Старый 24.02.2008, 01:16
J
expert
offline
Опыт: 48,447
Активность:
ScorpioT1000 я вечно ошибаюсь но мои ответыв всегда правельны, это дар...
sleepwнеправельная проверка игрока с группой играков, ты про верял не это, а равенство игрока со случачным играком из группы. + некоторые оптимизаторские погрешности
Старый 24.02.2008, 01:18
ScorpioT1000
Работаем
offline
Опыт: отключен
Цитата:
неправельная проверка игрока с группой играков, ты про верял не это, а равенство игрока со случачным играком из группы. + некоторые оптимизаторские погрешности

я с самого начала об этом говорил... ээх
Старый 24.02.2008, 01:21
J
expert
offline
Опыт: 48,447
Активность:
Код:
set X = GetRandomReal(GetRectMinX(Rec),GetRectMaxX(Rec))
set Y = GetRandomReal(GetRectMinY(Rec),GetRectMaxY(Rec))
Старый 24.02.2008, 01:23
sleepw

offline
Опыт: 8,449
Активность:
тобишь вот так?)
set X = GetRandomReal(GetRectMinX(gg_rct_t1),GetRectMaxX(gg_rct_t1))
set Y = GetRandomReal(GetRectMinY(gg_rct_t1),GetRectMaxY(gg_rct_t1))
else
set X = GetRandomReal(GetRectMinX(gg_rct_t2),GetRectMaxX(gg_rct_t2))
set Y = GetRandomReal(GetRectMinY(gg_rct_t2),GetRectMaxY(gg_rct_t2))
Старый 24.02.2008, 01:26
ScorpioT1000
Работаем
offline
Опыт: отключен
так, так
Старый 24.02.2008, 01:28
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 01:55.