MRmihailZH

Members
  • Content Count

    27
  • Joined

  • Last visited

Community Reputation

0 Neutral

About MRmihailZH

  • Rank
    Advanced Member

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Допустим я загрузил свои фракции и засунул их в глобальную fractions={} function loadFractions () local root = xmlLoadFile ("fractions.xml") local fractionroot = xmlFindChild (root,"fractionsactiones",0) if (fractionroot) then for i,v in ipairs (xmlNodeGetChildren(fractionroot)) do local name = xmlNodeGetAttribute (v,"name") local num = tonumber(xmlNodeGetAttribute (v,"num")) local rang1 = xmlNodeGetAttribute (v,"rang1") local rang2 = xmlNodeGetAttribute (v,"rang2") local rang3 = xmlNodeGetAttribute (v,"rang3") local rang4 = xmlNodeGetAttribute (v,"rang4") local rang5 = xmlNodeGetAttribute (v,"rang5") local rang6 = xmlNodeGetAttribute (v,"rang6") local rang7 = xmlNodeGetAttribute (v,"rang7") local rang8 = xmlNodeGetAttribute (v,"rang8") local rang9 = xmlNodeGetAttribute (v,"rang9") local rang10 = xmlNodeGetAttribute (v,"rang10") local skin1 = tonumber(xmlNodeGetAttribute (v,"skin1")) local skin2 = tonumber(xmlNodeGetAttribute (v,"skin2")) local skin3 = tonumber(xmlNodeGetAttribute (v,"skin3")) local skin4 = tonumber(xmlNodeGetAttribute (v,"skin4")) local skin5 = tonumber(xmlNodeGetAttribute (v,"skin5")) local skin6 = tonumber(xmlNodeGetAttribute (v,"skin6")) local skin7 = tonumber(xmlNodeGetAttribute (v,"skin7")) local skin8 = tonumber(xmlNodeGetAttribute (v,"skin8")) local skin9 = tonumber(xmlNodeGetAttribute (v,"skin9")) local skin10 = tonumber(xmlNodeGetAttribute (v,"skin10")) fractions[i]={name,num,rang1,rang2,rang3,rang4,rang5,rang6,rang7,rang8,rang9,rang10,skin1,skin2,skin3,skin4,skin5,skin6,skin7,skin8,skin9,skin10} end end end addEventHandler ( "onResourceStart", getResourceRootElement(), loadFractions ) И хочу с помощью таких функций, командой, сделать игроку скин, который находиться в глобальной function getFractionInfo ( fract, inf ) return fractions[fract][inf] end setElementModel ( player, getFractionInfo(tonumber(fraction), 22) ) 22(это skin10) Но выходит ошибка: " attemp to index field '?' <a nil value> " в функции getFractionInfo. Заранее спасибо
  2. Благодарю за помощь.
  3. Не, нормально все в самом скрипте, просто не дописал скобку внизу
  4. Вообщем, у меня все работает, НО, когда задаю элементу ключ, и потом использую getElementData выходит ошибка в консоле "attemp to compare number with string", и соответственно скрипт не работает. Вот скрипт которым я задаю ключ: function giveadm (source, command, ident, lvl) if(getElementData(source,"admlvl") > 8) then if (ident) then for id, player in ipairs ( getElementsByType ( "player" ) ) do if ( tonumber(getElementData ( player, "ID" )) == tonumber(ident) ) then local thePlayer = getAccountName (getPlayerAccount(player)) if lvl then if((tonumber(lvl) > -1) and (tonumber(lvl) < 11))then local RootNode = xmlLoadFile ( "Accounts/"..thePlayer..".xml" ) local playeradmlvl = xmlFindChild ( RootNode, "admlvl", 0 ) local valueadmlvl = xmlNodeSetValue ( playeradmlvl, lvl.."" ) local serial = xmlNodeGetValue ( xmlFindChild (RootNode, "serial", 0) ) xmlSaveFile(RootNode) xmlUnloadFile(RootNode) outputChatBox("* Вы выдали "..lvl.." уровень администратирования игроку "..thePlayer..".", source, 255, 215, 0, true) setElementData ( player, "admlvl", lvl ) else outputChatBox("* неверный уровень администратирования", source, 255, 215, 0, true) end else outputChatBox("* /makeadmin [id] [0-10]", source, 255, 215, 0, true) end end end else outputChatBox ("* /makeadmin [id] [0-10]", source, 255, 215, 0, true) end else outputChatBox ("* У Вас нет доступа.", source, 255, 215, 0, true) end end addCommandHandler ("makeadmin", giveadm) Дальше, если я буду использовать скрипты, у меня будет ошибка в строчке: " if(getElementData(source,"admlvl") > 8 then ". Заранее спасибо!
  5. Какой функцией можно узнать какой элемент стоит в центре экрана, и узнать его положение?
  6. Дополню, вот скрипт ID системы: exports [ "scoreboard" ]:addScoreboardColumn ( "ID", 2 ) local player_ID = {} function getRowInex (login) for _, player in ipairs (getElementsByType("player")) do for i, data in ipairs (player_ID) do if data[2] == login then return i end end end return false end function getRowFree () for i, data in ipairs (player_ID) do if data[2] == "" then return data[1] end end local new_ID = #player_ID + 1 table.insert(player_ID, new_ID, {new_ID, ""}) return new_ID end function createAllNumbers () for i = 1, 200 do table.insert(player_ID, i, {i, ""}) end for i, player in ipairs (getElementsByType("player")) do local index = tonumber(getElementData(player, "ID")) if index then rawset(player_ID, index, {index, getAccountName(getPlayerAccount(player))}) else local index = getRowFree () rawset(player_ID, index, {index, getAccountName(getPlayerAccount(player))}) setElementData(player, "ID", index) end end end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), createAllNumbers) function onPlayerLogin (_, account) local index = getRowFree () rawset(player_ID, index, {index, getAccountName(account)}) setElementData(source, "ID", index) end addEventHandler("onPlayerLogin", getRootElement(), onPlayerLogin) function onPlayerQuit () local index = getRowInex (getAccountName(getPlayerAccount(source))) rawset(player_ID, index, {index, ""}) end addEventHandler("onPlayerQuit", getRootElement(), onPlayerQuit) А вот скрипт, который я хочу использовать: function giveadm (source, command, ident, lvl) if(getElementData(source,"admlvl") > 8) then if (ident) then for id, player in ipairs ( getElementsByType ( "player" ) ) do if ( tonumber(getElementData ( player, "ID" )) == tonumber(ident) ) then if lvl then if((tonumber(lvl) > -1) and (tonumber(lvl) < 11))then local RootNode = xmlLoadFile ( "Accounts/"..player..".xml" ) local playeradmlvl = xmlFindChild ( RootNode, "admlvl", 0 ) local valueadmlvl = xmlNodeSetValue ( playeradmlvl, lvl.."" ) setElementData ( player, "admlvl", lvl ) xmlSaveFile(RootNode) xmlUnloadFile(RootNode) outputChatBox("* Вы выдали "..lvl.." уровень администратирования игроку "..player..".", source, 255, 215, 0, true) else outputChatBox("* неверный уровень администратирования", source,255, 215, 0, true) end else outputChatBox("* /makeadmin [id] [0-10]", source,255, 215, 0, true) end end end else outputChatBox ("*/makeadmin [id] [0-10]", source,255, 215, 0, true) end else outputChatBox ("*Вы не имеете доступ", source,255, 215, 0, true) end end addCommandHandler ("makeadmin", giveadm) Ошибка в RootNode, когда он загружает мой xml файл в аргументе ..player..
  7. У меня вопрос, как правильно пользоваться системой ID? У меня она есть, работает, но как взаимодействовать с другими скриптами через elementData? Заранее спасибо.
  8. У меня есть dff, col и txd файл, я заменил объект который мне нужен, коллизия появляется, но dff появляется только если в Мап Едиторе найти этот объект и посмотреть на него, а если просто dff не появляется. Заранее спасибо!
  9. Не работает скрипт, он делает только одну функцию где fraction равен 1 function makeleader ( source, commandName, accName, fraction ) local accountName = getAccountName ( getPlayerAccount ( source ) ) if isObjectInACLGroup ("user."..accountName, aclGetGroup ( "Admin" ) ) then if accName then if fraction ~= 1 then aclGroupAddObject (aclGetGroup("leaderLSPD"), "user."..accName) aclGroupAddObject (aclGetGroup("leaders"), "user."..accName) aclGroupAddObject (aclGetGroup("LSPD"), "user."..accName) elseif fraction ~= 2 then aclGroupAddObject (aclGetGroup("leaderLVPD"), "user."..accName) aclGroupAddObject (aclGetGroup("leaders"), "user."..accName) aclGroupAddObject (aclGetGroup("LVPD"), "user."..accName) elseif fraction ~= 3 then aclGroupAddObject (aclGetGroup("leaderSFPD"), "user."..accName) aclGroupAddObject (aclGetGroup("leaders"), "user."..accName) aclGroupAddObject (aclGetGroup("SFPD"), "user."..accName) elseif fraction ~= 0 then aclGroupRemoveObject (aclGetGroup("leaderLVPD"), "user."..accName) aclGroupRemoveObject (aclGetGroup("leaderSFPD"), "user."..accName) aclGroupRemoveObject (aclGetGroup("leaderLSPD"), "user."..accName) aclGroupRemoveObject (aclGetGroup("leaders"), "user."..accName) aclGroupRemoveObject (aclGetGroup("LVPD"), "user."..accName) aclGroupRemoveObject (aclGetGroup("SFPD"), "user."..accName) aclGroupRemoveObject (aclGetGroup("LSPD"), "user."..accName) end end end end addCommandHandler("makeleader", makeleader)
  10. https://dev.prineside.com/ru/gtasa_samp_model_id/model/6959-vegasNbball1/ На ссылке есть его .txd файл
  11. Как функция отвечает, за то чтобы открыть ворота, если ты посигналишь, и чтобы открыть могла определенная машина?
  12. Всем привет, я хочу поставить ограничение для moveObject, т.к. если активировать данный код и пока двигается объект, снова активировать код, то он уже заходит за рамки мне нужного, мне нужно чтобы объект двигался не больше не меньше определенного значения. Не умею объяснять, но надеюсь поняли shlagLSPD = createObject(968, 1544.6999511719, -1630.9000244141, 13.10000038147, 0, 270, 270) --Создаем объект gateLSPD = false --Ставим значение gate на false function openshlagbaum (source) local accName = getAccountName ( getPlayerAccount ( source ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "LSPD" ) ) then -- Если игрок в этой группе то делает следующее x, y, z = getElementPosition ( source ) if getDistanceBetweenPoints3D ( x, y, z, 1544.24707, -1631.90906, 13.38281 ) <= 2 then -- Если расстояние между игроком и объектом меньше 2 то делает следующее if gateLSPD == false then -- Если значение gate false, то поднимает объект moveObject ( shlagLSPD, 2000, 1544.6999511719, -1630.9000244141, 13.10000038147, 0, 80, 0 ) gateLSPD = true -- Делает значение gate на true else -- Если значение gate true то делает следующее moveObject ( shlagLSPD, 2000, 1544.6999511719, -1630.9000244141, 13.10000038147, 0, -80, 0, "OutBounce" ) gateLSPD = false -- Делает значение gate на false end end else -- Если игрока нет в группе outputChatBox("*У Вас нет доступа", source, 255, 255, 0) end end addCommandHandler ("gate", openshlagbaum) Заранее спасибо
  13. function makeleader ( source, commandName, accountName, fraction ) local accName = getAccountName ( getPlayerAccount ( source ) ) --Проверяем администратор ли игрок if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then --Проверяем введен ли ник аккаунта if accountName then local fraction = 0, 1, 2, 3 --Проверяем введена ли номер фракции if fraction then --Если введена 1 фракция if fraction == 1 then aclGroupAddObject (aclGetGroup("leaderLSPD"), "user."..accountName) aclGroupAddObject (aclGetGroup("leaders"), "user."..accountName) aclGroupAddObject (aclGetGroup("LSPD"), "user."..accountName) --Если введена 2 фракция elseif fraction == 2 then aclGroupAddObject (aclGetGroup("leaderLVPD"), "user."..accountName) aclGroupAddObject (aclGetGroup("leaders"), "user."..accountName) aclGroupAddObject (aclGetGroup("LVPD"), "user."..accountName) --Если введена 3 фракция elseif fraction == 3 then aclGroupAddObject (aclGetGroup("leaderSFPD"), "user."..accountName) aclGroupAddObject (aclGetGroup("leaders"), "user."..accountName) aclGroupAddObject (aclGetGroup("SFPD"), "user."..accountName) --Если введена 0 фракция elseif fraction == 0 then aclGroupRemoveObject (aclGetGroup("leaderLVPD"), "user."..accountName) aclGroupRemoveObject (aclGetGroup("leaderSFPD"), "user."..accountName) aclGroupRemoveObject (aclGetGroup("leaderLSPD"), "user."..accountName) aclGroupRemoveObject (aclGetGroup("leaders"), "user."..accountName) aclGroupRemoveObject (aclGetGroup("LVPD"), "user."..accountName) aclGroupRemoveObject (aclGetGroup("SFPD"), "user."..accountName) aclGroupRemoveObject (aclGetGroup("LSPD"), "user."..accountName) else --Если такой фракции не существует outputChatBox ("*Такой фракции не существует", source, 255, 0, 0) end end end else --Если ты не администратор outputChatBox("*У Вас нет доступа", source, 255, 255, 0) end end addCommandHandler("makeleader", makeleader) Подправил
  14. Табулировать? Это как?
  15. Опять я Вообщем, я хочу чтобы у меня было примерно так: /makeleader ник и номер фракции, чтобы добавляло в ACL группу, а если 0 то удаляло. Вроде написал, но не работает. function makeleader ( source, commandName, accountName, fraction ) local accName = getAccountName ( getPlayerAccount ( source ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then if accountName then local fraction = 0, 1, 2, 3 if fraction then if fraction == 1 then aclGroupAddObject (aclGetGroup("leaderLSPD"), "user."..accountName) aclGroupAddObject (aclGetGroup("leaders"), "user."..accountName) aclGroupAddObject (aclGetGroup("LSPD"), "user."..accountName) elseif fraction == 2 then aclGroupAddObject (aclGetGroup("leaderLVPD"), "user."..accountName) aclGroupAddObject (aclGetGroup("leaders"), "user."..accountName) aclGroupAddObject (aclGetGroup("LVPD"), "user."..accountName) elseif fraction == 3 then aclGroupAddObject (aclGetGroup("leaderSFPD"), "user."..accountName) aclGroupAddObject (aclGetGroup("leaders"), "user."..accountName) aclGroupAddObject (aclGetGroup("SFPD"), "user."..accountName) elseif fraction == 0 then aclGroupRemoveObject (aclGetGroup("leaderLVPD"), "user."..accountName) aclGroupRemoveObject (aclGetGroup("leaderSFPD"), "user."..accountName) aclGroupRemoveObject (aclGetGroup("leaderLSPD"), "user."..accountName) aclGroupRemoveObject (aclGetGroup("leaders"), "user."..accountName) aclGroupRemoveObject (aclGetGroup("LVPD"), "user."..accountName) aclGroupRemoveObject (aclGetGroup("SFPD"), "user."..accountName) aclGroupRemoveObject (aclGetGroup("LSPD"), "user."..accountName) else outputChatBox ("*Такой фракции не существует", source, 255, 0, 0) end end end else outputChatBox("*У Вас нет доступа", source, 255, 255, 0) end end addCommandHandler("makeleader", makeleader)