-
Total de itens
1347 -
Registro em
-
Última visita
-
Dias Ganhos
36
Tudo que Oneshot postou
-
getCreatureTarget(cid) vai retornar um número gigante e grotesco que o sistema entende por ser o alvo do jogador. Mas se você fizer isso: getThingPosition(getCreatureTarget(cid)) Seus problemas estão resolvidos. Abraços.
-
pedido [Pedido]Script Que Criatura Não Consegue Andar
pergunta respondeu ao thiagozika157 de Oneshot em Scripts
speed="0" No arquivo XML do monstro em questão. Embora acho que ele ainda vá se mover. Teste. -
local function isWalkable(position, cid) position.stackpos = 0 if getTileThingByPos(position).uid ~= 0 then local tile = getTileInfo(position) if tile.protection == false and tile.house == false and getTopCreature(position).uid == 0 and doTileQueryAdd(cid, position) == RETURNVALUE_NOERROR then return true end end return false end local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) function onCastSpell(cid, var) if isWalkable(getCreatureLookPosition(cid), cid) then doTeleportThing(cid, getCreatureLookPosition(cid)) else doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) end return doCombat(cid, combat, var) end
-
Poste qual servidor você usa, o link do tópico ou download.
-
Estou planejando limpar um pouco o código e ver se posso melhorar ele em alguns aspectos. Quem estiver com esse erro do: Invalid data type Por favor, passe o link do tópico onde baixou o servidor que está, atualmente, usando.
-
Por um lado não vai te atrapalhar em nada, seu servidor não irá dar nenhum erro crítico por causa desses dois pequenos erros. Por outro lado, Tyoric não vai vender um certo item que ele deveria vender e os jogadores não irão conseguir comprar a casa Forgotten Headquarter <Flat 1, Area 42>
-
Npc Que Voce Tem Que Voltar Depois Qual a necessidade de criar um segundo tópico com o mesmo pedido?
-
Tem sim. As runas que forem magias instantâneas você faz como Actions e as runas que forem magias de alvo, você faz como... runas mesmo. Um abraço.
-
Procure mais uma vez, só que desta vez na pasta mods e então é só deletar o arquivo safadinho que se esconde de você.
-
Eu poderia chegar aqui e falar simplesmente: "Isso aí é nas sources, cara" Te explicarei, mais ou menos, como funciona todo o processo de execução de um servidor. Quando você abre seu servidor e algum jogador entra nele, o servidor processa as informações do jogador e as armazena em espaços da memória. Só que os espaços tem um tamanho-limite e esse tamanho é definido pelo programador quando ele escreve o código, as sources de seu servidor e declara as variáveis. Ou seja essas variáveis poderão assumir valores máximos conforme o tamanho de memória que foi declarado para ela. Em outras palavras, veja isso: uint32_t getLevel() const {return level;} uint64_t getExperience() const {return experience;} Aqui estão as funções de player.h que retornam as informações level e experience do jogador. Vamos dizer que a função foi declarada com "tamanho 2" e o level do jogador seja 3, a função simplesmente vai armazenar o que pode na memória e ignorar o resto, ou seja ela vai retornar 2. Enfim, para fazer o que você quer, são necessárias pequenas alterações ambientadas na parte C++ de um servidor.
-
Para começar a criação deste NPC, vou te apresentar uma função nativa Lua que guarda o tempo em segundos desde a criação da linguagem, essa função se chama os.time(). Levando em consideração que você quer comparar dois intervalos de tempos distintos que distam em quatro horas. Precisamos armazenar o tempo local acrescido de quatro horas em segundos em uma variável, no caso, uma célula em seu banco de dados que você, comumente, chama por storage. Então é só chamar essa variável em uma comparação entre o valor dela e o tempo local Você teria, então, que trabalhar com dois storages: Um que irá marcar o tempo e outro que irá marcar o estado das missões que o NPC dá. Vamos criar um algoritmo para a inteligência artificial do seu NPC: Simples assim. Espero que isso ajude no desenvolvimento do seu NPC.
-
Não, nenhum. O Dev-C++ que passei possui bibliotecas auxiliares para compilação em x64, mas você pode continuar a compilar em x96
-
Não basta baixar o IDE Dev-C++ e tentar a compilação. Você precisa baixar vários pacotes usados no código Open Tibia. Deixo abaixo o Dev-C++ já com todos os pacotes e com suporte a compilação para sistemas 64-bits: SpeedyShare Caso ainda dê algum erro, baixe o pacote OpenSSL no menu de Atualizações do programa.
-
Provavelmente sim. Mas acho que um aumento de 100% no intervalo de ataques iria cortar a vantagem de usar duas armas. Acho que um aumento de 40% a 50% já basta. Se o normal é 1000 ms, coloque 1400 ms a 1500 ms, Por exemplo.
-
Só com uma "profunda" edição nas sources. Pois não é bem o delay entre ataques que é diminuído, é o sistema que simula dois ataques por intervalo. Por exemplo, vamos dizer que configuramos a vocação Knight com intervalo de ataque 2000 ms. Normalmente, ela iria fazer um ataque a cada 2 (dois) segundos, mas equipando uma arma com dualwield, ela fará 2 ataques a cada 2 segundos, ou seja, 1 ataque por segundo. Simplificando tudo, usando um armamento com dualwield, o delay entre ataques é reduzido pela metade, ou ainda, a velocidade de ataque é dobrada.
-
Infelizmente não é minha culpa essa falta de tags fechadas, parece que o desse fórum insiste em sumir com elas Mas obrigado pelo aviso.[/font][/color][/size]
-
Tendo visto a crescente quantidade de pedidos por armas que possam ser usadas simultaneamente nas duas mãos, resolvi criar um tutorial apenas para esclarecer que esse código já existe compilado nas mais recentes revisões do The Forgotten Server. Você pode escolher quais itens poderão ser equipamentos nas duas mãos e claro restringir esses itens depois para apenas uma vocação. 1. Para criar seu item que pode ser equipado nas duas mãos, abra o items.xml e navegue até o ID do item desejado. Por exemplo, mostrarei abaixo o ID da Magic Sword: <item id="2400" article="a" name="magic sword"> <attribute key="description" value="It is the Sword of Valor." /> <attribute key="weight" value="4200" /> <attribute key="defense" value="35" /> <attribute key="attack" value="48" /> <attribute key="weaponType" value="sword" /> <attribute key="extradef" value="3" /> </item> 2. Adicione o atributo dualwield com valor 1 no código XML do item. <item id="2400" article="a" name="magic sword"> <attribute key="description" value="It is the Sword of Valor." /> <attribute key="weight" value="4200" /> <attribute key="defense" value="35" /> <attribute key="attack" value="48" /> <attribute key="weaponType" value="sword" /> <attribute key="extradef" value="3" /> <attribute key="dualwield" value="1" /> </item> Pelo que pude testar os danos não se somam, mas sim são causados dois ataques ao invés de um, ou seja a velocidade de ataque do jogador aumenta. Funciona com qualquer tipo de arma, desde swords até rods e wands. Funcional em: The Forgotten Server 0.4 rev3777 em diante
-
Talvez fazendo como um moveevent. function onDeEquip(cid, item, slot) return false end Ou então fazendo isso function onDeEquip(cid, item, slot) local temp = doCreateItemEx(item.itemid) doRemoveItem(item.uid, 1) doPlayerAddItemEx(cid, temp, false, slot) return true end
-
Eu não sei porque vocês, scripters, teimam tanto em usar doPlayerSetVocation(cid, voc) ou manipular o campo 'vocation' no banco de dados através de querys. Esse método só funcionará permanente se as vocações são "primárias" e não agem como promotions. Já cansei de dizer que muitos dos servidores atuais possuem as função getPlayerPromotionLevel(cid) e setPlayerPromotionLevel(cid), estas são responsáveis por atribuir uma nova vocação ao jogador sem que ela seja retirada logo depois. Vou pedir gentilmente que você anexe ao tópico seu arquivo vocations.xml usando [/font][/size]
-
Então, colega. Vá nessa linha da spell anterior: doCreateMonster("headcaptor", position) E digite o nome correto do monstro, que eu posso ter errado ou ele não existe no servidor. Depois verei sua segunda magia.
-
Acho que era minha vó que usava duas definições para inveja: - A inveja boa onde você pega as pessoas como bons exemplos e se espelha nelas para melhorar. - A inveja ruim onde ninguém pode ser melhor que você, você não se contenta em acreditar que aquela pessoa está tão bem com a vida. Até hoje não sei se ela estava certa sobre isso.
-
A energia da luz solar não é a absorvida, ela reage através da clorofila das plantas para produção de glicose. E, creio eu, a clorofila apenas reage com a luz. Vide exemplo real, quando está escuro, a planta deixa de fazer fotossíntese e apenas respira. Se a clorofila fosse capaz de reagir com outra coisa, não existiriam as fases de claro e escuro das plantas. Mas acho que nada que uma intervenção genética ou processo evolutivo possa fazer com que as plantas possam reagir com energia nuclear. Já são conhecidos fungos que se alimentam dos resquícios radioativos aos arredores de Chernobyl.
-
Seria conveniente se um desses três elementos resolvesse te banir mesmo.
-
Desculpe mesmo, digitei errado o nome da variável local function isWalkable(position, cid) position.stackpos = 0 if getTileThingByPos(position).uid ~= 0 then local tile = getTileInfo(position) if tile.protection == false and tile.house == false and getTopCreature(position).uid == 0 and doTileQueryAdd(cid, position) == RETURNVALUE_NOERROR then return true end end return false end local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) local area = createCombatArea({ {1, 0, 1}, {0, 3, 0}, {1, 0, 1} }) setCombatArea(combat, area) function onTargetTile(cid, position) if isWalkable(position, cid) then local creature = doCreateMonster("headcaptor", position) doConvinceCreature(cid, creature) addEvent(function() if isCreature(creature) then doRemoveCreature(creature) end end, 1 * 1000) end return true end setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTile") function onCastSpell(cid, var) return doCombat(cid, combat, var) end
-
local function isWalkable(position, cid) position.stackpos = 0 if getTileThingByPos(position).uid ~= 0 then local tile = getTileInfo(position) if tile.protection == false and tile.house == false and getTopCreature(position).uid == 0 and doTileQueryAdd(cid, position) == RETURNVALUE_NOERROR then return true end end return false end local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) local area = createCombatArea({ {1, 0, 1}, {0, 3, 0}, {1, 0, 1} }) setCombatArea(combat, area) function onTargetTile(cid, position) if isWalkable(position) then local creature = doCreateMonster("headcaptor", position) doConvinceCreature(cid, creature) addEvent(function() if isCreature(creature) then doRemoveCreature(creature) end end, 1 * 1000) end return true end setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTile") function onCastSpell(cid, var) return doCombat(cid, combar, var) end
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.