Jump to content

The_GTA

Helpers
  • Posts

    822
  • Joined

  • Last visited

  • Days Won

    86

Everything posted by The_GTA

  1. I did agree with said point at first (yesterday), but not anymore. Read the following on why... I think that by buying a new copy for $60, you are taking the possibility of deleting your Social Club account into account, right? There is one interesting point on the official Rockstar Games support article: By putting this condition for account deletion I am pretty sure that they are in some way combatting people who are bad guys but want to sound clean due to change of account details. But I am not convinced it is perfect. There does not appear to be a way to give-away already activated games, tho the issue of the physical copy is relevant. Also if the game will be sold on Steam, then there definitely is a way to change accounts without our oversight*. Thus in my reply I was NOT talking about cheater protection but SOLELY about game authentication protection. This in itself is a top priority issue. MTA must never get rid of the in-house protections that it already established! They are doing an exemplary work in the entire gaming industry. (*) Upon further digging into this topic I have found this Steam community thread about people denying the feasibility of Steam account game switching: Can i transfer a game into another account? :: Help and Tips (steamcommunity.com) It looks like the process is in question but there is potential room for exceptions. This point is not so important because the issue of the physical copy does remain.
  2. I think that the Rockstar Games Launcher is going to be used for selling and authentication of the new GTA Trilogy. Honestly, this is a good idea! This way Rockstar Games is keeping a tight connection with it's player base. Not only can we expect them to keep the game up-to-date but they will know in-house how popular the new games are going to be. Let's talk about the possibility of MTA on the new engine. If everything goes right, that is the game executable and game files are modding friendly, then we can come clean by supporting only those game executables that are authenticated by their launcher, by strong hash verification. It gives us the opportunity to get a respectable way into Rockstar Vision, that is their public eye for the GTA community including the mods. I pray that the online DRM will be enough: please consider not obfuscating the game executable, Rockstar Games! I strongly believe that MTA does want to get things right this time, better than ever before. We as a community have to set the example, if we so choose to embark onto this new journey. ? We want to keep Rockstar Games a live and well company so they can continue making great GTA games into the very future! There is no point in discussing the abandonware argument.
  3. Você pode usar a função getElementModel para recuperar a pele atual de um jogador, também chamada de id modelo. Então você pode fazer... ... end local model = getElementModel(source) setTimer(spawnPlayer, 3000, 1, source, spawnX, spawnY, spawnZ, 0, model) ... Isso vai gerar o jogador com o mesmo modelo que ele tinha no momento da morte.
  4. You're welcome! I wish you a good experience when trying to implement it. By doing projects such as resedit I have a lot of experience when it comes to designing custom UI elements. Don't shy away to consult me again if the implementation is troubling you. ... Regarding the private message you sent me, ... How about you start with drawing code for the scrollbar? You need to draw a container for the rectangle, then inside of it a (clickable) rectangle. Maybe you add some arrows at the beginning and end. I suggest you this because then it may be easier to understand by visuals. The description I gave you in the thread is complete so you may have an issue understanding it.
  5. Hello ArrogantCoder, in order to move the scroll bar with the mouse you have to implement attachment. A scrollbar that is attached to the mouse cursor is moving in the same direction as the cursor, limited by the scrollbar's own bounds. The math behind it is pretty simple. You remember the (x,y) position of the cursor and of the scrollbar (in pixels) on click. We define the pixel position of the scrollbar as the top-most (vertical) or left-most (horizontal) pixel of it. Then for each mouse movement you calculate the new position: new scrollbar pixel-pos = old-scrollbar-pixel-pos-at-click + ( current-cursor-pos - old-cursor-pos-at-click ) You only have to calculate one dimension: y dimension of vertical scrollbar, x dimension of horizontal scrollbar (scrollbar-pixel-dim) Then you need to transform the new pixel position to scrollbar-percentage. scrollbar-perc = min( 1, max( 0, scrollbar-pixel-dim / ( scrollbar-area-size-dim - scrollbar-size-dim ) ) ) where scrollbar-area-size-dim is the width of the horizontal scrollbar containment area, scrollbar-size-dim is the width of the scrollbar control that you can click on, scrollbar-area-size-dim >= scrollbar-size-dim (analogous definition for vertical scrollbar). Feel free to ask if you have any further questions. ? Other relevant information: https://forum.multitheftauto.com/topic/132337-how-to-create-custom-guidashboard/?do=findComment&comment=1000972
  6. I just find it detrimental that, instead of helping genuine users, the scripting support requests are abused by wanna-be copycats. Not only are they unable to script, they are illegitimately attracted by $$$ and success. In terms of diginity and respect, the copycats cannot surpass the good-faith newbie. I often find myself in doubt if this person is really just struggling or he is running a set-up. But I won't lose hope.
  7. You are alleging him to make unauthorized use of a gamemode resource? Maybe he does, maybe not. I am not affiliated with this dude in any way and don't want to be involved in any thievery. I have to say that multiple people have come forward with support requests about similar code. I would say that your leak hint is not unfounded. But leave me out of this mess.
  8. You're welcome! I am glad that your issue has resolved itself. ? Come back if you have any further questions.
  9. Thank you. I read it completely and unfortunately there is no error inside of it. This looks very weird to me because I have not dealt with this SQL situation before. So please follow my next guidance for error detection. Could you add the following debug line after your SQL query to find out what contents are being put-out? function loginAccount(login, password) local performLogin = exports.TR_mysql:query("SELECT UID, password, username, tutorial FROM `accounts` WHERE `login` = ? LIMIT 1", login) if performLogin and performLogin[1] then outputDebugString("UID: " .. tostring(performLogin[1].UID) .. ", has_pw: " .. tostring(not (performLogin[1].password == nil)) .. ", username: " .. tostring(performLogin[1].username) .. ", tutorial: " .. tostring(performLogin[1].tutorial)); ... Do you get any output into your debug console? And if yes, does it tell you meaningful things?
  10. A different error scenario could be a faulty TR_mysql resource. I don't know how the resource works because it does not seem to be available in public. Are you able to share the code of the query function?
  11. Hello Pantry, I am not sure what happens if there are no UID, password, username or tutorial columns inside of your "accounts" table. Could you please check using a tool like Navicat Lite if there really are such columns? You could, instead of an external tool, use a "SELECT * FROM accounts" query and list the column names using table.pairs onto the game server, like this: local results = exports.TR_mysql:query("SELECT * FROM accounts"); if (results) then for colname,value in pairs(results[1]) do print("COLUMN: " .. colname); end end Look into your server log for the column names.
  12. Hello saca, do you know about the dxDrawCircle function? You can use the startAngle and stopAngle parameters to specify the intervals of the pie-chart colors. For example... addEventHandler("onClientRender", root, function() dxDrawCircle(100, 100, 100, 100, 0, 90, tocolor(255, 255, 255, 255)); dxDrawCircle(100, 100, 100, 100, 90, 180, tocolor(255, 0, 0, 255)); dxDrawCircle(100, 100, 100, 100, 180, 270, tocolor(0, 255, 0, 255)); dxDrawCircle(100, 100, 100, 100, 270, 360, tocolor(0, 0, 255, 255)); end ); This method may not create the best-approximated circle due to triangle-based approximation. You can use shaders and custom math using sin/cos to create a smoother circle. Basically, you use the euler distance equation to determine if the point is inside the circle to draw it, and then you use smart quadrant-based inversion of the sinus function to determine the angle of the pixel. Then you can simply look-up the color from shader values to draw for the circle angle intervals. Good luck!
  13. Hello Potato_Tomato42, 1) you seem to have trouble understanding the Lua syntax. Here are some (but not all) faulty lines I am referring to: GUI.i = dgsCreate3DInterface (-2631.4, 609, 13.45, 1, 0.5, 200, 100, tocolor(255,255,255,255), 0, 1, 0) ... label.i = dgsCreateLabel (0, 0, 200, 15, getPlayerName (player), false, GUI.i) ... image.i = dgsCreateImage (0, 20, 200, 20, "assets/images/wantedLevel/"..getPlayerWantedLevel (player)..".png", false, GUI.i) I think you want to save UI element handles for each player on your server and store them inside the table. But did you know that the expression "obj.key" is looking-up into "obj" by specifier constant string "i" and not the value of the i variable? I think you want to change the code to... GUI[i] = dgsCreate3DInterface (-2631.4, 609, 13.45, 1, 0.5, 200, 100, tocolor(255,255,255,255), 0, 1, 0) ... and all faulty lines based on the same syntax adjustment. The expression obj[key] does lookup into obj by key variable key. 2) also you are not handling the case when somebody new is joining into your server. This person does also require a nametag but you are just assigning nametags to the players that are joined at the point of resource start, ignoring the case when new players arrive. Please use the onClientPlayerJoin event to assign a new nametag. Hope this helps! ?
  14. Para usar o ACL, você tem que cadastrar os usuários no sistema interno de conta do servidor MTA. Tem certeza de que não quer criar seu próprio sistema de direitos em vez de confiar no MTA's? A fim de facilitar a ACL para permissões lógicas personalizadas de jogo recomendo que você crie grupos ACL personalizados com nomes fortes, como a descrição do trabalho "Mecânico". Em seguida, você também precisa de um grupo ACL "DefaultJob" que nega todos os direitos por padrão. Para cada um desses grupos, você deve criar um grupo de direitos ACL usando a função aclCreate com o mesmo nome. Então você pode adicionar pessoas a grupos da ACL, assim... function AceitarEmprego01 (source) exports.Scripts_OnMarkerMsgs_:delete(source) unbindKey ( source, LetraParaMarkers, "down", AceitarEmprego01 ) if getElementData ( source, "AirNew>Encaminhamento" ) == "Mecanico" then local playerAccount = getPlayerAccount(source) if not (isGuestAccount(playerAccount)) then local mec_group = aclGetGroup("Mecanico") local accname = getAccountName(playerAccount) aclGroupAddObject(mec_group, "object." .. accname) --aclSave() end setElementData ( source, "AirNew>Encaminhamento", false ) setElementData ( source, "Emprego", "Mecanico" ) exports.Scripts_Dxmessages:outputDx(source, "Você Agora Trabalha de Mecânico, Para Mais Informações Digite ( /Profissao )", "success") else exports.Scripts_Dxmessages:outputDx(source, "Você Precisa Estar Encaminhado da Agencia de Empregos para Trabalhar neste Local!", "error") end end Em seguida, você pode usar a função hasObjectPermissionTo usando o elemento jogador para verificar se ele pode executar as coisas que ele deve fazer. Isso te ajuda? Se sim, então eu posso ajudá-lo no segundo ponto também.
  15. Este é um texto traduzido automaticamente. Recomendo que você use a função engineRequestModel para criar um novo modelo de identificação (veículo, objeto, ped). Em seguida, você pode usar o engineReplaceModel para carregar novos dados de triângulo e engineImportTXD para carregar novos dados de textura nele.
  16. Hello BogdanRTB, I would like to comment on some things I noticed based on your script. Did you mean to use guiSetProperty in your script? Take a look at the following line: guiSetProperty(closeButton, "NormalTextColour", "FFAAAAAA") There is of course the dgsSetProperty function and the DGS automatic function-call translation layer. You should change the function call to make it proper. I am wondering if passing size-dimensions (width, height) to dgsCreateWindow makes the content-area OR the entire window the provided size. And what start position do child elements take inside the DGS window element? Based on your finding I think that the (0,0) position for DGS window child elements is the top-left corner just-below the DGS window title bar. Maybe you have to adjust your layout code to be conformant of this finding!
  17. Read up on the MTA event system and related functions. You seem to lack crucial understanding of it. Contact the resource authors for details about the named script you mentioned. I am not supporting this topic any further. I invite somebody else to address the inquiries from the user.
  18. you are mixing up clientside and serverside (it looks like it because of the "s_" tag of your Lua file) I don't even know what content that file has Are you sure you know what you are doing? I am trying to help you incrementally here. You should try performing smaller steps and ask before you do something.
  19. meta.xml <export function="frog" type="client" /> <script src="client.lua" type="client" /> client.lua (frogmaker resource) function frog(msg) outputChatBox(msg) end client.lua (froguser resource) addEventHandler("onClientResourceStart", resourceRoot, function() exports.frogmaker:frog("test"); end ); frogmaker has to be running for froguser to work. Replace outputChatBox with your own custom chat function (in your script you have the addMessageInChatBox function so use it instead).
  20. What do you mean "it failed"? It has never failed for me. Please elaborate what you have tried, based on my recommendations, and we can proceed into something else if necessary.
  21. Did you know that zippyshare.com blocks connections from Germany? The website shows 403 Forbidden to me. I was able to download your script over a Tor node. About your question, you can use the onPlayerChat event in combination with the cancelEvent function to block the regular chat messages inside of MTA. Then you can use outputChatBox to instead put your own messages, effectively replacing the regular ones. Give it a try! Inside of your uploaded script I see that you are trying to implement a custom DX chatbox. Please note that trying this is not recommended because some MTA builtin MTA commands will be unavailable due to security issues. If you do not mind this fact then you should try hiding the regular MTA chat using the showChat function. Then you can use the onPlayerChat event to retrieve the messages that would be displayed in the regular MTA chat and instead pipe them to your own custom DX chatbox. Good luck! Helpful leads: [Help] Players main chat color differentiation - Scripting - Multi Theft Auto: Forums (mtasa.com) call - Multi Theft Auto: Wiki - for MTA resource exports
  22. You're welcome! Come back to our forums if you have any further questions. I will be there to help you.
  23. Sorry, I made a spelling mistake because I am not a native Polish speaker. Look at the line... if (TrybInterackcji) then ... and change it to... if (TrybInterakcji) then Good luck!
  24. bindKey("F2", "down", function() TrybInterakcji = true addEventHandler("onClientRender", root, gui) showCursor(true) end end end is wrong. It has to be... bindKey("F2", "down", function() TrybInterakcji = not TrybInterakcji if (TrybInterakcji) then addEventHandler("onClientRender", root, gui) else removeEventHandler("onClientRender", root, gui) end showCursor(TrybInterakcji) end );
  25. I think you meant to say "pressing" the key. Take a look at the dxDrawRectangle family of functions. Inside of an onClientRender event handler you can draw a black-color entire screen rectangle by fetching the current screen dimensions using guiGetScreenSize. By using bindKey in combination with the "down" key state you can register a press-down handler for the "F2" key. Inside of the press down handler you set the condition to true that enables the dxDrawRectangle call.
×
×
  • Create New...