Discord sunucumuz açılmıştır, hepinizi bekleriz

https://discord.gg/43gGDQe6tS

SQL Güncelleme ve Silme işlemi

Eklenti sorunlarınız ve özel eklenti istekleriniz

Moderatör: Moderatörler


Konu Sahibi
rennie
Mesajlar: 33
Kayıt: Sal May 07, 2019 3:52 pm

SQL Güncelleme ve Silme işlemi

Mesaj gönderen rennie »

Daha öncede benzer konu açmıştım ama sonuca varamadım. Şimdi farklı bir sistem ile oyuncu bilgilerini çekip SQL ' e kayıt yapıyorum. Ama bu işlemi komut ile yapıyorum. Eklentiye sma ' yı koyuyorum. İstediğim olay komut olayını kaldırmak. Direk oyuna dahil olan kişilerini otomatik olarak sql' e eklesin. Daha sonra oyuncunun HP si 100 iken vurulduğunda otomatik olarak hp kısmını güncellesin. Eğer her hangi bir oyuncu çıkarsa onu tekrar SQL ' den silsin istiyorum. Umarım derdimi anlatabilmişimdir.

amx_playerinfo "nick" bu komutu hangi oyuncu kullanırsa onun bilgilerini ekliyor ( bunun kaldırılmasını istiyorum )

Kod: Tümünü seç

	#include <amxmodx>
	#include <amxmisc>
	#include <sqlx>

	#define PLUGIN "al3amri"
	#define VERSION "1.1"
	#define AUTHOR "al3amri"

		new Host[]	= "127.0.0.1"
		new User[]	= "root"
		new Pass[]	= "1256"
		new Db[]	= "amxx_dev"

	new PlayedTime[33]
	new pinfo;

		new Handle:g_SqlTuple
		new g_Error[512]

	public plugin_init() {
	pinfo = register_cvar("amx_pinfo", "1")
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_concmd("amx_playerinfo", "admin_pinfo", ADMIN_KICK,"<#PlayerName#>")
	register_clcmd("say", "handle_say");
	}
	public handle_say(id)  
	{ 
	static said[12] 
	read_argv(1, said, 11) 
	if(equali(said, "/mytime")) 
	{ 
	static ctime[64], timep; 
	timep = get_user_time(id, 1) / 60; 
	get_time("%H:%M:%S", ctime, 63); 
	switch(get_pcvar_num(pinfo)) 
	{ 
	case 0: return PLUGIN_HANDLED; 
	case 1 : 
	{ 
	client_print(id, print_chat, "[AMXX] You have been playing on the server for: %d minute%s.", timep, timep == 1 ? "" : "s");  
	client_print(id, print_chat, "[AMXX] Your total played time on the server: %d minute%s.", timep+PlayedTime[id], timep+PlayedTime[id] == 1 ? "" : "s"); 
	} 
	} 
	return PLUGIN_HANDLED; 
	} 
	return PLUGIN_CONTINUE; 
	}
	public admin_pinfo(id,level,cid)
	{
	if (!cmd_access(id,level,cid,2))
	return PLUGIN_HANDLED

	static arg[32];
	read_argv(1, arg, 31)

	new user = cmd_target(id, arg, 2);

	if(!user)
	return PLUGIN_HANDLED
	new userid[32], userip[32], name[32], iL_Frag;

	new team[32]
	get_user_team(id,team,31)

	new my_health = get_user_health(id)

	new clip,ammo
	new weapon = get_user_weapon(id,clip,ammo)

	new isAlive = is_user_alive(id)
	if((isAlive) == 1)

	get_user_authid(id,userid,31)
	get_user_ip(id,userip,31,1)
	get_user_name(id,name,31)
	iL_Frag = get_user_frags(id)
	static timep, ctime[64]
	timep = get_user_time(user, 1) / 60
	get_time("%H:%M:%S", ctime, 63)

	console_print(id,"Name: %s",name)
	console_print(id,"Steamid: %s",userid)
	console_print(id,"IP: %s",userip)
	console_print(id,"HP: %i",my_health)
	console_print(id,"Frag: %i",iL_Frag)
	console_print(id,"Takim: %s",team)
	console_print(id,"Durum: %i",isAlive)
	console_print(id,"Silah: %d",weapon)

		// sql kayıt

		g_SqlTuple = SQL_MakeDbTuple(Host,User,Pass,Db)

		new ErrorCode,Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
	    if(SqlConnection == Empty_Handle)
	        set_fail_state(g_Error)
	    
	    new Handle:Query = SQL_PrepareQuery(SqlConnection,"REPLACE INTO `players` (`Name`,`Steamid`,`IP`,`HP`,`Frag`,`Takim`,`Durum`,`Silah`) VALUES ('%s','%s','%s','%i','%i','%s','%i','%d');",name,userid,userip,my_health,iL_Frag,team,isAlive,weapon)


            // bu komutlar yanlış olabilir ve farklı bir şekilde yapılabilir.
	    new Handle:Query2 = SQL_PrepareQuery(SqlConnection,"SELECT * FROM players WHERE userid='%s'", userid)
	    new Handle:Query3 = SQL_PrepareQuery(SqlConnection,"UPDATE `players` SET `Silah`='%d' WHERE `userid`='%s'",weapon, userid)  

	    
	    if(!SQL_Execute(Query))
	    {
	        SQL_QueryError(Query,g_Error,511)
	        set_fail_state(g_Error)
	    }
	    SQL_FreeHandle(Query)
	    SQL_FreeHandle(Query2)
	    SQL_FreeHandle(Query3)
	    SQL_FreeHandle(SqlConnection)

		// sql kayıt

	console_print(id,"%s - %d minute%s.",name, timep, timep == 1 ? "" : "s");
	console_print(id,"%s - %d minute%s.",name, timep+PlayedTime[user], timep == 1 ? "" : "s"); 

	return PLUGIN_HANDLED;
	}
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.

Link:
Linklerini gizle
Linki Kopyala

F.T.H
Mesajlar: 546
Kayıt: Pzr Mar 19, 2017 12:55 pm
Konum: Ϲ★
İletişim:

SQL Güncelleme ve Silme işlemi

Mesaj gönderen F.T.H »

Bu dediğini yaparız yapmasına fakat sunucuyu fazla yorar
Eğer yapmak istediğin oyundaki kişilerin bilgilerini siteye eklemek ise bunu kullanabilirsin veya GameQ ile de yapılabilir
Examples içerisinden View.php düzenlersen istediğine ulaşırsın

https://github.com/xPaw/PHP-Source-Query
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
rennie
Mesajlar: 33
Kayıt: Sal May 07, 2019 3:52 pm

SQL Güncelleme ve Silme işlemi

Mesaj gönderen rennie »

Biliyorum GameQ ile yapılabiliyor, hatta bir çok RCON Query sistemi var ama onlara takım, hp, gibi özellikleri çekme mevcut değil. Veya mevcut ise bilmiyorum çok denedim olmuyor.

Paylaştığım eklentiye düzenleyebilirsen sevinirim.

Link:
Linklerini gizle
Linki Kopyala

F.T.H
Mesajlar: 546
Kayıt: Pzr Mar 19, 2017 12:55 pm
Konum: Ϲ★
İletişim:

SQL Güncelleme ve Silme işlemi

Mesaj gönderen F.T.H »

rennie yazdı: Cum Oca 10, 2020 3:34 pm Biliyorum GameQ ile yapılabiliyor, hatta bir çok RCON Query sistemi var ama onlara takım, hp, gibi özellikleri çekme mevcut değil. Veya mevcut ise bilmiyorum çok denedim olmuyor.

Paylaştığım eklentiye düzenleyebilirsen sevinirim.
Birkaç saniyelik gecikme koydum ki hiç yoktan sunucuyu yormasın fakat kullanmanı tavsiye etmiyorum

Kod: Tümünü seç

#include <amxmodx>
#include <amxmisc>
#include <sqlx>
#include <hamsandwich>

#define PLUGIN "al3amri"
#define VERSION "1.1"
#define AUTHOR "al3amri"

#if AMXX_VERSION_NUM < 183
    #define client_disconnected client_disconnect
#endif


new Host[]= "127.0.0.1"
new User[]= "root"
new Pass[]= "1256"
new Db[]= "amxx_dev"


//new PlayedTime[33]

new Handle:g_SqlTuple
new g_Error[512]
new bool:YeniKayit[33]
new ErrorCode,Handle:SqlConnection

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    RegisterHam(Ham_TakeDamage, "player", "Hasar") // Oyuncu hasar aldiginda
    register_event("DeathMsg", "Oldu", "a") // Olen kisiyi ve Olduren kisinin bilgisini
    register_event("HLTV", "yeniround", "a", "1=0", "2=0") // el basi herkesin bilgisini guncelliyoruz
    sqlbaslangic()
}

public yeniround()
{
    for(new Uid=1; Uid <= get_maxplayers(); Uid++)
    {
        if(is_user_connected(Uid))
        {
            set_task(0.5,"BilgileriEkle",Uid)
        }
    }
}

public Hasar(victim, inflictor, attacker, Float:dmg, dmgbits) 
{
    remove_task(victim)
    set_task(5.0,"BilgileriEkle",victim)
}

public Oldu()
{
    set_task(0.5,"BilgileriEkle",read_data(2))
    set_task(1.0,"BilgileriEkle",read_data(1))
}

sqlbaslangic()
{
    g_SqlTuple = SQL_MakeDbTuple(Host,User,Pass,Db)

    SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
    if(SqlConnection == Empty_Handle)
        set_fail_state(g_Error)
}

public client_putinserver(id)
{
    YeniKayit[id] = true
    KayitSil(id)
    set_task(2.0,"BilgileriEkle",id)
}

public client_disconnected(id)
{
    KayitSil(id)
}

public KayitSil(id)
{
    new userid[32]
    get_user_authid(id,userid,31)
    new Handle:Query = SQL_PrepareQuery(SqlConnection,"DELETE FROM `players` WHERE `Steamid`='%s'",userid)
    if(!SQL_Execute(Query))
    {
        SQL_QueryError(Query,g_Error,511)
        set_fail_state(g_Error)
    }
    SQL_FreeHandle(Query)
}

public BilgileriEkle(id)
{
    new userid[32], userip[32], name[32], iL_Frag;

    new team[32]
    get_user_team(id,team,31)

    new my_health = get_user_health(id)

    new clip,ammo
    new weapon = get_user_weapon(id,clip,ammo)

    new isAlive = is_user_alive(id)

    get_user_authid(id,userid,31)
    get_user_ip(id,userip,31,1)
    get_user_name(id,name,31)
    iL_Frag = get_user_frags(id)
    /*static timep, ctime[64]
    timep = get_user_time(id, 1) / 60
    get_time("%H:%M:%S", ctime, 63)

    console_print(id,"Name: %s",name)
    console_print(id,"Steamid: %s",userid)
    console_print(id,"IP: %s",userip)
    console_print(id,"HP: %i",my_health)
    console_print(id,"Frag: %i",iL_Frag)
    console_print(id,"Takim: %s",team)
    console_print(id,"Durum: %i",isAlive)
    console_print(id,"Silah: %d",weapon)*/

// sql kayıt

    new Handle:Query
    if(YeniKayit[id])
    {
        Query = SQL_PrepareQuery(SqlConnection,"INSERT INTO `players` (`Name`,`Steamid`,`IP`,`HP`,`Frag`,`Takim`,`Durum`,`Silah`) VALUES ('%s','%s','%s','%i','%i','%s','%i','%d');",name,userid,userip,my_health,iL_Frag,team,isAlive,weapon)
        YeniKayit[id] = false
    }
    else
        Query = SQL_PrepareQuery(SqlConnection,"UPDATE `players` SET `Name`='%s',`HP`='%i',`Frag`='%i',`Takim`='%s',`Durum`='%i',`Silah`='%d' WHERE `Steamid`='%s';",name,my_health,iL_Frag,team,isAlive,weapon,userid)


            // bu komutlar yanlış olabilir ve farklı bir şekilde yapılabilir.
   // new Handle:Query2 = SQL_PrepareQuery(SqlConnection,"SELECT * FROM `players` WHERE `Steamid`='%s'", userid)
   // new Handle:Query3 = SQL_PrepareQuery(SqlConnection,"UPDATE `players` SET `Silah`='%d' WHERE `Steamid`='%s'",weapon, userid)  

    if(!SQL_Execute(Query))
    {
        SQL_QueryError(Query,g_Error,511)
        set_fail_state(g_Error)
    }
    SQL_FreeHandle(Query)
    //SQL_FreeHandle(Query2)
    //SQL_FreeHandle(Query3)
    //SQL_FreeHandle(SqlConnection) // Bunu harita degisiminde kapatmak gerek yoksa 1 kayit ekler bir daha eklemez

// sql kayıt

    return PLUGIN_HANDLED;
}

public plugin_end()
{
    new Handle:Query = SQL_PrepareQuery(SqlConnection,"DELETE FROM `players`") // Harita degisiminde tum kayitlari sildiriyoruz
    if(!SQL_Execute(Query))
    {
        SQL_QueryError(Query,g_Error,511)
        set_fail_state(g_Error)
    }
    SQL_FreeHandle(Query)
    SQL_FreeHandle(SqlConnection);
}

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
rennie
Mesajlar: 33
Kayıt: Sal May 07, 2019 3:52 pm

SQL Güncelleme ve Silme işlemi

Mesaj gönderen rennie »

Cevabın için teşekkür ederim dostum. Sabah deneyeceğim olumlu olumsuz sonucu sana bildireceğim

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
rennie
Mesajlar: 33
Kayıt: Sal May 07, 2019 3:52 pm

SQL Güncelleme ve Silme işlemi

Mesaj gönderen rennie »

F.T.H yazdı: Cum Oca 10, 2020 6:41 pm
rennie yazdı: Cum Oca 10, 2020 3:34 pm Biliyorum GameQ ile yapılabiliyor, hatta bir çok RCON Query sistemi var ama onlara takım, hp, gibi özellikleri çekme mevcut değil. Veya mevcut ise bilmiyorum çok denedim olmuyor.

Paylaştığım eklentiye düzenleyebilirsen sevinirim.
Birkaç saniyelik gecikme koydum ki hiç yoktan sunucuyu yormasın fakat kullanmanı tavsiye etmiyorum

Kod: Tümünü seç

#include <amxmodx>
#include <amxmisc>
#include <sqlx>
#include <hamsandwich>

#define PLUGIN "al3amri"
#define VERSION "1.1"
#define AUTHOR "al3amri"

#if AMXX_VERSION_NUM < 183
    #define client_disconnected client_disconnect
#endif


new Host[]= "127.0.0.1"
new User[]= "root"
new Pass[]= "1256"
new Db[]= "amxx_dev"


//new PlayedTime[33]

new Handle:g_SqlTuple
new g_Error[512]
new bool:YeniKayit[33]
new ErrorCode,Handle:SqlConnection

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    RegisterHam(Ham_TakeDamage, "player", "Hasar") // Oyuncu hasar aldiginda
    register_event("DeathMsg", "Oldu", "a") // Olen kisiyi ve Olduren kisinin bilgisini
    register_event("HLTV", "yeniround", "a", "1=0", "2=0") // el basi herkesin bilgisini guncelliyoruz
    sqlbaslangic()
}

public yeniround()
{
    for(new Uid=1; Uid <= get_maxplayers(); Uid++)
    {
        if(is_user_connected(Uid))
        {
            set_task(0.5,"BilgileriEkle",Uid)
        }
    }
}

public Hasar(victim, inflictor, attacker, Float:dmg, dmgbits) 
{
    remove_task(victim)
    set_task(5.0,"BilgileriEkle",victim)
}

public Oldu()
{
    set_task(0.5,"BilgileriEkle",read_data(2))
    set_task(1.0,"BilgileriEkle",read_data(1))
}

sqlbaslangic()
{
    g_SqlTuple = SQL_MakeDbTuple(Host,User,Pass,Db)

    SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
    if(SqlConnection == Empty_Handle)
        set_fail_state(g_Error)
}

public client_putinserver(id)
{
    YeniKayit[id] = true
    KayitSil(id)
    set_task(2.0,"BilgileriEkle",id)
}

public client_disconnected(id)
{
    KayitSil(id)
}

public KayitSil(id)
{
    new userid[32]
    get_user_authid(id,userid,31)
    new Handle:Query = SQL_PrepareQuery(SqlConnection,"DELETE FROM `players` WHERE `Steamid`='%s'",userid)
    if(!SQL_Execute(Query))
    {
        SQL_QueryError(Query,g_Error,511)
        set_fail_state(g_Error)
    }
    SQL_FreeHandle(Query)
}

public BilgileriEkle(id)
{
    new userid[32], userip[32], name[32], iL_Frag;

    new team[32]
    get_user_team(id,team,31)

    new my_health = get_user_health(id)

    new clip,ammo
    new weapon = get_user_weapon(id,clip,ammo)

    new isAlive = is_user_alive(id)

    get_user_authid(id,userid,31)
    get_user_ip(id,userip,31,1)
    get_user_name(id,name,31)
    iL_Frag = get_user_frags(id)
    /*static timep, ctime[64]
    timep = get_user_time(id, 1) / 60
    get_time("%H:%M:%S", ctime, 63)

    console_print(id,"Name: %s",name)
    console_print(id,"Steamid: %s",userid)
    console_print(id,"IP: %s",userip)
    console_print(id,"HP: %i",my_health)
    console_print(id,"Frag: %i",iL_Frag)
    console_print(id,"Takim: %s",team)
    console_print(id,"Durum: %i",isAlive)
    console_print(id,"Silah: %d",weapon)*/

// sql kayıt

    new Handle:Query
    if(YeniKayit[id])
    {
        Query = SQL_PrepareQuery(SqlConnection,"INSERT INTO `players` (`Name`,`Steamid`,`IP`,`HP`,`Frag`,`Takim`,`Durum`,`Silah`) VALUES ('%s','%s','%s','%i','%i','%s','%i','%d');",name,userid,userip,my_health,iL_Frag,team,isAlive,weapon)
        YeniKayit[id] = false
    }
    else
        Query = SQL_PrepareQuery(SqlConnection,"UPDATE `players` SET `Name`='%s',`HP`='%i',`Frag`='%i',`Takim`='%s',`Durum`='%i',`Silah`='%d' WHERE `Steamid`='%s';",name,my_health,iL_Frag,team,isAlive,weapon,userid)


            // bu komutlar yanlış olabilir ve farklı bir şekilde yapılabilir.
   // new Handle:Query2 = SQL_PrepareQuery(SqlConnection,"SELECT * FROM `players` WHERE `Steamid`='%s'", userid)
   // new Handle:Query3 = SQL_PrepareQuery(SqlConnection,"UPDATE `players` SET `Silah`='%d' WHERE `Steamid`='%s'",weapon, userid)  

    if(!SQL_Execute(Query))
    {
        SQL_QueryError(Query,g_Error,511)
        set_fail_state(g_Error)
    }
    SQL_FreeHandle(Query)
    //SQL_FreeHandle(Query2)
    //SQL_FreeHandle(Query3)
    //SQL_FreeHandle(SqlConnection) // Bunu harita degisiminde kapatmak gerek yoksa 1 kayit ekler bir daha eklemez

// sql kayıt

    return PLUGIN_HANDLED;
}

public plugin_end()
{
    new Handle:Query = SQL_PrepareQuery(SqlConnection,"DELETE FROM `players`") // Harita degisiminde tum kayitlari sildiriyoruz
    if(!SQL_Execute(Query))
    {
        SQL_QueryError(Query,g_Error,511)
        set_fail_state(g_Error)
    }
    SQL_FreeHandle(Query)
    SQL_FreeHandle(SqlConnection);
}

Farklı hatalar alıyorum. Örneğin 10 oyuncu varsa 5 veya 6 tanesini ekliyor SQL' e.
Bazılarını üst üste ekliyor.
Tabloda 1 Numarada "a" isimli bir oyuncu varken onun bilgilerini güncelleyip "b" numaralı oyuncunun bilgileri ile değiştiriyor...


Bir hata örneği:

Kod: Tümünü seç

L 01/11/2020 - 06:17:53: [AMXX] Plugin ("67d9e53220d4d341381ccaeacd05b473.amxx") is setting itself as failed.
L 01/11/2020 - 06:17:53: [AMXX] Plugin says: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 're Dead','BOT','127.0.0.1','100','0','CT','1','16')' at line 1
L 01/11/2020 - 06:17:53: [AMXX] Displaying debug trace (plugin "67d9e53220d4d341381ccaeacd05b473.amxx", version "1.1")
L 01/11/2020 - 06:17:53: [AMXX] Run time error 1: forced exit
L 01/11/2020 - 06:17:53: [AMXX]    [0] 67d9e53220d4d341381ccaeacd05b473.sma::BilgileriEkle (line 143)

Link:
Linklerini gizle
Linki Kopyala

F.T.H
Mesajlar: 546
Kayıt: Pzr Mar 19, 2017 12:55 pm
Konum: Ϲ★
İletişim:

SQL Güncelleme ve Silme işlemi

Mesaj gönderen F.T.H »

rennie yazdı: Cmt Oca 11, 2020 10:15 am Farklı hatalar alıyorum. Örneğin 10 oyuncu varsa 5 veya 6 tanesini ekliyor SQL' e.
Bazılarını üst üste ekliyor.
Tabloda 1 Numarada "a" isimli bir oyuncu varken onun bilgilerini güncelleyip "b" numaralı oyuncunun bilgileri ile değiştiriyor...
Botların steamidsi aynı olduğu için öyle olması normal
Ben deneyip attım sana eklentiyi

Botlar ile deneyeceksen geçici olarak bunu kullan isime göre değiştirir

Kod: Tümünü seç

#include <amxmodx>
#include <amxmisc>
#include <sqlx>
#include <hamsandwich>

#define PLUGIN "al3amri"
#define VERSION "1.1"
#define AUTHOR "al3amri"

#if AMXX_VERSION_NUM < 183
    #define client_disconnected client_disconnect
#endif


new Host[]= "127.0.0.1"
new User[]= "root"
new Pass[]= "1256"
new Db[]= "amxx_dev"


//new PlayedTime[33]

new Handle:g_SqlTuple
new g_Error[512]
new bool:YeniKayit[33]
new ErrorCode,Handle:SqlConnection

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    RegisterHam(Ham_TakeDamage, "player", "Hasar") // Oyuncu hasar aldiginda
    register_event("DeathMsg", "Oldu", "a") // Olen kisiyi ve Olduren kisinin bilgisini
    register_event("HLTV", "yeniround", "a", "1=0", "2=0") // el basi herkesin bilgisini guncelliyoruz
    sqlbaslangic()
}

public yeniround()
{
    for(new Uid=1; Uid <= get_maxplayers(); Uid++)
    {
        if(is_user_connected(Uid))
        {
            set_task(0.5,"BilgileriEkle",Uid)
        }
    }
}

public Hasar(victim, inflictor, attacker, Float:dmg, dmgbits) 
{
    remove_task(victim)
    set_task(5.0,"BilgileriEkle",victim)
}

public Oldu()
{
    set_task(0.5,"BilgileriEkle",read_data(2))
    set_task(1.0,"BilgileriEkle",read_data(1))
}

sqlbaslangic()
{
    g_SqlTuple = SQL_MakeDbTuple(Host,User,Pass,Db)

    SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
    if(SqlConnection == Empty_Handle)
        set_fail_state(g_Error)
}

public client_putinserver(id)
{
    YeniKayit[id] = true
    KayitSil(id)
    set_task(2.0,"BilgileriEkle",id)
}

public client_disconnected(id)
{
    KayitSil(id)
}

public KayitSil(id)
{
    new isim[32]
    get_user_name(id,isim,31)
    new Handle:Query = SQL_PrepareQuery(SqlConnection,"DELETE FROM `players` WHERE `Name`='%s'",isim)
    if(!SQL_Execute(Query))
    {
        SQL_QueryError(Query,g_Error,511)
        set_fail_state(g_Error)
    }
    SQL_FreeHandle(Query)
}

public BilgileriEkle(id)
{
    new userid[32], userip[32], name[32], iL_Frag;

    new team[32]
    get_user_team(id,team,31)

    new my_health = get_user_health(id)

    new clip,ammo
    new weapon = get_user_weapon(id,clip,ammo)

    new isAlive = is_user_alive(id)
    if(!isAlive)
        my_health = 0

    get_user_authid(id,userid,31)
    get_user_ip(id,userip,31,1)
    get_user_name(id,name,31)
    iL_Frag = get_user_frags(id)
    /*static timep, ctime[64]
    timep = get_user_time(id, 1) / 60
    get_time("%H:%M:%S", ctime, 63)

    console_print(id,"Name: %s",name)
    console_print(id,"Steamid: %s",userid)
    console_print(id,"IP: %s",userip)
    console_print(id,"HP: %i",my_health)
    console_print(id,"Frag: %i",iL_Frag)
    console_print(id,"Takim: %s",team)
    console_print(id,"Durum: %i",isAlive)
    console_print(id,"Silah: %d",weapon)*/

// sql kayıt

    new Handle:Query
    if(YeniKayit[id])
    {
        Query = SQL_PrepareQuery(SqlConnection,"INSERT INTO `players` (`Name`,`Steamid`,`IP`,`HP`,`Frag`,`Takim`,`Durum`,`Silah`) VALUES ('%s','%s','%s','%i','%i','%s','%i','%d');",name,userid,userip,my_health,iL_Frag,team,isAlive,weapon)
        YeniKayit[id] = false
    }
    else
        Query = SQL_PrepareQuery(SqlConnection,"UPDATE `players` SET `Name`='%s',`HP`='%i',`Frag`='%i',`Takim`='%s',`Durum`='%i',`Silah`='%d' WHERE `Name`='%s';",name,my_health,iL_Frag,team,isAlive,weapon,name)


            // bu komutlar yanlış olabilir ve farklı bir şekilde yapılabilir.
   // new Handle:Query2 = SQL_PrepareQuery(SqlConnection,"SELECT * FROM `players` WHERE `Steamid`='%s'", userid)
   // new Handle:Query3 = SQL_PrepareQuery(SqlConnection,"UPDATE `players` SET `Silah`='%d' WHERE `Steamid`='%s'",weapon, userid)  

    if(!SQL_Execute(Query))
    {
        SQL_QueryError(Query,g_Error,511)
        set_fail_state(g_Error)
    }
    SQL_FreeHandle(Query)
    //SQL_FreeHandle(Query2)
    //SQL_FreeHandle(Query3)
    //SQL_FreeHandle(SqlConnection) // Bunu harita degisiminde kapatmak gerek yoksa 1 kayit ekler bir daha eklemez

// sql kayıt

    return PLUGIN_HANDLED;
}

public plugin_end()
{
    new Handle:Query = SQL_PrepareQuery(SqlConnection,"DELETE FROM `players`") // Harita degisiminde tum kayitlari sildiriyoruz
    if(!SQL_Execute(Query))
    {
        SQL_QueryError(Query,g_Error,511)
        set_fail_state(g_Error)
    }
    SQL_FreeHandle(Query)
    SQL_FreeHandle(SqlConnection);
}

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
rennie
Mesajlar: 33
Kayıt: Sal May 07, 2019 3:52 pm

SQL Güncelleme ve Silme işlemi

Mesaj gönderen rennie »

Tamam oldu. Çok teşekkür ederim.

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
rennie
Mesajlar: 33
Kayıt: Sal May 07, 2019 3:52 pm

SQL Güncelleme ve Silme işlemi

Mesaj gönderen rennie »

Bir şey fark ettim. Nick değiştirdiğim zaman eski nicki güncellemiyor. Bunu nasıl yapabiliriz.

Link:
Linklerini gizle
Linki Kopyala

F.T.H
Mesajlar: 546
Kayıt: Pzr Mar 19, 2017 12:55 pm
Konum: Ϲ★
İletişim:

SQL Güncelleme ve Silme işlemi

Mesaj gönderen F.T.H »

rennie yazdı: Cmt Oca 11, 2020 1:28 pm Bir şey fark ettim. Nick değiştirdiğim zaman eski nicki güncellemiyor. Bunu nasıl yapabiliriz.
İsim değiştirdiğinde sql güncelleriz fakat dediğim gibi bunu sunucuda kullanma

Kod: Tümünü seç

#include <amxmodx>
#include <amxmisc>
#include <sqlx>
#include <hamsandwich>
#include <fakemeta> 

#define PLUGIN "al3amri"
#define VERSION "1.1"
#define AUTHOR "al3amri"

#if AMXX_VERSION_NUM < 183
    #define client_disconnected client_disconnect
#endif


new Host[]= "127.0.0.1"
new User[]= "root"
new Pass[]= "1256"
new Db[]= "amxx_dev"


//new PlayedTime[33]

new Handle:g_SqlTuple
new g_Error[512]
new bool:YeniKayit[33]
new ErrorCode,Handle:SqlConnection

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    RegisterHam(Ham_TakeDamage, "player", "Hasar") // Oyuncu hasar aldiginda
    register_event("DeathMsg", "Oldu", "a") // Olen kisiyi ve Olduren kisinin bilgisini
    register_event("HLTV", "yeniround", "a", "1=0", "2=0") // el basi herkesin bilgisini guncelliyoruz
    register_forward(FM_ClientUserInfoChanged, "ClientUserInfoChanged") 
    sqlbaslangic()
}

public yeniround()
{
    for(new Uid=1; Uid <= get_maxplayers(); Uid++)
    {
        if(is_user_connected(Uid))
        {
            set_task(0.5,"BilgileriEkle",Uid)
        }
    }
}

public Hasar(victim, inflictor, attacker, Float:dmg, dmgbits) 
{
    remove_task(victim)
    set_task(5.0,"BilgileriEkle",victim)
}

public Oldu()
{
    set_task(0.5,"BilgileriEkle",read_data(2))
    set_task(1.0,"BilgileriEkle",read_data(1))
}

sqlbaslangic()
{
    g_SqlTuple = SQL_MakeDbTuple(Host,User,Pass,Db)

    SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
    if(SqlConnection == Empty_Handle)
        set_fail_state(g_Error)
}

public client_putinserver(id)
{
    YeniKayit[id] = true
    KayitSil(id)
    set_task(2.0,"BilgileriEkle",id)
}

public client_disconnected(id)
{
    KayitSil(id)
}

public ClientUserInfoChanged(id) {

    new eskiisim[32], yeniisim[32]
    pev(id, pev_netname, eskiisim, charsmax(eskiisim)) 
    get_user_info(id, "name", yeniisim, charsmax(yeniisim))
    
    if(!equal(yeniisim,eskiisim))
    {
        new Handle:Query = SQL_PrepareQuery(SqlConnection,"UPDATE `players` SET `Name`='%s' WHERE `Name`='%s';",yeniisim,eskiisim)
        if(!SQL_Execute(Query))
        {
            SQL_QueryError(Query,g_Error,511)
            set_fail_state(g_Error)
        }
        SQL_FreeHandle(Query)
    }
}


public KayitSil(id)
{
    new isim[32]
    get_user_name(id,isim,31)
    new Handle:Query = SQL_PrepareQuery(SqlConnection,"DELETE FROM `players` WHERE `Name`='%s'",isim)
    if(!SQL_Execute(Query))
    {
        SQL_QueryError(Query,g_Error,511)
        set_fail_state(g_Error)
    }
    SQL_FreeHandle(Query)
}

public BilgileriEkle(id)
{
    new userid[32], userip[32], name[32], iL_Frag;

    new team[32]
    get_user_team(id,team,31)

    new my_health = get_user_health(id)

    new clip,ammo
    new weapon = get_user_weapon(id,clip,ammo)

    new isAlive = is_user_alive(id)
    if(!isAlive)
        my_health = 0

    get_user_authid(id,userid,31)
    get_user_ip(id,userip,31,1)
    get_user_name(id,name,31)
    iL_Frag = get_user_frags(id)
    /*static timep, ctime[64]
    timep = get_user_time(id, 1) / 60
    get_time("%H:%M:%S", ctime, 63)

    console_print(id,"Name: %s",name)
    console_print(id,"Steamid: %s",userid)
    console_print(id,"IP: %s",userip)
    console_print(id,"HP: %i",my_health)
    console_print(id,"Frag: %i",iL_Frag)
    console_print(id,"Takim: %s",team)
    console_print(id,"Durum: %i",isAlive)
    console_print(id,"Silah: %d",weapon)*/

// sql kayıt

    new Handle:Query
    if(YeniKayit[id])
    {
        Query = SQL_PrepareQuery(SqlConnection,"INSERT INTO `players` (`Name`,`Steamid`,`IP`,`HP`,`Frag`,`Takim`,`Durum`,`Silah`) VALUES ('%s','%s','%s','%i','%i','%s','%i','%d');",name,userid,userip,my_health,iL_Frag,team,isAlive,weapon)
        YeniKayit[id] = false
    }
    else
        Query = SQL_PrepareQuery(SqlConnection,"UPDATE `players` SET `Name`='%s',`HP`='%i',`Frag`='%i',`Takim`='%s',`Durum`='%i',`Silah`='%d' WHERE `Name`='%s';",name,my_health,iL_Frag,team,isAlive,weapon,name)


            // bu komutlar yanlış olabilir ve farklı bir şekilde yapılabilir.
   // new Handle:Query2 = SQL_PrepareQuery(SqlConnection,"SELECT * FROM `players` WHERE `Steamid`='%s'", userid)
   // new Handle:Query3 = SQL_PrepareQuery(SqlConnection,"UPDATE `players` SET `Silah`='%d' WHERE `Steamid`='%s'",weapon, userid)  

    if(!SQL_Execute(Query))
    {
        SQL_QueryError(Query,g_Error,511)
        set_fail_state(g_Error)
    }
    SQL_FreeHandle(Query)
    //SQL_FreeHandle(Query2)
    //SQL_FreeHandle(Query3)
    //SQL_FreeHandle(SqlConnection) // Bunu harita degisiminde kapatmak gerek yoksa 1 kayit ekler bir daha eklemez

// sql kayıt

    return PLUGIN_HANDLED;
}

public plugin_end()
{
    new Handle:Query = SQL_PrepareQuery(SqlConnection,"DELETE FROM `players`") // Harita degisiminde tum kayitlari sildiriyoruz
    if(!SQL_Execute(Query))
    {
        SQL_QueryError(Query,g_Error,511)
        set_fail_state(g_Error)
    }
    SQL_FreeHandle(Query)
    SQL_FreeHandle(SqlConnection);
}

Link:
Linklerini gizle
Linki Kopyala
Cevapla