Автор  | 
	Сообщение | 
 
	
		
		Vasya 
		Привратник 
		
  
		Пришел: 20.12.2001 
		Сообщения: 338 
		Откуда: Москва
	 | 
	
	
		 
			Добавлено: 23 января 2002, 20:55 | 
		
			 
			 
			
			
			
			
			
			
			 
			 
			
			
			
		 | 
	 
	
		
  | 
	 
	
		| Может кто-нибудь сказать, как получить объект персонажа (не своего, конечно) в мультиплейере? Я думаю, это не стоит разглашать, поэтому, наверное, лучше отправлять приватные сообщения. Я буду регулярно проверять инвентарь. | 
	 
	  | 
 
	  | 
 
	
		
		sun 
		Опытный воин 
		
  
		Пришел: 22.12.2001 
		Сообщения: 673 
		
	 | 
	
	
		 
			Добавлено: 23 января 2002, 22:26 | 
		
			 
			 
			
			
			
			
			
			
			 
			 
			
			
			
		 | 
	 
	
		
  | 
	 
	
		Можно афишировать, в этом… нет никакого секрета.
 
Есть команда getLeader() это своего, но тебе это не надо. Тогда можно включить фильтр с Ai:  filter Ai 1 и посмотреть ID персонажа, а затем вызвать команду получить объект с  идентификатором. Эти команды описаны в инете, в частности на сайте «Нечесная игра» . Есть и другие способы, если известно внутреннее имя нужного персонажа (Его можно посмотреть в мобах) то получит объект с именем.
 
 
[ 23 января 2002: Изменил: sun ] | 
	 
	  | 
 
	  | 
 
	
		
		Vasya 
		Привратник 
		
  
		Пришел: 20.12.2001 
		Сообщения: 338 
		Откуда: Москва
	 | 
	
	
		 
			Добавлено: 24 января 2002, 13:17 | 
		
			 
			 
			
			
			
			
			
			
			 
			 
			
			
			
		 | 
	 
	
		
  | 
	 
	
		sun
 
 
Не всё так просто.
 
 
Сайт Чейза я изучил, но это ничего не дало. По идентификатору, который отображается в консоли, почему-то нельзя получить объект персонажа. При написании команды #GetObjectID(GetLeader()) неизменно получаем 1e+009, тогда как после команды filter ai 1 видно, что у меня идентификатор 1000000013, но ни один, ни другой идентификатор не дают правильного объекта, когда применяешь к ним GetObject. Этот объект (мой перс) получается только по GetLeader() или же по GetUnitOfPlayer(0,0). При этом GetUnitOfPlayer(0,1(2,3,4 и т.д.)) (большИе числа не проверял) тоже не даёт второго игрока. 
 
 
Число GetObjectID(GetLeader()) обладает ещё одним интересным свойством: оно не изменяется при применении к нему арифметических функций.
 
 
[ 24 января 2002: Изменил: Vasya ] | 
	 
	  | 
 
	  | 
 
	
		
		sun 
		Опытный воин 
		
  
		Пришел: 22.12.2001 
		Сообщения: 673 
		
	 | 
	
	
		 
			Добавлено: 24 января 2002, 17:17 | 
		
			 
			 
			
			
			
			
			
			
			 
			 
			
			
			
		 | 
	 
	
		
  | 
	 
	
		| Странно и запутанно... Напиши полностью строку, что ты вводишь в консоли и какой объект на карте (на какой карте?) ты хочешь получить? | 
	 
	  | 
 
	  | 
 
	
		
		Vasya 
		Привратник 
		
  
		Пришел: 20.12.2001 
		Сообщения: 338 
		Откуда: Москва
	 | 
	
	
		 
			Добавлено: 24 января 2002, 23:01 | 
		
			 
			 
			
			
			
			
			
			
			 
			 
			
			
			
		 | 
	 
	
		
  | 
	 
	
		sun
 
 
Я хочу получить объект - персонаж другого игрока в сетевой игре.
 
 
Идентификатор этого персонажа получить просто: пишем "filter ai 1" и смотрим в консоль. Допустим, он получился 1000000015. Пишем, например, "#GetX(GetObject(1000000015))" - и всегда получаем 0, то есть по идентификатору правильный объект не получается.
 
 
Та же ситуация и с объектом - моим персонажем. По его идентификатору нельзя получить объект.
 
 
 
Другой непонятный момент: пишем "#GetObjectID(GetLeader())". Результат "1e+009" не соответствует  идентификатору, выводимому по команде "filter ai 1". 
 
 
Далее, попытка написать "#GetX(GetObject(1e+009))" приводит к ошибке, а если пишем "#GetX(GetObject(1000000000))", то результат, как обычно, 0.
 
 
 
Ещё проверка: пишем "#Add(GetObjectID(GetLeader()),5")", получаем "1e+009", а не 1000000005. Что же это за число на самом деле? | 
	 
	  | 
 
	  | 
 
	
		
		sun 
		Опытный воин 
		
  
		Пришел: 22.12.2001 
		Сообщения: 673 
		
	 | 
	
	
		 
			Добавлено: 25 января 2002, 13:22 | 
		
			 
			 
			
			
			
			
			
			
			 
			 
			
			
			
		 | 
	 
	
		
  | 
	 
	
		"Далее, попытка написать "#GetX(GetObject(1e+009))" приводит к ошибке, "
 
вообще-то вот так можно сложить с id :
 
#add(GetObjectID(getLeader()),-1000000000)
 
Я посмотрю в чем дело. возможно проблема с форматом или преобразовнием... | 
	 
	  | 
 
	  | 
 
	
		
		Vasya 
		Привратник 
		
  
		Пришел: 20.12.2001 
		Сообщения: 338 
		Откуда: Москва
	 | 
	
	
		 
			Добавлено: 25 января 2002, 13:44 | 
		
			 
			 
			
			
			
			
			
			
			 
			 
			
			
			
		 | 
	 
	
		
  | 
	 
	
		Да, здесь, похоже, происходит какое-то хитрое округление с шагом в 64, то есть, в результате применения функции Add можно получить из числа 1000000013, кратные 64. Происходит это примерно так: #Add(1000000013,-1000000032) даёт 0, а #Add(1000000013,-1000000033) даёт -64.
 
 
Забыл упомянуть, что на большем расстоянии от нуля шаг округления увеличивается.
 
 
[ 25 января 2002: Изменил: Vasya ] | 
	 
	  | 
 
	  | 
 
	
		
		Vasya 
		Привратник 
		
  
		Пришел: 20.12.2001 
		Сообщения: 338 
		Откуда: Москва
	 | 
	
	
		 
			Добавлено: 25 января 2002, 20:10 | 
		
			 
			 
			
			
			
			
			
			
			 
			 
			
			
			
		 | 
	 
	
		
  | 
	 
	
		sun
 
 
А разве я могу перенести тему в другое место? Я же не Избранный, не Великие Силы и даже не Великий Маг.
 
 
Nivea
 
 
Я создал тему здесь, потому что хотел спросить не только людей, допущенных в закрытую часть форума. Но, как видно, либо все меня игнорируют, либо действительно никто, кроме sun'a ничего не знает. (Конечно, ещё есть вариант, что кто-то знает, но не признаётся в этом.  images/smiles/icon_wink.gif ) | 
	 
	  | 
 
	  | 
 
	
		
		sun 
		Опытный воин 
		
  
		Пришел: 22.12.2001 
		Сообщения: 673 
		
	 | 
	 | 
 
	  | 
 
	
		
		Psi-factor 
		Рыцарь Света 
		
  
		Пришел: 19.12.2001 
		Сообщения: 261 
		Откуда: Владимира
	 | 
	
	
		 
			Добавлено: 25 января 2002, 22:29 | 
		
			 
			 
			 
			 
			
			
			
			 
			 
			 
			
			
			
		 | 
	 
	
		
  | 
	 
	
		| Вася а ты пробовал? Может можно. Ты же вроде как автор темы. Проверь. | 
	 
	  | 
 
	  | 
 
	
		
		yanch 
		Зайчатник 
		
  
		Пришел: 25.12.2001 
		Сообщения: 31 
		
	 | 
	 | 
 
	  | 
 
	
		
		sun 
		Опытный воин 
		
  
		Пришел: 22.12.2001 
		Сообщения: 673 
		
	 | 
	
	
		 
			Добавлено: 26 января 2002, 01:12 | 
		
			 
			 
			
			
			
			
			
			
			 
			 
			
			
			
		 | 
	 
	
		
  | 
	 
	
		Что-то эта проблема больно на ошибку смахивает…. images/smiles/icon_smile.gif 
 
Во время игры максимальные значения, которые использует функции GetObject это семизначные числа, а с десятизначными числами проблема. Да и при сложении двух чисел то же что-то не то. 
 
В ПЗ есть функция преобразования внутреннего имени в код идентификатора объекта.
 
Функция не сложная. Например, если дать внутренне имя новому объекту из одной буквы, то код ID будет соответствовать значению числа буквы в таблицы ANSI.  Маленькие буквы преобразуются в верхний регистр. Например, если создать монстра у выхода из поселка с внутренним именем «D», то код у этого монстра будет 1000000068: @AddUnitToServer("D","BansheeDarkF16","Vasya",20,133,0).
 
Вообще-то к именам функций в ПЗ у меня тоже есть вопросы. Если задуматься о предназначении функции:  AddUnitToServer, то функция должна была бы называться AddPersToServer…  images/smiles/icon_smile.gif . 
 
К сожалению, использовать функцию GetObject можно только для объектов созданных в mob`ах. Но проблему можно решить другим способом. Для этого существует функция: GetObjectById. Вводить значение код ID объекта нужно в кавычках, например, чтобы получить значение координаты «Х» Зака в сингле нужно ввести такую строку:
 
#GetX(GetObjectById( "1000011214" )).
 
 
Vasya, перенеси эту тему из Флейма в более серьезную, например: Все остальное.
 
  images/smiles/converted/re_16.gif | 
	 
	  | 
 
	  | 
 
	
		
		Nivea 
		Смерть гоблинов 
		
  
		Пришел: 21.12.2001 
		Сообщения: 266 
		Откуда: Samara
	 | 
	
	
		 
			Добавлено: 26 января 2002, 01:53 | 
		
			 
			 
			 
			 
			
			
			
			
			 
			 
			
			
			
		 | 
	 
	
		
  | 
	 
	
		цитата: 
 
.... Я думаю, это не стоит разглашать, поэтому, наверное, лучше отправлять приватные сообщения. Я буду регулярно проверять инвентарь.    
 
 
Разве у нас нет места в разделе для разработчиков?
 
Ничего не понимаю...  images/smiles/converted/re_16.gif | 
	 
	  | 
 
	  | 
 
	 | 
 
 
  
	Вы не можете создавать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы Вы можете скачивать выложенные файлы
  | 
	
Часовой пояс: GMT +4:00
  
 | 
   
 
				 |