Mc_Trekkie Posted February 17, 2012 Posted February 17, 2012 (edited) Итак,вот у меня есть вот это (Server side) local robbingTable = { [1]={2020.65198, -1649.86047, 13.41406}, [2]={2424.22791, -1638.03711, 13.38281}, [3]={1855.01685, -1430.47449, 13.39063}, [4]={1732.81580, -1296.87122, 13.44294}, [5]={1473.19226, -1295.77124, 13.48315}, [6]={1443.60376, -1498.26660, 13.37650}, [7]={1426.37280, -1716.12439, 13.38281}, [8]={1315.06909, -1656.43799, 13.38281}, [9]={1359.06250, -1432.39734, 13.38281}, [10]={1169.82983, -1392.34473, 13.41728}, [11]={930.76508, -1392.92627, 13.26561}, [12]={815.24756, -1317.91345, 13.44460}, [13]={585.04199, -1320.53748, 13.40609}, [14]={526.99365, -1624.20361, 16.63225}, } У меня есть функция в клиенте,которая создаёт маркер по этим координатам и содаёт там же значок(Blip). Client Side function (x, y, z) outputChatBox ( "Rob house!", 255, 255, 255, true ) markerrob = createMarker (tostring(x), tostring(y), tostring(z)-1, "cylinder", 3.5, 255, 0, 0, 170) blip = createBlipAttachedTo( markerrob, 32, 2, 255, 0, 0, 255 ) addEventHandler("onClientMarkerHit",markerrob,onRobStopHit) end) Вопрос: Как сделать так,чтобы маркер создавался на рандомных координатах из таблицы? Заранее спасибо=) Edited February 17, 2012 by Guest 3 Факта об идиотах. 1.Хватают факты из воздуха 2.Не могут сказать что-либо ч0тко и понятно 3.Делают себе супер Брутальный ник(:
Mc_Trekkie Posted February 17, 2012 Author Posted February 17, 2012 Спс. Функция мб и кривая,но,какая есть-такая есть) Ща попробую Не совсем понял. Как так создать маркер? Так? o_O markerrob = unpack(robbingTable[math.random(#robbingTable)], "cylinder", 255, 0, 0, 255 ) 3 Факта об идиотах. 1.Хватают факты из воздуха 2.Не могут сказать что-либо ч0тко и понятно 3.Делают себе супер Брутальный ник(:
Mc_Trekkie Posted February 17, 2012 Author Posted February 17, 2012 Как то вы криво говорите,вот код сервера: local rootElement = getRootElement() local rob = {[402] = true, [422] = true} local robbingTable = { [1]={2020.65198, -1649.86047, 13.41406}, [2]={2424.22791, -1638.03711, 13.38281}, [3]={1855.01685, -1430.47449, 13.39063}, [4]={1732.81580, -1296.87122, 13.44294}, [5]={1473.19226, -1295.77124, 13.48315}, [6]={1443.60376, -1498.26660, 13.37650}, [7]={1426.37280, -1716.12439, 13.38281}, [8]={1315.06909, -1656.43799, 13.38281}, [9]={1359.06250, -1432.39734, 13.38281}, [10]={1169.82983, -1392.34473, 13.41728}, [11]={930.76508, -1392.92627, 13.26561}, [12]={815.24756, -1317.91345, 13.44460}, [13]={585.04199, -1320.53748, 13.40609}, [14]={526.99365, -1624.20361, 16.63225}, } function getNewRobLocation(thePlayer, ID) local x, y, z = robbingTable[ID][1], robbingTable[ID][2], robbingTable[ID][3] triggerClientEvent(thePlayer,"rob_set_location",thePlayer,x,y,z) end function onVehicleEnter(thePlayer) if not rob[getElementModel(source)] then return end if not getPlayerTeam(thePlayer) then return end if getTeamName(getPlayerTeam(thePlayer)) == "Criminal" then local x, y, z = getNewRobLocation(thePlayer, 1) setElementData(thePlayer,"robData",1) end end Вот код клиента: local client = getLocalPlayer( ) local rootElement = getRootElement() local markerrob = nil local blip = nil addEvent("rob_set_location",true) addEventHandler("rob_set_location",rootElement, function (x, y, z) outputChatBox ( "Rob house!", 255, 255, 255, true ) markerrob = createMarker (tostring(x), tostring(y), tostring(z)-1, "cylinder", 3.5, 255, 0, 0, 170) blip = createBlipAttachedTo( markerrob, 32, 2, 255, 0, 0, 255 ) addEventHandler("onClientMarkerHit",markerrob,onRobStopHit) end) function onRobStopHit(hitPlayer) if not hitPlayer == client then return end triggerServerEvent("rob_finish",client,client) if isElement(blip) then destroyElement(blip) end if isElement(markerrob) then removeEventHandler("onClientMarkerHit",markerrob,onRobStopHit) destroyElement(markerrob) end end 3 Факта об идиотах. 1.Хватают факты из воздуха 2.Не могут сказать что-либо ч0тко и понятно 3.Делают себе супер Брутальный ник(:
Mc_Trekkie Posted February 17, 2012 Author Posted February 17, 2012 И что? Ничего не работает. Нельзя что ли объяснить где проблемма то? Или обязательно в скрипте через -- писать всякую ерунду? 3 Факта об идиотах. 1.Хватают факты из воздуха 2.Не могут сказать что-либо ч0тко и понятно 3.Делают себе супер Брутальный ник(:
Aibo Posted February 17, 2012 Posted February 17, 2012 я уже всё объяснил. если для вас, мсье, это "ерунда через --" — я умываю руки. с таким отношением вам мануал по луа на шею, вики в зубы, и вперёд. ?
Mc_Trekkie Posted February 17, 2012 Author Posted February 17, 2012 Ага,всё ООООООООчень понятно. Kenix или Kernell понятней объясняют всё. А вы-просто говорите что надо исправить,не говоря как это сделать,Я тоже так могу: Добавьте что -нибудь в обработчиков,сюда что-нибудь и др. 3 Факта об идиотах. 1.Хватают факты из воздуха 2.Не могут сказать что-либо ч0тко и понятно 3.Делают себе супер Брутальный ник(:
Kenix Posted February 17, 2012 Posted February 17, 2012 Aibo всё правильно написал. Если вы не изучите луа и вики, то вы дальше не будете продвигаться. Я могу вам помочь исправить код , но это будет бессмысленно. Copy Paste вообщем. http://vk.com/the_kenix Вопросы задавайте на форуме, не пишите мне в личку. Please don't pm me.
Mc_Trekkie Posted February 17, 2012 Author Posted February 17, 2012 Я понимаю,но иногда очень раздражает когда люди пытаются объяснить то,что Я не могу понять,если бы Aibo просто сказал бы где исправить и на что,или дал бы код с описанием,что Я не правильно сделал,Я бы всё понял,а так... Я просто не понимаю как сделать это с math.random.Скрипт работает.... Вот если что...Клиентская сторона: addEvent("rob_set_location",true) addEventHandler("rob_set_location",rootElement, function (x, y, z) markerrob = createMarker(tostring(x), tostring(y), tostring(z)-1, "cylinder", 3.5, 255, 0, 0, 170) blip = createBlipAttachedTo( markerrob, 32, 2, 0, 0, 0, 117 ) addEventHandler("onClientMarkerHit",markerrob,onBusStopHit) end) Вот сервер(Только таблица) local busTable = { [1]={2007.65198, -1648.86047, 13.41406}, [2]={1825.22791, -1635.03711, 13.38281}, [3]={1855.01685, -1430.47449, 13.39063}, [4]={1732.81580, -1296.87122, 13.44294}, [5]={1473.19226, -1295.77124, 13.48315}, [6]={1443.60376, -1498.26660, 13.37650}, [7]={1426.37280, -1716.12439, 13.38281}, [8]={1315.06909, -1656.43799, 13.38281}, [9]={1359.06250, -1432.39734, 13.38281}, [10]={1169.82983, -1392.34473, 13.41728}, [11]={930.76508, -1392.92627, 13.26561}, [12]={815.24756, -1317.91345, 13.44460}, [13]={585.04199, -1320.53748, 13.40609}, [14]={526.99365, -1624.20361, 16.63225}, } 3 Факта об идиотах. 1.Хватают факты из воздуха 2.Не могут сказать что-либо ч0тко и понятно 3.Делают себе супер Брутальный ник(:
Aibo Posted February 17, 2012 Posted February 17, 2012 там и был исправленный код с описанием. просто тебе тупо насрать, это же "ерунда через --". пример: как минимум 2 РАЗА было сказано, что "tostring(z)-1" — бред, tostring() там не нужен. что изменилось? НИЧЕГО. или тебе непонятно, что tostring — это конвертирование в строку? и что вычитание числа из строки работать не будет? ?
Kenix Posted February 17, 2012 Posted February 17, 2012 1.В аргументах функции createMarker должно быть значение число , а не строка ( на вики написано ). 2.Ты не можешь использовать таблицу если та например на сервере , а хочешь получить на клиенте. Т.е вернёт nil. 3.В твоём случае чтобы получить случайную строку надо: math.random( #busTable ) Мы знаем таблицу на этой строке , теперь надо получить значение из этой таблицы которая находится на этой строке по индексу. busTable[ строка которую мы знаем ][1] Грубо говоря мы вызываем таблицу и получаем оттуда данные по индексу. Если и это не понятно то: Вызываем таблицу, Номер строки, Номер индекса. Пример busTable[1][1] -- >2007.65198 Пример 2 local t = { [1] = { 1,2,3 } } print( t[1][3] ) -- Вернёт число 3 Вот ещё примеры: t = { [5] = { [2] = { [1] = 1 } } } print( t[5][2][1] ) --> 1 t = { [5] = { [2] = { [1] = 1 } }, [6] = { [2] = { [1] = 2 } } } for i = 1,10 do local row = math.random( 5,6 ) print( t[row][2][1] ) --> 1 или 2 ( случайное значение ) end В твоём случае всего 3 индекса в каждой строке. busTable[ переменная ( номер строки которую мы знаем ) ][1] ,busTable[ переменная ( номер строки которую мы знаем ) ][2],busTable[ переменная ( номер строки которую мы знаем ) ][3] Код: local busTable = { [1]={2007.65198, -1648.86047, 13.41406}, [2]={1825.22791, -1635.03711, 13.38281}, [3]={1855.01685, -1430.47449, 13.39063}, [4]={1732.81580, -1296.87122, 13.44294}, [5]={1473.19226, -1295.77124, 13.48315}, [6]={1443.60376, -1498.26660, 13.37650}, [7]={1426.37280, -1716.12439, 13.38281}, [8]={1315.06909, -1656.43799, 13.38281}, [9]={1359.06250, -1432.39734, 13.38281}, [10]={1169.82983, -1392.34473, 13.41728}, [11]={930.76508, -1392.92627, 13.26561}, [12]={815.24756, -1317.91345, 13.44460}, [13]={585.04199, -1320.53748, 13.40609}, [14]={526.99365, -1624.20361, 16.63225}, } addEvent( "rob_set_location",true ) addEventHandler( "rob_set_location",root, function ( x, y, z ) local row = math.random( #busTable ) markerrob = createMarker( busTable[ row ][1], busTable[ row ][2], busTable[ row ][3] - 1, "cylinder", 3.5, 255, 0, 0, 170 ) blip = createBlipAttachedTo( markerrob, 32, 2, 0, 0, 0, 117 ) addEventHandler( "onClientMarkerHit",markerrob,onBusStopHit ) end ) Обновил. Я не мастер объяснять что-либо. http://vk.com/the_kenix Вопросы задавайте на форуме, не пишите мне в личку. Please don't pm me.
Mc_Trekkie Posted February 17, 2012 Author Posted February 17, 2012 Т.е Чтобы запилить рандомный спавн маркеров надо юзать функцию на сервере? Я так понимаю И в итогде не понял всё до конца.Как создать маркер используя из этой строки нашу переменную? Типо createMarker( переменная,переменная2,переменная3,"cylinder", 2.3, 255, 0, 0, 117 )? ... 3 Факта об идиотах. 1.Хватают факты из воздуха 2.Не могут сказать что-либо ч0тко и понятно 3.Делают себе супер Брутальный ник(:
Aibo Posted February 17, 2012 Posted February 17, 2012 В твоём случае всего 3 индекса в каждой строке. busTable[ переменная ( номер строки которую мы знаем ) ][1] ,busTable[ переменная ( номер строки которую мы знаем ) ][2],busTable[ переменная ( номер строки которую мы знаем ) ][3] и зачем тогда x,y,z которые передавались в эту функцию через эвент "rob_set_location"? и да, http://pgl.yoyo.org/luai/i/unpack но многоуважаемый автор, опять же, посчитал это тоже непонятным бредом. короче пошел я из этого топика. ?
Kenix Posted February 17, 2012 Posted February 17, 2012 и зачем тогда x,y,z которые передавались в эту функцию через эвент "rob_set_location"? У меня тот же вопрос. http://vk.com/the_kenix Вопросы задавайте на форуме, не пишите мне в личку. Please don't pm me.
MX_Master Posted February 17, 2012 Posted February 17, 2012 не буду читать все, но думаю таблицу координат нужно перенести в клиент, потому что маркер создаетсяя именно там topcnc.ru # vydrenko.ru
Mc_Trekkie Posted February 17, 2012 Author Posted February 17, 2012 Скрипт не работает,пишет в дебаге: На строке 22. attemp to index field"?" Вот 2 строки: local row = robbingTable[ math.random( #robbingTable ) ] markerrob = createMarker( robbingTable[ row ][1], robbingTable[ row ][2], robbingTable[ row ][3] - 1, "cylinder", 3.5, 255, 0, 0, 170 ) 3 Факта об идиотах. 1.Хватают факты из воздуха 2.Не могут сказать что-либо ч0тко и понятно 3.Делают себе супер Брутальный ник(:
Kenix Posted February 17, 2012 Posted February 17, 2012 Ступил когда писал пост Обновил пост http://vk.com/the_kenix Вопросы задавайте на форуме, не пишите мне в личку. Please don't pm me.
Mc_Trekkie Posted February 17, 2012 Author Posted February 17, 2012 Обновил пост Писал уже. Легче было дать код,щас попытаюсь сделать так как вы написали. Тоесть: НазваниеТаблицы = { [5] = {Коорды маркера? [2] = {Тут тоже? [1] = 1 } }, [6] = { [2] = { [1] = 2 } } } for i = 1,10 do local row = math.random( 5,6 ) print( t[row][2][1] ) --> 1 или 2 ( случайное значение ) end 3 Факта об идиотах. 1.Хватают факты из воздуха 2.Не могут сказать что-либо ч0тко и понятно 3.Делают себе супер Брутальный ник(:
Kenix Posted February 17, 2012 Posted February 17, 2012 Это примеры чтобы вы поняли . Таблица у вас есть local busTable = { [1]={2007.65198, -1648.86047, 13.41406}, [2]={1825.22791, -1635.03711, 13.38281}, [3]={1855.01685, -1430.47449, 13.39063}, [4]={1732.81580, -1296.87122, 13.44294}, [5]={1473.19226, -1295.77124, 13.48315}, [6]={1443.60376, -1498.26660, 13.37650}, [7]={1426.37280, -1716.12439, 13.38281}, [8]={1315.06909, -1656.43799, 13.38281}, [9]={1359.06250, -1432.39734, 13.38281}, [10]={1169.82983, -1392.34473, 13.41728}, [11]={930.76508, -1392.92627, 13.26561}, [12]={815.24756, -1317.91345, 13.44460}, [13]={585.04199, -1320.53748, 13.40609}, [14]={526.99365, -1624.20361, 16.63225}, } Прочтите внимательно тот пост http://vk.com/the_kenix Вопросы задавайте на форуме, не пишите мне в личку. Please don't pm me.
Mc_Trekkie Posted February 17, 2012 Author Posted February 17, 2012 Таблица у нас есть,значит,нам надо извлечь рандомное значение из этой таблицы,как Я понял сделать это можно так: local busTable = { [1]={2007.65198, -1648.86047, 13.41406}, [2]={1825.22791, -1635.03711, 13.38281}, [3]={1855.01685, -1430.47449, 13.39063}, [4]={1732.81580, -1296.87122, 13.44294}, [5]={1473.19226, -1295.77124, 13.48315}, [6]={1443.60376, -1498.26660, 13.37650}, [7]={1426.37280, -1716.12439, 13.38281}, [8]={1315.06909, -1656.43799, 13.38281}, [9]={1359.06250, -1432.39734, 13.38281}, [10]={1169.82983, -1392.34473, 13.41728}, [11]={930.76508, -1392.92627, 13.26561}, [12]={815.24756, -1317.91345, 13.44460}, [13]={585.04199, -1320.53748, 13.40609}, [14]={526.99365, -1624.20361, 16.63225}, } for i = 1,10 do local row = math.random( 1,14 )--Эта функция-даёт рандомное значение,мне надо использовать её. print( busTable[row][1][14] ) --> 1 или 2 ( случайное значение )-Эта функция только 1 или 14 end Правильно Я понимаю? 3 Факта об идиотах. 1.Хватают факты из воздуха 2.Не могут сказать что-либо ч0тко и понятно 3.Делают себе супер Брутальный ник(:
Kenix Posted February 17, 2012 Posted February 17, 2012 Вы сами не знаете что вы написали ... Рабочий вариант: local busTable = { [1]={2007.65198, -1648.86047, 13.41406}, [2]={1825.22791, -1635.03711, 13.38281}, [3]={1855.01685, -1430.47449, 13.39063}, [4]={1732.81580, -1296.87122, 13.44294}, [5]={1473.19226, -1295.77124, 13.48315}, [6]={1443.60376, -1498.26660, 13.37650}, [7]={1426.37280, -1716.12439, 13.38281}, [8]={1315.06909, -1656.43799, 13.38281}, [9]={1359.06250, -1432.39734, 13.38281}, [10]={1169.82983, -1392.34473, 13.41728}, [11]={930.76508, -1392.92627, 13.26561}, [12]={815.24756, -1317.91345, 13.44460}, [13]={585.04199, -1320.53748, 13.40609}, [14]={526.99365, -1624.20361, 16.63225}, } addEvent( "rob_set_location",true ) addEventHandler( "rob_set_location",root, function ( x, y, z ) local row = math.random( #busTable ) markerrob = createMarker( busTable[ row ][1], busTable[ row ][2], busTable[ row ][3] - 1, "cylinder", 3.5, 255, 0, 0, 170 ) blip = createBlipAttachedTo( markerrob, 32, 2, 0, 0, 0, 117 ) addEventHandler( "onClientMarkerHit",markerrob,onBusStopHit ) end ) Учите Lua viewtopic.php?f=141&t=32458 local busTable = { [1]={2007.65198, -1648.86047, 13.41406}, [2]={1825.22791, -1635.03711, 13.38281}, [3]={1855.01685, -1430.47449, 13.39063}, [4]={1732.81580, -1296.87122, 13.44294}, [5]={1473.19226, -1295.77124, 13.48315}, [6]={1443.60376, -1498.26660, 13.37650}, [7]={1426.37280, -1716.12439, 13.38281}, [8]={1315.06909, -1656.43799, 13.38281}, [9]={1359.06250, -1432.39734, 13.38281}, [10]={1169.82983, -1392.34473, 13.41728}, [11]={930.76508, -1392.92627, 13.26561}, [12]={815.24756, -1317.91345, 13.44460}, [13]={585.04199, -1320.53748, 13.40609}, [14]={526.99365, -1624.20361, 16.63225}, } for i = 1,10 do local row = math.random( 1,14 )--Эта функция-даёт рандомное значение,мне надо использовать её. print( busTable[row][1][14] ) --> 1 или 2 ( случайное значение )-Эта функция только 1 или 14 end Не существует в таблице 14 индекса .. http://vk.com/the_kenix Вопросы задавайте на форуме, не пишите мне в личку. Please don't pm me.
Mc_Trekkie Posted February 17, 2012 Author Posted February 17, 2012 Вы сами не знаете что вы написали ...Рабочий вариант: local busTable = { [1]={2007.65198, -1648.86047, 13.41406}, [2]={1825.22791, -1635.03711, 13.38281}, [3]={1855.01685, -1430.47449, 13.39063}, [4]={1732.81580, -1296.87122, 13.44294}, [5]={1473.19226, -1295.77124, 13.48315}, [6]={1443.60376, -1498.26660, 13.37650}, [7]={1426.37280, -1716.12439, 13.38281}, [8]={1315.06909, -1656.43799, 13.38281}, [9]={1359.06250, -1432.39734, 13.38281}, [10]={1169.82983, -1392.34473, 13.41728}, [11]={930.76508, -1392.92627, 13.26561}, [12]={815.24756, -1317.91345, 13.44460}, [13]={585.04199, -1320.53748, 13.40609}, [14]={526.99365, -1624.20361, 16.63225}, } addEvent( "rob_set_location",true ) addEventHandler( "rob_set_location",root, function ( x, y, z ) local row = math.random( #busTable ) markerrob = createMarker( busTable[ row ][1], busTable[ row ][2], busTable[ row ][3] - 1, "cylinder", 3.5, 255, 0, 0, 170 ) blip = createBlipAttachedTo( markerrob, 32, 2, 0, 0, 0, 117 ) addEventHandler( "onClientMarkerHit",markerrob,onBusStopHit ) end ) Учите Lua viewtopic.php?f=141&t=32458 local busTable = { [1]={2007.65198, -1648.86047, 13.41406}, [2]={1825.22791, -1635.03711, 13.38281}, [3]={1855.01685, -1430.47449, 13.39063}, [4]={1732.81580, -1296.87122, 13.44294}, [5]={1473.19226, -1295.77124, 13.48315}, [6]={1443.60376, -1498.26660, 13.37650}, [7]={1426.37280, -1716.12439, 13.38281}, [8]={1315.06909, -1656.43799, 13.38281}, [9]={1359.06250, -1432.39734, 13.38281}, [10]={1169.82983, -1392.34473, 13.41728}, [11]={930.76508, -1392.92627, 13.26561}, [12]={815.24756, -1317.91345, 13.44460}, [13]={585.04199, -1320.53748, 13.40609}, [14]={526.99365, -1624.20361, 16.63225}, } for i = 1,10 do local row = math.random( 1,14 )--Эта функция-даёт рандомное значение,мне надо использовать её. print( busTable[row][1][14] ) --> 1 или 2 ( случайное значение )-Эта функция только 1 или 14 end Не существует в таблице 14 индекса .. Спасибо,поучу. P.S Всё работает,но,Я спрашивал не только для этого,щас разбираюсь в этом... Вроде вот это local row = math.random( #busTable ) -Достаёт рандомное значение из таблицы busTable,а row это вроде строка?Если так,то-мы извлекаем рандомную строчку из нашей таблицы.Если правильно-пожалуйста,напишите,мне очень важно понять это. P.SS Element маркер и блип не уничтожается,пишет что то с Triggerom triggerServerEvent("rob_finish",client) Вот сервер(Та строка): addEvent("rob_finish",true) addEventHandler("rob_finish",rootElement, P.SSS Сделал так же на ресурсе train,чтобы закрепить... 3 Факта об идиотах. 1.Хватают факты из воздуха 2.Не могут сказать что-либо ч0тко и понятно 3.Делают себе супер Брутальный ник(:
MX_Master Posted February 17, 2012 Posted February 17, 2012 нужно указывать минимум и максимум => курим мануал по луа local row = math.random( 1, #busTable ) в таблице с подтаблицами не надо указывать индексы local busTable = { {2007.65198, -1648.86047, 13.41406}, {1825.22791, -1635.03711, 13.38281}, {1855.01685, -1430.47449, 13.39063}, -- .. } topcnc.ru # vydrenko.ru
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