Нужно помощь чтобы доделать скрипт

copypaste_scripter

Известный
Автор темы
1,295
249
Версия MoonLoader
Другое
Привет. Короче давно хотел сделать скрипт, который будет автоматически выставлять товары в лавке на продажу. У многих видел, но что то не то, что я хотел. Я хотел кое что простой и вот настал день я придумал. Но столкнулся с проблемой, и захотел переписать на лучший.

Скрипт работает следующим образом: когда открыто диалоговое окно "выставить/удалить/прекратить" при нажатии кнопки активируется скрипт, выбирает выставить товар и выбирает первый в списке предмет, потом опять выставить и так, пока не закончится "цикл" (ну да, у меня цикла нет, просто нарукожопил, но тут проблем нет). Появится у вас вопрос, как же поставить цену. Ну вот, я для этого названия каждого предмета прописал и для каждого сделал отдельную функцию который при нахождении текста в диалоге который откроет вышесказанный цикл - он сам выставит за пол секунды (смотреть Код 1), но это во первых не красиво, а во вторых если в списке окажется неизвестный предмет, на которой нет цены указано в скрипте, или например на скорую руку название ошибкой написал - скрипт стоит на месте и приходится все заново, да и он никак не будет продолжать работать из-за этого предмета. Конечно можно вручную опять добавить и все. Но хотелось бы сделать красивее и удобнее. По этому придумал массив (смотреть код 2). А внизу сделал просто такой же как в Код 1, только немного по другому, чтобы текст и цену взял с массива (смотреть Код 3). Все работает без ошибок, но не ставит цену при открытии диалога написании цен.

Я как вы поняли не особо разбираюсь в написании скриптов, всего лишь копирую функций с вики БХ и с разных скриптов. По этому почему то ни как не смог сделать рабочий скрипт в новом варианте. По этому обращаюсь к знатокам БХ, выручайте, пожалуйста, ато я уже устал клацать по клавишам без смысла, ничего не получается больше...

Код 1:
if text:find("Кирка") then
    sampSendDialogResponse(3060, 1, 0, 35000777)
end

Код 2:
local mytovar = {
    ["Кирка"] = "35000777",
    ["Грабли"] = "35000777",
    ["Рога"] = "500777"
}

Код 3:
if text:find(mytovar) then
    sampSendDialogResponse(3060, 1, 0, mytovar["text"])
end
 

copypaste_scripter

Известный
Автор темы
1,295
249
Lua:
for k, v in pairs(mytovar) do
    if text:find(k) then
        lua_thread.create(function() wait(20)
            sampSendDialogResponse(3060, 1, 0, v)
        end)
    end
end
сука! я знал что надо было in pairs юзать, но не знал как, проверил и работает! 20 мили секунд промежутка для чего?
 

Dmitriy Makarov

25.05.2021
Проверенный
2,505
1,134
сука! я знал что надо было in pairs юзать, но не знал как, проверил и работает! 20 мили секунд промежутка для чего?
Я не знаю, как там точно было. Просто когда ты делаешь проверку на диалог и сразу делаешь действие, то оно иногда не выполняется, потому что у тебя диалог не успевает появиться, а ты сразу делаешь действие, поэтому нужно хотя бы 10мс задержку сделать перед действием каким-либо.
Для return false, чтобы скрыть диалог, такого не нужно.
 
  • Нравится
Реакции: copypaste_scripter

copypaste_scripter

Известный
Автор темы
1,295
249
Я не знаю, как там точно было. Просто когда ты делаешь проверку на диалог и сразу делаешь действие, то оно иногда не выполняется, потому что у тебя диалог не успевает появиться, а ты сразу делаешь действие, поэтому нужно хотя бы 10мс задержку сделать перед действием каким-либо.
Для return false, чтобы скрыть диалог, такого не нужно.
ну я просто задумался о том, что на моем варианте как в Код 3, он работал и без промежутка, по этому появился вопрос (не то что я занятый человек играющий в самп, который не может ждать 20 милисекунд 🤣🤣🤣 )
 

Dmitriy Makarov

25.05.2021
Проверенный
2,505
1,134
ну я просто задумался о том, что на моем варианте как в Код 3, он работал и без промежутка, по этому появился вопрос (не то что я занятый человек играющий в самп, который не может ждать 20 милисекунд 🤣🤣🤣 )
Ну если хочешь, то можешь попробовать и без задержки.)
Если не ошибаюсь, то там для больше одного действия уже нужна задержка, но я по привычке всегда ставлю её.
 
  • Нравится
Реакции: copypaste_scripter