Tudo que Lyu postou
-
(Resolvido)como aumento a barra de skills (LEVEL) na source?
Isso é parte do client (tibia.exe), não tem como arrumar via SERVER. Veja bem, 65535 é o número máximo para o tipo uin16_t, teria que alterar no client para uint32_t, pois seu valor máximo é 4294967295.
-
Mudar cor da mensagem
Via SERVER não tem como, a não ser que utilize as disponíveis que são VERMELHA, BRANCA e VERDE. Agora via CLIENT é sim possível, acredito.
-
(Resolvido)Ao invés de Curar, Danificar.
basicamente inverta os valores, negative-os.
-
[HERO BAIAK] VAGAS NA STAFF
Servidor legal, parabéns!
-
GesiorACC 2019 8.60 UPDATE 29/06/2019
Material incrível @Natanael Beckman,obrigado por compartilhar conosco!
-
Errros No TheOTXServer
Sua distro não conseguiu deserializar alguns tiles. Você simplesmente deve ir nas posições que estão no console e verificar quais itens estão lá, considere a remoção dos mesmos.
-
Aprendendo sobre funções LUA
Está certo sim, você só esqueceu de fechar o escopo com um end. Sempre que você declarar um if, terá que fechá-lo em algum momento, escopo é o espaço que fica entre o if e o end. o ponto foi necessário para acessar a variável itemid que fica dentro de item, no caso, o argumento item não é um inteiro(número), é tipo uma tabela. Neste caso, não é necessário utilizar elseif a ponto de manter as 3 verificações independentes, digamos que, separadinhas facilitando a leitura. Mas dependendo, dar pra utilizar elseif sim. o ponto é para você acessar variáveis dentro de uma tabela, porque se usar somente variavel = 5, estará declarando uma variável global e não terá relação alguma com a variável que está dentro da tabela.
-
Aprendendo sobre funções LUA
Muito bem amigo, continue assim, se esforce e pratique bastante que isso é o que dar resultado no aprendizado. O seu script está ficando interessante, porém possui alguns probleminhas, mas é NORMAL, não se assuste. O refiz para você estudá-lo e entender algumas coisas, enchi de descrições rsrs -- variáveis locais (só são acessíveis dentro de escopos ou arquivos caso estejam soltas) local needStorage = 211100 local needLevel = 100 local needItemId = 2545 function onUse(cid, item) -- função/evento com dois argumentos: cid = ID do jogador, item = userdata do Item -- esta verificação abaixo, seria útil para funcionar somente com o itemID informado na variável local ali em cima. if item.itemid == needItemId then -- verifica se o ID do item que está dando USE é igual ao itemId que está na variável local lá em cima. return false -- o script retorna falso e interrompe a execução do restante abaixo, ou seja, para por aqui mesmo. Lembre-se disso. end if getPlayerLevel(cid) < needLevel then -- se o level for menor que o necessário doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Você não possui level suficiente.') return false end if getPlayerStorageValue(cid, needStorage) == -1 then -- VERIFICA se o jogador possui a storage informada lá em cima na variável local, no caso, -1 é o valor padrão para storages e significa que não tem caso realmente seja igual a -1. doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Você não possui a storage necessária.') return false end -- ACIMA, você ver que há 3 condições, verifica o item se é o correto, o level e a storage. -- Se passar dessas 3 condições, o código abaixo será executado e validado, neste caso, executando abaixo, significa que o jogador possui todos os requisitos acima. doCreatureAddHealth(cid, 1000 * 1000) -- vida adicionda doCreatureAddMana(cid, 1000 * 1000) -- mana adicionada doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Parabéns, você recebeu uma porrada de HP e MANA.') return true end Irei lhe indicar alguns editores de textos legais para lhe ajudar a organizar e entender melhor os seus códigos Notepad++ Sublime Text 3 Atom Utilizo os 3 e são ótimos, não é bom utilizar notepad normal porque ele não é apropriado para programação, somente texto SHAHUSAHUAS
-
Aprendendo sobre funções LUA
Opa meu querido, que bom que se interessou pela linguagem LUA, tenho certeza que irá gostar bastante daqui pra frente ao decorrer de seu aprendizado. Então, vamos lá! Irei tentar resumir algumas coisas para você.. Bom, tabelas são meio que containers, dentro, você pode agrupar tanto variáveis, funções/métodos, valores e até mesmo outras tabelas, veja bem: local tabela = { aqui é o interior da tabela, que fica entre as chaves } aqui está um script de exemplo: local tabela = { variavel = 0 } tabela.variavel = 5 print(tabela.variavel) como você pode ver, eu declarei uma tabela com uma variável dentro, inicializando com o valor 0. Após a declaração, alterei o valor dessa variável para 5 e depois imprimi este valor no console. Este é o básico de tabelas, você pode fazer um monte de coisa, também pode acessar valores soltos baseado nos índices, por exemplo : local tabela = {5, 3, 10} print(tabela[2]) Neste caso, imprimi o segundo índice da tabela, que é o valor 3, em lua, índices começam por 1 diferente de C++ por exemplo que começa com 0. Como você já sabe, true e false são boleanos que se auto-explica; verdadeiro ou falso. Um exemplo que irá lhe esclarecer com facilidade é uma função de validação, veja só: function isPremium(player) if player:getPremiumDays() > 0 then return true end return false end Simplesmente se a quantidade de dias premium do jogador for maior que zero, retorna verdadeiro, senão retorna falso, assim, você pode pôr verificações em partes de seu código, dando acesso ao conteúdo após o if somente se o jogador for premium, veja: if isPremium(player) then print('você é premium.') else print('você não é premium, sinto muito.') end E return com boleanos se resume a isso. Ah, funções podem retornar outras estruturas também, como valores, strings, tabelas, outras funções, etc.. isso você vai entender mais pra frente. or e and você pode os chamar de operadores lógicos, são eles que lhe darão controle da situação durante a execução de seu código. Além deles, também existe o not, veja um exemplo, não é complicado: if isPremium(player) and getName(player) == "Jorge" then print('você é premium.') else print('você não é premium, sinto muito.') end Neste exemplo, utilizei o operador and. Agora só irá printar "você é premium" se o jogador for premium e se ele se chamar Jorge. Olha que legal, eu praticamente traduzi a condição para português hahah. E se eu utilizar o operador or no lugar do and nessa condição? Neste caso, ele irá printar "você é premium" caso o jogador seja premium ou possua o nome Jorge, ele sendo o Jorge, não é obrigatório ser premium para validar essa informação, já que utilizamos OR. Espero que tenha entendido, não deu pra explicar melhor porque já ta tarde, preciso dormir, mas se quiser ajuda com alguns conceitos, pode me chamar no Discord que eu dou uma força. Abraços amigão! Boas aulas! ?
-
AJUDA SCRIPT!! OTX 2.0
Tente isso local storage = 34550 function onUse(cid, item, frompos, item2, topos) if getPlayerStorageValue(cid, storage) ~= -1 then return doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, 'This is empty.') end if getPlayerVocation(cid) > 5 then return doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, 'You is already promoted.') end setPlayerPromotionLevel(cid, 1) setPlayerStorageValue(cid, storage, 1) doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_GREEN) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, 'Congratulations, you are promoted.') return true end
-
Ajuda com meu Pokemon Moves.lua > "eof" expected near end.
Tá faltando um end para fechar um elseif no script pokemon moves.lua, poste o código para que possamos lhe ajudar.
-
ALGUEM PODE AJUDAR
Testa aí amigo local config = { tempo = 5, --tempo em segundos mensagem = { texto = "[TOP]", --não use mais de 9 caracteres efeito = TEXTCOLOR_LIGHTBLUE --efeito para a função doSendAnimatedText }, efeito = 30, --efeito da função doSendMagicEffect globalstr = 150202 -- uma global storage qualquer q esteje vazia } function TopEffect(cid) local var = tostring(getGlobalStorageValue(config.globalstr)):gsub(':', ''):explode(',') if not isCreature(cid) or getPlayerName(cid) ~= var[1] then return LUA_ERROR end doSendAnimatedText(getCreaturePosition(cid), config.mensagem.texto, config.mensagem.efeito) doSendMagicEffect(getCreaturePosition(cid), config.efeito) addEvent(TopEffect, config.tempo*1000, cid) end function onLogin(cid) if tonumber(getGlobalStorageValue(config.globalstr)) then -- virgin local query = db.getResult("SELECT `name`, `level` FROM `players` WHERE `group_id` < 2 ORDER BY `level` DESC LIMIT 1") if (query:getID() ~= -1) then local name = query:getDataString("name") setGlobalStorageValue(config.globalstr, ":"..name..",:"..query:getDataInt("level")) if getPlayerName(cid) == name then doCreatureSetGuildEmblem(cid, 1) end TopEffect(cid) end else TopEffect(cid) end registerCreatureEvent(cid, "CheckTop") return true end function onAdvance(cid, skill, oldLevel, newLevel) if skill ~= SKILL__LEVEL then return true end local var = tostring(getGlobalStorageValue(config.globalstr)):gsub(':', ''):explode(',') if newLevel > tonumber(var[2]) then doBroadcastMessage("O jogador " .. getPlayerName(cid) .. " tornou-se o novo Top Level. Parabens!", 22) setGlobalStorageValue(config.globalstr, ":"..getPlayerName(cid)..",:"..newLevel) doCreatureSetGuildEmblem(cid, 1) TopEffect(cid) end return true end
-
erro na compilaçao
Não encontrou as bibliotecas. Possa ser que as mesmas não estejam instaladas, ou então, o path informado no projeto está errado.
-
Elements - Advanced Mining System (skills + coins + levels)
Daora @Nolis, parabéns e obrigado pelo conteúdo!
-
[Show Off] Pokémon 1.x - by Lenny
Parabéns, seu tópico de conteúdo foi aprovado! Muito obrigado pela sua contribuição, nós do Tibia King agradecemos. Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.
-
(Resolvido)bug no look e showvoc
É conflito mesmo. O chato é que esses scripts setam uma nova descrição toda vez que um jogador dar look em outro, independente de qual jogador seja, isso é errado. O certo mesmo seria concatenar uma nova descrição com a atual uma única vez, exemplo : local newDesc = '\nnova descrição' local desc = getPlayerSpecialDescription(thing.uid) desc = desc .. newDesc doPlayerSetSpecialDescription(thing.uid, desc) Tô terminando umas coisas, e se der tempo, vejo se ainda hoje faço alguma coisa por você.
-
(Resolvido)bug no look e showvoc
Algo que percebi, é que os 3 scripts utilizam "doPlayerSetSpecialDescription" para alteração de descrição. O possível problema, é simplesmente um conflito entre os 3 scripts, pois "doPlayerSetSpecialDescription" seta uma nova string na variável "desc". Faça o seguinte, deixe somente um dos scripts rodando e veja se funcionará corretamente.
-
(Resolvido)bug no look e showvoc
Por favor, poste o script para que possamos te ajudar.
-
(Resolvido)SCRIPT BLESS ATÉ 3 RESET
Substitui seu código e ver se soluciona.. function onCombat(cid, target) if not isPlayer(target) then return true end if getPlayerResets(cid) < 3 or getPlayerResets(target) < 3 then return false end return true end
-
(Resolvido)SCRIPT BLESS ATÉ 3 RESET
tranquilo, qualquer coisa só postar aqui, estarei seguindo o tópico.
-
(Resolvido)SCRIPT BLESS ATÉ 3 RESET
Tente isso.. data/creaturescripts/scripts/resetprotect.lua function onCombat(cid, target) if (isPlayer(target) and getPlayerReset(target) < 3) or (getPlayerReset(cid) < 3) then return false end return true end data/creaturescripts/creaturescripts.xml <event type="combat" name="ResetProtect" event="script" value="resetprotect.lua"/> data/creaturescripts/login.lua registerCreatureEvent(cid, 'ResetProtect')
-
erro record.lua
Tente assim : function onRecord(current, old, cid) db.query("INSERT INTO `server_record` (`record`, `world_id`, `timestamp`) VALUES (" .. current .. ", " .. getConfigValue('worldId') .. ", " .. os.time() .. ");") addEvent(doBroadcastMessage, 150, "New record: " .. current .. " players are logged in.", MESSAGE_STATUS_DEFAULT) end
-
erro record.lua
poste o script
-
storage time
no caso, você quer resetar a storage do jogador depois de um certo tempo? se for isso, utilize esta minha modificação que deixarei abaixo.. Ahh, um detalhe! O intuito do script é dar storage somente para quem matou o boss? Ou entendi errado? Porque se sim, fiz algumas correções, antes estava iterando a deathList toda. local config = { boss = '[BOSS]Gonka', storage = 20000, time = 300 -- 5 minutes } function onDeath(cid, corpse, deathList) if isMonster(cid) and getCreatureName(cid):lower() == config.boss:lower() then local player = deathList[1] if isPlayer(player) then doBroadcastMessage(('O player %s matou o %s e recebeu a outfit Supremo.'):format(getPlayerName(player), config.boss)) setPlayerStorageValue(player, config.storage, os.time() + config.time) end end return true end function onThink(cid) local time = getPlayerStorageValue(cid, config.storage) if time ~= -1 and time < os.time() then setPlayerStorageValue(cid, config.storage, -1) doPlayerPopupFYI(cid, 'Atenção, sua outfit Supremo expirou.') end return true end Agora só adicionar a tag (não esqueça de alterar o nome do arquivo no XML) do novo evento onThink e um register em login.lua : <event type="think" name="OutfitBossThink" event="script" value="scriptname.lua"/> login.lua : registerCreatureEvent(cid, 'OutfitBossThink')
-
storage time
Só utilizar aquele "métodozin" padrão : Seta os.time() + seconds na storage ao dar a outfit ao jogador, depois só verificar em qualquer evento, seja onLogin, onThink; vai de sua preferência : if getPlayerStorageValue(cid, storage) <= os.time() then -- fazer aqui a remoção da outfit end