Jump to content
Close

Sphynx1

Member
  • Content Count

    32
  • Joined

  • Last visited

  • Days Won

    1

Sphynx1 last won the day on May 30

Sphynx1 had the most liked content!

About Sphynx1

  • Rank
    Craftsman

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Sim é possível, creio que seria necessário C++ para isso, adições nas sources do servidor, apenas um programador com experiência conseguiria fazer isso. O sistema em si não é novidade, já joguei alguns servidores RPG que tinham isso, porém todos faliram, RPG não é um conteúdo que o Brasileiro gosta em minha opinião, ao menos no Tibia. Espero que tenha ajudado, até outra hora.
  2. Olá comunidade. Eu criei um script a madrugada passada para tentar ajudar um amigo que usa 'OTX' porém dá um erro bizarro no 'lib/compat.lua' e a função 'doAddPlayerOutfit' retorna valor 'NIL'. Eu não sei como resolver, mas está funcionando perfeitamente no 'TFS 0.4'. Espero que alguém em algum lugar do tempoespaço possa se beneficiar desse script já que os que encontrei estão todos muito feios e confusos. 1. Acesse a pasta 'data/talkactions/scripts' e crie um novo 'arquivo.lua' chamado 'addonpresent.lua', dentro adicione o conteúdo abaixo. function onSay(cid, words, param, channel) local maleOutfits = {["citizen"] = {128}, ["mage"] = {130}, ["knight"] = {131}, ["nobleman"] = {132}, ["summoner"] = {133}, ["warrior"] = {134} } local femaleOutfits = {["citizen"] = {136}, ["mage"] = {138}, ["knight"] = {139}, ["nobleman"] = {140}, ["summoner"] = {141}, ["warrior"] = {142} } local mensagens = {"Você recebeu o seu addon e consumiu o item bônus para isto.", "Verifique o que você digitou e tente novamente, parametros inválidos.", "Você não possui o item necessário para receber um addon.", "Certifique-se que você digitou o nome do addon corretamente e tente mais uma vez."} local efeitinga = {[1] = {name = CONST_ME_POFF}, [2] = {name = CONST_ME_CAKE}, [3] = {name = CONST_ME_HEARTS}, [4] = {name = CONST_ME_GIFT_WRAPS} -- efeitos que seram exibidos } local param = string.lower(param) if not isPremium(cid) then doCreatureSay(cid, "Você não possui Premium Account, portanto não poderá utilizar o item de addon.", TALKTYPE_ORANGE_1) -- MSG que será exibida p/ o nao premium return true end if getPlayerItemCount(cid, 6497) > 0 then -- 6497 é o ID do item que será usado por você, se for maior que 0 a quanidade na sua bag então if param ~= "" and maleOutfits[param] and femaleOutfits[param] then doPlayerRemoveItem(cid, 6497, 1) -- o item 6497 será consumido doCreatureSay(cid, mensagens[1], TALKTYPE_ORANGE_1) for k, v in pairs(efeitinga) do doSendMagicEffect(getCreaturePosition(cid), v.name) end if getPlayerSex(cid) == 0 then doPlayerAddOutfit(cid, femaleOutfits[param][1], 3) elseif getPlayerSex(cid) == 1 then doPlayerAddOutfit(cid, maleOutfits[param][1], 3) end else doCreatureSay(cid, mensagens[2], TALKTYPE_ORANGE_1) end else doCreatureSay(cid, mensagens[3], TALKTYPE_ORANGE_1) end return true end 2. Regresse até 'data/talkactions' e abra o arquivo 'talkactions.xml', dentro adicione o conteúdo abaixo. <talkaction words="!addon" event="script" value="addonpresent.lua"/>
  3. O meu nome é Rodrigo, eu tenho vinte anos e comecei nos OTservers ao mesmo tempo que no Tibia Global, por volta de 2004. Eu não sabia escrever e nem ler nessa época, então meu irmão me usava como uma espécie de bot para matar Rotworm em Fibula. O meu primeiro servidor foi um Vancini Yurots, eu não sabia mexer nos editores de mapas então eu construia um mapa inteiro com o /i e quando o servidor caia eu perdia todo trabalho. Tive alguns servidores após isso, nada muito grande, me envolvi em alguns projetos que acabaram sendo apenas projetos mesmo. Regressei faz pouco tempo após ver alguns vídeos sobre Tibia no YouTube, hoje estou focado em aprender .lua, tenho construido alguns pequenos códigos com a ajuda de dois programadores mais experientes e pacientes, programação nunca foi meu forte mas abrir qualquer servidor hoje em dia sem ter nenhuma noção de programação é uma me***.
  4. <item id="2415" article="a" name="Tunic Inicial"> -- name é o nome do item. <attribute key="description" value="Health recovery 8000/s and Chakra 8000/s." /> -- Description é a descrição que vai aparecer quando você der look <attribute key="weight" value="3500" /> -- esse é o peso do item <attribute key="armor" value="20" /> -- quantidade de armadura que vai dar <attribute key="skillAxe" value="20" /> -- quantidade de axe <attribute key="skillClub" value="20" /> -- quantidade de club que vai dar <attribute key="skillSword" value="20" /> -- quantidade de sword que ira adicionar <attribute key="skillDist" value="20" /> -- quantidade de distancia que vai dar <attribute key="magiclevelpoints" value="20" /> -- quantidade de ml que vai dar <attribute key="manaGain" value="8000" /> -- quantidade de mana que o player vai ganhar por turno <attribute key="manaTicks" value="1000" /> -- tempo <attribute key="healthGain" value="8000" /> -- quantidade de vida que o player vai ganhar por turno <attribute key="healthTicks" value="1000" /> -- tempo <attribute key="showattributes" value="1" /> -- exibir atributos? 1 é sim, 0 é não <attribute key="slotType" value="body" /> -- slotType é o lugar, o slot que esse item tem que ficar, como é body significa que é uma armadura, porém poderia ser feet e ai seria uma bota, etc. </item> Espero que tenha te ajudado, até a próxima.
  5. O código foi reformulado e agora utiliza StorageGlobal. Quando um player aleatório passar pela ponte vai ser adicionado uma StorageGlobal ao servidor, há também uma adição no GlobalEvents, a cada uma hora verifica se a StorageGlobal está ativa, se estiver, então desativa deixando os Trolls prontos para mais um ataque, segue abaixo as alterações no código e mais uma vez, agradeço os comentários. 😋 A sim, e também a chance do ataque agora é de dez porcento. Alterações abaixo: Siga até 'data/movements/scripts' e faça alterações no arquivo: function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) local configuration = { monstrosTime = 1*5*1000, storage = 98756, chance = math.random(1, 100), monsters = { [1] = {name = "Troll Champion", pos = {x = 1001, y = 1110, z = 9}}, [2] = {name = "Troll", pos = {x = 1000, y = 1107, z = 9}}, [3] = {name = "Troll", pos = {x = 1007, y = 1109, z = 9}} } } if isPlayer(cid) == true and configuration.chance <= 10 then if getGlobalStorageValue(configuration.storage) < 1 then doCreatureSay(cid, "A ponte não parece segura e quando você dá o primeiro passo ouve um grunhido e nota a presença de um ser estranho.", TALKTYPE_ORANGE_1) addEvent(function() for k, v in pairs(configuration.monsters) do doCreateMonster(v.name, v.pos) end end, configuration.monstrosTime) setGlobalStorageValue(configuration.storage, 1) end end return true end Siga para globalevents.xml e adicione: <globalevent name="removerStorage" interval="3600000" event="script" value="removerStorage.lua"/> Logo após siga para pasta 'scripts' em 'globalevents', crie um arquivo.lua nomeado 'removerStorage.lua' e adicione isto dentro: function onThink(interval) local configuration = { storage = 98756, segundos = 1*5*1000 } if getGlobalStorageValue(configuration.storage) == 1 then addEvent(function() setGlobalStorageValue(configuration.storage, 0) end, configuration.segundos) end return true end
  6. Vou fazer isso e postar algum outro script mais tarde se eu conseguir. Valeu!
  7. @JoviM Para ser sincero não tenho ideia de como é que adiciona chance e esse tempo global, mas isso já se passava pela minha mente quando fiz o código. Eu tô precisando estudar mais. 😅
  8. Olá galera, vocês conhecem as lendas dos Trolls de baixo da ponte? Eles estão sempre na espreita, aguardando alguém para roubar, assassinar, estuprar e comer suas almas (as últimas partes são brincadeira). Me baseando nessa lenda eu fiz esse simples script, é um dos primeiros códigos que consigo desenvolver sozinho(tive ajuda), eu espero que ajude alguém em algum lugar do tempoespaço, é um script ótimo se você assim como eu gosta de pontes e também sempre teve a vontade de incrementar alguns de seus mapas com scripts. 1º. Acesse a pasta raiz do seu servidor, logo após siga o seguinte caminho: data/movements e abra o arquivo movements.xml. O código que você devera adicionar dentro deste arquivo está listado abaixo. <movevent type="StepIn" actionid="DigiteONumeroDeUmaActionAqui" event="script" value="ponte.lua"/> 2º. Dentro de data/movements abra a pasta 'scripts' e crie um arquivo .lua nomeado de 'ponte', dentro deste adicione o seguinte código. function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) local configuration = { monstrosTime = 1*5*1000, -- tempo até a criatura aparecer tempoDeStorage = 1*20*1000, -- em quanto tempo será removido a storage e se tornará possivel as criaturas resurgirem storage = 987459, -- numero da storage monsters = { [1] = {name = "Troll Champion", pos = {x = 1001, y = 1110, z = 9}}, -- Nome, quantidade e posição dos monstros, altere a vontade [2] = {name = "Troll", pos = {x = 1000, y = 1107, z = 9}}, [3] = {name = "Troll", pos = {x = 1007, y = 1109, z = 9}} } } if isPlayer(cid) == true then if getPlayerStorageValue(cid, configuration.storage) < 1 then doCreatureSay(cid, "A ponte não parece segura e quando você dá o primeiro passo ouve um grunhido e nota a presença de um ser estranho.", TALKTYPE_ORANGE_1) -- MSG que você quer exibir addEvent(function() for k, v in pairs(configuration.monsters) do doCreateMonster(v.name, v.pos) end end, configuration.monstrosTime) setPlayerStorageValue(cid, configuration.storage, 1) addEvent(function() setPlayerStorageValue(cid, configuration.storage, 0) end, configuration.tempoDeStorage) end end return true end 3º. Inicie o seu servidor e adicione o número da 'ActionID' que você inseriu em 'movements.xml' a algum piso de sua preferência, no caso eu adicionei no meio da ponte. Seja criativo.
  9. @Yinz Você está redondamente certo sobre as últimas imagens estarem puxadas para o Tibia, mas não se preocupe, essa é apenas uma ilha para testes, estou utilizando o mapa principalmente para aprender mais sobre .lua e tentar recuperar um pouco da habilidade de mapas que perdi com o tempo, na versão final, ou mesmo para um futuro Alfa/Beta, será muito mais puxado para o derivado do que para o Tibia em si, a nossa meta é com o tempo não utilizar mais nenhuma sprite do Tibia Global. Muito obrigado pelo seu comentário, e por dizer que gostou do começo, é sempre bom receber feedback de algo que você colocou tempo. @lordzetros Muito obrigado pelo comentário e pela força, agradeço imensamente.
  10. Muito tempo sem atualizar o tópico, eu lamento porém não tinha e ainda não tem muito a ser mostrado. A boa notícia é que não estou mais sozinho, encontrei um ótimo programador e logo após um novo spriter se juntou ao time, agora então somos em três membros e isso é bom pois acelera o processo de desenvolvimento imensamente. O programador do qual eu tenho imensa gratidão, está constantemente me auxiliando na minha "jornada" pela maestria na programação, graças a ele acabei evoluindo muito mais do que seria possível desde o tempo que decidi tentar me especializar na parte de programação, no início do projeto eu não sabia nada sobre programação e hoje sou capaz de compreender e produzir códigos. Nessa mesma data do mês que vem talvez teremos algo mais empolgante a ser mostrado, no mais eu gostaria de exibir algumas imagens e dizer que a equipe se encontra aberta a propostas, novos membros e o feedback em geral sobre tudo que for produzido e postado.
  11. Olá, esse é um dos primeiros scripts que eu consigo fazer, resolvi trazer ao fórum pois talvez em algum momento da história isso sirva para alguém fazer alguma coisa. Eu também gostaria de ceder todos os créditos desse trabalho para o @WooX, pois sem ele eu não teria o conhecimento necessário para fazer o script funcionar, obrigado. local configuration = { positionParedinso1 = {x=1067, y=1071, z=7, stackpos=1}, -- Posição do objeto que ira sumir time = 1*15*1000, -- tempo para o objeto voltar para o seu lugar devido monstrosTime = 1*10*1000, -- tempo até os monstros despertarem guardioes = { [1] = {name = "Hellfire Fighter", pos = {x = 1065, y = 1071, z = 7}}, -- Todas posições onde os monstros seram criados [2] = {name = "Massive Fire Elemental", pos = {x = 1061, y = 1069, z = 7}}, -- Bem como seus nomes e quantidade [3] = {name = "Fury", pos = {x = 1069, y = 1074, z = 7}}, [4] = {name = "Demon", pos = {x = 1069, y = 1071, z = 7}}, [5] = {name = "Diabolic Imp", pos = {x = 1066, y = 1074, z = 7}}, [6] = {name = "Fire Devil", pos = {x = 1064, y = 1075, z = 7}}, [7] = {name = "Fire Elemental", pos = {x = 1062, y = 1069, z = 7}}, [8] = {name = "Massive Fire Elemental", pos = {x = 1067, y = 1068, z = 7}} } } function onUse(cid, item, fromPosition, itemEx, toPosition) if item.itemid == 1945 then -- alavanca doTransformItem(item.uid, 1946) positionParedinso = getThingFromPos(configuration.positionParedinso1) if positionParedinso.itemid ~= 0 then doRemoveItem(positionParedinso.uid, 1) doCreatureSay(cid, "Um som terrível de engrenagens antigas se movendo pode ser ouvido imediatamente após você puxar a alavanca. \z Estrondos, chamas e vozes demoniacas estão vindo na sua direção, são ouvidos cada vez mais altos, corra por sua vida, \z você acaba fezer um mal antigo despertar.", TALKTYPE_ORANGE_1) -- Mensagem que será exibida após você puxar a alavanca addEvent(function() for k, v in pairs(configuration.guardioes) do doCreateMonster(v.name, v.pos) end end, configuration.monstrosTime) addEvent(doCreateItem, configuration.time, 12794, configuration.positionParedinso1) -- "12794" é o ID da parede que você quer criar após puxar a alavanca end else doTransformItem(item.uid, 1945) end end
  12. Em login.lua adicione: registerCreatureEvent(cid, "MutePlayer") Reinicie o OTServer e ai você tenta. Confesso que eu não li o script, estou meio sem tempo, mas amanhã na parte da tarde provavelmente terei tempo.
  13. Me manda o seu creaturescript.xml e também o seu login.lua. Eu vou tentar te ajudar.
  14. Nós não fizemos muitas coisas, o mapa para testes está quase finalizado e houve um brainstorm e deste acabaram por surgir algumas boas ideias, são inovadoras e nunca antes concretizadas nesse gênero. Não tenho muito para mostrar ainda, deixarei aqui algumas imagens para tentar garantir algum hype, eu realmente não gostaria de deixar o tópico as traças, é sempre bom atrair visibilidade e mostrar que o projeto ainda continua vivo, penso que atrai mais interesse desse modo. Eu não tenho as habilidades que costumava ter em questão de MAP, porém eu estou tentando. Agradeço a todos por acessarem esse post, se houver alguma dúvida, critica, sugestão ou interesse de auxiliar no desenvolvimento peço que encaminhem uma MP para meu perfil.
  15. @guinaatz Obrigado pelas palavras, é bom receber comentários de incentivo. Eu estou sim precisando de uma mão, depende muito, deixa o seu Discord por MP que eu entro em contato e a gente vai se falando. 😀 @Tópico Atualmente estou preparando os meus assets para começar a mapear, não tenho muito o que mostrar, só não gosto de deixar o tópico sem atualização, dá a entender que paramos e vamos longe ainda. Eu estou enferrujado por ficar anos sem abrir o mapa editor, porém aos poucos eu vou me acostumando novamente, assim espero. Isso é uma cabana(óbvio), não há nada ai, isso será uma ilha pequena e sem nenhum enredo, testaremos a funcionalidade dos scripts nessa área, será como a famosa GM Island do Tibia Global.

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...