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

[Pytanie] Skrypt.


Rekomendowane odpowiedzi

Opublikowano

Witam, napiszecie mi skrypt na osiągnięcia? Chodzi oto że jest komenda /os i przy jej pomocy otwiera się menu z itemami i pisze że zadanie wykonano i nie wykonano. Czyli jest to np "wykopany stone" jesli wykopales chociaz 1 stone to dostajesz osiągnięcie do tej komendy /os. Proszę o pomoc ;)

Opublikowano

Jezu, zależy ile osiągnięć chcesz, bo jak 10 to spoko, mogę napisać w ciągu 1/2h ale od 20 w górę to masa roboty, bo trzeba dodać zmienne (które lagują jak jest ich dużo) potem sprawdzać przy kopaniu czy jest osiągnięta wymagana liczba czy nadal nie

TEMAT


 


Opublikowano

Nie umiem tego napisać, ale znalazłem jeden, który może Ci się spodobać:

 

 

 

Nie plugin tylko skrypt...

 

Jezu, zależy ile osiągnięć chcesz, bo jak 10 to spoko, mogę napisać w ciągu 1/2h ale od 20 w górę to masa roboty, bo trzeba dodać zmienne (które lagują jak jest ich dużo) potem sprawdzać przy kopaniu czy jest osiągnięta wymagana liczba czy nadal nie

Potrzebuję tylko osiągnięcie że jak wykopiesz co najmniej 1 kamień to dostajesz osiągnięcie ;)

Opublikowano

takie osiągnięcia jak masz na mc.sk*f.net ? Za np wykopanie czegoś masz achivment z nagrodą?

No coś tego typu.

Opublikowano

variables:

    {kamien::%player%} = 0

on mine of stone:

    add 1 to {kamien::%player%}

    if {kamien::%player%} is bigger than or equal to 1:

        send "&2Zdobyles osiagniecie &7Kamienie"

        give a diamond to player

        stop

Takie coś przykładowo, ale jak gadam taki skrypt powyżej 20osiągnięć będzie lagował

TEMAT


 


Opublikowano

variables:

    {kamien::%player%} = 0

on mine of stone:

    add 1 to {kamien::%player%}

    if {kamien::%player%} is bigger than or equal to 1:

        send "&2Zdobyles osiagniecie &7Kamienie"

        give a diamond to player

        stop

Takie coś przykładowo, ale jak gadam taki skrypt powyżej 20osiągnięć będzie lagował

Ok a zrobisz mi jeszcze komende np. "/osiagniecia" i tam Ci pisze że np "Nie zrobiles" lub "Zrobiłes" kiedy wykopiesz ten kamień. Zrobisz tak?

Opublikowano

command /osiagniecia:

    trigger:

        if {kamien::%player%} is bigger than or equal to 1:

            send "&6Osiagniecie: &7Kamien &2%{kamien::%player%}%/1 &2&lWykonane"

        else:

            send "&6Osiagniecie: &7Kamien &c%{kamien::%player%}%/1"

 

 

Ok i kopiujesz i zmieniasz na swoje potrzeby, dałem warunek, jeżeli gracz wykopie kamień to ma napisane

Osiągnięcie: Kamień 1/1 Wykonane

 

Jeżeli nie wykopał ma:

Osiągnięcie: Kamień 0/1

TEMAT


 


Opublikowano

Tutaj łap kod
http://pastebin.com/hZeeaeZP

nie testowane lecz wydaje mi się że kod jest najbardziej optymalny i nie powinien lagowac serwera nawet przy dużej ilości zmiennych
jeśli potrzebujesz pomocy przy dalszym rozszeżeniu kodu napisz mi na PW chetnie pomoge

Opublikowano

@MilutuS nie powinien lagować ;-;

Lagowanie - słowo używane do okreslenia spadku Fps bądź Pingu w danym momencie ...

Takie wyjaśnienie jakbyś nie wiedział

 

every 1 seconds: co 1 sekunde odświeża wszystkie zmienne aby sprawdzić ich wartość, jeżeli będzie okoliczność że zmiennych będzie 200 a czytanie zajmie 3/4 sekundy w extremalnym wypadku to serwer się posypie po starcie odrazu

zastosowanie 2zmiennych, przez co zamiast 20 danym w exelu mamy ich 40 co dodatkowo wydłuża włączanie skryptu.

 

Jak dla mnie jest to 10x bardziej obciążający kod niż zwykłe sprawdzanie IF które i tak trzeba zastosować a dodałeś tylko zmienną dodatkowo

TEMAT


 


Opublikowano

Posłuchaj ...
Jeśli ma być 200 os na serwerze to maszyna spokojnie powinna dac rade jeśli będzie oczywiście do tego wykupiona .....
a co do odświeżania można je zmienić na 2-3 sec
myślę ze to nie zrobi dużej różnicy

 

 

Poza tym dziękuje za definicje "LAGOWANIA"

choć nie musiałeś mi jej przybliżać @pablos11

Opublikowano

nie obrażaj się, po prostu niezbyt znosze osoby które twierdzą że "ich skrypt" mniej laguje, zawadza od wersjiw której jest praktycznie sam alias do komend

event "every" jest najbardziej lagującym, odświaża cały plik excela za każdym razem.

 

Sprawdzanie czy gram ma wykopany X stone podczas jego kopania jest wydajniejsze z powodu iż gracz który kopie dirt nie zużywa skryptu i ma go wyłączony, więc jest o X% mniej danych do liczenia w 1sekundzie.

 

Poza tym dodawanie zmiennych jest nie najlepszym pomysłem, lepiej sprawdzić zmienną do liczby która istnieje cały czas bez zmian niż dodawać porównanie zmiennych, jeden else nie dodaje różnicy w kodzie lecz kolejny {zmienna::%player%} już tak ;)

 

Więc co do skryptu nie użyłbym go u siebie

TEMAT


 


Opublikowano

Dziękuję za odpowiedzi. Pomyślę nad zrobieniem skryptu na osiągnięcia i możliwe że go wam wstawię na MPCFORUM ;)

Opublikowano

Dlatego daj takie coś

variables:
    {osiagniecie::%player%} = 0
    {blokada::%player%} = false
on mine of stone:
    if {blokada::%player%} is false:
        add 1 to {osiagniecie::%player%}
        if {osiagniecie::%player%} is bigger than or equal to 10:
            broadcast "Gracz %player% odblokował osiągnięcie Kamieniołom"
            set {blokada::%player%} to true
        else:
            stop
     else:
          stop

Ale niestety tego typu skrypt niesie za sobą masę zmiennych, na 1 osiągnięcie przypadają 2 zmienne na 1 gracza

Czyli 10 graczy na 1 osiągnięcie zużyje 20zmiennych

A 10 graczy na 10 osiągnięć 200zmiennych

TEMAT


 


Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...