sampGetPlayerScore 0

opeacedoll

Известный
Автор темы
89
9
sampGetPlayerScore раз в 5-6 сообщений возвращает 0, как можно это пофиксить?
Lua:
 local userId = sampGetPlayerIdByNickname(name)
    local score = sampGetPlayerScore(userId)
        sampAddChatMessage('{ff0000}[ТАКСИ] {ff9838}Новый заказ от {ffffff}'..name..' {ff9838}[LVL: {ffffff} '..score..' {ff9838}]. Класс: {ffffff}'..class, -1)
 
Решение
Lua:
local sampev = require 'lib.samp.events'

function sampev.onServerMessage(color, text)
    if text:find('%[Такси%] Поступил новый заказ от (.+) %(класс автомобиля: (.+)%)') then
        local name, class = text:match('%[Такси%] Поступил новый заказ от (.+) %(класс автомобиля: (.+)%)')
        local userId = sampGetPlayerIdByNickname(name)
        local score = sampGetPlayerScore(userId)
                sampAddChatMessage('{ff0000}[ТАКСИ] {ff9838}Новый заказ от {ffffff}'..name..' {ff9838}[LVL: {ffffff} '..score..' {ff9838}]. Класс: {ffffff}'..class, -1)
    return false
    end
end

function sampGetPlayerIdByNickname(nick)
    nick = tostring(nick)
    local _, myid = sampGetPlayerIdByCharHandle(PLAYER_PED)
    if nick ==...

[w0te]

Потрачен
773
488
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
aga:
function main()
 repeat wait(0) until isSampAvailable()
 wait(0)
 sampRegisterChatCommand("da", net)
 while true do
  wait(0)
  end
end

function net()
 local score = sampGetPlayerScore(id)
 sampAddChatMessage("Your score: "..score, -1)
end
 

Я кавказец

Известный
440
107
Lua:
function main()
    while not isSampAvailable() do wait(0) end
    bs = raknetNewBitStream()
    while true do
    wait(0)
end
end

-- Короче тут хуета по захвату сообщения
raknetEmulRpcReceiveBitStream(155, bs)
raknetDeleteBitStream(bs)
local userId = sampGetPlayerIdByNickname(name)
    local score = sampGetPlayerScore(userId)
        sampAddChatMessage('{ff0000}[ТАКСИ] {ff9838}Новый заказ от {ffffff}'..name..' {ff9838}[LVL: {ffffff} '..score..' {ff9838}]. Класс: {ffffff}'..class, -1)
Попробуй
 
  • Нравится
Реакции: opeacedoll

opeacedoll

Известный
Автор темы
89
9
Lua:
function main()
    while not isSampAvailable() do wait(0) end
    bs = raknetNewBitStream()
    while true do
    wait(0)
end
end

-- Короче тут хуета по захвату сообщения
raknetEmulRpcReceiveBitStream(155, bs)
raknetDeleteBitStream(bs)
local userId = sampGetPlayerIdByNickname(name)
    local score = sampGetPlayerScore(userId)
        sampAddChatMessage('{ff0000}[ТАКСИ] {ff9838}Новый заказ от {ffffff}'..name..' {ff9838}[LVL: {ffffff} '..score..' {ff9838}]. Класс: {ffffff}'..class, -1)
Попробуй
Мужик, а есть ещё варианты какие-то? Может я что-то не так сделал, но стало реже появляться, но всё равно есть раз в 10 вызовов. Ещё есть ощущение, что крашит иногда из-за этого скрипта, после того, как альт табаюсь обратно в игру. Вот фулл код:

Lua:
local sampev = require 'lib.samp.events'

function sampev.onServerMessage(color, text)
    if text:find('%[Такси%] Поступил новый заказ от (.+) %(класс автомобиля: (.+)%)') then
        local name, class = text:match('%[Такси%] Поступил новый заказ от (.+) %(класс автомобиля: (.+)%)')
    raknetEmulRpcReceiveBitStream(155, bs)
    raknetDeleteBitStream(bs)
        local userId = sampGetPlayerIdByNickname(name)
        local score = sampGetPlayerScore(userId)
                sampAddChatMessage('{ff0000}[ТАКСИ] {ff9838}Новый заказ от {ffffff}'..name..' {ff9838}[LVL: {ffffff} '..score..' {ff9838}]. Класс: {ffffff}'..class, -1)
    return false
    end
end

function sampGetPlayerIdByNickname(nick)
    nick = tostring(nick)
    local _, myid = sampGetPlayerIdByCharHandle(PLAYER_PED)
    if nick == sampGetPlayerNickname(myid) then return myid end
    for i = 0, 1003 do
      if sampIsPlayerConnected(i) and sampGetPlayerNickname(i) == nick then
        return i
      end
    end
end

function main()
    while not isSampAvailable() do wait(0) end
    bs = raknetNewBitStream()
    while true do
    wait(0)
end
end
 

Я кавказец

Известный
440
107
Lua:
local sampev = require 'lib.samp.events'

function sampev.onServerMessage(color, text)
    if text:find('%[Такси%] Поступил новый заказ от (.+) %(класс автомобиля: (.+)%)') then
        local name, class = text:match('%[Такси%] Поступил новый заказ от (.+) %(класс автомобиля: (.+)%)')
        local userId = sampGetPlayerIdByNickname(name)
        local score = sampGetPlayerScore(userId)
                sampAddChatMessage('{ff0000}[ТАКСИ] {ff9838}Новый заказ от {ffffff}'..name..' {ff9838}[LVL: {ffffff} '..score..' {ff9838}]. Класс: {ffffff}'..class, -1)
    return false
    end
end

function sampGetPlayerIdByNickname(nick)
    nick = tostring(nick)
    local _, myid = sampGetPlayerIdByCharHandle(PLAYER_PED)
    if nick == sampGetPlayerNickname(myid) then return myid end
    for i = 0, 1003 do
      if sampIsPlayerConnected(i) and sampGetPlayerNickname(i) == nick then
        return i
      end
    end
end

function main()
    while not isSampAvailable() do wait(0) end
    bs = raknetNewBitStream()
    while true do
    wait(0)
    raknetEmulRpcReceiveBitStream(155, bs)
    raknetDeleteBitStream(bs)
end
end
пусть тогда всегда обновляет, если вдруг скрипт крашнулся. то moonloader.log в тему, а там разберемся
 

opeacedoll

Известный
Автор темы
89
9
Lua:
local sampev = require 'lib.samp.events'

function sampev.onServerMessage(color, text)
    if text:find('%[Такси%] Поступил новый заказ от (.+) %(класс автомобиля: (.+)%)') then
        local name, class = text:match('%[Такси%] Поступил новый заказ от (.+) %(класс автомобиля: (.+)%)')
        local userId = sampGetPlayerIdByNickname(name)
        local score = sampGetPlayerScore(userId)
                sampAddChatMessage('{ff0000}[ТАКСИ] {ff9838}Новый заказ от {ffffff}'..name..' {ff9838}[LVL: {ffffff} '..score..' {ff9838}]. Класс: {ffffff}'..class, -1)
    return false
    end
end

function sampGetPlayerIdByNickname(nick)
    nick = tostring(nick)
    local _, myid = sampGetPlayerIdByCharHandle(PLAYER_PED)
    if nick == sampGetPlayerNickname(myid) then return myid end
    for i = 0, 1003 do
      if sampIsPlayerConnected(i) and sampGetPlayerNickname(i) == nick then
        return i
      end
    end
end

function main()
    while not isSampAvailable() do wait(0) end
    bs = raknetNewBitStream()
    while true do
    wait(0)
    raknetEmulRpcReceiveBitStream(155, bs)
    raknetDeleteBitStream(bs)
end
end
пусть тогда всегда обновляет, если вдруг скрипт крашнулся. то moonloader.log в тему, а там разберемся
Как это реализовать вообще? Я нулик, скрипт не мой
 

Я кавказец

Известный
440
107
Как это реализовать вообще? Я нулик, скрипт не мой
Короче до этого как только скрипт ловил сообщение, то тогда уже через функцию ranknetEmulRcpReciveBitStream отправлял запрос на обновление статистики в табе.
Теперь скрипт сразу после активации начинает обновлять таб пока не закончить свою работу весь скрипт (ведь если сдох main, значит сдох и скрипт), надеюсь по нормальному объяснил
 
  • Нравится
Реакции: opeacedoll

opeacedoll

Известный
Автор темы
89
9
local sampev = require 'lib.samp.events'

function sampev.onServerMessage(color, text)
if text:find('%[Такси%] Поступил новый заказ от (.+) %(класс автомобиля: (.+)%)') then
local name, class = text:match('%[Такси%] Поступил новый заказ от (.+) %(класс автомобиля: (.+)%)')
local userId = sampGetPlayerIdByNickname(name)
local score = sampGetPlayerScore(userId)
sampAddChatMessage('{ff0000}[ТАКСИ] {ff9838}Новый заказ от {ffffff}'..name..' {ff9838}[LVL: {ffffff} '..score..' {ff9838}]. Класс: {ffffff}'..class, -1)
return false
end
end

function sampGetPlayerIdByNickname(nick)
nick = tostring(nick)
local _, myid = sampGetPlayerIdByCharHandle(PLAYER_PED)
if nick == sampGetPlayerNickname(myid) then return myid end
for i = 0, 1003 do
if sampIsPlayerConnected(i) and sampGetPlayerNickname(i) == nick then
return i
end
end
end

function main()
while not isSampAvailable() do wait(0) end
bs = raknetNewBitStream()
while true do
wait(0)
raknetEmulRpcReceiveBitStream(155, bs)
raknetDeleteBitStream(bs)
end
end[/CODE]
пусть тогда всегда обновляет, если вдруг скрипт крашнулся. то moonloader.log в тему, а там разберемся
[01:05:35.558109] (system) Session started.
[01:05:35.559171] (debug) Module handle: 6FC00000

MoonLoader v.026.5-beta loaded.
Developers: FYP, hnnssy, EvgeN 1137

Copyright (c) 2016, BlastHack Team
https://www.blast.hk/moonloader/

[01:05:35.559171] (info) Working directory: C:\Games\TRUE\moonloader
[01:05:35.559171] (debug) FP Control: 0009001F
[01:05:35.559171] (debug) Game: GTA SA 1.0.0.0 US
[01:05:35.559171] (system) Installing pre-game hooks...
[01:05:35.561160] (system) Hooks installed.
[01:05:36.011564] (debug) Initializing opcode handler table
[01:05:36.011564] (debug) package.path = C:\Games\TRUE\moonloader\lib\?.lua;C:\Games\TRUE\moonloader\lib\?\init.lua;C:\Games\TRUE\moonloader\?.lua;C:\Games\TRUE\moonloader\?\init.lua;.\?.lua;C:\Games\TRUE\moonloader\lib\?.luac;C:\Games\TRUE\moonloader\lib\?\init.luac;C:\Games\TRUE\moonloader\?.luac;C:\Games\TRUE\moonloader\?\init.luac;.\?.luac
[01:05:36.011564] (debug) package.cpath = C:\Games\TRUE\moonloader\lib\?.dll;
[01:05:36.013564] (system) Loading script 'C:\Games\TRUE\moonloader\AutoReboot.lua'...
[01:05:36.013564] (debug) New script: 0B4A0B2C
[01:05:36.015616] (system) ML-AutoReboot: Loaded successfully.
[01:05:36.015616] (system) Loading script 'C:\Games\TRUE\moonloader\check-moonloader-updates.lua'...
[01:05:36.015616] (debug) New script: 0B4A081C
[01:05:36.017626] (system) Check MoonLoader Updates: Loaded successfully.
[01:05:36.017626] (system) Loading script 'C:\Games\TRUE\moonloader\GhettoWallHack.lua'...
[01:05:36.017626] (debug) New script: 0B4A0694
[01:05:36.030579] (system) GhettoWallHack.lua: Loaded successfully.
[01:05:36.030579] (system) Loading script 'C:\Games\TRUE\moonloader\Infinite Run.lua'...
[01:05:36.030579] (debug) New script: 0B4A09A4
[01:05:36.031620] (system) Infinite Run: Loaded successfully.
[01:05:36.031620] (system) Loading script 'C:\Games\TRUE\moonloader\NoFuckingProps.lua'...
[01:05:36.032615] (debug) New script: 0B4A0FC4
[01:05:36.033615] (system) NoFuckingProps.lua: Loaded successfully.
[01:05:36.033615] (system) Loading script 'C:\Games\TRUE\moonloader\reload_all.lua'...
[01:05:36.033615] (debug) New script: 0B4A114C
[01:05:36.034615] (system) ML-ReloadAll: Loaded successfully.
[01:05:36.034615] (system) Loading script 'C:\Games\TRUE\moonloader\renderobjects.lua'...
[01:05:36.034615] (debug) New script: 0B4A12D4
[01:05:36.039652] (system) renderobjects.lua: Loaded successfully.
[01:05:36.039652] (system) Loading script 'C:\Games\TRUE\moonloader\SF Integration.lua'...
[01:05:36.039652] (debug) New script: 0B4A145C
[01:05:36.041654] (system) SF Integration: Loaded successfully.
[01:05:36.041654] (system) Loading script 'C:\Games\TRUE\moonloader\taxi_user_level.lua'...
[01:05:36.041654] (debug) New script: 0FC39704
[01:05:36.046600] (system) taxi_user_level.lua: Loaded successfully.
[01:05:37.179703] (system) Installing post-load hooks...
[01:05:37.179703] (system) Hooks installed.
[01:14:27.419792] (script) ML-AutoReboot: Reloading "taxi_user_level.lua"...
[01:14:27.429806] (system) taxi_user_level.lua: Script terminated. (0FC39704)
[01:14:27.429806] (system) Loading script 'C:\Games\TRUE\moonloader\taxi_user_level.lua'...
[01:14:27.429806] (debug) New script: 0FC3B294
[01:14:27.434848] (system) taxi_user_level.lua: Loaded successfully.
[01:14:27.880302] (system) ML-AutoReboot: Script terminated. (0B4A0B2C)
[01:14:27.880302] (system) Check MoonLoader Updates: Script terminated. (0B4A081C)
[01:14:27.881292] (system) GhettoWallHack.lua: Script terminated. (0B4A0694)
[01:14:27.881292] (system) Infinite Run: Script terminated. (0B4A09A4)
[01:14:27.882656] (system) NoFuckingProps.lua: Script terminated. (0B4A0FC4)
[01:14:27.882656] (system) ML-ReloadAll: Script terminated. (0B4A114C)
[01:14:27.882656] (system) renderobjects.lua: Script terminated. (0B4A12D4)
[01:14:27.883702] (system) SF Integration: Script terminated. (0B4A145C)
[01:14:27.883702] (system) taxi_user_level.lua: Script terminated. (0FC3B294)
[01:14:27.884695] (system) Loading script 'C:\Games\TRUE\moonloader\AutoReboot.lua'...
[01:14:27.884695] (debug) New script: 0FC3ADFC
[01:14:27.885714] (system) ML-AutoReboot: Loaded successfully.
[01:14:27.885714] (system) Loading script 'C:\Games\TRUE\moonloader\check-moonloader-updates.lua'...
[01:14:27.885714] (debug) New script: 0FC3A1BC
[01:14:27.887642] (system) Check MoonLoader Updates: Loaded successfully.
[01:14:27.887642] (system) Loading script 'C:\Games\TRUE\moonloader\GhettoWallHack.lua'...
[01:14:27.887642] (debug) New script: 0FC39704
[01:14:27.899642] (system) GhettoWallHack.lua: Loaded successfully.
[01:14:27.899642] (system) Loading script 'C:\Games\TRUE\moonloader\Infinite Run.lua'...
[01:14:27.899642] (debug) New script: 0FC3A7DC
[01:14:27.900642] (system) Infinite Run: Loaded successfully.
[01:14:27.901642] (system) Loading script 'C:\Games\TRUE\moonloader\NoFuckingProps.lua'...
[01:14:27.901642] (debug) New script: 0FC3A034
[01:14:27.902667] (system) NoFuckingProps.lua: Loaded successfully.
[01:14:27.902667] (system) Loading script 'C:\Games\TRUE\moonloader\reload_all.lua'...
[01:14:27.902667] (debug) New script: 0FC3A344
[01:14:27.903660] (system) ML-ReloadAll: Loaded successfully.
[01:14:27.903660] (system) Loading script 'C:\Games\TRUE\moonloader\renderobjects.lua'...
[01:14:27.903660] (debug) New script: 0FC3B294
[01:14:27.908661] (system) renderobjects.lua: Loaded successfully.
[01:14:27.908661] (system) Loading script 'C:\Games\TRUE\moonloader\SF Integration.lua'...
[01:14:27.908661] (debug) New script: 0FC3A964
[01:14:27.910660] (system) SF Integration: Loaded successfully.
[01:14:27.910660] (system) Loading script 'C:\Games\TRUE\moonloader\taxi_user_level.lua'...
[01:14:27.910660] (debug) New script: 0FC3B41C
[01:14:27.915676] (system) taxi_user_level.lua: Loaded successfully.
[01:14:28.904993] (error) taxi_user_level.lua: opcode '0BF6' call caused an unhandled exception
stack traceback:
[C]: in function 'raknetEmulRpcReceiveBitStream'
C:\Games\TRUE\moonloader\taxi_user_level.lua:29: in function <C:\Games\TRUE\moonloader\taxi_user_level.lua:24>
[01:14:28.904993] (error) taxi_user_level.lua: Script died due to an error. (0FC3B41C)
Lua:
Как я и предполагал, крашит из-за этого скрипта
 
Последнее редактирование:

Я кавказец

Известный
440
107
Lua:
local sampev = require 'lib.samp.events'

function sampev.onServerMessage(color, text)
    if text:find('%[Такси%] Поступил новый заказ от (.+) %(класс автомобиля: (.+)%)') then
        local name, class = text:match('%[Такси%] Поступил новый заказ от (.+) %(класс автомобиля: (.+)%)')
        local userId = sampGetPlayerIdByNickname(name)
        local score = sampGetPlayerScore(userId)
                sampAddChatMessage('{ff0000}[ТАКСИ] {ff9838}Новый заказ от {ffffff}'..name..' {ff9838}[LVL: {ffffff} '..score..' {ff9838}]. Класс: {ffffff}'..class, -1)
    return false
    end
end

function sampGetPlayerIdByNickname(nick)
    nick = tostring(nick)
    local _, myid = sampGetPlayerIdByCharHandle(PLAYER_PED)
    if nick == sampGetPlayerNickname(myid) then return myid end
    for i = 0, 1003 do
      if sampIsPlayerConnected(i) and sampGetPlayerNickname(i) == nick then
        return i
      end
    end
end

function main()
    while not isSampAvailable() do wait(0) end
    while true do
    wait(0)
    bs = raknetNewBitStream()
    raknetEmulRpcReceiveBitStream(155, bs)
    raknetDeleteBitStream(bs)
end
end
скорее всего надо создавать новый битстрим каждый раз после удаления последнего, а я его всего 1 раз создавал :)
 

opeacedoll

Известный
Автор темы
89
9
Lua:
local sampev = require 'lib.samp.events'

function sampev.onServerMessage(color, text)
    if text:find('%[Такси%] Поступил новый заказ от (.+) %(класс автомобиля: (.+)%)') then
        local name, class = text:match('%[Такси%] Поступил новый заказ от (.+) %(класс автомобиля: (.+)%)')
        local userId = sampGetPlayerIdByNickname(name)
        local score = sampGetPlayerScore(userId)
                sampAddChatMessage('{ff0000}[ТАКСИ] {ff9838}Новый заказ от {ffffff}'..name..' {ff9838}[LVL: {ffffff} '..score..' {ff9838}]. Класс: {ffffff}'..class, -1)
    return false
    end
end

function sampGetPlayerIdByNickname(nick)
    nick = tostring(nick)
    local _, myid = sampGetPlayerIdByCharHandle(PLAYER_PED)
    if nick == sampGetPlayerNickname(myid) then return myid end
    for i = 0, 1003 do
      if sampIsPlayerConnected(i) and sampGetPlayerNickname(i) == nick then
        return i
      end
    end
end

function main()
    while not isSampAvailable() do wait(0) end
    while true do
    wait(0)
    bs = raknetNewBitStream()
    raknetEmulRpcReceiveBitStream(155, bs)
    raknetDeleteBitStream(bs)
end
end
скорее всего надо создавать новый битстрим каждый раз после удаления последнего, а я его всего 1 раз создавал :)
sa-mp-000.png

sa-mp-001.png

Крашить вроде бы перестало, но проблема актуальна
 

Я кавказец

Известный
440
107
Посмотреть вложение 117584
Посмотреть вложение 117585
Крашить вроде бы перестало, но проблема актуальна
Lua:
local sampev = require 'lib.samp.events'

function sampev.onServerMessage(color, text)
    if text:find('%[Такси%] Поступил новый заказ от (.+) %(класс автомобиля: (.+)%)') then
        bs = raknetNewBitStream()
        raknetEmulRpcReceiveBitStream(155, bs)
    raknetDeleteBitStream(bs)
        local name, class = text:match('%[Такси%] Поступил новый заказ от (.+) %(класс автомобиля: (.+)%)')
        local userId = sampGetPlayerIdByNickname(name)
        local score = sampGetPlayerScore(userId)
                sampAddChatMessage('{ff0000}[ТАКСИ] {ff9838}Новый заказ от {ffffff}'..name..' {ff9838}[LVL: {ffffff} '..score..' {ff9838}]. Класс: {ffffff}'..class, -1)
        raknetDeleteBitStream(bs)       
    return false
    end
end

function sampGetPlayerIdByNickname(nick)
    nick = tostring(nick)
    local _, myid = sampGetPlayerIdByCharHandle(PLAYER_PED)
    if nick == sampGetPlayerNickname(myid) then return myid end
    for i = 0, 1003 do
      if sampIsPlayerConnected(i) and sampGetPlayerNickname(i) == nick then
        return i
      end
    end
end
Давай попробуем старый, но чуть-чуть оптимизированный вариант