merhabalar 2 aydır csduragı kullanıyorum fakat son bu haftadır eke koyduguum hatadn sunucu çöküyor anlamıyorum neden hiç bi sıkıntı yoktu kendi modumuzu kullanıyoruz
L 25/07/2022 - 15:58:46: (map "ze_boatescape_b5") PF_MessageBegin_I: New message started when msg '35' has not been sent yet
L 25/07/2022 - 16:00:54: (map "ze_jurassicpark4") PF_MessageBegin_I: New message started when msg '35' has not been sent yet
L 25/07/2022 - 16:02:55: (map "ze_jurassicpark4") PF_MessageBegin_I: New message started when msg '35' has not been sent yet
Webailesi Portal Sistemi
Başlıkta da belirttiğim gibi zombie escape menüsüne extra itemse silah ekliyorum fakat bunu oyuncu 30 levele ulaşınca alabilmesini istiyorum veya admin ban yetkisine sahip oyuncu.Bunu Zombi class seçerkende yapabilmek istiyorum nasıl yapabilirim?
Yardımlarınız İçin Tşk
Yardımlarınız İçin Tşk
Yakında açıcagımız metin2 sunucusu için AVCI alımı yapıcaz
Aradığımız Özellikler
- Aktif olması
-Sesli Sohbette Sıkıntı Yaşamıyıcak
-Geliştiriciye Yardım Edecek ve Test Edecek
Tasarımlar Özel Olarak Yaptırılıyor
Beklenen Oyuncu 750 ile 1000 arası
55 - 120 Tarzı Pek çok yeni ve eski sistemi içinde bulunduruyor
Aradığımız Özellikler
- Aktif olması
-Sesli Sohbette Sıkıntı Yaşamıyıcak
-Geliştiriciye Yardım Edecek ve Test Edecek
Tasarımlar Özel Olarak Yaptırılıyor
Beklenen Oyuncu 750 ile 1000 arası
55 - 120 Tarzı Pek çok yeni ve eski sistemi içinde bulunduruyor
Herkese selamlar. Ekte verdiğim CTMenu içerisindeki Hard Komut'ta bir isteğim olacak. Hard Komut açıldığı zaman bunnynin de kapanmasını , hard komut kapandığı zaman bunnynin aynı şekilde açılmasını istiyorum. Şimdiden teşekkür ederim.
Merhaba, arkadaşlar tekrardan karşınızdayım. Bugün bir kaç değişiklik yaptık, Öncelikle ts3 adresimizi değiştik, Zombi Escape, JailBreak, Maç Sunucumuz açılmış bulunmakta. JEVAİNCLAN ile karşınızdayız.
STAFF VE CEO ALIMLARI İÇİN TS3 ADRESİMİZE BEKLERİZ.
JailBreak Sunucumuz: 213.238.173.64
Zombi Escape Sunucumuz: 213.238.173.196
Maç Sunucumuz: 45.141.149.139:5
TS3 ADRESİMİZ: JevainClan
Merhaba, saat sabah 8 ila 12 arasında mesela silah menüsü aktif olacak ve o süre boyunca sunucuda aktif bir şekilde kalacak yapılması mümkün mü acaba?
Silah menüden alınacak silahlar :
m4a1 + deagle
ak47 + deagle
awp + deagle
Silah menüden alınacak silahlar :
m4a1 + deagle
ak47 + deagle
awp + deagle
harita Zombie escapeyken 2 zıplama olmasını istiyorum nemesisde de 3 bunu nasıl yapabilirim?
Merhaba WebAilesi forumu sakinleri;
Eklentilerde yapılan hataları ve çözümlerini anlattım. Umarım daha güzel yazılmış eklentiler görürüm.
1. PreThink & PostThink gibi komutlar
PreThink komutu oyuncuya saniyede çok kez gönderildiği için çok önemli bir komuttur.
Yapılan büyük yanlış; [Oyuncuların ölü olup olmadığını vs tanıtma;]
Defalarca oyuncunun takımını algılıyor ve ölü olmadığını algılıyor.
Bunun yerine bir değişken oluşturacağız.
2. Switch
Switch komutu eklentide bir değişkenin veya komutun değerlerini algılamamızı sağlıyor.
İf ile tanıtmaktan daha iyi ve hızlı.
Yapılan hata [Bir değişken oluşturmadan değer algılatmak
Bunun yerine değişken oluşturacağız.
3. Set_Task
Aynı PreThink açıklamasındaki gibi yapılan bir hata.
'0.1' olarak ayarlanan bir task olayında ölü ve takım algılatması;
Bu sefer bot olup olmadığı şeklinde örnek vereceğim.
Doğru kullanımı;
4. Bool nedir, nasıl kullanılır?
Eklentilerde pek çok gördüğümüz, bildiğimiz fakat kullanamadığımız veya bilmediğimiz bool?
Bir değişken eğer sadece 1-0 olarak ayarlanacaksa bool kullanılmalı.
Yapılan yanlış [degisken = 1 ; degisken = 0]
Bool kullanılmalı;
5. Cvar oluşturmak
1.8.3 e kadar bir sorun yoktu fakat değişti.
Artık kullanalım;
Yapılan yanlış [register_cvar & 0 - 1]
Burada yine bool kullanılmamakta. Ve register_cvar yerine bu komut daha kullanışlı ve hızlı.
Sunucuda olan cvarlar için get_cvar_pointer ve get_pcvar_ num,string...
6. Const nedir, nasıl kullanılır?
Const, bir değişkenin sabit olduğu durumlarda kullanılır. Örneğin tag;
Yapılan yanlış [Const kullanılmaması]
tag bir daha değiştirilemeyeceği için const eklemeliyiz.
Eklentilerde yapılan hataları ve çözümlerini anlattım. Umarım daha güzel yazılmış eklentiler görürüm.

1. PreThink & PostThink gibi komutlar
PreThink komutu oyuncuya saniyede çok kez gönderildiği için çok önemli bir komuttur.
Yapılan büyük yanlış; [Oyuncuların ölü olup olmadığını vs tanıtma;]
PHP Kod:
public plugin_init()
{
RegisterHookChain(RG_CBasePlayer_PreThink, "CBasePlayer_PreThink");
}
public CBasePlayer_PreThink(const id)
{
if(get_user_team(id) == 2 && is_user_alive(id))
{
//blabla
}
}
Bunun yerine bir değişken oluşturacağız.
PHP Kod:
new bool:ctveyasiyor[33];
public plugin_init()
{
RegisterHookChain(RG_CBasePlayer_PreThink, "CBasePlayer_PreThink");
RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn");
RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed");
}
public CBasePlayer_PreThink(const id)
{
if(ctveyasiyor)
{
//blabla
}
}
public CBasePlayer_Spawn(const id)
{
/*
if(!is_user_alive(id))
{
return;
}
// Bunu kullanabilirsiniz. Bug olursa kesin çözümü
*/
if(get_member(id, m_iTeam) == TEAM_CT && is_user_alive(id)) // Reapi ile ct olduğunu tanıtmak
{
ctveyasiyor[id] = true;
}
// veya (fark etmez) [reapi önerilir, biraz daha hızlı]
if(get_user_team(id) == 2 && is_user_alive(id)) // Reapi ile ct olduğunu tanıtmak
{
ctveyasiyor[id] = true;
}
}
public CBasePlayer_Killed(const victim, const attacker)
{
// Bu komutu kullanmak zorunda değilsiniz. Attacker kullanmadığımız için yazdım.
#pragma unused attacker
ctveyasiyor[id] = false;
}
Switch komutu eklentide bir değişkenin veya komutun değerlerini algılamamızı sağlıyor.
İf ile tanıtmaktan daha iyi ve hızlı.
Yapılan hata [Bir değişken oluşturmadan değer algılatmak
PHP Kod:
switch(str_to_num(data))
{
//blabla
}
PHP Kod:
new key = str_to_num(data);
switch(key)
{
//blabla
}
Aynı PreThink açıklamasındaki gibi yapılan bir hata.
'0.1' olarak ayarlanan bir task olayında ölü ve takım algılatması;
Bu sefer bot olup olmadığı şeklinde örnek vereceğim.
PHP Kod:
public bilmemne(id)
{
set_task(0.1, "loc_pec_wec", id, _, _, "b"); // 0.1 saniyede bir gönderilecek
}
public loc_pec_wec(id)
{
if(is_user_bot(id))
{
client_print_color(id, id, "Sen botsun.");
}
}
PHP Kod:
new bool:bot[33];
public client_putinserver(id)
{
if(is_user_bot(id))
{
bot[id] = true;
}
// veya
bot[id] = is_user_bot(id) ? true:false; // botsa true değilse false
}
public bilmemne(id)
{
set_task(0.1, "loc_pec_wec", id, _, _, "b"); // 0.1 saniyede bir gönderilecek
}
public loc_pec_wec(id)
{
if(bot[id])
{
client_print_color(id, id, "Sen botsun.");
}
}
Eklentilerde pek çok gördüğümüz, bildiğimiz fakat kullanamadığımız veya bilmediğimiz bool?
Bir değişken eğer sadece 1-0 olarak ayarlanacaksa bool kullanılmalı.
Yapılan yanlış [degisken = 1 ; degisken = 0]
PHP Kod:
new bot[33];
public client_putinserver(id)
{
if(is_user_bot(id))
{
bot[id] = 1;
}
}
PHP Kod:
new bool:bot[33];
public client_putinserver(id)
{
if(is_user_bot(id))
{
bot[id] = true;
}
}
1.8.3 e kadar bir sorun yoktu fakat değişti.
Artık kullanalım;
Yapılan yanlış [register_cvar & 0 - 1]
PHP Kod:
new lololol;
public plugin_init() {
lololol = register_cvar("bh_enabled", "1");
}
public blabla(id)
{
if(get_pcvar_num(lololol))
{
//blabla
}
}
Sunucuda olan cvarlar için get_cvar_pointer ve get_pcvar_ num,string...
PHP Kod:
new bool:lololol;
new normalcvar;
new mp_freeforall; // ff cvarı her sunucuda var (CSDURAGI)
public plugin_init() {
bind_pcvar_num(create_cvar("bh_enabled", "1", _, "Cvar aciklamasi", true, 0.0, true, 1.0), lololol);
bind_pcvar_num(create_cvar("normalcvar", "832", _, "Sonu yok", true, 0.0), normalcvar);
mp_freeforall = get_cvar_pointer("mp_freeforall"); // Sunucudaki cvarı çekiyor.
}
public blabla(id)
{
if(lololol)
{
//blabla
}
new deger = normalcvar;
deger--;
// değer 831 oldu. get_pcvar_num kullanmaya gerek kalmadi
// burada kullanıyoruz
if(get_pcvar_num(mp_freeforall))
{
set_pcvar_num(mp_freeforall, 0);
}
}
Const, bir değişkenin sabit olduğu durumlarda kullanılır. Örneğin tag;
Yapılan yanlış [Const kullanılmaması]
PHP Kod:
new tag[] = "LOLOLOL";
client_print_color(0, 0, "Tagimiz budur: %s", tag);
PHP Kod:
new const tag[] = "LOLOLOL";
client_print_color(0, 0, "Tagimiz budur: %s", tag);
Anlatımı ve emeği için Colditz adlı arkadaşa teşekkür ederiz.
Sistem Açıklaması;
Market eklentilerinizi daha hoş bir görünüme sahip olması için kendi geliştirdiğim bir sistemdir.
Eklentinin amacı; Markette bulunan eşyayı, ürünü satın alırken, işleminizi onaylıyor musunuz yoksa iptal mi etmek istiyorsunuz gibi kısacası bir onay ekranı gönderir.
Ekstra olarak, ürünün ismini, ürünün fiyatını ve istiyorsanız kişiye özel indirimleri bile gösterebilirsiniz.
Eklenti Kod Bölümü Açıklaması;
Eklenti içerisinde, düz kodlamadan farklı olarak zorlanacağınız iki bölüm vardır.
Birinci bölüm; Dosyadan verileri çekme.
İkinci bölüm; Dosyadaki verileri, Array'a aktarma.
Eklenti içerisinde güzel bir şekilde anlattığımı düşünüyorum, ekstra olarak anlamadıysanız o konuları buradanda kavramaya çalışabilirsiniz.
https://www.webailesi.com/konu-nasil-dos...ilir-16339
https://www.webailesi.com/konu-array-kullanimi-19474
Eklenti;
Market eklentilerinizi daha hoş bir görünüme sahip olması için kendi geliştirdiğim bir sistemdir.
Eklentinin amacı; Markette bulunan eşyayı, ürünü satın alırken, işleminizi onaylıyor musunuz yoksa iptal mi etmek istiyorsunuz gibi kısacası bir onay ekranı gönderir.
Ekstra olarak, ürünün ismini, ürünün fiyatını ve istiyorsanız kişiye özel indirimleri bile gösterebilirsiniz.
Eklenti Kod Bölümü Açıklaması;
Eklenti içerisinde, düz kodlamadan farklı olarak zorlanacağınız iki bölüm vardır.
Birinci bölüm; Dosyadan verileri çekme.
İkinci bölüm; Dosyadaki verileri, Array'a aktarma.
Eklenti içerisinde güzel bir şekilde anlattığımı düşünüyorum, ekstra olarak anlamadıysanız o konuları buradanda kavramaya çalışabilirsiniz.
https://www.webailesi.com/konu-nasil-dos...ilir-16339
https://www.webailesi.com/konu-array-kullanimi-19474
Eklenti;
PHP Kod:
// forum.csduragi.com
#pragma semicolon 1
#include <amxmodx>
new const g_szItems[] = "addons/amxmodx/configs/Esyalar.ini";
enum _:ItemsData // Array verilerini oluşturduk.
{
szItemName[32],
iItemMoney
};
new Array:g_aItems; // İtem arrayi oluşturduk.
// Menüde işlemi yaptırmak için kullanacağımız değişkenler.
new g_szItemKey[MAX_PLAYERS+1][32], // Seçtiğimiz itemin ismini saklamak icin kullanacağımız değişken. "32" değer aralığında ve "string" yani yazı türünde.
g_iCostKey[MAX_PLAYERS+1]; // Seçtiğimiz itemin fiyatini saklamak icin kullanacağımz değişken "integer" yani sayı türünde.
public plugin_init()
{
register_plugin("Confirmation Screen", "0.1", "` BesTCore;");
g_aItems = ArrayCreate(ItemsData); // Arrayımızı oluşturduk.
register_clcmd("say /market", "clcmd_market"); // Market cmd'si oluşturuyoruz.
GetDataFromFile(); // Dosyadaki verileri işleyeceğimiz fonksiyon. İçeriği aşşağıda...
}
public clcmd_market(const id)
{
new iSize = ArraySize(g_aItems);
if(iSize < 1) // Eğer array boyutu "1"'den küçükse içi boş demektir, böylelikle bilgi mesajı ekleyebilirsiniz.
{
//client_print_color(id, id, "^3Markette satin alinacak birsey yok.");
return;
}
new bestm = menu_create("\rMarket Menu", "clcmd_market_handler");
new aData[ItemsData]; // Array verilerini çekmek için değişken oluşturduk.
for(new i = 0; i < iSize; i++)
{
ArrayGetArray(g_aItems, i, aData); // Bütün verileri for döngüsünde sıraladık ve "aData" değişkenine aktardık.
menu_additem(bestm, fmt("%s\r %i TL", aData[szItemName], PlayerDiscount(id, aData[iItemMoney])), fmt("%i", i)); // Menüyü oluşturduk.
}
menu_display(id, bestm); // Oyuncuya menüyü gösterdik. Burayı, for döngüsü içerisinde kullanmayın, çalışmaz.
}
public clcmd_market_handler(const id, const menu, const item)
{
/*if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], key;
menu_item_getinfo(menu, item, _, data, charsmax(data));
key = str_to_num(data);*/
// "menu_item_getinfo" ile menü bilgilerini çekmiyoruz, eğer çekersek seçtiğimiz seçenek değeri "0" olarak değil "1" olarak gelir ve işlemimizi sıkıntıya sokar.
new aData[ItemsData];
ArrayGetArray(g_aItems, item, aData); // Seçtiğimiz seçeneğin itemini array'dan çektik.
ConfirmationScreen(id, aData[szItemName], PlayerDiscount(id, aData[iItemMoney])); // Menü bilgilerini yerleştirdik.
menu_destroy(menu); // Menüyü kapattık.
return PLUGIN_HANDLED;
}
public ConfirmationScreen(const id, const szItem[], const iCost) // Publicimizde bilgileri sıraladık.
{
copy(g_szItemKey[id], charsmax(g_szItemKey[]), szItem); // Public handlerinde kullanmak için eşyanın ismini değişkenimize aktardık.
// String olduğu için "copy" ile yaptık.
g_iCostKey[id] = iCost; // Public handlerinde kullanmak için eşyanın fiyatını değişkenimize aktardık.
new bestm = menu_create("\rOnay Ekrani", "ConfirmationScreen_handler");
menu_additem(bestm, fmt("Esya Ismi:\y %s", szItem)); // Esya ismini "Item" yazdırdık.
menu_additem(bestm, fmt("\wEsya Fiyati:\y %i\r TL", iCost)); // Esya fiyatini "Cost" yazdırdık.
menu_additem(bestm, fmt("Size Ozel Indirim:\y %i\r TL^n", iCost - PlayerDiscount(id, iCost))); // Bu yontem ile indirim fiyatini çekebilirsiniz.
menu_additem(bestm, "Satin Al"); // Satın alma seçeneği.
menu_additem(bestm, "Iptal Et"); // İslemi iptal etme seçeneği.
menu_display(id, bestm); // Menüyü gösterdik.
}
public ConfirmationScreen_handler(const id, const menu, const item)
{
switch(item)
{
case 0..2: // Bastığımız seçenek 0 ile 2 arasında ise..
{
menu_display(id, menu); // Menüyü tekrar gösterdik.
ConfirmationScreen(id, g_szItemKey[id], g_iCostKey[id]); // Menüyü tekrar gösterdik.
// 2 türlüde yapabilirsiniz.
}
case 3: // Eğer seçenek "3" ise yani "Satin Al" ise, işlem yaptırıyoruz.
{
client_print_color(id, id, "^3Basarili bir sekilde^4 %s^3 adli esyayi^4 %i TL^3'ye satin aldiniz.", g_szItemKey[id], g_iCostKey[id]);
} // Gördüğünüz gibi satın alma işlemimizi yaptırdık. Buradan sonrası sizin kodlama bilginize kalmış.
case 4:
{
client_print_color(id, id, "^3Isleminizi iptal ettiniz."); // İşlemi iptal ettik.
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public PlayerDiscount(const id, iCost) // Oyuncu indirimini çekme.
{
new iFlags = get_user_flags(id);
if(iFlags & ADMIN_RCON) // Oyuncunun yetkisi "ADMIN_RCON" ise.
{
iCost = iCost - 3;
return iCost; // Fiyattan "3" eksiltip returnladık.
}
return iCost; // Eğer hiçbirşey olmaz ise aynı fiyatı tekrar döndürdük.
}
GetDataFromFile() // Verileri aktarma fonksiyonu.
{
new iFile = fopen(g_szItems, "rt"); // Esyalar dosyamızı açıp, veriye aktardık.
if(iFile)
{
new szBuffer[MAX_FMT_LENGTH], aData[ItemsData], // Değişkenler.
szItem[32], iMoney[10];
while(fgets(iFile, szBuffer, charsmax(szBuffer)))
{
trim(szBuffer);
if(szBuffer[0] == EOS || szBuffer[0] == ';')
{
continue;
}
parse(szBuffer, szItem, charsmax(szItem), iMoney, charsmax(iMoney));
copy(aData[szItemName], charsmax(aData), szItem); // Burayı direk fiyatı eşitleme gibi yapabilirsiniz, ben sağlama alıp "copy" ile yaptım.
aData[iItemMoney] = str_to_num(iMoney);
ArrayPushArray(g_aItems, aData); // Verileri arraya aktardık.
}
fclose(iFile); // Dosyayı kapattık.
}
}
public plugin_end()
{
ArrayDestroy(g_aItems); // Arrayı kapattık, kapatmazsak sorun çıkartır.
}
Harita İsmi: jail_cennetbahceleri_v2
Harita Yapımcısı: YocaJa
Haritanın Kullanılabileceği mod(lar): Jailbreak
Harita ile İlgili Görseller:















İndirme & RAR Pass:
Harita Yapımcısı: YocaJa
Haritanın Kullanılabileceği mod(lar): Jailbreak
Harita ile İlgili Görseller:















İndirme & RAR Pass:
Bu içeriği görebilmek için kayıt olmanız gerekiyor!
Hoşgeldin, Ziyaretçi
Forumda Ara
Forum İstatistikleri
Son Aktiviteler
Minecraft AFK WebClient P...
Yorumlar:
4
•
Okunma:
840