Yardım Oyuncu adına özel quest

Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

maxbro

[GM]MaxBro
MT Üye
Mesaj
514
Çözümler
19
Beğeni
348
Puan
819
Selamün aleyküm cümleten. Bir quest yapmak istiyorum aslında çok basit bir quest. Belirli id'ye(isme) sahip oyuncu öldüğünde üstten yazı geçmesini istiyorum. Daha önce hiç quest yapmadım fikir ve önerilerinizi bekliyorum. İlerleyen zamanlarda öğrenme amaçlı daha çok quest yapmak istiyorum. Şimdiden herkese teşekkürler.
 
Lua (Quest):
if pc.get_name() == "Whistle" then
    notice_all("notu buraya yazın")
end
 
Öldürme eylemini when kill ile denetleyebilirsiniz. Daha önce quest yazmış mıydınız?
 
Konuda istediğiniz quest gerçekten kolay. Yeni birisi rahatlıkla yazabilir. Ancak benim amacım insanların kendini geliştirmesi. Böylelikle daha sonra komplike şeyleri yazarken zorlanmazsınız.
Quest Yazma Dersleri buradaki yazılı ve video rehberlere bakabilirsiniz
 
Konuda istediğiniz quest gerçekten kolay. Yeni birisi rahatlıkla yazabilir. Ancak benim amacım insanların kendini geliştirmesi. Böylelikle daha sonra komplike şeyleri yazarken zorlanmazsınız.
Quest Yazma Dersleri buradaki yazılı ve video rehberlere bakabilirsiniz
Zaten aklımdaki proje için ufaktan quest öğrenmek istiyorum. Güzel fikirlerim var, server ve sistemi komple yerine oturttuktan sonra oyun içi geliştirmelere başlayacağım. Şuan sadece eksik kalanlar, @XPyrion un paylaştığı yeni köy eklentisi ve ödeme sistemi. Geri kalan bütün işleri hallettim. İlerleyen günlerde bu forumda neler öğrendiğimi anlattığım ve yaptığım çalışmaları forum üyelerinin fikirlerine sunmak için bir gönderi paylaşacağım. Ama öncesinde bitirmek gerek.
 
Zaten aklımdaki proje için ufaktan quest öğrenmek istiyorum. Güzel fikirlerim var, server ve sistemi komple yerine oturttuktan sonra oyun içi geliştirmelere başlayacağım. Şuan sadece eksik kalanlar, @XPyrion un paylaştığı yeni köy eklentisi ve ödeme sistemi. Geri kalan bütün işleri hallettim. İlerleyen günlerde bu forumda neler öğrendiğimi anlattığım ve yaptığım çalışmaları forum üyelerinin fikirlerine sunmak için bir gönderi paylaşacağım. Ama öncesinde bitirmek gerek.
Başarılar dilerim size. Umarım planlarınız dilediğiniz şekilde ilerler. :)
Eğer sorununuz çözüldüyse konuyu kilitliyorum.
 
Konuda istediğiniz quest gerçekten kolay. Yeni birisi rahatlıkla yazabilir. Ancak benim amacım insanların kendini geliştirmesi. Böylelikle daha sonra komplike şeyleri yazarken zorlanmazsınız.
Quest Yazma Dersleri buradaki yazılı ve video rehberlere bakabilirsiniz
rehberi takip ediyorum şuan. şöyle bir kod yazmak mümkün müdür sizce.
diyelim oyuncu havuzunda 5k farklı user var. bunların içinden rastgele birbirini öldüren oyuncuların
a oyuncusu b oyuncusunu öldürdü gibi ama burada isimler kesin olarak belirlenmeyip get_name ile çekilebilir mi. asıl amaç değişken isim tanımlamak
@XPyrion Daha yeni başladık başkan :)
 
Son düzenleme:
rehberi takip ediyorum şuan. şöyle bir kod yazmak mümkün müdür sizce.
diyelim oyuncu havuzunda 5k farklı user var. bunların içinden rastgele birbirini öldüren oyuncuların
a oyuncusu b oyuncusunu öldürdü gibi ama burada isimler kesin olarak belirlenmeyip get_name ile çekilebilir mi. asıl amaç değişken isim tanımlamak
@XPyrion Daha yeni başladık başkan :)

Ödüllü oyuncu öldürme questi
 
quest:
if pc.get_name() == "oyuncu1" then
    when if pc.get_name() == "oyuncu2".kill begin
    notice_all("Savaşı oyuncu1 kazandı")
    end
end
şöyle bir kod yazdım ama olmuşmu diye işin ustaları bir baksın. amacım oyuncu1 oyuncu2 yi öldürürse oyuncu 1 kazandı yazdırmak. eğer oyuncu2 oyuncu1 i öldürürse oyuncu2 kazandı yazdırmak.
 
Hayır o şekilde yazarsanız hata alırsınız. :)
Questin tamamını verebilir misiniz?

Questlerin standartları vardır. Keşke videolara baksaydınız.

Her questin iskeleti şu şekildedir.
Lua (Quest):
quest quest_adi begin
    state start begin
        when kill begin
            -- buraya kosullar yazabilirsiniz.
        end
    end
end

quest_adi kısmı yazdığınız kodları isimlendirmek için. Oyun questleri çalıştırırken bu isim üzerinden tanıyor. state ise aşama demek. Eğer state'e start yazarsanız otomatik olarak işleyecek. when'ler ise eylemler oluyor. kill, letter vs. Daha detaylı bilgi için eğitim videolarına bakmanızı tavsiye ederim. Anlatılan şeyleri tekrar tekrar anlatmanın manası yok sonuçta. :)
 
questin tamamı bu ben yazdıgım için ancak bu kadar yazıldı. bir kaç denemeden sonra alışırım. hem videoları izleyip sonrasında soru sorarak öğrendiğim şeyi asla unutmuyorum.
koda gelecek olursak verdiğiniz kodlarda şöyle yazdım.
Lua (Quest):
quest quest_savas begin
    state start begin
        if pc.get_name() == "oyuncu1" then
            when oyuncu1.kill begin
                notice_all("Savaşı oyuncu2 kazandı!")
            end
        else if pc.get_name() == "oyuncu2" then
            when oyuncu2.kill begin
            notice_all("Savaşı oyuncu1 kazandı!")
            end
        end
    end
end
 
Bu şekilde hata verecektir. Verdiğim örnek şablona göre ilerleyin. Bu arada şimdi aklıma geldi. pc.get_name() mevcut oyuncunun bilgini veriyor. Yani kestiğin kişinin bilgisini almayacak. Oyuncu, npc olsa da sistem bunları entitiy olarak görüyor. Öldürdüğün kişinin ismini almak gerekecek. Bunu bi araştırmak lazım..
 
notice_all("Shinso ülkesinden "..pc.get_name().." ile görüşün.") şöyle bir komut gördüm webde. bu komutu
Lua (Quest):
quest quest_savas begin
    state start begin
        when kill begin
          
            if pc.get_name() == "oyuncu1" then
          
                when oyuncu2.kill begin
                notice_all("Savaşı"..pc.get_name().."kazandı!")
                end
      
      
            else if pc.get_name() == "oyuncu2" then
      
                when oyuncu2.kill begin
                notice_all("Savaşı"..pc.get_name().."kazandı!")
                end
          
            end
        end
    end
end
gibi mi yoksa
Lua (Quest):
quest quest_savas begin
    state start begin
        when kill begin
          
            if pc.get_name() == "..pc.get_name().." then
          
                when oyuncu2.kill begin
                notice_all("Savaşı"..pc.get_name().."kazandı!")
                end
      
      
            else if pc.get_name() == "..pc.get_name().." then
      
                when oyuncu2.kill begin
                notice_all("Savaşı"..pc.get_name().."kazandı!")
                end
          
            end
        end
    end
end
bu şekilde isimleri çekebilirmi. bu arada oyuncu1 ve oyuncu2 isimleri oyun içindeki oyunculara ait isimler olarak tanımladım. değişken değiller yani. en azından öyle amaçladım :D
 
İkisi de yanlış. :)
1. örnekte; when içinde when kullanmışsınız böyle bir düzen yok.

2. örnekte zaten söylemiştim. Algoritma işlemlerini when içerisinde yapabilirsiniz.
 
Cevaplarınız ve ilginiz için öncelikle teşekkür ederim hocam. Sanırım bu şekilde olmuştur.
quest:
quest quest_savas begin
    state start begin
        when oyuncu1.kill begin
            notice_all("Savaşı oyuncu2 kazandı!")
        end
      
        when oyuncu2.kill begin
            notice_all("Savaşı oyuncu1 kazandı!")
        end
    end
end
ama oyuncu1 adını oyun içindeki oyuncunun adıyla nasıl eşleyebiliriz. moblar için bu komut çalışacaktır sanırım. when komutundan sonra oyuncu1= player_id(1) gibi nickname'i tanımlayacak komutlar mevcut mu acaba.
aşağıdaki örnekte isimleri bu şekilde çekebilir miyiz.
name:
quest quest_savas begin
    state start begin
        when oyuncu1.kill begin
            if pc.get_name() == "oyuncu1" then
            notice_all("Savaşı oyuncu2 kazandı!")
            end
        end
       
        when oyuncu2.kill begin
            if pc.get_name() == "oyuncu2" then
            notice_all("Savaşı oyuncu1 kazandı!")
            end
        end
    end
end
 
Son düzenleme:
İşte sorun burada. Düşününce pc.get_name kullanamayız. Başka bir yol bulmalıyız. Ben vakit bulduğum bi zaman localde uğraşayım bunla. Sonuç alırsam yazarım
 
Peki bu sistemi kill komutu değil de bu 1-1 duello sistemi ile tanımlarsak daha mantıklı olmaz mı. sadece bir fikir. duelloyu kazananın ismi geçse yine yeter
 
Geri
Üst