luk4sMC 10 Opublikowano 3 grudnia 2020 Udostępnij Opublikowano 3 grudnia 2020 (edytowane) Witam. Na wstępie dodam, że to mój obecnie pierwszy skrypt w tym języku i mógłbym go uprościć wykorzystując m.in funkcje, ale ze względu na to, że chcę uczyć programowania moje dzieciaki (8 i 5lat), to w takiej formie to zostawię... Działanie: - gamemode creative, gamemode c, gamemode 1 - gamemode creative player - gm c, gm 1 #dopisze kod - gma, gmc, gmsp, gms #dopisze kod Pytanie moje co uprościć i jak dodać losowe komunikaty -patrz koniec skryptu. options: #lista parametrów dla polecenia gamemode surv: "survival","s" or "0" creat: "creative", "c" or "1" adve: "adventure","a" or "2" spct: "spectator","sp" or "3" command /gm [<text>] [<player>]: aliases: gamemode trigger: if "%player's world%" is not "island_ocean": #osland_ocean, nazwa świata wygenerowana przez plugin MultiverceCore if arg 1 is not set: send "Użyj: gamemode <tryb gry> <nazwa gracza>" to player stop if arg 1 is {@surv}: if arg 2 isn't set: set player's gamemode to survival send "&cGracz: &6%player% aktywował tryb: &bPrzetrwania" to player else: #Zmiana trybu przez gracza bo dzieciakom wiecznie coś nie pasuje... execute console command "/gamemode survival %player%" send "&cGracz: &6%arg 2%! Zmieniono Twój tryb na: &bPrzetrwanie" if arg 1 is {@creat}: if arg 2 isn't set: set player's gamemode to creative send "&cGracz: &6%player% aktywował tryb: &bKreatywny" to player else: execute console command "/gamemode creative %player%" send "&cGracz: &6%arg 2%! Zmieniono Twój tryb na: &bKreatywny" if arg 1 is {@adve}: if arg 2 isn't set: set player's gamemode to adventure send "&cGracz: &6%player% aktywował tryb: &bPrzygoda" to player else: execute console command "/gamemode adve %player%" send "&cGracz: &6%arg 2%! Zmieniono Twój tryb na: &bPrzygoda" if arg 1 is {@spct}: if arg 2 isn't set: set player's gamemode to spectator send "&cGracz: &6%player% aktywował tryb: &bWidza" to player else: execute console command "/gamemode spectator %player%" send "&cGracz: &6%arg 2%! Zmieniono Twój tryb na: &bWidz" else: #Ze względu na to, że plugin: Multiverse-Core sam zmieni tryb gry, ponizszy kod można usunąc!!! if arg 1 is not set: send "Użyj: gamemode <tryb gry> <nazwa gracza>" to player stop if arg 1 is {@surv}: if arg 2 isn't set: set player's gamemode to survival send "&cGracz: &6%player% aktywował tryb: &bPrzetrwania" to player else: execute console command "/gamemode survival %player%" send "&cGracz: &6%arg 2%! Zmieniono Twój tryb na: &bPrzetrwanie #Kod odpowiedzialny za komunikaty: śmieszne, podpowiedzi jak grac itd. if arg 1 is not {@surv}: send "&6%player% nie oszukuj! Chwyć się łopaty i buduj schron. ZOMbie idą!!!" stop Edytowane 3 grudnia 2020 przez luk4sMC Usunięty#29721, Kormic, CoFFeIN04 i 2 innych 2 3 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kormic 1824 Opublikowano 3 grudnia 2020 Udostępnij Opublikowano 3 grudnia 2020 3 minuty temu, luk4sMC napisał: Pytanie moje co uprościć i jak dodać losowe komunikaty -patrz koniec skryptu. Co do upraszczania skryptu, nie widzę wielu możliwości. Kod wygląda w miarę przystępnie, a skoro ojciec będzie tłumaczył dziecakiom skrypt na biężąco, nie widzę problemu. Mimo wszystko 'stop' w ostatniej linijce nie jest potrzebne, gdyż w tym miejscu zatrzymywanie skryptu nie ma sensu. Natomiast jeżeli mowa o losowych wiadomościach, można to zrobić na dwa sposoby: 1. Utworzenie listy z różnymi wiadomościami oraz wyciąganie z niej losowego elementu. set {_lista::*} to "Wiadomość nr 1" and "Wiadomość nr 2" and "Wiadomość nr 3" send "%random element out of {_lista::*}%" 2. Ustawianie zmiennej do losowej liczby i tworzenie szeregu conditionali. set {_losowaLiczba} to random integer between 1 and 3 if {_losowaLiczba} is 1: send "Wiadomość nr 1" else if {_losowaLiczba} is 2: send "Wiadomość nr 2" else if {_losowaLiczba} is 3: send "Wiadomość nr 3" Dodam, że uważam, iż nauka dzieciaków programowania to dobra decyzja i wkład w ich przyszłość ze strony ojca. Technologia w naszym życiu jest coraz ważniejsza, a programowanie oraz umiejętność logicznego myślenia z pewnością im się przyda. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Glicz 241 Opublikowano 3 grudnia 2020 Udostępnij Opublikowano 3 grudnia 2020 Skrypt ładnie napisany, lecz przydało by się zamienić tego execute'a na set gamemode of player to Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
luk4sMC 10 Opublikowano 3 grudnia 2020 Autor Udostępnij Opublikowano 3 grudnia 2020 3 godziny temu, Michix napisał: Skrypt ładnie napisany, lecz przydało by się zamienić tego execute'a na set gamemode of player to Przyznam, że nie potrafię tego poprawnie podstawić...dostaje różne komunikaty Nauczony jestem w BASH'u podstawiać cokolwiek przez np. mechanizm podstawiania poleceń. #Mechanizmy podstawiania $() lub `` #Przypisanie listy plików 8.dat zmiennej x x=$(ls *.dat) #Usunięcie plików z rozszerzeniem *.dat rm $(ls *.dat) rm $x Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kormic 1824 Opublikowano 3 grudnia 2020 Udostępnij Opublikowano 3 grudnia 2020 3 minuty temu, luk4sMC napisał: Przyznam, że nie potrafię tego poprawnie podstawić...dostaje różne komunikaty Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść! Powinno pomóc. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
luk4sMC 10 Opublikowano 3 grudnia 2020 Autor Udostępnij Opublikowano 3 grudnia 2020 (edytowane) command /gms [<player>]: trigger: if "%player's world%" is not "swiat_survival": #Przetrwanie - Survival if arg 1 is not set: set player's gamemode to survival send "&cGracz: &6%player% aktywował tryb: &bPrzetrwanie" to player else: set gamemode of {player} to survival send "&cGracz: &6%player%! Zmieniono Twój tryb na: &bPrzetrwanie" #Ten tryb jest domyśłnym trybem świata_survival, więc użycie /gms nic nie zmieni / else nie jest potrzebne... Ja kudłaty, durnowaty, nie wiedziałem... że deletem usuwa się kod Edytowane 3 grudnia 2020 przez luk4sMC Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kormic 1824 Opublikowano 3 grudnia 2020 Udostępnij Opublikowano 3 grudnia 2020 35 minut temu, luk4sMC napisał: Ja kudłaty, durnowaty, nie wiedziałem... że deletem usuwa się kod Rozumiem, że ta komenda ma ustawiać tryb gry danemu graczowi, tak? Dodatkowo, jeżeli gracz nie został podany, to wykonawcy komendy ma zostać zmieniony tryb gry, mam rację? Jeżeli odpowiedzi na dwa powyższe pytania są twierdzące, w takim razie mam kilka zastrzeżeń. Przepraszam za formę "na ty", ale tak będzie mi znacznie łatwiej. 1. Niepotrzebnie zamieniasz 'player's world' na tekst. if player's world is "swiat_survival": 2. Gdy odnosimy się do danego argumentu komendy (w tym przypadku jest to argument 1 typu 'player'), używamy wyrażenia arg-[numer argumentu] (może być również argument-x, myślnik jest opcjonalny, zamiast niego może być spacja), czyli to będzie arg-1. Przechowuje on informację o graczu podanym jako argument komendy. W linijce 11. użyłeś zmiennej {player}, myślę, że miałeś na myśli odniesienie do argumentu nr 1. Dlatego też zamiast '{player}', powinno się tam znaleźć 'arg-1'. 3. W linijce nr 12 wydaje mi się, że wiadomość powinna zostać wysłana do gracza podanego jako argument nr 1. Jeżeli mam rację, w takim wypadku należy dodać za wiadomością adresata, czyli 'to arg 1'. CoFFeIN04 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
luk4sMC 10 Opublikowano 3 grudnia 2020 Autor Udostępnij Opublikowano 3 grudnia 2020 (edytowane) Zanim odpowiem, to muszę dodać, że pracuje, gram i zarządzam serwerem na Linuksie. Moje pierwsze kroki w Skript to był brak podstawowego narzędzia jakim jest "zdefiniowanie języka" , kolorowanie składni itd. Obecnie korzystam Notepad++ Kończąc dodam, że na początki nie dawałem rady z prostymi skryptami przez to złe podejście. Potem poszedłem drogą "poszukiwanie rozwiązań nurtujących problemów" szukając wszystkiego co działa w google command /gms [<player>]: #<- jezeli nie ma argumentu, gamemode wykonuje się dla tego, który go użyl trigger: if "%player's world%" is not "swiat_survival": #<- jezeli swiat != survival, pelny dostep do gm, glowny swiat to creative #Przetrwanie - Survival if arg 1 is not set: #<- brak argumentu to inaczej /gms czyli: gamemode wykonuje się dla tego, który go użyl set player's gamemode to survival send "&cGracz: &6%player% aktywował tryb: &bPrzetrwanie" to player else: #<- jezeli jest argument, to albo gamemode wykonuje się dla tego, który go użyl, albo dla drugiego, eskazanego gracza set gamemode of {player} to survival send "&cGracz: &6%player%! Zmieniono Twój tryb na: &bPrzetrwanie" #Ten tryb jest domyśłnym trybem świata_survival, więc użycie /gms nic nie zmieni / else nie jest potrzebne... czyli to będzie arg-1 Spotkałem się z tym o czym piszesz błąkając się po google. Niestety "każdy sobie" i potem skutkiem tego jest "czemu nie działa?" Sprawdzę zmiany i napisze... Mam 37 lat, czuje się na 25... luz xD Edytowane 3 grudnia 2020 przez luk4sMC Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
CoFFeIN04 618 Opublikowano 3 grudnia 2020 Udostępnij Opublikowano 3 grudnia 2020 (edytowane) Masz dobry nawyk komentowania kodu, to dosyć ważne w poważniejszych produkcjach (nie w Skripcie)... edit, bo się spłakaliście: chodzi o pracę w zespole, gdzie trudno by było zrozumieć kod innemu pracownikowi bez prostych adnotacji Edytowane 4 grudnia 2020 przez CoFFeIN04 Usunięty#34161, Pablososek, PanMaruda i 4 innych 7 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kormic 1824 Opublikowano 3 grudnia 2020 Udostępnij Opublikowano 3 grudnia 2020 (edytowane) 4 minuty temu, CoFFeIN04 napisał: Masz dobry nawyk komentowania kodu, to dosyć ważne w poważniejszych produkcjach (nie w Skripcie)... Komentarze nie są żadnym dobrym ani złym nawykiem. Przydają się jedynie do przypominania programiście do czego służy dany fragment kodu. Należy jedynie uważać na to, aby z nimi nie przesadzać oraz aby nie zajmowały więcej miejsca niż sam kod. EDIT: Nie dawaj mi kappy za kappę, bo to jest żałosne... Edytowane 3 grudnia 2020 przez Kormic CoFFeIN04 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
luk4sMC 10 Opublikowano 3 grudnia 2020 Autor Udostępnij Opublikowano 3 grudnia 2020 (edytowane) Cytat Masz dobry nawyk komentowania kodu, to dosyć ważne w poważniejszych produkcjach (nie w Skripcie)... Szczerze, to komentarze zawsze mnie irytowały -zaśmiecały kod. To jest to złe podejście o którym pisałem wyżej. Zawsze używałem prostego edytora: Gedit, Kate z podstawowym kolorowaniem składni. Dopiero Skript nauczył mnie jak duże ma to znaczenie dla np. odbioru, pracy z projektem. PS. Dodam, że dawanie komuś /gamemode jest bardzo ważne, ponieważ wile dzieciaków w wieku 9 lat nie potrafią się nawet zalogować do serwera. Długo by pisać, a tego nie chce (nie chcę zaśmiecać forum) Edytowane 3 grudnia 2020 przez luk4sMC Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
CoFFeIN04 618 Opublikowano 3 grudnia 2020 Udostępnij Opublikowano 3 grudnia 2020 1 minutę temu, Kormic napisał: Komentarze nie są żadnym dobrym ani złym nawykiem. Przydają się jedynie do przypominania programiście do czego służy dany fragment kodu. Należy jedynie uważać na to, aby z nimi nie przesadzać oraz aby nie zajmowały więcej miejsca niż sam kod. Nie mówię o amatorskich pracach w Skrypcie, tylko o pracy przy poważnym projekcie w zespole Usunięty#29721, Kormic, Glicz i 3 innych 4 2 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kormic 1824 Opublikowano 3 grudnia 2020 Udostępnij Opublikowano 3 grudnia 2020 Teraz, CoFFeIN04 napisał: Nie mówię o amatorskich pracach w Skrypcie, tylko o pracy przy poważnym projekcie w zespole Z całym szacunkiem, ale co ty możesz wiedzieć o pracy przy poważnym projekcie... Wiesz ile jest na tym forum pięknych skryptów, nad którymi ludzie siedzieli tygodniami, aby je dopracować? Mam wrażenie, że nie wiesz. Tym komentarzem naplułeś w twarz twórcom tych skryptów. CoFFeIN04, Usunięty#29721, PanMaruda i 1 inny 1 2 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
CoFFeIN04 618 Opublikowano 3 grudnia 2020 Udostępnij Opublikowano 3 grudnia 2020 5 minut temu, Kormic napisał: Z całym szacunkiem, ale co ty możesz wiedzieć o pracy przy poważnym projekcie... Wiesz ile jest na tym forum pięknych skryptów, nad którymi ludzie siedzieli tygodniami, aby je dopracować? Mam wrażenie, że nie wiesz. Tym komentarzem naplułeś w twarz twórcom tych skryptów. super, powiedziałeś, że komentarze nie są dobrym nawykiem a jeśli ktoś inny będzie miał po tobie przejąć projekt to nie będzie nic wiedział co i jak i wyjdzie jak z Source z csgo Tymekd 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
luk4sMC 10 Opublikowano 3 grudnia 2020 Autor Udostępnij Opublikowano 3 grudnia 2020 Cytat Wiesz ile jest na tym forum pięknych skryptów, nad którymi ludzie siedzieli tygodniami, aby je dopracować? Mam wrażenie, że nie wiesz. Tym komentarzem naplułeś w twarz twórcom tych skryptów. Nie ma co się denerwować bo to do niczego dobrego nie prowadzi. W życiu trzeba doświadczać, ponieważ tylko wtedy zmienia się postrzeganie czegoś. Dziś myślisz, że Twój projekt jest dobry, a po wielu latach zdajesz sobie sprawę, że można było to zrobić lepiej i inaczej... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kormic 1824 Opublikowano 3 grudnia 2020 Udostępnij Opublikowano 3 grudnia 2020 (edytowane) 13 minut temu, CoFFeIN04 napisał: super, powiedziałeś, że komentarze nie są dobrym nawykiem a jeśli ktoś inny będzie miał po tobie przejąć projekt to nie będzie nic wiedział co i jak i wyjdzie jak z Source z csgo Napisałem, że nie są ani dobrym, ani złym nawykiem. 28 minut temu, Kormic napisał: Przydają się jedynie do przypominania programiście do czego służy dany fragment kodu. Czytaj proszę ze zrozumieniem i skończ ten spam reakcjami.. 10 minut temu, luk4sMC napisał: Nie ma co się denerwować bo to do niczego dobrego nie prowadzi. W życiu trzeba doświadczać, ponieważ tylko wtedy zmienia się postrzeganie czegoś. Dziś myślisz, że Twój projekt jest dobry, a po wielu latach zdajesz sobie sprawę, że można było to zrobić lepiej i inaczej... Zdenerwowało mnie to w jaki sposób myśli o pracy innych. Mówię o projektach niezwykle dobrych, tych, które zdobyły serca wielu użytkowników. Przychodzi nagle jakiś pierwszy, lepszy gość i wrzuca wszystko do jednego wora tylko ze względu na to, że jest napisane w Skript'cie. EDIT: Nie zamierzam już kontynuować dyskusji w tym wątku, przepraszam @luk4sMC za kłopot i syf w wątku. Zdaję sobie sprawę z tego, że nie jest to dla ciebie mile widziane. Edytowane 3 grudnia 2020 przez Kormic CoFFeIN04 i PanMaruda 1 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
CoFFeIN04 618 Opublikowano 4 grudnia 2020 Udostępnij Opublikowano 4 grudnia 2020 36 minut temu, Kormic napisał: Czytaj proszę ze zrozumieniem i skończ ten spam reakcjami.. 40 minut temu, luk4sMC napisał: sam zacząłeś mi spamić xD 37 minut temu, Kormic napisał: Zdenerwowało mnie to w jaki sposób myśli o pracy innych. Mówię o projektach niezwykle dobrych, tych, które zdobyły serca wielu użytkowników. Przychodzi nagle jakiś pierwszy, lepszy gość i wrzuca wszystko do jednego wora tylko ze względu na to, że jest napisane w Skript'cie. no ale nie mam żadnego problemu do tego, że coś jest napisane w Skrypcie, chodzi mi jedynie o to, że nikt ci nie zapłaci za pisanie skryptów i się z tego nie utrzymasz PanMaruda, Pablososek, Usunięty#29721 i 3 innych 6 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Glicz 241 Opublikowano 4 grudnia 2020 Udostępnij Opublikowano 4 grudnia 2020 7 godzin temu, luk4sMC napisał: Moje pierwsze kroki w Skript to był brak podstawowego narzędzia jakim jest "zdefiniowanie języka" , kolorowanie składni itd. Jeżeli chcesz kolorowanie składni to zapraszam cię do mojego programu SkEditor (link w sygnaturze), planuje niedługo Big Update, w nim podświetlanie składni zostanie dokończone. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
luk4sMC 10 Opublikowano 4 grudnia 2020 Autor Udostępnij Opublikowano 4 grudnia 2020 (edytowane) Cytat tylko ze względu na to, że jest napisane w Skript'cie. Jest takie fajnie powiedzenie, że jeżeli coś jest głupie, a działa, to nie jest to głupie Dobrym przykładem jest twórca MC, który wykorzystał do tego java tylko dlatego, że najlepiej znał to środowisko i czuł się w nim najpewniej. Poprawcie mnie jeżeli palnąłem coś głupiego, ale gdzieś o tym czytałem. Ja sam pisałem dużo skryptów w BASHu, ale to tylko dlatego, że trafiłem na naprawdę dobrą książkę, dlatego że skrypty można łatwo integrować z GUI no i najważniejsze tj. "od terminala linuksowego do programowania jest krótka droga". Dlatego tu jestem bo "od czatu w MC do programowania jest krótka droga" o czym dzieciaki zapewne jeszcze nie wiedzą. I dodam na koniec jeszcze, że tak, skrypty nie są tak wydajne jak programy napisane w innych językach...nawet te napisane wręcz wzorowo, ale są i dobrze... Cytat Jeżeli chcesz kolorowanie składni to zapraszam cię do mojego programu SkEditor Sprawdzę Obecnie używam Notepad++ Edytowane 4 grudnia 2020 przez luk4sMC Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PanMaruda 616 Opublikowano 4 grudnia 2020 Udostępnij Opublikowano 4 grudnia 2020 command /gma [<player>]: trigger: #świat gracza można od razu przyrównać z tekstem - nie trzeba go dodatkowo parsować na tekst (wpisywać w cudzysłów i procenty) #jeżeli tobie będzie łatwiej to spokojnie możesz tworzyć przeczenie poprzez dodanie wykrzyknika # + taka moja osobista rada - unikaj apostrofów - one nic nie zmieniają ale dla mnie jakoś dziwnie wyglądają w kodzie if world of player != "island_ocean": #jeżeli zdefiniowałeś tylko jeden argument w komendzie to nie trzeba go numerować (ale jak najbardziej można) if arg is not set: #komenda może być również wykonana przez konsolę - jednak konsola nie może mieć zmienionego trybu gry #warto dodać warunek, który to sprawdzi żeby w razie czego nie było opcji gdzie wpadnie nam null #sender w tym przypadku może zwrócić gracza lub konsolę #player zwróci tylko gracza - gdy konsola wykona komendę to player zwróci null if sender != console: #tutaj ponownie ten apostrof set gamamode of player to adventure #jeżeli chcesz wysłać wiadomość do wykonującego komendę, to akurat nie musisz podawać go jako odbiorcy #plugin sam go sobie dopełni - niezależnie czy sender to będzie gracz czy konsola send "&cGracz: &6%player% aktywował tryb: &bPrzygoda" #opcjonalna wiadomość dla wysyłającego że jest konsolą: else: send "Nie możesz zmienić swojego trybu gry bo jesteś konsolą." else: #jeżeli odnosimy się do argumentu to nie potrzeba żadnych dodatkowych nawiasów, cudzysłowów itp. #opcjonalnie procenty gdy parsujemy argument na tekst #w klamrach - tak jak ty zrobiłeś - zapisuje się zmienne set gamemode of arg to survival send "&cGracz: &6%arg%! Zmieniono Twój tryb na: &bPrzygoda" Kormic 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi