помогите с луа

themanywinston2

Участник
Автор темы
24
5
Версия SA-MP
  1. 0.3.7-R3
дарова короче у меня не работает луа пишет эту поеботу незнаю что делать

C:\Users\user\Desktop\medic farm\scripts\libs\addon.lua:176: C:\Users\user\Desktop\medic farm\scripts\hospital.lua:181: attempt to index upvalue 'packet' (a boolean value)
stack traceback:
[C]: in function 'error'
C:\Users\user\Desktop\medic farm\scripts\libs\addon.lua:160: in function 'tick'
C:\Users\user\Desktop\medic farm\scripts\libs\addon.lua:176: in function <C:\Users\user\Desktop\medic farm\scripts\libs\addon.lua:174>
 
  • Вау
Реакции: vuyy

.caterpillarteal$

Участник
24
6
Здарова, эта ошибка указывает на попытку проиндексировать переменную с именем 'packet', которая является логическим значением в файле hospital.lua в строке 181 вероятно это вызывает проблему в дополнении.файл lua в строке 176.
чтобы устранить эту ошибку надо проверить код в строке 181 в hospital.lua и убедиться, что "пакет" определен и не является логическим значением, может быть нужно настроить логику или назначение переменной в hospital.lua для корректного доступа к "пакету".

А так кодик бы :)
 

themanywinston2

Участник
Автор темы
24
5
bs:writeUInt8(packet[counter].packetId)
181 строка

counter = 1
176 строка

function err()
rep = false
packet = {}
counter = 1
end
function fillBitStream(mode)
if mode == 2 then
local bs = bitstream.incar
bs:writeUInt8(packet[counter].packetId)
bs:writeUInt16(getBotVehicle())
bs:writeUInt16(packet[counter].lr)
bs:writeUInt16(packet[counter].ud)
bs:writeUInt16(packet[counter].keys)
bs:writeFloat(packet[counter].qw)
bs:writeFloat(packet[counter].qx)
bs:writeFloat(packet[counter].qy)
bs:writeFloat(packet[counter].qz)
bs:writeFloat(packet[counter].x)
bs:writeFloat(packet[counter].y)
bs:writeFloat(packet[counter].z)
bs:writeFloat(packet[counter].sx)
bs:writeFloat(packet[counter].sy)
bs:writeFloat(packet[counter].sz)
bs:writeFloat(veh[getBotVehicle()])
bs:writeUInt8(getBotHealth())
bs:writeUInt8(getBotArmor())
bs:writeUInt8(0)
bs:writeUInt8(0)
bs:writeUInt8(packet[counter].gear)
bs:writeUInt16(0)
bs:writeFloat(0)
bs:writeFloat(0)

elseif mode == 1 then
local bs = bitstream.onfoot
bs:writeUInt8(packet[counter].packetId)
bs:writeUInt16(packet[counter].lr)
bs:writeUInt16(packet[counter].ud)
bs:writeUInt16(packet[counter].keys)
bs:writeFloat(packet[counter].x)
bs:writeFloat(packet[counter].y)
bs:writeFloat(packet[counter].z)
bs:writeFloat(packet[counter].qw)
bs:writeFloat(packet[counter].qx)
bs:writeFloat(packet[counter].qy)
bs:writeFloat(packet[counter].qz)
bs:writeUInt8(getBotHealth())
bs:writeUInt8(getBotArmor())
bs:writeUInt8(0)
bs:writeUInt8(packet[counter].sa)
bs:writeFloat(packet[counter].sx)
bs:writeFloat(packet[counter].sy)
bs:writeFloat(packet[counter].sz)
bs:writeFloat(0)
bs:writeFloat(0)
bs:writeFloat(0)
bs:writeUInt16(0)
bs:writeUInt16(packet[counter].anim)
bs:writeUInt16(packet[counter].flags)

elseif mode == 3 then
local bs = bitstream.aim
bs:writeUInt8(203)
bs:writeUInt8(packet[counter].mode)
bs:writeFloat(packet[counter].cx)
bs:writeFloat(packet[counter].cy)
bs:writeFloat(packet[counter].cz)
bs:writeFloat(packet[counter].px)
bs:writeFloat(packet[counter].py)
bs:writeFloat(packet[counter].pz)
bs:writeFloat(packet[counter].az)
bs:writeUInt8(packet[counter].zoom)
bs:writeUInt8(packet[counter].wstate)
bs:writeUInt8(packet[counter].unk)

else
return false
end
return true
end
 

themanywinston2

Участник
Автор темы
24
5
начинается с 173 строки

может быть из-за того что в 181 строке на конце 8 а на других строках 16 которые ниже

bs:writeByte(packet[counter].packetId) попробуй
щас попробую, мне долго надо это делать
 

.caterpillarteal$

Участник
24
6
начинается с 173 строки

может быть из-за того что в 181 строке на конце 8 а на других строках 16 которые ниже


щас попробую, мне долго надо это делать
Если у тебя не получится, я тебе напишу ещё методы, надеюсь помогут
 

themanywinston2

Участник
Автор темы
24
5
неа, не фурычит
Если у тебя не получится, я тебе напишу ещё методы, надеюсь помогут

Если у тебя не получится, я тебе напишу ещё методы, надеюсь помогут
это короче скрипт для ракбота, он возит медикаменты, до твоей строчки он ехал нормально, он просто на 2 заезде зависает, а после твоей строчки он и на первом заезде не фурычит

bs:writeUInt8(packet[counter].packetId)
181 строка

counter = 1
176 строка

function err()
rep = false
packet = {}
counter = 1
end
function fillBitStream(mode)
if mode == 2 then
local bs = bitstream.incar
bs:writeUInt8(packet[counter].packetId)
bs:writeUInt16(getBotVehicle())
bs:writeUInt16(packet[counter].lr)
bs:writeUInt16(packet[counter].ud)
bs:writeUInt16(packet[counter].keys)
bs:writeFloat(packet[counter].qw)
bs:writeFloat(packet[counter].qx)
bs:writeFloat(packet[counter].qy)
bs:writeFloat(packet[counter].qz)
bs:writeFloat(packet[counter].x)
bs:writeFloat(packet[counter].y)
bs:writeFloat(packet[counter].z)
bs:writeFloat(packet[counter].sx)
bs:writeFloat(packet[counter].sy)
bs:writeFloat(packet[counter].sz)
bs:writeFloat(veh[getBotVehicle()])
bs:writeUInt8(getBotHealth())
bs:writeUInt8(getBotArmor())
bs:writeUInt8(0)
bs:writeUInt8(0)
bs:writeUInt8(packet[counter].gear)
bs:writeUInt16(0)
bs:writeFloat(0)
bs:writeFloat(0)

elseif mode == 1 then
local bs = bitstream.onfoot
bs:writeUInt8(packet[counter].packetId)
bs:writeUInt16(packet[counter].lr)
bs:writeUInt16(packet[counter].ud)
bs:writeUInt16(packet[counter].keys)
bs:writeFloat(packet[counter].x)
bs:writeFloat(packet[counter].y)
bs:writeFloat(packet[counter].z)
bs:writeFloat(packet[counter].qw)
bs:writeFloat(packet[counter].qx)
bs:writeFloat(packet[counter].qy)
bs:writeFloat(packet[counter].qz)
bs:writeUInt8(getBotHealth())
bs:writeUInt8(getBotArmor())
bs:writeUInt8(0)
bs:writeUInt8(packet[counter].sa)
bs:writeFloat(packet[counter].sx)
bs:writeFloat(packet[counter].sy)
bs:writeFloat(packet[counter].sz)
bs:writeFloat(0)
bs:writeFloat(0)
bs:writeFloat(0)
bs:writeUInt16(0)
bs:writeUInt16(packet[counter].anim)
bs:writeUInt16(packet[counter].flags)

elseif mode == 3 then
local bs = bitstream.aim
bs:writeUInt8(203)
bs:writeUInt8(packet[counter].mode)
bs:writeFloat(packet[counter].cx)
bs:writeFloat(packet[counter].cy)
bs:writeFloat(packet[counter].cz)
bs:writeFloat(packet[counter].px)
bs:writeFloat(packet[counter].py)
bs:writeFloat(packet[counter].pz)
bs:writeFloat(packet[counter].az)
bs:writeUInt8(packet[counter].zoom)
bs:writeUInt8(packet[counter].wstate)
bs:writeUInt8(packet[counter].unk)

else
return false
end
return true
end
я тут короче поставил 16 ща попробуем

неа

теперь пишет вот это

C:\Users\user\Desktop\medic farm\scripts\libs\addon.lua:176: C:\Users\user\Desktop\medic farm\scripts\hospital (6).lua:181: attempt to call method 'writeByte' (a nil value)
stack traceback:
[C]: in function 'error'
C:\Users\user\Desktop\medic farm\scripts\libs\addon.lua:160: in function 'tick'
C:\Users\user\Desktop\medic farm\scripts\libs\addon.lua:176: in function <C:\Users\user\Desktop\medic farm\scripts\libs\addon.lua:174>

короче не тот параметр

Я решил проблему, короче не хватало одного файла, спасибо за помощь)
Если у тебя не получится, я тебе напишу ещё методы, надеюсь помогут
 
Последнее редактирование: