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

EscScript - interpretowany język programowania dla twórców cheatów


Rekomendowane odpowiedzi

Opublikowano

(download jest na samym dole postu)

 

1. Informacje

 

Robię ten język sam od podstaw, od 3 dni. Narazie jest to tylko wersja poglądowa, oferuje tylko budowanie aplikacji konsolowej z mocno ograniczoną funkcjonalnością. Ale wszystko jeszcze przed nim. Edytor jest tymczasowy, żeby tylko dało się budować aplikacje. Myślałem żeby w ogóle zamienić edytor tekstowy na edytor "klikowy" - przeciąganie elementów z listy, dopisywanie tylko parametrów i opcji, ale nie wiem czy będzie to lepsze wyjście, ocene pozostawiam wam.

 

Założenie jest prostę - z menu wybieramy jaki typ aplikacji chcemy utworzyć (obecnie da się tylko konsolowe, w konstrukcji - biblioteki dll z opcjami rysowania w danym silniku graficznym gry i ciche aplikacje bezokienkowe).

Następnie w prosty sposób programujemy cheat, wybieramy kompiluj (nazwa póki co troche błędna) i dostajemy gotową aplikację/bibliotekę dll.

 

2. Podstawy języka

 

Każda kolejna instrukcja musi znajdować się w kolejnej linii!

W pierwszej linii musi znajdować się rodzaj aplikacji jaką chcemy utworzyć, to dzięki niemu "kompilator" wybiera do jakiego stubu (aplikacji początkowej obsługującej język) ma dołączyć napisany skrypt. Wygląda ona tak:

#type app.console

Jak napisałem wyżej obecnie dostępna jest tylko opcja aplikacji konsolowej, w przyszłości (jeśli projekt się spodoba) będą kolejne rodzaje.

 

Cały język opiera się na funkcjach, które zostają wywoływane w odpowiednim momęcie. Funkcje zawierają się pomiędzy [nazwa_funkcji] i [/nazwa_funkcji]

[main]

	// tutaj kod

[/main]

Aplikacja konsolowa musi posiadać funkcję nazwaną main, to ona zostanie wywołana podczas jej startu.

 

Kolejnym elementem skryptu są zmienne. Zmienne mogą być liczbowe lub tekstowe. Wartości przypisuje się do nich w ten sposób:

str.zmienna_tekstowa = "witam"
num.zmienna_liczbowa = 666

Typy zmiennych nie mogą się mieszać (obecnie, bo pracuje nad tym)!

 

Język posiada wbudowaną obsługę ekspresji, to znaczy że po wpisaniu:

num.liczba = 2+2*2
num.liczba2 = 2*(2+2)

Zmienna liczba przyjmie wartość 6, a liczba2 przyjmie 8.

 

Wartości tekstowe można łączyć jedynie za pomocą plusa

str.jest = "jest"
str.tekst = "To "+jest+"tekst"

Podczas przypisywania wartości do zmiennych posługujemy się num.nazwa_zmiennej lub str.nazwa_zmiennej w zależności od typu. Przy odwoływaniu się do zmiennych w ekspresjach nie stosujemy przydomków num. ani str. !

 

 

 

Ostatnim dostępnym obecnie elementem języka są wbudowane funkcje. Funkcje nie zwracają żadnej wartości którą można by przypisać do zmiennej!

 

var.numtostr("nazwa_zmiennej",numer)

Konwertuje numer na tekst i wpisuje go do zmiennej, której nazwę podajamy jako tekst. Zmienna nie musi istnieć, zostanie utworzona automatycznie.

var.numtostr("zmienna",666)

przypisze zmiennej tekstowej o nazwie zmienna tekst "666".

 

var.strtonum("nazwa_zmiennej","666")

Konwertuje tekst na numer analogicznie do funkcji powyżej

var.numtostr("zmienna",666)

przypisze zmiennej liczbowej o nazwie zmienna liczbę 666

 

app.showmessage("tytul","wiadomosc")

Wyświetla wiadomośc (messagebox)

 

console.write("tekst")

Wpisuje tekst w konsoli

 

console.read("nazwa_zmiennej")

Czeka aż użytkownik wpisze tekst i naciśnie enter, po czym wpisuje ten tekst do zmiennej podanej w parametrze

 

console.endline()

Wpisuje znak nowej linii do konsoli

 

I.. aktualnie to wszystko :D Ale będzie więcej, nie martwcie się.

 

3. Do dodania / w przyszłych wersjach

  • zmienne/wartości bez typów - automatycznie konwertowane
  • obsługa wbudowanych funkcji z bibliotek
  • ify / pętle
  • więcej typów aplikacji
  • zrobienie porządnego edytora
  • przekształcanie kodu do części pierwszych przy kompilacji
  •  

 

4. Download

 

Download obecnej wersji:

http://przeklej.org/file/Xw2JLN/esc.rar

Skan:

https://www.virustotal.com/pl/file/6fb7099125b1a3b574998e8ba7a429c50da6331b4e37a488c94d3e2b3bad90f3/analysis/1406455955/

Twoja stara robi catch the clowny w Game Makerze.

Opublikowano

Stosujesz w tym analizę leksykalną(lub coś podobnego)?

częściowo, na samym początku program jest dzielony na funkcje i wyciągane są poziomy ifów/pętli (których jeszcze nie ma). Błędy ekspresji są obsługiwane w czasie rzeczywistym, a nieznane polecenia zwyczajnie ignorowane.

 

 

w czym ten jezyk jest/bedzie lepszy od C++ z winapi? szybkoscia? eee nie, bo interpretowany. latwoscia w robieniu hookow? latwoscia w czytaniu pamieci? czy w czym?

tym że byle laik będzie mógł sobie napisać

#type dll.directx9

[d3d9.onpresent]
	d3d9.drawbox(10,10,50,20,"FFFF0000")
[/d3d9.onpresent]

i już ma gotową dllke z hackiem. Takie przynajmniej mam założenie, ale chyba sam zdajesz sobie sprawe że to czasochłonne. Do tego chce dołożyć detoury, proste czytanie z pamięci, wywoływanie funkcji z gry itp.

Myślałem o edytorze graficznym (tak jak napisałem w 1 poście) i o mini programach któreby pomagały znajdować w grze określone rzeczy (np. odpowiednie returnaddressy w funkcjach (np directx-a żeby móc rysować np. na gui i na mapie), czy odpowiednie wywoływanie funkcji), ale to póki co marzenia, bo wątpie że sam dałbym rade to wszystko zrobić.

Twoja stara robi catch the clowny w Game Makerze.

Opublikowano

Tyle razy się zabierałem, żeby zrobić własne gui (np celownik z własnymi podziałkami) i za każdym razem wymiękałem przy winapi...

Życzę powodzenia, a ja znów spróbuje powalczyć jak będą chłodne deszczowe dni.

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...