SQL Güncelleme ve Silme işlemi
Gönderilme zamanı: Prş Oca 09, 2020 2:14 pm
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 )
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;
}