boyan
у тебя косяки в присваивании пакетов использования цп хп и тп)
поменяй этот кусок
Код:
//пьем сначала ГCP, потом ЦП банку ,потом HP банку, потом МП банку что б запомнить их ID(я решил взять эти пакеты целиком, дабы не усложнять)
if FromClient and (ConnectName=Name) and (pck[1]=#$14) and (CPuse='') then CPuse:=pck;
if FromClient and (ConnectName=Name) and (pck[1]=#$14) and (CPuses='') then CPuses:=pck;
if FromClient and (ConnectName=Name) and (pck[1]=#$14) and (CPuses<>pck) and (HPuse='') then HPuse:=pck;
if FromClient and (ConnectName=Name) and (pck[1]=#$14) and (HPuse<>pck) and (MPuse='') then MPuse:=pck;
на
Код:
if FromClient and (count<4) and (ConnectName=Name) and (pck[1]=#$14) then
begin
count:=count+1;
case count of
1: CPuse:=pck;
2: CPuses:=pck;
3: HPuse:=pck;
4: MPuse:=pck;
end;
end;
MKS, мне кажется очень много вопросов у людей связано с бональными вещам.. которые получаются изза того что нет удобного интерфейса для мониторинга значений переменных в режиме онлайн... люди в слепую тычатся.. поетой причине дам кусочек кода который на стадии разработки скрипта нужно в скрипт добавить и с его помощью отоброжать значения переменных на екране...
Код:
var
frm:Tform;
memo:Tmemo;
procedure Init; //Вызывается при включении скрипта
begin
frm := TForm.Create(nil);
frm.Caption := 'Chat';
frm.BorderStyle := bsSizeable;
frm.Position := poScreencenter;
frm.Width:=600;
frm.Height:=700;
frm.FormStyle:=FsStayOnTop;
frm.Show;
memo :=TMemo.create(nil);
memo.parent:=frm;
memo.align:=alClient;
end;
procedure Free; //Вызывается при выключении скрипта
begin
memo.free;
frm.Free;
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if FromClient then
begin
memo.Lines.Add('сюда пишем всё что хотим и видемето на екране екране, например:'+inttostr(12345));
end;
end.
VORON - Респект за эту тему, мдя вообще в шоколаде все стало - очень удобно скрипты писать - Все косяки очень быстро можно отследить и принять меры. :good:
В смысле через некоторое время? В то время когда ЦП уменьшается, или просто через интервал, без всякой причины?
Цитата:
Сообщение от boyan
количество ЦП у перса не изменяется..
Т.е. банки хаваются, (из инвентаря исчезают) а цп у перса не восстанавливается?
Добавлено спустя 20 секунд:
Опиши плз поподробнее
т.е. захожу в игру, включаю скрипт, кушаю банки.. и например сажусь и ничего не делаю.. хп, мп, цп полные..
через пол минуты - минуту скрипт начинает кушать банки цп.. с интервалом пол секунды.. и не останавливается пока скрипт не выключиш/не кончатся банки..
boyan, попробуй отмониторить значения ХП,МП,ЦП, которые скрипт считывает (заготовка Кейна 2 поста выше), может неправильно определяются значения МП,ХП,ЦИ текущие и максимальные...
if FromServer and (pck[1]=#$0E) and (ConnectName = Name) //считываем значения ЦП, ХП, МП максимальные и на данный момент.
then StatsUpdate;
а свой ID ты не проверяешь, вот он тебе и записывает в хп цп и мп параметры из всех пакетов 0E
тебе надо выдрать откуда-нидь свой ID и подправит здесь
Код:
if FromServer and (pck[1]=#$0E) and (ConnectName = Name) and (ReadD(2)=MyID) //считываем значения ЦП, ХП, МП максимальные и на данный момент.
then StatsUpdate;
if FromServer and (pck[1]=#$0E) and (ConnectName = Name) //считываем значения ЦП, ХП, МП максимальные и на данный момент.
then StatsUpdate;
а свой ID ты не проверяешь, вот он тебе и записывает в хп цп и мп параметры из всех пакетов 0E
тебе надо выдрать откуда-нидь свой ID и подправит здесь
Код:
if FromServer and (pck[1]=#$0E) and (ConnectName = Name) and (ReadD(2)=MyID) //считываем значения ЦП, ХП, МП максимальные и на данный момент.
then StatsUpdate;
Народ есть идейка но незнаю осуществима она или нет при помощи пакетхака.
Суть такова чтобы использовать скрипт для логаута во время опасности допустим из режима боя.
Это можно сделать путем отсылки пакета на вход того же аккаунта два раза и тогда того чара который был онлайн выбивает из клиента и он сразу выходит не дожидаясь выхода из режима боя при простом дисконекте такого нет. Информация не проверена поэтому если есть предложения или возражения по этому поводу прошу писать :)
Если найти пакет, который позволяет сделать форс логаут, то сделать это эллементарно.. ловим пакет от клиента(социальные действия например), заменяем на *нежный нам пакет* и шлем серверу..