Jump to content

Sergey_Walter

Members
  • Posts

    96
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Sergey_Walter's Achievements

Punk-@ss B*tch

Punk-@ss B*tch (12/54)

0

Reputation

  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/ ?
×
×
  • Create New...