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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Нужна помощь (JASS)
Нужна помощь
HSPДата: Понедельник, 19 Августа 2013, 17:05:07 | Сообщение # 1
1 уровень
Группа: Пользователи
Сообщений: 3
Награды: 0
Репутация: 0
Блокировки:
Доброго времени суток, уважаемые форумчане.
Работая над своим проектом я столкнулся с небольшой проблемкой, я ее пытаюсь решить уже две недели, делая при этом новые, но не правильные попытки.
Суть в том, чтобы создать Multiboard, в котором будут отображаться имя игрока и количество войск на его территории, все очень просто сделать, если все слоты заняты по очереди(красный, синий, голубой, фиолетовый).
Проблема моя заключается в том, что люди непредсказуемые и могут занять слоты как пожелают, и, если людей будет меньше, чем территорий, о которых я говорил выше, могут возникнуть баги.
Уверен, я рассказал не очень понятно, но, надеюсь вы поймете, когда посмотрите карту и увидите код.
Ниже я напишу код, который я использовал и прикреплю карту-пример

Код

//создаю новую функцию, которую буду вызывать при инициализации
function initialization takes nothing returns nothing
//в этой функции создаю две переменные типа integer
local integer a // всего игроков
local integer b // количество играюих игроков
//Присваиваю переменным-областям области, которые я предварительно создал в панеле областей
set udg_zones_a[0] = gg_rct_Red
set udg_zones_a[1] = gg_rct_Blue
set udg_zones_a[2] = gg_rct_Cyan
set udg_zones_a[3] = gg_rct_Purple
//обнуляю переменные
set a = 0
loop
exitwhen a == 3
set udg_zones_b[a] = null
set a = a + 1
endloop
//присваиваю области-переменные другим областям-переменным
set a = 0
set b = 0
loop
exitwhen a == 3  // выход если a = 3 (так как игроков 4, а отсчитываем с нуля)
loop
exitwhen b == udg_players_int //выход если b = количеству игроков, которые играют
if(udg_zones_b[b]==null) then //если область-переменная равна Null, то
set udg_zones_b[b] = udg_zones_a[a] //присваиваем
set b = b + 1 // и увеличиваем b на 1
endif
endloop
set a = a + 1 //увеличиваем a на 1
endloop
endfunction


вот карта http://rghost.ru/48226283
 

abidinДата: Понедельник, 19 Августа 2013, 17:24:01 | Сообщение # 2
7 уровень
Группа: Проверенные
Сообщений: 330
Награды: 0
Репутация: 305
Блокировки:
я плохо разбираюсь в jsss

и не уверен в правильности кода,Но суть ты должен уловить
Код
local integer z = 0 //целоисцислительная переменная
local bolean array con //переменная условие,массив
loop
exitwhen z == 4  //на 4 игроков
   if ( not ( GetPlayerSlotState(Player(2)) == PLAYER_SLOT_STATE_PLAYING ) ) then   
set con[z] == true
endif
set z = z+1
endloop

ну и если con[z] == true то запускаешь условия


Сообщение отредактировал abidin - Понедельник, 19 Августа 2013, 18:07:05
 

HSPДата: Понедельник, 19 Августа 2013, 17:55:34 | Сообщение # 3
1 уровень
Группа: Пользователи
Сообщений: 3
Награды: 0
Репутация: 0
Блокировки:
Я попытаюсь обьяснить, у меня есть четыре области и 4 игрока, нужно занести в мультиборд их имя и количество войск на их территории, имя игроков я вытащил вот так:

Pick every player in (all players) and do (actions) // я выбрал всех игроков на карте
If (All conditions are True) then do (Then Actions) else do (Else actions) // если все окей, то делаем ... иначе ...
If ((Picked player) slot status = играет // если выбранный игрок играет
Then // то
Set players_int = players _int + 1 // прибавляем переменной, в котрой я сохраняю количество игроков, которые играют
Set player[players_int] = picked player // переменная player это игрок, который играет, тоесть если слот 2 занят, но слот 1 пустует, то игрок 2 станет игроком 1
else do nothing

Добавлено (19 Августа 2013, 17:55:34)
---------------------------------------------
Позже я имя игрока (player) заношу в таблицу

 

[SeKtOR]Дата: Вторник, 20 Августа 2013, 14:25:19 | Сообщение # 4
Группа: Проверенные
Сообщений: 1143
Награды: 0
Репутация: 1168
Блокировки:
Вроде как получилось.

 

HSPДата: Вторник, 20 Августа 2013, 22:16:21 | Сообщение # 5
1 уровень
Группа: Пользователи
Сообщений: 3
Награды: 0
Репутация: 0
Блокировки:
Если добавить игроков то появляется куча ошибок
 

SirNikolasДата: Среда, 21 Августа 2013, 08:53:37 | Сообщение # 6
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Цитата (abidin)
//целоисцислительная переменная
Целочисленная же.

HSP, тебе нужен целочисленный массив, в котором под индексом i будет записан номер территории, которую занял Player(i).


 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Нужна помощь (JASS)
  • Страница 1 из 1
  • 1
Поиск:

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