Ir para conteúdo
  • Cadastre-se

(Resolvido)[ERROR] onThink no console


Ir para solução Resolvido por megatibiano,

Posts Recomendados

  Em 20/07/2022 em 20:26, xMonkey disse:


Boa tarde, @megatibiano!
Realmente, sua SRC não possui a função getPlayersOnline(), que é um tanto quanto estranho.

Porém, analizando um pouco mais o seu luascript.h, tem um outro jeito :)
Sua SRC possui getWorldCreatures()getWorldCreaturesCount()

A função funciona da seguinte forma:

getWorldCreatures(0) = players
getWorldCreatures(1) = monsters
getWorldCreatures(2) = npcs
getWorldCreatures(3) = todos acima (all)


A partir disso, modifiquei seu script.
Teste o script abaixo:

-- Edited by xMonkey

local config = {
	lottery_hour = "2 hours", -- Tempo ate a proxima loteria (Esse tempo vai aparecer somente como broadcast message)
	rewards_id = {2494, 2472, 2514, 2160}, -- ID dos Itens Sorteados na Loteria
	crystal_counts = 10, -- Usado somente se a rewards_id for crystal coin (ID: 2160).
	website = "yes", -- Only if you have php scripts and table `lottery` in your database!
	days = {
		"Monday-08:00",
		"Monday-13:00",
		"Monday-19:30",

		"Tuesday-08:00",
		"Tuesday-13:00",
		"Tuesday-19:30",

		"Wednesday-08:00",
		"Wednesday-13:00",
		"Wednesday-19:30",

		"Thursday-08:00",
		"Thursday-13:00",
		"Thursday-19:30",

		"Friday-01:22",
		"Friday-13:00",
		"Friday-18:15",

		"Saturday-21:27",
		"Saturday-21:28",
		"Saturday-21:29",

		"Sunday-08:00",
		"Sunday-13:00",
		"Sunday-19:30"
	}
}

-- Custom Function (inicio)
local function getPlayerWorldId(cid)
    if not(isPlayer(cid)) then
        return false
    end
    local pid = getPlayerGUID(cid)
    local worldPlayer = 0
    local result_plr = db.getResult("SELECT * FROM `players` WHERE `id` = "..pid..";")
    if(result_plr:getID() ~= -1) then
        worldPlayer = tonumber(result_plr:getDataInt("world_id"))
        result_plr:free()
        return worldPlayer
    end
    return false
end

local function getOnlineParticipants()
    local players = {}
    for _, pid in pairs(getWorldCreatures(0)) do
        if getPlayerAccess(pid) <= 2 and getPlayerStorageValue(pid, 281821) <= os.time() then
            table.insert(players, pid)
        end
    end
    if #players > 0 then
        return players
    end
    return false
end
-- Custom Function (fim)

function onThink(cid, interval)
    if table.find(config.days, os.date("%A-%H:%M")) then
        if(getWorldCreatures(0) <= 0)then
            return true
        end

        local query = db.query or db.executeQuery
        local random_item = config.rewards_id[math.random(1, #config.rewards_id)]
        local item_name = getItemNameById(random_item)  
        local data = os.date("%d/%m/%Y - %H:%M:%S")
        local online = getOnlineParticipants()

        if online then
            local winner = online[math.random(1, #online)]
            local world = tonumber(getPlayerWorldId(winner))
           
            if(random_item == 2160) then
                doPlayerSetStorageValue(winner, 281821, os.time() + 3600 * 24)
                doPlayerAddItem(winner, random_item, config.crystal_counts)
                doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. config.crystal_counts .." " .. getItemNameById(random_item) .. "s! Congratulations! (Next lottery in " .. config.lottery_hour .. ")")
            else
                doPlayerSetStorageValue(winner, 281821, os.time() + 3600 * 24)
                doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " ..getItemNameById(random_item) .. "! Congratulations! (Next lottery in " .. config.lottery_hour .. ")")
                doPlayerAddItem(winner, random_item, 1)
            end
            if(config.website == "yes") then
                query("INSERT INTO `lottery` (`name`, `item`, `world_id`, `item_name`, `date`) VALUES ('".. getCreatureName(winner).."', '".. random_item .."', '".. world .."', '".. item_name .."', '".. data .."');")
            end
        else
            print("Ninguem OnLine pra ganhar na loteria")
        end
    end
    return true
end

 

OBS: Caso não funcione, por favor, poste seu luascript.cpp para que eu possa analizar como funciona a função em sua SRC

 

Mostrar mais  

image.thumb.png.9fc3e2bf432b64fdfdb20bb39789b27b.png

Desculpe a demora tava fazendo outras atualizações no game mas deu esse erro ai
meu luascript.cpp e esse daqui

luascript.cppFetching info...

Link para o post
Compartilhar em outros sites
  • Respostas 17
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Boa tarde, @megatibiano! Realmente, sua SRC não possui a função getPlayersOnline(), que é um tanto quanto estranho. Porém, analizando um pouco mais o seu luascript.h, tem um outro jeito Sua SRC possui getWorldCreatures() e getWorldCreaturesCount() A função funciona da seguinte forma: getWorldCreatures(0) = players getWorldCreatures(1) = monsters getWorldCreatures(2) = npcs getWorldCreatures(3) = todos acima (all) A partir disso, modifiquei seu script. Teste o

Posted Images

  Em 01/08/2022 em 23:39, megatibiano disse:

image.thumb.png.9fc3e2bf432b64fdfdb20bb39789b27b.png

Desculpe a demora tava fazendo outras atualizações no game mas deu esse erro ai
meu luascript.cpp e esse daqui

Mostrar mais  


tente assim:
 

-- Edited by xMonkey

local config = {
	lottery_hour = "2 hours", -- Tempo ate a proxima loteria (Esse tempo vai aparecer somente como broadcast message)
	rewards_id = {2494, 2472, 2514, 2160}, -- ID dos Itens Sorteados na Loteria
	crystal_counts = 10, -- Usado somente se a rewards_id for crystal coin (ID: 2160).
	website = "yes", -- Only if you have php scripts and table `lottery` in your database!
	days = {
		"Monday-08:00",
		"Monday-13:00",
		"Monday-19:30",

		"Tuesday-08:00",
		"Tuesday-13:00",
		"Tuesday-19:30",

		"Wednesday-08:00",
		"Wednesday-13:00",
		"Wednesday-19:30",

		"Thursday-08:00",
		"Thursday-13:00",
		"Thursday-19:30",

		"Friday-01:22",
		"Friday-13:00",
		"Friday-18:15",

		"Saturday-21:27",
		"Saturday-21:28",
		"Saturday-21:29",

		"Sunday-08:00",
		"Sunday-13:00",
		"Sunday-19:30"
	}
}

-- Custom Function (inicio)
local function getPlayerWorldId(cid)
    if not(isPlayer(cid)) then
        return false
    end
    local pid = getPlayerGUID(cid)
    local worldPlayer = 0
    local result_plr = db.getResult("SELECT * FROM `players` WHERE `id` = "..pid..";")
    if(result_plr:getID() ~= -1) then
        worldPlayer = tonumber(result_plr:getDataInt("world_id"))
        result_plr:free()
        return worldPlayer
    end
    return false
end

local function getOnlineParticipants()
    local players = {}
	local on = getWorldCreatures(0)
    for _, pid in pairs(on) do
        if getPlayerAccess(pid) <= 2 and getPlayerStorageValue(pid, 281821) <= os.time() then
            table.insert(players, pid)
        end
    end
    if #players > 0 then
        return players
    end
    return false
end
-- Custom Function (fim)

function onThink(cid, interval)
    if table.find(config.days, os.date("%A-%H:%M")) then
        local online = getOnlineParticipants()
		if online then
			local query = db.query or db.executeQuery
			local random_item = config.rewards_id[math.random(1, #config.rewards_id)]
			local item_name = getItemNameById(random_item)  
			local data = os.date("%d/%m/%Y - %H:%M:%S")
            local winner = online[math.random(1, #online)]
            local world = tonumber(getPlayerWorldId(winner))

            if(random_item == 2160) then
                doPlayerSetStorageValue(winner, 281821, os.time() + 3600 * 24)
                doPlayerAddItem(winner, random_item, config.crystal_counts)
                doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. config.crystal_counts .." " .. getItemNameById(random_item) .. "s! Congratulations! (Next lottery in " .. config.lottery_hour .. ")")
            else
                doPlayerSetStorageValue(winner, 281821, os.time() + 3600 * 24)
                doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " ..getItemNameById(random_item) .. "! Congratulations! (Next lottery in " .. config.lottery_hour .. ")")
                doPlayerAddItem(winner, random_item, 1)
            end
            if(config.website == "yes") then
                query("INSERT INTO `lottery` (`name`, `item`, `world_id`, `item_name`, `date`) VALUES ('".. getCreatureName(winner).."', '".. random_item .."', '".. world .."', '".. item_name .."', '".. data .."');")
            end
        else
            print("Ninguem OnLine pra ganhar na loteria")
        end
    end
    return true
end

 

Link para o post
Compartilhar em outros sites
  • Solução

 

  Em 02/08/2022 em 11:14, xMonkey disse:


tente assim:
 

-- Edited by xMonkey

local config = {
	lottery_hour = "2 hours", -- Tempo ate a proxima loteria (Esse tempo vai aparecer somente como broadcast message)
	rewards_id = {2494, 2472, 2514, 2160}, -- ID dos Itens Sorteados na Loteria
	crystal_counts = 10, -- Usado somente se a rewards_id for crystal coin (ID: 2160).
	website = "yes", -- Only if you have php scripts and table `lottery` in your database!
	days = {
		"Monday-08:00",
		"Monday-13:00",
		"Monday-19:30",

		"Tuesday-08:00",
		"Tuesday-13:00",
		"Tuesday-19:30",

		"Wednesday-08:00",
		"Wednesday-13:00",
		"Wednesday-19:30",

		"Thursday-08:00",
		"Thursday-13:00",
		"Thursday-19:30",

		"Friday-01:22",
		"Friday-13:00",
		"Friday-18:15",

		"Saturday-21:27",
		"Saturday-21:28",
		"Saturday-21:29",

		"Sunday-08:00",
		"Sunday-13:00",
		"Sunday-19:30"
	}
}

-- Custom Function (inicio)
local function getPlayerWorldId(cid)
    if not(isPlayer(cid)) then
        return false
    end
    local pid = getPlayerGUID(cid)
    local worldPlayer = 0
    local result_plr = db.getResult("SELECT * FROM `players` WHERE `id` = "..pid..";")
    if(result_plr:getID() ~= -1) then
        worldPlayer = tonumber(result_plr:getDataInt("world_id"))
        result_plr:free()
        return worldPlayer
    end
    return false
end

local function getOnlineParticipants()
    local players = {}
	local on = getWorldCreatures(0)
    for _, pid in pairs(on) do
        if getPlayerAccess(pid) <= 2 and getPlayerStorageValue(pid, 281821) <= os.time() then
            table.insert(players, pid)
        end
    end
    if #players > 0 then
        return players
    end
    return false
end
-- Custom Function (fim)

function onThink(cid, interval)
    if table.find(config.days, os.date("%A-%H:%M")) then
        local online = getOnlineParticipants()
		if online then
			local query = db.query or db.executeQuery
			local random_item = config.rewards_id[math.random(1, #config.rewards_id)]
			local item_name = getItemNameById(random_item)  
			local data = os.date("%d/%m/%Y - %H:%M:%S")
            local winner = online[math.random(1, #online)]
            local world = tonumber(getPlayerWorldId(winner))

            if(random_item == 2160) then
                doPlayerSetStorageValue(winner, 281821, os.time() + 3600 * 24)
                doPlayerAddItem(winner, random_item, config.crystal_counts)
                doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. config.crystal_counts .." " .. getItemNameById(random_item) .. "s! Congratulations! (Next lottery in " .. config.lottery_hour .. ")")
            else
                doPlayerSetStorageValue(winner, 281821, os.time() + 3600 * 24)
                doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " ..getItemNameById(random_item) .. "! Congratulations! (Next lottery in " .. config.lottery_hour .. ")")
                doPlayerAddItem(winner, random_item, 1)
            end
            if(config.website == "yes") then
                query("INSERT INTO `lottery` (`name`, `item`, `world_id`, `item_name`, `date`) VALUES ('".. getCreatureName(winner).."', '".. random_item .."', '".. world .."', '".. item_name .."', '".. data .."');")
            end
        else
            print("Ninguem OnLine pra ganhar na loteria")
        end
    end
    return true
end

 

Expand   Mostrar mais  

image.thumb.png.878b95994ffca9e11312b6b88506ca7d.png
Esse error ai

Opa manos a versão do meu serve e TSF 0.4/8.60
Depois que o moderador foi e pediu minha luascript.cpp, percebi que ia ter que mexer nela pra ver como seria as configuração fui mexendo ate que consegui.
esta ai o download do lottery.lua para quem teve esse errozinho.

    <globalevent name="lottery" interval="3600000" event="script" value="lottery.lua"/>

lottery.luaFetching info...

Obrigado a todos que tentaram me ajudar!!! <3

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Estatísticas dos Fóruns

    96843
    Tópicos
    519604
    Posts



×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo