[EFO]Kesha_F1

Вопросы и ответы по MTA.

Recommended Posts

Почему объект не удаляется? Вот что пишет дебаг: 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) 

Share this post


Link to post

Ошибка в индексе. Попробуй так

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, мне как-то раз помогло. Хотя казалось бы действие тоже.

Share this post


Link to post
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 на холодное не пашет((

Share this post


Link to post
  
onClientKey 
getPedWeapon 
-- Если объект/игрок/транспорт, то 
getPedTarget 
getDistanceBetweenPoints2D 
-- Иначе 
processLineOfSight -- вперед на нужную дистанцию 
  

Примерно так

Share this post


Link to post
  
onClientKey 
getPedWeapon 
-- Если объект/игрок/транспорт, то 
getPedTarget 
getDistanceBetweenPoints2D 
-- Иначе 
processLineOfSight -- вперед на нужную дистанцию 
  

Примерно так

а onClientKey разве для 1.3.4?

Share this post


Link to post
  
onClientKey 
getPedWeapon 
-- Если объект/игрок/транспорт, то 
getPedTarget 
getDistanceBetweenPoints2D 
-- Иначе 
processLineOfSight -- вперед на нужную дистанцию 
  

Примерно так

а onClientKey разве для 1.3.4?

Данное событие было приблизительно с 1.1

Share this post


Link to post

Данное событие было приблизительно с 1.1

Действительно :) не туда посмотрел:)

а можно ваш скайп? Пару вопросов задам буквально, ибо здесь не особо удобно..

Share this post


Link to post

Данное событие было приблизительно с 1.1

Действительно :) не туда посмотрел:)

а можно ваш скайп? Пару вопросов задам буквально, ибо здесь не особо удобно..

Оффтоп

Не использую скайп

Share this post


Link to post

Оффтоп

Не использую скайп

Ответьте в лс пожалуйста

Share this post


Link to post

Скиньте причины и решения проблем вылетов с сервера MTA. Ото уже бомбит. Игроки сервера не вылетают нифига, а я каждые 5 минут.

Share this post


Link to post

Народ, я, может туплю, но почему тут:

  
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?

Share this post


Link to post

Есть ли в МТА возможность сохранения координат игрока/транспорта прямо из игры ?(аналог /save в SA-MP)

Share this post


Link to post
Есть ли в МТА возможность сохранения координат игрока/транспорта прямо из игры ?(аналог /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 
  

Share this post


Link to post

nikitafloy, дай мне координаты того чувака, который это написал. Я приду и убью его.

Есть ли в МТА возможность сохранения координат игрока/транспорта прямо из игры ?(аналог /save в SA-MP)

Пишите простенький скрипт с биндом на клавишу. 5 строк кода лень написать?

Share this post


Link to post
nikitafloy, дай мне координаты того чувака, который это написал. Я приду и убью его.
Есть ли в МТА возможность сохранения координат игрока/транспорта прямо из игры ?(аналог /save в SA-MP)

Пишите простенький скрипт с биндом на клавишу. 5 строк кода лень написать?

Я хотел попробовать, на вики искал статьи про работу с файлами, но нашёл только про XML, но думаю лучше с простыми файлами работать...

Share this post


Link to post
Я хотел попробовать, на вики искал статьи про работу с файлами, но нашёл только про XML, но думаю лучше с простыми файлами работать...

https://wiki.multitheftauto.com/wiki/Se ... _functions

Поражаюсь, насколько все стали ленивы. Заходите на главную страницу, в меню кликаете на Server Functions, все функции перед тобой. Даже по категориям разбиты!

Share this post


Link to post

Люди помогите понять структуру скриптов, я вроде уже все по чучуть понял, но путаюсь с агрументами в скобках возле функции (выделил):

function playerDied[u][b](totalAmmo, killer, killerWeapon, bodypart)[/b][/u] 
    outputChatBox(getPlayerName(source).." умер!") 
end 
addEventHandler("onPlayerWasted",getRootElement(),playerDied) 
  

объясните кому не лень просто и ясно что за что отвечает и когда оно нужно когда нет, желательно на каком-то ясном примере, буду очень признателен.

Кидать ссылки на мта-вики и уроки lua не надо, а хотя если есть очень толковый туториал давайте :lol:

Edited by Guest

Share this post


Link to post
Люди помогите понять структуру скриптов, я вроде уже все по чучуть понял, но путаюсь с агрументами в скобках возле функции (выделил):

function playerDied[u][b](totalAmmo, killer, killerWeapon, bodypart)[/b][/u] 
    outputChatBox(getPlayerName(source).." умер!") 
end 
addEventHandler("onPlayerWasted",getRootElement(),playerDied) 
  

объясните кому не лень просто и ясно что за что отвечает и когда оно нужно когда нет, желательно на каком-то ясном примере, буду очень признателен.

Кидать ссылки на мта-вики и уроки lua не надо, а хотя если есть очень толковый туториал давайте :lol:

(totalAmmo, killer, killerWeapon, bodypart) --- спешлы которые можно использовать,если те есть в addEventHandler эвенте(событии) 

http://wiki.multitheftauto.com/wiki/OnPlayerWasted -- почитай,поймешь что за что отвечает.В каждом событии РАЗНЫЕ спешлы и они идут по порядку!!! Если первое,это Игрок,значит будь он source,будь он thePlayer или ped,и даже weapon это будет Игрок! Ты задаешь лишь название к спешлу который привязан к событию

Share this post


Link to post
Люди помогите понять структуру скриптов, я вроде уже все по чучуть понял, но путаюсь с агрументами в скобках возле функции (выделил):

function playerDied[u][b](totalAmmo, killer, killerWeapon, bodypart)[/b][/u] 
    outputChatBox(getPlayerName(source).." умер!") 
end 
addEventHandler("onPlayerWasted",getRootElement(),playerDied) 
  

объясните кому не лень просто и ясно что за что отвечает и когда оно нужно когда нет, желательно на каком-то ясном примере, буду очень признателен.

Кидать ссылки на мта-вики и уроки lua не надо, а хотя если есть очень толковый туториал давайте :lol:

Тебе как раз и нужно накидать ссылок на МТА-вики и на доки по Lua . Учится по своим догадкам не очень хорошо.

Share this post


Link to post

Можете подсказать скрипт для замены машин с мульти-текстурами т.п

hotknife.txd

hotknife1.txd

...

а то мой скрипт отображает только hotknife.txd

Share this post


Link to post
когда выйдет 1.3.5 или 1.4?

1.3.5 - В этом месяце обещают.

1.4 - примрено в 2015

Share this post


Link to post

Не запускается клиент МТА на ноуте(Win 8.1), никаких ошибок не выдает. Сама ГТА работает. Может есть какие-нибудь предположения?

Share this post


Link to post

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.