-
log yapımı
merabalar. yapmak istediğim birşey var ama şöyle söyliyim. Bi log dosyası yapmak istiyorum. Servera giren oyuncuların bilgilerini kaydetsin. Kaydetme sırası da şu şekilde olacak. Mesela cstrike içerisine bi kayitlar.log diye bi dosya oluştursun. içeriginde de satılarda mesela şu şekilde olsun.
1- "Nick" "Steamid" "Ip Adress"
Örnek :
1- "Shakespeare" "STEAM_0:0:25224561" "95.25.66.12"
2- "Hasan" "VALVE_ID_LAN" "123.22.63.11"
gibi bi kayıt oluşturma imkanım varmı acaba ? Teşekkür ederim ilgileriniz icin.
-
Cevap: log yapımı
Elbette var ama bunun nasıl yapıldığını öğrenmek istiyorsan senin için biraz ileri düzey olabilir. Böyle bir plugini kendi başına yapabilmen için, dosya fonksiyonları, array değişkenleri ve for döngüsü hakkında orta düzeyde bilgi gerek.
Yinede istiyorsan, 20-30 dk sonra yapar veririm.
-
Cevap: log yapımı
aslında adamın authid sini almayı nickini çağırmayı ve ip adresini almayı kodlarını biliyorum get_user_ip ve get_user_authid ile dünkü gibi yapabilirm fakat alt alta herkesin sıralı bi şekilde nasıl kayıt ettirebilecegimi bilmiyorum o yuzden yardım istedim.
---------- Alttaki Mesaj Zamani 13:35 ---------- Önceki Mesaj Zamani 13:33 ----------
for komutuyla herkese uygulanıyodu bildigim kadarıyla fakat işte alt alta nası sıralatıcam o var. O yüzden eksik kaldım. Aslında bu plugine ihtiyac duydugum icin istiyorum. Yapıldıktan sonra kodlarını da görürsem bir nevze ögrenmiş olurum
-
Cevap: log yapımı
Tamam 20 dk sonra işim bitince yapar veririm.
-
Cevap: log yapımı
Peki teşekkürler bekliyorum
-
Cevap: log yapımı
PHP- Kodu:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"
// Dosyamizin konumunu file adli bir sabite baglayalim.
new const file[] = "addons/amxmodx/configs/kayitlar.log";
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
}
public plugin_cfg() {
// Belirtilen konumda oyle bir dosya yoksa biz yaratalim.
if(!file_exists(file)) {
new f = fopen(file,"wt");
fclose(f);
}
}
public client_putinserver(id) {
// Oyuncu oyuna girdiginde bilgilerini toplayalim
new name[32],steamid[32],ip[32];
get_user_name(id,name,sizeof(name))
get_user_authid(id,steamid,sizeof(steamid))
get_user_ip(id,ip,sizeof(ip),0)
// Eger ismi daha once dosyanin icine yazilmamissa oyuncuyu ekleyecek fonksiyonu calistiralim.
if(!is_name_exist(id,file)) {
add_player(name,steamid,ip)
}
}
// add player fonksiyonunu yaratalim
public add_player(const name[],const steamid[], const ip[]) {
new WriteData[96];
format(WriteData,sizeof(WriteData),"^"%s^" ^"%s^" ^"%s^"",name,steamid,ip)
write_file(file,WriteData)
}
// is_name_exist stockunu yaratalim. Bu Stock eger oyuncunun ismi dosyada yaziliysa true, yazili degilse false a doner.
stock is_name_exist(id,const file[]) {
// Toplam satir sayısını bulalım.
new total_lines = file_size(file,1);
new txtlen,found_matching;
new szLineText[96],user_name[32];
get_user_name(id,user_name,sizeof(user_name))
// Olası tüm satırlar için kontrol yapmamız gerek. Bunun için de for döngüsünü kullanalım.
for( new line ; line < total_lines ; line++ ) { // Satır, toplam satır sayısına eşit olduğunda döngü duracaktır.
// Dosyada belli bir satırı okutmak için bu fonksiyonu kullanalım.
read_file(file,line,szLineText,sizeof(szLineText),txtlen)
// satır boş ise döngüyi baştan alalım. Böylece olası bir boş satır varsa cpu kullanımından tasarruf etmek için
// başa sarıp bir sonraki satıra atlayalım.
if(szLineText[0] == 0) continue;
new arg_name[32],arg_steamid[32],arg_ip[32];
// Parse = parçala fonksiyonu, belli bir stringi bölmek için kullanılır.
// Peki neye göre bölüyor ? Parse tırnak içinde belirtilmiş tüm yazıları parçalar.
// Örnegin ("a" "b" "c") bir string halinde bulunuyorsa, bu fonksiyonla bu stringi 3 farklı stringe ayırabiliriz.
// ("a") , ("b"), ("c") şekline parçalanmış olur
parse(szLineText,arg_name,sizeof(arg_name),arg_steamid,sizeof(arg_steamid),arg_ip,sizeof(arg_ip))
// Eğer ilk parametrede yazan isim bilgisi ile belirtilen oyuncunun ismi aynı ise eşleşme_bulundu değişkenine 1 ekle.
// Ve döngüyü kır. Böylece boşa cpu kullanmamış oluruz.
if(equali(user_name,arg_name)) {
found_matching++
break;
}
continue
}
// Eger eşleşme bulunduysa true ya döndür.
if(found_matching) return true;
// Bulunmadıysa false.
return false;
}
-
Cevap: log yapımı
çok teşekkür ederim plugin çok güzel çalışıyor. Kodları tek tek açıklamışsın biraz anlıyor gibiyim fakat çok eksiğim var :)
---------- Alttaki Mesaj Zamani 16:45 ---------- Önceki Mesaj Zamani 16:35 ----------
birde bişey sorucam bunu oyuncunun görmesini nasıl sağlarım yani şöyle consolda yazı cıksın adam oyuna girince. ben denedim yazmıyo. yanlış publice ekliyorum sanırsam.
public client_putinserver altına
PHP- Kodu:
console_print( id, "[%s] Isminiz, Steam ID'niz ve IP Adresiniz Server Tarafindan Kayit Altina Alinmistir.",szStag);
console_print( id, "[%s] Isminiz, Steam ID'niz ve IP Adresiniz Server Tarafindan Kayit Altina Alinmistir.",szStag);
ekledim fakat yazmıyor genede. bi yanlış mı yapıyorum acaba
-
Cevap: log yapımı
console_print - konsola yazdırır.
client_print(index,print_type,"mesaj",any) - Oyuncunun ekranına yazdırır.
print_type:
print_chat - chat kısmında yazar
print_center - ekranın ortasında yazar
print_console - konsolda yazar
Örnek Kullanım:
console_print(id,print_chat,"Ip Adresiniz Kayit Altina Alindi [%s]",ip)
Bkz: https://www.csplague.com/pawn-plugin...l-konular.html
-
Cevap: log yapımı
PHP- Kodu:
client_print( id, print_console,"[%s] Isminiz, Steam ID'niz ve IP Adresiniz Server Tarafindan Kayit Altina Alinmistir.",szStag);
client_print( id, print_console,"[%s] Isminiz, Steam ID'niz ve IP Adresiniz Server Tarafindan Kayit Altina Alinmistir.",szStag);
bu şekilde düzelttim client_putinserverda yazmadı client_connect publicine deneyecem bide
-
Cevap: log yapımı
Yine print_console yaptın. Yine konsola gönderdin yazıyı :) print_chat yapıcaksın.
Ve bir yazı putinserver da görünmezse connect te hiç görünmez :)
Bir kişi serverına baglanmak için istek gönderdiğinde olaylar şu sırayla gerçekleşir
1. Client Connect
2. Client Authorized
3. Client Putinserver
-
Cevap: log yapımı
hımm çok güzel anlatmışsın =)) ozaman şöyle birşey yapıcam.
PHP- Kodu:
public yazigoster(id) {
client_print( id, print_console,"[%s] Isminiz, Steam ID'niz ve IP Adresiniz Server Tarafindan Kayit Altina Alinmistir.",szStag);
client_print( id, print_console,"[%s] Isminiz, Steam ID'niz ve IP Adresiniz Server Tarafindan Kayit Altina Alinmistir.",szStag);
}
böyle bi public olusturucam sonra putinservera da şunu ekleyecem
PHP- Kodu:
set_task(2.0,"yazigoster")
kesin çözüm bu olur heralde :)
---------- Alttaki Mesaj Zamani 17:11 ---------- Önceki Mesaj Zamani 17:08 ----------
ve sonuç :)
PHP- Kodu:
BUILD 4883 SERVER (0 CRC)
Server # 44
CooL ` Shakespeare connected
CooL ` Shakespeare is joining the Counter-Terrorist force
Scoring will not start until both teams have players
Bu server sXe Injected tarafindan korunmaktadir 13.1
indirmek icin www.senoyna.com
[COOLCLAN] Isminiz, Steam ID'niz ve IP Adresiniz Server Tarafindan Kayit Altina Alinmistir.
[COOLCLAN] Isminiz, Steam ID'niz ve IP Adresiniz Server Tarafindan Kayit Altina Alinmistir.
---------- Alttaki Mesaj Zamani 17:36 ---------- Önceki Mesaj Zamani 17:11 ----------
gene bişey buldum :)) sonuç olumlu fakat her oyuncu girince bunu benim konsolumada yazıyo yani başka bi adam girsin sw ra beinm konsolda da cıkıyo :)
-
Cevap: log yapımı
-
Cevap: log yapımı
PHP- Kodu:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"
// Dosyamizin konumunu file adli bir sabite baglayalim.
new const file[] = "addons/amxmodx/configs/kayitlar.log";
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
}
public plugin_cfg() {
// Belirtilen konumda oyle bir dosya yoksa biz yaratalim.
if(!file_exists(file)) {
new f = fopen(file,"wt");
fclose(f);
}
}
public client_putinserver(id) {
// Oyuncu oyuna girdiginde bilgilerini toplayalim
new name[32],steamid[32],ip[32];
get_user_name(id,name,sizeof(name))
get_user_authid(id,steamid,sizeof(steamid))
get_user_ip(id,ip,sizeof(ip),0)
// Eger ismi daha once dosyanin icine yazilmamissa oyuncuyu ekleyecek fonksiyonu calistiralim.
if(!is_name_exist(id,file)) {
add_player(name,steamid,ip)
}
set_task(2.0,"yazigoster") // BURAYA BU KODU EKLEDIM CONSOLDA GOSTERSIN DIYE
}
// add player fonksiyonunu yaratalim
public add_player(const name[],const steamid[], const ip[]) {
new WriteData[96];
format(WriteData,sizeof(WriteData),"^"%s^" ^"%s^" ^"%s^"",name,steamid,ip)
write_file(file,WriteData)
}
// is_name_exist stockunu yaratalim. Bu Stock eger oyuncunun ismi dosyada yaziliysa true, yazili degilse false a doner.
stock is_name_exist(id,const file[]) {
// Toplam satir sayısını bulalım.
new total_lines = file_size(file,1);
new txtlen,found_matching;
new szLineText[96],user_name[32];
get_user_name(id,user_name,sizeof(user_name))
// Olası tüm satırlar için kontrol yapmamız gerek. Bunun için de for döngüsünü kullanalım.
for( new line ; line < total_lines ; line++ ) { // Satır, toplam satır sayısına eşit olduğunda döngü duracaktır.
// Dosyada belli bir satırı okutmak için bu fonksiyonu kullanalım.
read_file(file,line,szLineText,sizeof(szLineText),txtlen)
// satır boş ise döngüyi baştan alalım. Böylece olası bir boş satır varsa cpu kullanımından tasarruf etmek için
// başa sarıp bir sonraki satıra atlayalım.
if(szLineText[0] == 0) continue;
new arg_name[32],arg_steamid[32],arg_ip[32];
// Parse = parçala fonksiyonu, belli bir stringi bölmek için kullanılır.
// Peki neye göre bölüyor ? Parse tırnak içinde belirtilmiş tüm yazıları parçalar.
// Örnegin ("a" "b" "c") bir string halinde bulunuyorsa, bu fonksiyonla bu stringi 3 farklı stringe ayırabiliriz.
// ("a") , ("b"), ("c") şekline parçalanmış olur
parse(szLineText,arg_name,sizeof(arg_name),arg_steamid,sizeof(arg_steamid),arg_ip,sizeof(arg_ip))
// Eğer ilk parametrede yazan isim bilgisi ile belirtilen oyuncunun ismi aynı ise eşleşme_bulundu değişkenine 1 ekle.
// Ve döngüyü kır. Böylece boşa cpu kullanmamış oluruz.
if(equali(user_name,arg_name)) {
found_matching++
break;
}
continue
}
// Eger eşleşme bulunduysa true ya döndür.
if(found_matching) return true;
// Bulunmadıysa false.
return false;
}
public yazigoster(id) {
client_print( id, print_console,"[%s] Isminiz, Steam ID'niz ve IP Adresiniz Server Tarafindan Kayit Altina Alinmistir.",szStag);
client_print( id, print_console,"[%s] Isminiz, Steam ID'niz ve IP Adresiniz Server Tarafindan Kayit Altina Alinmistir.",szStag);
}
yukarıda gösterdim public client_putinserver kısmına set_task ekledim yaptıgım publici çağırdım 2 saniye sonra fakat yazı yazıyo ama ben oyundayken başkası oyuna girdiği zaman bende de tekrar aynı yazı cıkıyo. Onu nasıl fixlerim ? yani sadece oyuna girende cıkıcak böyle yaptıgım zaman her oyuna giren oldugunda yazı benım konsolda da cıkıyo.
-
Cevap: log yapımı
Herkeste gösteriyor. set_task(time,"Func",index)
Buyur dene.
PHP- Kodu:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"
// Dosyamizin konumunu file adli bir sabite baglayalim.
new const file[] = "addons/amxmodx/configs/kayitlar.log";
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
}
public plugin_cfg() {
// Belirtilen konumda oyle bir dosya yoksa biz yaratalim.
if(!file_exists(file)) {
new f = fopen(file,"wt");
fclose(f);
}
}
public client_putinserver(id) {
// Oyuncu oyuna girdiginde bilgilerini toplayalim
new name[32],steamid[32],ip[32];
get_user_name(id,name,sizeof(name))
get_user_authid(id,steamid,sizeof(steamid))
get_user_ip(id,ip,sizeof(ip),0)
// Eger ismi daha once dosyanin icine yazilmamissa oyuncuyu ekleyecek fonksiyonu calistiralim.
if(!is_name_exist(id,file)) {
add_player(name,steamid,ip)
}
set_task(2.0,"yazigoster",id) // BURAYA BU KODU EKLEDIM CONSOLDA GOSTERSIN DIYE
}
// add player fonksiyonunu yaratalim
public add_player(const name[],const steamid[], const ip[]) {
new WriteData[96];
format(WriteData,sizeof(WriteData),"^"%s^" ^"%s^" ^"%s^"",name,steamid,ip)
write_file(file,WriteData)
}
// is_name_exist stockunu yaratalim. Bu Stock eger oyuncunun ismi dosyada yaziliysa true, yazili degilse false a doner.
stock is_name_exist(id,const file[]) {
// Toplam satir sayısını bulalım.
new total_lines = file_size(file,1);
new txtlen,found_matching;
new szLineText[96],user_name[32];
get_user_name(id,user_name,sizeof(user_name))
// Olası tüm satırlar için kontrol yapmamız gerek. Bunun için de for döngüsünü kullanalım.
for( new line ; line < total_lines ; line++ ) { // Satır, toplam satır sayısına eşit olduğunda döngü duracaktır.
// Dosyada belli bir satırı okutmak için bu fonksiyonu kullanalım.
read_file(file,line,szLineText,sizeof(szLineText),txtlen)
// satır boş ise döngüyi baştan alalım. Böylece olası bir boş satır varsa cpu kullanımından tasarruf etmek için
// başa sarıp bir sonraki satıra atlayalım.
if(szLineText[0] == 0) continue;
new arg_name[32],arg_steamid[32],arg_ip[32];
// Parse = parçala fonksiyonu, belli bir stringi bölmek için kullanılır.
// Peki neye göre bölüyor ? Parse tırnak içinde belirtilmiş tüm yazıları parçalar.
// Örnegin ("a" "b" "c") bir string halinde bulunuyorsa, bu fonksiyonla bu stringi 3 farklı stringe ayırabiliriz.
// ("a") , ("b"), ("c") şekline parçalanmış olur
parse(szLineText,arg_name,sizeof(arg_name),arg_steamid,sizeof(arg_steamid),arg_ip,sizeof(arg_ip))
// Eğer ilk parametrede yazan isim bilgisi ile belirtilen oyuncunun ismi aynı ise eşleşme_bulundu değişkenine 1 ekle.
// Ve döngüyü kır. Böylece boşa cpu kullanmamış oluruz.
if(equali(user_name,arg_name)) {
found_matching++
break;
}
continue
}
// Eger eşleşme bulunduysa true ya döndür.
if(found_matching) return true;
// Bulunmadıysa false.
return false;
}
public yazigoster(id) {
client_print( id, print_console,"[%s] Isminiz, Steam ID'niz ve IP Adresiniz Server Tarafindan Kayit Altina Alinmistir.",szStag);
client_print( id, print_console,"[%s] Isminiz, Steam ID'niz ve IP Adresiniz Server Tarafindan Kayit Altina Alinmistir.",szStag);
}
-
Cevap: log yapımı
canberkcim dediğini bende yaptım set_task(2.0,"yazigoster",id) şeklinde daha önce bende yazdım bunu fakat bu sefer hiç kimsede göstermiyor :(( ama oradaki id yi silip set_task(2.0,"yazigoster") yazınca gosterıyo ama bu sefer herkeste cıkıyo. bi yerde hatamı yapıyoruz acaba
-
Cevap: log yapımı
Konsola yazıyor bu yazı ... Print_chat yap chatte görünmesi için.
-
Cevap: log yapımı
tamam güzel söylüyosun bende konsola yazmasını istiyorum. chat ile bi alakası olmasını istemiyorum fakat yazmıyor ki :) buda konsol kaydı bak
PHP- Kodu:
Commencing connection retry to 31.210.45.91:27015
Connecting to 31.210.45.91:27015...
This server is running HLDS Ping Booster v1.0 from UDP Soft Ltd.
For more cool software, visit https://www.udpsoft.com/
Server is currently running at %i FPS
Connection accepted by 31.210.45.91:27015
* Privileges set
BUILD 4883 SERVER (0 CRC)
Server # 3
[COOLCLAN] sXe Injected Kapatildi.
CooL ` Shakespeare connected
CooL ` Shakespeare is joining the Counter-Terrorist force
Scoring will not start until both te
-
Cevap: log yapımı
Kod:
BUILD 3147 SERVER (0 CRC)
Server # 1
L 01/05/2013 - 23:50:03: [admin.amxx] Login: "Nemesis*<1><VALVE_ID_LOOPBACK><>" became an admin (account "loopback") (access "abcdefghijklmnopqrstu") (address "loopback")
Nemesis* connected
Couldn't open file overviews/soccerjam.txt. Using default values for overiew mode.
Couldn't open file overviews/soccerjam.txt. Using default values for overiew mode.
Nemesis* is joining the Counter-Terrorist force
Scoring will not start until both teams have players
[] Isminiz, Steam ID'niz ve IP Adresiniz Server Tarafindan Kayit Altina Alinmistir.
[] Isminiz, Steam ID'niz ve IP Adresiniz Server Tarafindan Kayit Altina Alinmistir.
L 01/05/2013 - 23:50:08: [mapchooser4.amxx] xvars for mapchooser
Son gönderdiğim sma da sadece szTag ı sildim. Başka bir değişiklik yapmadım ve yazıyor ?
-
Cevap: log yapımı
allah allah bende niye yazmıyor ki ? ayrıca son gönderdigin sma da
set_task(2.0,"yazigoster",id) kullanmışsın. oradaki set_task içindeki id yi yazınca yazı göstermiyor bende. Fakat id yi silince set_task(2.0,"yazigoster") şeklinde yazınca yazı gösteriyor bu sefer. Fakat her oyuna giren kişi için tekrar bende de çıkıyor yazı. son sma yı denedim gene cıkmıyo bende acaba nerde hatam var.
---------- Alttaki Mesaj Zamani 00:27 ---------- Önceki Mesaj Zamani 00:04 ----------
neyse sıkıntı yok hocam ben eski haliyle kullanırım :)
-
Cevap: log yapımı
Çözülmüş İsteklere taşındı.
SEO by vBSEO 3.6.0 ©2011, Crawlability, Inc.