DrAkE

V.I.P. Member
  • Hozzászólások

    2.118
  • Csatlakozott

  • Utoljára aktív

Közösségi hírnév

777 Közkedvelt

3 követő

DrAkE felhasználóról

  • Rang
    Veterán
  • Születésnap 1994-11-21

Utolsó profil megtekintők

741 profil megtekintés
  1. Magát a jelszót hashelve küldd el a szervernek, amit a szerveren tovább hashelhetsz egy bizonyos salt-tal. A salt-nak egy általad megadott karakternek kell lennie és nem véletlenszerűnek. Ha mindig véletlenszerű lenne nem tudnád összevetni, hogy helyes jelszót írt-e be vagy sem, mivel nem lenne meg a salt hozzá (bár van aki elmenti adatbázisban minden egyes emberhez tartozó saját saltot).
  2. A szervergép azért van, hogy terhelni lehessen. Ha már belebasznak egy bölömbika processzort ne csak super mariozni akarjanak már rajta az emberek. Azért van, hogy ki lehessen használni. Másrészről érdemes a jelszót kliens oldalon hashelni és úgy elküldeni, ugyanis az RPC-k sima bájtokat küldenek, így lényegében akármilyen egyszerűbb hálózat figyelő programmal kilehet figyelni egyes emberek jelszavát. Összedobtam egy gyors kis tesztet, megnézzük mennyi idő alatt fut le: local TEST_SETTINGS = { interval = 10000, salt_1 = randomString(16), salt_2 = randomString(16), } local tick = getTickCount() for i = 1, TEST_SETTINGS.interval do local password = randomString(32) hash("sha512", hash("sha512", TEST_SETTINGS.salt_1) .. hash("sha512", password) .. hash("sha512", TEST_SETTINGS.salt_2)) end print(string.format("Executed in %dms", getTickCount() - tick)) Természetesen a jelszó minden egyes ciklusnál egy tetszőleges 32 karakter hosszúságú szöveg ami alfanumerikus karaktereket tartalmaz. A fenti kód az én gépemen átlagban véve 310ms alatt futott le. Most annak az esélye, hogy éles szerveren egy adott pillanatban, egy csettintésre összejönne 10.000 kérés, azt nem tartom valószínűnek. Az egyes algoritmusokat brute forceolni tudják csak. Saját algoritmust meg nem érdemes fejleszteni se, hiszen a meglévőeket hozzártő szakemberek írták, és fejlesztik azt.
  3. (RIP nem néztem a dátumot) Egy megadott fájlban elhelyezed a lokalizációs szövegeket az alábbi táblázat formátumban: local Localization = { ["en_EN"] = { ["dashboard_welcome_text"] = "Welcome Aboard", }, ["hu_HU"] = { ["dashboard_welcome_text"] = "Üdvözöllek", } } Aztán pedig elmented (bár ezt már rád bízom, hogyan is): OOP: playerElement:setData("Player:Localization", "hu_HU", false) Non-OOP: setElementData(playerElement, "Player:Localization", "hu_HU", false)
  4. Hát igazság szerint SA-MPban a textdrawok értékei (hol legyen a maga a textdraw, szöveg, szín, stb) azt szerver oldalon tárolja ugyanúgy. Ettől eltekintve jól látod a dolgokat. A szerver tárolja a főbb adatokat, a kliens meg a megjelenítő. A chatnél természetesen a szerver ilyenkor csak közvetítő szerepet lát el, nem tárolja a chat szövegét, hiszen a szerverre nézve felesleges adatnak számít.
  5. GDPR = General Data Protection Regulation. Szerintem már a nevében benne van mi is a GDPR. A felhasználók adatait kellőképpen kell titkosítani, illetve tárolni. Minden adatokkal kapcsolatos dolgokkal tájékoztatni kell a felhasználót, illetve biztosítani kell az adathordozhatóságát. Másrészről, mint cég/magánszemély, köteles vagy ÁSZF-et készíteni, hiszen egy szolgáltatást nyújtasz, és amint valaki bérel tőled valamiféle szolgáltatást, szerződés jön létre. Ezt a szerződést taglalja magában az ÁSZF.
  6. Ha egy szervert akarsz csinálni, akkor valószínűleg a közösségért, és az élményért teszed. Ha ezt az elvet követjük, akkor szerver van a kliensért, vagy a kliens a szerverért? Egyik sincs meg a másik nélkül. Programozók első íratlan törvénye, hogy sose bízz a felhasználóban. Semmi olyan dolgot nem szabad a kliens oldalt tárolni, amiből esetleg plusz információhoz juthat, vagy esetleg felhasználhatja azokat. A szervergép azért szervergép, hogy lehessen terhelni, a kiszolgálókért van és nem fordítva. Másrészről a kliens oldalt legtöbb esetben design elemek megjelenítésére és utasítások kiadására használatosak, de ettől függetlenül még szerver oldalon le kell kezelni minden eshetőséget (ha a játékos hamis adatokat adna meg valamely úton módon (bug, vagy valahogyan hackelt klienssel játszik)). Természetesen vannak kivételek, van amit jobb megírni kliens oldalon. Sokan az SQL lekérdezéseket is félnek használni szerver oldalon, pedig azok aszinkron megoldással vannak tervezve, és egy bonyolultabb lekérdezés is lefut 0,3ms alatt. Mi van akkor, ha a játékos hozzáfér a játék memóriájához, funkcióihoz, és áttudja rakni a CP-ket a saját pozíciójára, így érzékelve azt, hogy elvégezte a munkát? (nem sok az esély rá természetesen, de kitudja mikor lesz egy rosszakaró)
  7. https://www.autoalkatreszonline24.hu/kulso-visszapillanto/vw/golf-iv-1j1
  8. https://wiki.multitheftauto.com/wiki/DxDrawText dxDrawTextnek van wordBreak paramétere, ami arra szolgál, hogy ha a szöveg túlmenne a meghatározott szövegdobozon kívülre, akkor a szót új sorba rakja.
  9. "Rockstar Games\GTA San Andreas\audio\streams" mappában vannak fájlok? Illetve próbáltad Rendszergazda jogosultságokkal futtatni a SA:MP-ot?
  10. local hangulatjelek = { {":D", "#dec277*nevet*#FFFFFF"}, {":)", "#dec277*mosolyog*#FFFFFF"}, {":(", "#dec277*szomorú*#FFFFFF"}, {";)", "#dec277*kacsint*#FFFFFF"}, {"xD", "#dec277*röhög*#FFFFFF"}, {"XD", "#dec277*röhög*#FFFFFF"}, {":O", "#dec277*csodálkozik*#FFFFFF"}, {":/", "#dec277*fintorog*#FFFFFF"}, } for k, v in ipairs(hangulatjelek) do msg = msg:gsub(v[1], v[2]) end return msg
  11. NVIDIA vezérlépultban tudod beállítani, melyik alkalmazás, melyik videókártyát használja.
  12. Pöppet hasonlít.
  13. Nem tudom, hogy komolyan gondolod, de attól, hogy valamiért fizetsz még lehet szar :DD
  14. Hopp, nem láttam, hogy sima hangról van szó, akkor sorry, tekintsd tárgytalannak.