• Content Count

  • Joined

  • Last visited

Community Reputation

0 Neutral

About Tuna

  • Rank
    Advanced Member

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Just a few days ago I was playing GTA online, after just finishing one of those 4 player missions and being warped back to freeroam a hacker was able to warp every single player to one location and kill us all, seriously Rockstar, SERIOUSLY? A remote player being able to change your position is absolutely ridiculous. I was able to identify another 23 problems including major desync of up to 30 seconds of complete desync. GTA V online will never compete with MTA because GTA V because if you take away the amazing graphics you're left with a buggy game ruined by cheaters. Rockstar must take no pride in their work, they're a billion dollar company who could fix all these bugs within 1 day yet make no attempt to do so, even though GTA V has been out for years. GTA V single player is great, GTA online is great too if you've got some friends that you can play private missions with (to avoid cheaters and overpowered players who will constantly attack you for no reason) but it will never be anything like MTA.
  2. Tuna

    Data Storage

    Yes it is. I'm gonna have to resort to storing stuff in a lua table as well as SQL so it can read from the table cause its just getting seriously out of hand now... Edit: ccw has made a fix for this which works extremely well. Get any version of 1.0.4 which is higher than r2049 http://code.google.com/p/mtasa-blue/sou ... ail?r=2049
  3. Tuna

    Data Storage

    Its only the police/crime database that are using SQL funcs, core and vehicles both use account data. For example when a player spawns it has to gets their team, skin, money, health, armour, weapons, position. And just those few getAccountDatas seem to be able to use a large portion of CPU.
  4. Tuna

    Data Storage

    Hello, I've got some questions. The server has been very busy the past week (reaching 105 players on sunday) and some of the resources are really putting a strain on the CPU which is really affecting the playability. So I used PerformanceBrowser (Thankyou ccw) to find which resources were causing the problem. The resources were important things like the core, player vehicle database, and police/crime database. There were times when some would jump to over 50% usage which is insane for a 3ghz dual core CPU. The similarity with these resources were that they all use get/setAccountData a lot and the SQL funcs. I debugged one of the resource intensive functions with getTickCount() to see what part was causing it and it all took 0 miliseconds apart from 2 getAccountDatas which were taking around 50 miliseconds each. One of the getAccountDatas I was able to remove as it wasn't needed and the other already had a lua table storing the data. The function now executes in 0 miliseconds and uses a tiny fraction of the CPU it was using before. So the problem is the SQL functions. I know they're gonna be slow because they access the hard drive but why does it have to use up so much of the CPU? Is there any other data storage method which is more efficient? Can't the registry.db and internal.db be fully loaded to RAM so atleast reading from them doesn't take so long?
  5. The problem was traced back to our web stats. Whether or not somebody was overusing it we don't know.
  6. Thats right, with the help of ccw and his PerformanceBrowser we found that player(s) were doing something (I won't tell everyone how to freeze a server up) using our scripts to continually freeze the server for about 5 minutes, players did not time out though. I developed a script to prevent this action which would stop the freezing and ban them. Since then these freezes have not occured but we've had two people today that were detected and banned for this action, which I believe were intentional (quite a few similarities in the two players) Now the server just crashes and crashes and crashes and we've tried some many things, nothing helps.
  7. While bugtracker is down. Basically, when you open admin spectate there are 4 events that get handled, and 4 when you close spectate. If you close spectate and then open it again, you'll get an annoying debug error because one event is still being handled. This is because when closed the wrong event is removed: --Opened: addEventHandler ( "onClientPlayerWasted", _root, aSpectator.PlayerCheck ) addEventHandler ( "onClientPlayerQuit", _root, aSpectator.PlayerCheck ) addEventHandler ( "onClientCursorMove", _root, aSpectator.CursorMove ) addEventHandler ( "onClientRender", _root, aSpectator.Render ) --Closed: removeEventHandler ( "onClientPlayerWasted", _root, aSpectator.PlayerCheck ) removeEventHandler ( "onClientPlayerQuit", _root, aSpectator.PlayerCheck ) removeEventHandler ( "onClientMouseMove", _root, aSpectator.CursorMove ) --Just needs to be made "onClientCursorMove" removeEventHandler ( "onClientRender", _root, aSpectator.Render ) For somebody who can commit to mtasa-resource: http://tunaftw.com/adminspectate.patch.zip Remove the .zip once you've downloaded to get the patch file (my server didn't like .patch)
  8. Don't call them hackers, because they are not. Calling them a hacker implies they actually achieved something in their lives, as a hacker is somebody who gains unathorized entry to something. These people are just cheaters, people who have modified their game and most of this cheating can be detected through scripting or MTA anticheat, so a server with this stuff running should be quite cheater free, and admins also help.
  9. I think it might be because you need pass source to that function inside the timer. so: killsTimer = setTimer (function ( ) local to: killsTimer = setTimer (function (source) local and you may also need to put source as an arguement in setTimer so: triggerClientEvent(source,"updateKills",source,killsData,200) end,1000,0) to: triggerClientEvent(source,"updateKills",source,killsData,200) end,1000,0,source)
  10. It turns out the problem is setVehiclePaintjob. setVehiclePaintjob gives your vehicle a random colour so the colour has to be set after the paintjob. Would be nice if setVehiclePaintjob got the current colour and set that once it has changed the paint job.
  11. It may be to do with the paintjob. function reproduceMTABug(player) local createdVeh = createVehicle(535, unpack({getElementPosition(player)})) if (createdVeh) then setVehicleColor(createdVeh, 51, 1, 0, 0) setVehiclePaintjob(createdVeh, 2) end end addCommandHandler("vehiclebug", reproduceMTABug) When sat in the same vehicle: Server side: getVehicleColor(getPedOccupiedVehicle(getPlayerFromName("yourName"))) Command results: 51 [number], 1 [number], 0 [number], 0 [number] Client side: getVehicleColor(getPedOccupiedVehicle(getPlayerFromName("yourName"))) Command results: 97 [number], 1 [number], 0 [number], 0 [number]
  12. Again cause there is no bug reporting system I'm posting here... After getting a report that my vehicle system was not setting vehicle colours correctly I had to investigate. The vehicle is created on login, and then the model, colours, paintjob, location, rotation, health, upgrades are set. Yet players are seeing different colours. In runcode the vehicle colour is set correctly on the server, but on the client the colour is not being set the same. I guess i'll have to make a client event just to set the colour of a vehicle right.
  13. Thats not the point, if an event does not work it should be removed or fixed. Edit: and yet another function that is failing server side: isElementInWater. Ran a for loop isElementInWater (vehicles) got no returns, run it client side and got 2. There were players stood around the vehicle in the water so it can't have been that somebody had to stream it for the server side one to work.
  14. After debugging a simple script to find out the event didn't even work I have found that onPlayerWeaponSwitch does not work. It is only triggering when a player is given a weapon. Since there is no bug tracker I'll post here. function onSwitch(prev, new) outputChatBox(tostring(prev).." "..tostring(new).." "..getPlayerName(source), root, 255, 255, 0) end addEventHandler("onPlayerWeaponSwitch", root, onSwitch) Nobody on the server was triggering it, only when weapons were being given to people. Server Version: 1.0.4-release-1963