Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг
Войти через OpenID

Скриптинг Форум посвещенный созданию скриптов для L2PacketHack

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 17.04.2012, 22:30   #1
Местный
 
Аватар для Deffol
 
Регистрация: 17.02.2011
Сообщений: 118
Сказал Спасибо: 51
Имеет 2 спасибок в 2 сообщенях
Deffol пока неопределено
По умолчанию Некорректная работа таймера

Приветствую всех.
Давненько не писал скрипты, опять вернулся к этому и сразу столкнулся с проблемой, и, я не понимаю в чем проблема.
Вот собственно скрипт: ( сори забыл как делфи код делать )
PHP код:
var
    
Timer:TTimer;
    
Step:byte
    
name:string;
procedure Init;
begin
    Step
:=1;
    
Timer:=TTimer.Create(nil);
    
Timer.OnTimer:=@OnTimer;
    
Timer.enabled:=false;
end;

procedure Free;
begin
    Timer
.free;
end;

procedure OnTimer(SenderTObject);
begin
    begin
        
case Step of
        1
:
            
begin
                buf
:=HStr('B2 00 57 71 FF 00 32 00 00 00');
                
SendToServerEx(name); 
                
Timer.interval:=600;
                
Inc(Step);   
            
end;   
        
3:
            
begin
                buf
:=HStr('B2 00 57 71 FF 00 33 00 00 00');
                
SendToServerEx(name);    
                
Step:=1;
                
Timer.enabled:=false;
            
end;
        
end;   
    
end;
end;

    
begin     
    name
:=ConnectName;        
    if 
FromClient and (pck[1]=#$B2) and (ReadH(6)=12544) then         
        
Timer.enabled:=true;      
    
end
Проблема в том, что выполняется только первый Step, а иногда и он не выполняется ( чистый рандом ), второй степ вообще не выполняется.
Есть подозрения, что это из за ConnectName, не могу проверить ибо не знаю как по другому реализовать его, допустим через const если объявить имя соеденения, даже задав имя через SetName, скрипт не включается вообще. Это единственный способ который помог мне включить скрипт.
Deffol вне форума   Ответить с цитированием
Старый 17.04.2012, 23:03   #2
Местный
 
Аватар для goodvin1709
 
Регистрация: 13.02.2011
Сообщений: 506
Сказал Спасибо: 121
Имеет 100 спасибок в 83 сообщенях
goodvin1709 пока неопределено
По умолчанию

Код:
procedure OnTimer(Sender: TObject); 
begin 
    begin 
        case Step of 
        1: 
            begin 
                buf:=HStr('B2 00 57 71 FF 00 32 00 00 00'); 
                SendToServerEx(name);  
                Timer.interval:=600; 
                Inc(Step);    
            end;    
        3: 
            begin 
                buf:=HStr('B2 00 57 71 FF 00 33 00 00 00'); 
                SendToServerEx(name);     
                Step:=1; 
                Timer.enabled:=false; 
            end; 
        end;    
    end; 
end;
Цитата:
Проблема в том, что выполняется только первый Step, а иногда и он не выполняется ( чистый рандом ), второй степ вообще не выполняется.
Вот смотри ты проверяешь значение степ на 1 и отсылаешь пакет и ставишь степ = 2.
если степ 2 то оно нечего не делает.У тебя проверка только на 1 и 3 нужно добавить 2 или сделать так
Код:
procedure OnTimer(Sender: TObject); 
begin 
    begin 
        case Step of 
        1: 
            begin 
                buf:=HStr('B2 00 57 71 FF 00 32 00 00 00'); 
                SendToServerEx(name);  
                Timer.interval:=600; 
                Inc(Step);    
            end;   
         2:
            begin 
                buf:=HStr('Второй пакет'); 
                SendToServerEx(name);  
                Timer.interval:=600; 
                Inc(Step); 
              end;       
        3: 
            begin 
                buf:=HStr('B2 00 57 71 FF 00 33 00 00 00'); 
                SendToServerEx(name);     
                Step:=1; 
                Timer.enabled:=false; 
            end; 
        end;    
    end; 
end;
__________________
---------------------------__--------__-----
---____- ___--____--- ___/'- /__ ___-(__)-____
--/-___-/-__-\/-__--\ /-__--'/--|-/--//---//--__--\
-/-/_/ -/-/_/--/-/_/--/-/_/--/|--|/--'//---//--/-/--/
-\___-/\____/\____/\____/-|____//__'//_'/-/__/
/_-__/
goodvin1709 вне форума   Ответить с цитированием
Старый 18.04.2012, 01:35   #3
Местный
 
Аватар для Deffol
 
Регистрация: 17.02.2011
Сообщений: 118
Сказал Спасибо: 51
Имеет 2 спасибок в 2 сообщенях
Deffol пока неопределено
По умолчанию

кошмар, спасибо большое я в шоке, что не увидел, что у меня вместо второго шага стоит третий...вот балбес, целую тему создал. хотя в любом случае я бы наверно не скоро заметил это. спасибо еще раз.
А вот пользуясь случаем хотел бы поинтересоваться, ConnectName нормально я прописал? В смысле не всегда правильно то, что вроде бы работает у меня по крайней мере.

Добавлено через 2 часа 16 минут
С этим я разобрался, все таки смог через имя соеденения активировать скрипт по старинке.
Но как ставлю задержки ( интервал времени ), выполняется только первый шаг и последний, второй не выполняется:

PHP код:
const
name='deffol'
var
    
Timer:TTimer;
    
StepSkill:byte;
    
procedure Init;
begin
    StepSkill
:=1;
    
Timer:=TTimer.Create(nil);
    
Timer.OnTimer:=@OnTimer;
    
Timer.enabled:=false;
end;

procedure Free;
begin
    Timer
.free;
end;

procedure OnTimer(SenderTObject);
begin
    
case StepSkill of   
    1
:
        
begin
        buf
:=HStr('пакет');
        
SendToServerEx(name);  
        
Inc(StepSkill);  
        
timer.interval:=200;
        
end;
    
2:
        
begin
        buf
:=HStr('пакет');
        
SendToServerEx(name);
        
Inc(StepSkill);  
        
timer.interval:=200;
        
end;
    
3:
        
begin
        buf
:=Hstr('кулёк');
        
SendToServerEx(name);  
        
Timer.enabled:=false;  
        
StepSkill:=1;
        
end;
    
end;
end;

begin
    
if FromClient and (pck[1]=#$xx) and (ReadH(6)=yy) and (ConnectName=name) then   
    
Timer.enabled:=true;         
end
Пробовал с каждыми действием добавлять шаг, то есть не через Inc(SkillStep), а через SkillStep:=2 ( в первом шаге ), SkillStep:=3 ( во втором ), ну и в третьем возвращать так же как в конце таймера. В этом случае скрипт выполнялся как мне нужно, но всего лишь один раз, после он будто выключался. Подскажите где ошибся или опять мб что-то забыл. Без интервала никак

Последний раз редактировалось Deffol, 18.04.2012 в 01:35. Причина: Добавлено сообщение
Deffol вне форума   Ответить с цитированием
Старый 18.04.2012, 20:20   #4
Местный
 
Аватар для J-Fobos
 
Регистрация: 09.06.2008
Сообщений: 867
Сказал Спасибо: 175
Имеет 468 спасибок в 259 сообщенях
J-Fobos пока неопределено
По умолчанию

Ну вы же сами выключаете таймер

Цитата:
В этом случае скрипт выполнялся как мне нужно, но всего лишь один раз, после он будто выключался.
__________________

В любом из нас спит гений. И с каждым днем все крепче.

Переходим на протокол нового поколения jabber
J-Fobos вне форума   Ответить с цитированием
Старый 19.04.2012, 11:59   #5
Местный
 
Аватар для Deffol
 
Регистрация: 17.02.2011
Сообщений: 118
Сказал Спасибо: 51
Имеет 2 спасибок в 2 сообщенях
Deffol пока неопределено
По умолчанию

да, но после шага 3-го, а до него еще 2 шага я не нашел ошибок в скрипте сам, думаю дело в интервале, нужен побольше, по крайней мере вроде с бОльшим работает.
Deffol вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 11:44.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!