From back-alley hustles to high-stakes showdowns, carve your legend in a gritty urban sandbox inspired by the streets of San Andreas. Train your stats, pull off daring crimes, and climb the rankings as you outwit rivals, amass cash, and claim prime real estate across a city that never sleeps. Fast travel keeps the action moving, while shops, gyms, and casinos fuel your rise from nobody to kingpin.
Built on a proven RPG template and fully localized for Polish players, this crime saga blends PvP battles, city exploration, item trading, and a mail system that keeps the underworld buzzing. Whether you’re strategizing your next move or throwing down in head-to-head fights, the path to power is yours to pave—one risky decision at a time.
Game Type: Gangster Browser RPG (GTA: San Andreas Theme)
Version: 1.22 PL (Polish Language Version)
Original Engine: MCCodes Lite by Dabomstew (2006)
Polish Translation: Kubiec/Kubiecov (Yakuza.NET Team)
Release Date: April 19, 2009
Language: Polish UI (ISO-8859-2 encoding), English database content
Total Files: 54 files (~517 KB)
Database Schema: 30 tables (19 KB SQL dump)
Documentation: readmePL.txt (Polish installation guide)
License: GNU GPL (licence.txt - full GNU GPL v2 text, 222 lines)
Base Engine: MCCodes Lite (Mafia Codes Lite)
Polish Translation Team:
Theme: Based on Grand Theft Auto: San Andreas (Rockstar Games, 2004)
Language Status (readmePL.txt):
> Wersja 1.22 jest w polskiej wersji j�zykowej, opr�cz bazy danych kt�ra prawdopodobnie zostanie spolszczona w nast�pnych wersjach gry.
Translation: "Version 1.22 is in Polish language, except the database which will probably be translated in future versions."
Known Issues (from readmePL.txt):
attack.php module may have translation errors---
Extension Count Size (KB) Purpose
--------- ----- --------- -------
.php 46 165.79 Application logic (MCCodes Lite game engine)
.txt 2 13.83 Documentation (readmePL.txt, licence.txt)
.gif 2 1.57 Progress bars (bargreen.gif, barred.gif - HP bars?)
.png 1 158.44 Logo image (logo.png)
.jpg 1 158.44 Logo image (logo.jpg - duplicate?)
.news 1 0.08 News file (admin.news - likely text news posts)
.sql 1 19.19 Database schema (dbdata.sql - 30 tables)
grand_theft_auto/
└── Grand Theft Auto/
├── admin.news # Admin news file (announcement system)
├── admin.php # Admin panel
├── announcement.php # Public announcements
├── attack.php # PvP combat system (translation issues noted)
├── attacklost.php # Combat loss screen
├── attackwon.php # Combat victory screen
├── authenticate.php # Login verification
├── bargreen.gif # Green progress bar (HP?)
├── barred.gif # Red progress bar (damage?)
├── criminal.php # Crime system
├── cron_day.php # Daily maintenance cron
├── cron_fivemins.php # 5-minute maintenance cron
├── dbdata.sql # Database schema (30 tables)
├── dlarchive.php # Download archive (?)
├── docrime.php # Execute crime action
├── estate.php # Real estate system
├── events.php # Game events
├── explore.php # City exploration
├── fedjail.php # Federal jail system
├── global_func.php # Global helper functions (money formatter, dropdowns)
├── gym.php # Stat training (strength, agility, IQ)
├── header.php # Page header/navigation
├── index.php # Main dashboard (stats, rankings)
├── installer.php # Web installer (database setup)
├── inventory.php # Item inventory
├── itembuy.php # Buy items
├── iteminfo.php # Item details
├── itemsell.php # Sell items
├── itemsend.php # Gift items to other players
├── itemuse.php # Use consumable items
├── licence.txt # GNU GPL v2 license (full text)
├── loggedin.php # Logged-in user check
├── login.php # Login page (ISO-8859-2 charset, cookie-based remember me)
├── logo.jpg # GTA SA logo (158 KB - duplicate?)
├── logo.png # GTA SA logo (158 KB)
├── logout.php # Logout handler
├── mailbox.php # In-game mail system
├── mainmenu.php # Navigation menu
├── monorail.php # City travel system (monorail = fast travel)
├── mysql.php # Database connection (hardcoded 'localhost', 'user', 'pass')
├── preferences.php # User settings
├── readmePL.txt # Polish README (installation guide, known issues)
├── register.php # New user registration
├── search.php # Player search (by ID)
├── searchname.php # Player search (by name)
├── sendcash.php # Transfer money to players
├── shops.php # Shopping system
├── slotsmachine.php # Casino/gambling (slot machine)
├── stafflist.php # Staff member list
├── staffnotes.php # Staff notes (admin communication)
├── stats.php # Player statistics
├── userlist.php # User list/leaderboards
├── usersonline.php # Online users display
└── viewuser.php # View other player's profile (Error 488 mentioned here)
---
mysql.php (5 lines total):
<?php
$c = mysql_connect('localhost', 'user', 'pass');
mysql_select_db('baza', $c);
$mykey=1827291732;
?>
Critical Variables:
$c - MySQL connection handle (used globally in all files)$mykey - Security key (1827291732) - likely used for password hashing or encryption'baza' (Polish for "database")Installer (installer.php):
mysql.php with user-provided credentialsdbdata.sql automaticallyGlobal Function Library (global_func.php - 169 lines):
function money_formatter($muny, $symb='$') {
// Formats: 1000000 → $1,000,000
// Uses comma thousand separators
}
function itemtype_dropdown($connection, $ddname="item_type", $selected=-1);
function item_dropdown($connection, $ddname="item", $selected=-1);
function location_dropdown($connection, $ddname="location", $selected=-1);
function shop_dropdown($connection, $ddname="shop", $selected=-1);
Generates HTML <select> dropdowns from database tables.
function get_rank($value, $stat) {
// Calculates player rank for specific stat
// Returns position (e.g., "Rank 15" in strength)
}
Header Class (header.php):
class headers {
function startheaders(); // Begin HTML output
function userdata($ir, $lv, $fm); // Display user info bar
function menuarea(); // Navigation menu
function endpage(); // Close HTML
}
Simple HTML wrapper class for consistent page layout.
Every page starts with:
session_start();
if($_SESSION['loggedin']==0) {
header("Location: login.php");
exit;
}
$userid=$_SESSION['userid'];
Login System (authenticate.php):
$_SESSION['loggedin']=1 on success$_SESSION['userid'] to user IDcron_day.php - Daily maintenance:
cron_fivemins.php - Every 5 minutes:
Setup (readmePL.txt):
> do gry wymagany jest Cron Jobs
Translation: "Game requires Cron Jobs"
Must configure server cron to call:
<em>/5 </em> <em> </em> * php /path/to/cron_fivemins.php
0 0 <em> </em> * php /path/to/cron_day.php
Critical Security Gap:
// global_func.php - dropdown generators
$q=mysql_query("SELECT * FROM itemtypes ORDER BY itmtypename ASC", $connection);
while($r=mysql_fetch_array($q)) {
$ret.="n<option value='{$r['itmtypeid']}'";
// Direct output, no htmlspecialchars()
$ret.=">{$r['itmtypename']}</option>";
}
No visible use of:
htmlspecialchars() - XSS protection (0 matches found in grep)mysql_real_escape_string() - SQL injection protection (not visible in samples)---
1. Character Stats (D&D-style attributes)
Index.php Dashboard Shows:
Statystyki: (Statistics)
Si�a: 1,000 [Ranking: 25]
Zrecznosc: 800 [Ranking: 30]
Obrona: 500 [Ranking: 40]
Pracowitosc: 600 [Ranking: 35]
IQ: 700 [Ranking: 28]
Og�lne staty: 3,600 [Ranking: 32] // Total stats ranking
2. Money System
$1,000,000 (comma separators)3. Real Estate (estate.php)
hNAME - House namehWILL - Max willpower (stamina/energy)4. Crime System (docrime.php)
5. Federal Jail (fedjail.php)
6. Combat System (attack.php, attackwon.php, attacklost.php)
7. City System
8. Gym Training (gym.php)
9. Item System
10. Casino (slotsmachine.php)
11. Mail System (mailbox.php)
12. Events (events.php)
13. Rankings (userlist.php)
---
Admin/Logging Tables (2):
adminlogs - Admin action logs (adUSER, adPOST, adGET, adTIME)cashxferlogs - Money transfer logs (FROM, TO, AMOUNT, IP addresses)Combat Tables (2):
armour - Armor item stats (item_ID, Defence)attacklogs - PvP combat logs (attacker, attacked, result, stole, attacklog)City System Tables (1):
cities - City definitions (cityname, citydesc, cityminlevel)Crime System Tables (2):
crimegroups - Crime categories (cgNAME, cgORDER)crimes - Individual crimes (crime success rates, rewards, risks)Additional Tables (23 more, includes):
users - Player accounts (username, level, stats, money, HP)userstats - Extended user statistics (strength, agility, guard, labour, IQ)houses - Real estate properties (hNAME, hWILL, price, minlevel)items - Item definitions (itmname, itmtype, itmbuyable, itmsellprice)itemtypes - Item categories (itmtypename)inventory - Player item ownership (user, item, quantity)shops - Shop locations (shopname, shoplocation)shopitems - Items available in each shopmail - In-game messages (from, to, subject, content)events - Game eventsstaffnotes - Admin communication notesusersonline - Current online users (last activity timestamp)Key Relationships:
users ↔ userstats (1:1 via userid)users ↔ houses (via hWILL = maxwill field)users ↔ inventory (1:many)items ↔ itemtypes (many:1)shops ↔ cities (many:1)---
htmlspecialchars() foundmysql_real_escape_string() in samples
SetCookie('username', usr.value, expdate);
SetCookie('password', pw.value, expdate); // ⚠️ PLAINTEXT PASSWORD!
'user', 'pass', 'baza'mysql_connect() (removed in PHP 7.0)headers (simple HTML wrapper)$c connection variableVulnerabilities:
Pros:
Cons:
---
| Category | Hours | Cost ($75/hr) | Notes |
|---|---|---|---|
| PHP 7+ Migration | 30 | $2,250 | Replace mysql_* with mysqli/PDO in 46 files |
| Security Overhaul | 100 | $7,500 | Add input validation, SQL injection protection, XSS encoding, CSRF tokens, remove plaintext password cookies |
| UTF-8 Conversion | 20 | $1,500 | ISO-8859-2 → UTF-8, update all Polish characters, database charset |
| Database Modernization | 20 | $1,500 | MyISAM→InnoDB, add foreign keys, indexes |
| OOP Refactoring | 60 | $4,500 | Convert procedural code to classes, remove global $c |
| Session Security | 15 | $1,125 | Regenerate IDs, HTTP-only cookies, secure flags |
| CSRF Protection | 15 | $1,125 | Add tokens to all forms (sendcash, attack, itembuy) |
| Complete Polish Translation | 10 | $750 | Translate database content, Error 488, fix attack.php |
| Testing | 30 | $2,250 | PHPUnit tests, security testing |
| Cron Alternative | 20 | $1,500 | Add poor man's cron (triggered by page loads) or queue system |
| TOTAL | 320 hours | $24,000 | ~8 weeks |
Blockers:
Reasoning:
If Modernization Absolutely Required (e.g., preserving existing player base):
Phase 1: Emergency Security (50 hours - $3,750)
mysql_real_escape_string() to ALL querieshtmlspecialchars() to ALL outputPhase 2: PHP 7 Migration (30 hours - $2,250)
Phase 3: Full Modernization (240 hours - $18,000)
Complete:
Missing/Incomplete:
Content Gap: Only 5 cities, 2 crime groups in database = minimal content. Needs 50+ crimes, 20+ cities, 100+ items for full game.
---
Evidence: 0 matches for htmlspecialchars, no mysql_real_escape_string() visible
Vulnerable Pattern (global_func.php):
function item_dropdown($connection, $ddname="item", $selected=-1) {
$ret="<select name='$ddname' type='dropdown'>";
$q=mysql_query("SELECT * FROM items ORDER BY itmname ASC", $connection);
while($r=mysql_fetch_array($q)) {
$ret.="n<option value='{$r['itmid']}'"; // ← No escaping
$ret.=">{$r['itmname']}</option>"; // ← Direct output
}
return $ret;
}
Attack Vectors:
Impact: Full database compromise (dump users table, steal passwords, delete all data)
Location: login.php JavaScript "Remember Me" feature
function saveme() {
if (sv[0].checked) { // "Remember Me" checkbox
expdate = new Date();
expdate.setTime(expdate.getTime()+(365 <em> 24 </em> 60 <em> 60 </em> 1000));
SetCookie('username', usr.value, expdate);
SetCookie('password', pw.value, expdate); // ⚠️ PLAINTEXT!
}
}
Vulnerability:
Attack:
Impact: Complete account takeover, no password change needed.
Evidence: 0 matches for htmlspecialchars() in entire codebase
Vulnerable (index.php):
print "<h3>Generalne informacje:</h2>";
print "<table><tr><td><b>Nick:</b> {$ir['username']}</td>...";
// ↑ Direct echo of database value, no encoding
Attack:
<script>alert(document.cookie)</script>Impact: Session hijacking, malware distribution, phishing.
All Forms Vulnerable:
Attack Example (sendcash.php):
<form action="http://victim-game.com/sendcash.php" method="POST">
<input type="hidden" name="to" value="attacker_id">
<input type="hidden" name="amount" value="999999999">
</form>
<script>document.forms[0].submit();</script>
Victim visits attacker's webpage → automatic money transfer.
No Visible Session Regeneration:
// authenticate.php (likely)
session_start();
// ... password check ...
$_SESSION['loggedin'] = 1;
// ⚠️ Missing: session_regenerate_id();
Attack:
Unknown Hash Method (not visible in examined files):
$mykey=1827291732 (likely MD5/SHA1 salt)$password . $mykey), easily crackablecashxferlogs Table:
<code>cxFROMIP</code> varchar(15) NOT NULL default '127.0.0.1',
<code>cxTOIP</code> varchar(15) NOT NULL default '127.0.0.1',
Issue: Likely uses $_SERVER['REMOTE_ADDR'] without checking proxy headers
admin.php Not Examined, but likely issues:
If Compromised: Full server control (admin can edit any user, execute SQL queries)
cron_day.php, cron_fivemins.php:
Mitigation: Add secret key check or move outside webroot.
Not visible in examined files, but admin panel may allow:
Phase 1: Emergency Patches (20 hours - $1,500)
// Wrap all queries
$safe_id = mysql_real_escape_string($_GET['id']);
$query = "SELECT * FROM users WHERE userid='$safe_id'";
// login.php - Remove SetCookie('password', ...)
// Use session tokens only
// Create wrapper function
function safe_echo($text) {
echo htmlspecialchars($text, ENT_QUOTES, 'ISO-8859-2');
}
// Replace all echo/print statements
Phase 2: CSRF Protection (15 hours - $1,125)
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
if ($_POST['csrf_token'] !== $_SESSION['csrf_token']) {
die("CSRF attack detected!");
}
Phase 3: Session Security (15 hours - $1,125)
session_regenerate_id(true);
ini_set('session.cookie_httponly', 1);
ini_set('session.cookie_secure', 1); // HTTPS only
Phase 4: Password Hashing (10 hours - $750)
// Register
$hash = password_hash($password, PASSWORD_BCRYPT);
// Login
if (password_verify($password, $hash)) {
// Success
}
Phase 5: Complete Audit (40 hours - $3,000)
---
No Technical Innovation: Straight translation of MCCodes Lite with GTA theme.
Browser RPG Landscape:
GTA: San Andreas:
Polish Gaming Market (2009):
| Feature | GTA RPG 1.22 PL (2009) | MCCodes Lite (2006) | Torn City (2003) |
|---|---|---|---|
| Engine | MCCodes Lite | Original | Custom |
| Security | 0/10 (no sanitization) | 1/10 (basic) | 6/10 (better) |
| Features | 6/10 (basic) | 6/10 (same) | 9/10 (extensive) |
| Innovation | 2/10 (translation only) | 4/10 (decent engine) | 8/10 (pioneered genre) |
| Active in 2025 | Dead | Dead | ALIVE (100K+ players!) |
Verdict: GTA RPG is a straight translation of MCCodes Lite with GTA theme. Zero innovation, just localization for Polish market.
Yakuza.NET / TubeShadow:
MCCodes Legacy:
GTA RPG 1.22 PL Impact: Minimal. Likely served small Polish community (2009-2012), then abandoned when players moved to Facebook games (Mafia Wars) or mobile games.
---
Reasons:
Scenario: You have 10,000 existing Polish players and can't migrate them.
Modernization Roadmap (320 hours / $24K):
Phase 1: Emergency Security (50 hours - $3,750)
mysql_real_escape_string() to ALL queries (46 files)htmlspecialchars() to ALL outputPhase 2: PHP 7 Migration (30 hours - $2,250)
Phase 3: UTF-8 Conversion (20 hours - $1,500)
Phase 4: Database Modernization (20 hours - $1,500)
Phase 5: OOP Refactoring (60 hours - $4,500)
Phase 6: Complete Translation (10 hours - $750)
Phase 7: Cron Alternative (20 hours - $1,500)
Phase 8: Session/CSRF (30 hours - $2,250)
Phase 9: Testing (30 hours - $2,250)
Phase 10: Documentation (20 hours - $1,500)
Total: 320 hours = $24,000 (8 weeks full-time)
Cost-Benefit Analysis:
Recommendation: If spending $24K, better to build NEW game with modern stack rather than fix 2006 code.
Modern Stack:
Benefits:
Estimated Cost: $30K (400 hours) - only $6K more than fixing GTA RPG
GTA RPG 1.22 PL is Valuable For:
Preservation Recommendations:
Technical Quality: 1/10 (Worst in 30 games - zero security)
Security Risk: 10/10 CRITICAL (SQL injection, XSS, CSRF, plaintext passwords)
Legal Risk: 8/10 HIGH (GTA trademark, no Rockstar license)
Historical Value: 4/10 (Minor example of Polish browser game market 2009)
Production Viability: 0/10 (⛔ NEVER USE)
Educational Value: 7/10 (Excellent for security training - what NOT to do!)
---
Grand Theft Auto RPG v1.22 PL is a Polish translation of MCCodes Lite (2006), themed after GTA: San Andreas. Released by Yakuza.NET team in April 2009, it represents a failed attempt to bring mafia browser RPGs to the Polish market.
Critical Failures:
Why It Failed (compared to Torn City success):
Recommendation: ⛔ Do not use. For security training only (isolated VM). If building crime game, study Torn City (still alive!) or use Laravel (modern framework with built-in security).
Ranking in Collection (30 games analyzed):
This is an anti-pattern - learn from its failures, never replicate them.
| Category | Rating | Commentary |
|---|---|---|
| Innovation & Originality | ★★☆☆☆☆☆☆☆☆ 2/10 | Clone of MCCodes Lite with GTA theme - derivative on both counts |
| Code Quality | ★★★★☆☆☆☆☆☆ 4/10 | MCCodes base is decent but Polish translation incomplete, encoding issues |
| Security Posture | ★★☆☆☆☆☆☆☆☆ 2/10 | Typical 2006 MCCodes vulnerabilities, no visible security improvements |
| Documentation | ★★★★★☆☆☆☆☆ 5/10 | readmePL.txt in Polish with install instructions + GPL license |
| Gameplay Design | ★★★★★☆☆☆☆☆ 5/10 | Standard MCCodes gangster mechanics with GTA: San Andreas flavor |
| Technical Architecture | ★★★★☆☆☆☆☆☆ 4/10 | MCCodes Lite framework solid but 30 tables, procedural code, cron dependency |
| Completeness | ★★★★★★☆☆☆☆ 6/10 | Full MCCodes feature set but Polish UI incomplete, English database |
| Historical Significance | ★★★★★★☆☆☆☆ 6/10 | Documents Polish browser RPG community, MCCodes translation efforts |
| Preservation Value | ★★★★★☆☆☆☆☆ 5/10 | Moderate value for MCCodes history, Polish gaming scene documentation |
Summary: Grand Theft Auto RPG v1.22 PL is a Polish translation of MCCodes Lite (2006 gangster engine by Dabomstew) with a GTA: San Andreas theme, released by Yakuza.NET team in April 2009. While the GPL license allows legal modification, the Polish-only interface (ISO-8859-2 encoding), incomplete translation (English database), and unlicensed use of Rockstar's GTA IP create practical and legal concerns. The underlying MCCodes Lite engine is solid but shares typical 2006 vulnerabilities. Valuable mainly as documentation of Polish browser RPG translation efforts during the MCCodes era.
Running many of the scripts in this archive on a live server presents a serious security risk. These projects were created before modern hardening practices and may contain vulnerabilities that can compromise your system.
We strongly recommend using this code for reference and analysis only, or in isolated local environments. By downloading these files, you accept full responsibility for their use.