Jump to content

Sergey_Walter

Members
  • Posts

    96
  • Joined

  • Last visited

Everything posted by Sergey_Walter

  1. Other players also need to install awesomium they worked browser?
  2. Про функцию clamp спасибо, я в ней разобрался, и все получилось еще проще)
  3. ну вот кое что получилось, полоска крутится на 360 градусов, теперь нужно иконку заставить бегать по полоске в прямоугольнике. Использовал следующий код: local s = {guiGetScreenSize()} local rot = getPedCameraRotation( localPlayer ) left = (s[1] - 320) / 2 top = (s[2] - 220) / 2 dxDrawImage(left, top, 320, 220, "hud.png") movingx = s[1] + math.sin(math.rad(rot)) * 370 movingy = s[2] + math.cos(math.rad(rot)) * 370 dxDrawLine(s[1]/2, s[2]/2, movingx/2, movingy/2, tocolor(255, 0, 0, 255), 2) dxDrawImageSection(movingx/2-16,movingy/2-16, 32, 32, 0, 0, 32, 32,icons[4], 0, -90, 0, tocolor(255, 255, 255, 255),true) http://rghost.ru/53827605 Эх нашёлся бы человек который неплохо знает эти функции) http://www.lua.ru/doc/5.6.html
  4. Слушай, а у тебя фантазия работает, спасибо за идею! Тока мне кажется что это нелегко реализовать, я как понял нужно соединить две точки, чтоб зеленая при повороте камеры ходила по окружности от центра, а красная держалась за край прямоугольника и бегала по полоске. Жаль в школе не дружил с геометрией и завалил колледж по программированию) Давай примерим, круг будет 360° с помощью getPedCameraRotation заставим её бегать по окружности, какой то у меня был код связан с полоской который крутился, а вот он: local s = {guiGetScreenSize()} local rot = getPedCameraRotation( localPlayer ) movingx = s[1] + math.sin(math.rad(-(rot)-500)) * 500 movingy = s[2] + math.cos(math.rad(-(rot)-500)) * 500 dxDrawLine(s[1]/2, s[2]/2, movingx/2, movingy/2, tocolor(255, 0, 0, 255), 2) кароч, начну эксперименты)
  5. Всем привет, помогите доработать прямоугольный радар.. нужно чтоб значок севера двигался по прямоугольнику при повороте камеры, в принципе и не это главное, хочется чтоб например иконки стримились и оставались на краю радара как и в оригинальном радаре. В CLEO это уже реализовали http://gtaforums.com/topic/569955-gta-sa-rectangular-hud, к сожалению я немогу декомпилировать radarrect.asi и посмотреть алгоритм работы кода, нашёл тока наработки http://pastebin.com/UvaU1wBv. Полазив по форуму заметил что этим уже интересовались. https://forum.multitheftauto.com/viewtopic.php?f=91&t=73583&hilit=radar+blip https://forum.multitheftauto.com/viewtopic.php?f=91&t=71784 Думаю там нужно высчитывать квадратный корень, но я с функциями вроде "sqrt"ами,atan2"ами,radian"ами,math.max"ами и math.min"ами,vector"ами не дружу( Вот код: local s = {guiGetScreenSize()} local icons = {} for k = 1,65 do icons[k] = dxCreateTexture("blips/"..k..".png") end local blips = {} addEventHandler( "onClientResourceStart", getRootElement( ),function (res) if res ~= getThisResource() then return end radarTexture = dxCreateTexture("map.png") currentZoomState = 1 local width, height = 1200,1200 radar = dxCreateRenderTarget( s[1]*width*3/s[1], s[2]*height*3/s[2] ) mapRadar = dxCreateRenderTarget( s[1]*width*3/s[1], s[2]*height*3/s[2],true ) radararea = dxCreateRenderTarget( s[1]*width*3/s[1], s[2]*height*3/s[2],true ) pathmap = dxCreateRenderTarget( s[1]*width*3/s[1], s[2]*height*3/s[2],true ) local MimgW,MimgH = dxGetMaterialSize(mapRadar) setTimer(function () blips = {} for i, v in ipairs( getElementsByType('blip') ) do local icon = getBlipIcon(v) if icon > 3 then local px,py = getElementPosition(v) local blip_x = (3000+px)/6000*MimgW local blip_y = (3000-py)/6000*MimgH local rot = getPedCameraRotation( localPlayer ) table.insert(blips,{x = blip_x, y = blip_y,icon = icon}) end end end,1000,0) addEventHandler ("onClientHUDRender",root, function () local rot = getPedCameraRotation( localPlayer ) if getElementData(getLocalPlayer(), "loggedin") == 1 then dxSetRenderTarget( mapRadar,true ) dxDrawImage (0,0,MimgW,MimgH, radarTexture) for i, v in ipairs( blips ) do dxDrawImage(v.x-20/2, v.y-20/2, 20 + currentZoomState * 22, 20 + currentZoomState * 22,icons[v.icon],rot) end --[[for i, v in ipairs(getElementsByType('player') ) do if v ~= localPlayer then local r,g,b = 20,200,20 or getPlayerNametagColor(v) local px,py = getElementPosition(v) local p_x = (3000+px)/6000*MimgW local p_y = (3000-py)/6000*MimgH local prot = getPedRotation( v ) local p_blipsize = 20-currentZoomState dxDrawImage (p_x-p_blipsize/2,p_y-p_blipsize/2,p_blipsize,p_blipsize, icons[3],-prot,0,0,tocolor(r,g,b)) end end]] dxSetRenderTarget( ) dxSetRenderTarget( radararea,true ) for i, v in ipairs( getElementsByType('radararea') ) do local r,g,b,a = getRadarAreaColor(v) local w,h = getRadarAreaSize(v) x,y = getElementPosition(v) x = x / (6000 / MimgW) + MimgW/2 y = y / (-6000/ MimgH) + MimgH/2 dxDrawRectangle(x, (y-h) + (h/2), (w/1.66), (h/1.66), tocolor(r,g,b,a)) end dxSetRenderTarget( ) dxSetRenderTarget( radar,true ) local x,y,z = getElementPosition(localPlayer) local mapx = x / (6000/MimgW) + MimgW/2 - width*currentZoomState/2 local mapy = y / (-6000/MimgH) + MimgH/2 - height*currentZoomState/2 dxDrawImageSection (0,0,width,height,mapx,mapy,width*currentZoomState,height*currentZoomState,mapRadar,-rot) dxDrawImageSection (0,0,width,height,mapx,mapy,width*currentZoomState,height*currentZoomState,radararea,-rot) dxDrawImageSection (0,0,width,height,mapx,mapy,width*currentZoomState,height*currentZoomState,pathmap,-rot) local px,py = getElementPosition(localPlayer) local prot = getPedRotation( localPlayer ) local pblipsize = 32 - currentZoomState dxDrawImage (width/2-pblipsize/2,height/2-pblipsize/2,pblipsize,pblipsize, icons[3],-rot-prot) dxSetRenderTarget() dxDrawImageSection(s[1]/22.6, s[2]/1.426, 306, 206, 455,505, 290, 190,radar, 0, -90, 0, tocolor(255, 255, 255, 255),true) dxDrawImage(s[1]/24.7, s[2]/1.44, 320, 220, "hud.png") --if rot >= 0 and rot <= 120 then --dxDrawImageSection(s[1]/3.45-(rot*2.95),s[2]/1.46, 32, 32, 0, 0, 32, 32,icons[4], 0, -90, 0, tocolor(255, 255, 255, 255),true) --elseif rot >= 120 and rot <= 180 then --dxDrawImageSection(64,126+rot*4.82*1.06, 32, 32, 0, 0, 32, 32,icons[4], 0, -90, 0, tocolor(255, 255, 255, 255),true) --elseif rot >= 180 and rot <= 300 then --dxDrawImageSection(rot*2.422,680, 32, 32, 0, 0, 32, 32,icons[4], 0, -90, 0, tocolor(255, 255, 255, 255),true) --elseif rot >= 300 and rot <= 360 then --dxDrawImageSection(728,1540-rot*2.92, 32, 32, 0, 0, 32, 32,icons[4], 0, -90, 0, tocolor(255, 255, 255, 255),true) --end vehicle = getPedOccupiedVehicle(getLocalPlayer()) if vehicle and getVehicleSpeed() > 20 and getVehicleSpeed() < 120 then currentZoomState = 0.8 + getVehicleSpeed() / 100 end end end) end) function getVehicleSpeed() local vx, vy, vz = getElementVelocity(vehicle) return math.sqrt(vx^2 + vy^2 + vz^2) * 161 end Пробовал самый примитивный код, но иконка севера на других разрешениях экрана бегала уже в других местах экрана) if rot >= 0 and rot <= 120 then dxDrawImageSection(s[1]/3.45-(rot*2.95),s[2]/1.46, 32, 32, 0, 0, 32, 32,icons[4], 0, -90, 0, tocolor(255, 255, 255, 255),true) elseif rot >= 120 and rot <= 180 then dxDrawImageSection(64,126+rot*4.82*1.06, 32, 32, 0, 0, 32, 32,icons[4], 0, -90, 0, tocolor(255, 255, 255, 255),true) elseif rot >= 180 and rot <= 300 then dxDrawImageSection(rot*2.422,680, 32, 32, 0, 0, 32, 32,icons[4], 0, -90, 0, tocolor(255, 255, 255, 255),true) elseif rot >= 300 and rot <= 360 then dxDrawImageSection(728,1540-rot*2.92, 32, 32, 0, 0, 32, 32,icons[4], 0, -90, 0, tocolor(255, 255, 255, 255),true) end Кому интересно и хочет помочь, вот ссылка на скрипт с файлами http://rghost.ru/53816059 Код конечно не мой, я его просто дорабатываю для себя.
  6. Ребят, помогите откалибровать скрипт чтоб картинка нормально масштабировалась и двигалась в увеличенном виде за мышкой влево-вправо, пол недели парюсь. Пока что только сделал основу. Пример: http://ruseller.com/adds/adds2572/example/index.html "Внутренняя линза" http://www.starplugins.com/cloudzoom/examples "Inner Zoom" local sx, sy = guiGetScreenSize() showCursor(true) setCursorPosition(501, 501) local offset = 0 function scrollDown() if offset >= 40 then offset = offset - 40 end end function scrollUp() if offset <= 1640 then offset = offset + 40 end end bindKey("mouse_wheel_down", "down", scrollDown) bindKey("mouse_wheel_up", "down", scrollUp) addEventHandler("onClientRender", root, function() if isCursorShowing() then cx, cy = getCursorPosition() cx = cx * sx cy = cy * sy end if cx > 500 and cx < 500 + 300 and cy > 500 and cy < 500 + 300 then cxx = cx * (sx / sx) + (offset/2) cyy = cy * (sy / sy) + (offset/4) end dxDrawImageSection(500, 500, 300, 300, cxx, cyy, sx - offset, sy - (offset/2), "test.png") end) Ссылка на скрипт http://rghost.ru/51480663
  7. точно, забыл) тфэнкью
  8. как цифру 99.9 превратить в 99, со string.gsub не дружу
  9. Вот такими вещями в другом мультиплеере и жертвуют своей оперативной памятью (утечка памяти на стороне клиента, исправлять не хотят) Ты заставил меня задуматься
  10. Да это я всё понимаю, дело в том что заменять нужно объектов 50 =( Хотел что-то типо этого
  11. local texture = dxCreateTexture("Мне нужно чтоб текстура бралась из уже имеющихся текстур в GTA у меня нет этой картинки в png или в джпг!") local object = createObject(6959,1502.4415300,-1762.2647700,12.5713000,0.0000000,0.0000000,0.0000000) -- local shader = dxCreateShader('shader/texreplace.fx') dxSetShaderValue(shader,"Tex0",texture) engineApplyShaderToWorldTexture(shader,"greyground256128",object)
  12. Есть ли в мта подобная функция замены текстуры объекта как в сампе? SetObjectMaterial(meriawall,0,15058,"svvgmid","ah_wpaper5",0); Или только так? dxCreateTexture engineApplyShaderToWorldTexture Просто подскажите как заменить текстуру на объекте уже существующей текстурой из гта..
  13. Спасибо большое
  14. Помогите портировать\реализовать команду из сампа в мта, не получается( Когда в 4 дверной машине занято например 2 пассажирское место то игрока усаживало за 3 и т.д место. if(strcmp(cmd,"/drag",true)==0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid,COLOR_WHITE,"{ff0500}• {ffffff}ИСПОЛЬЗОВАНИЕ: /drag [playerid]"); return true; } if(IsACop(playerid)) { giveplayerid = ReturnUser(tmp); new ta4a = 0; new res; new next = 0; if(PlayerDrag[giveplayerid] == true) { RemovePlayerFromVehicle(giveplayerid); TogglePlayerControllable(giveplayerid, 1); SendClientMessage(playerid,COLOR_WHITE,"{ff0500}• {ffffff}Вы высадили преступника"); format(string, sizeof(string), "* %s вытолкал из автомобиля %s", PlayerName[playerid] ,PlayerName[giveplayerid]); ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); PlayerDrag[giveplayerid] = false; return true; } if(IsPlayerInAnyVehicle(playerid) || IsPlayerInAnyVehicle(giveplayerid)) { SendClientMessage(playerid,COLOR_WHITE,"Вы или тот игрок находитесь уже в тачке"); return true; } if(PlayerCuffed[giveplayerid] > 0) { if(ProxDetectorS(3.0, playerid, giveplayerid)) { for(new i; i != CAR_AMOUNT; i++) { new disto = CheckPlayerDistanceToVehicle(3.0, playerid, i); if(disto) { res = i; ta4a++; } } if(ta4a == 0) { SendClientMessage(playerid,COLOR_LIGHTRED,"Вы не рядом с автомобилем!"); return true; } if(ta4a == 1) { for(new i = 1; i < 3; i++) { if(next == 0) { if(!IsAnyPlayerInVehicle(res,i)) { next = 1; PutPlayerInVeh(giveplayerid,res,i); TogglePlayerControllable(giveplayerid, 0); PlayerDrag[giveplayerid] = true; SendClientMessage(giveplayerid,COLOR_LIGHTRED,"Вас насильно затолкали в тачку!"); format(string, sizeof(string), "* %s затолкал в автомобиль %s", PlayerName[playerid] ,PlayerName[giveplayerid]); ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); } } } if(next == 0) { SendClientMessage(playerid,COLOR_LIGHTRED,"В тачке нет свободных мест!"); } } if(ta4a > 1) { SendClientMessage(playerid,COLOR_LIGHTRED,"Вокруг вас слишком много автомобилей!"); } } else { SendClientMessage(playerid,COLOR_LIGHTRED,"Вы слишком далеко от игрока!"); } } else { SendClientMessage(playerid,COLOR_LIGHTRED,"Игрок не в наручниках!"); return true; } } else { SendClientMessage(playerid,COLOR_LIGHTRED,"Вы не законик!"); } return true; Набросал кое-что, но всё равно не работает( function drag(thePlayer, commandName, target) local targetPlayer, targetPlayerName = exports.global:findPlayerByPartialNick(thePlayer, target) local ta4a = 0 local res local next = 0 if getElementData(targetPlayer, "playerDrag") == true then removePedFromVehicle(targetPlayer) triggerClientEvent(thePlayer,"addNotification", root, "Вы высадили преступника!", 2) setElementData(targetPlayer, "playerDrag", false) return end local theVehicle = getPedOccupiedVehicle(thePlayer) local theVehicleTarget = getPedOccupiedVehicle(targetPlayer) if theVehicle or theVehicleTarget then triggerClientEvent(thePlayer,"addNotification", root, "Вы или тот игрок находитесь уже в тачке", 3) return end if getElementData(targetPlayer, "restrain") > 0 then local posX , posY , posZ = getElementPosition(thePlayer) local posX2 , posY2 , posZ2 = getElementPosition(targetPlayer) if getDistanceBetweenPoints2D(posX, posY, posX2, posY2) < 3 then for i, value in ipairs(exports.pool:getPoolElementsByType("vehicle")) do local posX , posY , posZ = getElementPosition(thePlayer) local posX2 , posY2 , posZ2 = getElementPosition(value) local disto = getDistanceBetweenPoints2D(posX, posY, posX2, posY2) if getDistanceBetweenPoints2D(posX, posY, posX2, posY2) < 3 then res = value ta4a = ta4a + 1 end end if ta4a == 0 then triggerClientEvent(thePlayer,"addNotification", root, "Вы или тот игрок находитесь уже в тачке", 3) return end if ta4a == 1 then for i = 0, 3 do if next == 0 then if isPedInVehicle(res) then--??? next = 1 warpPedIntoVehicle(targetPlayer, res, i) setElementData(targetPlayer, "playerDrag", true) triggerClientEvent(targetPlayer,"addNotification", root, "Вас насильно затолкали в тачку!", 2) end end end if next == 0 then triggerClientEvent(thePlayer,"addNotification", root, "В тачке нет свободных мест!", 3) end end if ta4a > 1 then triggerClientEvent(thePlayer,"addNotification", root, "Вокруг вас слишком много автомобилей!", 3) end else triggerClientEvent(thePlayer,"addNotification", root, "Вы слишком далеко от игрока!", 3) end else triggerClientEvent(thePlayer,"addNotification", root, "Игрок не в наручниках!", 3) return end end addCommandHandler("drag", drag)
  15. Что значит как 4 байта? Ип тут невидимым шрифтом или знаками вроде -?Pð\Uóhttp://master.mtasa.com/ase/mta/ ?
  16. Как получить список IP адресов из мастерсервера? Нашёл тока это http://master.mtasa.com/ase/mta/
  17. Та я думал м.б в мта есть уже встроенная функция типа getFps..
  18. Не могу найти норм функцию для определения фпс, никто не встречал? Нашёл что типо того local iFPS = 0 local iFrames = 0 local iStartTick = getTickCount() function GetFPS( ) return iFPS end addEventHandler('onClientResourceStart', g_ResRoot, function() g_Players = getElementsByType('player') fadeCamera(false,0.0) -- create GUI local screenWidth, screenHeight = guiGetScreenSize() g_dxGUI = { ranknum = dxText:create('', screenWidth - 60, screenHeight - 95, false, 'bankgothic', 2, 'right'), ranksuffix = dxText:create('', screenWidth - 40, screenHeight - 86, false, 'bankgothic', 1), checkpoint = dxText:create('', screenWidth - 15, screenHeight - 54, false, 'bankgothic', 0.8, 'right'), timepassed = dxText:create('0:00:00', screenWidth - 10, screenHeight - 25, false, 'bankgothic', 0.7, 'right'), mapdisplay = dxText:create('SPECTATORS: null', 2, screenHeight - dxGetFontHeight(2.3, 'bankgothic')/2, false, 'bankgothic', 0.55, 'left'), fpsdisplay = dxText:create('FPS: 0', 2, screenHeight - dxGetFontHeight(1.5, 'bankgothic')/2, false, 'bankgothic', 0.55, 'left'), mapdisplay = dxText:create('MAP: none', 2, screenHeight - dxGetFontHeight(0.7, 'bankgothic')/2, false, 'bankgothic', 0.55, 'left') } g_dxGUI.fpsdisplay:text(GetFPS()) addEventHandler( 'onClientRender', root, function() iFrames = iFrames + 1 if getTickCount() - iStartTick >= 1000 then iFPS = iFrames iFrames = 0 iStartTick = getTickCount() end g_dxGUI.fpsdisplay:text(GetFPS()) end ) попроще нет ничего?
  19. чо чо чо. ???
  20. getElementData(int, "status") setElementData(int, "status", lol) Хотелось бы спросить, для чего эту функцию заменяют на кустомную? Её можно разве подменить читами или т.п? local secretHandle = '' addEventHandler("onElementDataChange", getRootElement(), function (index, oldValue) if not client then return end local theElement = source if (index ~= "interiormarker") and (index ~= "i:left") and (index ~= "i:right") then local isProtected = getElementData(theElement, secretHandle.."p:"..index) if (isProtected) then -- get real source here -- it aint source! local sourceClient = client if (sourceClient) then if (getElementType(sourceClient) == "player") then local newData = getElementData(source, index) local playername = getPlayerName(source) or "Somethings" -- Get rid of the player local msg = "[AdmWarn] " .. getPlayerName(sourceClient) .. " sent illegal data. Player has been banned." local msg2 = " (victim: "..playername.." index: "..index .." newvalue:".. tostring(newData) .. " oldvalue:".. tostring(oldValue) ..")" --outputConsole(msg) --outputConsole(msg2) --exports.global:sendMessageToAdmins(msg) exports.global:sendMessageToAdmins(msg) exports.global:sendMessageToAdmins(msg2) --exports.logs:logMessage(msg..msg2, 29) --exports.logs:dbLog(sourceClient, 5, sourceClient, msg..msg2 ) -- uncomment this when it works --local ban = banPlayer(sourceClient, false, false, true, getRootElement(), "Hacked Client.", 0) -- revert data changeProtectedElementDataEx(source, index, oldValue, true) end end end end end ); addEventHandler ( "onPlayerJoin", getRootElement(), function () protectElementData(source, "adminlevel") protectElementData(source, "account:id") protectElementData(source, "account:username") protectElementData(source, "legitnamechange") protectElementData(source, "dbid") end ); function allowElementData(thePlayer, index) setElementData(thePlayer, secretHandle.."p:"..index, false, false) end function protectElementData(thePlayer, index) setElementData(thePlayer, secretHandle.."p:"..index, true, false) end function changeProtectedElementData(thePlayer, index, newvalue) allowElementData(thePlayer, index) setElementData(thePlayer, index, newvalue) protectElementData(thePlayer, index) end function changeProtectedElementDataEx(thePlayer, index, newvalue, sync, nosyncatall) if (thePlayer) and (index) then if not newvalue then newvalue = nil end if not nosyncatall then nosyncatall = false end allowElementData(thePlayer, index) if not setElementData(thePlayer, index, newvalue, sync) then -- if not thePlayer or not isElement(thePlayer) then -- outputDebugString("changeProtectedElementDataEx") -- -- outputDebugString(tostring(thePlayer)) -- outputDebugString("index: "..index) -- outputDebugString("newvalue: "..tostring(newvalue)) -- outputDebugString("sync: "..tostring(sync)) -- end end if not sync then if not nosyncatall then if getElementType ( thePlayer ) == "player" then triggerClientEvent(thePlayer, "edu", getRootElement(), thePlayer, index, newvalue) end end end protectElementData(thePlayer, index) return true end return false end function genHandle() local hash = '' for Loop = 1, math.random(5,16) do hash = hash .. string.char(math.random(65, 122)) end return hash end function fetchH() return secretHandle end secretHandle = genHandle()
  21. Как залогиниться как админ? В группе Admin прописал "user.Sergey_Walter"/> в игре вроде бы нужно написать /login что за пароль?
  22. О збс, робит терь) спасибо
  23. g_Pickups = {} g_VisiblePickups = {} function createCustomPickup() local object = createObject(2900, 155, 72, 20, 45) local parachute = createObject(2903, 155, 72, 20) setObjectScale(parachute, 0.35) attachElements(parachute, object, 0, 1.9, 1.9, -45) moveObject(object, 10000, 155, 72, 2.8 ) setTimer(function(p) if isElement(p) then detachElements(p) local x, y, z = getElementPosition(p) moveObject(p, 4000, x, y, z - 10, 0, 0, 720) setTimer(destroyElement, 2000, 1, p) end end, 10000, 1, parachute) setElementCollisionsEnabled(object, false) local colshape = createColSphere(0, 0, 0, 3.5) attachElements(colshape, object) g_Pickups[colshape] = { object = object } g_Pickups[colshape].load = true end addCommandHandler("lol", createCustomPickup) addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), function() engineImportTXD(engineLoadTXD("crate.txd"), 2900) engineReplaceModel(engineLoadDFF("crate.dff", 2900), 2900) g_PickupStartTick = getTickCount() end) addEventHandler("onClientElementStreamIn", getRootElement(), function() local colshape = table.find(g_Pickups, "object", source) if colshape then g_VisiblePickups[colshape] = source end end) addEventHandler("onClientElementStreamOut", getRootElement(), function() local colshape = table.find(g_VisiblePickups, source) if colshape then g_VisiblePickups[colshape] = nil end end) function updatePickups() local angle = math.fmod((getTickCount() - g_PickupStartTick) * 360 / 2000, 360) for colshape, elem in pairs(g_VisiblePickups) do if g_Pickups[colshape].load then setElementRotation(elem, 45, 0, angle)--Здесь вращается ящик end end end addEventHandler("onClientRender", getRootElement(), updatePickups) Почему не срабатывает onClientElementStreamIn? addEventHandler("onClientElementStreamIn", getRootElement(), function() local colshape = table.find(g_Pickups, "object", source) if colshape then g_VisiblePickups[colshape] = source end И что за функция table.find я её нигде раньше не встречал
  24. ну и смотри 16614 обьект, это и есть LOD
×
×
  • Create New...