Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

TargetToTile для рубки деревьев

тут можно задать вопрос по скриптингу
Mirage
Novice
Novice
Posts: 90
Joined: 18.07.2009 19:41

Re: TargetToTile для рубки деревьев

Post by Mirage »

Tomers wrote:
Vizit0r wrote: ответили. а то что именно для тебя не расписали на страницу - увы и ах.
да, тут всегда так. все злюки и жадины.
Дело не в том, что не ответили. Ответить то ответили, но вопрос задается, например, как получить тип тайла, а начинают рассказывать про то, как ходить по лесу, записывать маршруты ... и т.д., советуют использовать инжекты, всякую прочую хрень, но только не то, что конкретно спросили.
Вобщем ладно, не обращайте внимания. Это просто я такой тупой, мне почему-то полсотни строк труднее понять, чем одну две строки.
Ты странный такой.
Ну вот тебе ПРЯМОЙ ОТВЕТ:
Чтобы получить ТАЙЛ дерева надо посмотреть игровые ресурсы - например инсайдом (какимнито хреновым).
ТАК ЖЕ чтобы получить тайл дерева можно зайти в игру через клиент с инжектом и сделат mnfr как я сказал.
ТАК ЖЕ чтобы получить тайл можно зайти в игру со стелса и сделат ь так как сказал Грюндик.
ТАК ЖЕ можно зайти в игру через клиент + ИЗИ и посмотреть как там объекты пишутся.

Если для тебя эти хреновые способы не подходят - ну флаг в руки - разкомпилируй клиент и перебирай варианты в ядре клиента.
Fullmetal8ender
Neophyte
Neophyte
Posts: 20
Joined: 27.07.2009 17:11

Post by Fullmetal8ender »

Э, хватит бушевать тут в моей теме :evil:
Tomers
Novice
Novice
Posts: 99
Joined: 06.08.2009 11:51

Re: TargetToTile для рубки деревьев

Post by Tomers »

Mirage wrote: Ты странный такой.
Ну вот тебе ПРЯМОЙ ОТВЕТ:
Чтобы получить ТАЙЛ дерева надо посмотреть игровые ресурсы - например инсайдом (какимнито хреновым).
ТАК ЖЕ чтобы получить тайл дерева можно зайти в игру через клиент с инжектом и сделат mnfr как я сказал.
ТАК ЖЕ чтобы получить тайл можно зайти в игру со стелса и сделат ь так как сказал Грюндик.
ТАК ЖЕ можно зайти в игру через клиент + ИЗИ и посмотреть как там объекты пишутся.

Если для тебя эти хреновые способы не подходят - ну флаг в руки - разкомпилируй клиент и перебирай варианты в ядре клиента.
а вот так:

Code: Select all

a := ReadStaticsXY(TileX,TileY,WorldNum);
UseType(axe,$ffff);
wait(500);
targetToTile(a.Statics[0].Tile,TileX,TileY,GetZ(self));
не проще было бы? Спасибо Фулметалбу
Правда тут есть одно но. В 10% точек при вызове команды:
targetToTile(a.Statics[0].Tile,TileX,TileY,GetZ(self));
скрипт выкидывает ошибку "Out of range" и вылетает. Если вам это интерестно, можете подумать, а мне будет проще сменить точку, я думаю, ато опять будут предлагать "ПРОСТЫЕ" методы.
grundick
Developer
Developer
Posts: 272
Joined: 31.01.2008 21:16

Post by grundick »

А ещё проще не забивать свой мозг изучением программ типа инжекта, стелса и т.д., не ломать свой мозг, и копать и рубить ручками ). Самый простой вариант для тех, кто не хочет думать ).

А по поводу твоего вопроса - это типичная ошибка, если оказалось что в указанных координатах нету статики.
Делай хотя б проверку
If GetLayerCount(X,Y,WorldNum)>0 ...
Fullmetal8ender
Neophyte
Neophyte
Posts: 20
Joined: 27.07.2009 17:11

Post by Fullmetal8ender »

О, кстати, а как на счет высоты?
Z определяеться по высоте игрока. А если насколько слоев статики на тайле находиться у них разная высота будет? Рубить надо корень или верхушку? :D
Mirage
Novice
Novice
Posts: 90
Joined: 18.07.2009 19:41

Post by Mirage »

Fullmetal8ender wrote:О, кстати, а как на счет высоты?
Z определяеться по высоте игрока. А если насколько слоев статики на тайле находиться у них разная высота будет? Рубить надо корень или верхушку? :D
рубить надо ствол.
Дерево можно рубить на любой высоте - лишь бы дотянулся до него (расстояние 17 тайлов помоему вверх и вниз.) Так что для простоты ставят z=0.
Если дерево находиться не в нулевом Z... то срать - все равно ставь 0 - не ошибешься.

PS
я вообще не понимаю зачем использовать некоторые улучшения если они непонятно как работают если есть старые способы работоспособные:

Code: Select all

waittargettile(treeT,treeX,TreeY,getz(Self));
usetype($0F43,$FFFF);
3302, 5985, 1495
рубит дерево 3302 в точке х=5985, у=1495.
Last edited by Mirage on 20.08.2009 14:03, edited 1 time in total.
Tomers
Novice
Novice
Posts: 99
Joined: 06.08.2009 11:51

Post by Tomers »

grundick wrote: А по поводу твоего вопроса - это типичная ошибка, если оказалось что в указанных координатах нету статики.
Делай хотя б проверку
If GetLayerCount(X,Y,WorldNum)>0 ...
Ну если дерево это статика, то там просто не может не быть статики, потому как координаты задаются на соседний с персом тайл, и перс стоит всегда возле дерева с одной и той же стороны.
Mirage
Novice
Novice
Posts: 90
Joined: 18.07.2009 19:41

Post by Mirage »

Tomers wrote:
grundick wrote: А по поводу твоего вопроса - это типичная ошибка, если оказалось что в указанных координатах нету статики.
Делай хотя б проверку
If GetLayerCount(X,Y,WorldNum)>0 ...
Ну если дерево это статика, то там просто не может не быть статики, потому как координаты задаются на соседний с персом тайл, и перс стоит всегда возле дерева с одной и той же стороны.
:) Если я правильно понял то что ты написал то ты не прав.
Дерево может быть как статикой так и динамикой. Статика определяется по тайлу Динамика по типу. Если ты пытаешься рубить динамику через тайл то ничего не выйдет.
Выглядят они одинаково.
Разница в том что ,info в так нелюбимом тобой инжекте на динамике выдает ТИП предмета. А на статике будет пусто.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

Fullmetal8ender wrote:О, кстати, а как на счет высоты?
Z определяеться по высоте игрока. А если насколько слоев статики на тайле находиться у них разная высота будет? Рубить надо корень или верхушку? :D
пусть тебя не волнуют эти заморочки. Z статики со стороны игрока не отсылается, соответственно не определяется.

А вообще, для вычисления высоты слоя статики все есть, просто не используется за ненадобностью.

кстати о птичках, в одной точек могут быть несколько слоев "деревьев"(например слой кроны, еще что-то - клиент это рисует как одно, а на самом деле рубить можно каждый из этих "деревянных" слоев), я находил до трех, но возможно это не предел.
это так намек для особо любознательных :)


----------------------------------------------------------------------------------

Хм. ошибался. ну, для верности если рубить не первый слой снизу - то берется от каждого слоя статики высота.

function ReadStaticsXY(X,Y: Word; WorldNum: Byte): TStaticCell; // Возвращает тип тайла с координатами и цветом, а так же количество слоев

Code: Select all

TStaticCell = packed record 
Statics : Array of TStaticItem; 
StaticCount : Byte; 
end; 

TStaticItem = record 
Tile : Word; 
X : Byte; 
Y : Byte; 
Z : ShortInt; 
Color : Word; 
end; 
уточнение - X Y - это НЕ мировые XY, их НЕ надо использовать! 

function GetStaticTileData(Tile: Word): TStaticTileData; // Возвращает информацию по типу тайла 

TStaticTileData = record 
Flags : LongWord; 
Weight : Byte; 
Quality : Byte; 
wUnknown: Word; 
bUnknown: Byte; 
Quantity: Byte; 
AnimID : Word; 
bSpacer : Byte; 
Hue : Byte; 
wSpacer : Word; 
Height : Byte; 
Name : Array[0..19] of Char; 
end;
т.е брать GetStaticTileData от

Code: Select all

TStaticItem = record 
Tile : Word;  
и оттуда уже Height : Byte; и соответственно для каждого слоя суммировать.
но кажется это не надо, достаточно высоту земли ставить. хотя хорошо было бы проверить, и результаты озвучить втут.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

Fullmetal8ender wrote:О, кстати, а как на счет высоты?
Z определяеться по высоте игрока. А если насколько слоев статики на тайле находиться у них разная высота будет? Рубить надо корень или верхушку? :D
а с чего ты решил, что Z в соседней точке будет точно такая же, как и в твоей? это совсем не так.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Fullmetal8ender
Neophyte
Neophyte
Posts: 20
Joined: 27.07.2009 17:11

Post by Fullmetal8ender »

Mirage wrote: я вообще не понимаю зачем использовать некоторые улучшения если они непонятно как работают если есть старые способы работоспособные:
Ну, хотеллсь бы разобраться, к тому же Vizit0r на предыдущей странице упоминал непонятные для меня пока вещи
Vizit0r wrote:да серверу вообще плевать на графику деревьев, он разрешает добычу только в зависимости от обжтайпа деревьев
Выходит, не все так просто.
Mirage wrote:Дерево может быть как статикой так и динамикой.
Рубить можна и то и другое?
Vizit0r wrote:а с чего ты решил, что Z в соседней точке будет точно такая же, как и в твоей? это совсем не так.
Эм...ну я визуально определяю, нивелира с собой не захватил :roll:
Но если можна ставить 0 и все прокатит то так даже лучше.
Mirage
Novice
Novice
Posts: 90
Joined: 18.07.2009 19:41

Post by Mirage »

статику рубить можно как обычно, динамику либо нельзя либо можно но череззабороногузадерищенски :roll:

У мен яна вейттаргеттиле работает лесоруб 24/7 на новом стелсе - все в порядке.
Fullmetal8ender
Neophyte
Neophyte
Posts: 20
Joined: 27.07.2009 17:11

Post by Fullmetal8ender »

Ну, думаю в ловушках разницы нету, загвоздка была в самом тайле...
Вот у всех есть список деревьев.
Это вы вручную подходили к каждому и узнавали его тип инжектом и прочими штуками или как?
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

нет, брали из проги InsideUO
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Mirage
Novice
Novice
Posts: 90
Joined: 18.07.2009 19:41

Post by Mirage »

Vizit0r wrote:нет, брали из проги InsideUO
аналогично.
Типы вещей проще с инсайда брать - там они все есть в обоих "повернутых" видах.
тайлы там же можно посмотреть.
Post Reply