Narrator Posted April 17, 2013 Share Posted April 17, 2013 Ребята, не могу разобраться, как использовать ресурс maplimits.. Расскажите, пожалуйста. --[[ [b]-- снимал комментарии, ставил координаты - никак [/b] <maplimit> <point x="" y="" /> <point x="" y="" /> <point x="" y="" /> </maplimit> ]] function isLeft( x0, y0, x1, y1, x2, y2 ) return ( ( x1 - x0 ) * ( y2 - y0 ) - ( x2 - x0 ) * ( y1 - y0 ) ) end function isInPoli( x0, y0, table ) --local one = getTickCount() local wn = 0 local k = 1 while ( k < #table ) do if ( table[k].y <= y0 ) then if ( table[k+1].y > y0 ) then if ( isLeft( table[k].x, table[k].y, table[k+1].x, table[k+1].y, x0, y0 ) > 0 ) then wn = wn + 1 end end else if ( table[k+1].y <= y0 ) then if ( isLeft( table[k].x, table[k].y, table[k+1].x, table[k+1].y, x0, y0 ) < 0 ) then wn = wn - 1 end end end k = k + 1 end --outputChatBox( getTickCount() - one ) return wn end function buildTables() mapLimits = {} local groups = getElementsByType ( "maplimit" ) for k,v in ipairs(groups) do mapLimits[k] = {} local points = getChildren ( v, "point" ) if ( #points < 3 ) then outputDebugString("* Map Limits Error: too little points in a maplimit. Minimum is 3.", 1 ) return end for i,j in ipairs(points) do mapLimits[k][i] = {} mapLimits[k][i].x = tonumber(getElementData( j, "x" )) mapLimits[k][i].y = tonumber(getElementData( j, "y" )) --mapLimits[k][i].marker = createMarker( mapLimits[k][i].x, mapLimits[k][i].y, 0 ) --setElementVisibleTo ( mapLimits[k][i].marker, maplimitsRoot, false ) end end end function onResourceStuff( resourcename ) buildTables() if ( resourcename == getThisResource () ) then mapl_disp = textCreateDisplay () mapl_text = textCreateTextItem ( "GO BACK TO THE GAME AREA!", 0.5, 0.5, "high", 255, 0, 0, 255, 2.5, "center", "center" ) textDisplayAddText ( mapl_disp, mapl_text ) players = getElementsByType( "player" ) for k,v in ipairs(players) do stuff( v, 0, false ) end end end function getChildren ( root, type ) local elements = getElementsByType ( type ) local result = {} for elementKey,elementValue in ipairs(elements) do if ( getElementParent( elementValue ) == root ) then result[ table.getn( result ) + 1 ] = elementValue end end return result end function onPlayerJoin() stuff( source, 0, false ) end function onPlayerWasted() textDisplayRemoveObserver ( mapl_disp, source ) end function stuff( player, flag ) --local one = getTickCount() if #mapLimits ~= 0 then local x, y, z = getElementPosition( player ) local newFlag = true local k = 1 while ( ( k <= #mapLimits ) and newFlag ) do local wn = isInPoli( x, y, mapLimits[k] ) if ( wn ~= 0 ) then newFlag = false end k = k + 1 end if ( flag ~= newFlag ) then if ( newFlag ) then if ( not isPlayerDead( player ) ) then --Lol, inefficient. Bite me. textDisplayAddObserver ( mapl_disp, player ) end else textDisplayRemoveObserver ( mapl_disp, player ) end end if newFlag and ( not isPlayerDead( player ) ) then local playerHP = getElementHealth( player ) if ( playerHP > 10 ) then setElementHealth( player, playerHP - 5 ) else killPlayer( player ) end end setTimer( stuff, 200, 1, player, newFlag ) --outputChatBox( getTickCount() - one ) else setTimer( stuff, 200, 1, player, flag ) end end --[[ function showPoints( source ) if #mapLimits ~= 0 then local booll = isElementVisibleTo ( mapLimits[1][1].marker, source ) if booll then booll = false else booll = true end for k,v in ipairs(mapLimits) do local i = 1 while i < #mapLimits[k] do setElementVisibleTo ( mapLimits[k][i].marker, source, booll ) i = i + 1 end end end end ]] maplimitsRoot = getRootElement() addEventHandler( "onResourceStart", maplimitsRoot, onResourceStuff ) addEventHandler( "onResourceStop", maplimitsRoot, onResourceStuff ) addEventHandler( "onPlayerJoin", maplimitsRoot, onPlayerJoin ) addEventHandler( "onPlayerWasted", maplimitsRoot, onPlayerWasted ) --addCommandHandler ( "showpoints", showPoints ) Link to comment
Ruga Posted April 17, 2013 Share Posted April 17, 2013 прочти))) https://wiki.multitheftauto.com/index.ph ... :Maplimits Link to comment
Narrator Posted April 18, 2013 Author Share Posted April 18, 2013 прочти))) https://wiki.multitheftauto.com/index.ph ... :Maplimits Я читал, по-всякому уже перепробовал Link to comment
Ruga Posted April 18, 2013 Share Posted April 18, 2013 по существу что нужно и что не работает)) за тебя ошибки никто искать не будет)) Link to comment
Narrator Posted April 18, 2013 Author Share Posted April 18, 2013 по существу что нужно и что не работает)) за тебя ошибки никто искать не будет)) Можешь пожалуйста с помощью этого скрипта ограничить некую территорию и скинуть мне? Просто, для примера. Вики мне не помогла, уже все перепробовал. Link to comment
Ruga Posted April 18, 2013 Share Posted April 18, 2013 я конечно не смотрел вообще что и как работает по этому ресурсу, но у тебя данны координаты, тоесть от 0 точки, определяй размеры своей карты, а вообще использовать чужие скрипты плохая идея)) Link to comment
Narrator Posted April 18, 2013 Author Share Posted April 18, 2013 я конечно не смотрел вообще что и как работает по этому ресурсу, но у тебя данны координаты, тоесть от 0 точки, определяй размеры своей карты, а вообще использовать чужие скрипты плохая идея)) Спасибо, что попробовал помочь, но не работает Link to comment
Narrator Posted April 18, 2013 Author Share Posted April 18, 2013 я конечно не смотрел вообще что и как работает по этому ресурсу, но у тебя данны координаты, тоесть от 0 точки, определяй размеры своей карты, а вообще использовать чужие скрипты плохая идея)) Спасибо, что попробовал помочь, но не работает Link to comment
Narrator Posted April 18, 2013 Author Share Posted April 18, 2013 я конечно не смотрел вообще что и как работает по этому ресурсу, но у тебя данны координаты, тоесть от 0 точки, определяй размеры своей карты, а вообще использовать чужие скрипты плохая идея)) Спасибо, что попробовал помочь, но не работает Link to comment
Scripting Moderators Sarrum Posted April 18, 2013 Scripting Moderators Share Posted April 18, 2013 Нужно было создать map-файл с координатами. Готовый вариант: ссылка Редактировать maplimits.map, информация есть на вики. Link to comment
Narrator Posted April 18, 2013 Author Share Posted April 18, 2013 Нужно было создать map-файл с координатами.Готовый вариант: ссылка Редактировать maplimits.map, информация есть на вики. Большое спаасибо!) Я могу тебя как-то отблагодарить? Link to comment
Scripting Moderators Sarrum Posted April 18, 2013 Scripting Moderators Share Posted April 18, 2013 Большое спаасибо!) Я могу тебя как-то отблагодарить? Рад помочь. На счет второго, не знаю) Link to comment
Narrator Posted April 18, 2013 Author Share Posted April 18, 2013 Большое спаасибо!) Я могу тебя как-то отблагодарить? Рад помочь. На счет второго, не знаю) Пожалуй, последнее, с чем побеспокою) Прочел вики, усвоил, как указываются в этом скрипте координаты, но.. В общем, помогите пожалуйста ограничить этот квадрат, чтобы я на его примере уже делал сам Я делал так: <point x="0" y="0" /> <point x="1998" y="0" /> <point x="2008" y="-1450" /> <point x="0" y="-1440" /> Но две стороны оказались неограниченными Link to comment
Scripting Moderators Sarrum Posted April 18, 2013 Scripting Moderators Share Posted April 18, 2013 Тестировал. <point x="1998" y="-1450" /> <point x="1998" y="-1440" /> <point x="2008" y="-1440" /> <point x="2008" y="-1450" /> Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now