TwiX! Posted May 11, 2012 Share Posted May 11, 2012 Ну допустим у объекта может быть динамическое имя?Тоесть допустим с помощью команды /lo игрок создает объект какой-то. А имя объекта будет object[playername], playername это типа текст ника игрока, ну строковая переменная вобщем. Ну вот можно же вроде таким образом имена переменным задавать? зачем тебе этот геморой? Link to comment
Flaker Posted May 11, 2012 Share Posted May 11, 2012 Этот геморой мне для того, что бы значение какой либо переменной для каждого игрока было разным. Вот наткнулся какрас на скрипт нивидимости, там переменная iv использовалась как проверка, невидим ли игрок? Но так как скипт выполняется на серверной стороне, для всех игроков сервера, переменная принимала одно и тоже значение. В ниже указанном топике, Castillo исправил эту проблемму, с помощью использования в названии переменной, элемент игрока. ( iv [ thePlayer ] = 1) https://forum.multitheftauto.com/viewtopic.php?f=91&t=43217&p=435847&hilit=invisible#p435847 (2 пост) Link to comment
Kernell Posted May 11, 2012 Share Posted May 11, 2012 Вы вообще с Lua знакомы? Такое ощущение что нет. iv - это таблица. в качестве ключа он использовал игроков (thePlayer), операторы [ и ] используются для доступа к индексам таблиц. Конечно в качестве ключа вы можете использовать всё что угодно (кроме nil). TwiX!, ответ прямо в стиле мх мастера, где вместо того чтобы помочь он задаёт странные вопросы и/или пытается отговорить от идеи своими советами. Link to comment
Flaker Posted May 11, 2012 Share Posted May 11, 2012 Понял, спасибо) С Lua вот знакомлюсь понемногу. Вобще дело в том, что Lua, по сути, мой первый язык програмирования. Раньше только в школе на информатике Visual Basic немного изучал. Link to comment
Flaker Posted May 12, 2012 Share Posted May 12, 2012 Как добавить в конец таблицы, строку из нескольких значений. Что бы таблица получалась примерно такого вида: local t = { {1, "lol"}; } Link to comment
_Vincent_ Posted May 12, 2012 Share Posted May 12, 2012 http://lua.ru/doc/5.5.html это? Link to comment
Flaker Posted May 12, 2012 Share Posted May 12, 2012 Уже был там, и не только... Я просто не понял как с помощью table.insert (table, [pos,] value) Вставить несколько значений именно в одну строку, причем в самый конец таблицы. Link to comment
Kenix Posted May 12, 2012 Share Posted May 12, 2012 Вставить несколько значений именно в одну строку, причем в самый конец таблицы. Непонял. Link to comment
Flaker Posted May 12, 2012 Share Posted May 12, 2012 Ну короче, как мне вставить несколько значений, в одну строку таблицы? Если я пишу так: table.insert (my_table, 1, 1) то таблица будет такая: local my_table = { {1}; } Правильно? A если я напишу так: table.insert (my_table, 1, 1, "one") то будет ли таблица такая?: local my_table = { {1, "one"}; --Вобщем в эту строчку добавлять колонки я незнаю как с помощью table.insert } Link to comment
Flaker Posted May 12, 2012 Share Posted May 12, 2012 В воо, может вот так?: table.insert ( table, { 1, "Valera", "Trololo", } ) Link to comment
Flaker Posted May 12, 2012 Share Posted May 12, 2012 1) Как узнать какой игрок стреляет по машине? 2) Eсли с помощью table.remove удалить первую строку в таблице, то вторая сдвинется на место первой, да? Link to comment
lcd1232 Posted May 12, 2012 Share Posted May 12, 2012 Написал мини ресурс, который делает перезарядку если не полный магазин. При перезарядки в консоли пишет следующее: WARNING: [gameplay]\reload\reload.lua:22: Bad argument @ 'getPedStat' Server Side function forceReload(p) reloadPedWeapon (p) end addCommandHandler("Reload weapon",forceReload) function bindPlayerReloadKey(p) bindKey(p,"r","down","Reload weapon") end function bindReloadForAllPlayers() for k,v in ipairs(getElementsByType("player")) do bindPlayerReloadKey(v) end end --addEventHandler("onResourceStart",getResourceRootElement(),bindReloadForAllPlayers) -- Enable when issue 4532 is fixed --Please remove the following when issue 4532 is fixt: addEvent("onPlayerReload",true) addEventHandler("onPlayerReload",getRootElement(), function() if getPedStat(source)==1000 then lvl="pro" else lvl="std" end if getWeaponProperty(getPedWeapon(source),lvl,"maximum_clip_ammo")>getPedAmmoInClip(source) then reloadPedWeapon (source) end end ) Client Side addCommandHandler("Reload weapon", function() triggerServerEvent("onPlayerReload",getLocalPlayer()) end ) bindKey("r","down","Reload weapon") Вопросы следующие: 1) сильная будет ли нагрузка на сервер? 2) какая команда для писания в чат? 3) важная ли это ошибка или нет? Link to comment
lcd1232 Posted May 12, 2012 Share Posted May 12, 2012 2) Eсли с помощью table.remove удалить первую строку в таблице, то вторая сдвинется на место первой, да?Да Link to comment
Flaker Posted May 12, 2012 Share Posted May 12, 2012 У тебя не указанно какой Ped Stat ты хочешь получить. у getPedStat есть 2 аргумента: стат и ped (у которого ты хочешь получить стат) На wiki вобщем глянь... float getPedStat ( ped thePed, int stat ) Кстати, если я не ошибаюсь, скрипт на перезарядку есть в стандартных ресурсах Link to comment
lcd1232 Posted May 12, 2012 Share Posted May 12, 2012 Кстати, если я не ошибаюсь, скрипт на перезарядку есть в стандартных ресурсах Да, но мне свой подойдет. Еще вопрос: как поменять скорость времени? т.е. чтобы 1 минута на часах бежала не 1 секунду , а n секунд? Link to comment
562141 Posted May 13, 2012 Share Posted May 13, 2012 Всем привет ! явот хочу сделать спавн менеджер и хочу узнать если я сделаю в гридлисте вкладку админ то как сделать так чтоб спавнились только админы а другие игроки не могли Link to comment
Scripting Moderators Sarrum Posted May 13, 2012 Scripting Moderators Share Posted May 13, 2012 isObjectInACLGroup Link to comment
Flaker Posted May 13, 2012 Share Posted May 13, 2012 Всем привет ! явот хочу сделать спавн менеджер и хочу узнать если я сделаю в гридлисте вкладку админ то как сделать так чтоб спавнились только админы а другие игроки не могли Либо так: bool hasObjectPermissionTo ( string / element theObject, string theAction [, bool defaultPermission = true ] ) Link to comment
562141 Posted May 13, 2012 Share Posted May 13, 2012 ето хорошо теперь одна проблнма )))) Link to comment
562141 Posted May 13, 2012 Share Posted May 13, 2012 Вот что хотел спросить у меня чтото не пашет что я нитак делаю ??? addEventHandler("onPlayerLogin", function() spawnPlayer ( thePlayer, 1000, 1000, 1000, 90, 650 ) ) then local accName = getAccountName ( getPlayerAccount ( thePlayer ) ) -- get his account name if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then outputChatBox( "Admin", 255, 255, 0) local serverDisplay = textCreateDisplay() -- create a text display textDisplayAddObserver ( serverDisplay, player ) -- make it visible to a player local serverText = textCreateTextItem ( "Вы админ и будите телепортированы на админ базу втечении 3-х секунд", 0.5, 0.5 ) -- create a text item for the display textDisplayAddText ( serverDisplay, serverText ) setTimer ( spawnPlayer, 3000, 1, source, 0, -1572.01, 662.46, 7.18 ) end ) Link to comment
lcd1232 Posted May 14, 2012 Share Posted May 14, 2012 spawnPlayer ( thePlayer, 1000, 1000, 1000, 90, 650 ) ) then где if? if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then вижу 1 end, хотя должно быть 3. И зачем таймер кидать в функцию? И /debugscript 3 в помощь Link to comment
562141 Posted May 14, 2012 Share Posted May 14, 2012 Прошу прощения! Я перепутал скрипты ! Подскажите пожалуйста как сделать так чтоб все игроки спавнились в одном месте но после того как игрок спавнился ( если он админ то его варпает на другое место) Link to comment
Flaker Posted May 14, 2012 Share Posted May 14, 2012 Попробуй: AdminSpawnTimer = {} addEventHandler("onPlayerLogin", root, function() local posX = -1572.01 local posY = 662.46 local posZ = 7.18 local rotation = 0 local skin = 11 spawnPlayer ( source, posX, posY, posZ, rotation, skin ) local accName = getAccountName ( getPlayerAccount ( source ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then local serverDisplay = textCreateDisplay() textDisplayAddObserver ( serverDisplay, source ) local serverText = textCreateTextItem ( "Вы являетесь админом и поэтому будете телепортированы на админ базу в течение 3-х секунд", 0.5, 0.5 ) textDisplayAddText ( serverDisplay, serverText ) local nick = getPlayerName (source) adminTimer[nick] = setTimer ( setAdminPos, 3000, 1, source) end end ) function setAdminPos( thePlayer ) local posX = -1572.01 local posY = 662.46 local posZ = 7.18 setElementPosition ( thePlayer, posX, posY, posZ ,true) killTimer ( adminTimer[nick] ) 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