Stemka Posted December 19, 2013 Share Posted December 19, 2013 Почему объект не удаляется? Вот что пишет дебаг: attemp to index field '?' (a nil value) P.S(3-я строчка в удалении объекта) Вот две функции создания и удаления объекта: function createFire() local x,y,z = unpack ( firePos[math.random(#firePos)]) for i=1, 6 do hx = math.random(-10, 10) + x hy = math.random(-10,10) + y local fireElem = createObject(fireModel,hx,hy,z) setElementCollisionsEnabled(fireElem,false) local col = createColSphere(hx,hy,z+1,2) fires[fireElem] = {fireElem,col} addEventHandler("onColShapeHit",col,setFire) fire = fire +1 outputDebugString ("fire:"..fire) --return fireElem end end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), createFire ) function fireExtinguished(fireElem) triggerEvent("onFireExtinguished",source,fireElem) destroyElement(fires[fireElem][1]) destroyElement(fires[fireElem][2]) fires[fireElem] = nil fire = fire-1 outputDebugString ("fire:"..fire) givePlayerMoney(source,10) if (fire) < 1 then setTimer(createFire, 3000, 1) end end addEvent("fireExtinguished",true) addEventHandler("fireExtinguished",root,fireExtinguished) addEventHandler("onResourceStop",getResourceRootElement(getThisResource()),fireExtinguished) Link to comment
Memory Posted December 19, 2013 Share Posted December 19, 2013 Ошибка в индексе. Попробуй так function createFire() local x,y,z = unpack ( firePos[math.random(#firePos)]) for i=1, 6 do hx = math.random(-10, 10) + x hy = math.random(-10,10) + y local fireElem = createObject(fireModel,hx,hy,z) setElementCollisionsEnabled(fireElem,false) local col = createColSphere(hx,hy,z+1,2) fire = fire +1 fires[fire] = {fireElem,col} addEventHandler("onColShapeHit",col,setFire) outputDebugString ("fire:"..fire) --return fireElem end end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), createFire ) function fireExtinguished(fireElem) triggerEvent("onFireExtinguished",source,fireElem) destroyElement(fires[1]) destroyElement(fires[2]) fires[fire] = nil fire = fire-1 outputDebugString ("fire:"..fire) givePlayerMoney(source,10) if (fire) < 1 then setTimer(createFire, 3000, 1) end end addEvent("fireExtinguished",true) addEventHandler("fireExtinguished",root,fireExtinguished) addEventHandler("onResourceStop",getResourceRootElement(getThisResource()),fireExtinguished) Если не получится, попробуй использовать table.insert, мне как-то раз помогло. Хотя казалось бы действие тоже. Link to comment
Stemka Posted December 20, 2013 Share Posted December 20, 2013 function createExtinguisher(wep,_,_,hitX,hitY,hitZ) if wep ~= 42 then return end for k, v in ipairs(getElementsByType("object",root)) do if getElementModel(v) == 658 then local fX,fY,fZ = getElementPosition(v) local dist = getDistanceBetweenPoints2D(hitX,hitY,fX,fY) if dist < 5 then if not t[v] then t[v] = 0 end if t[v] < 250 then t[v] = t[v] + 1 dxDrawRectangle(sx/2-65, sy - 55, 127, 22, tocolor(0, 0, 0, 150), true) dxDrawRectangle(sx/2-63, sy - 53, t[v]/ 2, 18, tocolor(255, 0, 0, 255), true) else --triggerServerEvent("fireExtinguished",localPlayer,v) t[v] = nil end end end end end addEventHandler("onClientWeaponFire",root,createExtinguisher) Ребят как сделать подобное только для холодного оружия? Ибо onClientWeaponFire на холодное не пашет(( Link to comment
CocaColaBear Posted December 20, 2013 Share Posted December 20, 2013 onClientKey getPedWeapon -- Если объект/игрок/транспорт, то getPedTarget getDistanceBetweenPoints2D -- Иначе processLineOfSight -- вперед на нужную дистанцию Примерно так Link to comment
Stemka Posted December 20, 2013 Share Posted December 20, 2013 onClientKey getPedWeapon -- Если объект/игрок/транспорт, то getPedTarget getDistanceBetweenPoints2D -- Иначе processLineOfSight -- вперед на нужную дистанцию Примерно так а onClientKey разве для 1.3.4? Link to comment
CocaColaBear Posted December 20, 2013 Share Posted December 20, 2013 onClientKey getPedWeapon -- Если объект/игрок/транспорт, то getPedTarget getDistanceBetweenPoints2D -- Иначе processLineOfSight -- вперед на нужную дистанцию Примерно так а onClientKey разве для 1.3.4? Данное событие было приблизительно с 1.1 Link to comment
Stemka Posted December 20, 2013 Share Posted December 20, 2013 Данное событие было приблизительно с 1.1 Действительно не туда посмотрел а можно ваш скайп? Пару вопросов задам буквально, ибо здесь не особо удобно.. Link to comment
CocaColaBear Posted December 20, 2013 Share Posted December 20, 2013 Данное событие было приблизительно с 1.1 Действительно не туда посмотрел а можно ваш скайп? Пару вопросов задам буквально, ибо здесь не особо удобно.. Оффтоп Не использую скайп Link to comment
Stemka Posted December 20, 2013 Share Posted December 20, 2013 Оффтоп Не использую скайп Ответьте в лс пожалуйста Link to comment
nikitafloy Posted December 30, 2013 Share Posted December 30, 2013 Скиньте причины и решения проблем вылетов с сервера MTA. Ото уже бомбит. Игроки сервера не вылетают нифига, а я каждые 5 минут. Link to comment
Narrator Posted December 30, 2013 Share Posted December 30, 2013 nikitafloy, тебе поможет комплект из... И Link to comment
Narrator Posted December 31, 2013 Share Posted December 31, 2013 Народ, я, может туплю, но почему тут: function HealthChekcer () for i,player in pairs( getElementsByType("player") ) do if getElementHealth (player) >= 100 then outputChatBox("!") kickPlayer(player,'2') end end end setTimer ( HealthChekcer, 2000, 0 ) kickPlayer вовзращает nil? Link to comment
Narrator Posted December 31, 2013 Share Posted December 31, 2013 Я затупил и разобрался) Link to comment
BeSS0n Posted January 2, 2014 Share Posted January 2, 2014 Есть ли в МТА возможность сохранения координат игрока/транспорта прямо из игры ?(аналог /save в SA-MP) Link to comment
nikitafloy Posted January 2, 2014 Share Posted January 2, 2014 Есть ли в МТА возможность сохранения координат игрока/транспорта прямо из игры ?(аналог /save в SA-MP) FullSave скрипт. Server: function playerLogin (thePreviousAccount, theCurrentAccount, autoLogin) if not (isGuestAccount (getPlayerAccount (source))) then local accountData = getAccountData (theCurrentAccount, "funmodev2-money") if (accountData) then local playerMoney = getAccountData (theCurrentAccount, "funmodev2-money") local playerSkin = getAccountData (theCurrentAccount, "funmodev2-skin") local playerHealth = getAccountData (theCurrentAccount, "funmodev2-health") local playerArmor = getAccountData (theCurrentAccount, "funmodev2-armor") local R = getAccountData (theCurrentAccount, "funmodev2-R") local G = getAccountData (theCurrentAccount, "funmodev2-G") local B = getAccountData (theCurrentAccount, "funmodev2-B") local playerX = getAccountData (theCurrentAccount, "funmodev2-x") local playerY = getAccountData (theCurrentAccount, "funmodev2-y") local playerZ = getAccountData (theCurrentAccount, "funmodev2-z") local playerInt = getAccountData (theCurrentAccount, "funmodev2-int") local playerDim = getAccountData (theCurrentAccount, "funmodev2-dim") local playerWanted = getAccountData (theCurrentAccount, "funmodev2-wantedlevel") local playerTeam = getAccountData (theCurrentAccount, "funmodev2-Team") local playerWeaponID0 = getAccountData (theCurrentAccount, "funmodev2-weaponID0") local playerWeaponID1 = getAccountData (theCurrentAccount, "funmodev2-weaponID1") local playerWeaponID2 = getAccountData (theCurrentAccount, "funmodev2-weaponID2") local playerWeaponID3 = getAccountData (theCurrentAccount, "funmodev2-weaponID3") local playerWeaponID4 = getAccountData (theCurrentAccount, "funmodev2-weaponID4") local playerWeaponID5 = getAccountData (theCurrentAccount, "funmodev2-weaponID5") local playerWeaponID6 = getAccountData (theCurrentAccount, "funmodev2-weaponID6") local playerWeaponID7 = getAccountData (theCurrentAccount, "funmodev2-weaponID7") local playerWeaponID8 = getAccountData (theCurrentAccount, "funmodev2-weaponID8") local playerWeaponID9 = getAccountData (theCurrentAccount, "funmodev2-weaponID9") local playerWeaponID10 = getAccountData (theCurrentAccount, "funmodev2-weaponID10") local playerWeaponID11 = getAccountData (theCurrentAccount, "funmodev2-weaponID11") local playerWeaponID12 = getAccountData (theCurrentAccount, "funmodev2-weaponID12") local playerWeaponAmmo0 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo0") local playerWeaponAmmo1 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo1") local playerWeaponAmmo2 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo2") local playerWeaponAmmo3 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo3") local playerWeaponAmmo4 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo4") local playerWeaponAmmo5 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo5") local playerWeaponAmmo6 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo6") local playerWeaponAmmo7 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo7") local playerWeaponAmmo8 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo8") local playerWeaponAmmo9 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo9") local playerWeaponAmmo10 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo10") local playerWeaponAmmo11 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo11") local playerWeaponAmmo12 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo12") spawnPlayer (source, playerX, playerY, playerZ +1, 0, playerSkin, playerInt, playerDim) setPlayerMoney (source, playerMoney) setTimer (setElementHealth, 50, 1, source, playerHealth) setTimer (setPedArmor, 50, 1, source, playerArmor) setTimer (setPlayerWantedLevel, 50, 1, source, playerWanted) giveWeapon(source, playerWeaponID0, playerWeaponAmmo0, true) giveWeapon(source, playerWeaponID1, playerWeaponAmmo1, false) giveWeapon(source, playerWeaponID2, playerWeaponAmmo2, false) giveWeapon(source, playerWeaponID3, playerWeaponAmmo3, false) giveWeapon(source, playerWeaponID4, playerWeaponAmmo4, false) giveWeapon(source, playerWeaponID5, playerWeaponAmmo5, false) giveWeapon(source, playerWeaponID6, playerWeaponAmmo6, false) giveWeapon(source, playerWeaponID7, playerWeaponAmmo7, false) giveWeapon(source, playerWeaponID8, playerWeaponAmmo8, false) giveWeapon(source, playerWeaponID9, playerWeaponAmmo9, false) giveWeapon(source, playerWeaponID10, playerWeaponAmmo10, false) giveWeapon(source, playerWeaponID11, playerWeaponAmmo11, false) giveWeapon(source, playerWeaponID12, playerWeaponAmmo12, false) setCameraTarget (source, source) fadeCamera(source, true, 2.0) setPlayerNametagColor (source, R, G, B) else spawnPlayer (source, 1481.0855712891, -1771.2996826172, 18.795753479004, 0,78, 0, 0) setPlayerMoney (source, 200) setCameraTarget (source, source) fadeCamera(source, true, 2.0) setPlayerNametagColor (source, 255, 255, 255) end end end addEventHandler ("onPlayerLogin", getRootElement(), playerLogin) function onLogout () kickPlayer (source, nil, "Logging out is disallowed.") end addEventHandler ("onPlayerLogout", getRootElement(), onLogout) function onQuit (quitType, reason, responsibleElement) if not (isGuestAccount (getPlayerAccount (source))) then account = getPlayerAccount (source) if (account) then local x,y,z = getElementPosition (source) local r,g,b = getPlayerNametagColor (source) setAccountData (account, "funmodev2-money", tostring (getPlayerMoney (source))) setAccountData (account, "funmodev2-skin", tostring (getPedSkin (source))) setAccountData (account, "funmodev2-health", tostring (getElementHealth (source))) setAccountData (account, "funmodev2-armor", tostring (getPedArmor (source))) setAccountData (account, "funmodev2-R", r) setAccountData (account, "funmodev2-G", g) setAccountData (account, "funmodev2-B", b) setAccountData (account, "funmodev2-x", x) setAccountData (account, "funmodev2-y", y) setAccountData (account, "funmodev2-z", z) setAccountData (account, "funmodev2-int", getElementInterior (source)) setAccountData (account, "funmodev2-dim", getElementDimension (source)) setAccountData (account, "funmodev2-wantedlevel", getPlayerWantedLevel (source)) setAccountData (account, "funmodev2-weaponID0", getPedWeapon (source, 0)) setAccountData (account, "funmodev2-weaponID1", getPedWeapon (source, 1)) setAccountData (account, "funmodev2-weaponID2", getPedWeapon (source, 2)) setAccountData (account, "funmodev2-weaponID3", getPedWeapon (source, 3)) setAccountData (account, "funmodev2-weaponID4", getPedWeapon (source, 4)) setAccountData (account, "funmodev2-weaponID5", getPedWeapon (source, 5)) setAccountData (account, "funmodev2-weaponID6", getPedWeapon (source, 6)) setAccountData (account, "funmodev2-weaponID7", getPedWeapon (source, 7)) setAccountData (account, "funmodev2-weaponID8", getPedWeapon (source, -- s8) -->) setAccountData (account, "funmodev2-weaponID9", getPedWeapon (source, 9)) setAccountData (account, "funmodev2-weaponID10", getPedWeapon (source, 10)) setAccountData (account, "funmodev2-weaponID11", getPedWeapon (source, 11)) setAccountData (account, "funmodev2-weaponID12", getPedWeapon (source, 12)) setAccountData (account, "funmodev2-weaponAmmo0", getPedTotalAmmo (source, 0)) setAccountData (account, "funmodev2-weaponAmmo1", getPedTotalAmmo (source, 1)) setAccountData (account, "funmodev2-weaponAmmo2", getPedTotalAmmo (source, 2)) setAccountData (account, "funmodev2-weaponAmmo3", getPedTotalAmmo (source, 3)) setAccountData (account, "funmodev2-weaponAmmo4", getPedTotalAmmo (source, 4)) setAccountData (account, "funmodev2-weaponAmmo5", getPedTotalAmmo (source, 5)) setAccountData (account, "funmodev2-weaponAmmo6", getPedTotalAmmo (source, 6)) setAccountData (account, "funmodev2-weaponAmmo7", getPedTotalAmmo (source, 7)) setAccountData (account, "funmodev2-weaponAmmo8", getPedTotalAmmo (source, -- s8) -->) setAccountData (account, "funmodev2-weaponAmmo9", getPedTotalAmmo (source, 9)) setAccountData (account, "funmodev2-weaponAmmo10", getPedTotalAmmo (source, 10)) setAccountData (account, "funmodev2-weaponAmmo11", getPedTotalAmmo (source, 11)) setAccountData (account, "funmodev2-weaponAmmo12", getPedTotalAmmo (source, 12)) end end end addEventHandler ("onPlayerQuit", getRootElement(), onQuit) function onWasted(totalAmmo, killer, killerWeapon, bodypart, stealth) if not( isGuestAccount (getPlayerAccount(source)) ) then local theWeapon = getPedWeapon (source) local weaponAmmo = getPedTotalAmmo (source) fadeCamera (source, false) setTimer (spawnPlayer, 1000, 1, source, 2036.1735839844, -1413.0563964844, 16.9921875, 0, getPedSkin (source), 0, 0, getPlayerTeam(source)) setTimer (setCameraTarget, 1250, 1, source, source) setTimer (fadeCamera, 2000, 1, source, true) setTimer (giveWeapon, 2000, 1, source, theWeapon, weaponAmmo, true) end end addEventHandler ("onPlayerWasted", getRootElement(), onWasted) --- function setTeam() local account = getPlayerAccount(source) -- gets players account local team = getAccountData (account, "team") -- gets players team if (team) and getTeamFromName(team) then setPlayerTeam(source, getTeamFromName(team)) -- sets players team end end addEventHandler("onPlayerLogin",root,setTeam) -- sets players team on login function save() local team = getPlayerTeam(source) -- Gets the players team local account = getPlayerAccount(source) if (team) and not isGuestAccount(account) then -- Checks to see if the player is a guest or not setAccountData(account, "team", getTeamName(team)) --saves team end end addEventHandler("onPlayerQuit", getRootElement(), save) -- saves team on quit Link to comment
TheNormalnij Posted January 2, 2014 Share Posted January 2, 2014 nikitafloy, дай мне координаты того чувака, который это написал. Я приду и убью его. Есть ли в МТА возможность сохранения координат игрока/транспорта прямо из игры ?(аналог /save в SA-MP) Пишите простенький скрипт с биндом на клавишу. 5 строк кода лень написать? Link to comment
BeSS0n Posted January 3, 2014 Share Posted January 3, 2014 nikitafloy, дай мне координаты того чувака, который это написал. Я приду и убью его.Есть ли в МТА возможность сохранения координат игрока/транспорта прямо из игры ?(аналог /save в SA-MP) Пишите простенький скрипт с биндом на клавишу. 5 строк кода лень написать? Я хотел попробовать, на вики искал статьи про работу с файлами, но нашёл только про XML, но думаю лучше с простыми файлами работать... Link to comment
Kernell Posted January 3, 2014 Share Posted January 3, 2014 Я хотел попробовать, на вики искал статьи про работу с файлами, но нашёл только про XML, но думаю лучше с простыми файлами работать... https://wiki.multitheftauto.com/wiki/Se ... _functions Поражаюсь, насколько все стали ленивы. Заходите на главную страницу, в меню кликаете на Server Functions, все функции перед тобой. Даже по категориям разбиты! Link to comment
FranklinRoosevelt Posted January 5, 2014 Share Posted January 5, 2014 (edited) Люди помогите понять структуру скриптов, я вроде уже все по чучуть понял, но путаюсь с агрументами в скобках возле функции (выделил): function playerDied[u][b](totalAmmo, killer, killerWeapon, bodypart)[/b][/u] outputChatBox(getPlayerName(source).." умер!") end addEventHandler("onPlayerWasted",getRootElement(),playerDied) объясните кому не лень просто и ясно что за что отвечает и когда оно нужно когда нет, желательно на каком-то ясном примере, буду очень признателен. Кидать ссылки на мта-вики и уроки lua не надо, а хотя если есть очень толковый туториал давайте Edited April 21, 2015 by Guest Link to comment
KruTolic_rus Posted January 5, 2014 Share Posted January 5, 2014 Люди помогите понять структуру скриптов, я вроде уже все по чучуть понял, но путаюсь с агрументами в скобках возле функции (выделил): function playerDied[u][b](totalAmmo, killer, killerWeapon, bodypart)[/b][/u] outputChatBox(getPlayerName(source).." умер!") end addEventHandler("onPlayerWasted",getRootElement(),playerDied) объясните кому не лень просто и ясно что за что отвечает и когда оно нужно когда нет, желательно на каком-то ясном примере, буду очень признателен. Кидать ссылки на мта-вики и уроки lua не надо, а хотя если есть очень толковый туториал давайте (totalAmmo, killer, killerWeapon, bodypart) --- спешлы которые можно использовать,если те есть в addEventHandler эвенте(событии) https://wiki.multitheftauto.com/wiki/OnPlayerWasted -- почитай,поймешь что за что отвечает.В каждом событии РАЗНЫЕ спешлы и они идут по порядку!!! Если первое,это Игрок,значит будь он source,будь он thePlayer или ped,и даже weapon это будет Игрок! Ты задаешь лишь название к спешлу который привязан к событию Link to comment
Elengar Posted January 5, 2014 Share Posted January 5, 2014 Люди помогите понять структуру скриптов, я вроде уже все по чучуть понял, но путаюсь с агрументами в скобках возле функции (выделил): function playerDied[u][b](totalAmmo, killer, killerWeapon, bodypart)[/b][/u] outputChatBox(getPlayerName(source).." умер!") end addEventHandler("onPlayerWasted",getRootElement(),playerDied) объясните кому не лень просто и ясно что за что отвечает и когда оно нужно когда нет, желательно на каком-то ясном примере, буду очень признателен. Кидать ссылки на мта-вики и уроки lua не надо, а хотя если есть очень толковый туториал давайте Тебе как раз и нужно накидать ссылок на МТА-вики и на доки по Lua . Учится по своим догадкам не очень хорошо. Link to comment
Denil Posted January 7, 2014 Share Posted January 7, 2014 Можете подсказать скрипт для замены машин с мульти-текстурами т.п hotknife.txd hotknife1.txd ... а то мой скрипт отображает только hotknife.txd Link to comment
STAWR Posted January 8, 2014 Share Posted January 8, 2014 когда выйдет 1.3.5 или 1.4? Link to comment
Other Languages Moderators Disinterpreter Posted January 8, 2014 Other Languages Moderators Share Posted January 8, 2014 когда выйдет 1.3.5 или 1.4? 1.3.5 - В этом месяце обещают. 1.4 - примрено в 2015 Link to comment
Mephistos Posted January 11, 2014 Share Posted January 11, 2014 Не запускается клиент МТА на ноуте(Win 8.1), никаких ошибок не выдает. Сама ГТА работает. Может есть какие-нибудь предположения? 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