Помогите с кодом

Shepard

Активный
Автор темы
459
88
Версия MoonLoader
.025-beta
Делаю скрипт, который проверяет показатель Z на территории Корабля и узнает местоположение игрока
Так вот, проверяет только меня, как пофиксить?
Lua:
function cmd_checker()
    sampAddChatMessage("{3ADF00}[Подсчёт] {FFFFFF}Загрузка...", cvet)
    local X1, Y1, Z1 = getCharCoordinates(PLAYER_PED)
    local distanc = getDistanceBetweenCoords3d(-1428.8746, 1492.7424, 7.1016, X1, Y1, Z1)
    if distanc < 300 then
        for i = 0, sampGetMaxPlayerId() do
            if sampIsPlayerConnected(i) then
                 local res, id = sampGetPlayerIdByCharHandle(i)
                 if res then
                     local X, Y, Z = getCharCoordinates(i)
                     local distance = getDistanceBetweenCoords3d(X, Y, Z, X1, Y1, Z1)
                     if distance < 200 then
                         if Z <= 4.500 and Z > 0 then
                             trym = trym + 1
                         end
                         if Z < 1.000 then
                             voda = voda + 1
                         end
                         if Z > 5.000 and Z < 20.000 then
                             osnova = osnova + 1
                         end
                     end
                 end
             end
        end
    else
        sampAddChatMessage("[!] Вы не у корабля", cvet)
        return true
    end
    sampAddChatMessage("[!]: {FFFFFF}Вода: ".. voda ..", Трюм: ".. trym ..", Основа: ".. osnova .."", cvet)
    vsego = osnova + trym
    sampAddChatMessage("Всего на корабле: {FFFFFF}".. vsego, cvet)
    vsego = 0
    osnova = 0
    voda = 0
    trym = 0
end
 
Решение
sampGetPlayerIdByCharHandle получает ид по хэндлу, а ты в него суешь ИД, это так не работает =)
Поменяй это на sampGetCharHandleBySampPlayerId(i), так ты получишь хэндл, с которым сможешь уже работать и получать нужные координаты

andrey_hacker

Известный
274
88
Делаю скрипт, который проверяет показатель Z на территории Корабля и узнает местоположение игрока
Так вот, проверяет только меня, как пофиксить?
Lua:
function cmd_checker()
    sampAddChatMessage("{3ADF00}[Подсчёт] {FFFFFF}Загрузка...", cvet)
    local X1, Y1, Z1 = getCharCoordinates(PLAYER_PED)
    local distanc = getDistanceBetweenCoords3d(-1428.8746, 1492.7424, 7.1016, X1, Y1, Z1)
    if distanc < 300 then
        for i = 0, sampGetMaxPlayerId() do
            if sampIsPlayerConnected(i) then
                 local res, id = sampGetPlayerIdByCharHandle(i)
                 if res then
                     local X, Y, Z = getCharCoordinates(i)
                     local distance = getDistanceBetweenCoords3d(X, Y, Z, X1, Y1, Z1)
                     if distance < 200 then
                         if Z <= 4.500 and Z > 0 then
                             trym = trym + 1
                         end
                         if Z < 1.000 then
                             voda = voda + 1
                         end
                         if Z > 5.000 and Z < 20.000 then
                             osnova = osnova + 1
                         end
                     end
                 end
             end
        end
    else
        sampAddChatMessage("[!] Вы не у корабля", cvet)
        return true
    end
    sampAddChatMessage("[!]: {FFFFFF}Вода: ".. voda ..", Трюм: ".. trym ..", Основа: ".. osnova .."", cvet)
    vsego = osnova + trym
    sampAddChatMessage("Всего на корабле: {FFFFFF}".. vsego, cvet)
    vsego = 0
    osnova = 0
    voda = 0
    trym = 0
end
Как я понял, ты получаешь id через sampGetPlayerIdByCharHandle(i), хотя i - это уже и есть айди.
+в local X, Y, Z = getCharCoordinates(i) вместо i, нужно вставлять хендл, а не айди
 

Shepard

Активный
Автор темы
459
88
Как я понял, ты получаешь id через sampGetPlayerIdByCharHandle(i), хотя i - это уже и есть айди.
+в local X, Y, Z = getCharCoordinates(i) вместо i, нужно вставлять хендл, а не айди
Lua:
function cmd_checker()
    sampAddChatMessage("{3ADF00}[Подсчёт] {FFFFFF}Загрузка...", cvet)
    local X1, Y1, Z1 = getCharCoordinates(PLAYER_PED)
    local distanc = getDistanceBetweenCoords3d(-1428.8746, 1492.7424, 7.1016, X1, Y1, Z1)
    if distanc < 300 then
        for i = 0, sampGetMaxPlayerId() do
            if sampIsPlayerConnected(i) then
                 local res, id = sampGetPlayerIdByCharHandle(i)
                 if res then
                     local _, handle = sampGetCharHandleBySampPlayerId(i)
                     local X, Y, Z = getCharCoordinates(handle)
                     local distance = getDistanceBetweenCoords3d(X, Y, Z, X1, Y1, Z1)
                     if distance < 200 then
                         if Z <= 4.500 and Z > 0 then
                             trym = trym + 1
                         end
                         if Z < 1.000 then
                             voda = voda + 1
                         end
                         if Z > 5.000 and Z < 20.000 then
                             osnova = osnova + 1
                         end
                     end
                 end
             end
        end
    else
        sampAddChatMessage("[!] Вы не у корабля", cvet)
        return true
    end
    sampAddChatMessage("[!]: {FFFFFF}Вода: ".. voda ..", Трюм: ".. trym ..", Основа: ".. osnova .."", cvet)
    vsego = osnova + trym
    sampAddChatMessage("Всего на корабле: {FFFFFF}".. vsego, cvet)
    vsego = 0
    osnova = 0
    voda = 0
    trym = 0
end
что здесь не так? Получил хендл по айдишнику, но не работает
 
Последнее редактирование:

Angr

Известный
291
99
sampGetPlayerIdByCharHandle получает ид по хэндлу, а ты в него суешь ИД, это так не работает =)
Поменяй это на sampGetCharHandleBySampPlayerId(i), так ты получишь хэндл, с которым сможешь уже работать и получать нужные координаты
 
  • Нравится
Реакции: Shepard