Jump to content

f8upd8

Members
  • Posts

    36
  • Joined

  • Last visited

Everything posted by f8upd8

  1. It is very specific situation, very-very based on my directDraw system. It will be hard to describe it and no one will encounter it (if they will not use my backups).
  2. *SOLVED* Problem was more untrivial than i thought.
  3. dxDrawImageOnElement was edited not just for lols. Reverting it to wiki state is worst thing that i can do. It is very funny, but i even adden check "if not element outputChatBox("FAILURE", 255, 0, 0)". And i never seen "FAILURE" in the chat box. To disable logs i adden check before isLineOfSightClear. This is only place when check works properly in this function.
  4. I using onClientPreRender to draw images above players like this: --Clientside function dxDrawImageOnElement(element,Image,distance,relX,relY,relZ,alpha,checkBuildings,checkVehicles,checkPeds,checkObjects,checkDummies,seeThroughStuff,ignoreSomeObjectsForCamera,ignoredElement) if type(element) == "userdata" then local x2, y2, z2 = getElementPosition(localPlayer) local x, y, z = getElementPosition(element) if not x then outputChatBox("Failed.", 255, 0, 0) else outputChatBox(relX..relY..relZ, 0, 255, 0) end local distance = distance or 20 local relX = relX or 1 local relY = relY or 1 local relZ = relZ or 1 local width = width or 1 local checkBuildings = checkBuildings or true local checkVehicles = checkVehicles or false local checkPeds = checkPeds or false local checkObjects = checkObjects or true local checkDummies = checkDummies or true local seeThroughStuff = seeThroughStuff or false local ignoreSomeObjectsForCamera = ignoreSomeObjectsForCamera or false local ignoredElement = ignoredElement or nil if (isLineOfSightClear(x, y, z, x2, y2, z2, checkBuildings, checkVehicles, checkPeds , checkObjects,checkDummies,seeThroughStuff,ignoreSomeObjectsForCamera,ignoredElement)) then local sx, sy = getScreenFromWorldPosition(x, y, z+relZ) if(sx) and (sy) then local distanceBetweenPoints = getDistanceBetweenPoints3D(x, y, z, x2, y2, z2) if(distanceBetweenPoints < distance) then dxDrawMaterialLine3D(x+relX, y+relY, z+1+relZ-(distanceBetweenPoints/distance), x+relX, y+relY, z+relZ, Image, width-(distanceBetweenPoints/distance), tocolor(R or 255, G or 255, B or 255, alpha or 255)) end end end end end addEventHandler("onClientPreRender", getRootElement(), function () dxDrawImageOnElement(element,image,distance,relX,relY,relZ,alpha,checkBuildings,checkVehicles,checkPeds,checkObjects,checkDummies,seeThroughStuff,ignoreSomeObjectsForCamera,ignoredElement) end) This working well! Images is apearing. But look at client logs: [2017-07-24 23:12:57] WARNING: ddessentials\client.lua:3: Bad argument @ 'getElementPosition' [Expected element at argument 1, got boolean] [DUP x215] [2017-07-24 23:12:57] WARNING: ddessentials\client.lua:16: Bad argument @ 'isLineOfSightClear' [Expected vector3 at argument 1, got boolean] [DUP x215] [2017-07-24 23:12:57] WARNING: ddessentials\client.lua:3: Bad argument @ 'getElementPosition' [Expected element at argument 1, got boolean] [2017-07-24 23:12:57] WARNING: ddessentials\client.lua:16: Bad argument @ 'isLineOfSightClear' [Expected vector3 at argument 1, got boolean] [2017-07-24 23:13:03] WARNING: ddessentials\client.lua:3: Bad argument @ 'getElementPosition' [Expected element at argument 1, got boolean] [DUP x215] [2017-07-24 23:13:03] WARNING: ddessentials\client.lua:16: Bad argument @ 'isLineOfSightClear' [Expected vector3 at argument 1, got boolean] [DUP x215] [2017-07-24 23:13:03] WARNING: ddessentials\client.lua:3: Bad argument @ 'getElementPosition' [Expected element at argument 1, got boolean] [2017-07-24 23:13:03] WARNING: ddessentials\client.lua:16: Bad argument @ 'isLineOfSightClear' [Expected vector3 at argument 1, got boolean] And i really hate this. This generating continuosly and i can't read client logs anymore. How can i avoid this crap?
  5. Если нужно что-то серьёзное, что будут видеть все, всегда и при любых условиях - пиши API для отрисовки, который будет её хранить. Лично я потратил на такой два дня, потому что долго не мог придумать способ хранения, который бы поддерживал динамическую изменяемость и возможность удаления.
  6. Ты полезную функцию dxDrawTextOnElement() добавил? Это не стандартная функция.
  7. You said "and I must restart de resource to see pickups back". So this happening unpredictable? Or i misunderstood? If it just moving to another interior, then... If script is really clear, there is definitely some bug and you should report
  8. Problem is serverside. If you see MTA GUI then you should see server scripts gui.
  9. LOL. I found error. "int" can't be used as variable.
  10. How did you come back? Via warp? There are a number of bugs that linked with warping. If it so, try another way. Setting your interior and dimension through standart admin panel causes some issues sometimes. Sounds strange, but it's true.
  11. Я уже всё исправил и даже добавил хендлеров, который позволят всегда и всем видеть эту надпись.
  12. Используй полезную функцию для отображения текста. А машину передай клиенту через евент. dxDrawTextOnElement() Вставляем полезную функцию (обязательно на клиентскую сторону) --ПОЛЕЗНАЯ ФУНКЦИЯ СО СТРАНИЦЫ-- function dxDrawTextOnElement(TheElement,text,height,distance,R,G,B,alpha,size,font,checkBuildings,checkVehicles,checkPeds,checkDummies,seeThroughStuff,ignoreSomeObjectsForCamera,ignoredElement) local x, y, z = getElementPosition(TheElement) local x2, y2, z2 = getElementPosition(localPlayer) local distance = distance or 20 local height = height or 1 local checkBuildings = checkBuildings or true local checkVehicles = checkVehicles or false local checkPeds = checkPeds or false local checkObjects = checkObjects or true local checkDummies = checkDummies or true local seeThroughStuff = seeThroughStuff or false local ignoreSomeObjectsForCamera = ignoreSomeObjectsForCamera or false local ignoredElement = ignoredElement or nil if (isLineOfSightClear(x, y, z, x2, y2, z2, checkBuildings, checkVehicles, checkPeds , checkObjects,checkDummies,seeThroughStuff,ignoreSomeObjectsForCamera,ignoredElement)) then local sx, sy = getScreenFromWorldPosition(x, y, z+height) if(sx) and (sy) then local distanceBetweenPoints = getDistanceBetweenPoints3D(x, y, z, x2, y2, z2) if(distanceBetweenPoints < distance) then dxDrawText(text, sx+2, sy+2, sx, sy, tocolor(R or 255, G or 255, B or 255, alpha or 255), (size or 1)-(distanceBetweenPoints / distance), font or "arial", "center", "center") end end end end Серверная часть: Cargobob=createVehicle(548,mas[3][1],mas[3][2],mas[3][3],0,0,90) addEventHandler("onPlayerJoin", getRootElement(), function () triggerClientEvent(source, "onVehicleTextDraw", Cargobob) end) addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), function () triggerClientEvent(getRootElement(), "onVehicleTextDraw", Cargobob) end) Клиентская часть: addEvent("onVehicleTextDraw") addEventHandler("onVehicleTextDraw", getRootElement(), function () local drawElement = source addEventHandler("onClientRender", getRootElement(), function () dxDrawTextOnElement(drawElement,"Your Text",1,20,0,0,255,255,1,"arial") end) end)
  13. charecterModelsToReplace = {--ARMY Skins- "army/16.txd", "army/16.dff", 16, "army/20.txd", "army/20.dff", 20, "army/23.txd", "army/23.dff", 23, "army/30.txd", "army/30.dff", 30, "army/46.txd", "army/46.dff", 46, "army/48.txd", "army/48.dff", 48, "army/60.txd", "army/60.dff", 60, "army/66.txd", "army/66.dff", 66, "army/67.txd", "army/67.dff", 67, "army/71.txd", "army/71.dff", 71, "army/73.txd", "army/73.dff", 73, "army/95.txd", "army/95.dff", 95, "army/97.txd", "army/97.dff", 97, "army/98.txd", "army/98.dff", 98, "army/144.txd", "army/144.dff", 144, "army/152.txd", "army/152.dff", 152, "army/250.txd", "army/250.dff", 250, --ANIME Skins-- "anime/yagami.txd", "anime/yagami.dff", 202, "anime/nierautomata.txd", "anime/nierautomata.dff", 9, "anime/PENIA.txd", "anime/PENIA.dff", 10, "anime/Yuko Hello Kitty.txd", "anime/Yuko Hello Kitty.dff", 11, "anime/Kimono.txd", "anime/Kimono.dff", 12, "anime/Girl with pink sharp things.txd", "anime/Girl with pink sharp things.dff", 13, "anime/Cayote.txd", "anime/Cayote.dff", 31, "anime/Miku.txd", "anime/Miku.dff", 38, "anime/Kurisu.txd", "anime/Kurisu.dff", 39, "anime/Miku2.txd", "anime/Miku2.dff", 40, "anime/PinkHair unknown braslette.txd", "anime/PinkHair unknown braslette.dff", 53, "anime/berret.txd", "anime/berret.dff", 54, "anime/Miku3.txd", "anime/Miku3.dff", 55, "anime/Ghost Shell.txd", "anime/Ghost Shell.dff", 56, "anime/Yellow Hair girl.txd", "anime/Yellow Hair girl.dff", 63, "anime/Beret 2.txd", "anime/Beret 2.dff", 64, "anime/Pacan.txd", "anime/Pacan.dff", 14, "anime/chibi with electrotail.txd", "anime/chibi with electrotail.dff", 75, "anime/hatsune-miku-vocal-star-remade.txd", "anime/hatsune-miku-vocal-star-remade.dff", 76, "anime/yowane-haku.txd", "anime/yowane-haku.dff", 77, "anime/moxi-purple.txd", "anime/moxi-purple.dff", 85, "anime/owari-no-seraph.txd", "anime/owari-no-seraph.dff", 87, "anime/hoodie-haku-yowane.txd", "anime/hoodie-haku-yowane.dff", 89, "anime/yuezheng-ling.txd", "anime/yuezheng-ling.dff", 90, "anime/mikusweetdevil.txd", "anime/mikusweetdevil.dff", 91, --ZOMBIE Skins- "misc/zombie1.txd", "misc/zombie1.dff", 181, --NPC-- "misc/sidorovich.txd", "misc/sidorovich.dff", 259} techModelsToReplace = {"vehicles/barracks.txd", "vehicles/barracks.dff", 433, "vehicles/swatvan.txd", "vehicles/swatvan.dff", 601, "vehicles/androm.txd", "vehicles/androm.dff", 592, "vehicles/raindanc.txd", "vehicles/raindanc.dff", 563, "vehicles/cargobob.txd", "vehicles/cargobob.dff", 548, "vehicles/hunter.txd", "vehicles/hunter.dff", 425, "vehicles/hydra.txd", "vehicles/hydra.dff", 520, "vehicles/patriot.txd", "vehicles/patriot.dff", 470, "vehicles/seasparrow.txd", "vehicles/seasparrow.dff", 447, "vehicles/maverick.txd", "vehicles/maverick.dff", 487, "vehicles/huntley.txd", "vehicles/huntley.dff", 579, "vehicles/enforcer.txd", "vehicles/enforcer.dff", 427, "vehicles/FBITruck.txd", "vehicles/FBITruck.dff", 528, "vehicles/rhino.txd", "vehicles/rhino.dff", 432} worldObjectsToReplace = {"world/tent.txd", "world/tent.dff", "world/tent.col", 11453, "world/Plane.txd", "world/Plane.dff", "world/Plane.col", 11611, "world/des_ghotfenc06.txd", "world/des_ghotfenc06.dff", "world/des_ghotfenc06.col", 16632, "world/a2_t72.txd", "world/a2_t72.dff", "world/a2_t72.col", 11455} addEvent("readyToLoad", true) addEventHandler("readyToLoad", getLocalPlayer(), function () local skinCount = 1 local techCount = 1 local objCount = 1 repeat skinTXD = engineLoadTXD (charecterModelsToReplace[skinCount]) engineImportTXD (skinTXD, charecterModelsToReplace[skinCount+2]) skinDFF = engineLoadDFF (charecterModelsToReplace[skinCount+1]) engineReplaceModel (skinDFF, charecterModelsToReplace[skinCount+2]) skinCount = skinCount + 3 until (skinCount >= #charecterModelsToReplace) repeat techTXD = engineLoadTXD (techModelsToReplace[techCount]) engineImportTXD (techTXD, techModelsToReplace[techCount+2]) techDFF = engineLoadDFF (techModelsToReplace[techCount+1]) engineReplaceModel (techDFF, techModelsToReplace[techCount+2]) techCount = techCount + 3 until (techCount >= #techModelsToReplace) repeat objTXD = engineLoadTXD (worldObjectsToReplace[objCount]) engineImportTXD (objTXD, worldObjectsToReplace[objCount+3]) objDFF = engineLoadDFF (worldObjectsToReplace[objCount+1]) engineReplaceModel (objDFF, worldObjectsToReplace[objCount+3]) objCOL = engineLoadCOL (worldObjectsToReplace[objCount+2]) engineReplaceCOL (objCOL, worldObjectsToReplace[objCount+3]) objCount = objCount + 4 until (objCount >= #worldObjectsToReplace) end) Looks very weird, but loads fast and good. I guess.. I could just use for if.. If I knew about for. My second script, heh. About the problem, check your script file coding. Once i encoded my script to UTF-8-BOM by accident. And that was.. A big perfomance problem. And check models. It is high chance that one of models has a bug.
  14. Oh thank you! Your solution of function deanonymization fits perfectly!
  15. Wow. I did not known that. Sorry for my dumbness. But repeat until spawnPlayer(source,x+1, y+1,z, 0, math.random(1,1) ) Is only thing that can cause server freeze due to error. Because of invalid argument passed. I said while true and that is wrong. I should say "until false" But even if i dumb, i had same problem and will be helpful. Try to create local variable that contains source element, i thing source don't getting through timer function. addEventHandler("onPlayerWasted",root,function() local thePlayer = source if isElement(thePlayer) then exports["rc_core"]:takeMoney(thePlayer,5000) skin = getElementModel(thePlayer) or 0 setTimer(respawn,3000, 1, thePlayer) setTimer(setElementModel,3000,1,thePlayer,skin) end end) I hope that will be just one helpful post i left here.
  16. Too lazy for that. I guess it s only way to do it. Players and Peds can be controlled only via ControlState functions. Try just spawn ped via createPed nerby vehicle, then add any trigger to function SetPedAnalogControlState(ped, "enter_exit", true) I guess ped will jack drop driver off the vehicle If you KNOW that i'm wrong and it is impossible, please tell why it is impossible. Why in some scripts zombies can attack me, but can't jack me off vehicle?
  17. Oh. Take it easy. It is hard to me to be gentlemen because of my basic english. I just wanted to give advice. I did not mean to be rude. I'm sorry.
  18. I need to create a system, that capable of draw text above elements heads and delete it. And there is my problem Let's assume that i did it via onClientRender.. So... And then i wanted to erase text. How can i remove event handler? I can't send my text arguments direct to onClientRender, so i need to use abstract function () inside onClientRender. And.. Is there way to remove handler? My server has a number of onClientRender handlers and won't delete incorrect handler. That looks like: ClientSide. addEvent("drawTextForElement", true) addEventHandler("drawTextForElement", getRootElement(), function () drawTextAbove(source, dText, dFont, dZize, dColor) end) function drawTextAbove(source, dText, dFont, dZize, dColor) local dText, dFont, dZize, dColor = dText, dFont, dZize, dColor local dElement = source addEventHandler("onClientRender", source, function () dxDrawTextOnElement(dElement ,"Kurisu",1,20,0,0,255,255,1,"arial") end) end ServerSide: triggerClientEvent(getRootElement(), "drawTextForElement", kurisu)
  19. GUI Functions is meant to be used clientside. You should read scripting guide properly. And it will be nice if you start nesting your code by TAB (NOT BACKSPACES)
  20. You did not gave to function setElementModel and respawn any arguments. Lua function usage syntax looks like: function (arg1, arg2). And your syntax: function, arg1, arg2 Bad Syntax. You should learn lua a bit before start scripting. repeat until spawnPlayer(source,x+1, y+1,z, 0, math.random(1,1) ) Why to wipe? When fucntion inits, player will respawn "while true", e.g. infinite times. This caused network trouble, i guess. My machine is slow and if i did like you, i will need to restart my computer. Sorry for my bad english.
  21. Можно ещё посоветовать влепить банальную проверку, нормально ли то, что игрок пытается соспавнить и какому ресурсу оно предналежит перед спавном. Но это не исправит сам баг.
  22. Лучше всё же обращаться к БД тогда, когда требуется получить какие-то данные. Всё же базы данных созданы именно так, чтобы запросы по минимуму расходовали ресурсы и с максимальной скоростью работали.
×
×
  • Create New...