Stealth Client Forum

Альтернативный клиент Ultima Online
Текущее время: 24.11.2017 2:04

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: GetStaticTilesArray returning 0 tiles
СообщениеДобавлено: 15.09.2015 2:28 
Не в сети

Зарегистрирован: 15.09.2015 2:23
Сообщения: 3
Somebody knows why the GetStaticTilesArray or GetLandTilesArray functions are returning 0 tiles?
Im using the stealth 6.71.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: GetStaticTilesArray returning 0 tiles
СообщениеДобавлено: 15.09.2015 14:13 
Не в сети Developer
Developer

Зарегистрирован: 24.03.2005 17:05
Сообщения: 3638
i know. something incorrect.
when you give more info - i will give extended answer.

_________________
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: GetStaticTilesArray returning 0 tiles
СообщениеДобавлено: 15.09.2015 20:47 
Не в сети

Зарегистрирован: 15.09.2015 2:23
Сообщения: 3
Vizit0r писал(а):
i know. something incorrect.
when you give more info - i will give extended answer.

Im sorry about that. Here is more info:

Stealth 6.7.1
Windows 8.1
UO Client 3.0.0c
Shard Files: http://santiagouo.com/Santiago_Files_08_22_2015.zip
UO Version: Mondans Legacy

Im using C# to code my script. Here is an simple example that I tried and returned nothing.
Код:
ushort xmin = (ushort)(Self.X - 10),
ymin = (ushort)(Self.Y - 10),
xmax = (ushort)(Self.X + 10),
ymax = (ushort)(Self.Y + 10);

byte worldNum = Stealth.Default.GetWorldNum();

List<FoundTile> listTiles = new List<FoundTile>();

for (ushort i = 1339; i <= 1359; i++)
{
        listTiles.AddRange(Stealth.Default.GetStaticTilesArray(xmin, ymin, xmax, ymax, worldNum, i));
}


I've tried with Static and Land and also 0 and 1 in that worldnum due I dunno what that means.
I just make a simple copy and paste from this script: viewtopic.php?f=3&t=1869#p11455

Every else is working fine, but everything related with tiles dont. So I thought that my problem was in tiles.mul.. I changed it but nothing happened.

I also tried get details from an specific tile:
Код:
var cell = Stealth.Default.GetCell(2100, 228, 1);
var detail = Stealth.Default.GetStaticTileData(cell.Tile);

This tile is a tree for me but the code return something lika "stone"


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: GetStaticTilesArray returning 0 tiles
СообщениеДобавлено: 16.09.2015 15:31 
Не в сети Developer
Developer

Зарегистрирован: 24.03.2005 17:05
Сообщения: 3638
write me in icq\skype. will see

_________________
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: GetStaticTilesArray returning 0 tiles
СообщениеДобавлено: 17.09.2015 1:27 
Не в сети

Зарегистрирован: 15.09.2015 2:23
Сообщения: 3
What is your skype?


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: GetStaticTilesArray returning 0 tiles
СообщениеДобавлено: 17.09.2015 14:08 
Не в сети Developer
Developer

Зарегистрирован: 24.03.2005 17:05
Сообщения: 3638
same nickname, city - Odessa

_________________
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: GetStaticTilesArray returning 0 tiles
СообщениеДобавлено: 08.04.2017 21:49 
Не в сети

Зарегистрирован: 08.04.2017 21:17
Сообщения: 1
Vizit0r писал(а):
same nickname, city - Odessa


hey man, do you solved the problem?
Im in trouble too, with the exactly same problem. But im tryed the tileType from 0 to 20000;

I cant use anything of TileReader:


The ConvertDataTileFlags() causes error:

Код:
                    statlist = TileReader.ReadStaticsXY(x, y, world);
                    std = TileReader.GetStaticTileData(statlist[0].Tile);
                    tdf = TileReader.ConvertFlagsToFlagSet(TileFlagsType.Static, statlist[0].Tile);
             


Код:
public static object MarshalToObject(this byte[] buffer, Type type)
        {
            object target = null;

            if (type.GetInterfaces().Any(intf => intf == typeof(IDeserialized)))
            {
                target = Activator.CreateInstance(type);
                using(MemoryStream str = new MemoryStream(buffer))
                using (BinaryReader br = new BinaryReader(str))
                {
                    (target as IDeserialized).Deserialize(br);
                }
            }
            else
            {
                int size = buffer.Length;
                GCHandle gcHandle = GCHandle.Alloc(buffer, GCHandleType.Pinned);
                IntPtr ptr = Marshal.UnsafeAddrOfPinnedArrayElement(buffer, 0);
                target = Marshal.PtrToStructure(ptr, type); <<====== HERE: ArgumentException: An unhandled exception of type 'System.ArgumentException' occurred in mscorlib.dll. type -> {Name = "TileDataFlags" FullName = "StealthAPI.TileDataFlags"}
                gcHandle.Free();
            }
            return target;
        }


Resuming:

I need to read the map tiles around my char and check if it is walkable. Whats the best way to do this?

Im creating a bot that will attack monsters keeping some distance from them
I will apply A* pathfinding algorithm to decide which is the better location to go.

Tried to use the TileReader.IsWorldCellPassable but its just an "line of sight" and its too slow.

thankz in advance


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: GetStaticTilesArray returning 0 tiles
СообщениеДобавлено: 09.04.2017 12:46 
Не в сети Expert
Expert

Зарегистрирован: 13.12.2012 17:35
Сообщения: 699
Test3imolesi писал(а):
Vizit0r писал(а):
same nickname, city - Odessa


hey man, do you solved the problem?
Im in trouble too, with the exactly same problem. But im tryed the tileType from 0 to 20000;

I cant use anything of TileReader:


The ConvertDataTileFlags() causes error:

Код:
                    statlist = TileReader.ReadStaticsXY(x, y, world);
                    std = TileReader.GetStaticTileData(statlist[0].Tile);
                    tdf = TileReader.ConvertFlagsToFlagSet(TileFlagsType.Static, statlist[0].Tile);
             


Код:
public static object MarshalToObject(this byte[] buffer, Type type)
        {
            object target = null;

            if (type.GetInterfaces().Any(intf => intf == typeof(IDeserialized)))
            {
                target = Activator.CreateInstance(type);
                using(MemoryStream str = new MemoryStream(buffer))
                using (BinaryReader br = new BinaryReader(str))
                {
                    (target as IDeserialized).Deserialize(br);
                }
            }
            else
            {
                int size = buffer.Length;
                GCHandle gcHandle = GCHandle.Alloc(buffer, GCHandleType.Pinned);
                IntPtr ptr = Marshal.UnsafeAddrOfPinnedArrayElement(buffer, 0);
                target = Marshal.PtrToStructure(ptr, type); <<====== HERE: ArgumentException: An unhandled exception of type 'System.ArgumentException' occurred in mscorlib.dll. type -> {Name = "TileDataFlags" FullName = "StealthAPI.TileDataFlags"}
                gcHandle.Free();
            }
            return target;
        }


Resuming:

I need to read the map tiles around my char and check if it is walkable. Whats the best way to do this?

Im creating a bot that will attack monsters keeping some distance from them
I will apply A* pathfinding algorithm to decide which is the better location to go.

Tried to use the TileReader.IsWorldCellPassable but its just an "line of sight" and its too slow.

thankz in advance

Hey!
for such tasks i would recommend you to not use the external context, it's a bit laggy due to protocol ports and so on. Stealth works directly with uo files, so if you want to have stable and fast calculations work in internal script context using or PAX or PS for solving your tasks.

keeping some distance is not very hard thing while you have some area of tiles around you as a geometry square with it's vertices so mob and you should be as far from each other as you command it to but you should always have 2 vertices in mind, one to reach it for now and one which you will reach next and the line between those vertices should not have same points as your waypoint array to reach the next vertex so in this way you will never face the mob, no need in a* or any pathing algorithms.

Ofcourse consider that it's only my opinion, not the way to implement your case.

I wish you luck!

_________________
Изображение


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron


Тюнинг и аксессуары. Тюнинг внедорожников: магазин 4х4 в Одессе. Интернет магазин "AMAX".
Также, на правах рекламы: школьный сайт: school-work.net и еще один: https://www.youtube.com/channel/UCFSPHKHjP22tEl8Rjcst9Fw.


Рейтинг@Mail.ru
Powered by phpBB® Forum Software © phpBB Group