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.
Блин сломал голову не могу понять как сделать так что бы цикл не повторялся