-
Posts
72 -
Joined
-
Last visited
-
Days Won
3
Kronos's Achievements
Recent Badges
4
Reputation
-
✨ Salutare, Quitzone România! 🎮 Totul se învârte în jurul GTA.QUITZONE.RO – Godfather Roleplay 🚀 Perioada Beta SA:MP se apropie! 📅 Data lansării: Miercuri, 2 Iulie 2025 🕛 Ora: 12:00 (EEST) ⏳ Durată estimată: 2–3 săptămâni 🔍 Ce se întâmplă în Beta? 🎮 Jucătorii aleși ca testeri vor juca pe server în condiții reale 🐞 Vor căuta bug-uri și le vor raporta în secțiunea Raportare 💡 Vor veni cu idei noi în canalul Sugestii 📸 Vor face screenshot-uri in-game pentru a arăta atmosfera 🧪 Vom lansa o secțiune nouă cu previzualizări de update-uri 📊 Veți avea acces la Game Panel pentru monitorizarea contului ❤️ Mulțumiri! 🙏 Mulțumim tuturor celor care ne-au susținut până acum! Quitzone e mai mult decât un server — este o comunitate. 🎁 Aplicații & Bonusuri 📩 Încă poți aplica ca Beta Tester în canalul: 「🔧 aplicații-beta 🔧」 🎁 Toți testerii activi vor primi un cadou special la deschidere! 📌 Salvează data: 🗓️ 2 Iulie 2025, ora 12:00 – Ne vedem pe server!
-
Gta VI o sa rupa stilul. Posibil de aceea si amanarea lansarii, vor sa faca treaba buna
-
32 numaratoarea continua 😅
-
Daca nu reusesti, adauga discordu nostru si da-mi un pm.
- 3 replies
-
- samp gamemode
- rpg samp
-
(and 2 more)
Tagged with:
-
Jocuri ce vor aparea in 2025!
-
- death stranding 2
- nightmares 3
- (and 6 more)
Cerere ajutor scripting RAGE:MP Conținut mesaj: Salut! Am nevoie de ajutor cu un script în RAGE:MP. Mai jos sunt detaliile problemei: Server type: RAGE:MP Limbaj utilizat: JavaScript / C# (alege unul) Descriere problemă: [Explică clar ce încerci să faci și ce nu funcționează. De exemplu: încerc să creez un sistem simplu de teleportare, dar comanda nu funcționează.] Cod relevant: js CopyEdit // exemplu JavaScript mp.events.addCommand('tp', (player, fullText) => { player.position = new mp.Vector3(100, 100, 100); }); Eroare primită (dacă este cazul): [Eroare din consola serverului sau clientului] Ce am încercat deja: [Menționează dacă ai verificat alt cod, ai schimbat ceva sau ai citit documentația.] Mulțumesc anticipat pentru orice ajutor!-
- ragemp help
- support ragemp
-
(and 1 more)
Tagged with:
✅ Ce implementăm acum: Teleportare automată la spawn după login Salvarea poziției jucătorului la deconectare Încărcarea poziției jucătorului la autentificare Totul păstrând sistemul fără MySQL, cu fișiere .json. 🔧 Modificăm fișierul index.js: 🔄 Înlocuiește comenzile /register și /login cu acest cod: js CopyEdit const fs = require('fs'); const path = require('path'); const bcrypt = require('bcrypt'); const accountsPath = path.join(__dirname, 'accounts'); if (!fs.existsSync(accountsPath)) fs.mkdirSync(accountsPath); function accountFile(username) { return path.join(accountsPath, `${username.toLowerCase()}.json`); } mp.events.addCommand('register', async (player, fullText) => { const [username, password] = fullText.split(' '); if (!username || !password) return player.outputChatBox("Folosire: /register [username] [parola]"); const filePath = accountFile(username); if (fs.existsSync(filePath)) return player.outputChatBox("Contul există deja."); const hashedPassword = await bcrypt.hash(password, 10); const data = { username, password: hashedPassword, pos: { x: -425.5, y: 1123.2, z: 325.1 } // Poziția default (spawn) }; fs.writeFileSync(filePath, JSON.stringify(data)); player.outputChatBox(`Cont creat ca ${username}.`); }); mp.events.addCommand('login', async (player, fullText) => { const [username, password] = fullText.split(' '); if (!username || !password) return player.outputChatBox("Folosire: /login [username] [parola]"); const filePath = accountFile(username); if (!fs.existsSync(filePath)) return player.outputChatBox("Cont inexistent."); const data = JSON.parse(fs.readFileSync(filePath)); const match = await bcrypt.compare(password, data.password); if (!match) return player.outputChatBox("Parolă incorectă."); player.outputChatBox(`Bun venit, ${username}!`); player.name = username; // Salvează în variabile temporare player.accountData = data; player.loggedIn = true; // Teleport la poziția salvată const pos = data.pos; player.spawn(new mp.Vector3(pos.x, pos.y, pos.z)); }); 🧠 Salvare poziție la deconectare: Adaugă la finalul fișierului: js CopyEdit mp.events.add('playerQuit', (player) => { if (!player.loggedIn) return; const filePath = accountFile(player.name); const pos = player.position; player.accountData.pos = { x: pos.x, y: pos.y, z: pos.z }; fs.writeFileSync(filePath, JSON.stringify(player.accountData, null, 2)); }); ✅ Rezultat: La login, jucătorul va fi teleportat la ultima poziție salvată. La ieșire, poziția este actualizată în fișierul .json. 🧪 Testare: Te înregistrezi cu /register test 1234 Te loghezi cu /login test 1234 Te plimbi puțin Ieși și reintri — vei fi teleportat unde ai rămas-
- ragemp tutoriale
- spawn ragemp
- (and 3 more)
✅ Ce vei învăța: Salvarea conturilor local în fișiere .json Înregistrare și autentificare cu comenzi: /register și /login Securizarea parolelor cu bcrypt 🧰 Ce ai nevoie: Node.js (activ în RAGE MP) Un folder de gamemode, ex: packages/auth/ Instalare modul bcrypt: bash CopyEdit cd packages/auth/ npm init -y npm install bcrypt 📁 Structura: markdown CopyEdit packages/ └── auth/ ├── index.js ├── bcrypt (modul instalat automat) └── accounts/ Creează folderul accounts – aici se vor salva fișierele conturilor. 🧠 Codul: index.js js CopyEdit const fs = require('fs'); const path = require('path'); const bcrypt = require('bcrypt'); const accountsPath = path.join(__dirname, 'accounts'); if (!fs.existsSync(accountsPath)) { fs.mkdirSync(accountsPath); } function accountFile(username) { return path.join(accountsPath, `${username.toLowerCase()}.json`); } mp.events.addCommand('register', async (player, fullText) => { const [username, password] = fullText.split(' '); if (!username || !password) return player.outputChatBox("Folosire: /register [username] [password]"); const filePath = accountFile(username); if (fs.existsSync(filePath)) { return player.outputChatBox("Acest nume este deja înregistrat."); } const hashedPassword = await bcrypt.hash(password, 10); const data = { username, password: hashedPassword }; fs.writeFileSync(filePath, JSON.stringify(data)); player.outputChatBox(`Cont înregistrat ca ${username}.`); }); mp.events.addCommand('login', async (player, fullText) => { const [username, password] = fullText.split(' '); if (!username || !password) return player.outputChatBox("Folosire: /login [username] [password]"); const filePath = accountFile(username); if (!fs.existsSync(filePath)) { return player.outputChatBox("Cont inexistent."); } const data = JSON.parse(fs.readFileSync(filePath)); const match = await bcrypt.compare(password, data.password); if (!match) return player.outputChatBox("Parolă greșită."); player.outputChatBox(`Autentificat cu succes ca ${username}.`); player.name = username; // Poți face și spawn aici, sau alte acțiuni }); 🔧 Adaugă în conf.json: json CopyEdit "packages": ["auth"] 🧪 Testare: Rulează serverul (server.exe). Intră în joc și tastează: /register nume parola /login nume parola 🔐 Opțional: Adaugă spawn după login Stochează date suplimentare (bani, poziție, job etc.) Treci la o bază de date (MySQL sau SQLite) pentru producție-
- ragemp
- gta v online
- (and 5 more)
✅ Ce vei învăța: Cum conectezi RAGE MP la o bază de date MySQL Cum creezi un sistem de înregistrare și autentificare simplu Cum stochezi parolele în mod sigur (bcrypt) 🔧 Pași principali: 1. 🧱 Configurare MySQL Creează o bază de date, ex: ragemp_db, și rulează acest SQL: sql CopyEdit CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL ); 2. 📦 Instalare module necesare În folderul serverului (packages/login/), inițializează un package.json: bash CopyEdit npm init -y npm install mysql2 bcrypt 3. 🗃️ Conectare la MySQL Creează un fișier database.js în packages/login/: js CopyEdit const mysql = require('mysql2'); const pool = mysql.createPool({ host: 'localhost', user: 'root', password: '', // Parola ta de la MySQL database: 'ragemp_db' }); module.exports = pool.promise(); 4. 🔐 Cod login & register – index.js js CopyEdit const db = require('./database'); const bcrypt = require('bcrypt'); mp.events.addCommand('register', async (player, fullText) => { const [username, password] = fullText.split(' '); if (!username || !password) { return player.outputChatBox("Folosire: /register [username] [password]"); } const [rows] = await db.query("SELECT * FROM users WHERE username = ?", [username]); if (rows.length > 0) { return player.outputChatBox("Username-ul este deja folosit."); } const hashedPassword = await bcrypt.hash(password, 10); await db.query("INSERT INTO users (username, password) VALUES (?, ?)", [username, hashedPassword]); player.outputChatBox("Înregistrare cu succes!"); }); mp.events.addCommand('login', async (player, fullText) => { const [username, password] = fullText.split(' '); if (!username || !password) { return player.outputChatBox("Folosire: /login [username] [password]"); } const [rows] = await db.query("SELECT * FROM users WHERE username = ?", [username]); if (rows.length === 0) { return player.outputChatBox("Cont inexistent."); } const match = await bcrypt.compare(password, rows[0].password); if (!match) { return player.outputChatBox("Parolă incorectă."); } player.outputChatBox(`Bun venit înapoi, ${username}!`); player.name = username; }); 5. 🧪 Adăugare în conf.json Asigură-te că ai acest lucru în conf.json: json CopyEdit "packages": ["login"] 🔐 Notă despre securitate: Parolele sunt criptate cu bcrypt, ceea ce este o bună practică. Nu stoca niciodată parole în clar!-
- ragemp
- tutoriale ragemp
-
(and 3 more)
Tagged with:
×
- Create New...