Update log system gold

Update log system gold
This commit is contained in:
novgorodschi catalin
2026-05-20 11:55:18 +03:00
parent 0934806e8d
commit e6a3bb7db7
8 changed files with 93 additions and 51 deletions
+14 -7
View File
@@ -14,25 +14,32 @@
if($session->sit == 0) { if($session->sit == 0) {
$uid = (int)$session->uid; $uid = (int)$session->uid;
$wid = (int)$village->wid;
$now = time(); $now = time();
$cost = 5; $cost = 5;
// UPDATE atomic: scade gold doar dacă ai, și prelungește b2 // UPDATE atomic: scade gold și prelungește b2
$sql = "UPDATE ".TB_PREFIX."users $sql = "UPDATE ".TB_PREFIX."users
SET gold = gold - $cost, SET gold = gold - $cost,
b2 = IF(b2 > $now, b2 + ".PLUS_PRODUCTION.", $now + ".PLUS_PRODUCTION.") b2 = IF(b2 > $now, b2 + ".PLUS_PRODUCTION.", $now + ".PLUS_PRODUCTION.")
WHERE id = '$uid' AND gold >= $cost"; WHERE id = $uid AND gold >= $cost";
mysqli_query($database->dblink, $sql) or die(mysqli_error($database->dblink)); mysqli_query($database->dblink, $sql);
if(mysqli_affected_rows($database->dblink) == 1) { if(mysqli_affected_rows($database->dblink) == 1) {
// succes - update instant în sesiune // update sesiune
$session->gold -= $cost; $session->gold -= $cost;
$_SESSION['gold'] = $session->gold;
$session->b2 = ($session->b2 > $now ? $session->b2 : $now) + PLUS_PRODUCTION;
// log // LOG pentru a2b2.php
mysqli_query($database->dblink, "INSERT INTO ".TB_PREFIX."gold_fin_log (wid,log) VALUES ('".$village->wid."', '+25% Production: Clay')") or die(mysqli_error($database->dblink)); mysqli_query($database->dblink,
"INSERT INTO ".TB_PREFIX."gold_fin_log
(uid, wid, action, gold, time, details)
VALUES ($uid, $wid, 'Use 5 gold for +25% Clay', -$cost, $now, '+25% Production: Clay')"
);
// iinvalidează cache v9 // curăță cache
if(method_exists($database, 'clearUserCache')) { if(method_exists($database, 'clearUserCache')) {
$database->clearUserCache($uid); $database->clearUserCache($uid);
} }
+12 -7
View File
@@ -14,25 +14,30 @@
if($session->sit == 0) { if($session->sit == 0) {
$uid = (int)$session->uid; $uid = (int)$session->uid;
$wid = (int)$village->wid;
$now = time(); $now = time();
$cost = 5; $cost = 5;
// UPDATE atomic: scade gold doar dacă ai, și prelungește b3 // UPDATE atomic
$sql = "UPDATE ".TB_PREFIX."users $sql = "UPDATE ".TB_PREFIX."users
SET gold = gold - $cost, SET gold = gold - $cost,
b3 = IF(b3 > $now, b3 + ".PLUS_PRODUCTION.", $now + ".PLUS_PRODUCTION.") b3 = IF(b3 > $now, b3 + ".PLUS_PRODUCTION.", $now + ".PLUS_PRODUCTION.")
WHERE id = '$uid' AND gold >= $cost"; WHERE id = $uid AND gold >= $cost";
mysqli_query($database->dblink, $sql) or die(mysqli_error($database->dblink)); mysqli_query($database->dblink, $sql);
if(mysqli_affected_rows($database->dblink) == 1) { if(mysqli_affected_rows($database->dblink) == 1) {
// succes - update instant în sesiune
$session->gold -= $cost; $session->gold -= $cost;
$_SESSION['gold'] = $session->gold;
$session->b3 = ($session->b3 > $now ? $session->b3 : $now) + PLUS_PRODUCTION;
// log // LOG pentru a2b2
mysqli_query($database->dblink, "INSERT INTO ".TB_PREFIX."gold_fin_log (wid,log) VALUES ('".$village->wid."', '+25% Production: Iron')") or die(mysqli_error($database->dblink)); mysqli_query($database->dblink,
"INSERT INTO ".TB_PREFIX."gold_fin_log
(uid, wid, action, gold, time, details)
VALUES ($uid, $wid, 'Use 5 gold for +25% Iron', -$cost, $now, '+25% Production: Iron')"
);
// invalidează cache v9
if(method_exists($database, 'clearUserCache')) { if(method_exists($database, 'clearUserCache')) {
$database->clearUserCache($uid); $database->clearUserCache($uid);
} }
+11 -7
View File
@@ -14,25 +14,29 @@
if($session->sit == 0) { if($session->sit == 0) {
$uid = (int)$session->uid; $uid = (int)$session->uid;
$wid = (int)$village->wid;
$now = time(); $now = time();
$cost = 5; $cost = 5;
// UPDATE atomic: scade gold doar dacă ai, și prelungește b4
$sql = "UPDATE ".TB_PREFIX."users $sql = "UPDATE ".TB_PREFIX."users
SET gold = gold - $cost, SET gold = gold - $cost,
b4 = IF(b4 > $now, b4 + ".PLUS_PRODUCTION.", $now + ".PLUS_PRODUCTION.") b4 = IF(b4 > $now, b4 + ".PLUS_PRODUCTION.", $now + ".PLUS_PRODUCTION.")
WHERE id = '$uid' AND gold >= $cost"; WHERE id = $uid AND gold >= $cost";
mysqli_query($database->dblink, $sql) or die(mysqli_error($database->dblink)); mysqli_query($database->dblink, $sql);
if(mysqli_affected_rows($database->dblink) == 1) { if(mysqli_affected_rows($database->dblink) == 1) {
// succes - update instant în sesiune
$session->gold -= $cost; $session->gold -= $cost;
$_SESSION['gold'] = $session->gold;
$session->b4 = ($session->b4 > $now ? $session->b4 : $now) + PLUS_PRODUCTION;
// log // LOG pentru a2b2
mysqli_query($database->dblink, "INSERT INTO ".TB_PREFIX."gold_fin_log (wid,log) VALUES ('".$village->wid."', '+25% Production: Crop')") or die(mysqli_error($database->dblink)); mysqli_query($database->dblink,
"INSERT INTO ".TB_PREFIX."gold_fin_log
(uid, wid, action, gold, time, details)
VALUES ($uid, $wid, 'Use 5 gold for +25% Crop', -$cost, $now, '+25% Production: Crop')"
);
// invalidează cache v9
if(method_exists($database, 'clearUserCache')) { if(method_exists($database, 'clearUserCache')) {
$database->clearUserCache($uid); $database->clearUserCache($uid);
} }
+12 -8
View File
@@ -1,21 +1,24 @@
<?php <?php
// Gold Club activation 100 gold, atomic // Gold Club activation 100 gold, atomic
$uid = (int)$session->uid; $uid = (int)$session->uid;
$wid = (int)$village->wid;
$now = time();
$cost = 100;
if($session->sit != 0) { if($session->sit != 0) {
header("Location: plus.php?id=3"); exit; header("Location: plus.php?id=3"); exit;
} }
// un singur query care face tot // un singur query
mysqli_query($database->dblink, mysqli_query($database->dblink,
"UPDATE ".TB_PREFIX."users "UPDATE ".TB_PREFIX."users
SET goldclub = 1, gold = gold - 100 SET goldclub = 1, gold = gold - $cost
WHERE id = $uid AND gold >= 100 AND goldclub = 0" WHERE id = $uid AND gold >= $cost AND goldclub = 0"
); );
if(mysqli_affected_rows($database->dblink) == 1) { if(mysqli_affected_rows($database->dblink) == 1) {
// succes update sesiunea // update sesiune
$session->gold -= 100; $session->gold -= $cost;
$session->goldclub = 1; $session->goldclub = 1;
$_SESSION['gold'] = $session->gold; $_SESSION['gold'] = $session->gold;
$_SESSION['goldclub'] = 1; $_SESSION['goldclub'] = 1;
@@ -24,10 +27,11 @@ if(mysqli_affected_rows($database->dblink) == 1) {
$database->cache->delete('user:'.$uid); $database->cache->delete('user:'.$uid);
} }
// log // LOG pentru a2b2.php
mysqli_query($database->dblink, mysqli_query($database->dblink,
"INSERT INTO ".TB_PREFIX."gold_fin_log (wid, action, time) "INSERT INTO ".TB_PREFIX."gold_fin_log
VALUES (0, 'Gold Club activated', ".time().")" (uid, wid, action, gold, time, details)
VALUES ($uid, $wid, 'Use 100 gold for Gold Club', -$cost, $now, 'Gold Club activated')"
); );
} }
+2 -1
View File
@@ -4,7 +4,7 @@
## -= YOU MAY NOT REMOVE OR CHANGE THIS NOTICE =- ## ## -= YOU MAY NOT REMOVE OR CHANGE THIS NOTICE =- ##
## --------------------------------------------------------------------------- ## ## --------------------------------------------------------------------------- ##
## Project: TravianZ (Refactor incremental) ## ## Project: TravianZ (Refactor incremental) ##
## File: 8.tpl ## ## File: 7.tpl ##
## Description: Finish All Plus ## ## Description: Finish All Plus ##
## Made by: alq0rsan ## ## Made by: alq0rsan ##
## Improved by: evader ## ## Improved by: evader ##
@@ -12,6 +12,7 @@
## ## ## ##
################################################################################# #################################################################################
// 1. termină tot - NU îi dăm parametru ca să NU facă exit înăuntru
$building->finishAll('plus.php?id=3'); $building->finishAll('plus.php?id=3');
exit; exit;
?> ?>
+17 -9
View File
@@ -13,26 +13,34 @@
################################################################################# #################################################################################
if($session->sit == 0) { if($session->sit == 0) {
$now = time(); $now = time();
$uid = (int)$session->uid; $uid = (int)$session->uid;
$wid = (int)$village->wid;
$cost = 10; $cost = 10;
// un singur UPDATE: scade gold DOAR dacă ai destul, și prelungește plus-ul // 1. scade gold și prelungește plus-ul ATOMIC
$sql = "UPDATE ".TB_PREFIX."users $sql = "UPDATE ".TB_PREFIX."users
SET gold = gold - $cost, SET gold = gold - $cost,
plus = IF(plus > $now, plus + ".PLUS_TIME.", $now + ".PLUS_TIME.") plus = IF(plus > $now, plus + ".PLUS_TIME.", $now + ".PLUS_TIME.")
WHERE id = '$uid' AND gold >= $cost"; WHERE id = $uid AND gold >= $cost";
mysqli_query($database->dblink, $sql) or die(mysqli_error($database->dblink)); mysqli_query($database->dblink, $sql);
if(mysqli_affected_rows($database->dblink) == 1) { if(mysqli_affected_rows($database->dblink) == 1) {
// a reușit - actualizează sesiunea instant // 2. update sesiune
$session->gold -= $cost; $session->gold -= $cost;
$_SESSION['gold'] = $session->gold;
$session->plus = ($session->plus > $now ? $session->plus : $now) + PLUS_TIME;
// log (opțional) // 3. LOG pentru a2b2.php
mysqli_query($database->dblink, "INSERT INTO ".TB_PREFIX."gold_fin_log (wid,log) VALUES ('".$village->wid."', 'Plus Account')") or die(mysqli_error($database->dblink)); $vname = mysqli_real_escape_string($database->dblink, $village->vname);
mysqli_query($database->dblink,
"INSERT INTO ".TB_PREFIX."gold_fin_log
(uid, wid, action, gold, time, details)
VALUES ($uid, $wid, 'Buy Travian Plus', -$cost, $now, 'Buy Travian Plus')"
);
// invalidează cache v9 // 4. curăță cache
if(method_exists($database, 'clearUserCache')) { if(method_exists($database, 'clearUserCache')) {
$database->clearUserCache($uid); $database->clearUserCache($uid);
} }
+14 -7
View File
@@ -14,25 +14,32 @@
if($session->sit == 0) { if($session->sit == 0) {
$uid = (int)$session->uid; $uid = (int)$session->uid;
$wid = (int)$village->wid;
$now = time(); $now = time();
$cost = 5; $cost = 5;
// UPDATE atomic: scade gold DOAR dacă ai, și prelungește b1 într-o singură operație // UPDATE atomic: scade gold și prelungește b1
$sql = "UPDATE ".TB_PREFIX."users $sql = "UPDATE ".TB_PREFIX."users
SET gold = gold - $cost, SET gold = gold - $cost,
b1 = IF(b1 > $now, b1 + ".PLUS_PRODUCTION.", $now + ".PLUS_PRODUCTION.") b1 = IF(b1 > $now, b1 + ".PLUS_PRODUCTION.", $now + ".PLUS_PRODUCTION.")
WHERE id = '$uid' AND gold >= $cost"; WHERE id = $uid AND gold >= $cost";
mysqli_query($database->dblink, $sql) or die(mysqli_error($database->dblink)); mysqli_query($database->dblink, $sql);
if(mysqli_affected_rows($database->dblink) == 1) { if(mysqli_affected_rows($database->dblink) == 1) {
// succes - actualizează sesiunea instant (nu mai aștepți cache-ul de 10 sec) // update sesiune instant
$session->gold -= $cost; $session->gold -= $cost;
$_SESSION['gold'] = $session->gold;
$session->b1 = ($session->b1 > $now ? $session->b1 : $now) + PLUS_PRODUCTION;
// log // LOG pentru a2b2.php
mysqli_query($database->dblink, "INSERT INTO ".TB_PREFIX."gold_fin_log (wid,log) VALUES ('".$village->wid."', '+25% Production: Lumber')") or die(mysqli_error($database->dblink)); mysqli_query($database->dblink,
"INSERT INTO ".TB_PREFIX."gold_fin_log
(uid, wid, action, gold, time, details)
VALUES ($uid, $wid, 'Use 5 gold for +25% Lumber', -$cost, $now, '+25% Production: Lumber')"
);
// invalidează cache v9 // curăță cache
if(method_exists($database, 'clearUserCache')) { if(method_exists($database, 'clearUserCache')) {
$database->clearUserCache($uid); $database->clearUserCache($uid);
} }
+10 -4
View File
@@ -898,10 +898,16 @@ CREATE TABLE IF NOT EXISTS `%PREFIX%general` (
-- --
CREATE TABLE IF NOT EXISTS `%PREFIX%gold_fin_log` ( CREATE TABLE IF NOT EXISTS `%PREFIX%gold_fin_log` (
`id` int(11) NOT NULL AUTO_INCREMENT, id int(11) NOT NULL AUTO_INCREMENT,
`wid` int(11) NULL, uid int(11) NOT NULL DEFAULT 0,
`log` text NULL, wid int(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`) action varchar(128) NOT NULL DEFAULT '',
gold int(11) NOT NULL DEFAULT 0,
time int(11) NOT NULL DEFAULT 0,
log varchar(255) DEFAULT NULL,
PRIMARY KEY (id),
KEY uid (uid),
KEY time (time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --