Supernewbie: давно надо было привыкнуть что mira не в Phx пишет, он тебе лишь путь обозначивает, а не дает готовый скрипт для Phx
__________________ На фразы в аську типа "слух карочь 1)как точить 2)как раскачаться за 5 мин" - игнор. ИМХО идиотизм
Дай голодному рыбу - он будет один день сыт. Покажи ему, как удить рыбу - он пошлёт тебя и скажет, что у него есть более интересные занятия, чем забрасывать снасти в воду
David Kastrup @ de.comp.text.tex.
"Приобретенные навыки общения с маленькими детьми - сильно упрощают взаимопонимание на форумах..."
А вы знаете, что для качественной сварки - место шва нужно протереть спиртом?
ага всеголиш скопипастил код из проги показать пример. Да разница небольшая с пх тока пакеты ловятса в клиенте. Фс оптимизирован и реализует тока высокоуровневую логику бота разборы пакетов и управление масивами выполняет rtl программы.
Вот мой вариант ведения базы с использованием TStringList и свойства CommaText. Это только для примера поэтому в базу записывается только имя, координаты и профа. Оффтоп
DELPHI Код:
const
characterName='ArchDevil';
var
CharData,CharInfo : TStringList;
CharDataIndex : integer;
procedure Init; //Вызывается при включении скриптаbegin
UseForConnectName := characterName;
CharData:=TStringList.Create;
CharInfo:=TStringList.Create;
end;
procedure Free; //Вызывается при выключении скриптаbegin
CharData.Free;
CharInfo.Free;
end;
Procedure ShowData;
var i:integer;
begin
SendMsg('==============================');
for i:=0to CharData.Count-1do SendMsg(CharData[i]);
end;
//основная часть скрипта//вызывается при приходе каждого пакета если скрипт включенbeginif FromServer thencase pck[1] of
#$31: //char info. dobovlenie v bazy charov ili obnovlenie esli uzhe est'begin
CharDataIndex:=CharData.IndexOfName(inttostr(ReadD(18)));
if CharDataIndex=-1then//Esli -1 znach net v baze. ',' - simvol razdeleniya. Zanositsa v formate 0bjid=name, x, y, z, profa
CharData.Add(Format('%d=%s, %d, %d, %d, %d',[ReadD(18),ReadS(22),ReadD(2),ReadD(6),ReadD(10),ReadD(32+length(ReadS(22))*2)]))//dobovlenie v bazuelse
CharData[CharDataIndex]:=Format('%d=%s, %d, %d, %d, %d',[ReadD(18),ReadS(22),ReadD(2),ReadD(6),ReadD(10),ReadD(32+length(ReadS(22))*2)]); //obnovlenie end;
#$2F: //obnovlenie coordinat charov s paketa movetolocationbegin
CharDataIndex:=CharData.IndexOfName(inttostr(ReadD(2)));
if CharDataIndex=-1thenexit//net v bazeelsebegin
CharInfo.Clear; //commatext razlazhivaet stroky s simvolami ','
CharInfo.CommaText:=CharData.Values[inttostr(ReadD(2))]; //CharInfo[0]=Name CharInfo[1]=x
CharInfo[1]:=inttostr(ReadD(6)); //x //CharInfo[2]=y Charinfo[3]=z
CharInfo[2]:=inttostr(ReadD(10)); //y //CharInfo[4]=profa
CharInfo[3]:=inttostr(ReadD(14)); //z
CharData[CharDataIndex]:=inttostr(ReadD(2))+'='+CharInfo.CommaText; //posle obnovleniya obratno slazhivaem stroky i obnovlyaem v CharDataend;
end;
#$08: //Delete objbegin
CharDataIndex:=CharData.IndexOfName(inttostr(ReadD(2)));
if CharDataIndex=-1thenexitelse CharData.Delete(CharDataIndex);
end;
end;
if FromClient then//vivod bazi cherez SendMsg() pri socialnom deistviicase pck[1] of
#$56: ShowData;
end;
end.