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

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

Закрытая тема
 
The Requiem

offline
Опыт: 2,766
Активность:
Юниты создаются неправильно.
Имеются области (регионы), при инициализации карты в них (в случайной точке) должны создаваться боевые единицы (в случайном количестве от 1 до 5). Но создаются именно 4 и всегда в одном и том-же положении.
А мне надо, чтобы могло создать 1 или 2 или 3 и так далее, чтобы создавались всегда в случайно точке. Ниже код:
function Start_Act takes nothing returns nothing
    local rect array Q
    local integer W = 0
    local integer E = 1
    local integer R = GetRandomInt(1, 5)
    local integer T = GetRandomInt(0, 360)
    local player Y = Player(PLAYER_NEUTRAL_AGGRESSIVE)

    set Q[1] = gg_rct_Spawn_Of_Crystalls_No_1
    set Q[2] = gg_rct_Spawn_Of_Crystalls_No_2
    set Q[3] = gg_rct_Spawn_Of_Crystalls_No_3
    set Q[4] = gg_rct_Spawn_Of_Crystalls_No_4
    set Q[5] = gg_rct_Spawn_Of_Crystalls_No_5
    set Q[6] = gg_rct_Spawn_Of_Crystalls_No_6
    set Q[7] = gg_rct_Spawn_Of_Crystalls_No_7
    set Q[8] = gg_rct_Spawn_Of_Crystalls_No_8
    set Q[9] = gg_rct_Spawn_Of_Crystalls_No_9
    set Q[10] = gg_rct_Spawn_Of_Crystalls_No_10
    set Q[11] = gg_rct_Spawn_Of_Crystalls_No_11
    set Q[12] = gg_rct_Spawn_Of_Crystalls_No_12
    set Q[13] = gg_rct_Spawn_Of_Crystalls_No_13
    set Q[14] = gg_rct_Spawn_Of_Crystalls_No_14
    set Q[15] = gg_rct_Spawn_Of_Crystalls_No_15
    set Q[16] = gg_rct_Spawn_Of_Crystalls_No_16
    set Q[17] = gg_rct_Spawn_Of_Crystalls_No_17
    set Q[18] = gg_rct_Spawn_Of_Crystalls_No_18
    set Q[19] = gg_rct_Spawn_Of_Crystalls_No_19
    set Q[20] = gg_rct_Spawn_Of_Crystalls_No_20

    loop
    exitwhen W > 7
    call CreateFogModifierRectBJ(true, Player(W), FOG_OF_WAR_VISIBLE, GetEntireMapRect())
    set W = W + 1
    endloop

    loop
    exitwhen E > 20
    call CreateNUnitsAtLoc(R, 'h000', Y, GetRandomLocInRect(Q[E]), T)
    set E = E + 1
    endloop

endfunction
Еще буду благодарен, если вы мне укажете как правильно заменить BJ'шку на native'ку. В common.j нашел, но не понял какие правильно аргументы писать. Заранее спасибо.
Старый 12.11.2011, 03:56
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
мб потомучто надо на каждый такт цикла заново рандом пускать?
тоесть так
loop
    exitwhen E > 20
    call CreateNUnitsAtLoc(R, 'h000', Y, GetRandomLocInRect(Q[E]), T)
    set E = E + 1
    set T = GetRandomInt(0, 360)
    endloop
вроде бы
вот терь точно так, будут разнообразно повернуты

Отредактировано Hatsume_Hate, 12.11.2011 в 04:04.
Старый 12.11.2011, 03:58
The Requiem

offline
Опыт: 2,766
Активность:
Hatsume_Hate, подробней пожалуйста) Сонное состояние дает о себе знать =]
The Requiem добавил:
Hatsume_Hate, честно признаюсь: даже и не знал =) Спасибо большое.
А насчет нативки не подскажешь, какие аргументы надо вписывать?
Старый 12.11.2011, 04:09
The Requiem

offline
Опыт: 2,766
Активность:
Hatsume_Hate, понятно. Но все-равно один вопрос остался нерешенным: почему с каждым новым стартом, юниты создаются в одном и том-же количестве (допустим в первый раз создалось 3 юнита в одной области, 5 в другой и так далее, потом делаю перезапуск карты и создаются опять-же в тех точках и таком-же количестве, что и в прошлый раз).
Старый 12.11.2011, 04:14
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
в редакторе стоит фиксированное значение случайных значений?
я об этом
Миниатюры
Кликните на картинку для увеличения
Название:  ttt.JPG
Просмотров: 10
Размер:  150.7 Кбайт  
Старый 12.11.2011, 04:16
The Requiem

offline
Опыт: 2,766
Активность:
Да уж, я многое не знал =[
Hatsume_Hate, спасибо за помощь. С нативкой как-нибудь разберусь.
[close]
Старый 12.11.2011, 04:24
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
А насчет нативки не подскажешь, какие аргументы надо вписывать?
FellGuard добавил:
кстати исходный код всяких BJ функций лучше тоже смотреть там, только вот с выходом патча с затыком эксплоита и добавлением типов hashtable и agent соотв. там ничего не обновлялось. Так что иногда поглядывайте и в скрипты в архиве war3Patch.mpq
Старый 12.11.2011, 05:42
The Requiem

offline
Опыт: 2,766
Активность:
FellGuard, это все есть и в обычном common.j. Мне надо знать аргументы на примере.
Старый 12.11.2011, 05:43
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
native    CreateUnit              takes player id, integer unitid, real x, real y, real face returns unit
native    CreateUnitByName        takes player whichPlayer, string unitname, real x, real y, real face returns unit
native    CreateUnitAtLoc         takes player id, integer unitid, location whichLocation, real face returns unit
native    CreateUnitAtLocByName   takes player id, string unitname, location whichLocation, real face returns unit
что непонятного? Имхо названия параметров говорят сами за себя
FellGuard добавил:
local integer j
local integer i
local integer Count
// ...
set i = 1
loop
  exitwhen i > 20
    set j = 0
    set Count = GetRandomInt(1,5)
    // Фокус в том, что юниты создаются поштучно.
    loop
      exitwhen j == Count
        call CreateUnit(Y, 'h000', GetRandomReal(GetRectMinX(Q[i]), GetRectMaxX(Q[i])), GetRandomReal(GetRectMinY(Q[i]), GetRectMaxY(Q[i])), GetRandomReal(0., 360.))
        set j = j + 1
    endloop
    set i = i + 1
endloop

Отредактировано FellGuard, 12.11.2011 в 06:11.
Старый 12.11.2011, 05:48
Закрытая тема

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

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

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

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



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