Отыгровка оружий

monster595

Участник
Автор темы
34
0
Сделал отыгровку оружий, но когда поставил ее в main все остальные функции перестали работать, и когда допустим я перехожу с дигла на шотган отыгровки нет вот код
Код:
weapon = getCurrentCharWeapon(playerPed)
    while weapon ~= 0 and weapon ~= 46 do
    wait(0)
        while true do
        wait(0)
            weapon = getCurrentCharWeapon(playerPed)
            if weapon == 0 or weapon == 46 then
                break
            end
        end
    end
    while weapon == 0 do
    wait(1000)
        sampSendChat("/me убрал оружие")
        while true do
        wait(0)
        weapon = getCurrentCharWeapon(playerPed)
            if weapon ~= 0 then
                break
            end
        end
    end
    while true do
    wait(1000)
        if weapon == 25 then
            sampSendChat("/me дробовик")
            return
        end
        if weapon == 24 then
            sampSendChat("/me дигл")
            return
        end
    end
 

hiplice

Активный
105
59
Потому что когда он берет дигл или дробовик, то делает return из мейна
Поставь там break и все будет нормально

Конечно я не совсем понимаю, зачем тебе так много циклов, если можно обойтись одним
 

monster595

Участник
Автор темы
34
0
Потому что когда он берет дигл или дробовик, то делает return из мейна
Поставь там break и все будет нормально

Конечно я не совсем понимаю, зачем тебе так много циклов, если можно обойтись одним
Тоже самое.
 

hiplice

Активный
105
59
Комментарии лучше удалить, я писал с телефона
Lua:
— Таблица с отыгровками, ключ соответствует номеру оружия

local plays = {
  0 = "/me засунул оружие себе в жопу",
  24 = "/me достал дигл",
  25 = "/me достал шотган"
— etc
}

function main()
  — Сначала регистрируй все команды и проверяй на загрузку сампа и сервера
  local weaponCache = getCurrentCharWeapon(PLAYER_PED) — хранит прошлое оружие педа
  while true do — Беск цикл
    local currentWeapon = getCurrentCharWeapon(PLAYER_PED)
    if weaponCache ~= currentWeapon and plays[currentWeapon] then
      sampSendChat(plays[currentWeapon])
    end
  end
end
 
  • Нравится
Реакции: Ivan8829828

monster595

Участник
Автор темы
34
0
Комментарии лучше удалить, я писал с телефона
Lua:
— Таблица с отыгровками, ключ соответствует номеру оружия

local plays = {
  0 = "/me засунул оружие себе в жопу",
  24 = "/me достал дигл",
  25 = "/me достал шотган"
— etc
}

function main()
  — Сначала регистрируй все команды и проверяй на загрузку сампа и сервера
  local weaponCache = getCurrentCharWeapon(PLAYER_PED) — хранит прошлое оружие педа
  while true do — Беск цикл
    local currentWeapon = getCurrentCharWeapon(PLAYER_PED)
    if weaponCache ~= currentWeapon and plays[currentWeapon] then
      sampSendChat(plays[currentWeapon])
    end
  end
end
А как ещё сделать обратную процедуру, /me убрал дигл
И тут еще ошибку выдает
Код:
local plays = {
  0 = "/me засунул оружие себе в жопу",
  24 = "/me достал дигл",
  25 = "/me достал шотган"
}
'}' expected (to close '{' at line 45) near '='
Если сделать так
Код:
local plays = {}
  0 = "/me засунул оружие себе в жопу",
  24 = "/me достал дигл",
  25 = "/me достал шотган"
}
Тоже ошибку выдает только уже связанную с цифрами
unexpected symbol near '0'
 
Последнее редактирование:

hiplice

Активный
105
59
Lua:
-- Таблица с отыгровками, ключ соответствует номеру оружия, а значение - таблице, где первый элемент - достал, второй элемент - убрал
local plays = {
  "24" = {"/me достал дигл", "/me убрал дигл"},
  "25" = {"/me достал шотган", "/me убрал шотган"}
-- etc
}

function main()
  -- Сначала регистрируй все команды и проверяй на загрузку сампа и сервера
  local weaponCache = getCurrentCharWeapon(PLAYER_PED) -- хранит прошлое оружие педа
  while true do -- Беск цикл
    local currentWeapon = getCurrentCharWeapon(PLAYER_PED) -- получает id текущего оружия
    if weaponCache ~= currentWeapon then -- проверяет, если оружие в руке изменилось
      if currentWeapon == 0 then -- проверяет, если оружие в руке - кулак
        sampSendChat(plays[weaponCache[2]]) -- отправляет в чат отыгровку прошлго оружия
      else if plays[currentWeapon] -- проверяет, если есть отыгровка для этого оружия
        sampSendChat(plays[currentWeapon[1]]) -- отправляет отыгровку для этого оружия
      end
      weaponCache = currentWeapon -- записывает в переменную прошлого оружия текущее
    end
  end
end
 

monster595

Участник
Автор темы
34
0
Lua:
-- Таблица с отыгровками, ключ соответствует номеру оружия, а значение - таблице, где первый элемент - достал, второй элемент - убрал
local plays = {
  "24" = {"/me достал дигл", "/me убрал дигл"},
  "25" = {"/me достал шотган", "/me убрал шотган"}
-- etc
}

function main()
  -- Сначала регистрируй все команды и проверяй на загрузку сампа и сервера
  local weaponCache = getCurrentCharWeapon(PLAYER_PED) -- хранит прошлое оружие педа
  while true do -- Беск цикл
    local currentWeapon = getCurrentCharWeapon(PLAYER_PED) -- получает id текущего оружия
    if weaponCache ~= currentWeapon then -- проверяет, если оружие в руке изменилось
      if currentWeapon == 0 then -- проверяет, если оружие в руке - кулак
        sampSendChat(plays[weaponCache[2]]) -- отправляет в чат отыгровку прошлго оружия
      else if plays[currentWeapon] -- проверяет, если есть отыгровка для этого оружия
        sampSendChat(plays[currentWeapon[1]]) -- отправляет отыгровку для этого оружия
      end
      weaponCache = currentWeapon -- записывает в переменную прошлого оружия текущее
    end
  end
end
Lua:
-- Таблица с отыгровками, ключ соответствует номеру оружия, а значение - таблице, где первый элемент - достал, второй элемент - убрал
local plays = {
  "24" = {"/me достал дигл", "/me убрал дигл"},
  "25" = {"/me достал шотган", "/me убрал шотган"}
-- etc
}

function main()
  -- Сначала регистрируй все команды и проверяй на загрузку сампа и сервера
  local weaponCache = getCurrentCharWeapon(PLAYER_PED) -- хранит прошлое оружие педа
  while true do -- Беск цикл
    local currentWeapon = getCurrentCharWeapon(PLAYER_PED) -- получает id текущего оружия
    if weaponCache ~= currentWeapon then -- проверяет, если оружие в руке изменилось
      if currentWeapon == 0 then -- проверяет, если оружие в руке - кулак
        sampSendChat(plays[weaponCache[2]]) -- отправляет в чат отыгровку прошлго оружия
      else if plays[currentWeapon] -- проверяет, если есть отыгровка для этого оружия
        sampSendChat(plays[currentWeapon[1]]) -- отправляет отыгровку для этого оружия
      end
      weaponCache = currentWeapon -- записывает в переменную прошлого оружия текущее
    end
  end
end
Код:
local plays = {
  "24" = {"/me достал дигл", "/me убрал дигл"},
  "25" = {"/me достал шотган", "/me убрал шотган"}
-- etc
}

Опять где то тут ошибка
 

#Northn

Police Helper «Reborn» — уже ШЕСТЬ лет!
Всефорумный модератор
2,638
2,488
Lua:
local game_weapons = require 'game.weapons'

function RPgun()
    local notAllowedWeapons = {
        ['1'] = '1';
        ['2'] = '2';
        ['42'] = '42';
        ['46'] = '46';
    }
    for i = 4, 15 do table.insert(notAllowedWeapons, tostring(i)) end
    while true do wait(0)
        if cfg.enabledmodif.rpgun == true then
            if sampIsLocalPlayerSpawned() then
                local currentWeapon = getCurrentCharWeapon(PLAYER_PED)
                if isKeyJustPressed(0x02) then
                    for _, gun in pairs(notAllowedWeapons) do 
                        if currentWeapon ~= lastWeapon and tostring(currentWeapon) ~= gun and game_weapons.get_name(currentWeapon) ~= 'Fist' and game_weapons.get_name(currentWeapon) ~= 'Silenced 9mm' then
                            sampSendChat('/me снял(а) '..game_weapons.get_name(currentWeapon)..' с поясного держателя.')
                            lastWeapon = currentWeapon
                        end
                    end
                    if currentWeapon ~= lastWeapon and game_weapons.get_name(currentWeapon) == 'Silenced 9mm' then
                        sampSendChat('/me снял(а) электрошокер с поясного держателя.')
                        lastWeapon = currentWeapon
                    elseif currentWeapon ~= lastWeapon and game_weapons.get_name(currentWeapon) == 'Nightstick' then
                        sampSendChat('/me снял(а) дубинку с поясного держателя.')
                        lastWeapon = currentWeapon
                    end
                else
                    if currentWeapon ~= lastWeapon and game_weapons.get_name(currentWeapon) == 'Fist' then
                        sampSendChat('/me повесил(а) оружие за поясной держатель.')
                        lastWeapon = currentWeapon
                    end
                end
            end
        end
    end
end
 
Последнее редактирование:

monster595

Участник
Автор темы
34
0
Lua:
local game_weapons = require 'game.weapons'

function RPgun()
    local notAllowedWeapons = {
        ['1'] = '1';
        ['2'] = '2';
        ['42'] = '42';
        ['46'] = '46';
    }
    for i = 4, 15 do table.insert(notAllowedWeapons, tostring(i)) end
    while true do wait(0)
        if cfg.enabledmodif.rpgun == true then
            if sampIsLocalPlayerSpawned() then
                local currentWeapon = getCurrentCharWeapon(PLAYER_PED)
                if isKeyJustPressed(0x02) then
                    for _, gun in pairs(notAllowedWeapons) do
                        if currentWeapon ~= lastWeapon and tostring(currentWeapon) ~= gun and game_weapons.get_name(currentWeapon) ~= 'Fist' and game_weapons.get_name(currentWeapon) ~= 'Silenced 9mm' then
                            sampSendChat('/me снял(а) '..game_weapons.get_name(currentWeapon)..' с поясного держателя.')
                            lastWeapon = currentWeapon
                        end
                    end
                    if currentWeapon ~= lastWeapon and game_weapons.get_name(currentWeapon) == 'Silenced 9mm' then
                        sampSendChat('/me снял(а) электрошокер с поясного держателя.')
                        lastWeapon = currentWeapon
                    elseif currentWeapon ~= lastWeapon and game_weapons.get_name(currentWeapon) == 'Nightstick' then
                        sampSendChat('/me снял(а) дубинку с поясного держателя.')
                        lastWeapon = currentWeapon
                    end
                else
                    if currentWeapon ~= lastWeapon and game_weapons.get_name(currentWeapon) == 'Fist' then
                        sampSendChat('/me повесил(а) оружие за поясной держатель.')
                        lastWeapon = currentWeapon
                    end
                end
            end
        end
    end
end
Вызываю функцию RPgun в main и ничего
Если код вставить в main выдает ошибку attempt to index global 'cfg' (a nil value)
 
Последнее редактирование:

#Northn

Police Helper «Reborn» — уже ШЕСТЬ лет!
Всефорумный модератор
2,638
2,488
Lua:
local game_weapons = require 'game.weapons'

function main()
    while not isSampAvailable() do wait(50) end
    local notAllowedWeapons = {
        ['1'] = '1';
        ['2'] = '2';
        ['42'] = '42';
        ['46'] = '46';
    }
    for i = 4, 15 do table.insert(notAllowedWeapons, tostring(i)) end
    while true do wait(0)
        if sampIsLocalPlayerSpawned() then
            local currentWeapon = getCurrentCharWeapon(PLAYER_PED)
            if isKeyJustPressed(0x02) then
                for _, gun in pairs(notAllowedWeapons) do 
                    if currentWeapon ~= lastWeapon and tostring(currentWeapon) ~= gun and game_weapons.get_name(currentWeapon) ~= 'Fist' and game_weapons.get_name(currentWeapon) ~= 'Silenced 9mm' then
                        sampSendChat('/me снял(а) '..game_weapons.get_name(currentWeapon)..' с поясного держателя.')
                        lastWeapon = currentWeapon
                    end
                end
                if currentWeapon ~= lastWeapon and game_weapons.get_name(currentWeapon) == 'Silenced 9mm' then
                    sampSendChat('/me снял(а) электрошокер с поясного держателя.')
                    lastWeapon = currentWeapon
                elseif currentWeapon ~= lastWeapon and game_weapons.get_name(currentWeapon) == 'Nightstick' then
                    sampSendChat('/me снял(а) дубинку с поясного держателя.')
                    lastWeapon = currentWeapon
                end
            else
                if currentWeapon ~= lastWeapon and game_weapons.get_name(currentWeapon) == 'Fist' then
                    sampSendChat('/me повесил(а) оружие за поясной держатель.')
                    lastWeapon = currentWeapon
                end
            end
        end
    end
end
 

#Northn

Police Helper «Reborn» — уже ШЕСТЬ лет!
Всефорумный модератор
2,638
2,488

Pakulichev

Software Developer & System Administrator
Друг
1,789
2,136
Чтобы для каждого оружия была своя отыгровка? Фигня, я лучше буду использовать одну отыгровку для всех оружий, но буду менять имена.
Доставать шотган из кобуры такое себе занятие, а пистолет из-за спины.
 

Pakulichev

Software Developer & System Administrator
Друг
1,789
2,136
Ты смотрел сами отыгровки? Тут не прикопаться.
На многих проектах администраторы прикапываются, спрашивая: "ты что, идиот, из попки его (пистолет) достал?"