30

» WarCraft 3 / Lua и ООП

поэтому лучше погуглить решения от спецов в Lua, которые ерунду не понапишут
Я конечно не спец, но ерунду напишу. Простейший пример метатаблиц
Unit = { x = 0, y = 0 }
function Unit:new (id, unitid, x, y, face)
	local data = {}
	setmetatable(data, self)
	self.__index = self
	data.unit    = CreateUnit(id, unitid, x, y, face)
	return data
end
function Unit:x(x)
	if x == nil then return GetUnitX(self.unit) end
	SetUnitX(self.unit, x)
	return self
end
function Unit:y(y)
	if y == nil then return GetUnitY(self.unit) end
	SetUnitY(self.unit, y)
	return self
end
function Unit:xy(x, y)
	if x == nil and y == nil then return GetUnitX(self.unit), GetUnitY(self.unit) end
	SetUnitX(self.unit, x)
	SetUnitY(self.unit, y)
	return self
end
function Unit:name(name)
	if name == nil then return GetUnitName(self.unit) end
	BlzSetUnitName(self.unit, name)
	return self
end

local u = Unit:new(Player(0), FourCC('hfoo'), 0, 0, 0)
u:x(13):y(3):name('OOP mazafaka')
30

» WarCraft 3 / UnitGroup течет (DestroyGroup не помогает)

Ваш код раскрывается в
function GetUnitsInRectMatching takes rect r, boolexpr filter returns group
    local group g = CreateGroup()
    call GroupEnumUnitsInRect(g, r, filter)
    call DestroyBoolExpr(filter)
    return g
endfunction
Вот эта группа и течёт.
30

» WarCraft 3 / Lua и ООП

Избыточность информации усложняет и делает невозможным усваивание материала, нельзя начинать учить что-то, давая сразу всю инфу, нужно абстрагировать от глаз всё что происходит за кулисами и скормить лишь суть, как этим воспользоваться.
А потом пропускать мимо ушей критику вооружившись аргументом "работает же"
prog:
Drulia_san, фигню понаписал, у тебя методы создаются для каждого экземпляра, а должны для индексной таблицы создаваться один раз, иначе зачем тебе метатаблица и индексная таблица тогда...
30

» WarCraft 3 / В hashtable один массив на все handle?

Если кратко, то да. Если подробно, то функции Save*Handle являются ссылкой на SaveWidgetHandle и поэтому их нужно сохранять под разными индексами.
30

» WarCraft 3 / Lua и ООП

Потому что это удобно.
ООП не серебрянная пуля, чтоб пихать его всюду.
Не думай вообще что это такое, знание этого тебе ничего не даст, просто скопируй
И правильно, зачем думать? Просто копируй, потом копируй скопированное, потом на 100500 итерации копирования беги в QA и задавай вопросы в стиле "нииирабоотаит".
30

» WarCraft 3 / Lua и ООП

когда у тебя в руках молотов всё вокруг кажется гвоздями
Напоминает это
<?php
/********************************************************************
Model-View-Controller implementation according to POSA
(Pattern-Oriented Software Architecture
  http://www.hillside.net/patterns/books/Siemens/book.html)
********************************************************************/
 
class HelloWorldController {
    private $model;
    function __construct($model) {
        $this->model = $model;
    }
 
    function handleEvent($args) {
        $this->model->setStrategy($args[2]);
        $this->model->addText($args[1]);
    }
}
 
 
class HelloWorldModel {
    private $text;
    private $observers = array();
    private $strategy;
    
    function attach($observer) {
        $this->observers[] = $observer;
    }
 
    function getData() {
        $facade = new HelloWorldFacade($this->strategy);
        return $facade->getHelloWorld().$this->text."\n";
    }
 
    function addText($text='') {
        $this->text = $text;
        $this->notify();
    }
 
    function setStrategy($strategy) {
        $this->strategy = $strategy;
    }
    
    function notify() {
        foreach ($this->observers as $observer) {
            $observer->update();
        }
    }
}
 
class HelloWorldView {
    private $model;
 
    function initialize($model) {
        $this->model = $model;
        $model->attach($this);
        return $this->makeController();
    }
 
    function makeController() {
        return new HelloWorldController($this->model);
    }
 
    function update() {
        $this->display();
    }
 
    function display() {
        echo $this->model->getData();
    }
}
 
 
/*********************************************************************
"Business logic"
********************************************************************/
 
class HelloWorld {
   function execute() {
       return "Hello world";
   }
}
 
class HelloWorldDecorator {
   private $helloworld;
   function __construct($helloworld) {
       $this->helloworld = $helloworld;
   }
 
   function execute() {
       return $this->helloworld->execute();
   }
}
 
abstract class HelloWorldEmphasisStrategy {
    abstract function emphasize($string);
}
 
class HelloWorldBangEmphasisStrategy extends HelloWorldEmphasisStrategy {
    function emphasize($string) {
       return $string."!";
    }
}
 
class HelloWorldRepetitionEmphasisStrategy extends HelloWorldEmphasisStrategy {
    function emphasize($string) {
       return $string." and ".$string." again";
    }
}
 
class HelloWorldEmphasizer extends HelloWorldDecorator {
   private $strategy;
   function HelloWorldEmphasizer($helloworld,$strategy) {
       $this->strategy = $strategy;
       parent::__construct($helloworld);
   }
 
   function execute() {
       $string = parent::execute();
       return $this->strategy->emphasize($string);
   }
}
 
class HelloWorldStrategyFactory {
    static function make($type) {
        if ($type == 'repetition') return self::makeRepetitionStrategy();
        return self::makeBangStrategy();
    }
 
    static function makeBangStrategy() {
        return new HelloWorldBangEmphasisStrategy;
    }
    static function makeRepetitionStrategy() {
        return new HelloWorldRepetitionEmphasisStrategy;
    }
}
 
class HelloWorldFormatter extends HelloWorldDecorator {
   function execute() {
       $string = parent::execute();
       return $string."\n";
   }
}
 
class HelloWorldFacade {
    private $strategy;
    function __construct($strategyType) {
        $this->strategy = HelloWorldStrategyFactory::make($strategyType);
    }
 
    function getHelloWorld() {
        $formatter = new HelloWorldFormatter(
                new HelloWorldEmphasizer(
                    new HelloWorld,$this->strategy));
        return $formatter->execute();
    }
}
 
$model = new HelloWorldModel;
$view = new HelloWorldView;
$controller = $view->initialize($model);
$controller->handleEvent($_SERVER['argv']);
30

» WarCraft 3 / Lua и ООП

Почему все носятся с ООП как с писанной торбой и пытаются применить её ко всем ЯП?
30

» WarCraft 3 / Моя попытка создания системы отрядов, версия 1.26a

Hate, может имелось ввиду, что нужно сократить?
function patrol takes nothing returns nothing
    local unit f = GetEnumUnit()
    local real x = GetOrderPointX()
    local real y = GetOrderPointY()
    call IssuePointOrder( f, "patrol", x,y)
    set f = null
endfunction
function patrol takes nothing returns nothing
    call IssuePointOrder( GetEnumUnit(), "patrol", GetOrderPointX(),GetOrderPointY())
endfunction
30

» WarCraft 3 / [lua] Собираем lua с помощью lua

Странный у вас метод
Какой есть, конструктивные замечания принимаются.
Хотя я же на ноде пишу забудь...
Возьмите с полки пирожок. А пока будете это делать напишите, какое это имеет отношение к этой теме.
30

» Администрация XGM / Рейтинг на сайте

У тебя зацикленность на коде. Кроме разработчиков она никому не важна.
Это же пример. Таки примеров можно найти множество в других специализациях.
30

» Администрация XGM / Рейтинг на сайте

ИМХО думаю нужно изначально вывести правило - зачем нужен рейтинг. На данный момент рейтинг не показывает абсолютно ничего. Ведь все мнения неравнозначны. Простейший пример:
Кто-то выкладывает красивый спэлл с отвратительным утечным кодом. 10 кодеров ставят минус ибо код нелицеприятно пахнет, и 100 юзеров ставят плюс ибо на видео всё красиво. Рядовой юзер видет соотношение и решает что спэлл хорош и плодит распространение говнокода в массы.
30

» Администрация XGM / Рейтинг на сайте

но были реально перегибы, когда новичка незаслуженно гнобили.
Если новичёк не умеет пользоваться гуглом и читать буквы то это одно, а если спрашивает ньюанс, который знает 3.5 человека на сайте, то то другое. Грань тонка.
30

» WarCraft 3 / Редактор карт, триггеры

Для способностей много есть событий
Не так уж и много:
  • EVENT_PLAYER_UNIT_SPELL_CHANNEL
  • EVENT_PLAYER_UNIT_SPELL_CAST
  • EVENT_PLAYER_UNIT_SPELL_EFFECT
  • EVENT_PLAYER_UNIT_SPELL_ENDCAST
  • EVENT_PLAYER_UNIT_SPELL_FINISH
30

» Администрация XGM / Нестареющая классика — футболки XGM

Могу в твоём экземпляре заклеить черной изолентой)
Когда будет доставка в Киев - закажу эксземпляр с заклееной короной.
30

» WarCraft 3 / HISTORI WOW PLATFORMA GOTOVA

Админы укажите что не так с наработкой, с виду вроде все нормально.
Так как то не карта используящая модели, а просто пак, то модели и авторов нужно публиковать с ссылками, например:

Модели

Если моделей и правда много, их можно спрятать под кат
30

» WarCraft 3 / HISTORI WOW PLATFORMA GOTOVA

Я просто скачал модели с разных сайтов, и обьединил их, и оформил.
Так неплохо бы указать список моделей и их авторов.
30

» WarCraft 3 / HISTORI WOW PLATFORMA GOTOVA

да ещё и чужого авторства
Да ещё не указаны все авторы и ссылки на модели. И все текстуры наверно лежат в корте и поэтому начнётся квэст - найди все используемые моделью текстуры.
30

» WarCraft 3 / HISTORI WOW PLATFORMA GOTOVA

Это же просто пак моделей, притом выполненных в разной стилистике.
30

» WarCraft 3 / [lua] Собираем lua с помощью lua

Почему папка src названа build?)
Потому что там лежат файлы для сборки, да и структуру папок выбирает сам пользователь, дефолтов же просто нет.