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. как цифру 99.9 превратить в 99, со string.gsub не дружу
  8. Вот такими вещями в другом мультиплеере и жертвуют своей оперативной памятью (утечка памяти на стороне клиента, исправлять не хотят) Ты заставил меня задуматься
  9. Да это я всё понимаю, дело в том что заменять нужно объектов 50 =( Хотел что-то типо этого
  10. 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)
  11. Есть ли в мта подобная функция замены текстуры объекта как в сампе? SetObjectMaterial(meriawall,0,15058,"svvgmid","ah_wpaper5",0); Или только так? dxCreateTexture engineApplyShaderToWorldTexture Просто подскажите как заменить текстуру на объекте уже существующей текстурой из гта..
  12. Помогите портировать\реализовать команду из сампа в мта, не получается( Когда в 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)
  13. Что значит как 4 байта? Ип тут невидимым шрифтом или знаками вроде -?Pð\Uóhttp://master.mtasa.com/ase/mta/ ?
  14. Как получить список IP адресов из мастерсервера? Нашёл тока это http://master.mtasa.com/ase/mta/
  15. Та я думал м.б в мта есть уже встроенная функция типа getFps..
  16. Не могу найти норм функцию для определения фпс, никто не встречал? Нашёл что типо того 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 ) попроще нет ничего?
  17. 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()
  18. Как залогиниться как админ? В группе Admin прописал "user.Sergey_Walter"/> в игре вроде бы нужно написать /login что за пароль?
  19. О збс, робит терь) спасибо
  20. 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 я её нигде раньше не встречал
  21. ну и смотри 16614 обьект, это и есть LOD
×
×
  • Create New...