Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Python status chanelli


Almeria

Rekomendowane odpowiedzi

Opublikowano

Wiem że temat może się wydawać oczywisty i dla nie których nawet głupi ale zauważyłem że wiele ludzi jedzie na gotowym skrypcie z epvp ktory używa liba, funkcji socket do sprawdzenia statusu chanellii.

Nie rozumiem po co skoro posiadamy gotowe funkcje w naszym cliencie.

 

mAFJWEk.png

 

 

pod : 

		app.ShowCursor()

dodajemy:

		self.__RequestServerStateList()
		self.__RefreshServerStateList()

upewniamy się że mamy te funkcje:

__RequestServerStateList
__RefreshServerStateList
NotifyChannelState

i edytujemy  je żeby wyglądały tak :

	def __RequestServerStateList(self):
		try:
			channelDict = serverInfo.REGION_DICT[0][1]["channel"]  # [1] - liczba w nawiaze okresla numer serwera w serverinfo, zakładam że macie jeden..
		except:
			return

		for id, channelDataDict in channelDict.items():
			key=channelDataDict["key"]
			ip=channelDataDict["ip"]
			udp_port=channelDataDict["udp_port"]
			ServerStateChecker.Request(key, ip, udp_port)

	def __RefreshServerStateList(self):
		try:
			channelDict = serverInfo.REGION_DICT[0][1]["channel"] # [1] - liczba w nawiaze okresla numer serwera w serverinfo, zakładam że macie jeden..
		except:
			return

		for channelID, channelDataDict in channelDict.items():
			channelName = channelDataDict["name"]
			channelState = channelDataDict["state"]
			if channelState == "...":
				self.chs[int(channelID) - 1].SetUpVisual('d:/ymir work/buttony_new/ch%s_off.tga'%int(channelID))  #  te linijki edytujecie
				self.chs[int(channelID) - 1].SetOverVisual('d:/ymir work/buttony_new/ch%s_off_on.tga'%int(channelID))   # dowolnie
				self.chs[int(channelID) - 1].SetDownVisual('d:/ymir work/buttony_new/ch%s_off_click.tga'%int(channelID)) # tutaj  powinny być funkcje
			else: # dotyczące tego co ma nam pokazywac gdy Ch jest włączone i gdy jest wyłączone u mnie jest to np  button, gdy channel  ma status "..."
				self.chs[int(channelID) - 1].SetUpVisual('d:/ymir work/buttony_new/ch%s_on.tga'%int(channelID)) # to buttony danego kanału są czerwone 
				self.chs[int(channelID) - 1].SetOverVisual('d:/ymir work/buttony_new/ch%s_on_on.tga'%int(channelID)) # a gdy jest innyn iż "..." 
				self.chs[int(channelID) - 1].SetDownVisual('d:/ymir work/buttony_new/ch%s_on_click.tga'%int(channelID))	# np "BUSY" to buttony sa na zielono			
			#self.channelList.InsertItem(channelID, " %s %s" % (channelName, channelState))		
			
	def NotifyChannelState(self, addrKey, state):
		try:
			stateName=serverInfo.STATE_DICT[state]
		except:
			stateName=serverInfo.STATE_NONE

		regionID=int(addrKey/1000)
		serverID=int(addrKey/10) % 100
		channelID=addrKey%10

		try:
			serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["state"] = stateName		
			self.__RefreshServerStateList()

		except:
			import exception
			exception.Abort(locale.CHANNEL_NOT_FIND_INFO)			
Opublikowano

Nie będzie lagowało, gdy będzie wyłączony jakiś channel ? :P

to jest to samo co na plu' gdy ci pokazuje NORM, FULL  itp tylko to przeszkatłciłem tak żeby zamiast tych napisow był inny kolor buttonów  na przykład. Sam sobie odpowiedz teraz

Opublikowano

to jest to samo co na plu' gdy ci pokazuje NORM, FULL  itp tylko to przeszkatłciłem tak żeby zamiast tych napisow był inny kolor buttonów  na przykład. Sam sobie odpowiedz teraz

To w takim razie dzięki i Like leci ;)

Jak będzie mi się chciało bawić to użyje ;)

Opublikowano

import socket;

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

result = sock.connect_ex(('localhost',11002))

if result == 0:

print "Port is open"

else:

print "Port is not open"

A jeśli port nie jest otwarty to znaczy, że nie działa. :P

50596142255057180250.png

Opublikowano

Fajny przydatny dla wielu poradnik i jak najbardziej należy się ogromny plus dla Ciebie

Tylko dodaj jeszcze że to dodać w intrologin bo to różnie jest na mpc :D

Opublikowano
import socket;
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex(('localhost',11002))
if result == 0:
   print "Port is open"
else:
   print "Port is not open"
A jeśli port nie jest otwarty to znaczy, że nie działa. :P

 

Coś za coś nie musimy przecież blokowąc całkowicie  UDP, wiele na tym nie stracimy, można sobie poradzić jakoś inaczej a gracze przynajmniej będą znać stan   danego CH.

Opublikowano

Zamiast sztywnej jedynki możemy wpisać sobie serverID, wtedy wszystko będzie leciało z automatu, co do tej pętli z -1 można to załatwić w inny sposób bez żadnego dopisywania. Dodatkowo zamiast bawić się w zmianę defaultowych skinów buttonu można użyć funkcji .Down(), .SetUp() dla childa z buttonem. Jakichś większych uwag nie mam, w sumie to nawet dobry pomysł ze sprawdzaniem tekstu, który zwraca Nam aktualny status kanału - bynajmniej lepszy niż używanie socketów.

Opublikowano

żałosne skrypt  wyciągniety z interface ( tureckie forum),używam od dawna i działa jak należy.

@Migren Ty sobie żartujesz ? W odróżnieniu od ciebie Ja staram się każdy swoj problem rozwiązywac sam i każdą nową rzecz tworzyć sam. Jeśli mam problem to pytam kogoś mądrzejszego bo  nie uważam że jestem najmądrzejszy, ale napewno nie podpierdalam z jakiegos tureckiego forum tak jak ty xDDDD

Opublikowano

Like za pomysł. Ja zawsze olewałem interface i zostawiałem te standardowe. Teraz będę to zmieniał i zapewne wykorzystam ten pomysł, chociaż inaczej to wykonam.

 

 

@Migren Ty sobie żartujesz ? W odróżnieniu od ciebie Ja staram się każdy swoj problem rozwiązywac sam i każdą nową rzecz tworzyć sam. Jeśli mam problem to pytam kogoś mądrzejszego bo  nie uważam że jestem najmądrzejszy, ale napewno nie podpierdalam z jakiegos tureckiego forum tak jak ty xDDDD

Nie śmiej się z niego, on wie przecież lepiej. Kto jak kto, ale on na 100% ma bogatą wiedzę jeśli chodzi o zawartość tureckiego i niemieckiego forum. Wnioskuję to po tym co ma na serwerze.  @Migren kto jak kto, ale ty akurat jesteś jednym z ostatnich, którzy mogą zwracać tego typu uwagę innym.

Opublikowano

 

Nie śmiej się z niego, on wie przecież lepiej. Kto jak kto, ale on na 100% ma bogatą wiedzę jeśli chodzi o zawartość tureckiego i niemieckiego forum. Wnioskuję to po tym co ma na serwerze.  @Migren kto jak kto, ale ty akurat jesteś jednym z ostatnich, którzy mogą zwracać tego typu uwagę innym.

że niby ja jestem jedynym z ostatnich ? człowieku nie znasz mnie wcale jak i nie masz zielonego pojęcia czym się zajmuję, piszesz jakie niedojebane przemyślenia tylko po to żeby pokazać zachowanie typowego gimba. Uważasz się za jakiegoś Wielkiego technika to tylko twoja sprawa, bo każdy leje na twoje gadanie więc tyle w temacie .

 

@ topic ten kod naprawdę warto wykorzystać bo większość osób które kodują często  nie robią tego jak należy ostatnio spotkałem się z takim kodowaniem że sprawdzało tylko status z jednego  kanału a pokazywało na wszystkich ten sam .

Opublikowano

że niby ja jestem jedynym z ostatnich ? człowieku nie znasz mnie wcale jak i nie masz zielonego pojęcia czym się zajmuję, piszesz jakie niedojebane przemyślenia tylko po to żeby pokazać zachowanie typowego gimba. Uważasz się za jakiegoś Wielkiego technika to tylko twoja sprawa, bo każdy leje na twoje gadanie więc tyle w temacie .

 

@ topic ten kod naprawdę warto wykorzystać bo większość osób które kodują często  nie robią tego jak należy ostatnio spotkałem się z takim kodowaniem że sprawdzało tylko status z jednego  kanału a pokazywało na wszystkich ten sam .

Oto nasze lekarstwo, nowy cudowny lek.. lalala.

 

@topic

Dzięki wielkie za poradnik.

Opublikowano

że niby ja jestem jedynym z ostatnich ? człowieku nie znasz mnie wcale jak i nie masz zielonego pojęcia czym się zajmuję, piszesz jakie niedojebane przemyślenia tylko po to żeby pokazać zachowanie typowego gimba. Uważasz się za jakiegoś Wielkiego technika to tylko twoja sprawa, bo każdy leje na twoje gadanie więc tyle w temacie .

 

@ topic ten kod naprawdę warto wykorzystać bo większość osób które kodują często  nie robią tego jak należy ostatnio spotkałem się z takim kodowaniem że sprawdzało tylko status z jednego  kanału a pokazywało na wszystkich ten sam .

Tak, dokładnie jesteś jedną z ostatnich osób, które mogą komukolwiek coś wytykać, że zostało wzięte z epvp lub innego forum. Każdy element twojego serwera można znaleźć na epvp etc.

A co do gimba... za moich czasów jeszcze chodziło się do gimnazjum i z gimbami nie mam nic wspólnego. Swoją drogą tęsknię za tymi czasami. Wielkiego technika? Mam wiedzę, owszem i to nie małą, ale ma taką samą a nawet większą kilku innych techników. Chociażby Evor. który ma dużo większą wiedzę ode mnie jeśli chodzi o game lub Terenzo, który rozpakuje chyba każdego clienta i TreeN, dla którego nie ma słowa niemożliwe w grafice 3D. Tych osób jest masa i chyba wyczuwam u ciebie jakiś kompleks?

I na zakończenie rozmowy z tobą to mała uwaga. Jeśli ktoś pokazał zachowanie gimba to właśnie ty swoim ubogim zasobem słów, że aż musisz się posiłkować wulgaryzmami. Polecam poczytać słownik. Dowiesz się tam, że zdania zaczyna się od wielkich liter.

 

Jak zrobić, by ikonka była np. pomarańczowa, gdy kanał jest BUSY, zielona kiedy NORM, a czerwona kiedy full?

  • 4 miesiące temu...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...