Page 1 of 1
Stack
Posted: 23.01.2013 20:57
by shinma
Решение найдено внизу темы.
Ситуация такая. Рануо сервер. сундуки все имеют ограничение на 125 итемов включая вложенные.
Я приношу на скрипте руду и бросаю в сундук MoveItem(FindType(OreType[g],Backpack),0,sunduk,0,0,0);
но он каждый раз создает новый стак а не кидает в старый. Есть ли способ заставить его кидать в стак? кроме как открывать этот сундук использовать grab, а потом опять класть в сундук.
Re: Stack
Posted: 23.01.2013 22:26
by Vizit0r
кидай не в сундук, а в стек.
для кого писался инклюд stack.inc ?
Re: Stack
Posted: 23.01.2013 23:07
by shinma
он там работает с ground.
FindtypeEx(ObjType,Color,ground,false);
. тобишь шмотки на полу и стек он создает на полу. а я приношу их в сумке и кладу в сундук, прилоченный к дому без боковой стенки. и каждый раз создаю новый стек в сундуке, который ограничен на кол-во итемов 125 . тобишь 125 стеков и все - чар стоит. этот инклуд вообще не подходит. так как я не в доме я подхожу сбоку дома и закидываю в сундук, который прилочен к дому без стенки. я нашел как вариант выгружать каждый раз всю руду командой граб из сундука к себе в сумку, тогда она падает как раз в стеки в бэкпаке, и потом выгружать её обратно в сундук. но это ТУПО!!! любой говнюк меня убивает в этот момент и на тебе полный труп руды нафармленной может и не за один месяц.
Re: Stack
Posted: 23.01.2013 23:15
by Vizit0r
я рад что он тебе не подходит. но стоило бы его почитать, чтобы понять как он работает, и самому стекировать как надо.
Re: Stack
Posted: 23.01.2013 23:51
by shinma
допер. позже опишу когда проснусь.
Re: Stack
Posted: 24.01.2013 19:15
by shinma
Ответ на вопрос
Code: Select all
procedure Dropore(oretype1,color:word);//в процедуру передаются тип руды и цвет руды. sunduk - переменная которой присвоили ID сундука куда класть руду. записывается в константы скрипта.
var g : integer;
oreid,oresundukid: Cardinal;
Begin
finddistance := 2;//искать на расстоянии 2 квадратиков
checklag(60000);//проверка на лаги
useobject(sunduk); //открываем сундук sunduk
oresundukid:=FindTypeEx(OreType1,color,sunduk,false);//ищем руду типа OreType1 и цвета color в сундуке sunduk. полученный ID кучки руды записываем в переменную oresundukid.
checklag(60000);//проверка на лаги
FindTypeEx(OreType1,color,backpack,false);//ищем тип руды с заданным цветом у себя в сумке
if FindCount > 0 then // если нашли то выполняем дальнейшие действия
begin
h:=0; //эту переменную использую для гарантии отсутствия бесконечного цикла
oreid:=FindItem ; //в переменную oreid записываем ID кучки руды( которую мы нашли в сумке)
repeat
checklag(60000);
MoveItem(oreid,0,oresundukid,0,0,0);//ВОТ ТУТ ПОДРОБНЕЕ!!!
{
MoveItem( перемещаю итем
oreid, ID итема мы заранее задавали, его будем перемещать
0, ноль - значит весь стак, все кол-во
oresundukid//перемещаю -" в". вот я его перемещаю НЕ в сундук, а в ID кучки руды того же цвета и того же типа в сундуке. так как FindTypeEx(OreType1,color,sunduk,false) выдаст в итоге мне именно ID кучки руды OreType1 цвета color лежащей в сундуке sunduk.
,0,0,0 -координаты нули.
);
}
wait (900);//ждем 900мс
h:=h+1;
FindTypeEx(OreType1,color,backpack,false); //опять ищем руду типа OreType1 и цвета color у себя в сумке чтобы получить новые данные о кол-ве это руды в сумке для выхода из цикла
until (FindCount = 0) or dead or(h>30);//если кол-во руды ноль или чар мертв или счетчик больше 30 - заканчиваем цикл.
end;
End;
Re: Stack
Posted: 24.01.2013 19:17
by Vizit0r
ничего что ты таким названием перекрываешь родную стелсовую функцию Drop ?
Re: Stack
Posted: 24.01.2013 19:22
by shinma
главное общий смысл описал. у меня то там записаны и массивы итд. просто упростил свою процедурку до понятного вида. писал на коленке. ну имя подкорректировал.
Re: Stack
Posted: 24.01.2013 19:30
by shinma
можно и дальше пойти. чтобы руду кидал в сундук не только когда там кучка есть, но и тогда когда сундук пуст. вариаций куча. у всех серваки разные.
Code: Select all
repeat
checklag(60000);
oresundukid:=FindTypeEx(OreType1,color,sunduk,false);
if FindCount = 0 then
MoveItem(oreid,0,sunduk,0,0,0)
else
MoveItem(oreid,0,oresundukid,0,0,0);
wait (900);
h:=h+1;
FindTypeEx(OreType1,color,backpack,false);
until (FindCount = 0) or dead or(h>30);
Re: Stack
Posted: 03.04.2013 19:46
by elgreen
Как сделать чтобы итемы наоборот не стакались при закидывании в контейнер или на землю?
Пример: в сумке 20 фиш стейков в 1й пачке, нужно разделить пачку что бы было 20 отдельных стейков в той же сумке.