Arimance Posted December 29, 2011 Share Posted December 29, 2011 (edited) С наступающим! Помогите хочу сделать нестандартную метку прицела. Использую такую вещь: local tx,ty,tz=getPedTargetStart(getLocalPlayer()) local sx,sy,sz=getScreenFromWorldPosition(tx,ty,tz) dxDrawLine(startX,startY,endX,endY,tocolor(255,255,255,255),1) dxDrawLine(startX,startY,endX,endY,tocolor(255,255,255,255),1) dxDrawLine(startX,startY,endX,endY,tocolor(255,255,255,255),1) dxDrawLine(startX,startY,endX,endY,tocolor(255,255,255,255),1) ___________________________________ Не пойму, почему дебаг шлёт ошибки, если я пробую удлиннять, например, первую палочку прицела: ERROR: ... : attempt to perform arithmetic on local 'sy' (a nil value) Как бы "нельзя применять арифметические действия с 'sy'." Странно всё.. dxDrawLine(sx,sy,sx,sy+5,tocolor(255,255,255,255),1) Интересно, в чём же тут ошибка Edited December 29, 2011 by Guest Link to comment
MX_Master Posted December 29, 2011 Share Posted December 29, 2011 тебе же надо просто нарисовать свой крестик в центре экрана игрока, верно? Link to comment
Arimance Posted December 29, 2011 Author Share Posted December 29, 2011 Да, именно. Только не сказать, чтобы в центре экрана. С помощью двух функций в верхнем сообщении получается вывести линию (безразмерную) на месте прицела игрока. Только размер задать не получается Link to comment
MX_Master Posted December 29, 2011 Share Posted December 29, 2011 Поточнее, плиз (: потому что обычный прицел всегда в центре экрана, а ты хочешь что-то особенное.. Link to comment
Arimance Posted December 29, 2011 Author Share Posted December 29, 2011 Разве в центре экрана? Хм.. у меня ноутбук с разрешением 1600x900, и прицел чуть вправо от центра экрана Просто я увидел, что local tx,ty,tz=getPedTargetStart(getLocalPlayer()) local sx,sy,sz=getScreenFromWorldPosition(tx,ty,tz) точно находит точку прицела на экране, плюс ко всему с этой вещью она перекрестье изменяется в размерах при стрельбе Link to comment
MX_Master Posted December 29, 2011 Share Posted December 29, 2011 выровняй свою метку по положению оригинальной метки, а потом уберешь оригинальную. И эти две функции не нужны будут. Link to comment
Arimance Posted December 29, 2011 Author Share Posted December 29, 2011 Тогда даже не представляю, как заставить её изменяться в размере при стрельбе И перекрестье будет статично держаться на экране, а с этой вещью, указанной выше, прицел как бы прикреплён к оружию игрока. Например, я сделал визуальную отдачу у оружия с помощью невидимого взрыва, не приносящего повреждений. Выглядит очень эффектно, когда прицел вместе с камерой и оружием немного двигается. Но с помощью этих функций не могу построить само перекрестие. При sx\sy+5, например, дебаг выдаёт ошибку. Link to comment
MX_Master Posted December 30, 2011 Share Posted December 30, 2011 не рисуй линии, рисуй 1 картинку с собственной меткой, при выстреле плавно масштабируй картинку на экране чтобы показать, что ты хочешь, покажи скрины с пояснениями на этом скрине Link to comment
Arimance Posted December 30, 2011 Author Share Posted December 30, 2011 http://imageshack.us/f/713/mtascreen20111230144912.png/ http://imageshack.us/photo/my-images/85 ... 44912.png/ Link to comment
MX_Master Posted December 30, 2011 Share Posted December 30, 2011 т.е. тебе нужно, чтобы метку показывало в 3D мире в том месте, где заканчивается линия полета пули? если да, то понадобится - getPedTargetEnd Link to comment
Arimance Posted December 30, 2011 Author Share Posted December 30, 2011 Большое спасибо за помощь! Попробовал вариант с картинкой на dx, всё отлично получилось! addEventHandler("onClientRender",getRootElement(),function() local tx,ty,tz=getPedTargetStart(getLocalPlayer()) local stx,sty,stz=getScreenFromWorldPosition(tx,ty,tz) dxDrawImage(stx,sty,50,50,"crosshair.png") end) 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