Da vielen Stefan Pfeifer und Sapphire Flyff nutzen und fast jedem Teammitglied zugang zum Admin Panel geben und manche es ausnutzen, Items ohne log zu verschicken gibt es hier nun ein Update, damit nicht mehr gepusht wird :P
1. Ihr geht in euer Admin Panel und sucht die datei account_senditem.php
2. Ihr öffnet die Datei und sucht nach if(isset($_POST['senditem_sbm'])) {
3. Ihr ändert die funktion von
if(isset($_POST['senditem_sbm'])) {
odbc_exec($odbc_connect, 'USE [' . $_CONFIG['db_databases']['chr'] . ']');
$charid = odbc_exec($odbc_connect, 'SELECT m_idPlayer FROM [CHARACTER_TBL] WHERE m_szName=\''.mssql_escape_string($_POST['character']).'\'');
if(odbc_num_rows($charid) == 1) {
odbc_exec($odbc_connect, 'INSERT INTO [ITEM_SEND_TBL](
m_idPlayer, serverindex, Item_Name, Item_count, m_nAbilityOption, m_bItemResist, m_nResistAbilityOption, idSender, nPiercedSize
) VALUES(
\''.mssql_escape_string(odbc_result($charid, 'm_idPlayer')).'\',
\'01\',
\''.mssql_escape_string($_POST['itemname']).'\',
\''.mssql_escape_string($_POST['count']).'\',
\''.mssql_escape_string($_POST['upgrade']).'\',
\''.mssql_escape_string($_POST['element']).'\',
\''.mssql_escape_string($_POST['elementupgrade']).'\',
\'0000000\',
\''.mssql_escape_string($_POST['piercing']).'\'
)');
echo '<div class="success">The item has successfully been send!</div>';
} else {
echo '<div class="fail">Character does not exist!</div>';
}
}
Alles anzeigen
zu
if(isset($_POST['senditem_sbm'])) {
$charid = odbc_exec($odbc_connect, 'SELECT m_idPlayer FROM [' . $_CONFIG['db_databases']['chr'] . '].dbo.[CHARACTER_TBL] WHERE m_szName=\''.mssql_escape_string($_POST['character']).'\'');
$charname = odbc_exec($odbc_connect, 'SELECT m_szName FROM [' . $_CONFIG['db_databases']['chr'] . '].dbo.[CHARACTER_TBL] WHERE m_szName=\''.mssql_escape_string($_POST['character']).'\'');
if(odbc_num_rows($charid) == 1) {
$ItemSendToCharakter = '
INSERT INTO [' . $_CONFIG['db_databases']['chr'] . '].dbo.[ITEM_SEND_TBL] (
m_idPlayer, serverindex, Item_Name, Item_count, m_nAbilityOption, m_bItemResist, m_nResistAbilityOption, idSender, nPiercedSize
) VALUES(
\''.mssql_escape_string($_SESSION['user']).'\',
\''.mssql_escape_string(odbc_result($charid, 'm_idPlayer')).'\',
\'01\',
\''.mssql_escape_string($_POST['itemname']).'\',
\''.mssql_escape_string($_POST['count']).'\',
\''.mssql_escape_string($_POST['upgrade']).'\',
\''.mssql_escape_string($_POST['element']).'\',
\''.mssql_escape_string($_POST['elementupgrade']).'\',
\'0000000\',
\''.mssql_escape_string($_POST['piercing']).'\'
)
';
$ItemSendLog = '
INSERT INTO [' . $_CONFIG['db_databases']['web'] . '].dbo.[LOG_SENDITEM] (
von, an, itemname, count, upgrade, element, elementupgrade, piercing
) VALUES(
\''.mssql_escape_string(odbc_result($charname, 'm_szName')).'\',
\''.mssql_escape_string($_POST['itemname']).'\',
\''.mssql_escape_string($_POST['count']).'\',
\''.mssql_escape_string($_POST['upgrade']).'\',
\''.mssql_escape_string($_POST['element']).'\',
\''.mssql_escape_string($_POST['elementupgrade']).'\',
\''.mssql_escape_string($_POST['piercing']).'\'
)
';
if(@odbc_exec($odbc_connect, $ItemSendToCharakter) AND @odbc_exec($odbc_connect, $ItemSendLog)) {
echo createMessage('Das Item wurde erfolgreich versendet', 'success');
}
else {
echo createMessage('Das Item konnte leider nicht versendet werden', 'fail');
}
} else {
echo '<div class="fail">Character does not exist!</div>';
}
}
Alles anzeigen
4. Dann geht ihr in eure Datenbank und führt dieses Script aus
USE [WEBSITE_DBF]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[LOG_SENDITEM](
[sid] [int] IDENTITY(1,1) NOT NULL,
[von] [varchar](50) NULL,
[an] [varchar](50) NULL,
[itemname] [varchar](50) NOT NULL,
[count] [int] NOT NULL,
[upgrade] [int] NOT NULL,
[element] [int] NOT NULL,
[elementupgrade] [int] NULL,
[piercing] [int] NULL,
CONSTRAINT [web_senditemlogs] PRIMARY KEY CLUSTERED
(
[sid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
Alles anzeigen
Nun lassen wir es noch wiedergeben in den den "Diverse Logs"
Dafür geht ihr in die list_database.php und fügt unter
das hier ein
dann sucht ihr nach elseif( isset($_GET['GSRanking']) ){ und fügt darüber das hier ein
elseif(isset($_GET['SendItems'])){
odbc_exec($odbc_connect, 'USE [' . $_CONFIG['db_databases']['web'] . ']');
$select = odbc_exec($odbc_connect, 'SELECT TOP 100 * FROM [LOG_SENDITEM] ORDER BY [sid] ASC');
if( odbc_num_rows($select) == 0 ){
echo '<div class="fail">'.$lang['db_no_del'].'</div>';
}
else {
echo '
<table cellspacing="0">
<thead>
<tr>
<td> </td>
<td>Von</td>
<td>An</td>
<td>Itemname</td>
<td>Anzahl</td>
<td>Upgrade</td>
<td>Element</td>
<td>Element Upgrade</td>
<td>Sockel Anzahl</td>
</tr>
</thead>
<tbody>';
while($result = odbc_fetch_array($select)){
echo '
<tr>
<td>('.$result['sid'].')</td>
<td>'.$result['von'].'</td>
<td>'.$result['an'].'</td>
<td>'.$result['itemname'].'</td>
<td>'.$result['count'].'</td>
<td>'.$result['upgrade'].'</td>
<td>'.$result['element'].'</td>
<td>'.$result['elementupgrade'].'</td>
<td>'.$result['piercing'].'</td>
</tr>';
}
echo '
</tbody>
</table>';
}
echo '
<br />
<a href="list_database.php">'.$lang['panel_back'].'</a>';
}
Alles anzeigen
Am Ende sieht es dann so aus