Register for your free account! | Forgot your password?

Go Back   elitepvpers › MMORPGs › Flyff › Flyff Private Server
You last visited: Today at 23:50

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Flyff Chars komplett aus DB löschen?!

Discussion on Flyff Chars komplett aus DB löschen?! within the Flyff Private Server forum part of the Flyff category.

Reply
 
Old   #1
 
TrøublêMakêr's Avatar
 
elite*gold: 51
Join Date: Sep 2012
Posts: 1,141
Received Thanks: 575
Flyff Chars komplett aus DB löschen?!

Da langsam viele Chars in meinen DB befinden, würde ich gerne alle Löschen, die schon auf "d" sind sowie die Perm Banned sind! Gibt es von offi so ne Funktion ?
TrøublêMakêr is offline  
Old   #2
 
elite*gold: 0
Join Date: Oct 2012
Posts: 948
Received Thanks: 157
Why not execute an mssql query?
DELETE FROM CHARACTER_TBL WHERE isblock = 'D'

Then you will delete all the chars that have the value D in isblok
raventh1984 is offline  
Old   #3
 
TrøublêMakêr's Avatar
 
elite*gold: 51
Join Date: Sep 2012
Posts: 1,141
Received Thanks: 575
This is Only Character_TBL. I want do delete all!
TrøublêMakêr is offline  
Old   #4
 
Mognakor's Avatar
 
elite*gold: 0
Join Date: Mar 2008
Posts: 598
Received Thanks: 465
Wenn du die Lösung von raventh nimmst kannst du für die restlichen Tabellen die Query nehmen

DELETE FROM [Tabelle_XY]
WHERE NOT EXISTS (SELECT [hier den key hin, kenn den nich auswendig]
FROM CHARACTER_TBL
WHERE [Tabelle_XY].[key] = CHARACTER_TBL.[key])

Alternativ kannst du auch zuerst auf die anderen Tabellen diese Query ausführen

DELETE FROM [Tabelle_XY]
WHERE EXISTS (SELECT
FROM CHARACTER_TBL
WHERE [Tabelle_XY].[key] = CHARACTER_TBL.[key] AND CHARACTER_TBL.isblock = 'D'

Und dann die Query von raventh

Musst alles was in [] steht durch die tatsächlichen Namen ersetzen vom Prinzip sollte es aber das liefern was du willst.
Mognakor is offline  
Old   #5
 
elite*gold: 0
Join Date: Oct 2012
Posts: 948
Received Thanks: 157
Here is what i have made just jet

PHP Code:
<?php
ini_set
('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

//Making connection to mssql database
define('MSSQL_HOST', '****\SQLEXPRESS');    // MsSQL Host
define('MSSQL_USER', '****');                        // MsSQL Username
define('MSSQL_PASS', '****');            // MsSQL Password

$connect = mssql_connect(MSSQL_HOST, MSSQL_USER, MSSQL_PASS);
if(!
$connect)
{
    
sqlError('There went something wrong with the connection to the database!<br />We send an automatic email to the owner!');
    
notify('Probleem met de query:'.mssql_get_last_message().' in db_connect.php op lijn 34 op datum '.date("Y-m-d").'');
}

function 
database($data)
{
    
$select_db = mssql_select_db($data);
    if(!
$select_db)
    {
        
sqlError('There went something wrong with the connection to the database!<br />We send an automatic email to the owner!');
        
notify('Probleem met de query:'.mssql_get_last_message().' in config.inc.php op lijn 13 op datum '.date("Y-m-d").'');    
    }
    return 
$data;
}

function 
delete($table,$value)
{
    
$delete = "DELETE FROM ".$table." WHERE m_idPlayer = '".$value."'";
    if(!
$result = mssql_query($delete))
    {
        echo 
'Something Whent Wrong';
    }
    else
    {
        echo 
$table.' Has been cleared of characters that where blocked!<br />';
    }
}

//Selecting Character_dbf
database("CHARACTER_01_DBF");
//Selecting chars that have isblock at D
$sql = "SELECT m_idPlayer,m_szName,isblock FROM CHARACTER_TBL WHERE isblock = 'D'";
if(!
$res = mssql_query($sql))
{
    echo 
'Something whent wrong';
}
else
{
    while(
$result = mssql_fetch_assoc($res))
    {
        
//Deleting Stuff From the Tables//
        
delete("BANK_EXT_TBL",$result['m_idPlayer']);
        
delete("BANK_TBL",$result['m_idPlayer']);
    }
}
?>
The only downside is you must add all the tables to it.
raventh1984 is offline  
Thanks
1 User
Old   #6
 
TrøublêMakêr's Avatar
 
elite*gold: 51
Join Date: Sep 2012
Posts: 1,141
Received Thanks: 575
I test it later on my test server and thanks
TrøublêMakêr is offline  
Old   #7
 
Мarvіn's Avatar
 
elite*gold: 6
Join Date: Nov 2012
Posts: 1,471
Received Thanks: 2,222
Quote:
Originally Posted by Bloodyrain' View Post
Da langsam viele Chars in meinen DB befinden, würde ich gerne alle Löschen, die schon auf "d" sind sowie die Perm Banned sind! Gibt es von offi so ne Funktion ?
An deiner Stelle würde ich lieber alle gebannten/gelöschten Charaktere mit 'D' einfach in der Tabelle umbenennen (bsp. "Gelöscht am 19.08.) So machst du
keinen Mist mit der Datenbank und die Spieler können die Namen wieder verwenden (was sicherlich der Sinn dieser Frage hier ist)
Мarvіn is offline  
Old   #8
 
elite*gold: 10
Join Date: Feb 2011
Posts: 1,760
Received Thanks: 501
Quote:
Originally Posted by Bloodyrain' View Post
Da langsam viele Chars in meinen DB befinden, würde ich gerne alle Löschen, die schon auf "d" sind sowie die Perm Banned sind! Gibt es von offi so ne Funktion ?
Auf Offi wird eine Prozedure dafür verwendet die glaube ich jeden Tag um 04:00 ausgeführt wird.

Die löscht chars die 30 Tage oder länger gelöscht sind.

Das ganze läuft da über den SQL Server Agent so weit ich weiß.
Velmore is offline  
Old   #9
 
TrøublêMakêr's Avatar
 
elite*gold: 51
Join Date: Sep 2012
Posts: 1,141
Received Thanks: 575
Quote:
Originally Posted by Velmore View Post
Auf Offi wird eine Prozedure dafür verwendet die glaube ich jeden Tag um 04:00 ausgeführt wird.

Die löscht chars die 30 Tage oder länger gelöscht sind.

Das ganze läuft da über den SQL Server Agent so weit ich weiß.
Nur Funktioneirt der überhaupt nicht bzw davon habe ich nichts gesehen, da ich noch Chars von 2012 finde und nein Marvin. Ich würde gerne Komplett löschen von DB. Ich finde es effektiver und die DB gewinnt an Leistung. Wobei es kaum bemerkbar ist.
TrøublêMakêr is offline  
Old   #10



 
Sedrika's Avatar
 
elite*gold: 18
The Black Market: 103/0/0
Join Date: Sep 2009
Posts: 20,174
Received Thanks: 14,477
Seit wann macht es für eine DB etwas aus, ob da viel steht oder wenig ? Höchstens das anzeigen im SQL Studio dauert etwas länger, die DB hat seine indexe, an geschwindigkeit wirst du wohl kaum etwas gewinnen, höchstens an größe.
Sedrika is offline  
Thanks
1 User
Old   #11
 
elite*gold: 10
Join Date: Feb 2011
Posts: 1,760
Received Thanks: 501
Quote:
Originally Posted by Sedrika View Post
Seit wann macht es für eine DB etwas aus, ob da viel steht oder wenig ? Höchstens das anzeigen im SQL Studio dauert etwas länger, die DB hat seine indexe, an geschwindigkeit wirst du wohl kaum etwas gewinnen, höchstens an größe.
fehlen nicht teilweise die indexes? hab das ma was mit bekommen das die damals nicht mit genommen wurden.
Velmore is offline  
Old   #12



 
Sedrika's Avatar
 
elite*gold: 18
The Black Market: 103/0/0
Join Date: Sep 2009
Posts: 20,174
Received Thanks: 14,477
Das ist kein Problem. Falls der Index sich nicht ändert, wird bei einem neuen wert der nächst freie genommen.
Sedrika is offline  
Old   #13
 
elite*gold: 0
Join Date: Jun 2013
Posts: 166
Received Thanks: 259
Code:
					DELETE CHARACTER_TBL WHERE isblock='D'
					
					DECLARE @name varchar(256)
					DECLARE Delete_Cursor CURSOR FOR 
					SELECT	B.name
						FROM	syscolumns A,sysobjects B
						WHERE	A.id = B.id
					   AND B.name NOT IN('CHARACTER_TBL','MESSENGER_TBL')
					   AND A.name = 'm_idPlayer'
					   AND B.type='U'
					ORDER BY B.name
					
					OPEN Delete_Cursor
					
					FETCH NEXT FROM Delete_Cursor 
					INTO @name
					
					WHILE @@FETCH_STATUS = 0
					BEGIN
						PRINT @name + '??'
						EXEC('DELETE ' + @name + ' WHERE m_idPlayer NOT IN (SELECT m_idPlayer FROM CHARACTER_TBL)')
					   FETCH NEXT FROM Delete_Cursor 
					   INTO @name
					END
					
					DELETE TAG_TBL  WHERE f_idPlayer NOT IN (SELECT m_idPlayer FROM CHARACTER_TBL)
					
					PRINT '??? ?? ??'
					-- ?? 2009-09-16 ??? ?? ?? ?? (EXEC MESSENGER_STR 'D2','',@serverindex ?? ?? ??)
					delete tblMessenger
					where idPlayer not in (select m_idPlayer from CHARACTER_TBL)

					delete tblMessenger
					where idFriend not in (select m_idPlayer from CHARACTER_TBL)

--					EXEC MESSENGER_STR 'D2','',@serverindex

					
					PRINT 'Delete Skill'
					DELETE 	tblSkillPoint 
					WHERE 	PlayerID NOT IN (SELECT m_idPlayer FROM CHARACTER_TBL)


					CLOSE Delete_Cursor
					DEALLOCATE Delete_Cursor
WurstbrotQT is offline  
Old   #14
 
xTwiLightx's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 1,741
Received Thanks: 1,674
Code:
CREATE proc [dbo].[CHARACTER_DELETE_STR]
	@serverindex char(2)
AS

set nocount on
set lock_timeout 600000
set transaction isolation level read uncommitted
set xact_abort on

	declare @ddate char(8)
	set @ddate = convert(char(8),DATEADD(d, -7, getdate()),112)

	CREATE TABLE #TEMP_DELETE_CHR ( m_idPlayer char(7)  )

	-- 삭제 캐릭터에 대한 캐릭터 ID 입력
	insert into #TEMP_DELETE_CHR 
	select m_idPlayer from CHARACTER_TBL (nolock)
	where isblock='D' AND  End_Time <= @ddate and serverindex = @serverindex

	-- 삭제 캐릭터에 대한 삭제 정보 입력
	insert into CHARACTER_TBL_DEL (serverindex, m_idPlayer, m_szName, account, m_nLevel, m_nJob, CreateTime)
	select serverindex, m_idPlayer, m_szName, account, m_nLevel, m_nJob, CreateTime
	from CHARACTER_TBL (nolock)
	where m_idPlayer in ( select m_idPlayer from #TEMP_DELETE_CHR)

	DECLARE @name varchar(256)
	DECLARE Delete_Cursor CURSOR FOR 
	
	SELECT	B.name 
		FROM	syscolumns A,sysobjects B
		WHERE	A.id = B.id
			AND B.name NOT IN('MESSENGER_TBL', 'BILING_ITEM_TBL'
				, 'CHARACTER_TBL_DEL', 'tblFunnyCoin',' tblLogout_Penya', 'tblLogout_Penya_Diff_Log'
				, 'GUILD_COMBAT_1TO1_BATTLE_PERSON_TBL'
				, 'BANK_EXT_TBL','BANK_TBL','INVENTORY_EXT_TBL','INVENTORY_TBL')
			and B.name not like '%item2row%'
			and upper(B.name) not like '%TMP_%'
			AND (A.name = 'm_idPlayer' or A.name = 'serverindex')
			AND B.type='U'
		group by B.name
		having count(*) > 1
	ORDER BY B.name
		
	OPEN Delete_Cursor
	
	FETCH NEXT FROM Delete_Cursor 
	INTO @name
					
	WHILE @@FETCH_STATUS = 0
	BEGIN
		PRINT @name + ' TABLE DELETE'
		exec ('DELETE ' + @name + ' WHERE m_idPlayer IN (
					select m_idPlayer from #TEMP_DELETE_CHR ) 
					and serverindex = ''' + @serverindex + '''')
	        FETCH NEXT FROM Delete_Cursor 
		      INTO @name
	END

				
	PRINT 'NOTE DELETE'
	DELETE TAG_TBL  
	WHERE f_idPlayer in (select m_idPlayer from #TEMP_DELETE_CHR) and serverindex = @serverindex
					
	PRINT 'FRIEND LIST DELETE(OTHER USER)'
	delete tblMessenger
	where idPlayer in (select m_idPlayer from #TEMP_DELETE_CHR) and serverindex = @serverindex
	
	delete tblMessenger
	where idFriend in (select m_idPlayer from #TEMP_DELETE_CHR) and serverindex = @serverindex

	PRINT 'Delete Skill'
	DELETE tblSkillPoint 
	WHERE PlayerID in (select m_idPlayer from #TEMP_DELETE_CHR) AND serverindex = @serverindex

	CLOSE Delete_Cursor
	DEALLOCATE Delete_Cursor

	drop table #TEMP_DELETE_CHR
RETURN
Code:
exec CHARACTER_DELETE_STR 'xx'
GO
(xx = bei den meisten hier 01)
???

Schaut mal in eure Datenbanken und lest die Namen der Prozeduren, ihr "Experten".


EDIT:
Quote:
set @ddate = convert(char(8),DATEADD(d, -7, getdate()),112)
Das rot markierte gibt an, wie alt die Chars sein müssen, damit sie gelöscht werden. Das hier ist älter als 7 Tage (00:00 Uhr).
xTwiLightx is offline  
Thanks
3 Users
Old   #15
 
TrøublêMakêr's Avatar
 
elite*gold: 51
Join Date: Sep 2012
Posts: 1,141
Received Thanks: 575
Danke Twi.

Ging perfekt bis auf den kleinen Rollback!
TrøublêMakêr is offline  
Reply


Similar Threads Similar Threads
Crossfire komplett löschen?
07/15/2012 - CrossFire - 8 Replies
Hallo liebe Epvp Gemeinde , ich möchte Crossfire komplett löschen und auf einen neuen Pfad (mir fehlt das Wort) erstellen. Kann mich dabei jemand unterstützen per Team vie wer ? Wäre überaus dankbar ,so dankbar das ich einen Thanks geben würde *.* . Warum Weshalb Wieso will ich Crossfire komplett löschen?! Tja liebe Leute die Sache ist halt die ,wenn ich Crossfire Patche kommt die Fehler Meldung: File is changed : W L
Battlefield play4free komplett löschen
09/25/2011 - Battlefield - 1 Replies
Hi alle zusammen :) Wie kann man Battlefield play4free komplett löschen? Thx schon im vorraus....natürlich nua für die die antworten ;P^^
Kan man das hshield komplett löschen?
07/24/2011 - Metin2 Private Server - 8 Replies
Kan man das hshield komplett löschen?
Profilnachrichten komplett löschen??
10/03/2010 - Main - 3 Replies
Hey ho.. Mal ne frage, wie kann ich Profilnachrichten so löschen, dass sie komplett weg sind? weil jetzt steht bei mir überall: # White_Edition Dieser Beitrag wurde von lMartinl gelöscht. * Melden



All times are GMT +1. The time now is 23:50.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.