-
Posts
6,089 -
Joined
-
Last visited
-
Days Won
216
Everything posted by IIYAMA
-
Isn't updating the shader value enough? Instead of creating a new shader and (re)applying it to all textures.
-
This warning appears when you try to add an event handler, which is already attached to that function. You can either use a variable: local drawingStatus = false if not drawingStatus then addEventHandler("onClientPreRender", getRootElement(), draw) drawingStatus = true end if drawingStatus then removeEventHandler("onClientPreRender", getRootElement(), draw) drawingStatus = false end Or you can use the following utility function isEventHandlerAdded, which you can copy out of the example: https://wiki.multitheftauto.com/wiki/GetEventHandlers
- 1 reply
-
- 1
-
-
I have added a useful function to the wiki, for positioning dx-effects:
https://wiki.multitheftauto.com/wiki/GetScreenStartPositionFromBox
Enjoy!
-
I have added a useful function to the wiki, for positioning: https://wiki.multitheftauto.com/wiki/GetScreenStartPositionFromBox
-
The setPedStat was not working, the stat id was not filled in. iprint("purifierHealth", purifierHealth) setTimer (setPedStat, 500, 1, source, 24, purifierHealth)
-
There was an: if else end And you changed it to an: if if end end While you probably need an : if -- element data else -- element data if -- validation end end Not sure if that fixes everything, it is still a puzzle.
-
You can also move the oldTx, oldTy, oldTz, px, py, pz validation to here. Or here, line 96 @Bean666
-
Basic validation: (works in most cases just fine) if isElement(ped) and oldTx and oldTy and oldTz and oldPx and oldPy and oldPz then Advanced validation: (recommended using this when the data comes from user input, export functions or database. But using it for here is also fine.) if isElement(ped) and type(oldTx) == "number" and type(oldTy) == "number" and type(oldTz) == "number" and type(oldPx) == "number" and type(oldPy) == "number" and type(oldPz) == "number" then
-
For example: local player = getElementData(source, "leader") local oldTx, oldTy, oldTz = getElementPosition(player) local oldPx, oldPy, oldPz = getElementPosition(source) setTimer(follow_enemy_check, 500, 1, source) setTimer(follow_move, 800, 1, source, oldPx, oldPy, oldPz, oldPx, oldPy, oldPz) To: local player = getElementData(source, "leader") if isElement(player) then local oldTx, oldTy, oldTz = getElementPosition(player) local oldPx, oldPy, oldPz = getElementPosition(source) setTimer(follow_move, 800, 1, source, oldPx, oldPy, oldPz, oldPx, oldPy, oldPz) end setTimer(follow_enemy_check, 500, 1, source)
-
The owner has complied with providing evidence that this gamemode is unique. @Patrick has validated that. No further accusations will be tolerated without proof. The first topic has been hidden. (This is a copy) @Jacuuuu Please move some of those pictures inside of your topic. And always do that for new [SELL] related topics. That way we can at least moderate if there are people trying to sell stolen resources. Note: if you disagree with our actions you should send us a message, instead of trying to evade our actions. That way this issue would have been resolved a long time ago.
-
You could reduce the amount of zombies. If you want to compare a local machine with a VPS, it is best to bring both of them a little bit closer to each other. That is if you want to know if it is the server that is responsible for the lag, or if it is your internet connection. https://wiki.multitheftauto.com/wiki/Command_fakelag Enable fakelag: <fakelag>1</fakelag> Program Files (x86)\MTA San Andreas 1.5\server\mods\deathmatch\mtaserver.conf Command: /fakelag <packet loss> <ping> <ping variance> Join a healthy server and adjust the values for the command that you are going to use. <packet loss> = % how much packet loss you have (information that is not delivered and has to be resend) Information can be found here: /shownetstat <ping> = should be filled in with the amount of ping you have. <ping variance> = how much your ping is jumping up from the base value. Example: /fakelag 1 100 50 1% packet loss 100 ping 50 ping variance: ping + ping variance 100 + 50 = 100 t/m 150 ping
-
The data rate is indeed an issue. I capped my own ped resource on 300ms. But the quantity also plays a role. It is bad practice to send the same information twice. If the client knows a ped is running, the server does not have to send that information again. If there are no peds around you, the data rate by this resource should be nearly 0. Are you sure that it sends data on the onClientRender rate?
-
There is only 1 thing you need to know about internal arguments. Those ones that are after the callBack function. If you mix internal arguments with arguments(from serverside), you have to make sure that the last internal argument is not a nil value. Because when all arguments are converted to parameters, both lists will be merged and the first list(internal arguments) will collapse on nil values at the end of the table. Problem: internal2 = nil callServer('isAccountRegistered', username, password, caseVariable, function(internal1, internal2, state) end, "internal1", internal2) Is OK: internal2 = false callServer('isAccountRegistered', username, password, caseVariable, function(internal1, internal2, state) end, "internal1", internal2) As you can see here: list1 = {1, 2, nil, 4, nil} -- internal arguments list2 = {6, 7, 8, 9, 10} for i=1, #list2 do list1[#list1 + 1] = list2 [i] end print(unpack(list1)) -- 1, 2, nil, 4, 6, 7, 8, 9, 10, -- The nil value at index 5 is missing.
-
thx! Sorry for my late reply, I didn't notice the notification. The syntax for that function: bool callServer (callFunctionName string [, argument1, argument2, ... ] [, callbackFunction function [, argument1 (internal), argument2 (internal), ...]] ) https://gitlab.com/IIYAMA12/mta-communication-enchantment/tree/master/documentation/syntax#syntax-1 Multiple values can be send over by just adding them between the functionName and the callBackFunction. functionName: 'isAccountRegistered' callBackFunction: function(state) end callServer('isAccountRegistered', username, function(state) end) -- 1 callServer('isAccountRegistered', username, password, function(state) end) -- 2 callServer('isAccountRegistered', username, password, caseVariable, function(state) end) -- 3 It goes through all arguments and detects if there is a function, then that one will be the callBack function. See here where that happens in the source code: https://gitlab.com/IIYAMA12/mta-communication-enchantment/-/blob/master/sync/sync_c.lua#L77 https://gitlab.com/IIYAMA12/mta-communication-enchantment/-/blob/master/sync/sync_shared.lua#L250 So you want to do that, what you already can do and doing it already? ?
-
You could attach the camera to the ped, see example in this link: https://wiki.multitheftauto.com/wiki/GetCamera The example explains how to attach the camera to a vehicle, without the need of updating the camera with onClient(Pre)Render.
-
Colshapes are more reliable. You could try these functions: https://wiki.multitheftauto.com/wiki/GetElementColShape < use on marker https://wiki.multitheftauto.com/wiki/GetColShapeSize If there is some abnormality in height --> https://wiki.multitheftauto.com/wiki/CreateColTube (https://forum.multitheftauto.com/topic/100069-tut-addeventhandler-on-a-group-of-elements-small-tutorial/)
-
Yes, @Tekken just gave you that one a few seconds ago.
-
You probably did it correctly, the only problem is that this event cannot be cancelled. Since the damage has already happened on clientside a while(few milliseconds) ago. This event represents a reflection of the past, not the moment the player got damaged. The now moment: onClientPlayerDamage
-
local loc_ if #locations > 1 then repeat loc_ = math.random(#locations) until loc_ ~= loc else loc_ = locations[1] end loc = loc_ To not repeat, you need to repeat ?.
-
It is not the zombie resource alone that causes the error. Another resource is making clientside peds, this combination will make it possible for the error to appear. If you do not have clientside created peds in your server, then you will not be able to get this error.
-
if getDistanceBetweenPoints3D ( x,y,z, zx,zy,zz ) < 50 and not isElementLocal (zomb) then I guess it is because the ped is created clientside. I haven't seen this error before to be honest.
-
Oh sorry, I meant this one: https://wiki.multitheftauto.com/wiki/Shader_examples#dxDrawCircle but you still need that image to make the borders smooth.
-
This one is less demanding: https://wiki.multitheftauto.com/wiki/DxDrawCircle Photoshop: Create a png image (256 × 256), with . Give black borders. Fill with a white colour if always filled, else use behind the image. If filled with a white colour, it can be re-coloured with: https://wiki.multitheftauto.com/wiki/DxDrawImage tocolor(255,255,255,255) Create texture with mipmaps enabled: https://wiki.multitheftauto.com/wiki/DxCreateTexture What does mipmaps do? https://flylib.com/books/en/1.541.1.66/1/ Try to give the image
-
Yes that could work in terms of ped management. But that does not solve the hard coded error, that will occur when the client has not added the <event> yet, while receiving <that event> from serverside. It can even lead to desync when serverside is not sure if the client has received it's message. Sure you can repeatedly send the same data, but that will be an unnecessary data transfers (in my opinion). You want to start the dialogue between clientside and serverside when you know that both sides are ready, so that your resource can be optimized for data reduction.