function EncodeDate(Year, Month, Day: Word): TDateTime
перевод года, месяца и дня в формат даты
procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word)
Перевод даты в года, месяц и день
function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime
Перевод часов, минут и секунд в формат времени
procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word)
Перевод времени в часы, минуты и секунды
function Date: TDateTime
Текущая дата
function Time: TDateTime
Текущее время
function Now: TDateTime
Текущие дата и время
function DayOfWeek(aDate: DateTime): Integer
День недели
function IsLeapYear(Year: Word): Boolean
Високосный год
function DaysInMonth(nYear, nMonth: Integer): Integer
Дней в месяце
function IntToStr(i: Integer): String
Перевод целого в строку
function FloatToStr(e: Extended): String
Перевод числа с плавающей запятой в строку
function DateToStr(e: Extended): String
Перевод даты в строку
function TimeToStr(e: Extended): String
Перевод времени в строку
function DateTimeToStr(e: Extended): String
Перевод даты и времени в строку
function VarToStr(v: Variant): String
Перевод variant в строку
function StrToInt(s: String): Integer
Перевод строки в целое
function StrToFloat(s: String): Extended
Перевод строки в число с плавающей запятой
function StrToDate(s: String): Extended
Перевод строки в дату
function StrToTime(s: String): Extended
Перевод строки во время
function StrToDateTime(s: String): Extended
Перевод строки в дату и время
function Round(e: Extended): Integer
Округление до ближайшего
function Trunc(e: Extended): Integer
Округление до меньшего
function Int(e: Extended): Integer
Возвращает целую часть
function Frac(X: Extended): Extended
Возвращает дробную часть
function Sqrt(e: Extended): Extended
Возвращает квадратный корень
function Abs(e: Extended): Extended
Возвращает модуль числа
function Sin(e: Extended): Extended
Синус
function Cos(e: Extended): Extended
Косинус
function ArcTan(X: Extended): Extended
Арктангенс
function Tan(X: Extended): Extended
Тангенс
function Exp(X: Extended): Extended
Экспонента
function Ln(X: Extended): Extended
Натуральный логарифм
function Pi: Extended
Число Пи
__________________
Тут не форум гадалок, если ты делаешь все правильно и по пунктам - то все должно работать
Как определить, является ли символ буквой русского алфавита, буквой английского алфавита, является ли символ цифрой?
Как определить, является ли символ буквой русского алфавита?
function isAlphaRu( c: Char ): boolean;
begin
Result := Ord( c ) in [168,184,192..223,224..255];
end;
Как определить, является ли символ буквой английского алфавита?
function isAlphaEn( c: Char ): boolean;
begin
Result := Ord( c ) in [65..90,97..122];
end;
Как определить, является ли символ цифрой?
function isDigit( c: Char ): boolean;
begin
Result := Ord( c ) in [48..57];
end;
Код:
procedure Inc(var i: Integer; incr: Integer = 1)
Инкремент
procedure Dec(var i: Integer; decr: Integer = 1)
Декремент
procedure RaiseException(Param: String)
Генерация исключения
procedure ShowMessage(Msg: Variant)
Вывод сообщения
procedure Randomize
Инициализация генератора псевдослучайных чисел
function Random: Extended
Генерация псевдослучайного числа
function ValidInt(cInt: String): Boolean
Проверка валидности целого в строке
function ValidFloat(cFlt: String): Boolean
Проверка валидности цисла с плавающей запятой в строке
function ValidDate(cDate: String): Boolean
Проверка валидности даты в строке
function CreateOleObject(ClassName: String): Variant
Создание OLE-объекта
function VarArrayCreate(Bounds: Array; Typ: Integer): Variant
Создание динамического массива
__________________
Тут не форум гадалок, если ты делаешь все правильно и по пунктам - то все должно работать
Последний раз редактировалось TAMBIK, 13.08.2009 в 13:19.
Решил выложить свою разработку. Может, кому пригодится. Для Hellbound'а.
Суть кода: В массиве задаётся последовательность действий, это может быть просто пакет в формате строки (например '39 2A 01 00 00 00 00 00 00 00'), либо какая-то спец команда (например 'Attack').
Далее, по таймеру считываются последовательно строки массива, и то, что там записано отправляется на выполнение. Т.к. время на выполнение скилла может быть различное в зависимости от ситуации, то для такого случая я ввёл динамически изменяющееся время у таймера. Как только от серва приходит пакет с использованием скилла, скрипт считывает время использования и задаёт его таймеру + некоторая поправка.
Код:
Const
NICK='Указываете ваш ник';
var
tmrActions: TTimer; // Таймер для последовательность действий
Actions: Array[0..10, 0..2] of String; //Массив действий.
{Записываются в ячейки массива пакеты, которые нужно послать. Далее, по таймеру посылается следующий пакет из списка.
Первый индекс массива - номер действия, второй индекс:
0 - собственно действие, 1 - Параметр действия (напр. Ид скилла), 2 - время таймера до следующего действия
}
MyID, : Integer;
NumAct: Integer; // Номер текущего действия
IsSkill: Boolean; // Показывает, используем ли мы скилл в данный момент
Procedure UseSkill(ID: Integer); // Процедура использования скилла
begin
buf:=#$39;
WriteD(ID);
WriteD(0);
WriteC(0);
SendToServerEX(NICK);
end;
Procedure OntmrAction(Sender: TObject);
begin
Case Actions[NumAct, 0] of // Сдесь мы определяем тип действия.
'Attack': begin // Атаковать текущую цель
end;
'Use': begin // Использование предмета
UseItem(StrToInt(Actions[NumAct, 1])); // Эта процедура может быть разная, потому не привожу
end;
'Skill': begin // Использование скилла
UseSkill(StrToInt(Actions[NumAct, 1]));
IsSkill:= True;
end;
'-1': begin // Останов макроса
NumAct:=0;
tmrActions.Enabled:=False;
Times:=0;
exit;
end;
else begin // Если же не приведена внутренняя команда, то просто отсылаем пакет
buf:= Hstr(Actions[NumAct, 0]);
SendToServerEX(NICK);
end;
end;
NumAct:= NumAct+1;
If (IsSkill=False) then tmrActions.Interval:= StrToInt(Actions[NumAct, 2]); // Изменяем время у таймера до следующего пункта
//В случае скилла время изменяется считыванием нужного пакета
end;
procedure Init; //Вызывается при включении скрипта
begin
tmrActions:= TTimer.Create(nil);
tmrActions.OnTimer:= @OntmrAction;
tmrActions.Enabled:= False;
tmrActions.Interval:= 200;
// 6590 - Angel Slayer
// 6602 - Demon Splinter (один из ))))
// 425 - Hawk Spirit Totem
// Макрос представляет из себя: Одеть Сплинтеры, потом юзнуть Хавка, одеть АС, начать атаку
Actions[0, 0]:='Use';
Actions[0, 1]:='6602';
Actions[0, 2]:='300'; // Задаём время до следующего пункта, в мс
Actions[1, 0]:='Skill';
Actions[1, 1]:='425';
Actions[1, 2]:='2000'; // В принципе, можно и не ставить
Actions[2, 0]:='Use';
Actions[2, 1]:='6590';
Actions[2, 2]:='300';
Actions[3, 0]:='Attack';
Actions[3, 1]:='';
Actions[3, 2]:='300';
Actions[4, 0]:='-1';
MyID:= -1;
end;
procedure Free; //Вызывается при выключении скрипта
begin
tmrActions.free;
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if pck='' then exit;
if FromServer and (ConnectName=NICK) then case pck[1] of
#$32: Begin // User Info
If (MyID <> -1) then exit;
MyID:=ReadD(18); // запоминаем наш ИД
end;
#$11: begin; // Инвентаризация барахла в карманах
InventoryCreate; // Инвентаризацию берите, какая удобнее
end;
#$21: Begin // Обновление инвентаря
InventoryUpdate;
End;
#$48: begin // MagicSkillUse
If (ReadD(2)<>MyID) Or (IsSkill=False) then Exit; // Если не мы юзаем - не обрабатываем
tmrActions.Interval:= ReadD(18)+100; // Изменяем время у таймера с учётом времени произношения скилла, 100 - небольшая добавка, чтоб лучше работало
IsSkill:= False;
end;
end;
end.
Автобег в указанную сторону: запустить скрипт, нажать "Приветствие", ткнуть мышкой в нужную сторону - бежит не останавливаясь пока не упрется. На ходу возможно изменение направления\шага пробежки. Интерлюд. Оффтоп
__________________ На фразы в аську типа "слух карочь 1)как точить 2)как раскачаться за 5 мин" - игнор. ИМХО идиотизм
Дай голодному рыбу - он будет один день сыт. Покажи ему, как удить рыбу - он пошлёт тебя и скажет, что у него есть более интересные занятия, чем забрасывать снасти в воду
David Kastrup @ de.comp.text.tex.
"Приобретенные навыки общения с маленькими детьми - сильно упрощают взаимопонимание на форумах..."
А вы знаете, что для качественной сварки - место шва нужно протереть спиртом?
//(c) xkor
function StrToHex(packet: string):string;
var
i:integer;
tmp:byte;
function ByteToHex(b: byte): Char;
begin
if b<10 then result:=chr(b+$30)
else result:=chr(b+$37);
end;
begin
result:='';
for i:=1 to length(packet) do begin
tmp:=ord(packet[i]) div 16;
result:=result+ByteToHex(tmp);
tmp:=ord(packet[i]) - tmp*16;
result:=result+ByteToHex(tmp)+' ';
end;
end;
пример использования
Код:
hextr2:=hextostr(pck);
SHOWMESSAGE(hextr2);
[/quote]
Подскажите пожалуйста , как правильно пользоваться этой функцией? У меня при компиляции ошибку выдает .