Platin - xNikoXD

  • Content Count

  • Joined

  • Last visited

Community Reputation

8 Neutral


About Platin - xNikoXD

  • Rank
    Street Cat
  • Birthday 07/06/2000


  • Gang
    Milanga Warriors
  • Location
    Montevideo, Uruguay
  • Occupation
  • Interests
    Scripting, Computing, Anime, Technology, Girls, Alcohol, Weed and Parties.

Recent Profile Visitors

2,212 profile views
  1. Yeah... about that:
  2. Podes conseguir información más detallada con performancebrowser, incluso podes conseguir informacion de que funcion esta causando tanto uso de CPU:
  3. Tbh is a big let down for a lot of RP users that are coming to MTA. Most of them are familiar with .asi and mods and have a lot of them in their game. The most popular it seems is modloader so they don't have to edit their gta3.img and replace the original files. It would be nice if on 1.6 it could be possible to let the servers decide fully if they will allow asi modifications or not. I know this isn't feasible or even necesary, specially bcuz the anticheat could be compromised with this, but it would be a nice thing to think about. Even better it would be to just accept certain .asi modifications based on their hash, but yeah. Maybe we could get a modloader type thing on native MTA? who knows
  4. 1.5.8 before summer? noice
  5. How much do you offer? What kind of systems are you looking for? Hardcore RP? Voice RP? Would you pay for script or for hour? Do you use paypal? It would be nice to add that information into your post really.
  6. It seems that 2020 is going to be a good year for MTA. Congrats and thanks for all the patch contributors to let us keep expanding our servers in many numerous ways!
  7. Never, really never never never element datas if you will edit them every frame, you will just lag the client (and if synced) the entire server. The above code is ok, but I would personally make this changes: addEventHandler("onClientRender", root, function() -- Using getElementsByType("player", root, true) instead of getElementsByType("player") will give us only the users that the client is streaming in local rTable = difference(getElementsByType("player", root, true), my_player_list) -- This would be the same for the entirety of the frame, you don't need to update it for every player, so just let it seat outside local px, py, pz = getCameraMatrix( ) -- We should use ipairs, because our table is indexed properly, this should decrease usage of... cpu? ig for i, v in ipairs(rTable) do -- i don't know why you have this check here, but if you want to check if V is an element, use this: if isElement(v) then local tx, ty, tz = getElementPosition( v ) local dist = math.sqrt( ( px - tx ) ^ 2 + ( py - ty ) ^ 2 + ( pz - tz ) ^ 2 ) if dist < 60.0 then if isLineOfSightClear( px, py, pz, tx, ty, tz, true, false, false, true, false, false, false, localPlayer) then local sx, sy, sz = getPedBonePosition( v, 6 ) local x,y = getScreenFromWorldPosition( sx, sy, sz + 0.2 ) -- You shouldn't store variables if they won't vary, if possible ofc if x then dxDrawBorderedText( string.gsub ( getPlayerName ( v ), "#%x%x%x%x%x%x", "" ).."", x, y, x, y, tocolor(getPlayerNametagColor(v)), 1.1, "default-bold", "center", "center" ) end -- If you return here, you won't be drawing anyone else if the check fails end end end end end )
  8. I don't quite get why your ranking system does not work, maybe you forgot to set anything to the element data "level" and its giving you an error because you are trying to compare a boolean with a number? Anyway, i made this mess, have fun trying to understand it, I hope you can exports.scoreboard:addScoreboardColumn('Rank') local ranking_table = { -- You would need at least level 1 to unlock this rank -- This table stores itself like this: {minimum level to obtain the rank, the name of the rank} {1, "Noobie"}, {5, "idk"}, {10, "just put your ranks in here"}, } function onSpawn() -- When you spawn, your current lvl would be stored in this variable, so we can check it later local lvl = getElementData(source, "level") or 1 -- Then we will "travel" arround the table until from the last index to the first (in this case from 3 to 1) -- until we find that a rank requieres the same or lower level to adquire, so we set that to the player and we -- stop checking the table using break (some programmers/scripters would say that using break is a bad practice -- but w/e) for i=#ranking_table,1,-1 do if raking_table[i][1] <= lvl then setElementData(source, "Rank", ranking_table[i][2]) break; end end -- This should work just fine, but i didn't test it so, idk end addEventHandler("onPlayerSpawn", root, onSpawn)
  9. You should check out these wiki pages:
  10. Just do something like this, it should work just fine: function difference(a,b) -- This should put everything that is on table A and it isn't on table B into a new indexed table local ret = {} for k,v in pairs(a) do local insert = true for k2,v2 in pairs(b) do if v == v2 then insert = false break; end end if insert then table.insert(ret, v) end end return ret end If you want to go the way you code went then you should do something like this: function difference(a,b) local aa = {} for k,v in pairs(a) do aa[v]=true end for k,v in pairs(b) do aa[v]=nil end local ret = {} for k,v in pairs(aa) do table.insert(ret, v) end return ret end However I don't think you should use this (if it even works) because you just run too much stuff without it being really needed to be, and it's kinda pointless.
  11. Solo quería decir que eres buen scripter y están buenos los scripts que haz publicado en la comunidad