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

[Tekkit][ComputerCraft]Poradnik - podstawy


dzejQ97

Rekomendowane odpowiedzi

Opublikowano

Witam, wiem że są już na tym forum poradniki, ale w tym chciałem pokazać, jak proste jest korzystanie z tego modu, chociaż wielu uważa, że proste to nie jest dlatego zapraszam do lektury. Poradnik będzie w dwóch częściach więc rezerwuje kolejny post.
Craftingu i stawiania bloków chyba nie muszę tłumaczyć, tylko opiszę trochę poszczególne bloki.
Computer - Najważniejsza część modu, to w nim piszemy wszystkie programy.
Monitor - Można na nim wyświetlić praktycznie każdy program.
Disk Drive - Dzięki niemu możemy zapisywać gotowe programy na dyskietki, i kopiować je na inne komputery. Oszczędność czasu, bo nie trzeba pisać od nowa całego programu. Można też otworzyć ten program wchodząc w twój save, i w folder computers.
Pierwszy program

Pierwszy program wygląda tak samo we wszystkich językach programowania, więc tak samo jest w Lua

write "Hello World!"

ComputerCraft nie wymaga żadnych dodatkowych znaczników dlatego jedna linijka kodu wystarcza. Ten kod pokazuje po prostu w GUI komputera napis Hello World! . Należy pamiętać, by tekst zapisywać w znakach "", inaczej komputer wyrzuci błąd przy próbie otworzenia programu.

Zmienne

Czym są zmienne, chyba nie powinienem tłumaczyć, ale po krótce mogę opisać. Zmienne to z góry zdefiniowane wartości, które można przywołać w każdym momencie kodu. Tworzenie zmiennych jest prostsze niż w innych językach, np. w PHP wymagany jest znak $, a w C++ wartość jaką zmienna przyjmuje, np dla tekstu string nazwa_zmiennej. W Lua kod wygląda tak:

zmienna1 = 4 //zmienna z liczbą

zmienna2 = "Jakiś tekst" //zmienna tekstowa

Komputer sam rozpoznaje jaki jest to typ zmiennej, jednak przy zmiennej tekstowej wymagane są znaki "". Oto przykłady użycia zmiennych:

zmienna1 = 5
zmienna2 = 10

write (zmienna1-zmienna2) \\ na ekranie pokaże się liczba 5, jako wynik odejmowania
write (zmienna1+zmienna2) \\ na ekranie pokaże się liczba 15, jako wynik dodawania
write (zmienna1/zmienna2) \\ na ekranie pokaże się liczba 2, jako wynik dzielenia
write (zmienna1*zmienna2) \\ na ekranie pokaże się liczba 50, jako wynik mnożenia

Pętla for

Pętla służy do wykonywania pewnej czynności określoną ilość razy. Jej tworzenia działa podobnie jak w innych językach:

for i=1, 10 do
write "Ten napis wyświetli się 10 razy"
end

Należy pamiętać, aby zakończyć pętle instrukcją end, inaczej program wypluje błąd.

Instrukcja if, elseif i else

Najważniejsza, i podstawowa umiejętność programowania to tworzenie if'ów. Odpowiada ona za czynność, która zostaje wykonana jeśli zostanie spełniony dany warunek. Oto przykład systemu logowania:

haslo_tomek = "admin"
haslo_maciek = "user1"
haslo_krzysiek = "user2" //tworzenie zmiennych z hasłami

write "Podaj hasło: "
input = read("*") // przechwytywanie tekstu, zastępując każdy znak gwiazdką

if input == haslo_tomek then
write "Witaj Tomek, panel administratora gotowy!"
sleep(2) \\ odczekuje 2 sekundy
shell.run("panel_administratora") \\ otwiera program panel_administratora, jeśli taki jest napisany
elseif input == haslo_maciek then
write "Witaj Maciek!"
elseif input == haslo_krzysiek then
write "Siema Krzysiu, co jesz? zupę?"
else
write "hasło nieprawidłowe"
sleep(2)
os.reboot() \\ uruchamia komputer ponownie
end

Jest to prosty program na logowanie, w drugiej części zajmę się trochę praktyką i pokaże jak stworzyć przydatny system drzwi na hasło. Jeśli znajdziecie jakieś błędy piszcie to poprawie :)

Opublikowano

Teraz kilka zastosowań informacji poznanych wcześniej, oraz kilka nowości.

 

Drzwi na haslo

Taki prosty skrypt, który pozwala tworzyć drzwi otwierane na hasło.

haslo = "admin"
os.pullEvent = os.pullEventRaw \\ ten kod odpowiada za wyłączenie skrótu CTRL + T, uniemożliwiając tym samym edycję kodu. Zalecane na serwerach multiplayer.

write "Podaj haslo: "
input = read("*")

if input == haslo then
write "Haslo prawidlowe \n" \\ znak \n oznacza przejście do następnej linii tekstu
write "Logowanie"
for i=1, 3 do \\ 
write "."    \\  pętla odpowiada za animacje trzech kropek obok napisu Logowanie, można pominąć całą pętlę  
sleep(1)    \\
end            \\
redstone.setOutput ("left", true) \\ wysyla sygnal redstone z lewej strony komputera
sleep(5)
redstone.setOutput ("left", false) \\ po 5 sekundach wylącza redstone, automatycznie zamykając drzwi
os.reboot() \\ uruchamia ponownie komputer umozliwiajac ponowne wpisanie haslo, bez koniecznosci wlaczania programu od nowa
else
write "Haslo nieprawidłowe!"
sleep(2)
 \\ kod od tego miejsce można pominąć, jest to system włączenie alarmu gdy haslo jest niepoprawne
redstone.setOutput ("right", true) // z prawej strony komputera należy postawić alarm, albo podsiągnąć redstione do bloku alarmu
// ten kod już należy pisać
os.shutdown() \\ wyłącza komputer
end

Program należy nazwać startup, mod tak nazwany program odpala odrazu po uruchomieniu komputera.

Dodając jakieś aktualizacje będe edytował posty.

Opublikowano

No no ;p

Właśnie zastanawiałem się jak zrobić z tym żeby na początku program się włączał. Teraz moge robić system ^^

Czekam na więcej ;P

  • 3 tygodnie później...
Opublikowano

RedNet API

Rednet przydaje się na serwerach multiplayer, umożliwia on przesyłanie wiadomości między komputerami, niestety ale eksperymentowałem nad tym, i nie udało mi sie wysłać, np. zmiennej na inny komputer. (Chciałem zrobić coś na wzór internetu, z 1 głównym serwerem przez który przechodzą wszystkie wiadomości na serwerze oraz są zapisywane do logów, wiem że nikt nie lubi inwigilacji, ale nikt nie musiał się o tym dowiedzieć, a zmienna przesłana była mi potrzebna, aby z serwer wiedział gdzie dalej wysłać wiadomość, niestety, z clienta wiadomość przechodziła do servera, ale z servera nie została wysłana do drugiego clienta, który miał odebrać wiadomość od clienta pierwszego)

Ważne funkcje

rednet.open("strona")
rednet.close("strona")

Uruchamia modem podłączony do komputera z danej strony, ważne aby strona była w języku angielski i miedzy znakami "" (np. rednet.open("right") ; rednet.open("top") ; rednet.open("back")) Ważne, aby strona w kodzie, zgadzała się z umiejscowieniem modemu na komputerze. rednet.close("strona") po prostu zamyka połączenie, i wyłącza możliwość odbierania informacji.

rednet.announce()

Kod wysyła pustą wiadomość, do wszystkich podłączonych komputerów, przydatne przy sprawdzania sieci, jednak ja nigdy tego nie użyłem :)

rednet.send(IDodbiorcy, "wiadomość")

Wysyła informację do danego komputera, jednak trzeba znać jego ID ( można bardzo łatwo sprawdzić uruchamiając program id w konsoli głównej) Aktualnie pracuje nad takim systemem poczty, która będzie miała własną bazę z kontaktami, czyli ID z podpisem np. Komputer 2 - Maciek
, Komputer 12 - Admin itd.

rednet.broadcast("wiadomość")

Wysyła daną informację do wszystkich podłączonych do sieci komputerów, działa na podobnej zasadzie co rednet.send() ale nie wymaga podania ID odbiorcy.

rednet.receive(czas_oczekiwania)

Funkcja odpowiada za odebranie informacji od innego komputera, zamiast czas_oczekiwania można wpisać jakąś wartość w sekundach, lub zostawić puste, wtedy komputer będzie wiecznie czekał na wiadomość. Najlepiej taką funkcję przypisać do zmiennych np.

local MSG, sendID, distance = rednet.receive()

write ("Treść wiadomości: "..MSG.."wysłana od"..sendID.."z dystansu"..distance.."kratek")

Jak widać na przykładzie wyżej, komputer jest w stanie określić, z jakiej odległości została wysłana wiadomość.

  • 3 tygodnie później...
Opublikowano

os.pullEvent() - czyli mój sposób na przyciski

Do tej części będzie potrzebny Advanced Computer, który jest w nowszej wersji moda.

Zacznijmy od przykładowego przycisku ktory napisze na ekranie "Moj pierwszy przycisk"

term.setCursorPos(1,1)
write "Tu kliknij!"

local event, button, xPos, yPos =os.pullEvent("mouse_click")

    if yPos == 1 then -- jesli przycisk jest w linii pierwsze wtedy
       if xPos >= 1 and xPos <= 15 then
       term.clear() -- czysci ekran z napisow
       write "Moj pierwszy przycisk"
       else
       os.reboot() -- uruchamia ponownie komputer
       end
   else
   os.reboot()
   end

Prosty kod na przycisk szerokości 15, za co odpowiada xPos <= 15 zaczynający się na pozycji 1 za co odpowiada xPos >= 1, jeśli użytkownik kliknie w przycisk zostanie wyświetlony napis "Moj pierwszy przycisk", a jeśli kliknie gdzie indziej komputer uruchomi się ponownie. W razie pytań zapraszam na GG (nie odpowiadam na "siema", od razu pisz problem)

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...