удаление/восстановление текстдравов

Qlliman

Участник
Автор темы
38
1
вот есть у меня скрипт который удаляет текстдравы, это sampTextdrawDelete(a). А как их вернуть обратно?
код если кому надо
Lua:
script_name('Film Maker')
local sampev = require 'lib.samp.events'
local tds = {}


act = false

function main()
    while not isSampAvailable() do wait(100) end
    wait(5000)
    sampAddChatMessage("[Film Maker] {FFFFFF}Скрипт был успешно загружен. Автор: {FFA500}Carl Grasso", 0xFFA500)
    sampAddChatMessage("[Film Maker] {FFFFFF}Активация скрипта - /act", 0xFFA500)
    sampRegisterChatCommand('act', function ()
        act = not act
        
        if act then
            sampSetChatDisplayMode(0)
            displayHud(false)
            for a = 0, 1000000000000    do --cycle trough all textdeaw id
                if sampTextdrawIsExists(a) then
                    sampTextdrawDelete(a)
                end
            end
        else
            sampSetChatDisplayMode(2)
            displayHud(true)
        end

        sampAddChatMessage(act and '{FFA500}['..thisScript().name..']{FFFFFF} Интерфейс и ники отключены' or '{FFA500}['..thisScript().name..']{FFFFFF} Интерфейс и ники включены', -1)
    end)

    wait(-1)
end

local gangId  = {}

function sampev.onCreateGangZone(zoneId, squareStart, squareEnd, color)
    table.insert(gangId,zoneId)
    if act then
        for i = 1, #gangId do
            if zoneId == gangId[i] then
                table.remove(tds,id)
                return false
            end
        end
    end
end
 

paulohardy

вы еще постите говно? тогда я иду к вам
Всефорумный модератор
1,891
1,254
А как их вернуть обратно?
ждать когда сервер его еще раз создаст
создай таблицу и в ней храни все rpc создания текстдравов, потом используя raknetEmulRpcReceiveBitStream восстановишь их
for a = 0, 1000000000000 do --cycle trough all textdeaw id
их всего 2304
 

Qlliman

Участник
Автор темы
38
1
ждать когда сервер его еще раз создаст
создай таблицу и в ней храни все rpc создания текстдравов, потом используя raknetEmulRpcReceiveBitStream восстановишь их
for a = 0, 1000000000000 do --cycle trough all textdeaw id
их всего 2304
когда стояло 2304 некоторые текстдравы срп оставались, а вот на счет таблицы непонятно. обьясни подробнее плз
 

paulohardy

вы еще постите говно? тогда я иду к вам
Всефорумный модератор
1,891
1,254
когда стояло 2304 некоторые текстдравы срп оставались
значит ты что-то не так сделал
а вот на счет таблицы непонятно. обьясни подробнее плз
ну прилетает тебе rpc о создании текстдрава, сохраняешь битстрим и потом заново используешь
Lua:
local textdrawsList = {}
local RPC_SCRSHOWTEXTDRAW = 134

function onReceiveRpc(id, bitStream)
    if id == RPC_SCRSHOWTEXTDRAW then
        local textdrawId = raknetBitStreamReadInt16(bitStream)
        textdrawsList[textdrawId] = bitStream
    end
end

-- используешь где надо
raknetEmulRpcReceiveBitStream(RPC_SCRSHOWTEXTDRAW, textdrawsList[id нужного текстдрава])
чистку таблицы от удаленных сервером текстдравов и обработку изменения текста допишешь сам
 
  • Нравится
Реакции: MLycoris

Qlliman

Участник
Автор темы
38
1
значит ты что-то не так сделал

ну прилетает тебе rpc о создании текстдрава, сохраняешь битстрим и потом заново используешь
Lua:
local textdrawsList = {}
local RPC_SCRSHOWTEXTDRAW = 134

function onReceiveRpc(id, bitStream)
    if id == RPC_SCRSHOWTEXTDRAW then
        local textdrawId = raknetBitStreamReadInt16(bitStream)
        textdrawsList[textdrawId] = bitStream
    end
end

-- используешь где надо
raknetEmulRpcReceiveBitStream(RPC_SCRSHOWTEXTDRAW, textdrawsList[id нужного текстдрава])
чистку таблицы от удаленных сервером текстдравов и обработку изменения текста допишешь сам
спасибо, сейчас попробую!)

значит ты что-то не так сделал

ну прилетает тебе rpc о создании текстдрава, сохраняешь битстрим и потом заново используешь
Lua:
local textdrawsList = {}
local RPC_SCRSHOWTEXTDRAW = 134

function onReceiveRpc(id, bitStream)
    if id == RPC_SCRSHOWTEXTDRAW then
        local textdrawId = raknetBitStreamReadInt16(bitStream)
        textdrawsList[textdrawId] = bitStream
    end
end

-- используешь где надо
raknetEmulRpcReceiveBitStream(RPC_SCRSHOWTEXTDRAW, textdrawsList[id нужного текстдрава])
чистку таблицы от удаленных сервером текстдравов и обработку изменения текста допишешь сам
что-то не хочет, зависает намертво. было бы классно пойти в дс и научить меня +- писать скрипты, а то сложное не умею)) ниже код как я сделал
Lua:
script_name('Film Maker')
local sampev = require 'lib.samp.events'
local tds = {}

act = false

function main()
    while not isSampAvailable() do wait(100) end
    wait(5000)
    sampAddChatMessage("[Film Maker] {FFFFFF}Скрипт был успешно загружен. Автор: {FFA500}Carl Grasso", 0xFFA500) -- 10
    sampAddChatMessage("[Film Maker] {FFFFFF}Активация скрипта - /act", 0xFFA500)
    sampRegisterChatCommand('act', function ()
        act = not act
        
        if act then
            sampSetChatDisplayMode(0)
            displayHud(false)
            for a = 0, 1000000000000    do --cycle trough all textdeaw id
                if sampTextdrawIsExists(a) then
                    sampTextdrawDelete(a)                                                                        -- 20
                end
            end
        else
            sampSetChatDisplayMode(2)
            displayHud(true)
        end

        sampAddChatMessage(act and '{FFA500}['..thisScript().name..']{FFFFFF} Интерфейс и ники отключены' or '{FFA500}['..thisScript().name..']{FFFFFF} Интерфейс и ники включены', -1)
    end)
--30
    wait(-1)
end

local textdrawsList = {}
local RPC_SCRSHOWTEXTDRAW = 134

function onReceiveRpc(id, bitStream)
    if id == RPC_SCRSHOWTEXTDRAW then
        local textdrawId = raknetBitStreamReadInt16(bitStream)
        textdrawsList[textdrawId] = bitStream --40
    end
end

-- используешь где надо
raknetEmulRpcReceiveBitStream(RPC_SCRSHOWTEXTDRAW, textdrawsList[45])

local gangId  = {}

function sampev.onCreateGangZone(zoneId, squareStart, squareEnd, color)
    table.insert(gangId,zoneId)
    if act then
        for i = 1, #gangId do
            if zoneId == gangId[i] then
                table.remove(tds,id)
                return false
            end
        end
    end
end
 
Последнее редактирование:

paulohardy

вы еще постите говно? тогда я иду к вам
Всефорумный модератор
1,891
1,254
что-то не хочет, зависает намертво. было бы классно пойти в дс и научить меня +- писать скрипты, а то сложное не умею)) ниже код как я сделал
потому что нужно учить базу, а не копировать код как есть и себе в файл его пихать
лучше обратись в blast.hk/forums/16, обучать тебя в дискорде никто не будет
 

Похожие темы

  1. Ответы
    497
    Просмотры
    243K
    • Закрыта
    • Опрос
    Ответы
    262
    Просмотры
    76K
  2. Ответы
    8
    Просмотры
    4K
  3. Ответы
    13
    Просмотры
    7K