Jump to content
Korean Random

Как получить телеметрию с танка реалтайм?


Tee-m

Recommended Posts

57 minutes ago, Serfer_78 said:

Этот модуль в Bigworld или  в Pythin ? Что то мало про него на форуме, а может не нашел...

Он поставляется в виде устанавливаемого через pip пакета. В игре он уже по дефолту есть, используется в коде внутриигрового браузера.

  • Upvote 1
Link to comment
Short link
Share on other sites

В 22.09.2017 в 18:34, GPCracker сказал:

Он поставляется в виде устанавливаемого через pip пакета. В игре он уже по дефолту есть, используется в коде внутриигрового браузера.

Понятно теперь. Спасибо GPCracker.

Link to comment
Short link
Share on other sites

В 29.09.2017 в 10:00, Pavel3333 сказал:

BigWorld.player().vehicle.filter.speedInfo.value[0].

 

Совершенно в яблочко Pavel3333 ! Именно эту функцию я и использовал. И по неосторожности удалил.

А так как писал ее почти методом "народного тыка" :) восстановить не смог , так как после написания в голове такая каша была, что вспоминать уже было бесполезно. :ok:

А за ссылочку спс.

 

Чуть не забыл, вдруг кому пригодится)

def speedTank():
    speed = BigWorld.player().vehicle.filter.speedInfo.value[0]
    speed = speed * 3.6
    return '%d' % speed

 .или просто "return  speed" 

 

возможно и  это заработает , не проверял.

def speedTank():
    return BigWorld.player().vehicle.filter.speedInfo.value[0] * 3.6

Извиняюсь за транслит))

Edited by Serfer_78
  • Upvote 1
Link to comment
Short link
Share on other sites

В 07.08.2017 в 17:24, spoter сказал:

import game def hookOnGeometryMapped(spaceID, path): hookedOnGeometryMapped(spaceID, path) print 'mapName: %s, mapPath: %s' % (path.split('/')[-1], path) hookedOnGeometryMapped = game.onGeometryMapped game.onGeometryMapped = hookOnGeometryMapped

 

Доброго времени суток,  оказалось можно карту без хука узнать)

А вот с базой затык вышел, не отдает :exc:

Link to comment
Short link
Share on other sites

1 час назад, spoter сказал:

teamBase -= 1

 

Спасибо Спотер заработало , мистика какая то)) Почти так же писал)

 

кстати вот по карте , тоже короткая может кто искать будет

 

def getMap():
    bgpl = BigWorld.player()
    return bgpl.arena.arenaType.geometryName

 

Link to comment
Short link
Share on other sites

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

Скажем играю на бишопе, арта имбовая, кидает за препятствия на ура, есть бронька и сведение - перезарядка быстрая, но вот беда, приходится часто ездить т.к дальнобойность не большая.. Так вот уже не раз во время прицеливания увлекшись боем падал в воду на разных картах, а еще несколько раз убивал сам себя, почти упершись в дом или камень и несколько раз близко стоящих союзников..

Вообщем идея такая, при наличии ямы с водой или камня или союзника на критическом расстоянии выводить надпись в центре экрана "GUI.addRoot(text)" "Внимание впереди | справа | слева -  яма | камень | дом | танк союзника" вообщем по ситуации..

Как получать и работать с координатами разобрался, вот только не пойму как определить где от тебя находится объект в данный момент а именно(справа - слева - впереди - сзади)..

Скажите это вообще руализуемо?

И если да то может кто подскажет хотя бы в кратце куда копать.

 

UPD: кажется нашел ответ тут..  https://www.desmos.com/calculator/qtkghqtrb7

 

PS: Опять затык, если с танком понятно 

BigWorld.entity(pleer.vehicle.......

Ну яму можно найти по значению Y < 0...

А как с камнями и домами быть не ясно..

И как определить опасна ли яма, т.е есть ли в ней вода в которой можно утонуть.

Да и положением обьектов по ссылке выше не так все просто оказалось...

Edited by Serfer_78
Link to comment
Short link
Share on other sites

  • 4 weeks later...

@Serfer_78, реализовать твою хотелку в приниципе возможно, да и вообще ты наверняка не первый, кто до такого додумался... но это скорее всего займет существенные ресурсы ПК на выполнение коллижн-тестов. И алгоритмы там придется писать далеко не самые простые.

Воду, кстати, можно найти по collideWater, или как-то так метод называется. И оценивать ее высоту относительно земли под ней.

Что до уведомления - лучше звуком, так надежнее. Но грамотно надо делать.

Edited by GPCracker
  • Upvote 1
Link to comment
Short link
Share on other sites

В 10.10.2017 в 20:05, Serfer_78 сказал:

Скажите это вообще руализуемо?

 

Легко. Для реализации основного кода мода вам потребуется всего лишь изучить функцию BigWorld.wg_collide и самолично методом тыка выяснить значения всех её аргументов и тогда вы запилите этот мод без труда. Идея вполне интересная.

  • Upvote 1
Link to comment
Short link
Share on other sites

  • 2 weeks later...
В 02.11.2017 в 19:00, GPCracker сказал:

@Serfer_78, реализовать твою хотелку в приниципе возможно, да и вообще ты наверняка не первый, кто до такого додумался... но это скорее всего займет существенные ресурсы ПК на выполнение коллижн-тестов. И алгоритмы там придется писать далеко не самые простые.

Воду, кстати, можно найти по collideWater, или как-то так метод называется. И оценивать ее высоту относительно земли под ней.

Что до уведомления - лучше звуком, так надежнее. Но грамотно надо делать.

 

Спасибо за подробный ответ, думаю данный мод будет полезен всем артоводам да и просто любителям покидать на арте с небольшой дальностью стрельбы, в разгаре боя в арт режиме пытаясь дотянуться до противника часто тонешь и переворачиваешься.. 
Например с картой Фьорды частая беда  когда стоишь за мостиком у базы номер 2
в квадрате с1
 %D1%84%D1%8C%D0%BE%D1%80%D0%B4%D1%8B.jpg
Чуть вперед подался и все... )) 

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

Edited by Serfer_78
Link to comment
Short link
Share on other sites

  • 4 months later...
В 04.11.2017 в 22:25, StranikS_Scan сказал:

 

Легко. Для реализации основного кода мода вам потребуется всего лишь изучить функцию BigWorld.wg_collide и самолично методом тыка выяснить значения всех её аргументов и тогда вы запилите этот мод без труда. Идея вполне интересная.


А есть толковая дока по функции ?

BigWorld.wg_collideSegment
Link to comment
Short link
Share on other sites

  • 2 weeks later...
В 22.03.2018 в 19:58, SkepticalFox сказал:

гуглится довольно много инфы


Как раз на оборот .. Не то что не гуглится, инфы по ней нет вообще :unsure:

Edited by Serfer_78
Link to comment
Short link
Share on other sites

 

23 часа назад, SkepticalFox сказал:

вам мало этой инфы?


BigWorld.wg_collideSegment(BigWorld.player().spaceID, startPoint, endPoint, 128)
не совсем понятно что за цифра 128
BigWorld.wg_collideSegment(BigWorld.player().spaceID, startPoint, endPoint, False)
или так..
BigWorld.wg_collideSegment(BigWorld.player().spaceID, attacker.gun.position, target.gun.position, 3)
...
Вообщем темный лес.. буду ковырять)
 

PS: Все разобрался благодаря помощи @StranikS_Scan

Edited by Serfer_78
Link to comment
Short link
Share on other sites

В 05.04.2018 в 20:45, DWG сказал:

Просто навеяло от вещей с которыми вы разбираетесь в этой теме.


Это плохая идея.. Что-бы такого не было, нужно моды качать из официальных источников. Ну или как вариант самому писать.

Link to comment
Short link
Share on other sites

В 09.08.2017 в 13:01, ShuraBB сказал:

>Тут бы по идее потоки запилить но пока не созрел как правильно это реализовать.


import threading
from Queue import Queue

class UPDThreading(object):
	def __init__(self):
		self.Data = Queue()
		self.thread = threading.Thread(target = self.SendData)
		self.thread.setDaemon(True)
		self.thread.setName('Send UPD Data')
		self.thread.start()

	def SendData(self):
		while True:
			Message = self.Data.get()
			try:
				socket.socket(socket.AF_INET, socket.SOCK_DGRAM).sendto(_intstr(Message), (UDP_IP, UDP_PORT))
			except:
				pass
			socket.close()
			
UPDSend = UPDThreading()
UPDSend.Data.put(Message)




Пробовал по всякому, в примере ниже посылает первое сообщение и молчит, может что то не так делаю?

def sendMessage(message):
    try:
        UPDSend.Data.put(message)
    except Exception as e:
        print('[Error]           [{e} '.format(e=e)+']')

sendMessage('Hello World!')

 

Edited by Serfer_78
Link to comment
Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...