Skocz do zawartości

Ranking

Popularna zawartość

Treść z najwyższą reputacją w 03/07/21 w Odpowiedzi

  1. NIE POLECAM. Administracja totalnie niezorganizowana. Najpierw traci mój czas na tworzenie działów na forum, po czym range zabierają. Na odpowiedź właściciela czeka się kilka dni, a jak porusza sie niewygodny dla niego temat, to już w ogóle nie odpisuje. Jeszcze raz, nie polecam.
    1 punkt
  2. CoFFeIN04

    Teamowe koordy

    command /xyz: trigger: execute player command "teammsg %location of player%"
    1 punkt
  3. Glicz

    Silnik

    Najlepiej silnika papermc. Ma on anty xray'a do włączenia w swoim pliku oraz jest lepiej zoptymalizowany. Również ma trochę więcej opcji w swoim api, np: wycentrowanie lokalizacji, event związany z nieznaną komendą.
    1 punkt
  4. CoFFeIN04

    Problem z potkami

    Wyłącz wszystkie skrypty i sprawdź, czy problem ustaje, jeśli nie to wyłącz wszystkie pluginy i sprawdź. Czy dzieje się tak tylko z potkami z creative, czy również z tymi naturalnie stworzonymi?
    1 punkt
  5. Kormic

    Projekt serwera 1.16.4

    Kormic wygląda to na reklamę serwera, który miałby za niedługo powstać. John jednak chciałby się najpierw dowiedzieć czy ktokolwiek byłby zainteresowany tego typu serwerem i co by mógł zmienić/poprawić.
    1 punkt
  6. Kormic

    Skrypt na liście

    Skript może to zinterpretować jako odejmowanie, już były takie błędy i ludzie je zgłaszali do twórców Skripta.
    1 punkt
  7. Kormic

    przerobienie skryptu chance of

    Co prawda zaburzy to lekko szanse procentowe u ciebie, ale proszę. on right click on ender chest: block under event-block is bedrock cancel event open chest inventory with 1 row named "&6Skrzynki" to player set slot 0 of player's current inventory to chest named "&7&lZwykla" set slot 2 of player's current inventory to chest named "&a&lPospolita" set slot 4 of player's current inventory to chest named "&b&lRzadka" set slot 6 of player's current inventory to chest named "&5&lEpicka" set slot 8 of player's current inventory to chest named "&6&lLegendarna" on inventory click: inventory name of current inventory of player is "&6Skrzynki" clicked inventory is not player's inventory if clicked slot is 0: cancel event if player doesn't have 1 tripwire hook named "&7&lZwykly Klucz": cancel event wait 0.2 seconds send player title "&4&lBLAD" with subtitle "&cNie masz klucza!" close player's inventory stop remove 1 tripwire hook named "&7&lZwykly Klucz" from player's inventory if chance of 80%: give 6 obsidian to player broadcast "&6%player% &7wylosowal: &6Obsydian (x6)" else if chance of 70%: give 32 brick block to player broadcast "&6%player% &7wylosowal: &6Cegly (x32)" else: give 16 apple to player broadcast "&6%player% &7wylosowal: &6Jablko (x16)"
    1 punkt
  8. Kormic

    Skrypt na liście

    Ponieważ dałeś to w procenty. Mimo wszystko to nie zadziała. Po prostu usuń te '%arg 1%'.
    1 punkt
  9. Kormic

    przechodzenie przez kraty

    Tabliczka o nazwie? Masz na myśli 1. linijkę czy też nazwę stawianej tabliczki gdy mamy ją w ekwipunku?
    1 punkt
  10. Wyszukaj sobie na forum "skrypt na nokaut". Było już parę takich.
    1 punkt
  11. Podczas lekcji: poznasz sposób przygotowania środowiska i miejsca pracy od strony technicznej do pisania bota, poznasz poprawny sposób uruchamiania bota, poznasz pierwszy sposób reagowania przez bota na wpisane komendy. Mam nadzieje, że przygotowany przeze mnie materiał uda Ci się przyswoić w najlepszym dla ciebie stopniu i wspomoże Cię on na drodze do budowania swojego programistycznego imperium. Pierwszym etapem dzisiejszej lekcji będzie zainstalowanie silnika NodeJS, aby to wykonać należy: 1. Wejść na stronę https://nodejs.org/en/, która jest oficjalnym źródłem tego silnika 2. Wybrać jedną z wersji, ja polecam tą z dopiskiem Recommended For Most Users - jest to wersja stabilna doskonała dla większości użytkowników pod pisanie bota jest w zupełności wystarczająca. Następnie postępujemy według wskazań instalatora. 3. Aby sprawdzić czy instalacja przebiegła poprawnie należy w konsoli CMD pisać komendę npm -v, jeżeli odpowiedź zawiera wersje waszego silnika wszystko przebiegło poprawnie. (Zajrzyj poniżej jeżeli nie wiesz jak ją uruchomić) 4. Następnie wybieramy miejsce, w którym będzie znajdował się nasz bot. Ja wybrałem folder na pulpicie, Tobie również polecam stworzyć nowy folder, ponieważ bot będzie się składał z dużej ilości plików co jest jednoznaczne z tym, że zrobienie go w folderze, w którym już istnieją pliki będzie mocno utrudniało Ci prace. Następnie musimy uruchomić konsolę cmd z domyślną lokalizacją naszego folderu, który wybraliśmy na miejsce przyszłych plików bota. Robi się naciskając dwukrotnie na ścieżkę do lokalizacji folderu 5. Kolejnym krokiem jest zainicjowanie pliku package.json, w którym będą znajdywały się główne informacje o projekcie. Robimy to poleceniem npm init 6. Wypełniamy następnie odpowiednie wartości. W nawiasach okrągłych znajdują się odpowiedzi domyślne, które zostaną ustawione, jeżeli to pole to zostanie puste. (jeżeli nie wiesz jak wypełnić dane pole zajrzyj do spojlera poniżej) 7. Kolejną wymaganą do odwiedzenia przez nas stroną będzie https://discord.js.org/ 8. Możemy tam znaleźć komendę do zainstalowanej wcześniej konsoli npm. 9. Wpisujemy ją w tą samą konsole, co wcześniej polecenie npm init 10. Po kilku chwilach menadżer pakietów npm zainstaluje nam bibliotekę DiscordJS, z której będziemy korzystać podczas tworzenia bota. Kolejnym etapem będzie uruchomienie edytora kodu źródłowego, w którym będziemy tworzyć projekt. Ja z doświadczenia polecam VS code, które można pobrać ze strony https://code.visualstudio.com/, lecz można również użyć innych takich jak subline, ub nawet notepad++ (lecz w nim będzie dużo trudności) 11. Po zainstalowaniu wybranego przez nas edytora należy wpisać komendę code . co oznacza, że folder w którym się znajdujemy zostanie otwarty przez edytor VS code (jeżeli macie inny należy sprawdzić czy daje on możliwość otwarcia pełnego katalogu i jeżeli tak to w jaki sposób i postępujecie według tych wskazówek) Pierwszy punkt naszej lekcji uważam za zaliczony… Dużo teorii? Tak wiem, ale od teraz zaczynamy prawdziwą zabawę z kodem. Naszym dzisiejszym celem będzie stworzenie bota, który będzie podawał nam aktualną godzinne po wpisaniu komendy !czas, ale dość już tego przedłużania i zacznijmy kodowanie! Pierwszym krokiem jaki zrobimy to napiszemy podstawowy kod uruchamiający bota: const Discord = require('discord.js'); const bot = new Discord.Client(); bot.login(token); Ale co to w sumie jest? I skąd wziąć token? Takie dwa pytanie mogą narodzić się w Twojej głowie podczas patrzenie na ten kod już spieszę z wyjaśnieniami. Wpierw zajmiemy się pytaniem technicznym co oznaczają poszczególne linijki, a zrobię to w taki sposób: const Discord = require('discord.js'); /* Pobieramy domyślny obiekt do pobrania z biblioteki discord.js i przypisujemy je do zmiennej Discord */ const bot = new Discord.Client(); /* Tworzy naszego bota i przypisuje go do zmiennej bot */ bot.login(token); /* przypisuje specjalny tajny kod dostępu do naszego bota */ Najważniejszą zasadą przy tokenie jest to, że nie wolno go podawać publicznie ponieważ jest to taki login i hasło dla naszego bota i podając komuś ten token dajemy komuś dostęp do bota. Ale mówię tu o tym tokenie, a w sumie nie wiadomo jak stworzyć taki token… 1. Należy wejść na stronę https://discord.com/developers/applications jest to programistyczny panel platformy Discord, właśnie tam możemy stworzyć naszego bota. 2. Pierwszym krokiem panelu programisty jest utworzenie specjalnej aplikacji Discordowej, jest ona taką naszą strefą, dzięki której możemy programować używając specjalnych API – jest to specjalna bramka umożliwiająca niegraficzne połączenia z daną platformą, aktualnie bez API nie można zrobić poprawnie dużej platformy, zwłaszcza tak zaawansowanej jak Discord. 3. Kolejno musimy wybrać zakładkę BOT, a następnie klikamy Create bot, zostanie wtedy utorzona nam dodatkowa strefa, w której możemy pobrać informacje takie jak token. 4. Aby pozwolić nam podejrzeć token należy kliknąć w tekst Click to Reveal Token Oto krótki wizualny poradnik jak to zrobić: Okej nasz bot już istnieje możemy wkleić teraz token w odpowiednie miejsce: const Discord = require('discord.js'); const client = new Discord.Client(); client.login('Nzc1NjcxMDQ4ODEyNjI1OTMw.X6pt9Q.OOkUQp59J918Al274uZxicryBZU'); /* Przypisujemy go używając znaku ' odpowiada on w JavaScripcie za tekst, który ignoruje jakiekolwiek nazwy zmiennych jeżeli przypadkiem pojawiły się w naszym tokenie */ (Tak, wiem udostępniłem właśnie Wam token do mojego bota lecz po opublikowaniu tej lekcji kod ten jest już zmieniony) Okej mamy już bota, mamy już token, ale jak wygenerować link, którym dodamy naszego bota na serwer? Już śpieszę z wyjaśnieniami. Najprostszym sposobem jest w panelu aplikacji wejście w zakładkę OAuth2, następnie w pierwszej liście zaznaczamy opcje bot, a na kolejnej pojawionej liście wybieramy permisje, które będą dostępne dla bota po dodaniu go generowanym linkiem. Ja z powodu, że jest to bot poradnikowy wybiorę permisje Administrator, czyli nadam botowi wszelkie permisje, lecz nie zawsze jest to wymagane, czasem wystarczy tylko wysyłanie wiadomości, albo dodawanie reakcji w zależności jakiego bota robimy, kolejno kopiujemy wygenerowany link, a następnie przeklejamy go do paska przeglądarki i postępujemy standardowo jak podczas dodawania bota, czyli wybieramy serwer (musimy na nim mieć dostęp do zarządzania serwerem) Poradnik graficzny: Nasz bot jest już gotowy do uruchomienia. No właśnie do uruchomienia, ale jak to zrobić? Istnieje wiele różnych sposobów na uruchamianie aplikacji pisanych w nodeJS, ale jeden z nich jest najwygodniejszy (a co najmniej w mojej opini) i właśnie go wam przedstawię, ale wracając do poradnik krok po kroku: 1. Wchodzimy w plik package.json 2. Następnie znajdujemy linijkę „test”: „echo \”Error: no test specified\” && exit 1” 3. Kolejno zamieniamy jej treść na: „start”: „node bot.js” ( „Start” w tym miejscu określa nazwę, skryptu możesz ją nazwać jak tylko chcesz, ale musi być ona zawarta w cudzysłowie, w miejscu bot.js powinieneś wpisać nazwę pliku głównego, którego nazwę zdefiniowałeś podczas tworzenia projektu poleceniem npm init) 4. Zapisujemy plik i w lewym dolnym rogu znajdujemy przycisk NPM SCRIPTS, a następnie klikamy w nasz skrypt Tym sposobem nasz bot już działa i można zauważyć że jego status jest aktywny, lecz nadal nie mamy od niego żadnego komunikatu. Dlatego teraz dodamy do naszego bota komunikat do konsoli, że został poprawnie uruchomiony. Oto kilka sposobów na stworzenie takiego kodu: const Discord = require('discord.js'); const client = new Discord.Client(); client.login('Nzc1NjcxMDQ4ODEyNjI1OTMw.X6pt9Q.OOkUQp59J918Al274uZxicryBZU'); function ReadyFunction(){ console.log("Bot został poprawnie uruchomiony"); }; client.on('ready', ReadyFunction); const Discord = require('discord.js'); const client = new Discord.Client(); client.login('Nzc1NjcxMDQ4ODEyNjI1OTMw.X6pt9Q.OOkUQp59J918Al274uZxicryBZU'); const ReadyFunction = () => { console.log("Bot został poprawnie uruchomiony"); }; client.on('ready', ReadyFunction); const Discord = require('discord.js'); const client = new Discord.Client(); client.login('Nzc1NjcxMDQ4ODEyNjI1OTMw.X6pt9Q.OOkUQp59J918Al274uZxicryBZU'); client.on('ready', () => { console.log("Bot został poprawnie uruchomiony"); }); const Discord = require('discord.js'); const client = new Discord.Client(); client.login('Nzc1NjcxMDQ4ODEyNjI1OTMw.X6pt9Q.OOkUQp59J918Al274uZxicryBZU'); const ReadyFunction = function(){ console.log("Bot został poprawnie uruchomiony"); }; client.on('ready', ReadyFunction); const Discord = require('discord.js'); const client = new Discord.Client(); client.login('Nzc1NjcxMDQ4ODEyNjI1OTMw.X6pt9Q.OOkUQp59J918Al274uZxicryBZU'); client.on('ready', function(){ console.log("Bot został poprawnie uruchomiony"); }); Ukazałem tu możliwość stworzenia tej akcji używając każdej z poznanych w poprzedniej części wariacji funkcji. Ja jak i większość programistów użyła by funkcji strzałkowej nieprzypisanej, którą ukazałem w środkowym kodzie i właśnie z nią będziemy pracować, lecz w żaden sposób nie zabraniam pisania w inny sposób. Jedną z ważnych zasad kodu JavaScript jest czytelność i jednolitość kodu, dlatego jakiej funkcji użyjecie leży po waszej stronie, lecz powinniście - aby zachować jednolitość składniową kodu - używać tej samej przez cały projekt. Funkcja wywołuje nam najprostsze, ale jednocześnie nieznane nam jeszcze zadanie czylo console.log("notka") obstawiam trudne nie jest do zgadniecie co to znaczy, jest to dokładnie wypisanie treści notki do konsoli jest to jedna z częstszych metod wyszukiwania błędów w JS czyli wypisywanie wartości do konsoli i szukanie, w którym momencie dzieje się coś co nie powinno się stać. Ostatnią rzeczą do omówienia w tym krótkim kodzie jest funkcja przypisania do opcji on w naszym bocie. Oznacza ona, że w momencie gdy zostanie wykonana akcja z pierwszego argumentu funkcji, ona sama wykona nam przypisaną w drugim funkcje. (Listę wszystkich dostępnych nazw akcji znajdziesz tutaj: https://discord.js.org/#/docs/main/stable/class/Client, znajduje się ona w liście events po kliknięciu w daną nazwę zostaniesz przeniesiony do strony opisującej działanie wraz z wypisem możliwych argumentów) Sprawdźmy czy po uruchomieniu działa: (Jeżeli twój wynik jest inny sprawdź czy nasz wszystko dobrze zapisane) Jak mamy już to gotowe wyłączmy naszego bota klikając ten śmietniczek Przejdźmy teraz do pisania naszej pierwszej komendy, użyjemy do tego eventu o nazwie message, wyglada on tak: client.on('message', ( msg ) => { }); Możemy zauważyć, że w przeciwieństwie do eventu ready, przekazuje on argument. Najczęściej argument ten jest zapisywany jako zmienna msg, dlatego ja również będę go tak nazywał. Z powodu, że funkcja ta jest funkcją strzałkową z jednym argumentem możemy użyć skróconej wersjii zapisu czyli: client.on('message', msg => { }); Obie te funkcje będą działały identycznie. Teraz powinniśmy sprawdzić jak tak naprawdę wygląda przekazywany nam obiekt, który widnieje w naszej funkcji pod nazwą msg, najprościej sprawdzimy to tak: client.on('message', ( msg ) => { console.log(msg) }); Wynik tego kodu jest taki: Message { channel: TextChannel { type: 'text', deleted: false, id: '775668209768071168', name: 'kanał1', rawPosition: 3, parentID: '775667827163004938', permissionOverwrites: Collection [Map] { '705028390205259886' => [PermissionOverwrites], '706164940557385738' => [PermissionOverwrites] }, topic: null, nsfw: false, lastMessageID: '775837008224190464', rateLimitPerUser: 0, lastPinTimestamp: null, guild: Guild { members: [GuildMemberManager], channels: [GuildChannelManager], roles: [RoleManager], presences: [PresenceManager], voiceStates: [VoiceStateManager], deleted: false, available: true, id: '705028390205259886', shardID: 0, name: 'Boty', icon: null, splash: null, discoverySplash: null, region: 'europe', memberCount: 6, large: false, features: [], applicationID: null, afkTimeout: 300, afkChannelID: null, systemChannelID: null, embedEnabled: undefined, premiumTier: 0, premiumSubscriptionCount: 0, verificationLevel: 'NONE', explicitContentFilter: 'DISABLED', mfaLevel: 0, joinedTimestamp: 1605005303568, defaultMessageNotifications: 'ALL', systemChannelFlags: [SystemChannelFlags], maximumMembers: 250000, maximumPresences: null, approximateMemberCount: null, approximatePresenceCount: null, vanityURLCode: null, vanityURLUses: null, description: null, banner: null, rulesChannelID: null, publicUpdatesChannelID: null, preferredLocale: 'en-US', ownerID: '319161845220900864', emojis: [GuildEmojiManager] }, messages: MessageManager { cacheType: [Function: LimitedCollection], cache: [LimitedCollection [Map]], channel: [Circular] }, _typing: Map {} }, deleted: false, id: '775837008224190464', type: 'DEFAULT', system: false, content: 'Wiadomość testowa', author: User { id: '319161845220900864', system: false, locale: null, flags: UserFlags { bitfield: 64 }, username: 'wiktoor123', bot: false, discriminator: '0439', avatar: '667ac96c2b090fd60a80a80836c0e5d3', lastMessageID: '775837008224190464', lastMessageChannelID: '775668209768071168' }, pinned: false, tts: false, nonce: '775837009607393280', embeds: [], attachments: Collection [Map] {}, createdTimestamp: 1605044357115, editedTimestamp: 0, reactions: ReactionManager { cacheType: [Function: Collection], cache: Collection [Map] {}, message: [Circular] }, mentions: MessageMentions { everyone: false, users: Collection [Map] {}, roles: Collection [Map] {}, _members: null, _channels: null, crosspostedChannels: Collection [Map] {} }, webhookID: null, application: null, activity: null, _edits: [], flags: MessageFlags { bitfield: 0 }, reference: null } Możemy z tego wyczytać, że jest to obiekt składający się z wielu innych obiektów, ale niech was to nie przeraża nie jest to trudne i przebrniemy przez to razem. Wiadomość, którą wysłałem wyglądała tak: Dlatego wiemy już, że jej treść musi mieć wartość Wiadomość testowa. Odnajdźmy ją teraz w tym dużym obiekcie powyżej... (znajduje się w 74 linijce) Po chwili poszukiwań uda nam się ją znaleźć. Możemy zauważyć, że nie należy ona do innego obiektu, dlatego wystarczy, że odwołamy się do niej za pomocą msg.NAZWA, a za nazwę wstawimy nazwę tego parametru czyli content, poprawny kod wygląda teraz tak: client.on('message', msg => { console.log(msg.content) }); Dzięki niemu po napisaniu jakiejkolwiek wiadomości otrzymamy jej treść w konsoli: Teraz musimy użyć wyrażenia warunkowego jakim jest IF, jego składnia wygląda tak: if(warunek){ //To co jest wykonywane jeżeli warunek jest prawdą } Warunkiem jaki dziś użyjemy jest warunek równa się, czyli będzie on sprawdzał czy obie dane są równe. Taki typ warunku oznacza się dwoma znakami równości. Kod z jego użyciem będzie wyglądać tak: client.on('message', msg => { if(msg.content == "!czas"){ console.log("Warunek został spełniony") } }); Log w konsoli zostanie wyświetlony tylko w przypadku gdy użytkownik napisze !czas. Teraz przyszedł czas na odpisywanie wiadomości przez bota. Zrobimy to w taki sposób: client.on('message', msg => { if(msg.content == "!czas"){ msg.reply("Wykonałeś polecenie") } }); Oto wynik tego kodu: Ostatnim elementem kodu będzie użycie specjalnej funkcji Data, dzięki której w łatwy sposób możemy pobrać godzine. (dokumentacje tej metody dla ciekawskich znajdziesz tutaj: https://developer.mozilla.org/pl/docs/Web/JavaScript/Referencje/Obiekty/Date/getTime) Kod z użyciem tej funkcji wygląda tak: client.on('message', msg => { if(msg.content == "!czas"){ const data = new Date; const godzina = data.getHours; const minuta = data.getMinutes; const sekunda = data.getSeconds; msg.reply(`aktualna godzina: ${godzina}:${minuta}:${sekunda}`); } }); Jak widać aby połączyć te 3 zmienne wraz z tekstem w jeden ciąg użyliśmy znaku ` - Grawis (ten ukośny apostrof znajdujący się na klawiaturze pod klawiszem ESC) - , a same zmienne zdefiniowaliśmy w nawiasach klamrowych poprzedzonych znakiem dolara tym sposobem stworzyliśmy Temple Stringi, w których możemy użyć jakiego chcemy sformułowania z JS i będzie on przekształcony w stringa, a następnie połączony z ciągiem znaków. Użycie tego kodu wygląda tak: To koniec na dzisiaj. Mam nadzieje, że dzisiejsza lekcja była łatwa do zrozumienia, a przyswojona dzisiaj wiedza zostanie w waszych umysłach na długo. Chciałbyś bym omówił coś dokładniej, albo masz inne zastarzenia co do dzisiejszej jak i wcześniejszej lekcji? Napisz to w komentarzu poniżej (Kolejna lekcja już w piątek!) Do zobaczenie o/
    1 punkt
  12. XaweryON

    Sprzedam konta GTAV

    Witam, sprzedam konta Gta V. Konta pochodzą z całkowicie legalnych źródeł. Konta z grą są na platformie epic games. Cena to 25zł i przyjmuje płatności w PayPal lub ewentualnie Skrill. Po zakupie będziesz miał dostęp do konta i do maila, na które jest zarejestrowane konto. Discord: ebersa#1807. Czas realizacji 12h po wpłacie (jesli będą jakieś zmiany, zostaniesz poinformowany). Jestem otwarty na propozycje, proszę pisać na dsc.
    0 punktów
  13. CoFFeIN04

    IP Dołączenia

    W wierszu poleceń pingujesz sobie poleceniem ping domena np. ping google.com
    0 punktów
Ten Ranking jest ustawiony na Warszawa/GMT+02:00
  • Najwięcej postów w tygodniu

    Fendi
    Fendi
    3 posty
    xSebixx1
    xSebixx1
    2 posty
    kinimod5021
    kinimod5021
    1 post
    bug128
    bug128
    1 post
    F3lip3za
    F3lip3za
    1 post
    Nieaktywny
    Nieaktywny
    1 post
    LusiaMC
    LusiaMC
    1 post
    Antychryst
    Antychryst
    1 post
    MICHALBEZSKINOW
    MICHALBEZSKINOW
    1 post
  • Najwięcej tematów w tygodniu

    bug128
    bug128
    1 temat
    Nieaktywny
    Nieaktywny
    1 temat
    LusiaMC
    LusiaMC
    1 temat
    Antychryst
    Antychryst
    1 temat
    MICHALBEZSKINOW
    MICHALBEZSKINOW
    1 temat
    artur9010
    artur9010
    1 temat
    0j_12
    0j_12
    1 temat
    xSebixx1
    xSebixx1
    1 temat
    karepas
    karepas
    1 temat
  • Aktywni użytkownicy

×
×
  • Dodaj nową pozycję...