İstek Chat Tabanlı Gelişmiş Meslek Skripti Yapabilecek Var mı?

ceyiz123

Ağaç Yumruklayıcı
En iyi cevaplar
0
"Selamlar değerli Gamerr topluluğu,

Aslında bu konuyu biraz utanarak açıyorum. Son zamanlarda forumda çok fazla Skript isteğinde bulunduğumu ve sizleri biraz yorduğumu biliyorum, bunun için kusura bakmayın. Kendi başıma halletmeye çalışsam da bazı noktalarda gerçekten tıkandım ve sizlerin tecrübesine ihtiyacım var.

Kendi projem olan MetaMedas için tamamen chat üzerinden çalışan bir meslek sistemine ihtiyacım var. Aşağıdaki özellikleri kapsayan bir Skript hazırlayabilecek bir hayırsever çıkar mı?

️ İstediğim Özellikler:
Meslekler: /mesleksec ile Oduncu, Madenci, Savaşçı, Çiftçi veya Balıkçı seçilebilmeli.

Seviye sistemi: Max 100 seviye olmalı. Seviye atladıkça kazanılan para artmalı.

Ekonomi: Essentials/Vault ile uyumlu olmalı. Level atlamak için para harcanmalı.

Görünüm: ile seviye ve para durumu chatten görülmeli. Kazanç bildirimleri chat kirliliği yapmaması için Action Bar (ekranın altı) kısmında çıkmalı./meslekpanel

Sıfırlama: veya ayrıl komutuyla meslek bırakılabilmeli./mesleksil

Sürekli yardım istediğim için tekrar özür dilerim, öğrenmeye ve projemi geliştirmeye çalışıyorum. Eğer yardımcı olabilecek veya elinde buna benzer hazır bir taslak olan varsa paylaşırsa çok mutlu olurum.

Destekleriniz için şimdiden çok teşekkürler, iyi forumlar!"
 

na2000

Altın Madencisi
En iyi cevaplar
56
Kod:
options:
    p: &eMeslek &6&l> #Prefix

command /meslek [<text>] [<text>]:
    aliases: mslk, job, jobs, meslk
    trigger:
        if arg 1 is "sec" or "choose" or "seç":
            if {job::%player%::type} is set:
                send "{@p} &cZaten bir mesleginiz var! &7Mesleginizden ayrilmak icin: &o/meslek ayril"
                stop
            if arg 2 is "madenci" or "maden":
                send "{@p} &3Madenci &fmeslegini sectiniz!"
                set {job::%player%::type} to "madenci"
                set {job::%player%::level} to 1
            else:
                send "{@p} &cBoyle bir meslek yok!"
        else if arg 1 is "ayril" or "sil" or "ayrıl":
            send "{@p} &fMesleginizden ayrildiniz!"
            delete {job::%player%::*}
        else if arg 1 is "level" or "seviye" or "rankup" or "rank":
            if {job::%player%::level} = 100:
                send "{@p} &cZaten maksimum seviyedesin!"
                stop
            if player's balance >= 50*({job::%player%::level}^2):
                remove 50*({job::%player%::level}^2) from player's balance
                add 1 to {job::%player%::level}
                send "{@p} &fMesleginiz artik &9%{job::%player%::level}% &fseviye!"
            else:
                send "{@p} &cBakiyeniz yetersiz! Gerekli: %50*({job::%player%::level}^2)%$"
        else if arg 1 is "panel" or "profil" or "profile" or "status" or "stats":
            send "&8&l| &7Mesleginiz: &3%{job::%player%::type} ? "&cYok"%%nl%&8&l| &7Meslek Seviyeniz: &d%{job::%player%::level} ? "&c-"%%nl%&8&l| &7Bakiyeniz: &b%player's balance%$"
        else if arg 1 is "help" or "yardim" or "yrdm":
            send "" and "&6&l< &eKomutlar &6&l>" and "&6- &e/meslek sec &6<meslek> &8-> &7Mesleginizi secer.%nl%&6- &e/meslek ayril &8-> &7Mesleginizden ayrilirsiniz.%nl%&6- &e/meslek panel &8-> &7Meslek istatistiklerinizi goruntuler.%nl%&6- &e/meslek seviye &8-> &7Para karsiliginda meslek seviyenizi arttirir."
        else:
            execute player command "meslek help"

on mine:
    {job::%player%::type} is "madenci"
    if event-block is a coal ore:
        set {_m} to 1
    if event-block is a iron ore:
        set {_m} to 3
    if event-block is a gold ore:
        set {_m} to 5
    if event-block is a diamond ore:
        set {_m} to 10
    {_m} is set
    set {_m} to {_m}*({job::%player%::level}+9)/10
    add {_m} to player's balance
    set {_b} to "%type of event-block%" in strict proper case
    send actionbar "&6%{_b}% &fkirarak &e%{_m}%$ &fkazandiniz"
Sadece "madenci" meslegi olan basit bir tane yaptim, istedigin sekilde duzenlersin. Seviye atlama olayinin nasil olacagini tam aciklamamissin, /meslek seviye komudu ekledim para karsiligi meslek seviyesini arttirmak icin. (Gerekli miktar seviye arttikca artiyor, 50 * seviye^2 seklinde hesapliyor, istedigin sekilde degisirsin.)

Ayrica ayri ayri bir suru if ile ne icin ne kadar para verecegini ayarlamak yerine yaml tarzi bir sey uzerine kaydedip sadece gerekli degeri cektirmeni oneririm.

Umarim yardimci olabilmisimdir ^^
(Skript ogrenmeye merakliysan discord uzerinden ekleyebilirsin, seve seve yardimci olurum: lil.sosig)
 

ceyiz123

Ağaç Yumruklayıcı
En iyi cevaplar
0
Kod:
options:
    p: &eMeslek &6&l> #Prefix

command /meslek [<text>] [<text>]:
    aliases: mslk, job, jobs, meslk
    trigger:
        if arg 1 is "sec" or "choose" or "seç":
            if {job::%player%::type} is set:
                send "{@p} &cZaten bir mesleginiz var! &7Mesleginizden ayrilmak icin: &o/meslek ayril"
                stop
            if arg 2 is "madenci" or "maden":
                send "{@p} &3Madenci &fmeslegini sectiniz!"
                set {job::%player%::type} to "madenci"
                set {job::%player%::level} to 1
            else:
                send "{@p} &cBoyle bir meslek yok!"
        else if arg 1 is "ayril" or "sil" or "ayrıl":
            send "{@p} &fMesleginizden ayrildiniz!"
            delete {job::%player%::*}
        else if arg 1 is "level" or "seviye" or "rankup" or "rank":
            if {job::%player%::level} = 100:
                send "{@p} &cZaten maksimum seviyedesin!"
                stop
            if player's balance >= 50*({job::%player%::level}^2):
                remove 50*({job::%player%::level}^2) from player's balance
                add 1 to {job::%player%::level}
                send "{@p} &fMesleginiz artik &9%{job::%player%::level}% &fseviye!"
            else:
                send "{@p} &cBakiyeniz yetersiz! Gerekli: %50*({job::%player%::level}^2)%$"
        else if arg 1 is "panel" or "profil" or "profile" or "status" or "stats":
            send "&8&l| &7Mesleginiz: &3%{job::%player%::type} ? "&cYok"%%nl%&8&l| &7Meslek Seviyeniz: &d%{job::%player%::level} ? "&c-"%%nl%&8&l| &7Bakiyeniz: &b%player's balance%$"
        else if arg 1 is "help" or "yardim" or "yrdm":
            send "" and "&6&l< &eKomutlar &6&l>" and "&6- &e/meslek sec &6<meslek> &8-> &7Mesleginizi secer.%nl%&6- &e/meslek ayril &8-> &7Mesleginizden ayrilirsiniz.%nl%&6- &e/meslek panel &8-> &7Meslek istatistiklerinizi goruntuler.%nl%&6- &e/meslek seviye &8-> &7Para karsiliginda meslek seviyenizi arttirir."
        else:
            execute player command "meslek help"

on mine:
    {job::%player%::type} is "madenci"
    if event-block is a coal ore:
        set {_m} to 1
    if event-block is a iron ore:
        set {_m} to 3
    if event-block is a gold ore:
        set {_m} to 5
    if event-block is a diamond ore:
        set {_m} to 10
    {_m} is set
    set {_m} to {_m}*({job::%player%::level}+9)/10
    add {_m} to player's balance
    set {_b} to "%type of event-block%" in strict proper case
    send actionbar "&6%{_b}% &fkirarak &e%{_m}%$ &fkazandiniz"
Sadece "madenci" meslegi olan basit bir tane yaptim, istedigin sekilde duzenlersin. Seviye atlama olayinin nasil olacagini tam aciklamamissin, /meslek seviye komudu ekledim para karsiligi meslek seviyesini arttirmak icin. (Gerekli miktar seviye arttikca artiyor, 50 * seviye^2 seklinde hesapliyor, istedigin sekilde degisirsin.)

Ayrica ayri ayri bir suru if ile ne icin ne kadar para verecegini ayarlamak yerine yaml tarzi bir sey uzerine kaydedip sadece gerekli degeri cektirmeni oneririm.

Umarim yardimci olabilmisimdir ^^
(Skript ogrenmeye merakliysan discord uzerinden ekleyebilirsin, seve seve yardimci olurum: lil.sosig)
çok teşekkürler discordan ulaşmaya çalışırım
 

na2000

Altın Madencisi
En iyi cevaplar
56
birsey sorucam bu madenciye oduncu vb meslekleri eklesem bozulmaz degilmi
Secim kismina eklemeyi soruyorsan else if kullanarak istedigin kadar ekleyebilirsin madencinin altina.

Ornek:
Kod:
            if arg 2 is "madenci" or "maden":
                send "{@p} &3Madenci &fmeslegini sectiniz!"
                set {job::%player%::type} to "madenci"
                set {job::%player%::level} to 1
            else if arg 2 is "oduncu":
                send "{@p} &3Oduncu &fmeslegini sectiniz!"
                set {job::%player%::type} to "oduncu"
                set {job::%player%::level} to 1             
            else:
                send "{@p} &cBoyle bir meslek yok!"

Eger eventi kastediyorsan ayri bir event olusturabilirsin aynisni kopyalayarak ve oduncu icin duzenleyerek. Veya ayni event icinde if ile ayirabilirsin her bir meslek icin.

Ornek (Ayni event icinde yapmak istiyorsan):
Kod:
on mine:
    if {job::%player%::type} is "madenci":
        if event-block is a coal ore:
            set {_m} to 1
        if event-block is a iron ore:
            set {_m} to 3
        if event-block is a gold ore:
            set {_m} to 5
        if event-block is a diamond ore:
            set {_m} to 10
        {_m} is set
        set {_m} to {_m}*({job::%player%::level}+9)/10
        add {_m} to player's balance
        set {_b} to "%type of event-block%" in strict proper case
        send actionbar "&6%{_b}% &fkirarak &e%{_m}%$ &fkazandiniz"
    if {job::%player%::type} is "oduncu":
        if event-block is a oak log:
            set {_m} to 1
        {_m} is set
        set {_m} to {_m}*({job::%player%::level}+24)/25
        add {_m} to player's balance
        set {_b} to "%type of event-block%" in strict proper case
        send actionbar "&6%{_b}% &fkirarak &e%{_m}%$ &fkazandiniz"
 

ceyiz123

Ağaç Yumruklayıcı
En iyi cevaplar
0
sey yeni oldugum için hatalıysa kusura bakmayın ama bildiğim kadarıyla bu ipeksi ile kazılınca çalışmaz ne ekleyebilirim sizce?
 

ceyiz123

Ağaç Yumruklayıcı
En iyi cevaplar
0
bu olmazmı



Kod:
# --- Yanlış Varmı ---
on place:
    if event-block is any ore or any log:
        set {placed::%location of event-block%} to true

on break:
    if {placed::%location of event-block%} is set:
        delete {placed::%location of event-block%}
        stop 

    {job::%player%::type} is set
    set {_lvl} to {job::%player%::level}
    
    # --- MADENCİ ---
    if {job::%player%::type} is "madenci":
        if event-block is coal ore or deepslate coal ore:
            set {_m} to 10
        else if event-block is iron ore or deepslate iron ore:
            set {_m} to 30
        else if event-block is gold ore or deepslate gold ore:
            set {_m} to 50
        else if event-block is diamond ore or deepslate diamond ore:
            set {_m} to 100
            
        if {_m} is set:
            set {_kazanc} to {_m} + ({_lvl} * 50)
            add {_kazanc} to player's balance
            send actionbar "&6Madenci &f(Seviye %{_lvl}%) | &e%{_kazanc}%$ &fkazandınız." to player

    # --- ODUNCU ---
    else if {job::%player%::type} is "oduncu":
        if event-block is any log:
            set {_kazanc} to 20 + ({_lvl} * 50)
            add {_kazanc} to player's balance
            send actionbar "&6Oduncu &f(Seviye %{_lvl}%) | &e%{_kazanc}%$ &fkazandınız." to player

# --- BALIKÇI ---
on fish:
    {job::%player%::type} is "balıkçı"
    if fishing state is caught fish:
        set {_lvl} to {job::%player%::level}
        set {_kazanc} to 100 + ({_lvl} * 50)
        add {_kazanc} to player's balance
        send actionbar "&bBalıkçı &f(Seviye %{_lvl}%) | &e%{_kazanc}%$ &fkazandınız." to player

# --- SAVAŞÇI ---
on death of player:
    attacker is a player
    {job::%attacker%::type} is "savaşçı"
    set {_lvl} to {job::%attacker%::level}
    set {_kazanc} to 500 + ({_lvl} * 50)
    add {_kazanc} to attacker's balance
    send actionbar "&cSavaşçı &f(Seviye %{_lvl}%) | &e%{_kazanc}%$ &fkazandınız!" to attacker

# --- KOMUTLAR VE 100 SEVİYE SINIRI ---
command /meslek [<text>] [<text>]:
    trigger:
        if arg 1 is "seviye":
            if {job::%player%::type} is not set:
                send "&cÖnce meslek seçin!" to player
                stop
            
            # Seviye 100 kontrolü
            if {job::%player%::level} >= 100:
                send "&6Tebrikler! Mesleğinizde maksimum seviye olan &e100&6'e ulaştınız!" to player
                stop

            set {job::%player%::level} to 0 if {job::%player%::level} is not set
            set {_ucret} to {job::%player%::level} * 1500 + 1500
            
            if player's balance >= {_ucret}:
                remove {_ucret} from player's balance
                add 1 to {job::%player%::level}
                send "&aSeviye Atladın! Yeni Seviye: &e%{job::%player%::level}%/100" to player
            else:
                send "&cPara yetersiz! Gereken: &e%{_ucret}%$" to player

        if arg 1 is "sec":
            if arg 2 is "madenci" or "oduncu" or "balıkçı" or "savaşçı":
                set {job::%player%::type} to arg 2
                set {job::%player%::level} to 0
                send "&aMeslek seçildi: &e%arg 2% &7(Seviye 0)" to player
            else:
                send "&cMeslekler: madenci, oduncu, balıkçı, savaşçı" to player
 
Son düzenleme:

na2000

Altın Madencisi
En iyi cevaplar
56
Yanlislikla iki tane gondermisim bu mesaji gormezden gel -,-
 

na2000

Altın Madencisi
En iyi cevaplar
56
bu olmazmı



Kod:
# --- Yanlış Varmı ---
on place:
    if event-block is any ore or any log:
        set {placed::%location of event-block%} to true

on break:
    if {placed::%location of event-block%} is set:
        delete {placed::%location of event-block%}
        stop

    {job::%player%::type} is set
    set {_lvl} to {job::%player%::level}
 
    # --- MADENCİ ---
    if {job::%player%::type} is "madenci":
        if event-block is coal ore or deepslate coal ore:
            set {_m} to 10
        else if event-block is iron ore or deepslate iron ore:
            set {_m} to 30
        else if event-block is gold ore or deepslate gold ore:
            set {_m} to 50
        else if event-block is diamond ore or deepslate diamond ore:
            set {_m} to 100
         
        if {_m} is set:
            set {_kazanc} to {_m} + ({_lvl} * 50)
            add {_kazanc} to player's balance
            send actionbar "&6Madenci &f(Seviye %{_lvl}%) | &e%{_kazanc}%$ &fkazandınız." to player

    # --- ODUNCU ---
    else if {job::%player%::type} is "oduncu":
        if event-block is any log:
            set {_kazanc} to 20 + ({_lvl} * 50)
            add {_kazanc} to player's balance
            send actionbar "&6Oduncu &f(Seviye %{_lvl}%) | &e%{_kazanc}%$ &fkazandınız." to player

# --- BALIKÇI ---
on fish:
    {job::%player%::type} is "balıkçı"
    if fishing state is caught fish:
        set {_lvl} to {job::%player%::level}
        set {_kazanc} to 100 + ({_lvl} * 50)
        add {_kazanc} to player's balance
        send actionbar "&bBalıkçı &f(Seviye %{_lvl}%) | &e%{_kazanc}%$ &fkazandınız." to player

# --- SAVAŞÇI ---
on death of player:
    attacker is a player
    {job::%attacker%::type} is "savaşçı"
    set {_lvl} to {job::%attacker%::level}
    set {_kazanc} to 500 + ({_lvl} * 50)
    add {_kazanc} to attacker's balance
    send actionbar "&cSavaşçı &f(Seviye %{_lvl}%) | &e%{_kazanc}%$ &fkazandınız!" to attacker

# --- KOMUTLAR VE 100 SEVİYE SINIRI ---
command /meslek [<text>] [<text>]:
    trigger:
        if arg 1 is "seviye":
            if {job::%player%::type} is not set:
                send "&cÖnce meslek seçin!" to player
                stop
         
            # Seviye 100 kontrolü
            if {job::%player%::level} >= 100:
                send "&6Tebrikler! Mesleğinizde maksimum seviye olan &e100&6'e ulaştınız!" to player
                stop

            set {job::%player%::level} to 0 if {job::%player%::level} is not set
            set {_ucret} to {job::%player%::level} * 1500 + 1500
         
            if player's balance >= {_ucret}:
                remove {_ucret} from player's balance
                add 1 to {job::%player%::level}
                send "&aSeviye Atladın! Yeni Seviye: &e%{job::%player%::level}%/100" to player
            else:
                send "&cPara yetersiz! Gereken: &e%{_ucret}%$" to player

        if arg 1 is "sec":
            if arg 2 is "madenci" or "oduncu" or "balıkçı" or "savaşçı":
                set {job::%player%::type} to arg 2
                set {job::%player%::level} to 0
                send "&aMeslek seçildi: &e%arg 2% &7(Seviye 0)" to player
            else:
                send "&cMeslekler: madenci, oduncu, balıkçı, savaşçı" to player
Evet yere koyup kirdiklarinda da para kazanabilirler, bu yaptiginiz kodla engelleyebilirsiniz. Ancak her bir koyulan odun ve cevher icin bir degisken kaydedicek, bu sekilde yapmanizi onermem.

Boyle yapmaniz daha iyi olacaktir:
Kod:
on place:
    event-block is any ore or any log
    set event-block's metadata value "PBP" to true


on break:
    if event-block's metadata value "PBP" = true:
        delete event-block's metadata value "PBP"
        stop
 
Üst