Tudo que luiz.marsilio postou
-
Gesior Players Online
Como eu disse, o script do ricardo só conta a quantidade online direto no banco de dados. Antes o site pegava a informação que o server informa (status). É esse status que está sendo enviado com dados incorretos e é esse status que vai para o OTLIST. Apenas alterar a forma com que os dados são apresentados no site do server não significa que o status enviado pelo server com a quantidade de players esteja correta. Por favor poste a source do server aqui.
-
Erro SQL ao iniciar
Possibilidades: O servidor mysql não está instalado A porta para o servidor mysql é outra que não essa O endereço para o servidor mysql está incorreto (localhost, tentar mudar para 127.0.0.1 se você alterou o arquivo hosts) O servidor mysql está corrompido Lembre-se de que para usar o servidor em modo MYSQL você DEVE instalar um servidor MYSQL, caso contrário não funcionará.
-
SOUCER LENDO IP NUMERICO
É muito provável que você tenha redirecionado o hostname no seu arquivo hosts para esse endereço. Verifique também se o IP está correto nos hosts nas configurações do no-ip.
-
OT NAO FICA ON
Por gentileza coloque mais informações no seu tópico, por exemplo Que versão você está usando O que significa "ot não fica on" Os passos que você fez para chegar nesse erro
-
erro ao compilar
Pela discussão pode ser incompatibilidade dos compiladores, bibliotecas que não foram adicionadas ou bibliotecas não suportadas pela versão do compilador. Fonte: https://stackoverflow.com/questions/7751640/undefined-reference-to-gxx-personality-sj0 Aqui eles dizem que você precisa recompilar as bibliotecas usando o mesmo compilador que está usando para compilar as sources. Fonte: https://stackoverflow.com/questions/2189681/undefined-references-when-trying-to-link-qt-app-with-my-static-library Também é interessante utilizar uma maquina virtual para realizar esses testes com os compiladores, utilizando outras versões do SO de forma que não afete sua maquina.
-
Exhausted em action
Não tenho como testar o script. local config ={ pos = {x=31293, y=32627, z=7}, tempo = 7*86400, -- 7 dias storageTempo = 37, level = 500, storage = 201201112201 } function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerStorageValue(cid, config.storageTempo) > os.time() - config.tempo then doPlayerSendCancel(cid, "Voce ainda nao pode usar esse item") return false end if getPlayerStorageValue(cid, config.storage) == 1 then if getPlayerLevel(cid) >= config.level then if getTilePzInfo(getCreaturePosition(cid)) then doTeleportThing(cid, config.pos) setPlayerStorageValue(cid, config.storageTempo, os.time() + config.tempo) doSendMagicEffect(getPlayerPosition(cid),66) doSendAnimatedText(getCreaturePosition(cid), "Teleport!", TEXTCOLOR_ORANGE) else doPlayerSendCancel(cid, "You need to be in protection zone.") end else doPlayerSendCancel(cid, "Not enough level (500).") end else doPlayerSendCancel(cid, "You need to be epic to use this item.") end return true end
-
Gesior Players Online
Parece que esse problema está relacionado as sources do seu server, onde é registrado a quantidade de jogadores online, uptime e etc. Aparentemente o valor que o server está retornando no status é o 7, enquanto que 18 é a contagem de registros encontrados marcados como online no banco de dados. Sugiro que faça o teste em uma source limpa e verifique se o problema persiste.
-
Bau diário
Olá Reescrevi o código para TFS 1.3 com itens aleatórios. Obs: só recebe 1 item (quantidade), mesmo os agrupáveis. local config = { level = 99, items = { 11258, -- phoenix charm 11259, -- unity charm 11260, -- spiritual charm 11261, -- twin charm 11262, -- solitude charm 2160, -- crystal coin 2195 -- boots of haste }, tempo = 24*3600, -- horas storage = 31402 } function onUse(player, item, fromPosition, itemEx, toPosition) local player = Player(player) if not player then return end if player:getLevel() < config.level then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You must be level 100 or higher.") return end if player:getStorageValue(config.storage) - os.time() > 0 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You must wait 24 hours before getting new daily reward.") return end player:setStorageValue(config.storage, os.time() + config.tempo) player:addItem(config.items[math.random(1, #config.items)]) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have received a random item.") return true end
-
[TFS 1.1+] Area Hardcore
Adicione uma storage ao player quando ele entra na área. Verifique no login se o player tem essa storage, se tiver, remove a redskull e a storage.
-
Aulas de Scripting Lua
edit -> Playlist Curso de C++ (180 vídeos) edit -> Incluir playlist de LUA em Português Para complementar o tópico Aprenda LUA (em inglês) https://learnxinyminutes.com/docs/lua/ Aula de LUA (em inglês):
- TFS 1.3 / Otx3 | Otg Server Global - 11x - 12.40 (SPRITES 13.40) (Updates Diarios)
-
(3º) | [8.60] - Epic Server
O server é bem interessante. Baixei ele e joguei um bom tempo no meu PC pra dar uma olhada. Acho que alguns ajustes ainda são necessários, loot, velocidade dos monstros e algumas coisas no mapa. O server é uma ótima base para criar em cima, já tem muita coisa feita e funcionando muito bem. Parabéns pelo projeto. Quem quer resolver o problema do char não morrer, vai até o arquivo login.lua que está localizado em data/creaturescripts/scripts/login.lua e cole o código abaixo:
-
(Resolvido)Modificar Script de Encher Vida
function isInPvpFight(cid) if getPlayerStorageValue(cid, 887568) - os.time() <= 0 then return false else return true end end Tenta alterar a função assim Edit Outra coisa, a storage só está sendo adicionada à pessoa que ataca e não ao atacado, logo inclua a linha no script: setPlayerStorageValue(target, 887568, os.time()+time) Talvez nem seja necessário alterar a função, uma vez que ela faz exatamente a mesma coisa só escrita de uma forma diferente.
-
[PEDIDO] PORTAL LEVA PARA QUALQUER CIDADE
Você pode me dar mais informações sobre isso? Não entendi muito bem como funciona esse sistema VIP e sua staff.
-
Sistema de Honra Básico [TFS 1.2+]
Olá tibianos. Trago um sistema de honra bem simples. Basicamente, é constituído por três funções, addHonor, remHonor e getHonor. Essas três funções adicionam, removem e buscam a pontuação atual de honra do jogador. Escolhi gravar os dados no banco de dados para ficar mais fácil de manipular. Pode ser aplicado em diversos sistemas, por exemplo: Comprar por Honra; Recompensa em Eventos; Acesso à NPCs; Acesso à Quests; Ganhar desconto em NPCs; Ganhar mais ao vender para NPCs; enfim, a criatividade é o limite. function addHonor(self, value) -- luiz henrique marsilio db.query("UPDATE `players` SET `honor` = `honor` + " .. value .. " WHERE `players`.`id` = ".. self:getGuid().. ";") return true end function remHonor(self, value) -- luiz henrique marsilio db.query("UPDATE `players` SET `honor` = `honor` - " .. value .. " WHERE `players`.`id` = ".. self:getGuid().. ";") return true end function getHonor(self) -- luiz henrique marsilio local query = db.storeQuery("SELECT `honor` FROM `players` WHERE `players`.`id` = " .. self:getGuid() .. ";") if query ~= false then local val = result.getNumber(query, "honor") result.free(query) return val end return -1 end Você precisará inserir uma coluna de nome honor, tipo INT, tamanho 11 e default 0 na sua tabela de players (mysql). Existem tutoriais aqui no fórum que explicam como fazer isso. Deixo um exemplo de aplicação do sistema em um script que dá pontos de honra ao matar outros players. function onKill(player, target) if not target:isPlayer() then return true end -- exemplo de honra sendo adicionada ao matar outro player local honor = math.floor(target:getLevel()/10) addHonor(player, honor) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Your honor points have been increased in " .. honor .. ".") player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You have now " .. getHonor(player) .. " honor points.") -- pode ser estabelecido para condições serem satisfeitas para que a honra seja adicionada nesse caso -- por exemplo config = {level = 100} if target:getLevel() >= config.level then /stuff end entre outros end Outro exemplo é essa talkaction que usei para criar um simples método de troca dos pontos de honra por items. -- lista dos items a serem comercializados pelo sistema de honra item = { ["boots of haste"] = {id = 2195, price = 100} -- id = id do item, price = valor para trocar por pontos de honra } function onSay(player, words, param) choise = item[param] -- seta o indice da tabela que sera acessado id e price if choise then -- se foi digitado alguma coisa de parametro continuar if getHonor(player) >= choise.price then -- verifica se a honra do player é suficiente para esse item escolhido (choise) player:addItem(choise.id, 1) -- add o item escolhido (id) remHonor(player, choise.price) -- desconta honor do player (price) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You have received " .. ItemType(choise.id):getName()) -- mensagem confirmando o recebimento. busca o nome do item por id player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Your current Honor balance is " .. getHonor(player)) -- informa o saldo de honra atual else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Your Honor is not enough to buy this item.") -- mensagem de erro caso nao tenha honra suficiente end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Available items on Honor Store: ") -- se nao houver parametro for i, j in pairs(item) do -- busca na lista os dados dos items disponiveis player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Item: [" .. i .. "]. Price: [" .. j.price .. "].") -- informa os dados encontrados através de mensagem end end return false -- retornar false impede que o comando seja falado pelo player na tela "Player says: !exemplo" end Era isso galera! Se você tem sugestão para um sistema simples deixe nos comentários para que eu possa avaliar e fazer se estiver dentro dos meus conhecimentos.
-
Bless Automático [TFS 1.2+]
Obrigado. Eu estou aprimorando minhas habilidades em LUA, ainda bem básicas. Se tiveres sugestões de scripts que eu possa trazer para o TFS 1.2 serão bem vindas.
-
Erro no Grizzly Adams
A contagem das kills acontece nos creaturescripts. Ali deve ter algum problema. Sugiro você revisar se instalou o sistema corretamente.
-
[PEDIDO] PORTAL LEVA PARA QUALQUER CIDADE
Infelizmente não é possível criar Modal Windows para a versão 8.6 do jogo. Edit. No entanto, é possível criar um comando que o jogador só possa usar se estiver em um local específico, por exemplo. Dessa forma ele poderá acessar a lista de cidades disponíveis e dizer para qual quer teleportar. De certa forma, me parece mais fácil apenas criar um NPC para esse fim.
-
Bless Automático [TFS 1.2+]
Olá tibianos. Criei um script de bless automático com base nessa solicitação: A bless será aplicada somente se o player estiver carregando X item. A bless não será aplicada se o player já tiver bless. Essa bless é somente aplicada no momento em que o player morrer. Configurações: ID do item que o player deve ter para receber a bless automática; Quantidade de bless disponíveis no servidor (para servidores custom); Remover o item ao ativar o sistema ou mantê-lo (bless infinita); Level mínimo para o sistema ser ativado. deathBless.lua config = { id = 2195, -- id do item bless = 6, -- quantidade de blessings do servidor remover = true, -- remover item? true/false minLvl = 100 -- level minimo } -- hasAllBlessings(player) by Luiz Henrique Marsilio. function hasAllBlessings(player) --Verifica se o player tem todas blessings local cont = 0 for i=1,config.bless do if player:hasBlessing(i) then cont = cont+1 end end if cont >= config.bless then -- se nao tiver alguma bless prossegue com o sitema return true else return false end end function onPrepareDeath(creature, killer) if not creature:isPlayer() then return true end if hasAllBlessings(creature) then -- function by Luiz Henrique Marsilio creature:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You are already protected by blessings.") return true end if creature:getLevel() >= config.minLvl then if creature:getItemCount(config.id) >= 1 then for i = 1, config.bless do creature:addBlessing(i) end if config.remover then creature:removeItem(config.id, 1) creature:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You were protected by a blessing charm.") end creature:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You have been blessed by the charm before dying.") else creature:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You were not wearing a blessing charm and was not blessed when died.") end else creature:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You need level " .. config.minLvl .. " or higher to be automatic blessed.") end return true end
-
[Pedido] Item de Bless
config = { id = ITEM_ID -- id do item } function onPrepareDeath(creature, killer) if not creature:isPlayer() then return true end if creature:getItemCount(config.id) >= 1 then for i = 1, 5 do creature:addBlessing(i) end creature:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Você morreu com bless.") else creature:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Você morreu sem bless.") end return true end Para TFS 1.2. Não testei.