Added Account transactions with History

Added Account transactions with History
This commit is contained in:
novgorodschi catalin
2026-05-21 11:23:45 +03:00
parent e6a3bb7db7
commit 878ecec687
8 changed files with 415 additions and 476 deletions
+67 -40
View File
@@ -1,51 +1,78 @@
<?php
#################################################################################
## -= YOU MAY NOT REMOVE OR CHANGE THIS NOTICE =- ##
## -= YOU MAY NOT REMOVE OR CHANGE THIS NOTICE =- ##
## --------------------------------------------------------------------------- ##
## Filename cp.php ##
## Developed by: aggenkeech ##
## License: TravianZ Project ##
## Copyright: TravianZ (c) 2010-2025. All rights reserved. ##
## ##
## Project: TravianZ (Refactor incremental) ##
## File: additional.tpl ##
## Description: Implement Gold Log ##
## Made by: Shadow ##
## License: TravianZ Project ##
## Copyright: TravianZ (c) 2010-2026. All rights reserved. ##
## URLs: https://travianz.org ##
## https://github.com/Shadowss/TravianZ ##
## ##
#################################################################################
include_once("../../config.php");
include_once("../../Database.php");
if (!isset($_SESSION)) session_start();
if($_SESSION['access'] < 9) die("Access Denied: You are not Admin!");
if(($_SESSION['access']?? 0) < ADMIN) die("Access Denied: You are not Admin!");
$id = (int) $_POST['id'];
$admid = $_POST['admid'];
// --- INPUT ---
$id = (int)($_POST['id']?? 0);
$admid = (int)($_POST['admid']?? 0);
$access = (int)($_POST['access']?? 2);
$newGold = (int)($_POST['gold']?? 0);
$sit1 = (int)($_POST['sitter1']?? 0);
$sit2 = (int)($_POST['sitter2']?? 0);
$protect = time() + ((int)($_POST['protect']?? 0) * 86400);
$cp = (int)($_POST['cp']?? 0);
$ap = (int)($_POST['off']?? 0);
$dp = (int)($_POST['def']?? 0);
$rr = (int)($_POST['res']?? 0);
$apall = (int)($_POST['ooff']?? 0);
$dpall = (int)($_POST['odef']?? 0);
//$sql = mysqli_query($GLOBALS["link"], "SELECT * FROM ".TB_PREFIX."users WHERE id = ".$admid."");
//$access = mysqli_fetch_array($sql);
//$sessionaccess = $access['access'];
if (!isset($_SESSION)) {
session_start();
if($id <= 0) die("Invalid user");
// --- GOLD LOGIC ---
$oldGold = (int)$database->getUserField($id, 'gold', 1);
$diffGold = $newGold - $oldGold;
// --- UPDATE USER (prepared-style, fără escape manual) ---
$database->query("
UPDATE ".TB_PREFIX."users SET
access = $access,
gold = $newGold,
sit1 = $sit1,
sit2 = $sit2,
protect = $protect,
cp = $cp,
ap = $ap,
dp = $dp,
RR = $rr,
apall = $apall,
dpall = $dpall
WHERE id = $id
");
// --- LOG GOLD dacă s-a modificat ---
if($diffGold!== 0){
$vill = $database->getVillagesID($id);
$wid = $vill[0]?? 0;
$action = $diffGold > 0? 'Admin added Gold' : 'Admin removed Gold';
$details = 'Admin adjustment by '.($session->username?? 'Admin');
$now = time();
$database->query("
INSERT INTO ".TB_PREFIX."gold_fin_log
(wid, uid, action, gold, time, details)
VALUES ($wid, $id, '$action', $diffGold, $now, '$details')
");
}
if($_SESSION['access'] != ADMIN) die("<h1><font color=\"red\">Access Denied: You are not Admin!</font></h1>");
foreach ($_POST as $key => $value) {
$_POST[$key] = $database->escape($value);
}
$access = (int) $_POST['access'];
$dur = (int) $_POST['protect'] * 86400;
$protection = (time() + $dur);
mysqli_query($GLOBALS["link"], "UPDATE ".TB_PREFIX."users SET
access = ".$access.",
gold = ".(int) $_POST['gold'].",
sit1 = '".(int) $_POST['sitter1']."',
sit2 = '".(int) $_POST['sitter2']."',
protect = '".$protection."',
cp = ".(int) $_POST['cp'].",
ap = '".(int) $_POST['off']."',
dp = '".(int) $_POST['def']."',
RR = '".(int) $_POST['res']."',
apall = '".(int) $_POST['ooff']."',
dpall = '".(int) $_POST['odef']."'
WHERE id = ".$id) or die(mysqli_error($database->dblink));
header("Location: ../../../Admin/admin.php?p=player&uid=".$id."");
?>
// --- REDIRECT ---
header("Location:../../../Admin/admin.php?p=player&uid=".$id);
exit;
+34 -14
View File
@@ -2,8 +2,9 @@
#################################################################################
## -= YOU MAY NOT REMOVE OR CHANGE THIS NOTICE =- ##
## --------------------------------------------------------------------------- ##
## Filename gold.php ##
## Filename gold.php ##
## Developed by: aggenkeech ##
## Refactored by: Shadow ##
## License: TravianZ Project ##
## Copyright: TravianZ (c) 2010-2025. All rights reserved. ##
## ##
@@ -14,28 +15,47 @@ include_once("../../config.php");
error_reporting(E_ALL);
// go max 5 levels up - we don't have folders that go deeper than that
// autoloader
$autoprefix = '';
for ($i = 0; $i < 5; $i++) {
$autoprefix = str_repeat('../', $i);
if (file_exists($autoprefix.'autoloader.php')) {
// we have our path, let's leave
break;
}
if (file_exists($autoprefix.'autoloader.php')) break;
}
include_once($autoprefix."GameEngine/Database.php");
$session = (int) $_POST['admid'];
$admid = (int)($_POST['admid'] ?? 0);
$amount = (int)($_POST['gold'] ?? 0);
$sql = mysqli_query($GLOBALS["link"], "SELECT * FROM ".TB_PREFIX."users WHERE id = ".$session."");
$access = mysqli_fetch_array($sql);
$sessionaccess = $access['access'];
if($amount == 0){
header("Location: ../../../Admin/admin.php?p=gold");
exit;
}
if($sessionaccess != 9) die("<h1><font color=\"red\">Access Denied: You are not Admin!</font></h1>");
// verificare admin
$check = mysqli_query($GLOBALS["link"], "SELECT access, username FROM ".TB_PREFIX."users WHERE id = $admid");
$acc = mysqli_fetch_assoc($check);
if(!$acc || $acc['access'] != 9) die("<h1><font color=\"red\">Access Denied</font></h1>");
$q = "UPDATE ".TB_PREFIX."users SET gold = gold + ".(int) $_POST['gold']." WHERE id != '0'";
mysqli_query($GLOBALS["link"], $q) or die(mysqli_error($database->dblink));
// 1. UPDATE gold la toți (id > 3 = sare peste Natars etc)
mysqli_query($GLOBALS["link"], "UPDATE ".TB_PREFIX."users SET gold = gold + $amount WHERE id > 3") or die(mysqli_error($GLOBALS["link"]));
// 2. LOG în admin_log
mysqli_query($GLOBALS["link"], "INSERT INTO ".TB_PREFIX."admin_log VALUES (0, $admid, 'Added <b>$amount</b> gold to ALL players', ".time().")");
// 3. LOG în gold_fin_log pentru fiecare jucător
$users = mysqli_query($GLOBALS["link"], "SELECT id FROM ".TB_PREFIX."users WHERE id > 3");
$now = time();
$adminName = $acc['username'];
$details = mysqli_real_escape_string($GLOBALS["link"], 'Mass gift by '.$adminName);
while($u = mysqli_fetch_assoc($users)){
$uid = (int)$u['id'];
$vill = mysqli_fetch_assoc(mysqli_query($GLOBALS["link"], "SELECT wref FROM ".TB_PREFIX."vdata WHERE owner = $uid LIMIT 1"));
$wid = (int)($vill['wref'] ?? 0);
mysqli_query($GLOBALS["link"], "INSERT INTO ".TB_PREFIX."gold_fin_log (wid, uid, action, gold, time, details) VALUES ($wid, $uid, 'Admin added Gold', $amount, $now, '$details')");
}
header("Location: ../../../Admin/admin.php?p=gold&g");
exit;
?>
+31 -23
View File
@@ -1,39 +1,47 @@
<?php
#################################################################################
## -= YOU MAY NOT REMOVE OR CHANGE THIS NOTICE =- ##
## --------------------------------------------------------------------------- ##
## Filename gold_1.php ##
## Filename gold_1.php ##
## Developed by: aggenkeech ##
## License: TravianZ Project ##
## Copyright: TravianZ (c) 2010-2025. All rights reserved. ##
## ##
## Refactored by: Shadow ##
#################################################################################
if (!isset($_SESSION)) session_start();
if($_SESSION['access'] < 9) die("Access Denied: You are not Admin!");
include_once("../../config.php");
// go max 5 levels up - we don't have folders that go deeper than that
$autoprefix = '';
for ($i = 0; $i < 5; $i++) {
$autoprefix = str_repeat('../', $i);
if (file_exists($autoprefix.'autoloader.php')) {
// we have our path, let's leave
break;
}
include_once("../../config.php");
include_once("../../Database.php");
$admid = (int)($_POST['admid'] ?? 0);
$id = (int)($_POST['id'] ?? 0);
$amount = (int)($_POST['gold'] ?? 0);
if($id <= 0 || $amount == 0){
header("Location: ../../../Admin/admin.php?p=usergold");
exit;
}
include_once($autoprefix."GameEngine/Database.php");
// verificare admin
$check = mysqli_query($GLOBALS["link"], "SELECT access, username FROM ".TB_PREFIX."users WHERE id = $admid");
$acc = mysqli_fetch_assoc($check);
if(!$acc || $acc['access'] != 9) die("<h1><font color=\"red\">Access Denied</font></h1>");
$session = (int) $_POST['admid'];
$id = (int) $_POST['id'];
// 1. UPDATE GOLD
mysqli_query($GLOBALS["link"], "UPDATE ".TB_PREFIX."users SET gold = gold + $amount WHERE id = $id") or die(mysqli_error($GLOBALS["link"]));
$sql = mysqli_query($GLOBALS["link"], "SELECT * FROM ".TB_PREFIX."users WHERE id = ".$session."");
$access = mysqli_fetch_array($sql);
$sessionaccess = $access['access'];
// 2. ADMIN LOG
$name = mysqli_fetch_assoc(mysqli_query($GLOBALS["link"], "SELECT username FROM ".TB_PREFIX."users WHERE id = $id"))['username'];
$name = mysqli_real_escape_string($GLOBALS["link"], $name);
mysqli_query($GLOBALS["link"], "INSERT INTO ".TB_PREFIX."admin_log VALUES (0, $admid, 'Added <b>$amount</b> gold to user <a href=\'admin.php?p=player&uid=$id\'>$name</a>', ".time().")");
if($sessionaccess != 9) die("<h1><font color=\"red\">Access Denied: You are not Admin!</font></h1>");
// 3. GOLD_FIN_LOG (pentru a2b2.php)
$vill = mysqli_fetch_assoc(mysqli_query($GLOBALS["link"], "SELECT wref FROM ".TB_PREFIX."vdata WHERE owner = $id LIMIT 1"));
$wid = (int)($vill['wref'] ?? 0);
$action = $amount > 0 ? 'Admin added Gold' : 'Admin removed Gold';
$adminName = $acc['username'];
$details = mysqli_real_escape_string($GLOBALS["link"], 'Admin gift by '.$adminName);
$now = time();
mysqli_query($GLOBALS["link"], "UPDATE ".TB_PREFIX."users SET gold = gold + ".(int) $_POST['gold']." WHERE id = ".$id."");
mysqli_query($GLOBALS["link"], "INSERT INTO ".TB_PREFIX."gold_fin_log (wid, uid, action, gold, time, details) VALUES ($wid, $id, '$action', $amount, $now, '$details')") or die(mysqli_error($GLOBALS["link"]));
header("Location: ../../../Admin/admin.php?p=usergold&g");
exit;
?>
+10 -8
View File
@@ -1748,16 +1748,18 @@ class Building {
// gold update
if ($countMasterGold || $countPlus2Gold) {
$spent = ($countMasterGold && $countPlus2Gold) ? 3 : 2;
$newgold = $session->gold - $spent;
$newgold = $session->gold -
(($countMasterGold && $countPlus2Gold) ? 3 : 2);
$database->updateUserField($session->uid, 'gold', $newgold, 1);
$database->updateUserField(
$session->uid,
'gold',
$newgold,
1
);
// LOG complet
$database->query("INSERT INTO ".TB_PREFIX."gold_fin_log
(wid, uid, action, gold, time, details)
VALUES (".$village->wid.", ".$session->uid.", 'Finish all constructions', -".$spent.", ".time().", 'Finish construction and research with gold')");
$session->gold = $newgold;
$_SESSION['gold'] = $newgold;
}
// un singur query