Jump to content
Close

Yan Liima

Member
  • Content Count

    294
  • Joined

  • Days Won

    17

Yan Liima last won the day on August 12

Yan Liima had the most liked content!

About Yan Liima

  • Rank
    Scripter,Programador,Mapper,WebMaster.
  • Birthday 01/01/2001

Profile Information

  • Gender
    Masculino
  • I am
    Mapper
    Scripter
    Programmer
    Webmaster
  • My character
    [ADM] Night

Recent Profile Visitors

2026 profile views
  1. Show, vllw irmão! Download do cliente atualizado!
  2. Não, é um globalevents. onStartup(), só é executado quando você abre a distro, antes do servidor ficar on. É ali mesmo onde o nosso querido Vodkart disse. Os tutores do seu servidor tem o ID 2 e 3? Se for o caso deixe assim: `group_id` < 4 Ele vai fazer a verifição e deletar do groupID 3 pra baixo.
  3. Não estarei utilizando esse sistema por conta de não utilizar a mesma versão de distro e Otsverv, e sem contar que o sistema está em faze beta né. Mais venho aqui te parabenizar pelo ótimo trabalho. Sempre deixei bem claro o quanto tu manja em programação, sem contar que me ensinou muito quando apenas era um aprendiz também. Tmj irmão, continue com seus ótimos trabalhos sempre! Bem inovador isso ai, eu sinceramente não vi nada semelhante além do Cast
  4. Que resposta simples e educada kkkk. Eu uma vez repassei o sistema em LUA, e pelo que percebi, parece que não estava dando continuidade na parte de checagem(check) da função corpseRetireItems.
  5. Creaturescript: local storage = 48999 -- str que precisa ter function onLogin(cid) local rate = 1.3 -- 30%, 1.2 = 20%... if getPlayerStorageValue(cid) == storage then doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Você tem "..((rate - 1)*100).."% de exp a mais!") end return true end function onKill(cid, target) if isPlayer(cid) and isMonster(target) then if getPlayerStorageValue(cid) == storage then local exp = getExperienceStage(getPlayerLevel(cid), getVocationInfo(getPlayerVocation(cid)).experienceMultiplier) local count = ((getMonsterInfo(string.lower(getCreatureName(target))).experience*1.3*exp)/2) --30% doPlayerAddExperience(cid, count) addEvent(doSendAnimatedText, 500, getCreaturePosition(cid), '+'..count, math.random(50,60)) end end return true end <event type="login" name="ExpGuild_L" event="script" value="arquivo.lua"/> <event type="kill" name="ExpGuild" event="script" value="arquivo.lua"/> Só registrar o kill no seu login.lua.
  6. Cara sinceramente não vejo futuro em um servidor que está sendo comprado. Até porque o que estará sendo vendido para você, será vendido para outros e repassados free para alguns. Se a sua inteção é comprar e apenas colocar online da maneira que você pegou, não compensa! E um servidor que pode ser iguais aos demais online. Servidores repetitivos nunca dão bons resultados, até porque fica uma divisão de players. E sem contar que hoje em dia não está facil para OT-Admin ter um bom resultado com jogadores & lucros. Ao meu ver eu acho que aos poucos a galera anda abandonando este lindo jogo que tem muito mais a ser explorado. E com isso, com os jogadores abandonando esse MMORPG e optando por jogar os jogos da atualidade, só sobra os jogadores fieis dos servidores antigos, no qual estão em alta, digamos assim. Acho mais emocionante quando é algo feito por você, você faz da maneira que você quer. Coloca coisas inovadoras, e assim acaba atraindo jogadores para o seu servidor. Pois ele é novo, é diferente dos demais, é inovador! Se você gastar grana comprando um servidor, e não ter retorno, o dinheiro foi gasto em vão. Já tive um servidor caseiro em 2011, ficou online cerca de 1 ano. E acredite, teve muitos jogadores, muitos mesmo! E o PC era um dos piores, utilizava um que o processador já era fixo na placa-mãe, o pente de memoria era de Notebook... E mesmo com bastante jogadores, ele aguentava tranquilo. Eu só não podia abrir o navegador ksksksks. No seu caso funcionaria numa boa. Ai só iria depender da velocidade da sua internet. É claro que eu te aconselho a usar uma HOST, mas não vejo problema em hostear em sua casa. Proteção e essas coisas, é o de menos, dai nos da um jeito kkk Se precisar de algo, estou à disposição! Antigamente quando eu era a toa, sempre pegava uns aprendiz. Infelizmente muitos abandonou o otserv, e um teve um grande sucesso com o servidor e virou as costas para mim.
  7. Daria um pouco de trabalho mais é possivel. Entre em contato comigo!
  8. Pra que tanto ódio no corações de vocês, se organizar certinho todo mundo transa, poxaa!
  9. Quando for um script meu pode me marcar que ajudo na questão. Tem como fazer dessa maneira: Ou assim: -- Créditos para Yan Liima - Night criador da script. local time = 4 -- em segundos 1 = 1 segundo 2 = 2 segundos... local config = { storage = 2193, str_seconds = 120, -- storage e segundos } local say_events = {} local function SayText(cid) if isPlayer(cid) == TRUE then if say_events[getPlayerGUID(cid)] ~= nil then if isPlayer(cid) == TRUE then doSendAnimatedText(getPlayerPosition(cid),"Treinando!", math.random(01,255)) end say_events[getPlayerGUID(cid)] = addEvent(SayText, time * 1000 / 2, cid) doCreatureSetNoMove(cid, true) end end return TRUE end function onSay(cid, words, param, channel) if getPlayerStorageValue(cid, config.storage) > os.time() then return doPlayerSendCancel(cid, "Espere " .. getPlayerStorageValue(cid, config.storage) - os.time() .. " segundos.") end if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Utilize '".. words .. " on' para ligar e '".. words .. " off' para desligar.") return true end if param == "on" then if isPlayer(cid) == TRUE then doSendAnimatedText(getPlayerPosition(cid),"Treinando", math.random(01,255)) end say_events[getPlayerGUID(cid)] = addEvent(SayText, time * 1000, cid) doPlayerSendTextMessage(cid,MESSAGE_STATUS_WARNING,"Você está em modo 'Training'.") doPlayerSendTextMessage(cid,20,"Para sair do modo 'training' diga ".. words .. " off") setPlayerStorageValue(cid, config.storage, os.time() + config.str_seconds) -- LINHA QUE ADC A O EXAUSTED, SÓ COPIAR PARA OUTRO LOCAL SE NECESSARIO elseif param == "off" then stopEvent(say_events[getPlayerGUID(cid)]) say_events[getPlayerGUID(cid)] = nil doPlayerSendTextMessage(cid,MESSAGE_STATUS_WARNING,"Você não está mais em modo 'Training'.") doCreatureSetNoMove(cid, false) end return TRUE end
  10. Melhorar como? Daria pra determinar a storage no proprio comando, verificar se o player existe e apenas aceitar o time em numeros para evitar bug. Ficaria assim: function onSay(cid, words, param) local t = string.explode(param, ",") local player = getPlayerByNameWildcard(t[1]) if(not t[2]) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, words.." player, storage, tempo") return true end if(not player or (isPlayerGhost(player) and getPlayerGhostAccess(player) > getPlayerGhostAccess(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. t[1] .. " não existe ou está offline.") return true end t[3] = tonumber(t[3]) if(not t[3]) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Comando requer parametro numerico.") else setPlayerStorageValue(player, t[2], os.time() + t[3]) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você adicionou a storage: "..t[2].." ao jogador "..t[1].." com o tempo de "..t[3].."!.") end return true end
  11. Pensou correto, só faltou saber executar. Veja como ficaria: local looktype = {3025, 3026} -- looktype da outfit. function onUse(cid, item, frompos, item2, topos) local random_outfit = looktype[math.random(1, #looktype)] if getCreatureOutfit(cid).lookType ~= random_outfit then doSetCreatureOutfit(cid, {lookType = random_outfit}, -1) else doPlayerSendTextMessage (cid, 19, "Você já está utilizando esta roupa!") end return true end
  12. local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local items = { item1 = {6544, 13489}, -- item1 item que será pedido e que será dado na primeira troca } local counts = { count1 = {25, 1}, -- count1 quantidade que será pedido e que será dado na primeira troca } function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'kagome') then selfSay('Voce deseja paga '.. counts.count1[1] ..' '.. getItemNameById(items.item1[1]) ..' por'.. counts.count1[2] ..' '.. getItemNameById(items.item1[2]) ..'?',cid) talkState[talkUser] = 1 elseif talkState[talkUser] == 1 then if msgcontains(msg, 'yes') then if getPlayerLevel(cid) <= 20 then if getPlayerItemCount(cid, items.item1[1]) >= counts.count1[1] then doPlayerRemoveItem(cid, items.item1[1], counts.count1[1]) doPlayerAddItem(cid, items.item1[2], counts.count1[2]) selfSay('Obrigado! Voce acaba de paga '.. counts.count1[1] ..' '.. getItemNameById(items.item1[1]) ..' por '.. counts.count1[2] ..' '.. getItemNameById(items.item1[2]) ..'.', cid) talkState[talkUser] = 0 else selfSay('Voce precisa de '.. counts.count1[1] ..' '.. getItemNameById(items.item1[1]) ..'.', cid) end else selfSay('Voce precisa ter no maximo level 20.', cid) end end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  13. Está sim irmão 😄
  14. Salve salve pessoal, no inicio desse ano estava dando uma estudada e mexendo com a TFS 0.4 rev3884, e vi que havia alguns bugs e que não tinha Cast incluso. Com base nisso decidi atualizar e otimizar a source, já que ainda ela é uma das mais utilizadas no mundo de Otserv. Um rapaz tinha me procurado e comprado ela por um preço razoavel, mas ao descobrir que ele estava revendendo por um preço bem maior, decidi compartilhar esse meu trabalho com vocês! Acredito que possa ser uma das melhores REV atualmente. Conto com o seu feedback, caso haja algum bug, algo que tenha que mudar/optimizar, não exite em avisar aqui no tópico. Toda ajuda será bem vinda xD The Forgotten Server, Tibia Versão: 8.60 O que contém nela? Dentro da pasta contém o config.lua com todas as tag já adicionadas. Não esquecam de executar a Query do Cast na sua DB: Downloads uint8(Effects até 255) Distro: TheForgottenServer.exe Src + datapack: Source & Data ------------------------------------------------------- Downloads uint16(Effects até 65534) Distro: TheForgottenServer.exe Src + datapack: Source & Data É necessário fazer a modificação do Hexadecimal no cliente. Aqui tem um já pronto: Cliente.exe (só será necessario se utilizar a src com o uint 16.) ------------------------------------------------------- Scans: Distro(uint8) & Distro(uint16) Source Cliente Obs: Os virus detectado é um falso positivo, então não se preocupem! E para quem se interessa em saber onde se localiza os code do Cast, aqui está uma imagem. Você pode achar procurando por "//CAST" Façam um ótimo aproveito 😄

Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia partindo do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer publicidade para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução! A publicação do seu anuncio é instantânea!

×
×
  • Create New...