То, как Вы делаете комбинацию два, проявляет эмоции в lua в работе World of Warcraft?

НЕ ИСПОЛЬЗУЙТЕ self::, используйте static::

Есть еще один аспект самости ::, который стоит упомянуть. Раздражающе self:: относится к сфере действия в точке определения, а не в точке исполнения . Рассмотрим этот простой класс с двумя методами:

class Person
{

    public static function status()
    {
        self::getStatus();
    }

    protected static function getStatus()
    {
        echo "Person is alive";
    }

}

Если мы назовем Person::status(), мы увидим «Человек жив». Теперь рассмотрим, что происходит, когда мы создаем класс, который наследует от этого:

class Deceased extends Person
{

    protected static function getStatus()
    {
        echo "Person is deceased";
    }

}

При вызове Deceased::status() мы ожидаем увидеть «Человек умер», однако мы видим «Человек жив» в качестве области видимости. содержит исходное определение метода, когда был определен вызов self::getStatus().

PHP 5.3 имеет решение. оператор разрешения static:: реализует «позднюю статическую привязку», которая представляет собой причудливый способ сказать, что он связан с областью действия вызываемого класса. Измените строку в status() на static::getStatus(), и вы получите ожидаемые результаты. В старых версиях PHP для этого вам нужно будет найти ключ.

См. Документация PHP

Поэтому ответить на вопрос не так, как задано ...

$this-> относится к текущему объекту (экземпляру класса), тогда как static:: относится к классу

7
задан AakashM 16 July 2012 в 08:21
поделиться

6 ответов

Blizzard явно запретила все, что можно использовать для ожидания или паузы lua, потому что это важный ингредиент для создания бота для добычи или измельчения золота.

Не существует собственного ( т.е. только lua) способ заставить lua ждать без использования всего ЦП. Вне клиента WOW вы должны использовать win.sleep или какой-либо другой вызов API сторонних производителей, который вызывает функции потоковой передачи хост-приложения или операционной системы.

Можно имитировать ожидание с помощью выполнение кода при частом событии (например, тексте, поступающем в окно чата), а затем в обработчике событий, проверяющем, прошло ли достаточно времени, чтобы разрешить выполнение следующей команды в последовательности. Вероятно, это будет не очень точный таймер, и он будет довольно сложным, как вы »

5
ответ дан 6 December 2019 в 14:09
поделиться

Это может быть намеренное ограничение API для предотвращения автоматизации игр (ботов).

3
ответ дан 6 December 2019 в 14:09
поделиться

Я бы посоветовал вам подождать некоторое время, прежде чем использовать следующую эмоцию. Насколько мне известно, сервер отключает вас, если вы слишком много спама. Этот может просто иногда запускать его.

Кроме того, я думаю, может быть, у клиента есть способ предотвратить это? В любом случае, Амит Рон

2
ответ дан 6 December 2019 в 14:09
поделиться

Может быть, последние два нельзя делать сидя?

1
ответ дан 6 December 2019 в 14:09
поделиться

Что сработало для меня, так это наличие глобальной переменной, которая инкрементируется в цикле. Например,

Integer count = 0;
function Button2_OnClick()
    i++
    switch
    case(1)
        PlaySoundFile("Interface\\Addons\\Fart\\common_fart[1].wav");
    case(2)
         DoEmote("moon");
    case(3)
         DoEmote("sit");
    case(4)
         DoEmote("dance");
    case(5)
         DoEmote("beckon");
    default
         i=0;
    end
end

Тогда вам пришлось бы нажимать на кнопку несколько раз, но при этом вы бы получили тот эффект, к которому стремились.

.
3
ответ дан 6 December 2019 в 14:09
поделиться

INCACT, Целое число I = 0 , потому что определение целочисленного «подсчет», а затем использование I неверно. :)

1
ответ дан 6 December 2019 в 14:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: