Добавлен uranus,
опубликован
Думаю, все из нас имеют на своем счету десятки (а то и сотни) карт, как больших, так и не очень. В любом случае, некоторые функции или наработки, которые пригодились когда-то, кочуют из проекта в проект. Вот, и хотелось бы посмотреть, а то и поучится у более опытных.
От ваших макросов и вплоть до библиотек, меня интересует все. Некоторые вещи слишком малы, чтобы публиковать их в ресурсах сайта, но тем не менее. Может быть, это будет полезно новичкам.
От ваших макросов и вплоть до библиотек, меня интересует все. Некоторые вещи слишком малы, чтобы публиковать их в ресурсах сайта, но тем не менее. Может быть, это будет полезно новичкам.
Мне, честно говоря, похвастаться нечем, но все же (cJASS):
Макросы (или экономим немного времени)
define {
TranslateX(x, dist, angle) = (x + dist * Cos(angle * bj_DEGTORAD))
TranslateY(y, dist, angle) = (y + dist * Sin(angle * bj_DEGTORAD))
AngleBetween(x1,y1,x2,y2) = (bj_RADTODEG * Atan2(y2 - y1, x2 - x1))
DistanceBetween(x1,y1,x2,y2) = SquareRoot((x1 - x2)*(x1 - x2) + (x1 - x2)*(x1 - x2))
HP = UNIT_STATE_LIFE
MAXHP = UNIT_STATE_MAX_LIFE
MP = UNIT_STATE_MANA
MAXMP = UNIT_STATE_MAX_MANA
MageDamage(from,to,val) = UnitDamageTarget(from,to,val,false,false,ATTACK_TYPE_MAGIC,null,null)
PhysDamage(from,to,val) = UnitDamageTarget(from,to,val,false,false,ATTACK_TYPE_CHAOS,null,null)
PureDamage(from,to,val) = UnitDamageTarget(from,to,val,false,false,null,null,null)
}
Предметы (тут совсем просто)
// Удаляет у юнита n предметов нужного типа
void RemoveItems(unit u, int it, int count) {
int slot=0;
item curItem;
while (slot<6) {
curItem = UnitItemInSlot(u,slot);
if (it == GetItemTypeId(curItem)) {
RemoveItem(curItem);
count--;
}
curItem=null;
if (count == 0) {return;}
slot++;
}
}
// подсчет предметов нужного типа у юнита
int GetItemCount(unit u, int it) {
int slot=0;
int count=0;
item curItem;
while (slot<6) {
curItem = UnitItemInSlot(u,slot);
if (it == GetItemTypeId(curItem)) {
count++;
}
curItem=null;
slot++;
}
return count;
}
// Есть ли предмет нужного типа у юнита
bool HasItem(unit u, int it) {
int slot=0;
item curItem;
while (slot<6) {
curItem = UnitItemInSlot(u,slot);
if (it == GetItemTypeId(curItem)) {
return true;
}
curItem=null;
slot++;
}
return false;
}
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Чтобы выдать обзор над юнитом, по мотивам дота 2 ( кроме модели Юнита ничего вокруг невидно) , можно использовать fogmodifier - модификаторы тумана быстрее раз в 10 дамми юнтов с обзором, атак же создавая 2 области 128 х 128 со смещением на 32 пл вектору движения юн тов с помощью таймера мы получим обзор чисто над моделью нужного Юнита,без мерцаний.