-
Total de itens
1347 -
Registro em
-
Última visita
-
Dias Ganhos
36
Tudo que Oneshot postou
-
creatureevent Anti Fast-attack Elf Bot
tópico respondeu ao warotserv de Oneshot em Globalevents e Spells
Meus sinceros parabéns, afinal o bom scripter não é aquele que desenvolve códigos complexos, mas sim aquele que desenvolve códigos com criatividade. Tome meu like e compre tudo de doce. -
Mas no caso o array PASSIVE_BEHAVIOR são os monstros que não irão atacar mesmo que você ataque eles, BananaFight. Todos os outros monstros que não estejam nesse array e tenham inicialmente flag hostile igual a 0, começam a atacar depois de atacados. Eu tenho a leve impressão que você está tentando achar qualquer defeito pra falar "ó como você não sabe programar", desculpe, amigo, mas você não vai conseguir. Todavia, irei baixar o Camtasia e gravar um vídeo.
-
Compile e teste, abraços Você pode manjar de OTClient, mas eu manjo de OpenTibia, BananaLutador
-
Então, fazer um sistema de colisão de magias não tem muito segredo. O omega acertou ao dizer que as magias são executadas instantaneamente, mas errou ao dizer que não tem como verificar se o alvo planeja usar a magia também. Eu fiz baseado na magia Flame Strike, do Tibia. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) function onCastSpell(cid, var) doCreatureSetStorage(cid, 87600, 1) addEvent(function() local target = variantToNumber(var) if isPlayer(target) then local fromPosition, toPosition = getCreaturePosition(cid), getCreaturePosition(target) if getCreatureStorage(target, 87600) == 1 and getCreatureTarget(target) == cid then doCreatureSetStorage(cid, 87600, 2) doCreatureSetStorage(target, 87600, 2) local midPosition = { x = (fromPosition.x > toPosition.x and (fromPosition.x - ((fromPosition.x - toPosition.x) * 0.5)) or (toPosition.x - ((toPosition.x - fromPosition.x) * 0.5))), y = (fromPosition.y > toPosition.y and (fromPosition.y - ((fromPosition.y - toPosition.y) * 0.5)) or (toPosition.y - ((toPosition.y - fromPosition.y) * 0.5))), z = fromPosition.z, } doSendDistanceShoot(fromPosition, midPosition, CONST_ANI_FIRE) doSendDistanceShoot(toPosition, midPosition, CONST_ANI_FIRE) doSendMagicEffect(midPosition, CONST_ME_FIREAREA) end end if getCreatureStorage(cid, 87600) < 2 then doCreatureSetStorage(cid, 87600, -1) doCombat(cid, combat, var) end end, 15) end Abraços
-
Isso é impossível, porque no tibia as magias acontecem instantaneamente, portanto, quando o jogador1 usar a primeira magia, vai acertar imediatamente o jogador2 e não tem como checar se o jogador2 planeja usar a mesma magia. Ou seja, não tem como fazer porque as magias NUNCA serão jogadas ao MESMO tempo, nem que a variação entre elas seja em alguns poucos milissegundos. Posso fazer?
-
Boa iniciativa, omega blueheaven. Só uma dica, amigo, no seu primeiro script que você atribui uma string em uma storage, não esqueça que o tamanho da string é limitado. Abraços.
-
Ué, fácil... local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) function onTarget(cid, target) return doChallengeCreature(cid, target) end setCombatCallback(combat, CALLBACK_PARAM_TARGETCREATURE, "onTarget") function onCastSpell(cid, var) return doCombat(cid, combat, var) end E não esqueça de modificar o spells.xml, colocando needtarget="1" Tchau.
-
Eu tinha a medalha de Membro Honorário, a de Herói, bem já fui coordenador no modelo antigo do fórum, se isso vale alguma coisa rsrsr
-
Login Server com Vários Mundos 1. Introdução Olá, pessoal. Já vi diversas vezes, sendo uma delas muito recente, uma dúvida bastante pertinente sobre a configuração do sistema de vários mundos para um único IP de servidor. Sim, tem muita gente que não sabe fazer isso e acaba tendo que criar vários IPs, por exemplo: sv1.fulanoot.com.br sv2.fulanoot.com.br Sim, é mais fácil fazer isso, mas perde toda a graça, pois o Tibia oficial, é dividido em mundos e com um único servidor de login. 1.1 Servidor de Login? Sim, existe um servidor responsável por aceitar o login dos jogadores e distribuir o login nos servidores secundários, ou mundos, a ele damos o nome de servidor de login. Para entender como funciona, olhe a seguinte imagem: O jogador conecta no servidor de login, pode ir para o Mundo 1 que é o próprio servidor de login, ou ir para outros mundos como na imagem, já que conectado no primeiro servidor, ele pode ser direcionado para lá. 2. Como configurar A configuração desse sistema é muito simples, primeiro tenha em mente que você irá precisar separar seus vários servidores, que se comportarão como mundos, em pastas diferentes. Cada executável com sua própria pasta, config.lua, pasta data/ e afins. O primeiro servidor, que será o nosso login server, precisará ser compilado com um parâmetro a mais, OU SEJA, você precisa ter acesso as sources do seu servidor. O parâmetro que você deverá adicionar é: -D__LOGIN_SERVER__ ATENÇÃO, você só deve compilar o primeiro executável, o primeiro servidor, com esse parâmetro, os outros não devem ser compilados assim. Servidores compilados, organizados em suas pastas, configure os servidores para acessar o banco de dados MySQL (não testei com SQLite, acredito que não funciona.) Abra o servers.xml no diretório data/XML do nosso login server, ele vai estar assim, provavelmente: <?xml version="1.0" encoding="UTF-8"?> <servers> <server id="0" name="Example" versionMin="860" versionMax="860" address="127.0.0.1" port="7171"/> </servers> Configure seus servidores aqui, por exemplo: <?xml version="1.0" encoding="UTF-8"?> <servers> <server id="1" name="Caramelo" versionMin="860" versionMax="860" address="127.0.0.1" port="7172"/> <server id="2" name="Biscoito" versionMin="860" versionMax="860" address="127.0.0.1" port="7173"/> <server id="3" name="Chocolate" versionMin="860" versionMax="860" address="127.0.0.1" port="7174"/> </servers> No campo address, você irá colocar o IP do servidor (Não testei com redirecionamento, IP fixo), e no campo port, todas as portas diferentes de 7171, ou seja vá aumentando de 1 em 1 para cada servidor/mundo. Depois de configurado, vamos ao config.lua. É mais simples, no config.lua de cada servidor, você vai mudar o campo: worldId = 0 Para cada valor que você colocou no servers.xml. Nosso login server pode ter o valor 1 por exemplo e os outros os valores 2 e 3. Você vai mudar também: gamePort = 7172 Para todas as portas que usou no servers.xml, ou seja, 7172 para o primeiro servidor, 7173 para o segundo e assim em diante. Em todos os outros servidores, com exceção do login server, você vai mudar: loginOnlyWithLoginServer = false Para: loginOnlyWithLoginServer = true Lembrando, com exceção do login server. Depois é só desbloquear as portas 7171 e 7172 e, outras que você usar, abrir todos os executáveis (não esquecendo do que compilamos como login server) e correr para o abraço. Não vou ensinar como configurar Account Manager para selecionar o mundo do personagem, pois são edições trabalhosas, talvez isso fique para outro release. Há também edições C++ que você pode fazer para poder deixar todos servidores em uma única pasta. Abraços, Oneshot
-
Monstros Passivos Muito bom dia, galera. Sabe, eu estava estudando como funcionam os servidores de pokémons, aqueles que ainda estão começando, embriões de bons servidores, não grandes servidores como o Poke Brasil Online (PokeBro). O problema de todos esses servidores, é que todos são dependentes de sistemas criados pelo brun123 (se não me engano) dentro das sources, ou seja, esses servidores são dependentes do executável compilado do PDA, entre outros. A pedido de um amigo, eu desenvolvi o sistema de monstros passivos. Sim aquele sistema que dá um upgrade na inteligência artificial das criaturas, onde algumas podem atacar o jogador assim que o ver, outras podem atacar apenas quando for atacadas. É um sistema muito básico mesmo, eu fiz com C++ e Lua por puro comodismo, e pretendo deixar mais avançado apenas com C++ e uso de flags nos XMLs. Se você quiser usar, sinta-se a vontade. No seu arquivo monster.h, procure por: bool isHostile() {return mType->isHostile;} Substitua por: bool isHostile() const { std::string value; if(!getStorage("hostile", value)) return mType->isHostile; return booleanString(value); } No seu arquivo monster.cpp, procure por: Monster::selectTarget Dentro da função, procure por: if(!isTarget(creature)) return false; Adicione abaixo: if(!isHostile()) return false; No diretório creaturescripts/scripts, crie um novo arquivo com nome passive.lua e adicione: PASSIVE_BEHAVIOR = {"Deer", "Rabbit"} -- Aqui ficam os monstros que não atacam, mesmo que atacados. function onCombat(cid, target) if isMonster(target) then if not isInArray(PASSIVE_BEHAVIOR, getCreatureName(target)) then doCreatureSetStorage(target, "hostile", 1) end doMonsterSetTarget(target, cid) end return true end No mesmo diretório, abra o arquivo login.lua e adicione: registerCreatureEvent(cid, "PassiveSystem") No diretório creaturescripts/, abra o arquivo creaturescripts.xml e adicione: <event type="combat" name="PassiveSystem" event="script" value="passive.lua"/> Agora é só compilar seu servidor, sem a pasta obj, ou seja, dê um Rebuild All e correr pro abraço com seu sistema de monstros passivos. Abraços, Oneshot.
-
Pedro, porque você vai fazer um filho(a), se mal tem autonomia própria para dar o sustento dele, dependendo do papai para tudo que vai fazer. Você quer seu filho criado pelos avós? Particularmente acho isso uma vergonha, não sei vocês, integrantes da classe A e B. Abraços.
-
Não, cara, é o contrário, você já havia desistido, só estava esperando algo para justificar sua desistência. Afinal o portal XTibia não é tão rentável como a cadeia de servidores GlobalOTS, não é?
-
dúvida como executar comando no sqlitestudio
pergunta respondeu ao leoperez011 de Oneshot em Scripts
Meu colega, este post é desnecessário, mande uma mensagem pessoal da próxima vez. -
[8.54] Nto RobinHood - Copia do NtoShinobi
tópico respondeu ao Robinhood de Oneshot em OTServer Alternativo (ATS)
Ele é o Lucas Milbradt, dono do servidor. eu sei, muda esse TITULO. Colocar: "[8.54] Naruto Ultimate - [ADM] Lks" ou alguma coisa do tipo, ele não pode intitular um servidor que não e dele (mesmo tendo uma porcentagem) Não, você não entendeu. Ele é dono do servidor, Lucas Milbradt, com a conta dele, intitulando o servidor da forma que quiser, com 100% de direitos sobre o servidor. Mais alguma dúvida? -
[8.54] Nto RobinHood - Copia do NtoShinobi
tópico respondeu ao Robinhood de Oneshot em OTServer Alternativo (ATS)
Ele é o Lucas Milbradt, dono do servidor. -
Olá XTibiano, Infelizmente seu tópico não cumpre todos os requisitos para ser aprovado e movido para a seção de downloads. Releia os guias da seção e oriente-se sobre como criar um bom tópico com um bom download para os usuários. Reprovado.
-
Tópico movido para a seção de dúvidas e pedidos resolvidos.
-
Olá XTibiano, Infelizmente seu tópico não cumpre todos os requisitos para ser aprovado e movido para a seção de downloads. Releia os guias da seção e oriente-se sobre como criar um bom tópico com um bom download para os usuários. Reprovado.
-
Olá XTibiano, Infelizmente seu tópico não cumpre todos os requisitos para ser aprovado e movido para a seção de downloads. Releia os guias da seção e oriente-se sobre como criar um bom tópico com um bom download para os usuários. Reprovado.
-
local combat = {} combat[1] = createCombatObject() -- Crie a spell com o primeiro efeito aqui. combat[2] = createCombatObject() -- Crie a spell com o segundo efeito aqui. function onCastSpell(cid, var) return getPlayerLevel(cid) < 100 and doCombat(cid, combat[1], var) or doCombat(cid, combat[2], var) end flww
-
Não fui aprovado em nada, só peguei uma bolsa integral na Anhembi Morumbi pelo Prouni que não vou usar, por causa da maldita burocracia. E, também esse ano eu não fiz nenhum vestibular, só o ENEM mesmo para ver se conseguia algo e não consegui. Esse ano planejo estudar e trabalhar lolz
-
Bela aplicação do srlua. Mas o nome devia ser Luaception como o Lordfire disse.
-
Olá XTibiano, Infelizmente seu tópico não cumpre todos os requisitos para ser aprovado e movido para a seção de downloads. Releia os guias da seção e oriente-se sobre como criar um bom tópico com um bom download para os usuários. Reprovado.
- 62 respostas
-
- 8.5
- pounc extreme
- (e 3 mais)
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.