Просмотр полной версии : Скрипт
у меня не пашет...Сервер Грация Парт 2...
Там по ходу какие то системный сообщения должны приходить в игру???
И может что то ещё надо вписывать кроме ника чара??
Для грации парт 2 нужно изменить пакеты
#$04
#$28
#$48
6D 00 00 00 00
а де их взять?
или как посмотреть?
Щас тебе перепишу для грации парт 2
pmen, за скрипт спасибо, конечно долго будет но лучше чем заново топать)
Вот для Парт 2
//Скрипт на возрождение на месте после смерти.
//Включите скрипт,когда вы умерли возьмите себя в таргет и нажмите в город.
//Вы встанете наместе.
//Автор pmen ICQ - 479917081
//=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ =+=+=+=+=+=+=+=+=+=+=
const
//======================================
Name='Qwertyuio'; //<-----Ник Персонажа
//======================================
var
a:integer;x:integer;MyID:string;
y:integer;z:integer;
b:boolean;ValidatePosition:string;
procedure Init; //Вызывается при включении скрпта
begin
SendMsc('Возьми себя в таргет'); //Системное сообщение
b:=false; //Условие b первоночально False
end;
procedure SendMsc(msc:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msc);
SendToClient;
end;
begin
//Нечитаем пустые пакеты
if pck='' then exit;
//Если Имя соединения Name
//И Пакет Action от клиента то
if FromClient and (ConnectName=Name) and (pck[1]=#$1F) then
begin
//Сохраняем мой Обжект Ид
MyID:= pck[2]+pck[3]+pck[4]+pck[5];
a:=ReadD(2); x:=ReadD(6); //Читаем и запоминаем данные
y:=ReadD(10); z:=ReadD(14);
SendMsc('Все данные сохранены!'); //Оповещаем о том что все прошло успешно
b:=true;
end;
begin
if pck='' then exit; //Не читаем пустые пакеты
//Если от Клиента пакет RequestRestartPoint
//Запоминаем ValidatePosition до revive
//Посылаем клиенту TeleportToLocation
if FromClient and (ConnectName=Name) and (pck=hstr('7D 00 00 00 00')) then
if FromClient and (ConnectName=Name) and (pck[1]=#$59) then ValidatePosition:=pck;
if FromServer and (ConnectName=Name) and (pck[1]=#$22) and (MyID= pck[2]+pck[3]+pck[4]+pck[5]) then
begin
pck:=''; //Убиваем стандартный пакет
buf:=ValidatePosition; //посылаем ValidatePosition
SendToServerEX(Name);
buf:=#$22;
WriteD(A); //Obj.ID
WriteD(X); //Coord.X
WriteD(Y); //Coord.Y
WriteD(Z); //Coord.Z
SendtoclientEX(Name);
buf:=ValidatePosition; //посылаем ValidatePosition
SendToServerEX(Name);
end;
end;
end.
Долго может быть в первый раз...а так дальше норм =)
скрипт сработал но...сначало Пакетник выдал ошибку,затем Л2 щависла и выдала крит...-(((
Попробувал на шоке, вроде бы не пашет... или это для самых наикривейших яв?
нее....не пашет скрипт у меня....выдает ошибку пакетника и Тпшит в город...
Значит какой-то пакет неправильно вписал...Я думаю шифрация паетов на Парт 2 Парт1 и камаельке одинаковая ....Понятн что на шоке работать нбудет..так же как и на руофе и Аббисе.=) На многих явах работает..на серверах где по 1 к онлайна
оно иногда ресает...но ты стоишь 1-2 сек и сразу оказываешся в городе...
вот дам сервер где я щас играю =) Там пользуюсь скриптом во всю!
Lineagetwo.ru
Добавлено через 2 минуты
Понял твою проблему :( Увы но там где ты играешь стоит хорошая геодата...Я обязательно попробую решить проблему с геодатой и выложу переписанный скрипт.У меня уже есть идеи =)
оно иногда ресает...но ты стоишь 1-2 сек и сразу оказываешся в городе...
вот дам сервер где я щас играю =) Там пользуюсь скриптом во всю!
Lineagetwo.ru
Добавлено через 2 минуты
Понял твою проблему :( Увы но там где ты играешь стоит хорошая геодата...Я обязательно попробую решить проблему с геодатой и выложу переписанный скрипт.У меня уже есть идеи =)
Буду очень благодарен=)))
Вот 8tomat8 предлогал хорошую идею....но мне нужна помощь конечно ) Вот когда ты нажал в город,когда ты втаешь,в это время будет посылться Validate Position каждые 0.1,а ValidatePosition нужно брать с того места где ты понастоящему должен встать и до того где ты встал на самом деле....Тогда думаю проблем не будет..Нужно написать процедуру тамера и вычисления ValidatePosition..и тогда думаю будет работать и с хорошей геодатой
Добавлено через 1 минуту
Админы а вы как думаете сработает?
Вот 8tomat8 предлогал хорошую идею....но мне нужна помощь конечно ) Вот когда ты нажал в город,когда ты втаешь,в это время будет посылться Validate Position каждые 0.1,а ValidatePosition нужно брать с того места где ты понастоящему должен встать и до того где ты встал на самом деле....Тогда думаю проблем не будет..Нужно написать процедуру тамера и вычисления ValidatePosition..и тогда думаю будет работать и с хорошей геодатой
Добавлено через 1 минуту
Админы а вы как думаете сработает?
хммм....идею я почти понял...она со смыслом...и тоже думаю сработает....но как это всё написать на деле я не наю:cray:
Сделаем :) Но работка тут большая.....
Но скрипт то прикольный будет)))
Прикинь так бишем бесконечно вставать))))
;)
Добавлено через 15 минут
Кто хорошо разбирается в Таймерах....Посмотрите не накуралесил ли я тут случайно :)
//Скрипт на возрождение на месте после смерти.
//Включите скрипт,когда вы умерли возьмите себя в таргет и нажмите в город.
//Вы встанете наместе.
//Автор Crazy$
//=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ =+=+=+=+=+=+=+=+=+=+=
const
//======================================
Name='Qwertyuio'; //**<-----Ник Персонажа-=
//======================================
var
a:integer;x:integer;MyID:string;s:integer;
y:integer;z:integer;TimerRes:TTimer;
b:boolean;ValidatePosition:string;
procedure Init; //Вызывается при включении скрпта
begin
timerRes:=TTimer.Create(nil); //Задаем настройки тамера
timerRes.OnTimer:=@OnTimer;
timerRes.enabled:=false; //Таймер выключен
timerRes.interval:=10; //интервал 10 милисекунд
s:=0;
end;
procedure OnTimer;
begin
buf:=#$48; //Тут нужно будет возиться с координатами..Вычислять для каждого места где обычно происходит REVIVE
inc(s);
SendToServerEX(Name);
end;
// и Т.Д
procedure SendMsc(msc:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msc);
SendToClient;
end;
procedure Free; //Вызывается при выключении скрипта
begin
timerRes.free; //Освобождаем память таймера
end;
begin
//Нечитаем пустые пакеты
if pck='' then exit;
//Если Имя соединения Name
//И Пакет Action от клиента то
if FromClient and (ConnectName=Name) and (pck[1]=#$04) then
begin
//Сохраняем мой Обжект Ид
MyID:= pck[2]+pck[3]+pck[4]+pck[5];
a:=ReadD(2); x:=ReadD(6); //Читаем и запоминаем данные
y:=ReadD(10); z:=ReadD(14);
SendMsc('Все данные сохранены!'); //Оповещаем о том что все прошло успешно
b:=true;
end;
begin
if pck='' then exit; //Не читаем пустые пакеты
//Если от Клиента пакет RequestRestartPoint
//Запоминаем ValidatePosition до revive
//Посылаем клиенту TeleportToLocation
if FromClient and (ConnectName=Name) and (pck=hstr('6D 00 00 00 00')) then //Если от клиента идет пакет RequestRestartPoint то
begin
TimerRes.Enabled := True; //Таймер включен
end;
if FromClient and (ConnectName=Name) and (pck[1]=#$48) then ValidatePosition:=pck;
if FromServer and (ConnectName=Name) and (pck[1]=#$28) and (MyID= pck[2]+pck[3]+pck[4]+pck[5]) then
begin
pck:=''; //Убиваем стандартный пакет
buf:=ValidatePosition; //посылаем ValidatePosition
SendToServerEX(Name);
buf:=#$28;
WriteD(A); //Obj.ID
WriteD(X); //Coord.X
WriteD(Y); //Coord.Y
WriteD(Z); //Coord.Z
SendtoclientEX(Name);
buf:=ValidatePosition; //посылаем ValidatePosition
SendToServerEX(Name);
timerRes.enabled:=false; // Таймер выклюяен
exit;
end;
end;
end.
Добавлено через 43 минуты
Правильно ли написана сама процедура таймера?
alexteam
09.06.2009, 19:17
SendToServerEx(name)
Теперь осталось сделать процедуру +-к координатам
Добавлено через 4 минуты
alexteam Как ты думаешь..Это реально сделать?
не +- тебе надо или + или - в зависимости от того какая координата больше, первая или вторая...
вот
http://img196.imageshack.us/img196/1695/valiade.gif
Ыч) Обьяснение в аблице это хорошо)! Нехочешь вместе со мной делать этот скрипт? А то сам я врядли справлюсь!:eek:
Smertonosec
09.06.2009, 20:36
Кто бы мог подумать но на мелке не робит)Дохну врубаю скрипт(с таргетом на ся) встаю, тутже все нпц пропадают(ну и народ тоже) дисконект, захожу в городе
Мы решаем эту проблему...это связано с геодатой.
pmen, мне чесно так впадлу)))) лучше спрашивай что не ясно)
:p Ок))))
Добавлено через 51 секунду
Я вот просто недогоняю..как правильно оформить эту процедуру...сам смысл понятен
Smertonosec
09.06.2009, 20:50
пмка клянись что не сделаешь как хинт если сделаешь обход везде? Хинт сначала муднул хлап потом сам фикс и придумал...а некто ведь не мог да и до этог овремени врятли бы кто нибудь смог...
:rolleyes: Ок...Клянусь : D
Smertonosec
09.06.2009, 20:54
))ща манорку сдам возможно помогу както с геодатой...при тп таже проблема...если на мелке пашет мультик и фиксануть не могут ток мультов банят то не думаю что составит труда обойти их геодату, возможно проще сначала попробовать на стороне клиентской части?
Еще кроме X,Y,Z нужно посылать Heading и Data.Для каждого места Heading разный..Data всегда 00
Добавлено через 3 минуты
8tomat8 Извини за наглость...но не мог бы ты примерно расписать процедуру?...:blush:
Муфлон пишет .gludio
ловиш свои координаты допустим пусть будут "аа аа аа аа 00 00 00 00 11 11 11 11"
считываеш (ReadD(1,2 или 3)) х у и z (x1=aa aa aa aa, у1=00 00 00 00...)
потом береш координаты глудио(там будут пускай х2 у2 z2)
Делаеш не хитрые действия Xc:=х1-х2 Ус:=у1-у2.....(Xc Yc Zc это разница межды значениями координат)
Тут кусок ты поймеш из таблицы...
и говориш для каждой переменной к примеру для X
For x1:=aa aa aa aa until x1:<>=x2 //я сомневаюсь с командой FOR на ней постоянно PHX зависает, походу надо repeat until но я не помню....
begin
x1:=x1+5;
end;
Право писание у меня тут хана как хромает)) Все из головы)
И так для трех значений(х,у и z)
Добавлено через 2 минуты
на.... брал все из головы так что правте если чо там не так
Спасиб =) ЩАс я уже написал запоминаие координат того места куда должен телепортироваться после смерти (Стандартные,не то что я задаю)
Добавлено через 24 минуты
XPos YPos Zpos - Сложенная координата
X1 Y1 Z1 - Координаты куда должен был телепортаться чар (В город)
X Y Z - Координаты смерти и возрождения
Вот в X1 Y1 Z1 выдает ошибка
Repeat X1:=X1 until X1:<>=X;
Repeat Y1:=Y1 until Y1:<>=Y;
Repeat Z1:=Z1 until Z1:<>=Z;
begin
XPos:=X1+5;
YPos:=X1+5:
ZPos:=X1+5;
end;
В чем проблема?...никак недойдет
чувак
1) XPos YPos и ZPos должны вычислятся отдельно и проверятся тоже отдельно, поскольку растояние между Хми Уми и Zми разное, а у тебя получается что когда одна из координат совпала то все остальные тоже перестают менятся...
2)"<>=" тут должно быть или "<=" или ">="...
3)XPos:=X1+5;
YPos:=X1+5:
ZPos:=X1+5;
Могут менятся как +5 так и -5 это можно узнать из моего пункта "2)"
4)repeat until помоему выглядит так
Repeat
begin
X1:=X1+5;
end;
Until X1:=X2;
5)XPos:=X1+5;
YPos:=X1+5:
ZPos:=X1+5;
Они не будут меняться))) и почему они все равны x1+5 ?Оо
надо
X1:=X1+5;
y1:=y1+5;
z1:=z1+5;
мммм что то еще забыл, вспомню напишу...
Те кто хорошо розбираются напомните плиз как выглядит repeat until и надо ли оно вообще тут))
не посылайте в гуугл... лучше промолчите
Пользуйтесь гуглом, там всё есть!
Пользуйтесь гуглом, там всё есть!
я ж просил.....
Пользуйтесь гуглом, там всё есть!
Да Боже мой, пусть тут разбираються, мне как новичку в этом деле будет так сказать "Учебное пособие"=))
HORSE, я говорил про конструкции repeat ... until (http://www.delphi.int.ru/articles/117/)
спасиб NLObP, как раз то что мне нужно!
Добавлено через 55 минут
Я попробывал сделать вручную на Lineage-game.ru 1 Просто со скриптом мне выбило дисконнект(я даже неуспел встать). 2 Запомнил каждый ValidatePosition до места смерти..поставил на отсылку каждые 10 милисекунд.(Я только встал и меня в дисконнект) Вывод...может то что я собрался сделать бесмысленно?
Вывод...может то что я собрался сделать бесмысленно?
возможно) но практика замечательная))) может ты что то не то в скрипте накрутил? выложи щас глянем
Я использовал первый скрипт....чисто проверял
слу вопрос) А не легче в телепортере сделать функцию запоминания положения что бы потом после появления в городе куда надо лететь?) Просто а Ресом надо очень много проверок впихивать и сильно может сбоить если ты вдруг к примеру не 1 раз а 2 по кнопке клацнул, если случайно пробежался после респа или во время... и тд и тп
Это будет намного легче..Ну нужно будет ждать пока тебя тпанет в город..потом будешь лететь на место смерти...Очень долгий процесс =)
Это будет намного легче..Ну нужно будет ждать пока тебя тпанет в город..потом будешь лететь на место смерти...Очень долгий процесс =)
А если ты умер на РБ????ТО тебя тоже ТПшнет???...имхо Призыв и Телепорт там не пашет....или просто по прошлым координатам тебя туда кинет??
просто убьет старый пакет TeleportToLocation и задаст новый с нужными координатами
CapsLock
10.06.2009, 15:02
pmen, а ты не мог бы написать тот же скрипт на рес, но чтобы в сообщениях не было:возьми себя в таргет.
а то все видят, гм вдруг спалит(мало ли чё).:)
просто убери это сообщение из скрипта плз
сам убери...там никаких трудностей нету...просто удали пару строк и всё...=))
CapsLock, а ничего что эти сообщения приходят только клиенту? и ни кто больше их не видит
:D CapsLock Эти сообщения видишь только ты один
Зделал Все как написано но после нажатия в город просто продолжаю лежать на месте табличка пропадает и все во круг) cервер интерлюд
Ты взял случаем не скрипт для Парт 2 ??
Первый скрипт из твоево поста
kittyhell
25.06.2009, 22:13
нихт пахать( ШОК -100
Smertonosec
26.06.2009, 10:36
Ну дак там геодата, ща решают этот вопрос.
pascalpwnz
05.07.2009, 19:38
Его никак не решить. Геодата есть геодата. Сервер отправляет при ресе вас в город и ему все равно, что клиент сообщает о местонахождении в другом месте, он(сервер) обратно вас все равно не отправит.
Ну дак там геодата, ща решают этот вопрос.
На шоке решают скорее когда его закрыть :p.
для интерлюдии выложите кто нить
Imperial2008
17.08.2009, 15:49
Вы видите, в начальном посте скрипт не наблюдается. Выложите его еще раз, пожалуйста.
SyMaSvoD
29.08.2009, 14:00
выложите скрипт плиз на возрождение для интерлюдии)
выложите для интерлюда плз
vBulletin® v3.6.11, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot