Page 1 of 2
					
				Помогиет со скриптом
				Posted: 19.11.2010 12:58
				by xam
				Мой первый скрипт.. не судите строго...
Code: Select all
Program ItemID; 
var i : Integer; 
DagerType : Word; 
Dager : Cardinal;
Vendor : Cardinal;
Korova : Cardinal;
Bulova : Cardinal;
{$Include 'all.inc'}
procedure FullDisconnect; 
begin 
SetARStatus(true);
while GetSkillValue('Hiding') < 80.0 do
Disconnect; 
end;
procedure CheckDead; 
begin 
waitconnection(3000); 
CheckSave; 
if Dead then 
begin 
 SetWarMode(true); 
 WaitGump('1'); 
 wait(5000); 
 while (Dead) do Wait (1000); 
 wait (2000); 
 Hungry(1, ground); 
end; 
end;
Begin 
FindDistance := 0; 
SetARStatus(false); 
waitconnection(3000); 
CheckSave; 
wait(3000); 
SetARStatus(true); 
DagerType := $0F52; //Дагер ID
Vendor := $00021790; // Вендор ID
Korova := $0001E0B8; // Животное ID
Bulova := $405C2AE2; ========>>>>>>> Как мне сделать чтобы булову из пака ЮЗАТЬ?
FindType(DagerType, BackPack); 
Dager := finditem; 
if Dager = 0 then 
    begin 
    FullDisconnect; 
    AddToSystemJournal('Dager no finded'); 
    end; 
while true do 
begin
 SetARStatus(true); 
  waitconnection(3000); 
  CheckSave; 
  UseSkill('Arms Lore'); 
  WaitTargetObject(Bulova); ==========>>>>>> Почему то не хочет из пака юзать а по типу юзает????
  wait(11000); 
 waitconnection(3000); 
  CheckSave; 
 UseSkill('item identification'); 
 WaitTargetObject(Dager);
wait(11000);
useskill('Hiding')   ==============>>>>>> Как хайд заставить после 70 со стилом работать?????????
wait(11000);
 if TargetPresent then CancelTarget; 
        CheckTargetError(5,2); 
        CheckSave; 
   UseSkill('Anatomy'); 
                WaitTargetObject(Vendor); 
   Wait(10000);
 if TargetPresent then CancelTarget; 
        CheckTargetError(5,2); 
        CheckSave; 
   UseSkill('Animal Lore'); 
                WaitTargetObject(Korova); 
   Wait(10000);
  i := i + 1; 
  end;
end.
 
			 
			
					
				Re: Помогиет со скриптом
				Posted: 19.11.2010 13:04
				by CFA
				
Bulova := $405C2AE2; ========>>>>>>> Как мне сделать чтобы булову из пака ЮЗАТЬ?
WaitTargetObject(Bulova); ==========>>>>>> Почему то не хочет из пака юзать а по типу юзает????
Пак - это бекпак чара, или другой? Если другой, то вероятно потому, что пак не открыт.
useskill('Hiding')   ==============>>>>>> Как хайд заставить после 70 со стилом работать?????????
А что для этого надо сделать в клиенте?
 
			 
			
					
				Re: Помогиет со скриптом
				Posted: 19.11.2010 13:57
				by xam
				CFA wrote:
Пак - это бекпак чара, или другой? Если другой, то вероятно потому, что пак не открыт.
useskill('Hiding')   ==============>>>>>> Как хайд заставить после 70 со стилом работать?????????
А что для этого надо сделать в клиенте?
 
 Да пак это бекпак чара =) и он открыт.. но почему то  меня смущает вот это 
Code: Select all
FindType(DagerType, BackPack); 
Dager := finditem; 
if Dager = 0 then 
    begin 
    FullDisconnect; 
    AddToSystemJournal('Dager no finded'); 
    end; 
когда я пытаюсь изменить 
Code: Select all
DagerType := $0F52; /////////////////// Дагер тип
Vendor := $00021790; ////////////////// Вендор ид
Korova := $0001E0B8; //////////////////
Bulova := $405C2AE2;
на 
Code: Select all
Dager := $00541790; /////////////////// Дагер тип
Vendor := $00021790; ////////////////// Вендор ид
Korova := $0001E0B8; //////////////////
Bulova := $405C2AE2;
 и убрать вот эти строчки скрипт не работает 
Code: Select all
FindType(DagerType, BackPack); 
Dager := finditem; 
if Dager = 0 then 
    begin 
    FullDisconnect; 
    AddToSystemJournal('Dager no finded'); 
    end; 
while true do 
 
__________________________________________________________
Мне надо из хайда сделать наподобие вот такого скрипта сделать 
Code: Select all
program Hiding; 
var t:Integer; 
{$Include 'all.inc'} 
Begin 
SetARStatus(true); 
while GetSkillValue('Hiding') < 80.0 do 
   begin 
   if connected then 
      begin 
      for t:= 0 to 30 do 
         begin 
         CheckSave; 
         UseSkill('Hiding'); 
         Wait(11000); 
         end; 
      CheckSave; 
      end; 
   end; 
while true do 
   begin 
   if Hidden then 
   useskill('Stealth') 
   else useskill('Hiding'); 
   wait(10000); 
   end; 
End.
 
			 
			
					
				
				Posted: 19.11.2010 14:03
				by xam
				Я хочу общий скрипт сделать на прокачку скилов основных..
			 
			
					
				Re: Помогиет со скриптом
				Posted: 19.11.2010 14:30
				by CFA
				DagerType : Word; это 2 байта, а id 4 байтный и  такое число  -$00541790 - просто не влезает  в переменную. если изменить тип DagerType на cardinal, подозреваю, что все заработает.
Насчет хайда - выделить это все в отдельную процедуру и вызывать ее
			 
			
					
				
				Posted: 19.11.2010 16:01
				by Fenix
				Использование стелса когда хайдинга больше 80:
Code: Select all
begin
  while not Dead do
  begin
    UseSkill('Hiding');
    Wait(11000);
    CheckLag(15000);
    if Hidden and (GetSkillValue('Hiding') > 80) then
    begin
      UseSkill('Stealth');
      Wait(11000);
      CheckLag(15000);
    end;
  end;
end.
Совет: если значение переменной не изменяется, то это не переменная, а константа. В твоем случае переменные DagerType, Vendor, Korova, Bulova можно вынести в константы:
Code: Select all
const
  DagerType = $0F52;
  Vendor = $00021790; 
  Korova = $0001E0B8; 
  Bulova = $405C2AE2;
Соответственно, константы в паскале объявляются до типов и переменных (в твоём случае должны идти до блока var'ов).
 
			 
			
					
				
				Posted: 19.11.2010 16:16
				by xam
				Fenix wrote:Использование стелса когда хайдинга больше 80:
Code: Select all
begin
  while not Dead do
  begin
    UseSkill('Hiding');
    Wait(11000);
    CheckLag(15000);
    if Hidden and (GetSkillValue('Hiding') > 80) then
    begin
      UseSkill('Stealth');
      Wait(11000);
      CheckLag(15000);
    end;
  end;
end.
Совет: если значение переменной не изменяется, то это не переменная, а константа. В твоем случае переменные DagerType, Vendor, Korova, Bulova можно вынести в константы:
Code: Select all
const
  DagerType = $0F52;
  Vendor = $00021790; 
  Korova = $0001E0B8; 
  Bulova = $405C2AE2;
Соответственно, константы в паскале объявляются до типов и переменных (в твоём случае должны идти до блока var'ов).
 
Fenix я только учусь... покажи мне пожалуйста на примере. Мне сложно пока что
 
			 
			
					
				
				Posted: 19.11.2010 17:05
				by xam
				И как мне  вот это запехнуть в мой скрипт на это местою.
Вот сюда 
Code: Select all
wait(11000);
useskill('Hiding')   
wait(11000);
=====>>>>:>
Code: Select all
begin 
  while not Dead do 
  begin 
    UseSkill('Hiding'); 
    Wait(11000); 
    CheckLag(15000); 
    if Hidden and (GetSkillValue('Hiding') > 80) then 
    begin 
      UseSkill('Stealth'); 
      Wait(11000); 
      CheckLag(15000); 
    end; 
  end; 
end.
 
			 
			
					
				
				Posted: 19.11.2010 22:06
				by Fenix
				Сделай процедуру:
Code: Select all
procedure UseHiding;
begin 
  UseSkill('Hiding'); 
  Wait(11000); 
  CheckLag(15000); 
  if Hidden and (GetSkillValue('Hiding') > 80) then 
  begin 
    UseSkill('Stealth'); 
    Wait(11000); 
    CheckLag(15000); 
  end; 
end;
Затем вызывай её в основной процедуре скрипта (та что между begin ... end.):
Code: Select all
begin
  while not Dead do
  begin
    UseHiding;
    //Тут можно добавить вызовы других методов, если таковые нужны.
  end;
end.
 
			 
			
					
				
				Posted: 19.11.2010 22:09
				by xam
				Хм а если я хочу много процедур это должно выглядить вот так? 
Code: Select all
Program ItemID; 
var i : Integer; 
DagerType : Word; 
Dager : Cardinal; 
Vendor : Cardinal; 
Korova : Cardinal; 
Bulova : Cardinal; 
{$Include 'all.inc'} 
 
Code: Select all
procedure FullDisconnect; 
begin 
SetARStatus(true); 
while GetSkillValue('Hiding') < 80.0 do 
Disconnect; 
end;
procedure UseHiding; 
begin 
  UseSkill('Hiding'); 
  Wait(11000); 
  CheckLag(15000); 
  if Hidden and (GetSkillValue('Hiding') > 80) then 
  begin 
    UseSkill('Stealth'); 
    Wait(11000); 
    CheckLag(15000); 
  end; 
end;
begin 
  while not Dead do 
  begin 
    FullDisconnect; 
    //Тут можно добавить вызовы других методов, если таковые нужны. 
  end; 
end.
begin 
  while not Dead do 
  begin 
    UseHiding; 
    //Тут можно добавить вызовы других методов, если таковые нужны. 
  end; 
end.
 Вот так примерно?
 
			 
			
					
				
				Posted: 19.11.2010 22:17
				by Fenix
				Нет. Довольно грубые ошибки:
1. Основная процедура скрипта может быть одна (то что между begin ... end. В паскале в одном модуле end с точкой может быть только один).
2. Не пойму что у тебя делает 
FullDisconnect. По-названию вроде отключает стелс от сервера. По коду - включает режим автоподключения и завешивает скрипт в мёртвом цикле на дисконект при условии, что хайдинга меньше 80.
В твоём случае код должен выглядеть примерно так (без правки реализации FullDisconnect):
Code: Select all
Program ItemID; 
var i : Integer; 
DagerType : Word; 
Dager : Cardinal; 
Vendor : Cardinal; 
Korova : Cardinal; 
Bulova : Cardinal; 
{$Include 'all.inc'} 
procedure FullDisconnect;
begin 
SetARStatus(true); 
while GetSkillValue('Hiding') < 80.0 do 
Disconnect; 
end; 
procedure UseHiding; 
begin 
  UseSkill('Hiding'); 
  Wait(11000); 
  CheckLag(15000); 
  if Hidden and (GetSkillValue('Hiding') > 80) then 
  begin 
    UseSkill('Stealth'); 
    Wait(11000); 
    CheckLag(15000); 
  end; 
end; 
begin 
  while not Dead do 
  begin 
    UseHiding;
    FullDisconnect; 
    //Тут можно добавить вызовы других методов, если таковые нужны. 
  end; 
end.
Ну и в конце концов, может прочтешь какой-нить самоучитель по паскалю?
 
			 
			
					
				
				Posted: 20.11.2010 11:13
				by xam
				Code: Select all
Program ItemID; 
var i : Integer; 
Dager : Cardinal;
vendor1 : Cardinal;
Korova : Cardinal;
Bulova : Cardinal;
vendorPak : Cardinal;
{$Include 'all.inc'}
procedure FullDisconnect; //----------------------
begin 
SetARStatus(true); 
while GetSkillValue('Hiding') < 80.0 do 
Disconnect; 
end; 
procedure Indif; //-----------------------
begin 
Dager := $405DC690; //// Vendor Dager ID
vendor1 := $00021790; //// Vendor ID
Korova := $000051B2; //// Korova ID
Bulova := $405DC690; //// Oru*ie ID
while true do
begin
  UseSkill('Arms Lore'); 
  WaitTargetObject(Bulova); 
  wait(11000); 
if TargetPresent then CancelTarget; 
        CheckTargetError(5,2); 
        CheckSave; 
  waitconnection(3000); 
  CheckSave; 
  CheckLag(15000); 
   UseSkill('item identification'); 
   WaitTargetObject(Dager);
   wait(11000);
   if TargetPresent then CancelTarget; 
        CheckTargetError(5,2); 
        CheckSave; 
   waitconnection(3000); 
   CheckSave; 
   CheckLag(15000); 
   UseSkill('Anatomy'); 
   WaitTargetObject(vendor1); 
   Wait(10000);
   if TargetPresent then CancelTarget; 
        CheckTargetError(5,2); 
        CheckSave; 
   UseSkill('Animal Lore'); 
     	WaitTargetObject(Korova); 
   Wait(10000);
if TargetPresent then CancelTarget; 
        CheckTargetError(5,2); 
        CheckSave;
CheckLag(15000);
end;
end;
procedure Snooping; //---------------------------
begin 
	vendorPak := $401615BB;//// Vendor Packs ID
while true do
useobject(vendorPak); 
   Wait(2000); 
       
	useobject(vendorPak);
   Wait(2000); 
     
   useobject(vendorPak);
                
   Wait(2000);
end;
procedure UseHiding; //---------------------------
begin 
  UseSkill('Hiding'); 
  Wait(11000); 
  CheckLag(15000); 
  if Hidden and (GetSkillValue('Hiding') > 80) then
  begin 
    UseSkill('Stealth'); 
    Wait(11000); 
    CheckLag(15000); 
  end; 
end;
procedure CheckDead; //-----------------------------
	begin 
	waitconnection(3000); 
	CheckSave; 
	if Dead then 
	begin 
 SetWarMode(true); 
 WaitGump('1'); 
 wait(5000); 
 while (Dead) do Wait (1000); 
 wait (2000); 
 Hungry(1, ground); 
end;
end;  
begin 
  while not Dead do 
  begin 
    Indif;
    UseHiding; 
    Snooping;
    //Тут можно добавить вызовы других методов, если таковые нужны. 
  i := i + 1;
  end; 
end.
Вопрос а как мне теперь скрипт заставить что бы он шел по очередности т.е. Indif; =====>>>  UseHiding; ====>>>    Snooping;
А то он зацикливаеться на определенном procedure и повторяет его  по многу раз . Хотелось что бы  дальше по procedure прыгал.. как это сделать?
 
			 
			
					
				
				Posted: 20.11.2010 11:18
				by xam
				Во и еще на примере пожалуйста)  Как сделать так что дойдя до 100 процентов он не качал этот скил ..
Code: Select all
begin 
  UseSkill('Arms Lore'); 
  WaitTargetObject(Bulova); 
  wait(11000); 
if TargetPresent then CancelTarget; 
        CheckTargetError(5,2); 
        CheckSave; 
  waitconnection(3000); 
  CheckSave; 
  CheckLag(15000); 
   UseSkill('item identification'); 
   WaitTargetObject(Dager); 
   wait(11000); 
   if TargetPresent then CancelTarget; 
        CheckTargetError(5,2); 
        CheckSave; 
   waitconnection(3000); 
   CheckSave; 
   CheckLag(15000); 
   UseSkill('Anatomy'); 
   WaitTargetObject(vendor1); 
   Wait(10000); 
   if TargetPresent then CancelTarget; 
        CheckTargetError(5,2); 
        CheckSave;
Т.е прокачав Arms Lore до 100  он сразу же перепрыгивал и начинал качать item identification
 И через const  не получилось сделать =( вообще не могу сообразить.
Code: Select all
const 
  DagerType = $0F52; 
  Vendor = $00021790; 
  Korova = $0001E0B8; 
  Bulova = $405C2AE2;
Да феникс я начал изучать но тупо в книжку без советов ни как)
 
			 
			
					
				
				Posted: 20.11.2010 13:59
				by Fenix
				1. Чтобы не зацикливался на одной процедуре и не повторял её много-много раз (пока не сдохнет от старости) нужно убрать бесконечный цикл:
Code: Select all
procedure Indif; //----------------------- 
begin 
Dager := $405DC690; //// Vendor Dager ID 
vendor1 := $00021790; //// Vendor ID 
Korova := $000051B2; //// Korova ID 
Bulova := $405DC690; //// Oru*ie ID 
while true do 
begin
2. Чтобы не качать скил, когда он уже докачался до 100 нужно не качать его после того, как он докачался до 100. Ты же уже использовал метод GetSkillValue. Вот он возвращает значение скила. Перед прокачкой скила проверяешь его значение и если оно меньше 100, то качаешь.
3. Насчет констант. Неполучилось потому, что ты их объявлял не в том месте. Объявление констант в паскале идёт после секции uses, которая следуют за объявлением имени программы/модуля (program/unit).
 
			 
			
					
				
				Posted: 20.11.2010 23:23
				by xam
				Code: Select all
Program ItemID; 
{$Include 'all.inc'} 
const
Dager = $405C2AE2;  ////  Dager ID 
Usevendor = $00021790; //// Vendor ID 
vendorPak = $401615BB;//// Vendor Packs ID 
Korova = $000051B2; //// Korova ID 
Bulova = $405DC690; //// Oru*ie ID 
var i : Integer; 
procedure FullDisconnect; /////////////////////////////////
begin 
SetARStatus(true); 
while GetSkillValue('Hiding') < 80.0 do 
Disconnect; 
end; 
procedure UseArmsLore;/////////////////////////////////////
begin 
	
 	while GetSkillValue('Arms Lore') < 100 do
begin
  UseSkill('Arms Lore'); 
  WaitTargetObject(Bulova); 
  wait(11000); 
if TargetPresent then CancelTarget; 
        CheckTargetError(5,2); 
        CheckSave; 
  waitconnection(3000); 
  CheckSave; 
  CheckLag(15000); 
end;
end;
procedure UseItemIdentification;///////////////////////////////
begin 
 	while GetSkillValue('item identification') < 100 do
begin
   UseSkill('item identification'); 
   WaitTargetObject(Dager); 
   wait(11000); 
   if TargetPresent then CancelTarget; 
        CheckTargetError(5,2); 
        CheckSave; 
   waitconnection(3000); 
   CheckSave; 
   CheckLag(15000); 
end;
end;
procedure UseAnatomy;//////////////////////////////
begin 
	while GetSkillValue('Anatomy') < 100 do
	
begin
   UseSkill('Anatomy'); 
   WaitTargetObject(Usevendor); 
   Wait(10000); 
   if TargetPresent then CancelTarget; 
        CheckTargetError(5,2); 
        CheckSave;
end;
end;
procedure UseAnimalLore;/////////////////////////////
begin 
 	while GetSkillValue('Animal Lore') < 100 do
	
begin
   UseSkill('Animal Lore'); 
        WaitTargetObject(Korova); 
   Wait(10000); 
if TargetPresent then CancelTarget; 
        CheckTargetError(5,2); 
        CheckSave; 
CheckLag(15000);
end;
end; 
 
 
procedure UseSnooping; ////////////////////////////////////
begin 
 	while GetSkillValue('Snooping') < 100 do
	
begin
useobject(vendorPak); 
   Wait(2000); 
        
   useobject(vendorPak); 
   Wait(2000); 
      
   useobject(vendorPak); 
                
   Wait(2000); 
end; 
end; 
procedure UseHiding; /////////////////////////////////////////////
begin
 	while GetSkillValue('Hiding') < 100 do
 	
begin   
UseSkill('Hiding'); 
  Wait(11000); 
  CheckLag(15000); 
  if Hidden and (GetSkillValue('Hiding') > 80) then 
  begin 
    UseSkill('Stealth'); 
    Wait(11000); 
    CheckLag(15000); 
  end; 
end; 
end; 
procedure CheckDead; //----------------------------- 
   begin 
   waitconnection(3000); 
   CheckSave; 
   if Dead then 
   begin 
 SetWarMode(true); 
 WaitGump('1'); 
 wait(5000); 
 while (Dead) do Wait (1000); 
 wait (2000); 
 Hungry(1, ground); 
end; 
end;  
begin 
  while not Dead do 
  begin 
    UseItemIdentification;
    UseArmsLore;  
    UseSnooping; 
    UseAnatomy; 
    UseAnimalLore; 
    UseHiding; 
   
    //Тут можно добавить вызовы других методов, если таковые нужны. 
  i := i + 1; 
  end; 
end.
Блин сломал голову не могу понять как сделать так что бы цикл не повторялся