Решение найдено внизу темы.
Ситуация такая. Рануо сервер. сундуки все имеют ограничение на 125 итемов включая вложенные.
Я приношу на скрипте руду и бросаю в сундук MoveItem(FindType(OreType[g],Backpack),0,sunduk,0,0,0);
но он каждый раз создает новый стак а не кидает в старый. Есть ли способ заставить его кидать в стак? кроме как открывать этот сундук использовать grab, а потом опять класть в сундук.
Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7
Stack
Stack
Last edited by shinma on 24.01.2013 18:55, edited 1 time in total.
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
Re: Stack
кидай не в сундук, а в стек.
для кого писался инклюд stack.inc ?
для кого писался инклюд stack.inc ?
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Re: Stack
он там работает с ground.
FindtypeEx(ObjType,Color,ground,false);
. тобишь шмотки на полу и стек он создает на полу. а я приношу их в сумке и кладу в сундук, прилоченный к дому без боковой стенки. и каждый раз создаю новый стек в сундуке, который ограничен на кол-во итемов 125 . тобишь 125 стеков и все - чар стоит. этот инклуд вообще не подходит. так как я не в доме я подхожу сбоку дома и закидываю в сундук, который прилочен к дому без стенки. я нашел как вариант выгружать каждый раз всю руду командой граб из сундука к себе в сумку, тогда она падает как раз в стеки в бэкпаке, и потом выгружать её обратно в сундук. но это ТУПО!!! любой говнюк меня убивает в этот момент и на тебе полный труп руды нафармленной может и не за один месяц.
FindtypeEx(ObjType,Color,ground,false);
. тобишь шмотки на полу и стек он создает на полу. а я приношу их в сумке и кладу в сундук, прилоченный к дому без боковой стенки. и каждый раз создаю новый стек в сундуке, который ограничен на кол-во итемов 125 . тобишь 125 стеков и все - чар стоит. этот инклуд вообще не подходит. так как я не в доме я подхожу сбоку дома и закидываю в сундук, который прилочен к дому без стенки. я нашел как вариант выгружать каждый раз всю руду командой граб из сундука к себе в сумку, тогда она падает как раз в стеки в бэкпаке, и потом выгружать её обратно в сундук. но это ТУПО!!! любой говнюк меня убивает в этот момент и на тебе полный труп руды нафармленной может и не за один месяц.
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
Re: Stack
я рад что он тебе не подходит. но стоило бы его почитать, чтобы понять как он работает, и самому стекировать как надо.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Re: Stack
допер. позже опишу когда проснусь.
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
Re: Stack
Ответ на вопрос
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;
Last edited by shinma on 24.01.2013 20:02, edited 5 times in total.
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
Re: Stack
ничего что ты таким названием перекрываешь родную стелсовую функцию Drop ?
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Re: Stack
главное общий смысл описал. у меня то там записаны и массивы итд. просто упростил свою процедурку до понятного вида. писал на коленке. ну имя подкорректировал.
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
Re: Stack
можно и дальше пойти. чтобы руду кидал в сундук не только когда там кучка есть, но и тогда когда сундук пуст. вариаций куча. у всех серваки разные.
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);
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.