Jump to content

The_GTA

Helpers
  • Posts

    821
  • Joined

  • Last visited

  • Days Won

    85

Everything posted by The_GTA

  1. Good job. I have looked into the newest 1.6 features and I am impressed. I think the most impacting QoL improvement is for race servers that suffered from the FPS-bound tire-smoke effect. Now that the 2DFX particle spawning is time-based it should not be too bad. I am excited about the more-advanced engine functions and how that will be used by MTA scripters. Thank you for your continued effort to improve MTA!
  2. No problem, bro. This intellectual property theft is heavier than ever. In the past it was hindered by the intellect and perseverance of people. But now countless of machines that are capable to estimate and logically deduce using "examples" can be used for that purpose. The degeneration of society using such wild technology is inevitable if politics does not remove the money source. My idea is the following: - instead of being given the benefit of the doubt in court, CSG or higher language science software models (1) have to prove that they own the intellectual property rights to their output (goes in hand with the AI being a commercial product) - watch every company or entity involved in (1) by market and political checks, them having to apply to various programmes opening up their databases and activities - humanize internet technologies, partition the web, make an alternative "internet" Just some ideas. But the "as-if" principles that those crooks use could make any political safe-guard a joke. In the worst case the theft happens purely in energetical interactions not traceable by the human perception, hidden behind cryptograhically strong communication, output far-and-wide in stochastical spread.
  3. Dear MTA community, as an IT expert I have been closely following the recent trend in AI services a'la ChatGPT. Let me break to you that this matter has serious consequences to the IT world. Those bots seem to be performing intellectual property theft on a massive scale, devaluing the ideas of IT experts using their cheap solutions, not caring about the origins or comings of ideas they are trained with. Since even humans have a problem with estimating the worth of ideas and other people, you can see that IT experts will be worth jack **** in the future. To help aid this situation I recommend you to do the following: 1) delete your open source codebases or turn them private 2) think carefully which business ideas you share on the internet 3) do not use ChatGPT or similar AI bots to prevent your personality from being stolen Mind my words that those enemy AI experts are threatening the values of our society as we know it. Real people are about to lose their hard earned jobs, their value. You must join the resistance and fight. I wish you all a good future. Do not let these silicon valley people steal your uniqueness. Much love to you individuals. - Martin Turski, company owner of EirDev
  4. ChatGPT ist eine weltverändernde Form von künstlicher Intelligenz. In ihrer Art die Mehrdeutigkeit der Kommunikation zu erfassen und daraus zielgerichtet Antworten zu geben stellt eine Gefahr für unsere heutige Gesellschaft dar. Die grundfesten Ideale des Kapitalismus, der Wertschätzung werden beraubt in dem man seine eigene Existenz in diese Netzwerke opfert. Mit meinem Expertenwissen versuche ich euch zu erklären worum es in Wahrheit geht:
  5. I am happy to hear that! Have fun with this project. I agree. This workflow seems really complicated. Not much I can do about that though on the module's end. We know the steps of adjusting the server configuration and adding the binary. But I hope that people are willing to get into stuff that seems new to them!
  6. Yes, you can read files inside of any resource and adjust the meta.xml files according to rules. Be careful and do not add the same file twice. Also think about removing meta.xml entries whose files do not exist anymore.
  7. I would like to see a modloader that uses the scanDir API instead of the meta.xml. Also a personal webspace on the MTA server for user-submitted mods could be cool.
  8. Hello MTA developers, today I have added the Linux version of the FileSystem 2.0 release. I am sorry for the delay - caused by unnecessaringly technical and motivational factors - but this release is the most stable Linux version yet. It is made possible by directly linking to the deathmatch.so Linux module so that fileSystem.so does use the actual Lua implementations exported by MTA. I was unable to get a LuaRocks version ready because I do not understand how to integrate my custom Code::Blocks build system into it. If there is sufficient interest and straight-forward help I might deliver that too. Wouldn't want to disrespect the hard-effort by qaisjp and co. Only AMD 64bit is supported. Hit me up if you need any other platform. Download it here: https://green-candy.osdn.jp/external/releases/fileSystem_2_0_linux.zip Have fun! ?
  9. local function invMoveSlots(sinv, sslot, tinv, tslot) if not sslot or not tslot or not sinv or not tinv then return end local selectedSlot1 = sinv.items[sslot] local selectedSlot2 = tinv.items[tslot] sinv.items[sslot] = selectedSlot2 tinv.items[tslot] = selectedSlot1 end local isdragging = false; local draginv = false; local dragslot = false; local slotrender = false; function Inventory:drag(button,state,mouseX,mouseY) if button == 'left' then if state == 'down' then if (isdragging == false) then self.getSlotInfo = {self:getSlot(mouseX,mouseY)} firsSlot = self.getSlotInfo[4] if (firsSlot) then isdragging = true; draginv = self; dragslot = firsSlot; slotrender = self.fSlot; addEventHandler('onClientRender',root,self.fSlot) end end end if state == 'up' then if (isdragging) then self.getSlotInfo = {self:getSlot(mouseX,mouseY)} print(self.getSlotInfo[4]) if (self.getSlotInfo[4]) then invMoveSlots(draginv, dragslot, self, self.getSlotInfo[4]) end removeEventHandler('onClientRender',root,slotrender) isdragging = false; draginv = false; dragslot = false; slotrender = false; end end end end Your system is fundamentally flawed because it does not contain the global inventory list but you are ignoring my messaging so I won't remind you any further.
  10. Definition of the bind function? Actual error message?
  11. Yea so what? What is your fSlot anyway? Are you being serious?
  12. local function invMoveSlots(sinv, sslot, tinv, tslot) if not sslot or not tslot or not sinv or not tinv then return end local selectedSlot1 = sinv.items[sslot] local selectedSlot2 = tinv.items[tslot] sinv.items[sslot] = selectedSlot2 tinv.items[tslot] = selectedSlot1 end local isdragging = false; local draginv = false; local dragslot = false; local slotrender = false; function Inventory:drag(button,state,mouseX,mouseY) if button == 'left' then if state == 'down' then self.getSlotInfo = {self:getSlot(mouseX,mouseY)} firsSlot = self.getSlotInfo[4] if (firsSlot) then isdragging = true; draginv = self; dragslot = firsSlot; slotrender = self.fSlot; addEventHandler('onClientRender',root,self.fSlot) end end if state == 'up' then if (isdragging) then self.getSlotInfo = {self:getSlot(mouseX,mouseY)} print(self.getSlotInfo[4]) if (self.getSlotInfo[4]) then invMoveSlots(draginv, dragslot, self, self.getSlotInfo[4]) end removeEventHandler('onClientRender',root,slotrender) isdragging = false; draginv = false; dragslot = false; slotrender = false; end end end end This is just an example and does not contain the code for cross inventory dragging. You have to implement the list of inventories to do it.
  13. Oh, I remember. How about moveSlots?
  14. I don't see any fundamental design problems in your code. But you seem to have trouble with taking the right parameter to the right place. What does the getSlot method do and how is it defined?
  15. What should work? Can you describe it?
  16. I think that with "clicking" you are not referring to the repeat motion of clicking the mouse button BUT the motion of leaving your finger on the mouse button clicked? You can query this information using the getKeyState function by passing the "mouse1" string to it for the left mouse button, "mouse2" for the right mouse button.
  17. What do you mean? If you execute the on click handler then a click has happened. Please rephrase your question or show details.
  18. Glad to hear that you got it working! You're welcome. Come back if you have any further questions. ?
  19. Put all inventories into a list, iterate over them in the mouse click handler and check which one has a defined rectangle item slot at the current mouse position. Store the successful inventory in a variable and retrieve it's type field to check which one it is.
  20. local menu_path = { MENU } local function visit_menu(m) table.insert(menu_path, m) end local function get_current_menu() if (#menu_path == 0) then return false end return menu_path[#menu_path] end local function unvisit_current_menu() table.remove(menu_path) end Look at lua-users wiki: Table Library Tutorial
  21. function Inventory:getSlot (x,y) for i = 1, #self.slots do -- table local t = i - 1 local xOffset = self.startX + (t*(self.iconSize + self.padding)) local yOffset = self.startY + (math.floor(t/6)*(self.iconSize + self.padding)) xOffset = xOffset - math.floor(t/6)*(6*(self.iconSize + self.padding)) if isInBox(x,y,xOffset,xOffset + self.iconSize,yOffset,yOffset + self.iconSize) then return i end end return false -- good idea end What is the definition of the isInBox function?
  22. Calculate the rectangles of each slot in the mouse click handler and associate the rectangle with the slot data structures.
  23. Hello Dzsozi (h03), your script appears to be missing the path of menus that you are visiting. The path of menus is defined as a list of menu displays d1...dn where d1 is the initially displayed menu, di is the menu that was selected in menu d(i-1). Then switching back to the previous menu is defined as removing the top-most menu entry dn and setting the menu entry d(n-1) as the current menu display. With that idea in your head, I hope that you can figure out it's implementation. Feel free to ask.
  24. Here: if (result) and (result[1]) then setElementData(source,"id",result[1].id) --I fixed this part setElementModel(source, result[1].skin ) --I fixed this part end
  25. You misunderstand how the SQL language works. To get all rows and columns of accounts SQL table, you execute... SELECT * FROM accounts But if you want just id and skin, you execute... SELECT id, skin FROM accounts Thus I recommend you to change the database query to... local skinData = dbQuery(connection,"SELECT skin,id FROM accounts LIMIT 1")
×
×
  • Create New...