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

Гампинфо, поиск в самом тексте.

тут можно задать вопрос по скриптингу
Post Reply
soulen
Neophyte
Neophyte
Posts: 18
Joined: 16.01.2012 13:29

Гампинфо, поиск в самом тексте.

Post by soulen »

Ребят возник вопрос. На шарде есть, так называемые, морские клады, координаты в них записаны по долготе и широте.
Одинаковых не бывает, пока не откроешь клад (ну по крайней мере открыв 200 карт и поколдовав с экселем не увидел ни одной одинаковой, но заметил что есть сходство по долготе (от 60 до 63) и широте (114) примерные данные) не повторяются по минутам. Ну это не суть важно...

Вопрос, можно ли как-то по гамп инфо выбирать карты, которые совпадают по части признаков? Например от 60 до 63 и по 2му параметру 114? Что-то вроде :

Code: Select all

procedure checkmap;
begin
findtype (tomap,backpack);
 if findcount > 0 then
 begin
  a:= GetToolTip (Findtype(TOMap,backpack));
  wait (500);
   if (BMSearch(1,a,'lvl5') > 0) then
    wait (500);
         MoveItem (finditem,FindQuantity,lvl5,0,0,0);
          Addtosystemjournal(a);
           if (BMSearch(1,a,'lvl4') > 0) then
           wait (500);
            MoveItem (finditem,FindQuantity,lvl4,0,0,0);
                 Addtosystemjournal(a);
                 if (BMSearch(1,a,'lvl3') > 0) then
                 wait (500);
                  MoveItem (finditem,FindQuantity,lvl3,0,0,0);
                   Addtosystemjournal(a);  
                   if (BMSearch(1,a,'lvl2') > 0) then
                   wait (500);
                    MoveItem (finditem,FindQuantity,mysor,0,0,0);
                         Addtosystemjournal(a);
                         if (BMSearch(1,a,'lvl1') > 0) then
                         wait (500);
                          MoveItem (finditem,FindQuantity,mysor,0,0,0);
                           Addtosystemjournal(a);
  end;
end;
код писал сам, особо не шарю, поэтому не сильно пинайте. Так как я понял в функции BMSearch он ищет только по одному куску текста.
Вот вариант гампа

Code: Select all

Text Lines:
We are under attack by a gigantic
sea serpent!  We are at coordinates
66o 42' S 114o 53' E Save us!
и похожий

Code: Select all

We have encountered a terrible storm
at coordinates 64o 19' S 115o 10' E
The ship may capsize soon, hurry!
места рядом.

Как же можно реализовать сортировку имея только часть инфы. В данном случае 64 и 66 и буква S, 114 и 115 буква Е.

Никак не могу взять в толк, как же это реализовать, зная не очень много )


http://floomby.ru/s1/NXQw8

вот часть координат, где можно заметить закономерность. Пытаюсь что-то придумать, но без углубленного знания языка, думаю мне ничего не светит )
С моими познаниями, я думал только об одном, кодом в миллион строк, где сначала сортируют по одним данным, складывая в одну сумку, потом шерстят их и снова перекладывают, хотя там не так уж и много мест ловли)
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Гампинфо, поиск в самом тексте.

Post by Vizit0r »

не, неправильно.

открываешь любой сервер. находишь код перевода широты-долготы в обычные мировые XY координаты. переписываешь его в скрипт.
А вот эти координаты уже сортируй по примерным координатам - по сумкам, или как ты их раскидываешь.

Был у меня когда-то давно скрипт именно для такой сортировки, но сгинул во тьме веков.
И небыл он на миллион строк, вполне себе вменяемый.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
soulen
Neophyte
Neophyte
Posts: 18
Joined: 16.01.2012 13:29

Re: Гампинфо, поиск в самом тексте.

Post by soulen »

http://floomby.ru/s1/GXmwa вот еще отсортировал. Получается примерно 10 мест ну 12 мб.

Я бы с удовольствием по нормальным координатам сортировал, но как по инфогамп узнать их???

Хм, я так понял, написать процедуру перевода ш\д в позиционные??? Блин а не подскажешь как вытащить инфу с сервака и потом перевести? Это ведь не калькулятор какой ))
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Гампинфо, поиск в самом тексте.

Post by Vizit0r »

Хм, я так понял, написать процедуру перевода ш\д в позиционные??? Блин а не подскажешь как вытащить инфу с сервака и потом перевести?
лентяй
POL

Code: Select all

function ToSextant(x, y)
	var latitude_direction, longitude_direction;
	var latitude_degrees, longitude_degrees;
	var latitude_minutes, longitude_minutes;

	latitude_degrees := (y-1624)*0.087890625;
	longitude_degrees := (x-1323)*0.0703125;

	if (latitude_degrees < 0)
		latitude_direction := "N";
	else
		latitude_direction := "S";
	endif

	if (longitude_degrees < 0)
		longitude_direction := "W";
	else
		longitude_direction := "E";
	endif

	latitude_degrees := Abs(latitude_degrees);
	longitude_degrees := Abs(longitude_degrees);

	//The next lines get the first 2 digits from the decimal part of the real variables
	//and multiply by 60, returning an integer.
	latitude_minutes := ((((latitude_degrees-Floor(latitude_degrees))*100)*60)/100);
	longitude_minutes := ((((longitude_degrees-Floor(longitude_degrees))*100)*60)/100);

	return(	Floor(latitude_degrees)+"o "+latitude_minutes+"'"+latitude_direction+", "+
			Floor(longitude_degrees)+"o "+longitude_minutes+"'"+longitude_direction);
endfunction
RunUO

Code: Select all

		public static Point3D ReverseLookup( Map map, int xLong, int yLat, int xMins, int yMins, bool xEast, bool ySouth )
		{
			if ( map == null || map == Map.Internal )
				return Point3D.Zero;

			int xCenter, yCenter;
			int xWidth, yHeight;

			if ( !ComputeMapDetails( map, 0, 0, out xCenter, out yCenter, out xWidth, out yHeight ) )
				return Point3D.Zero;

			double absLong = xLong + ((double)xMins / 60);
			double absLat  = yLat  + ((double)yMins / 60);

			if ( !xEast )
				absLong = 360.0 - absLong;

			if ( !ySouth )
				absLat = 360.0 - absLat;

			int x, y, z;

			x = xCenter + (int)((absLong * xWidth) / 360);
			y = yCenter + (int)((absLat * yHeight) / 360);

			if ( x < 0 )
				x += xWidth;
			else if ( x >= xWidth )
				x -= xWidth;

			if ( y < 0 )
				y += yHeight;
			else if ( y >= yHeight )
				y -= yHeight;

			z = map.GetAverageZ( x, y );

			return new Point3D( x, y, z );
		}
первое - на константах, но иногда (очень редко) ошибается на 1 клетку.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
soulen
Neophyte
Neophyte
Posts: 18
Joined: 16.01.2012 13:29

Re: Гампинфо, поиск в самом тексте.

Post by soulen »

Спасибо огромное.
Post Reply