Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 20/02/26 in all areas

  1. For some changes it is a good way to save resource. Like for example statistics or car fuel. But do not do it for critical data. When for example your power shuts down, it could create weir de-syncs. (Like if you were buying a house ingame: you do not receive the house [in buffer] but the money has already been withdrawn [not in buffer]) You can use MySQL + dbConnect, instead of writing a custom module. The current MySQL module available is blocking the CPU thread, so that is not really an option for 200 players in my opinion. Also a way to save resources, is to enable multi_statements: local connection = dbConnect("sqlite", "database/database.db", "", "", "multi_statements=1") When for example if you want to remove data at multiple tables. dbExec(connection, "DELETE FROM shared_memory_file WHERE clientId = ?;DELETE FROM shared_memory_frame WHERE clientId = ?;DELETE FROM shared_memory_frame_position WHERE clientId = ?", clientId, clientId, clientId) Or get data from multiple tables: dbQuery(processRequestSharedMemory, { player, clientId }, connection, [[ SELECT variantKey, item, fileData FROM shared_memory_file WHERE clientId = ?; SELECT x, y, item FROM shared_memory_frame WHERE clientId = ?; SELECT x, y, z FROM shared_memory_frame_position WHERE clientId = ? LIMIT 1 ]], clientId, clientId, clientId)
    1 point
  2. Ty so much for reply. Yes i had same thing in head about how buffer should look like. Changing only values that has changed etc. I didn't precised it well. By sending tables to database every 30s. i was thinking about mechanism that also stacks changed values to certain amount. Like old table and new table concept. Lets say im checking every 30s if cars changed their position. I compare old table with new. And values that has changed i move to some sort of stack. And stack is let say sent every 4 cycles of checking car positions. Before that stack is sent to database he's checked for latest values and reduced in size. By validating what comes from client i was thinking about putting clever anticheat trigger mechanism. Like while checking for changes. It's checking if that change was possible with my scripts for cars. Is car moving too fast or something. If it's. Then anticheat is triggered. and let me end here about anticheat mechanism. But ty also for mentioning your script. I'll take a look on it. Also by outside database i was thinking about LAMP thing in LANetwork on the other physical device. As i wanna only let one device to talk with the world. Just to reduce risk. Im sharing same network so i need to keep packs small so i have transfer reserved for server talking to trustfull world. Not exact desciption on purpouse here. Im having physical hardware so CPU and RAM are not problem. Problem is rational use of power. As i want to run my server independent. And made it most watt per player ratio effective. And keep it cheap. As im not planing earn money from server. Sorry for not mentioning details, but i didn't knew how to describe it all earlier and now too. as english is not my great side. Also ty for yours recommendations. Especialy about last one i forgot about that nice feature EDIT ADD Isn't it better for me to just make mta module that handle this stuff with multi core rather than single threaded lua? TheoreticaIy it should save me cycles on lua. And let them to be used more productive on bare bone server mechanics and scripting. And if so. what are good sources to begin with mta modules.
    1 point
  3. Buffers can be useful. Because you can only pick a server with a good CPU once. Sometimes you can upgrade the CPU, but there is a limit. While with ram, it is easier to upgrade. MTA Lua processes are afaik still is single threaded. But you need to invest a lot of time. I can be. An example db resource I made a while a go, not very efficient storage (text/string based), but easy to use. Not sure why I build the types text based, I would have build it differently now a days. Also recommended to write automatic tests for your creation, like I did with mine in sub folder \dev\*. You can storage md5 hash validation strings for validation, if you are interested in that. Smaller hash storage [binary]: using the UNHEX(hash) function (convert back with HEX(binary). Example resource that uses hash validation for client screenshots. I am not one of them. But I do work often met databases. I have put my recommendation in a spoiler if you are still interested:
    1 point
  4. @Dutchman101 pls change my ban reason cuz this one is boring my serial is C0C42AB588698E74FD719E8FC4B00394 and ur mom is fat
    1 point
×
×
  • Create New...