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

Sprawdzenie statusu kanału


Rekomendowane odpowiedzi

Opublikowano

Witam widziałem wiele osób które sprawdzają status kanałów jakimiś śmiesznymi sposobami. Ja pokaże w jaki sposób działa oryginalne sprawdzenie statusu, do dzieła!
 
Na samym początku otwórzmy nasz plik odpowiadający za okno logowania tj. "intrologin.py" i zaimportujmy "ServerStateChecker" wpisując najlepiej gdzieś na początku pliku:

import ServerStateChecker

 
Ok dodaliśmy nasz import, teraz musimy zainicjować funkcje żeby zaczęła "istnieć", wyszukujemy funkcję "def Open(self):" i dodajemy zaraz na początku:

ServerStateChecker.Create(self)

Wszystko fajnie ale skąd serwer ma wiedzieć jakie porty ma sprawdzać i na jakim serwerze? Z pomocą przychodzi nam funkcja "AddChannel" która przyjmuje 3 argumenty: (ID, IP, PORT).
Dopisujemy więc kolejne linijki dodając tym samym nasze kanały do sprawdzania.

ServerStateChecker.AddChannel(1, "25.55.xx3.100", 13050)
ServerStateChecker.AddChannel(2, "25.55.xx3.100", 13002)
ServerStateChecker.AddChannel(3, "25.55.xx3.100", 13003)
ServerStateChecker.AddChannel(4, "25.55.xx3.100", 13004) 

Teraz musimy zgłosić że dodaliśmy już wszystkie kanały niech je skurczybyk wreszcie sprawdzi, dopisujemy więc:

ServerStateChecker.Request()

oraz w funkcji "def OnUpdate(self):":

ServerStateChecker.Update()

 
Ok ale skąd mam wiedzieć jaki status ma kanał? Proste! odszukujemy teraz funkcję "def  NotifyChannelState(self, addrKey, state):" jeśli ją wcześniej wyjebałeś to ją dopisz

a teraz małe objaśnienie argumentów jakie funkcja przyjmuje:
addrKey - Przechowuje nasze ID kanału tj. "ServerStateChecker.AddChannel(0, "25.55.xx.100", 13050)"
state - status od 1 do 3 co można odnieść do:

  • 1 - Busy
  • 2 - Normal
  • 3 - Full

 

Jeśli port będzie zły (nie będzie włączony) funkcja  "def  NotifyChannelState(self, addrKi jey, state):" 

nie zwróci nam statusu tego kanału więc na początku zakładamy że wszystkie kanały są niedostępne, przypisujemy im wartość 0

jeśli jednak będzie inaczej funkcja  "def  NotifyChannelState(self, addrKey, state):"  zamieni tę wartość.

 

a po polsku tworzymy tablicę ze statusem naszego kanału i jak wcześniej mówiłem ustawiamy domyślny status na 0:

self.Status_Kanalow = {
	"CH1":0,
	"CH2":0,
	"CH3":0,
	"CH4":0,
}

i w "def  NotifyChannelState(self, addrKey, state):"  przypiszemy im teraz poprawny status (taki jaki nam zwróci serwer)

self.Status_Kanalow["CH"+str(addrKey)] = state

No i proszę dostaliśmy tym sposobem tablice w ktorej mamy informacje o naszych kanałach, jak się do niej dobrać, bardzo prosto:

self.Status_Kanalow["CH1"] 

zwróci nam status kanału pierwszego możemy zapisać w ten sposób:

for i in range(1, 5):
	print "STATUS: CH"+str(i)+": "+str(self.Status_Kanalow["CH"+str(i)])

i otrzymamy w konsolce:
55865145608735381780.png

 

jako że mam włączone dwa pierwsze kanały i nie mam ludzi na serwie (smuteczek :( ) to ich status jest równy 1

 

 

 

a dla początkujących jeszcze kilka screenów jak to wygląda:

80849145608770381780.png

 

78652145608765981780.png

 

i tutaj dałem sobie odczyt tej tablicy roboczo pod buttonem:

50792145608777081780.png

 

Di End!

8910814572903361049127.png

Opublikowano

Krótko,zwieźle i na temat. Mi się nie przyda ale może komuś :D

Leci +

POSTY: [50] [75] [100] [150] [200] [250] [300] [350] [400] [450] [500] [550] [600] [650] [700] [750] [800] [850] [900] [950] [1000]


1817914831025941486533.png


 Ważne !   Pisząc/Odpisując wpisz w poście @Pesi

Opublikowano

A szukałem czegoś takiego, dzięki !

W sumie mam jeszcze pytanie. Mogę mieć ten status na buttonie w zmianie channeli ?

Opublikowano

A szukałem czegoś takiego, dzięki !

W sumie mam jeszcze pytanie. Mogę mieć ten status na buttonie w zmianie channeli ?

w update

if status == 1:

    self.mybutton.SetText("Ch1-Online")

else:

    self.mybutton.SetText("Ch1-Offline")

qaz3pc.jpgteż was kocham <3

784091427630431250239.png

Regulamin sygnatur

Opublikowano

Wydaje mi się że tak, choć mogę się mylić ;)

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...