Danate Posted August 23, 2014 Share Posted August 23, 2014 Заспавнил педов из таблицы, сделал проверку на кол-во хп - если меньше 100, то дает 100. Но заметил такую вещь, что дает 100 хп только последнему педу из таблицы, остальных можно убить ЗЫ. Так же заметил, что текст который должен рисоваться над педом (коорды так же берутся из таблицы) рисуется только над педом который в таблице посдений. Код pedsSpawns = { {268,-2038.0770263672,175.51203918457,28.8359375,-90, "Сэм Никель"}, {268,-2038.0823974609,182.16136169434,28.8359375,-90, "Андриано Челентано"}, } addEventHandler( "onClientResourceStart", getRootElement( ), function() for i, v in ipairs(pedsSpawns) do ped = createPed(v[1],v[2],v[3],v[4],v[5]) x, y, z = v[2],v[3],v[4] text = v[6] end end ) addEventHandler("onClientRender",getRootElement(), function() local px,py,pz = getElementPosition(getLocalPlayer()) local distance = getDistanceBetweenPoints3D ( x,y,z,px,py,pz ) if distance <= 7 then local sx,sy = getScreenFromWorldPosition ( x, y, z+0.95, 0.06 ) if not sx then return end dxDrawBorderedText ( text, sx, sy - 30, sx, sy - 30, tocolor(255,204,51,255), 1, "default-bold", "center", "bottom", false, false, false ) end end ) function setPedHP() hp = getElementHealth(ped) if hp < 100 then setElementHealth(ped, 100) end end setTimer(setPedHP,500,0) Link to comment
Kernell Posted August 23, 2014 Share Posted August 23, 2014 Ошибка в логике. ped, x, y, z и text - это всё ОДНА (каждая) глобальная переменная, и она хранит то значение, которое ты записал в неё последний раз, поэтому там записан последний пед. Link to comment
Danate Posted August 23, 2014 Author Share Posted August 23, 2014 Ошибка в логике.ped, x, y, z и text - это всё ОДНА (каждая) глобальная переменная, и она хранит то значение, которое ты записал в неё последний раз, поэтому там записан последний пед. Тогда я не понимаю как выйти из положения, если не записывать данные в переменные, можно пример? Link to comment
Memory Posted August 23, 2014 Share Posted August 23, 2014 В рендере перед dxdraw поставь for i,v ... И в функции, которая даёт хп, тоже самое. p.s. пишу с телефона последнее время, извините за простоту ответов, без пояснений и т.п Link to comment
TheNormalnij Posted August 23, 2014 Share Posted August 23, 2014 Тогда я не понимаю как выйти из положения, если не записывать данные в переменные, можно пример? Записывать элементы педов в таблицу. И ты бы мог отменять событие onClientPedDamage, если хочешь их сделать неуязвимыми. Link to comment
Danate Posted August 23, 2014 Author Share Posted August 23, 2014 В рендере перед dxdraw поставь for i,v ... И в функции, которая даёт хп, тоже самое.p.s. пишу с телефона последнее время, извините за простоту ответов, без пояснений и т.п Да спасибо, но не совсем перед dxDraw.. Вот как сделал addEventHandler("onClientRender",getRootElement(), function() for i, v in ipairs(pedsSpawns) do x, y, z = v[2],v[3],v[4] local px,py,pz = getElementPosition(getLocalPlayer()) local distance = getDistanceBetweenPoints3D ( x,y,z,px,py,pz ) if distance <= 7 then local sx,sy = getScreenFromWorldPosition ( x, y, z+0.95, 0.06 ) if not sx then return end dxDrawBorderedText ( v[6], sx, sy - 30, sx, sy - 30, tocolor(255,204,51,255), 1, "default-bold", "center", "bottom", false, false, false ) end end end ) Link to comment
Kernell Posted August 23, 2014 Share Posted August 23, 2014 Только ты всё равно объявляешь x, y, z как глобальные, это может плохо обернуться там где ты этого не ожидаешь. Link to comment
Danate Posted August 24, 2014 Author Share Posted August 24, 2014 Теперь другая у меня другая проблемка, я хочу использовать данные из таблицы с педом, но как переменную для получения данных из другой таблицы. Иными словами там в таблице где модель, коорды педа я даю еще последовательный ИД (первая строка - ИД1 и тд) что бы использовать последовательность из таблицы с педами, для таблицы с текстом. Для 1 педа - 1 строка с текстом и тд. pedsSpawns = { {268,-2038.0770263672,175.51203918457,28.8359375,-90, "Сэм Никель", 1}, {268,-2034.8961181641,148.54093933105,28.8359375,-90, "Джон Паркер", 2}, } quest = { { "Добро пожаловать, меня зовут Сэм. \nВы по какому вопросу?","Да, я долго проживаю на этих местах, но таких аномалий никогда не встречал"}, { "Добро пожаловать, меня зовут Джон. \nВы по какому вопросу?","Брат, я не спал трое суток, мне сейчас не до тебя."}, } addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), function () for i, v in ipairs(quest) do local sWidth, sHeight = guiGetScreenSize() local Width,Height = 280,500 local X = 10 local Y = 150 dialog = guiCreateWindow(X,Y,Width,Height,"Диалог",false) otvet = guiCreateButton(173,470,97,20,"Ответить",false,dialog) closeWin = guiCreateButton(10,470,97,20,"Закрыть",false,dialog) firstGrid = guiCreateGridList(10,30,260,250,false,dialog) for i, v in ipairs(pedsSpawns) do pedID = tonumber(v[7]) questNum = pedID end text = guiCreateLabel (5,5,250,250,quest[questNum][1],false,firstGrid) qList = guiCreateGridList(10,290,260,150,false,dialog) column = guiGridListAddColumn(qList,"Ответ",0.85) row1 = guiGridListAddRow ( qList ) for i, v in ipairs(otv) do guiGridListSetItemText ( qList, row1, column, v[1], false, false ) end guiWindowSetSizable(dialog,false) guiSetVisible(dialog,false); end end ) В идеале как тут, но опять же в переменную ставится последний ИД из таблицы pedsSpawns Link to comment
Danate Posted August 24, 2014 Author Share Posted August 24, 2014 Исправил, все работает 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