Команды в ragemp

  • Автор темы Автор темы Zdoger
  • Дата начала Дата начала

Zdoger

Junior Developer
В общем... Создал команду pay, по 2 параметрам работает нормально, когда пытаюсь добавить 3 параметр (ну типо ник игрока кому нужно начислить), начинается полнейший бред..
1636267129376.png
И подскажите как проверить правильно на уровень админа по базе данных?
1636267184400.png
 
Есть вопросы по первому запросу.
1. Ты ищешь по name, но в запрос подставляешь почему-то player.accountId
2. В res у тебя не будет выведено просто число. Там будет массив объектов. Во втором запросе ты правильно получаешь из res значение money. В первом будет так же. Если не уверен что там приходит - сделать console.log(res) и посмотри.
 
Есть вопросы по первому запросу.
1. Ты ищешь по name, но в запрос подставляешь почему-то player.accountId
2. В res у тебя не будет выведено просто число. Там будет массив объектов. Во втором запросе ты правильно получаешь из res значение money. В первом будет так же. Если не уверен что там приходит - сделать console.log(res) и посмотри.
player.accountId это логин игрока
 
Ну типо вот:
1636273710538.png
Изначально админка была 0, после я себе её выдал и получил 9..
Ток как это теперь использовать?
 
Ну вот получается так:
1636274012190.png

проверка на админа сработала правильно
 
Или даже вот так:
1636274757789.png
Я ввожу команду /pay Zdoger 1000 и вот что выдает в консоли:
1636274840469.png
Типа playerid принимает значение: Zdoger 1000
А moneyPay принимает: Zdoger
В чем прикол?
 
В addCommand вторым аргументом прилетает полный текст команды.
 
Используй player, _, остальные аргументы...
Ну да, я так сделал.. После этого у меня вылезла другая проблема...
Теперь когда я допусти начисляю деньги другому игроку, мне показывается сообщение которое должно показаться ему и при обновлении money, там где отображает деньги показывает его деньги.
Как это исправить?
Блин.. вроде понятно написал...
 
Ты отправляешь сообщение тому кто ввел команду - player. А тебе нужно получить объект игрока которому отправляются деньги. Посмотри примеры команд: https://rage-script.com/threads/servernye-komandy-dlja-ragemp.152/ Там есть как получить target игрока через mp.players.at
 
let target = mp.players.at(playerid)
target.outputChatBox(`..`)
Ну я вот так сделал:
1636290070068.png
и получается, что я допустим ввожу команду /pay Zdoger 10000 мне начисляются деньги, но на сервере они не обновляются. Ну и в чат пишется только сообщение что я кому то начислил.... А то-что мне начислилось не пишет...

Обновление денег это:
JavaScript:
target.call('showMoneyPlayer', [numMoney])
 
mp.players.at может искать только по id, а ты пытаешься по имени начислить
Если хочешь по имени:
создаёшь функцию поиска:
Код:
function getPlayerByName(name) {
  if (!name) return null
  let result
  mp.players.forEach((target) => {
    if (target.name == name) {
      result = target
      return
    }
  })
  return result
}
const target = getPlayerByName(playerid)
 
Последнее редактирование:
mp.players.at может искать только по id, а ты пытаешься по имени начислить
Если хочешь по имени:
создаёшь функцию поиска:
Код:
function getPlayerByName(name) {
  if (!name) return null
  let result
  mp.players.forEach((target) => {
    if (target.name == name) {
      result = target
      return
    }
  })
  return result
}
const target = getPlayerByName(playerid)
Ну я так сделал, и типо у меня переменная target = undifined
Я создал эту функцию, вызвал её и в консоли выдает undifined
 
А что вот эта проверка чекает?
JavaScript:
if (target.name == name) {
    result = target
    return
}
 
А подскажите ещё.. Как сделать чтобы сообщения были цветные?
 
Назад
Верх