1. sayfa (Toplam 2 sayfa)

SQL Güncelleme ve Silme işlemi

Gönderilme zamanı: Prş Oca 09, 2020 2:14 pm
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;
	}

SQL Güncelleme ve Silme işlemi

Gönderilme zamanı: Cum Oca 10, 2020 2:14 pm
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

SQL Güncelleme ve Silme işlemi

Gönderilme zamanı: Cum Oca 10, 2020 3:34 pm
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.

SQL Güncelleme ve Silme işlemi

Gönderilme zamanı: Cum Oca 10, 2020 6:41 pm
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);
}

SQL Güncelleme ve Silme işlemi

Gönderilme zamanı: Cum Oca 10, 2020 9:40 pm
gönderen rennie
Cevabın için teşekkür ederim dostum. Sabah deneyeceğim olumlu olumsuz sonucu sana bildireceğim

SQL Güncelleme ve Silme işlemi

Gönderilme zamanı: Cmt Oca 11, 2020 10:15 am
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)

SQL Güncelleme ve Silme işlemi

Gönderilme zamanı: Cmt Oca 11, 2020 10:32 am
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);
}

SQL Güncelleme ve Silme işlemi

Gönderilme zamanı: Cmt Oca 11, 2020 12:13 pm
gönderen rennie
Tamam oldu. Çok teşekkür ederim.

SQL Güncelleme ve Silme işlemi

Gönderilme zamanı: Cmt Oca 11, 2020 1:28 pm
gönderen rennie
Bir şey fark ettim. Nick değiştirdiğim zaman eski nicki güncellemiyor. Bunu nasıl yapabiliriz.

SQL Güncelleme ve Silme işlemi

Gönderilme zamanı: Cmt Oca 11, 2020 1:51 pm
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);
}