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

[PROBLEM] Zmienne przy zamianie stringu na bajty


linoskoczek

Rekomendowane odpowiedzi

Opublikowano

Mam taki kodzik:

#include <File.au3>


FileDelete("E:\NewGenericName01\vtm.brn");usunięcie starego pliku w przypadku gdyby zawierał błąd
_FileCreate("E:\NewGenericName01\vtm.brn");zrobienie nowego pliku
$wersja = 1500;ustalenie wersji, czyli stringu
$kalkulacja = ($wersja*3)+27;kalkulowanie wersji, żeby była zgodna
$nowawersja = Binary($kalkulacja);zmiana zkalkulowanej wersji na bajty
FileOpen("E:\NewGenericName01\vtm.brn", 2);otwarcie pliku
FileWrite("E:\NewGenericName01\vtm.brn", $nowawersja);zapis wersji
FileClose("E:\NewGenericName01\vtm.brn");zamknięcie pliku

 

Ten kod działa, problem pojawia się, gdy chcę zrobić, aby wczytywał wersję z pliku ini, lub jakiejkolwiek zmiennej.

Np. jeśli chcę zrobić coś takiego:

 

#include <File.au3>

FileDelete("E:\NewGenericName01\vtm.brn")
_FileCreate("E:\NewGenericName01\vtm.brn")
$test = IniRead(@DesktopDir & "\patche.ini", "vtm", "version", "default")
ToolTip($test);tutaj pokazuje 1400, tak jak powinno
Sleep(2000)
$wersja = $test
ToolTip($wersja);to samo co wyżej, 1400
Sleep(2000)
$kalkulacja = ($wersja*3)+27
$nowawersja = Binary($kalkulacja)
FileOpen("E:\NewGenericName01\vtm.brn", 2)
FileWrite("E:\NewGenericName01\vtm.brn", $nowawersja);a tutaj robi się nie wiadomo skąd 361769889 zamiast 1400
FileClose("E:\NewGenericName01\vtm.brn")

 

to już nie pasi. Ma ktoś jakiś pomysł?

Opublikowano
Opublikowano

Nie da rady, bo przy odczytywaniu pliku tą funkcją:

 

Func byteread()
If FileExists($folder & "\vtm.brn") Then
$File = FileOpen($folder & "\vtm.brn", 16)
   $Read = FileRead($File)
   FileClose($File)
   Global $Version = (Int($Read)-27)/3
$statusbyte = True
GUICtrlSetData($wersja, $Version)
   Else
$statusbyte = False
EndIf
EndFunc

musi wyjść liczba składająca się z 4 cyfr, a wychodzi składająca się z 9.

Opublikowano

A że się zapytam, o co chodzi w tym kodzie :D? I co to za tajemnicze pliki?

 

Wszystko tkwi w tym Binary. Jak chcesz uzyskać długość ciągu to używasz BinaryLen. O co chodzi z tymi wszystkimi obliczeniami?

Za dużo niewiadomych. Wyjaśnij trochę po co ten kod, to może ktoś się czegoś domyśli xD

846331404756772371599.jpeg
Opublikowano

W pewnej tajemniczej ( :P) grze jest plik vtm.brn, który odpowiada za tak jakby jej wersję. Każdy patch ma swój numer, i po jego zainstalowaniu przez launcher gry, plik vtm.brn zmienia się. Dla przykładu, jeśli klient gry jest w wersji 1400 i administrator serwera wrzuci patch 1401, launcher pobierze ten patch, zainstaluje go i zmieni plik vtm.brn na odpowiednią wersję.

 

Jeśli chcesz odczytać plik vtm.brn trzeba zrobić to, co podałem wcześniej:

 

Func byteread()
If FileExists($folder & "\vtm.brn") Then
$File = FileOpen($folder & "\vtm.brn", 16)
       $Read = FileRead($File)
       FileClose($File)
       Global $Version = (Int($Read)-27)/3
$statusbyte = True
GUICtrlSetData($wersja, $Version)
       Else
$statusbyte = False
EndIf
EndFunc

 

 

 

Chyba wyjaśniłem :P I nie mam pojęcia czemu kolory się zmieniły, ipboard jest dziwne xD

 

Dam jeszcze plik vtm.brn, żeby można było go rozkminić łatwiej:

http://www40.zippyshare.com/v/12180663/file.html

https://www.virustotal.com/file/9a2b4d933bec49c147d64967b7b38c326fb6af55baa639e23906c55eb6f5373a/analysis/1350839219/

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...