Что нового

Бот - ориентир по карте

Isn

Новичок
Сообщения
119
Репутация
3
Доброго времени суток форумчане, интересует такой вопрос можно ли научить бота ориентироваться по миникарте в игре. И в зависимости от положения двигаться к точке назначения.

Скрин пример карты:
30B08304Q0Y4Z9g3.jpg
 

lirikmel

Продвинутый
Сообщения
226
Репутация
84
да, можно на форуме представлены все варианты
 
Автор
Isn

Isn

Новичок
Сообщения
119
Репутация
3
lirikmel выложи ссылки пожалуйста.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
А поиском пользоваться совсем в лом? Может еще кошелек и ключи от квартиры тебе дать? :mad:
 
Автор
Isn

Isn

Новичок
Сообщения
119
Репутация
3
Belfigor пользовался поиском но ни чего не нашел, как найти то если не знаешь как сформулировать запрос для поиска.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Для совсем тяжелых случаев: Сперва прочитай все темы что есть в разделе ботоводов.
Их не так уж и много.
 

nsgenn

Новичок
Сообщения
52
Репутация
1
Если интересно разбирать коды, то можешь посмотреть мой.
Я однажды создавал бота для передвижения по waypoint точкам в игре CS1.6 и писал алгоритм выборки оптимального пути. Суть такая: существует несколько точек, к примеру 25
есть несколько массивов:
1) Массив "сети" - g_PointNet
2) Массив "цены" - g_ArrayCost
3) Массив "пути" (здесь будет результат оптимального пути) - g_CompletePatch

В массив "сети" ты должен записать взаимосвязь точек друг с другом
Код:
	g_PointNet[1][1]=2;	
	g_PointNet[2][1]=1;		g_PointNet[2][2]=3;	
	g_PointNet[3][1]=2;		g_PointNet[3][2]=4;		g_PointNet[3][3]=5;	g_PointNet[3][4]=12;

и потом запустить поиск

Код:
	g_ArrayCost[PointStart]=-1;
	g_FlagEndSearch = 1
	function_search(PointStart, 1, PointStart)
	function_search2(PointStart, 0, PointStart, PointFinish )

где PointStart - точка старта, PointFinish - точка финиша


Код:
public function_search(point, step, header){
	g_MaxSearch1+=1
	new i
	for(i=1; i<=5; i++){
		if(g_PointNet[point][i]==-1 || g_PointNet[point][i]==header ||g_PointNet[point][i]==0) continue;
		if(g_ArrayCost[g_PointNet[point][i]]==0 || g_ArrayCost[g_PointNet[point][i]]>step) {
			g_ArrayCost[g_PointNet[point][i]]=step
			function_search(g_PointNet[point][i], step+1, point)
		}
	}
}
public function_search2(point, step, header, PointFinish){

	if(g_FlagEndSearch==0) return
		g_MaxSearch2+=1
		new i, j
		for(i=1; i<=5; i++){
				if(point==PointFinish && step==g_ArrayCost[PointFinish]) {
				g_FlagEndSearch=0; break;}	
				if(point!=PointFinish && step==g_ArrayCost[PointFinish])  break;
				if(g_PointNet[point][i]==-1 || g_PointNet[point][i]==header || g_PointNet[point][i]==0) continue;
				if(g_ArrayCost[g_PointNet[point][i]]<=step) continue;
				if(g_FlagEndSearch==0) return
				g_CompletePatch[step+1]=g_PointNet[point][i]
				
				function_search2(g_PointNet[point][i], step+1, point, PointFinish)
		}
}
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Ему даже пару страничек форума в лом пролистать, тут о разборе кода вряд ли вообще речь может идти :smile:
 
Верх