Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Basit Bir Respawn Plugini - Tüm Ayrıntılarıyla [Başlangıç Seviyesi] [Temel Konular]
#1
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>
#include <amxmisc>
#include <hamsandwich>
#include <cstrike> 

Ş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
Değişkeni yarattık. "Ucret"in başındaki "g"nin bir önemi yok. Scripterlar kolaylık olsun diye stringleri, integerları vs değişkenleri karıştırmamak için bu tür kısaltmalar kullanırlar. "g" ön eki global değişkenler için kullanılır.

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() {

    
register_plugin(PLUGINVERSIONAUTHOR)    

    
register_clcmd("say /respawn","Respawn_Satin_Al")
    


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() {

    
register_plugin(PLUGINVERSIONAUTHOR)    

    
gUcret register_cvar("respawn_ucreti","10000")

    
register_clcmd("say /respawn","Respawn_Satin_Al")
    


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) {
    if(
is_user_alive(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) {
    if(
is_user_alive(id)) {
        
client_print(id,print_chat,"Zaten Canlisiniz")
        return 
PLUGIN_HANDLED
    
}


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) {
    if(
is_user_alive(id)) {
        
client_print(id,print_chat,"Zaten Canlisiniz")
        return 
PLUGIN_HANDLED
    
}
    if(
cs_get_user_money(id) < get_pcvar_num(gUcret)) {
    }


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) {
    if(
is_user_alive(id)) {
        
client_print(id,print_chat,"Zaten Canlisiniz")
        return 
PLUGIN_HANDLED
    
}
    if(
cs_get_user_money(id) < get_pcvar_num(gUcret)) {
        
client_print(id,print_chat,"Yeterli Paraniz Yok. Gereken %d",get_pcvar_num(gUcret))
        return 
PLUGIN_HANDLED
    
}


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) {
    if(
is_user_alive(id)) {
        
client_print(id,print_chat,"Zaten Canlisiniz")
        return 
PLUGIN_HANDLED
    
}
    if(
cs_get_user_money(id) < get_pcvar_num(gUcret)) {
        
client_print(id,print_chat,"Yeterli Paraniz Yok. Gereken %d",get_pcvar_num(gUcret))
        return 
PLUGIN_HANDLED
    
}
    
cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(gUcret))


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) {
    if(
is_user_alive(id)) {
        
client_print(id,print_chat,"Zaten Canlisiniz")
        return 
PLUGIN_HANDLED
    
}
    if(
cs_get_user_money(id) < get_pcvar_num(gUcret)) {
        
client_print(id,print_chat,"Yeterli Paraniz Yok. Gereken %d",get_pcvar_num(gUcret))
        return 
PLUGIN_HANDLED
    
}
    
cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(gUcret))
    
ExecuteHamB(Ham_CS_RoundRespawn,id)
    
client_print(id,print_chat,"Basariyla Yeniden Canlandiniz !")
    return 
PLUGIN_HANDLED


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>
#include <amxmisc>
#include <hamsandwich>
#include <cstrike>

#define PLUGIN "Plugin ismi"
#define VERSION "versiyonu"
#define AUTHOR "yapimcisi"

new gUcret;
public 
plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
gUcret register_cvar("respawn_ucreti","10000"
    
    
register_clcmd("say /respawn","Respawn_Satin_Al")
}
public 
Respawn_Satin_Al(id) {
    if(
is_user_alive(id)) {

        
client_print(id,print_chat,"Zaten Canlisiniz")
        return 
PLUGIN_HANDLED

    
}
    if(
cs_get_user_money(id) < get_pcvar_num(gUcret)) {

        
client_print(id,print_chat,"Yeterli Paraniz Yok. Gereken %d",get_pcvar_num(gUcret))
        return 
PLUGIN_HANDLED
        
    
}
    
cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(gUcret))
    
ExecuteHamB(Ham_CS_RoundRespawn,id
    
client_print(id,print_chat,"Basariyla Yeniden Canlandiniz !")
    return 
PLUGIN_HANDLED 


Not: Aklınıza takılan herhangi bir şey olursa sorabilirsiniz. Ek olarak öğrenmek istediklerinizi belirtebilirsiniz. Ona göre ders paylaşabilirim.


CS:GO ve CS 1.6 için ücretli eklenti yapılır.
Plugin yazmak isteyenlere yardımcı olabilirim.
Skype adresimden ulaşabilirsiniz:
destek_596
Steam: http://steamcommunity.com/id/ca-nemesis/

Reply
#2
hamsandwich
Kullanman Çok İyi Spawn(id) Kullanımı Bazen Buga Neden Oluyor Eline Sağlık.
Reply
#3
Evet ham sandwich'i kullanmak her zaman daha iyi. Teşekkürler.


CS:GO ve CS 1.6 için ücretli eklenti yapılır.
Plugin yazmak isteyenlere yardımcı olabilirim.
Skype adresimden ulaşabilirsiniz:
destek_596
Steam: http://steamcommunity.com/id/ca-nemesis/

Reply
#4
sağolun bende basladım öğreniyorum sayende Smile
Reply
#5
hamsandwich

diyince eskiden aklıma yicek geliyodu xd

Eline Sağlık
CSP Signatür
Reply
#6
benim halen geliyor Smile))
Reply
#7
Öyle gelmesi normal zaten Smile Ham Sandwich, jambonlu sandviç demek Smile Modülün yazarı boş mideyle yazmış heralde Smile


CS:GO ve CS 1.6 için ücretli eklenti yapılır.
Plugin yazmak isteyenlere yardımcı olabilirim.
Skype adresimden ulaşabilirsiniz:
destek_596
Steam: http://steamcommunity.com/id/ca-nemesis/

Reply
#8
Teşekkürler
Reply
#9
Eywallah Kardeşim Teşekkür Ettim İşe Yarar Konu.

[url=https://img107.imageshack.us/img107/2662/isliklalfj7.gif][Image: isliklalfj7.gif]




Moderatör Olduğum Bölümler:

Wall Hack Hile Bölümü
[MAP]Harita Bölümü
Reply
#10
Teşekkürler
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  [PROGRAM]Basit Menü Oluşturma Programı toybaby 0 8,122 16-01-18, 00:22
Last Post: toybaby
  nVault Modülü Temel Bilgiler [Orta Seviye] akcaliberkk 8 9,160 24-03-17, 21:14
Last Post: knq72
  admin göstergesi plugini Crypex33 0 5,570 26-10-16, 23:44
Last Post: Crypex33
  Basit Say komutu olusturmak By RuHsuZ 0 4,272 20-07-16, 10:58
Last Post: By RuHsuZ
  ( Basit ) Say Komutu Oluşturmak к4dανяα 6 6,026 30-03-13, 15:14
Last Post: к4dανяα

Foruma Atla:


Users browsing this thread: 1 Guest(s)