народ хелп как правельно взять id перса что б оно было как бы константа :) т.е. ьерём 1 раз и больше не трогаем я знаю что оно и не меняется больше но когда я ставлю id в константу копируя ее с пакета скрипт работает коректно а когда выдёргиваю из чар инфо происходит что то необъянимое короче хелп ми
Покажи как ты это делаешь. Тогда можно подсказывать.
procedure Init;
****
***
***
procedure InitStats;
begin
CharObjID:=ReadD(18);
end;
begin
//UserInfo
if FromServer and (ConnectName=Name) and (pck[1]=#$04) then InitStats;
ну и код где выделяем пакет 48 + иди перса если проходит берём начинает считывать время каста и кастует как робот :)
end
Добавлено спустя 45 секунд:
как всё заработает выложу скриптик мне нравиться в целом в тихом месте кастует всё на ура
народ хелп как правельно взять id перса что б оно было как бы константа :) т.е. ьерём 1 раз и больше не трогаем я знаю что оно и не меняется больше но когда я ставлю id в константу копируя ее с пакета скрипт работает коректно а когда выдёргиваю из чар инфо происходит что то необъянимое короче хелп ми
проблема бональна-))
CharObjID:=ReadD(18);
ты приравниваеш что к чему? ИД ЧАРА надо хранить в СТРИНГЕ! для того чтобы его можно было напрямую без преобразований использовать.. т.е. тебе надо запомнить 4 символа 18, 19, 20, 21 байты... а ты используя функцию READD(xx) - преобразуеш СТРИНГ- в число интигер... само собой ето число будет от первоначального стринга отличаеш.. ето равносильно функции STRTOINT('stroka'),.
вопщем если ты меня понял то :
приведи CharObjID к типу STRING..
а строку CharObjID:=ReadD(18); приведи к виду:
CharObjID:=pck[18]+pck[19]+pck[20]+pck[21];
а в твоем варианте ето работало так:
CharObjID:=StrToInt(pck[18]+pck[19]+pck[20]+pck[21]);
__________________
Цитата:
Сообщение от pybukon
прежде чета попросить я немнога раскажу чтоб вы понили как мне плоха
Цитата:
Сообщение от Byrger
А как сделать мой скрипт бесконечным?
Цитата:
Сообщение от XKOR
.. каждый день ионизированной ногой протирает больную)
Цитата:
Сообщение от PsyR
Вылоджите пожалуйста скрипт на рыбалку желательно что бы сам в ВХ клал адаптированый под шоки и так же скрипт на ТТ рец, тоже с диалогами
CharObjID:=ReadD(18);
ты приравниваеш что к чему? ИД ЧАРА надо хранить в СТРИНГЕ! для того чтобы его можно было напрямую без преобразований использовать.. т.е. тебе надо запомнить 4 символа 18, 19, 20, 21 байты... а ты используя функцию READD(xx) - преобразуеш СТРИНГ- в число интигер... само собой ето число будет от первоначального стринга отличаеш.. ето равносильно функции STRTOINT('stroka'),.
вопщем если ты меня понял то :
приведи CharObjID к типу STRING..
а строку CharObjID:=ReadD(18); приведи к виду:
CharObjID:=pck[18]+pck[19]+pck[20]+pck[21];
а в твоем варианте ето работало так:
CharObjID:=StrToInt(pck[18]+pck[19]+pck[20]+pck[21]);
не ожидал от тя такого бреда...
ReadD (который копирует область памяти размером 4 байта из строки в числовую переменную) не имеет никакого отношения к StrToInt который преобразует строку в число, StrToInt выполняется во многие разы медленнее чем ReadD, так что не путай человека
st01en, не совсем понял зачем те делать чтоб тока при первом пакете юзеринфо считывался ИД, быстродействие от того что ИД будет считываться каждый раз почти не пострадает да и на всяких проверках первый ли это раз быстродействие пострадает даже немного сильнее, но всёравно кстати незначительно)
__________________
Я здесь практически не появляюсь!, Skype - ikskor
st01en, не совсем понял зачем те делать чтоб тока при первом пакете юзеринфо считывался ИД, быстродействие от того что ИД будет считываться каждый раз почти не пострадает да и на всяких проверках первый ли это раз быстродействие пострадает даже немного сильнее, но всёравно кстати незначительно)
а я так и не делаю, я на каждый пакет ЮзернИнфо ИД заново достаю, только не здесь, моя тема в программщине :)
Сюда я случайно влез потому, что странным показалось то что VORON написал :) Grinch, этот ответ похоже тебе адресовался.
ReadD(var index:integer):integer - читает из переменной pck число (4 байта)
как раз то что нужно помоему.
ну сматри если ты используеш для хранения ИДешника (4-х байтного) ИНТИГЕР- то- тебе его применять надо по особому!.. простой IntToStr - некатит... нужно применять WRITED(Integer) , а ты скорее всего применяеш хз как.. тот клочек кода что ты дал- тока запоминает.. ето дело каждого как запомнить.. кто то хранит в ИНТИГЕРЕ.. а кто то в СТРИГЕ.. но приетом использовать надо- адекватно.. вставлять в правильном формате.. у тебя проблема именно в етом.. надо делать так:
вариант 1: запоминать данные из пакета- 04 (ИД ЧАРА) в стринговом формате (ID:= PCK[18]+PCK[19]+PCK[20]+PCK[21]) и применять его тупо: (buf:=buf+ID)
вариант 2: запоминать в интигере ID:=READD(18) но тогда етот интигер в нужное место надо встовлять по особому..
BUF:=BUF; //string
writeD(ID);
ну вот собственно.. скорее всего ты запомнил в одном формате а применил в другом...
__________________
Цитата:
Сообщение от pybukon
прежде чета попросить я немнога раскажу чтоб вы понили как мне плоха
Цитата:
Сообщение от Byrger
А как сделать мой скрипт бесконечным?
Цитата:
Сообщение от XKOR
.. каждый день ионизированной ногой протирает больную)
Цитата:
Сообщение от PsyR
Вылоджите пожалуйста скрипт на рыбалку желательно что бы сам в ВХ клал адаптированый под шоки и так же скрипт на ТТ рец, тоже с диалогами
народ как говориться стоять зорька :) я выложу скрипт целиуом, а вы попробуйте заставить его работать динамически считывая ид чара :) просто динамически считывается другой пакет $48 (ид мой)(иди кого бафаем или убиваем) (ну и т.д.)( время каста)(время отката), И что получается когда я вбиваю ИД константой всё работает когда считываю не работает причём считывается всё верно.
Код:
const
PPbafer = 'НИК ТВОЕГО ПП';// ps если нет пп то юзаем чьи нибуть бафы но не меньше 5
buff =
['2F 3D 04 00 00 00 00 00 00 00 ', //Acumen
'2F 18 04 00 00 00 00 00 00 00 ', //BtS
'2F 15 04 00 00 00 00 00 00 00 ', //BtB
'2F 2C 04 00 00 00 00 00 00 00 ', //Might
'2F 10 04 00 00 00 00 00 00 00 ', //Shield
'2F 36 04 00 00 00 00 00 00 00 ', //concentration
'2F 35 04 00 00 00 00 00 00 00 ', //Focus
'2F DA 04 00 00 00 00 00 00 00 ', //DW
'2F D8 04 00 00 00 00 00 00 00 ', //Точночть
'2F B4 04 00 00 00 00 00 00 00 ', //WW
'2F 0C 04 00 00 00 00 00 00 00 ', // MB
'2F 0B 04 00 00 00 00 00 00 00 ', // Mental
'2F 3E 04 00 00 00 00 00 00 00 ', // Haste
'2F 48 05 00 00 00 00 00 00 00 ', // EP
'2F DB 04 00 00 00 00 00 00 00 ']; // щит
SS=0;
PPbaferID=1212167608;
var
prof,x,y, SkilID, SkilHIT,{PPbaferID} : integer;
timer1, timer2: TTimer;
Target: string;
procedure Say(msg:string);
begin
buf:=hstr('4A 00 00 00 00');
WriteD(2);
WriteS(PPbafer);
WriteS(msg);
SendToClientEx(PPbafer);
end;
procedure Init; //Вызывается при включении скрипта
begin
//делаем таймер
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer1;
timer1.enabled:=false;//по начал не баффаемся, толко по команде
timer1.interval:=200;// 0,2 секунды - начальный интервал таймера
end;
//procedure InitStats;
{begin
PPbaferID:=ReadD(18);
end; }
procedure OnTimer1(Sender: TObject);
begin
if x = 1 then
Say('Начинаем баффаццо');
buf:=hstr(buff[x]); //берем нужный элемент из массива
SendToServerEx(PPbafer);
inc(x); //увеличиваем х на 1
if x = 15 then
begin Say('Баффаццо вроде закончили');
Timer1.Enabled:=False; //закончили баффаццо - таймер отключили
x:=0;
end;
Say('x='+inttostr(x))// так что б мониторить измение в чате
end;
procedure Free; //Вызывается при выключении скрипта
begin
timer1.enabled:=false;
timer1.Free;
x:=0;
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if pck='' then exit;
if FromServer and (ConnectName=PPbafer) and ((pck[1]=#$04) then InitStats;
if FromServer and (ConnectName=PPbafer) and ((pck[1]=#$48) and (ReadD(18)=SS)) then exit ;
if FromServer and (ConnectName=PPbafer) and ((pck[1]=#$48) and (ReadD(2)=PPbaferID)) then
begin
SkilHIT:=ReadD(18);
SkilID:= ReadD(10);
Timer1.Interval:=SkilHit+100; //ставим время отката скила +100 константа смешения тупо что б паузу сделать маленькую
Say('Скил='+inttostr(SkilID)); // иди скрипта так для самопроверке кстате можно тестить бафы на ускорение каста и шмот
Say('Откат='+inttostr(SkilHIT)); //время каста скила
end;
if FromClient and (pck[1]+pck[2]=#$38#$31) and (ConnectName=PPbafer) then //1- нажимаем в любой чат окуратней я пакет не убил
begin
prof:=1;
Timer1.Enabled:=True; //врубаем таймер
end;
if prof=1 then begin
y:=1;
prof:=0;
end;
// Say('ID'+inttostr(PPbaferID));
end.
и в крацее для чего нужен ИД бафера, постойте в геране или в зоне кача сколько летит пакетов $48 выделяем свой просто и скрипт работает прямо и не сбивается
Добавлено спустя 6 минут 30 секунд:
ну 2 варианта там где ид константа надо свой написать :) или закоментировать и попробовать профиксить ошибку которую я допустил не могу понять в чём она т.к. в тонкостях не разбираюсь и половину что вы тут написали просто не понял :cry: