![]() |
|
Basit Bir Respawn Plugini - Tüm Ayrıntılarıyla [Başlangıç Seviyesi] [Temel Konular] - Printable Version +- CSPLague (https://www.csplague.com) +-- Forum: CS 1.6 Plugin (Eklenti) Bölümü (https://www.csplague.com/forumdisplay.php?fid=6) +--- Forum: [PAWN] Plugin Dersleri (https://www.csplague.com/forumdisplay.php?fid=79) +--- Thread: Basit Bir Respawn Plugini - Tüm Ayrıntılarıyla [Başlangıç Seviyesi] [Temel Konular] (/showthread.php?tid=4928) Pages:
1
2
|
Basit Bir Respawn Plugini - Tüm Ayrıntılarıyla [Başlangıç Seviyesi] [Temel Konular] - akcaliberkk - 17-09-12 Bu derste basit bir respawn plugininin nasıl yapıldığını tüm ayrıntılarıyla öğreniceksiniz. Önce bize gerekenleri bulalım. 1. Kullanıcının parasını öğrenme ve düzenleme için cs_get_user_money ve cs_set_user_money kodları gerek. Bu kodları "cstrike" kütüphanesinde bulabiliriz. 2. Kullanıcının canlı mı ölü mü olduğunu öğrenmek için is_user_alive kodu gerekli. Bu kod zaten amxmodx kütüphanesinde mevcut. 3. Plugini tetiklemek için bir konsol komutu kaydetmemiz gerek. Bunun için register_clcmd kodunu kullanıcaz. 4. Respawnın fiyatını ayarlamak için bir cvar ayarı kaydetme kodu ve cvar öğrenme kodu gerekli. Bunlar da register_cvar ve get_pcvar_num olucak. 5. Son olarak kullanıcıyı yeniden canlandırmak için ExecuteHamB kodu gereki bunu da "hamsandwich" kütüphanesinde bulabiliriz. İlk başlayanlara hamsandwich zor gelebilir. Bu yüzden spawn(id) kodunu kullanabilirsiniz bu da "fun" kütüphanesinde yer alıyor. Bize gereken kütüphaneler: cstrike hamsandwich Bu kütüphaneleri kullanabilmemiz için çağırmamız gerek. Çağırmak için de #include kodunu kullanıyoruz. include, içermek demektir yani plugine içermesini istediğimiz kütüphaneler için kullanıyoruz. PHP Code: #include <amxmodx>Şimdi birde ücreti belirleyebileceğimiz bir cvar kaydetmemiz gerek. bunun için bir değişken yaratalım. Değişkenimiz global olmalı yani tüm publiclerde kullanılabilir olmalı. Eğer bir publicin içinde yaratırsak diğer publiclerde kullanmaya çalıştığımızda değişkeni tanıyamadığı için hata verir. Ama global olarak yaratırsam yani tüm publiclerin dışında yaratırsam bir sorun olmaz. PHP Code: new gUcret; Plugin_init, pluginin tetikleyicilerini kaydettiğimiz bölümdür. Şimdi plugin_init e geçelim. Öncelikle bize bir public tetikleyici gerek. Yani konsoldan bir komut girildiğinde çalışmasını istediğimiz kodları tetikleyecek. Bunun için register_clcmd kodunu kullanıcaz PHP Code: public plugin_init() {Konsolda say /respawn komutu çalıştığında yani bir oyuncu /respawn yazdığında, Respawn_Satin_Al publici tetiklenicek ve o publicteki kodlar okunacak. Şimdi bir cvar yaratıp gUcret global değişkenini o cvarla tanımlayalım PHP Code: public plugin_init() {Cvarlarda ilk kısım cvar kodu, 2. kısım default değerdir. Şimdi Respawn_Satin_Al publicine geçelim. PHP Code: public Respawn_Satin_Al(id) {Parantez içerisine yazdigimiz yazi kullanicinin pawndaki id sidir. Yani oyundaki id ile bir alakasi yok. Parantez içine yazdiğimiz herhangi bir yazi bu publici tetikleyen kişi olur.id yazmak zorunlu degildir isterseniz x, abc, vs yazabilirsiniz. burda bilmemiz gereken id = publici tetikleyen kullanici /respawn yazıldı ve motor burayı okumaya başlıyor.Kullanıcıyı canlandırmadan önce birkaç kontrol yapmamız gerekir. Bunlardan biri kullanıcının canlı olup olmadığıdır. Doğal olarak zaten canlı bir kullanıcının tekrar canlanamaması gerekir. Bu sayede bazı buglar önlenmiş olur. Bunu kontrol etmek için ise is_user_alive kodunu kulanıyoruz. Bu bir bool dur yani ancak iki farklı değer alabilir. 1 yani true, 0 yani false. True doğru, false yanlış demektir. Eğer id kişisi canlıysa motor burayi true olarak okur, eğer canlı değilse false olarak okur.Ve motorun if kısmını okuması için parantez içinin true olması gerekir. Eğer false olursa motor if kısmını yanlış diye es geçer. PHP Code: public Respawn_Satin_Al(id) {Motor id kişisinin canlı olduğunu görünce is_user_alive kodunu true olarak okudu ve if bölümüne girdi. Şimdi canlı olan kullanıcının yeniden canlandırılmaması için bir uyarı mesajı ve plugini durdur kodlarını girmeliyiz. PHP Code: public Respawn_Satin_Al(id) {client_print, id kişisinin ekranında yazı çıkması için kullanılır. client printin 4 farklı çeşiti vardır. print_chat -> Chat kısmında mesaj gösterir print_console -> Konsolda mesaj gosterir print_center -> Ekranın ortasında mesaj gosterir print_notify -> Konsolda mesaj gösterir. client_print(id,print_tipi,"Yazi") şeklinde kullanılır. Respawn_Satin_Al publicinin çağrısını durdurmak için return PLUGIN_HANDLED kullandık. PLUGIN_HANDLED kullanıcının /respawn komutunu durduracaktır. return PLUGIN_HANDLED -> Çağrıyı Durdur return PLUGIN_CONTINUE -> Çağrıyı bu pluginde durdur, Diğer pluginlerde devam ettir. şimdilik bu ikisini bilmeniz yeterli. Kullanici canli değilse motor is_user_alive kodunu false olarak okur ve if kısmını atlar. Şimdi eğer kullanıcı canlı değilse neler olucak onları ayarlayalım. Canlı - Ölü kontrolünden geçtik şimdi sırada para kontrolü var. id kişisinin parasını öğrenmek için cs_get_user_money(id) kullanıyoruz. Örneğin kullanıcının parası 2000. Motor cs_get_user_money(id) kodunu 2000 olarak okuyacaktır. Parayı öğrendikten sonra id kişisinin mevcut parasını cvara girilen değer ile karşılaştırmamız gerek. Bu karşılaştırmayı yapabilmek için motorun cvarı okumasını sağlamamız gerek. get_pcvar_num(pcvar) yani pcvar olarak tanımlanmış cvar ayarındaki mevcut numarayı öğren kodu bunu sağlıyor. Daha önce ücreti ayarladığımız cvarı tanımladığımız değişkeni buluyoruz. Bizim kullandığımız değişken gUcret idi. PHP Code: public Respawn_Satin_Al(id) {Eğer kullanıcının parası gUcret ile tanımlanmış cvardan küçük ise if kısmını oku. anlamına geliyor. id kişisinin parası 2000 dedik. gUcret ile tanımladığımız cvara da 10000 yazdık. Yani motor parantez içini if(2000<10000) olarak okuyacaktır. 2000 < 10000 karşılaştırması da doğru bir karşılaştırma olduğu için motor parantez içini true olarak görecek ve if kısmını okuyacaktır. Fakat eğer id kişisinin parası 15000 olsaydı, 15000 < 1000 karşılaştırması yanlış bir karşılaştırma olacağından if kısmını okumayacaktı. Şimdi id kişisinin yeterli parası olmadığını öğrendik. Bu durumda bir uyarı mesajı ve plugini durdur kodu girmeliyiz. PHP Code: public Respawn_Satin_Al(id) {Eğer id kişisine gösterilecek mesajda bir değişkenin olmasını istiyorsak %s, %i, %d, %f gibi belirteçler kullanırız... %d -> Doğal sayı değişkenlerini belirtmemizi sağlar. Doğal Sayı kümesi:{0,1,2,3... } %f -> Ondalık sayı değişkenlerini belirtmemizi sağlar. Ondalık sayı kümesi:{...-1...-0,5...0...0.5...1...} %i -> Tamsayi değişkenlerini belirtmemizi sağlar. Tamsayilar kümesi:{...-3,-2,-1,0,1,2,3...} %s -> Düz yazı değişkenlerin belirtilmesini sağlar. Düz yazılar: "1234...abcdefgh..." Örnek bir print: PHP Code: client_print(id,print_chat,"Degisken 1: %d Degisken 2: %s Degisken 3: %d",degisken1,degisken2,degisken3) Virgülden sonra yazdığımız değişkenler yazıda doğru sırada ve doğru belirteçlerle gösterilmelidir. Para kontrolünü de yaptık. Şimdi sıra para eksiltme ve yeniden canlandırmada. PHP Code: public Respawn_Satin_Al(id) {cs_set_user_money(id,yeni para) Yeni para yerine şunu yazdık "cs_get_user_money(id) - get_pcvar_num(gUcret)" . Kullanıcının parasının 15000 olduğunu varsaymıştık. ve gUcret tanımlı cvar ayarını da 10000 olarak ayarlamıştık. Bu durumda motor yeni para kısmını şöyle görüyor: 15000 - 10000 Bu da 5000 olduğu için id kişisinin yeni parası 5000 olmuş oluyor yani sadece 10000 eksiliyor. Şimdi sıra yeniden canlandırmada. Ham Sandwich modülü sanal fonksiyonları ve varlıkları çağırma veya yakalamada kullanılabilir. Biz bir round başladığında insanların canlanma fonksiyonunu çağırıcaz yani kullanıcaz. bu fonksiyonun adı Ham_CS_RoundRespawn ve fonksiyonu çağırmaya yarayan kod ExecuteHamB PHP Code: public Respawn_Satin_Al(id) {id kişisinde Ham_CS_RoundRespawn fonksiyonunu çalıştırdık ve canlandırdık. Eğer bu kodu aklınızda tutmakta zorlanırsanız "fun" kütüphanesindeki spawn(id) kodunu da kullanabilirsiniz. return PLUGIN_HANDLED kodunun buradaki görevi bu çağrının diğer pluginlere sıçramasını önlemektir. Ve Son Hali: PHP Code: #include <amxmodx>Not: Aklınıza takılan herhangi bir şey olursa sorabilirsiniz. Ek olarak öğrenmek istediklerinizi belirtebilirsiniz. Ona göre ders paylaşabilirim. Cevap: Basit Bir Respawn Plugini - Tüm Ayrıntılarıyla [Başlangıç Seviyesi] [Temel Kon - к4dανяα - 17-09-12 hamsandwich Kullanman Çok İyi Spawn(id) Kullanımı Bazen Buga Neden Oluyor Eline Sağlık. Cevap: Basit Bir Respawn Plugini - Tüm Ayrıntılarıyla [Başlangıç Seviyesi] [Temel Kon - akcaliberkk - 18-09-12 Evet ham sandwich'i kullanmak her zaman daha iyi. Teşekkürler. Cevap: Basit Bir Respawn Plugini - Tüm Ayrıntılarıyla [Başlangıç Seviyesi] [Temel Kon - fenerbahce07 - 18-09-12 sağolun bende basladım öğreniyorum sayende
Cevap: Basit Bir Respawn Plugini - Tüm Ayrıntılarıyla [Başlangıç Seviyesi] [Temel Kon - batuopoz0770 - 03-10-12 hamsandwich diyince eskiden aklıma yicek geliyodu xd Eline Sağlık
Cevap: Basit Bir Respawn Plugini - Tüm Ayrıntılarıyla [Başlangıç Seviyesi] [Temel Kon - к4dανяα - 04-10-12 benim halen geliyor ))Cevap: Basit Bir Respawn Plugini - Tüm Ayrıntılarıyla [Başlangıç Seviyesi] [Temel Kon - akcaliberkk - 04-10-12 Öyle gelmesi normal zaten Ham Sandwich, jambonlu sandviç demek Modülün yazarı boş mideyle yazmış heralde
Cevap: Basit Bir Respawn Plugini - Tüm Ayrıntılarıyla [Başlangıç Seviyesi] [Temel Kon - Proton04 - 20-10-12 Teşekkürler Cevap: Basit Bir Respawn Plugini - Tüm Ayrıntılarıyla [Başlangıç Seviyesi] [Temel Kon - kadir11 - 25-01-13 Eywallah Kardeşim Teşekkür Ettim İşe Yarar Konu. Cevap: Basit Bir Respawn Plugini - Tüm Ayrıntılarıyla [Başlangıç Seviyesi] [Temel Kon - kevinryman - 17-11-14 Teşekkürler |