Ir para conteúdo

Sphynx1

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Curtir
    Sphynx1 recebeu reputação de Doria Louro em [MoveMent] Emboscada dos Trolls   
    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.
  2. Obrigado
    Sphynx1 recebeu reputação de DarkRed em Surgir monstros e remover parede ao puxar alavanca   
    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  
  3. Gostei
    Sphynx1 recebeu reputação de Viny 13 em Lembram do NTO antigo sem sprites top down?   
    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.

     
     

     
     
  4. Curtir
    Sphynx1 recebeu reputação de Viny 13 em Lembram do NTO antigo sem sprites top down?   
    @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.
  5. Curtir
    Sphynx1 deu reputação a WooX em Tutorial - Push cruzado e sua história   
    Push Cruzado

    Como prometido, hoje eu vou ensinar como implementar o push cruzado. Este tutorial é feito especificamente para a versão 2 do OTX, porem, devido a simplicidade do código (sério, é muito simples, você vai se surpreender), acredito que possa ser implementado em qualquer source code disponível atualmente.
    Antes do tutorial vou falar sobre como surgiu o "sistema" e de como o mesmo ficou popular entre os jogadores de Baiak, então senta que lá vem história.
    Se você não tem interesse na história de como surgiu e se popularizou e só está aqui pelo tutorial de como implementar, pule para o final do tópico.
     
    História

    Familiar para alguns e desconhecido para muitos outros, o que afinal é esse tal de push cruzado que alguns tanto falam?
    Para entender como surgiu, teremos que voltar alguns anos no tempo, em uma época que OTX não existia e o TFS 1.x ainda era um sonho distante, época essa em que a maioria dos servidores com protocolo 8.60 utilizavam como engine a velha TFS 0.3.6. Foi neste período que alguns jogadores de enforced descobriram este bug, isso mesmo que você leu, o push cruzado é na verdade um bug!
    Mas calma! é apenas um bug inofensivo, mesmo assim, não deixa de ser um bug, que hoje em dia é divulgado como feature nos servidores. Antes de entrar mais a fundo nessa questão, vou terminar de explicar como ele foi descoberto, como ele pode ser utilizado e as vantagens que ele concede aos jogadores que sabem como utiliza-lo.
     
    Nos saudosos dias em que o protocolo 8.60 estava no seu auge na comunidade OpenTibia (70% da Otserv List era composta por servidores 8.60), poucos tinham acesso para a até então recente TFS 0.4 (nesta época TFS 0.4 não era pública, e só podia ser obtida doando uma quantia aos desenvolvedores). Até então, era raro encontrar servidores rodando com TFS 0.4, mais raro ainda um servidor enforced/war, mas assim como uma agulha no palheiro, ele estava lá, Mega-War, o que eu acredito que tenha sido o primeiro servidor de war 8.60 a usar a recente distro.
     
    OTServList em 2011
     
    E foi neste servidor que o push cruzado foi descoberto, por jogadores dedicados a se aperfeiçoarem no PvP, estes foram os primeiros e os que deram origem ao que hoje se conhece como enforcedeiros (jogadores assíduos de servidores de war, com uma habilidade surreal no PvP). Mas algumas questões ficam no ar, TFS 0.4 era realmente recente, porem o protocolo 8.60 já existia há um bom tempo no TFS 0.3, então porque este bug não foi descoberto antes? porque neste servidor em especifico se outros servidores de war 8.60 já existiam?
     
    A resposta é: este bug surgiu justamente no TFS 0.4, para ser mais especifico na rev 3777, tanto é que a versão anterior do TFS (0.3) não continha este bug e nas revisões seguintes do TFS 0.4 ele foi corrigido, com isto o push cruzado se "perdeu", existindo somente no TFS 0.4 (Rev 3777). Devido a isto, os servidores privados de enforced (onde se encontra a maioria dos enforcedeiros hoje em dia) e alguns servidores baiaks utilizam TFS 0.4 até hoje, mesmo existindo opções excelentes em comparação, como TFS 1.x e OTX, tudo devido a este bugzinho que se popularizou muito entre alguns jogadores ao longo do anos. Mas como o push cruzado se popularizou tanto a ponto de chegar ao que é hoje?
     
    Os enforcedeiros tinham um estilo único de PvP, fazendo jogadas que para muitos até hoje não é possível sem o uso de bot. Com o tempo, estes jogadores foram gravando e postando vídeos no Youtube de suas jogadas, para muitos dos que assistiam, tal nível de habilidade só podia ser atingido com auxílio do bot, os mais humildes, aqueles que aceitavam que aquilo era possível sem o uso de bot, entravam nestes servidores de war com a intenção de aprender, não só o push cruzado, mas o push a distancia, a velocidade para realizar jogadas e a visão de jogo num geral.
     
    Alguns dos vídeos antigos da época do Mega-War.
     
    Neste ultimo vídeo em especial, é possivel ver o push cruzado sendo realizado por volta de 1:22 e 3:20 de vídeo.
     
    No inicio de 2013, sem motivo aparente o Mega-War simplesmente fechou. Mas onde há demanda, sempre haverá oferta, com isso surge o ainda mais famoso Total-War.
    O Mega-War foi o inicio para essas estrelas do PvP, mas foi no Total-War que a coisa realmente cresceu. Com cada vez mais vídeos de jogadores exibindo jogadas espetaculares, mais aparecia os chamados novatos (jogadores que admiravam os enforcedeiros e tinham interesse em aprender e praticar as técnicas usadas), na época do Mega-War, dava pra contar nos dedos a quantidade de pessoas que sabiam fazer o push cruzado, afinal, era uma coisa totalmente nova, com poucos meses do Total-War online esse numero cresceu exponencialmente, o servidor ficou no seu auge por cerca de 1 ano e alguns meses.
     
    Alguns vídeos de enforcedeiros no Total-War (incluindo o meu ?).

    Poucos sabem disso, mas eu era GM no Total-War, ajudei no servidor por alguns meses até ter um desentendimento com o dono, nesse momento eu decidi abrir o meu próprio servidor enforced. Eu acompanho a comunidade brasileira de OpenTibia desde 2010, mas nunca tinha levado a sério a ideia de ter meu próprio servidor até então, foi nessa época que eu criei a minha conta aqui no TibiaKing, pois o antigo XTibia (lugar onde eu conheci o que era OpenTibia) havia fechado.
     
    No ano de 2014 encontrar as sources do TFS 0.4 já não era mais problema, estavam por todo lugar. Eu peguei um datapack com mapa de venore (assim como o Mega e Total-War) e coloquei online, nesse período eu comecei a estudar a fundo como funcionava OTServers. Devido a testes de diversas versões diferentes de source, já na época eu percebi que push cruzado era algo exclusivo do TFS 0.4 (isso explica porque o dono do Total-War se recusava a fazer um upgrade), era também tempo do inicio do repositório do OTX que se mostrava promissor em relação ao TFS 0.4.
     
    Cerca de 1 ano depois da abertura do meu servidor eu decidi tentar adicionar o cruzado nas sources do OTX2, uma pessoa dedicada com um objetivo, mas sem saber de nada, por semanas eu comparei o código de ambas as sources, arquivo por arquivo (haja dedicação), e por fim consegui adicionar ao OTX (quando eu descobri o que era, eu confesso que de imediato me arrependi de ter gasto tanto tempo com isso). Com essa alteração eu resetei e reinaugurei meu servidor, o servidor era chamado de Ultra-War, mas ficou mais conhecido por todos como Sv2 porque o servidor era hosteado em 3 locais diferentes, e 1 dos locais era aqui no Brasil, este era conhecido como Sv2.
     
    O Ultra-War foi o primeiro servidor a ter o push cruzado sem utilizar do TFS 0.4, na época OTX já estava se tornando muito popular pois dava uma sensação de ping menor ao jogar, rodando o servidor com OTX e em 3 hosts diferentes, os poucos players que sobraram no Total-War migraram para o Ultra-War, e assim como o Total-War ocupou o lugar do Mega-War no seu fim, o Sv2 passou a segurar esta tocha. Alem dos já antigos enforcedeiros, jogadores novos não paravam de vir de todos os lugares, muitos deles quando aprendiam e aperfeiçoavam as técnicas iam logo aplicar em servidores UP Level (principalmente Baiaks), foi ai que o push cruzado se popularizou fora do enforced, com os jogadores pedindo aos administradores para adicionarem algo que eles sequer tinham noção do que era.
     
    Vídeos do jogador que eu acredito ser o maior responsável pela popularidade do PvP no estilo enforced nos Baiaks.
     
    Enfim... a história acaba por aqui (até porque ficou longa pra kct), no final das contas a história não foi sobre o push cruzado em si, mas sobre o enforced e os enforcedeiros num geral. Agora vamos para a parte que todos querem ver.
     
    O que é e como utilizar

    O push cruzado nada mais é do que permitir que o jogador empurre (push) outros jogadores e criaturas enquanto se movimenta ao mesmo tempo, basicamente é apenas isso. O que isso proporciona ao jogador, ai já é outra historia (brincadeira, depois dessa ultima, chega de história), isso permite ao jogador executar jogadas que sem o push cruzado seriam executadas de maneira bem mais lenta, e até mesmo jogadas que seriam impossíveis de serem realizadas sem o uso do famoso cruzado.
     
    Veja abaixo alguns exemplos.
     
    Tutorial

    Como eu mencionei antes, o push cruzado é na verdade um bug, caso implementado, isso possibilita aos jogadores realizarem jogadas que sem ele seriam impossíveis. Se mesmo ciente disto você deseja seguir em frente, basta seguir os passos abaixo.
     
     
     
    Pronto, com isso você pode habilitar ou desabilitar o push cruzado diretamente pelo config.lua, sem a necessidade de recompilar a source.
     
    Créditos

    Me, myself and I.
  6. Curtir
    Sphynx1 deu reputação a WooX em Classic-Yurots [8.60] - Push Cruzado + Cast com Setas   
    Classic Yurots
    V 8.60

    Eu acompanhei de perto o desenvolvimento deste servidor e sabia que sairia coisa boa dali, mas só quando obtive acesso aos arquivos que pude entender a dimensão do negocio, sendo assim, eu posso afirmar que este é um dos se não o melhor datapack baseado no antigo YurOTS. O datapack está limpo, você não vai encontrar um script em qualquer uma das pastas que não esteja em uso no servidor, alem disto muito tempo foi gasto reescrevendo e revisando os scripts do servidor para garantir máxima performance.
    Os mais novos em OpenTibia talvez não saibam, mas os famosos Baiaks e Styllers de hoje em dia foram baseados neste mapinha que teve seu inicio já na versão 7.5 e seu declínio nas versões 8.4 onde foi visto pela ultima vez devido ao surgimento de derivados do mesmo (Baiak e Styller). Devido ao fato dos mapas Baiak e Styller serem derivados do YurOTS, se você tem um projeto de mapa Baiak ou Styller, este é um excelente datapack para você usar como base.
     
    Por que o servidor está sendo postado?

    Este servidor foi desenvolvido ao longo de 2 anos pelo Wesley (conhecido aqui no fórum como @KOLISAO), alguns meses atrás o servidor foi finalizado e colocado online, embora hoje em dia, sem contato com times de jogadores, é difícil popular um servidor novo e sem nome logo na abertura, com isso a inauguração não foi como esperado e conseguiu uma média de apenas 30 jogadores. Frustado por 2 anos de muito trabalho não dar o resultado esperado, ele decidiu desistir do servidor, foi então que eu fiz uma proposta em troca do servidor e obtive acesso ao mesmo.
    O que eu não sabia na época era que outras duas pessoas alem de mim tiveram acesso a todos os arquivos, uma dessas pessoas é um amigo do próprio Wesley na vida real, ele conversou com este amigo e deletou os arquivos do computador dele. A segunda pessoa em questão, eu não tenho certeza de como obteve estes arquivos, mas ele atualmente está vendendo estes arquivos sem autorização. 
    Quando fiquei ciente disto, entrei em contato com o Wesley e o informei sobre o que estava acontecendo, ele ficou surpreso e revoltado por alguém estar lucrando em cima de seus esforços. Neste momento pedi permissão a ele para postar o servidor aqui no fórum, e ele me concedeu.
     
    Informações sobre o servidor

    Como dito anteriormente, muito tempo foi gasto neste servidor e tudo foi feito com o maior cuidado possivel. Vou deixar aqui as informações sobre o que contem no servidor, informações que foram divulgadas pelo próprio Wesley na data de inauguração.
     
    Vídeo com algumas Quests do servidor
     
    Outras informações podem ser encontradas no tópico de show-off do período em que o servidor ainda estava em desenvolvimento.
     
    Extra + Créditos

    Juntamente com o servidor estarei postando a source e o site do mesmo, porem o site será postado em um tópico diferente devido a esta não ser a área correta do fórum para isso. A source do servidor é OTX2, foram feitas pequenas modificações na source para melhor formatação em partes do datapack, como QuestLog e outros.
    Edit 29/11
    Além disto, a source também possui 2 sistemas muito procurados que até o presente momentos não eram públicos, sendo estes Push Cruzado e Cast com Setas. Ambos os sistemas já estão instalados na source, porem futuramente irei postar ambos os códigos juntamente com tutorial de instalação para os que quiserem adicionar por si mesmos.
     
    Créditos
    Como já mencionei diversas vezes neste tópico, o responsável pelo desenvolvimento do servidor e site foi o @KOLISAO, portanto todos os créditos nesta parte vão para ele.
    Eu fui o responsável por adicionar o Push Cruzado na source e fazer uma pequena modificação no Cast com Setas.
    Obs: quando eu obtive acesso aos arquivos o Cast com Setas já estava instalado na source, eu não tenho informação se o código foi desenvolvido por ele ou por um terceiro.
     
    Links para Download

    Servidor
    Download - Scan
     
    Source
    Download - Scan
     
    Distro compilada para Windows
    32x - TheOTXServer.exe - Scan
    64x - TheOTXServer_64.exe - Scan
     
    DLLs
    dll.zip - Scan
     
    Site
     
  7. Obrigado
    Sphynx1 recebeu reputação de LeoTK em [MoveMent] Emboscada dos Trolls   
    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  
  8. Curtir
    Sphynx1 recebeu reputação de luanluciano93 em Glorots — Yurots 12x   
    Nada novo, só queria postar essa imagem ingame para vocês...
  9. Gostei
    Sphynx1 recebeu reputação de shinoaburame em Glorots — Yurots 12x   
    Eu estou fazendo a cidade aos poucos, era para ter mais coisas prontas mas tive imprevistos essa semana. Segue abaixo algumas imagens do projeto. ( Há muitos pequenos ajustes ainda que gostaria de fazer em todos os mapas exibidos nessa página, imagens meramente ilustrativas. )


  10. Gostei
    Sphynx1 recebeu reputação de shinoaburame em Glorots — Yurots 12x   
    Valeu Luan, obrigado meu consagrado, você pode acompanhar sim que em até uns três meses acredito que já seja possível abrir para mandar um teste, por enquanto vou atualizar ao menos três vezes por semana.

    Irei mostrando pouco a pouco partes do mapa para vocês.





  11. Gostei
    Sphynx1 recebeu reputação de shinoaburame em Glorots — Yurots 12x   
    Dei início ao desenvolvimento da cidade principal, vou fazer ela com o mesmo tema de Rathleton City, acabei encontrando até um antigo trabalho meu que nunca foi ao ar. Em breve postarei imagens da cidade.
     
     

  12. Gostei
    Sphynx1 recebeu reputação de shinoaburame em Glorots — Yurots 12x   
    Olá, meu nome é Rodrigo e eu tenho vinte anos.
    Eu estou estudando programação e para tirar o atraso fiz uma pesquisa de mercado, não há nenhum Yurots de nenhum gênero em nenhuma servlist, ao menos não nas novas versões. A ideia do projeto é a criação de um novo gênero Yurots, e apesar do nome estar ligado a Vancini, Slayer, o tão famigerado Baiak e muitos outros nesses anos todos de Tíbia eu pretendo fazer um mapa inédito nesse gênero com leves salpicadas de Tibia Global.

    Listarei alguns sistemas que vão estar inclusos:
    Prey System Imbuing System Cast System Reward Chest Hotkey Equip New Bank System Novos monstros, montarias e outfits Exposição de blessings Eventos PvP automáticos War Anti-entrosa Entre outros No momento eu estou à procura de mappers de nível intermediário a experiente, comente nesse tópico se estiver interessado em participar. Eu também aceito sugestões e críticas, com o passar do tempo eu postarei imagens do desenvolvimento do projeto, principalmente no quesito mapping.
  13. Curtir
    Sphynx1 recebeu reputação de Namikaze em Glorots — Yurots 12x   
    Eu estou fazendo a cidade aos poucos, era para ter mais coisas prontas mas tive imprevistos essa semana. Segue abaixo algumas imagens do projeto. ( Há muitos pequenos ajustes ainda que gostaria de fazer em todos os mapas exibidos nessa página, imagens meramente ilustrativas. )


  14. Curtir
    Sphynx1 recebeu reputação de WooX em Glorots — Yurots 12x   
    Dei início ao desenvolvimento da cidade principal, vou fazer ela com o mesmo tema de Rathleton City, acabei encontrando até um antigo trabalho meu que nunca foi ao ar. Em breve postarei imagens da cidade.
     
     

  15. Curtir
    Sphynx1 recebeu reputação de Agaka em [Ajuda] Item   
    <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.
  16. Curtir
    Sphynx1 recebeu reputação de DdJs em [TalkActions] Addon Present [TFS 0.4]   
    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"/>  
     
  17. Curtir
    Sphynx1 recebeu reputação de Kevin Araujo em [Ajuda] Item   
    <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.
  18. Curtir
    Sphynx1 recebeu reputação de WooX em [Ajuda] Item   
    <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.
  19. Gostei
    Sphynx1 deu reputação a Darcio Antonio em Criando um Botão OT CLIENT   
    game_topslot.zi
    Bom o scan do arquivo está ai.
    https://www.virustotal.com/#/file/5a0b17722b93fd4c9117086b80ad24442c305a05723680cad34ec50138ef30bc/detection
  20. Curtir
    Sphynx1 recebeu reputação de WooX em [MoveMent] Emboscada dos Trolls   
    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.
  21. Curtir
    Sphynx1 recebeu reputação de Pedro. em [MoveMent] Emboscada dos Trolls   
    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.
  22. Gostei
    Sphynx1 recebeu reputação de Agaka em [MoveMent] Emboscada dos Trolls   
    Vou fazer isso e postar algum outro script mais tarde se eu conseguir.
    Valeu!
  23. Obrigado
    Sphynx1 deu reputação a Agaka em [MoveMent] Emboscada dos Trolls   
    @Brunds Isso.
    @Sphynx1 A chance é só você criar uma variável e utilizar função math.random(x, y), depois é só fazer as identificações.
     
    Ex:
    local chance = math.random(1, 100)
     
    if chance <= 50 then
    (...)
    end
     
    A storage global(tempo) funciona do modo que o Brunds falou.
    Nada muito complicado. Estudar é o jeito. rsrs
  24. Curtir
    Sphynx1 recebeu reputação de DdJs em [MoveMent] Emboscada dos Trolls   
    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.
  25. Curtir
    Sphynx1 recebeu reputação de Agaka em [MoveMent] Emboscada dos Trolls   
    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.

Informação Importante

Confirmação de Termo