Jump to content

Olá Tibiano! Notamos que você está com um adblocker ligado... 

Nós promovemos servidores dentro da comunidade, para que eles tenham visibilidade.

Por favor, nos ajude a continuar promovendo esses servidores. Adicione nosso domínio na whitelist de seu adblocker, ok? :)

Kilowog

[c++] passive system

Recommended Posts

1 hora atrás, boxxer321 disse:

ceetros pode postar a versão 0.3.6?

Pode sim, sem problema nenhum. A ideia do topico é ajudar a todos, não ganhar +rep.

Share this post


Link to post
Share on other sites

Eu alertei que ocorreriam problemas por usar o guid, o deathlist passou a salvar o guid ao invez do uid, logicamente onde mais ele acessa deve tentar encontrar pelo uid alternativamente. Para fazer sem ser assim, teria que criar um outro array, talvez seja até mais trabalhoso.

Share this post


Link to post
Share on other sites
11 minutos atrás, dalvorsn disse:

Eu alertei que ocorreriam problemas por usar o guid, o deathlist passou a salvar o guid ao invez do uid, logicamente onde mais ele acessa deve tentar encontrar pelo uid alternativamente. Para fazer sem ser assim, teria que criar um outro array, talvez seja até mais trabalhoso.

 

em vez de usar o guid será que não consigo usar o uid não? No função do target ou do addDamage?

Share this post


Link to post
Share on other sites
8 minutes ago, Kilowog said:

 

em vez de usar o guid será que não consigo usar o uid não? No função do target ou do addDamage?

Não adiantaria, porque o uid é temporario, quando o player deslogar esse uid perde referencia.

Share this post


Link to post
Share on other sites
Agora, dalvorsn disse:

Não adiantaria, porque o uid é temporario, quando o player deslogar esse uid perde referencia.

 

Mas ele só deslogaria quando saisse de Battle não? Come seria a ideia da lista?

Share this post


Link to post
Share on other sites
Just now, Kilowog said:

 

Mas ele só deslogaria quando saisse de Battle não? Come seria a ideia da lista?

A lista permanece enquanto o monstro estiver vivo, te dar um exemplo de algo que aconteceria, se eu ataco o pokemon e corro, espero o battle e deslogo, e eu volto perto dele novamente, ele ja nao vai mais reconhecer que esse player atacou ele porque ele relogou. Caso ele morra aconteceria a mesma coisa.

Se isso que foi citado acima não é problema, então basta modificar para:

 

    uint32_t id = creature->getID();    if(creature->getMaster() && creature->getMaster()->getPlayer())        id = creature->getMaster()->getID();    if (isPassive() && !hasBeenAttacked(id)) {            return false;    }

 

e

void CreatureaddDamagePoints(Creature* attacker, int32_t damagePoints){	if(damagePoints < 0)		return;	uint32_t attackerId = 0;    if(attacker){        if(attacker->getMaster() && attacker->getMaster()->getPlayer())            attackerId = attacker->getMaster()->getID();        else            attackerId = attacker->getID();    }

 

Share this post


Link to post
Share on other sites
2 minutos atrás, dalvorsn disse:

A lista permanece enquanto o monstro estiver vivo, te dar um exemplo de algo que aconteceria, se eu ataco o pokemon e corro, espero o battle e deslogo, e eu volto perto dele novamente, ele ja nao vai mais reconhecer que esse player atacou ele porque ele relogou. Caso ele morra aconteceria a mesma coisa.

Se isso que foi citado acima não é problema, então basta modificar para:

 

    uint32_t id = creature->getID();    if(creature->getMaster() && creature->getMaster()->getPlayer())        id = creature->getMaster()->getID();    if (isPassive() && !hasBeenAttacked(id)) {            return false;    }

 

e

void CreatureaddDamagePoints(Creature* attacker, int32_t damagePoints){	if(damagePoints < 0)		return;	uint32_t attackerId = 0;    if(attacker){        if(attacker->getMaster() && attacker->getMaster()->getPlayer())            attackerId = attacker->getMaster()->getID();        else            attackerId = attacker->getID();    }

 

Entendi, seria como eu pretendia fazer inicialmente quando vi o problema, com lista.

Porém meu conhecimento é bom em Java e não tanto em C++, são linguagens parecidas porém as lib são diferentes. Vou dá uma estudada nesse conceito da lista e ver o que consigo fazer, mas sua solução é uma boa também.

Share this post


Link to post
Share on other sites
6 minutos atrás, dalvorsn disse:

A lista permanece enquanto o monstro estiver vivo, te dar um exemplo de algo que aconteceria, se eu ataco o pokemon e corro, espero o battle e deslogo, e eu volto perto dele novamente, ele ja nao vai mais reconhecer que esse player atacou ele porque ele relogou. Caso ele morra aconteceria a mesma coisa.

Se isso que foi citado acima não é problema, então basta modificar para:

 

    uint32_t id = creature->getID();    if(creature->getMaster() && creature->getMaster()->getPlayer())        id = creature->getMaster()->getID();    if (isPassive() && !hasBeenAttacked(id)) {            return false;    }

 

e

void CreatureaddDamagePoints(Creature* attacker, int32_t damagePoints){	if(damagePoints < 0)		return;	uint32_t attackerId = 0;    if(attacker){        if(attacker->getMaster() && attacker->getMaster()->getPlayer())            attackerId = attacker->getMaster()->getID();        else            attackerId = attacker->getID();    }

 

 

Como isso seria um problema? na verdade esse seria o modo correto, na minha opinião é bem melhor.

Share this post


Link to post
Share on other sites
5 minutes ago, Kilowog said:

@dalvorsn eu consigo pegar um uid pelo guid? Digamos, tem uma função facil que dá isso e tal?

Sim, facilmente.

 

C++

g_game.getPlayerByGUID(guid)

Lua

getPlayerByGUID(guid)

 

Edited by dalvorsn

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By Yan Liima
      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?
      Please login or register to see this spoiler.
       
      Façam um ótimo aproveito
       
    • By Jedediasisme
      Gente muita gente tinha dificuldade em extender a tela do cliente do Tibia, então eu resolvi ajudar. Está aqui a distro TFS 0.4 rev 3777, com o OTCLIENT mais atualizado.
      Não coloquei datapack incluso, vocês podem baixar qualquer datapack 8.60 que vai ser compatível.
      Podem repostar suas modificações, mas coloquem meu crédito.
       
      Conteúdo:
      Distro, Otclient + SRC de ambos.
       
      Download Database MYSQL:

      Please login or register to see this link.
      Download: (39.88 MB, descompactado fica 106 MB)

      Please login or register to see this link.
      Scan:

      Please login or register to see this link.
       
      Imagens:

      Please login or register to see this link.

      Please login or register to see this link.

      Please login or register to see this link.

      Please login or register to see this attachment.

      Please login or register to see this attachment.
    • By Sphynx
      Olá galera, vocês conhecem as lendas dos Trolls que de baixo de uma 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.


      Please login or register to see this attachment.


      Please login or register to see this attachment.

        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.
    • By L3K0T
      CONTEÚDO REMOVIDO: AGORA VOCÊ VAI TER QUE TER CRIATIVIDADE OU SE PENDURAR-SE NAS COSTA DE ALGUÉM, MENOS NA MINHA   - BOA SORTE!
      error 404 - I do not serve the forum I retired.
    • By Yobias
      Olá, gostaria de saber como vocês aprenderam a programar? Pois gostaria de aprender *---* E queria algumas dicas sobre programação e Tutoriais, etc.... *-----*
×
×
  • Create New...