НЕ ИСПОЛЬЗУЙТЕ 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::
относится к классу
Blizzard явно запретила все, что можно использовать для ожидания или паузы lua, потому что это важный ингредиент для создания бота для добычи или измельчения золота.
Не существует собственного ( т.е. только lua) способ заставить lua ждать без использования всего ЦП. Вне клиента WOW вы должны использовать win.sleep или какой-либо другой вызов API сторонних производителей, который вызывает функции потоковой передачи хост-приложения или операционной системы.
Можно имитировать ожидание с помощью выполнение кода при частом событии (например, тексте, поступающем в окно чата), а затем в обработчике событий, проверяющем, прошло ли достаточно времени, чтобы разрешить выполнение следующей команды в последовательности. Вероятно, это будет не очень точный таймер, и он будет довольно сложным, как вы »
Это может быть намеренное ограничение API для предотвращения автоматизации игр (ботов).
Я бы посоветовал вам подождать некоторое время, прежде чем использовать следующую эмоцию. Насколько мне известно, сервер отключает вас, если вы слишком много спама. Этот может просто иногда запускать его.
Кроме того, я думаю, может быть, у клиента есть способ предотвратить это? В любом случае, Амит Рон
Что сработало для меня, так это наличие глобальной переменной, которая инкрементируется в цикле. Например,
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
Тогда вам пришлось бы нажимать на кнопку несколько раз, но при этом вы бы получили тот эффект, к которому стремились.
. INCACT, Целое число I = 0
, потому что определение целочисленного «подсчет», а затем использование I неверно. :)