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

Jak skompilować skrypt Metin2 .py do .pyc? - Skąd zdobyć moduły do kompilacji?


Rekomendowane odpowiedzi

Opublikowano

Cześć! Jestem Argi.
Chciałbym zacząć od tego, że jestem programistą, ale zazwyczaj nie pracuję w Pythonie. W związku z tym moje pytanie może wydawać się nieco banalne, za co z góry przepraszam.
 

Zacznijmy więc od tego, że moim problemem jest kompilacja pliku z rozszerzeniem „.py” do pliku z rozszerzeniem „.pyc”. Napisałem prosty hack [dla zabawy i poznania podstaw Pythona], który nie może działać na niektórych serwerach ze względu na zabezpieczenia, które usuwają pliki z folderu klienta.
Obecnie ładuję plik „.py” przez jakiś pyLoader po uruchomieniu klienta, planuję załadować plik „.pyc”, gdy uda mi się go skompilować
 

Jako programista zdaję sobie sprawę, że kompilując plik trzeba mieć w skrypcie źródła modułów, które importujemy i tu sprawa się nieco komplikuje.

Stworzyłem skrypt o nazwie script.py, który importuje następujące moduły:
 

To jest ukryta treść, proszę


Skrypt działa zgodnie z przeznaczeniem, ale jestem zainteresowany skompilowaniem go do pliku script.pyc. Jednak gdy próbuję go skompilować za pomocą PyCharm, pojawia się błąd "ModuleNotFoundError: No module named 'app'".
 

Jestem pewien, że da się jakoś skompilować te pliki, po prostu brakuje mi wiedzy. Nie wiem, czy potrzebne byłoby źródło metin2, czy może te moduły są gdzieś dostępne i mógłbym je pobrać?
A może jest inny sposób na skompilowanie tych plików?
 

Proszę o pomoc, bardzo interesuje mnie ten temat z punktu widzenia programisty - moje wewnętrzne ja nie pozwala mi się poddać.
Podejrzewam, że na forum nie pozostało zbyt wielu programistów, którzy mają wystarczającą wiedzę lub chcieliby dzielić się tą wiedzą, bo sama gra jest dość leciwa.

W każdym razie czekam na wasze odpowiedzi. Jeśli wolisz skontaktować się ze mną poprzez wiadomość prywatną - zrób to 🙂

Dodatkowe info:
 

Spoiler

Próbowałem skompilować pliki, zastępując plik lib/functools.pyc przez (mój skrypt) functools.py, po uruchomieniu gry mój plik został przekompilowany do functools.pyc, ale kiedy próbowałem go załadować za pomocą pyLoader, otrzymałem błąd „null bye” w syserr.txt.
Następnie pobrałem kilka programów, które wyszukują „null bytes” i usuwają je - to również nie zadziałało.
 

Pobrałem też pliki Vanilla Core (Od Vanilla - 'wtajemniczeni' powinni wiedzieć, co mam na myśli), ale jakoś nie mogłem tam znaleźć potrzebnych modułów.

Byłbym wdzięczny, gdyby ktoś wskazał mi właściwy kierunek


 

Pozdrawiam!

Opublikowano
1 minutę temu, monsune napisał:

Na oko widać, że potrzebujesz dodać app czyli: pip install app.

@monsune Niemożliwe, żeby to było aż tak proste. (jest?)
Wiesz, nie mam w pełni takiego ogólnego zrozumienia co tak naprawdę importuję, ale wcześniej myślałem, że moduł app jak i cała reszta jest czymś specyficznym dla Metin2 (pochodzi z source metin2) w sensie - te moduły nie są dostępne do zainstalowania poprzez 
pip install app. A może właśnie źle myślę?

Powiedz proszę czy tylko rzuciłeś pomysłem, czy faktycznie "app" jest czymś ogólnie dostępnym, a nie jest to modułem z source gry.
Oczywiście w pierwszym poście, wspomniałem o błędzie w importowaniu modułu 'app', ale jeśli importowałbym pierwsze np 'ui' to otrzymałbym ten sam błąd tylko dot. modułu 'ui'.

Opublikowano (edytowane)

Zainstaluj ten moduł i leć dalej z tematem. Jest ew. szansa, że masz zainstalowany i jest inna przyczyna. Wtedy będzie trzeba trochę inaczej do tego podejść, ale to musisz mi to powiedzieć czy nadal jest błąd czy poszło bo niestety nie ma tu czasu na gdybanie.

 

Edytowane przez monsune
Opublikowano

@monsune

Wersja pythona jaka jest używana w Metinie na którym testuję to 2.7.6, taką samą ustawiłem w pyCharm.
W momencie kiedy próbuję zainstalować paczkę za pomocą pip install app to dostaję błąd.

Spoiler
To jest ukryta treść, proszę


Poza tym, nadal mam wrażenie, że nie koniecznie może chodzić o to samo "app", bo np dalej importuję import ui czegoś takiego nie pobiorę przez pip.

 

Opublikowano

Wszystkie wersje poniżej 2.7.9 mają problem z SNI i będą właśnie takie objawy jak wyżej. Możesz to rozwiązać tak: pip install urllib3[secure] i potem ponownie spróbuj: pip install app.

Opublikowano
23 godziny temu, monsune napisał:

Wszystkie wersje poniżej 2.7.9 mają problem z SNI i będą właśnie takie objawy jak wyżej. Możesz to rozwiązać tak: pip install urllib3[secure] i potem ponownie spróbuj: pip install app.


Terminal:
 

Spoiler

ERROR: Could not find a version that satisfies the requirement urllib3[secure] (from versions: none)
ERROR: No matching distribution found for urllib3[secure]
 


Poza tym, @monsune co powiesz na temat tego co pisałem wcześniej ?
Paczek które importuję w skrypcie np. 
wndMgruiToolTip czy localeInfo nie pobiorę przez pip, więc? 

Opublikowano

Tak starego Pythona to ja wieki nie używałem prawdę mówiąc. Chyba musiałbym odtworzyć twoje środowisko, żeby móc skutecznie coś zaradzić dalej bo tak z głowy rzucać pomysły to można jeszcze długo jak widzę.

  • 1 miesiąc temu...
Opublikowano

poprostu zaiportuj dowolny modol ktory inportuje twoj modul z jakis sciazki albo daj go dosciezki tam gdzie uruchamiasz metina .

i altomatycznie tworzy sie pyc.

np w idle pytona jak cos uruchamiasz jakis modol nie tworzy pyc tylko co zaimportujesz w tym module tworzy pyc .

ale w idle pytona nie stworzysz pyc bo importujesz moduly metina .

dodanie add path chyba nie pamietam z jakiego modulu chyba sys add path z 2 argumentami (0,"tu twoja sciezka do modulu pu").

import twoj modol

a plik pyc mozna spowrotem do py zrobic jakims programem chyba decompile pyc py czy jakos tak .

wiec odwrotnie tez powinien byc jakis program ale nic mi o tym nie wiadomo.

bo pyc to tylko py tylko tak zapisany zeby sie szybciej importowal.

jescze jest pyd ale to nic innego jak dll podczas importu pyd szuka funkcji o nazwie innit nazwa tego modulu i wywoluje ja python.h dlatego niemozna zminic nazwy modulu

pyd na inny a nazwe pliku py czy pyc mozna .

 

  • 1 rok później...

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...