24

» Wizards World / Общее обсуждение

Doc,
скачал из шапки темы
взял квест на энтов
долго пытался понять почему не могу взять еще квестов
облазил, как мне кажется, всю карту - ни одного не нашел
нашел с гнола, слился
нашел скелетов, поубивал их
к третьему бою заметил что в мультиборде отображается чей ход и понял смысл цифр возле юнитов
увидел кнопку статов у героя
вкинул статы одному из существ
повоевал с гнолами
пытался подобрать золото и случайно забежал прямо в лагерь гнолов, там где их трое стоит
ушел оттуда так и не забрав золото только после десятка побед и одного поражения - почти сразу после конца одного боя начинался следующий, а за время боя гнолы успевали респавниться
во время одного из боев на арене в нижнем правом углу заметил что там-же находится окно отряда
поклацал на него - оно оказалось вполне себе интерактивным
еще раз облазил весь лес, не нашел энтов
поискал способ отменить квест, не нашел
так и не понял на что влияют статы самого героя, возможно из-за того что тестил сам
надоело, пошел готовиться к экзамену
общее впечатление: мне понравилось
с точки зрения нуба: ничего не понятно
техническая реализация: отлично
оценка геймера: почти как WoW на хорошем пиратском сервере
к теме групп:
можно не соединять всех в один отряд - просто если кто-то из группы начал бой, то помещать на доску всех игроков из группы, находившихся достаточно близко на тот момент (кроме тех кто в бою, естественно)
аналогичную систему можно применить к крипам - чтобы нападение на одного крипа из группы приводило к вступлению в бой всей группы крипов
возможно с введением групповых боев стоит разрешить проходить сквозь своих юнитов на доске (мне показалось что на данный момент этого нельзя делать)
интерфейс группы можно организовать так-же как окно отряда
можно реализовать публичные и приватные группы
публичные видны в интерфейсе групп, в них может вступить кто угодно, возможно даже существование нескольких стандартных публичных групп
приватные группы не видны в интерфейсе групп, для вступления необходимо ввести команду с названием группы
создавать приватные группы может кто угодно
при вступлении в группу блокируется возможность вступления в другую группу, а в интерфейсе группы отображается список участников и кнопка "покинуть группу"
у создателя группы должна быть возможность исключать участников из группы и возможность полностью распустить группу
при выходе создателя группы из игры группа автоматически распускается
24

» WarCraft 3 / cJass - дополнение к языку JASS

Doc, я предложил инструмент, а конкретные примеры привел исключительно для наглядности. С ненужностью и бредовостью вполне согласен, хотя от последней конструкции не отказался бы.
P.S. Зачем впилил туда эти слеши сам не знаю.
24

» WarCraft 3 / cJass - дополнение к языку JASS

как насчет введения механизма аннотаций?
например как-то так:
1: аннотация заменяющая ключевое слово optional
//@optional
void SomeFunc(){


}
а может даже и так:
2: аннотация указывающая препроцессору что в следующей строке он должен искать использование лямбда-функции и желательно с остановкой обработки и выдачей ошибки если не находит
пример использования лямбда-функций от ADOLF переделанный с использованием аннотаций

struct sa {
	nothing f () {
		//@lambda
		code c = nothing () {}
	}
}

struct sb {
	nothing f () {
		//@lambda 2
		code c = nothing () { code c = nothing () { DoNothing() } }
	}
}

nothing main () {
	//@lambda
	code a = integer () { return 0x00 }
	//@lambda
	code b = integer () { return 0x00 }
	//@lambda 2
	code c = code () { return nothing () { DoNothing () } }

}

function config takes nothing returns nothing
	//@lambda
	code c = nothing () {}
endfunction

nothing fx () {
	     //@lambda
	    TimerStart(CreateTimer(), 0., false, void () { DoNothing() } )
}

nothing e (code a, code b) {}
//@lambda 2
nothing test () { e( nothing () {}, nothing () {}) }
первое реализовать не так уж сложно даже на ассемблере, а вот на счет второго не уверен, да и не уверен что оно того стоит
ну и безумная идея напоследок
/*
инициализация шаблона
$func, $begin, $body, $end - места вставки заголовка, начала блока, тела и конца блока функции, соответственно
a,b,c - параметры шаблона и места их вставки
*/
//@template beginend(a,b,c) = $func c $begin a $body b $end

/*
макросы, которые будут использованы в качестве параметров шаблона
*/
define ololo1 = { DoNothing() }
define ololo2 = { DoNothing() ; DoNothing() }
define ololo3 = { integer a }

/*
использование шаблона для преобразования функции
*/
//@template beginend ololo1 ololo2 ololo3
void SomeFunc(){

	//какой-то код

}
преобразуется в
void SomeFunc( ololo3 ){
ololo1

	//какой-то код

ololo2
}
или в
void SomeFunc( integer a ){
DoNothing()

	//какой-то код

DoNothing() ; DoNothing()
}
24

» WarCraft 3 / RMG: Medieval Age v1.5

есть небольшой баг с воротами
а именно - они улетают куда-то далеко после определенной последовательности действий
  • строятся ворота
  • строятся стены возле ворот
  • ворота открываются
  • на проходе (прямо в открытых воротах) строятся огненные ловушки
  • прибегает враждебная армия, состоящая из войск нескольких типов (в т.ч. кавалерия)
  • ворота несколько раз открываются/закрываются
результат - половина врагов раздавлена, а ворота стоят уже совсем не там где их строили
возможные причины такого поведения:
  • построенные на проходе ловушки, на которые, возможно, не срабатывает триггер очищения прохода при закрытии ворот
  • физический размер кавалерии может приводить к тому что кавалерия мешает закрыться воротам, но центр юнита не находится в очищаемой при закрытии ворот области и, как следствие, юнит не убивается, вызывая сдвиг ворот при закрытии
выяснить какой из вариантов правильный мешает отсутствие времени чтобы воспроизвести ситуацию в лабораторных условиях
как вариант - сделать более сложно, но более надежно и красиво
  • убивать всех в очищаемой зоне при закрытии
  • открывать/закрывать ворота при помощи анимации
  • устанавливать проходимость области под воротами триггерно
вариант делать построенные ворота декорацией и извращаться с открыванием/закрыванием не предлагаю
также стоит обратить внимание на текстуру пути открытых ворот - у меня сложилось впечатление что она полностью проходима, что не соответствует модели
24

» WarCraft 3 / Game Cache + JASS (устарело - return bug)

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