Ir para conteúdo
  • Cadastre-se

(Resolvido)Erro talkactions


Ir para solução Resolvido por WooX,

Posts Recomendados

Tinha postado um anti entrosa que consegui resolver em partes da war continuar depois de uma rodada.

 

Mas tem um problema que se torna grave em questão que os monster ou summon se mata o player no evento entrosa o servidor cai, o erro ocorre no arquivo war.lua

erro na linha 212, abaixo da imagem tem o arquivo lua inteiro..

self.frags[getPlayerGuildId(killer)] = self.frags[getPlayerGuildId(killer)] + 1

 

image.png.7604d475047a5396e03feb410a4132bb.png

 

  Mostrar conteúdo oculto
Editado por maleskinho (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Não tenho como testar e não tenho muita experiência com essa versão do TFS, mas tenta mudar essa função:
 

function War:kill(killer, cid)
    self.frags[getPlayerGuildId(killer)] = self.frags[getPlayerGuildId(killer)] + 1
    self:broadcast(22, "[City War] \n".. getPlayerName(killer) .. " matou " .. getPlayerName(cid) .. ".\n" .. self:getPlacarString())
end

Deixando assim:
 

function War:kill(killer, cid)
    if(killer:isMonster()) then
        local master = killer:getMaster()
        if(not master or not master:isPlayer()) then
            return true
        end
        killer = master
    end

    self.frags[getPlayerGuildId(killer)] = self.frags[getPlayerGuildId(killer)] + 1
    self:broadcast(22, "[City War] \n".. getPlayerName(killer) .. " matou " .. getPlayerName(cid) .. ".\n" .. self:getPlacarString())
end

 

                                                                     Ajudei? De nada \o/                                            Att Rusherzin

Link para o post
Compartilhar em outros sites
  • Solução

@maleskinho A função War:kill não está verificando se o quem matou o player era um player também, e ainda assim a função tenta buscar pelo GuildId de quem matou o player (é óbvio, mas monstros não tem GuildId). 

 

Testa ai.

  Mostrar conteúdo oculto

 

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link para o post
Compartilhar em outros sites
  Em 08/04/2018 em 14:54, Rusherzin disse:

Não tenho como testar e não tenho muita experiência com essa versão do TFS, mas tenta mudar essa função:
 

function War:kill(killer, cid)
    self.frags[getPlayerGuildId(killer)] = self.frags[getPlayerGuildId(killer)] + 1
    self:broadcast(22, "[City War] \n".. getPlayerName(killer) .. " matou " .. getPlayerName(cid) .. ".\n" .. self:getPlacarString())
end

Deixando assim:
 

function War:kill(killer, cid)
    if(killer:isMonster()) then
        local master = killer:getMaster()
        if(not master or not master:isPlayer()) then
            return true
        end
        killer = master
    end

    self.frags[getPlayerGuildId(killer)] = self.frags[getPlayerGuildId(killer)] + 1
    self:broadcast(22, "[City War] \n".. getPlayerName(killer) .. " matou " .. getPlayerName(cid) .. ".\n" .. self:getPlacarString())
end

 

Mostrar mais  

@Rusherzin Mesmo erro, mas obrigado por tenta ajudar

 

  Em 08/04/2018 em 14:54, Way20 disse:

@maleskinho A função War:kill não está verificando se o quem matou o player era um player também, e ainda assim a função tenta buscar pelo GuildId de quem matou o player (é óbvio, mas monstros não tem GuildId). 

 

Testa ai.

  Mostrar conteúdo oculto

 

Mostrar mais  

@Way20 Deu certo amigo, era o único erro nesse evento tinha outro mas consegui resolver.

 

Muito Obrigado :D

Link para o post
Compartilhar em outros sites
  Em 08/04/2018 em 16:39, maleskinho disse:

@Rusherzin Mesmo erro, mas obrigado por tenta ajudar

 

@Way20 Deu certo amigo, era o único erro nesse evento tinha outro mas consegui resolver.

 

Muito Obrigado :D

Mostrar mais  

 

No meu código eu esqueci dos Summons, se o summon de um player matar outro player não vai enviar a mensagem de kill. Tem como melhorar esse código fazendo funcionar o código do @Rusherzin (na verdade o código dele está correto, mas devido ao uso de metatables no script ele confundiu sua distro com TFS 1.x).

 

Sumona um monstro qualquer e deixa ele matar algum player inimigo na area Anti-Entrosa, verifica se envia a mensagem dizendo que o dono do summon matou o player. Muda essa função.

function War:kill(killer, cid)
	if (isPlayer(killer) or (isMonster(killer) and getCreatureMaster(killer))) then
		killer = isPlayer(killer) and killer or getCreatureMaster(killer)
		self.frags[getPlayerGuildId(killer)] = self.frags[getPlayerGuildId(killer)] + 1
		self:broadcast(22, "[City War] \n".. getPlayerName(killer) .. " matou " .. getPlayerName(cid) .. ".\n" .. self:getPlacarString())
	end
end

 

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link para o post
Compartilhar em outros sites
  Em 08/04/2018 em 16:55, Way20 disse:

 

No meu código eu esqueci dos Summons, se o summon de um player matar outro player não vai enviar a mensagem de kill. Tem como melhorar esse código fazendo funcionar o código do @Rusherzin (na verdade o código dele está correto, mas devido ao uso de metatables no script ele confundiu sua distro com TFS 1.x).

 

Sumona um monstro qualquer e deixa ele matar algum player inimigo na area Anti-Entrosa, verifica se envia a mensagem dizendo que o dono do summon matou o player. Muda essa função.

function War:kill(killer, cid)
	if (isPlayer(killer) or (isMonster(killer) and getCreatureMaster(killer))) then
		killer = isPlayer(killer) and killer or getCreatureMaster(killer)
		self.frags[getPlayerGuildId(killer)] = self.frags[getPlayerGuildId(killer)] + 1
		self:broadcast(22, "[City War] \n".. getPlayerName(killer) .. " matou " .. getPlayerName(cid) .. ".\n" .. self:getPlacarString())
	end
end

 

Mostrar mais  

 

Sim é otx


@Way20 Sumonei os fire elemental e contabilizo certinho, muito obrigado novamente.

 

Ficou perfeito o script ;)

 

--------------------------------

 

@Way20 os da mesma guild se ataca no evento e contabiliza pra eles mesmo os pontos consegue bloquear pra não ataca os da mesma guild na war?

Editado por maleskinho (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  Em 08/04/2018 em 17:10, maleskinho disse:

 

@Way20 os da mesma guild se ataca no evento e contabiliza pra eles mesmo os pontos consegue bloquear pra não ataca os da mesma guild na war?

 

Mostrar mais  

 

function War:kill(killer, cid)
	if (isPlayer(killer) or (isMonster(killer) and getCreatureMaster(killer))) then
		killer = isPlayer(killer) and killer or getCreatureMaster(killer)
		if getPlayerGuildId(killer) ~= getPlayerGuildId(cid) then
			self.frags[getPlayerGuildId(killer)] = self.frags[getPlayerGuildId(killer)] + 1
			self:broadcast(22, "[City War] \n".. getPlayerName(killer) .. " matou " .. getPlayerName(cid) .. ".\n" .. self:getPlacarString())
		end
	end
end

 

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link para o post
Compartilhar em outros sites
  Em 08/04/2018 em 17:52, Way20 disse:

 

function War:kill(killer, cid)
	if (isPlayer(killer) or (isMonster(killer) and getCreatureMaster(killer))) then
		killer = isPlayer(killer) and killer or getCreatureMaster(killer)
		if getPlayerGuildId(killer) ~= getPlayerGuildId(cid) then
			self.frags[getPlayerGuildId(killer)] = self.frags[getPlayerGuildId(killer)] + 1
			self:broadcast(22, "[City War] \n".. getPlayerName(killer) .. " matou " .. getPlayerName(cid) .. ".\n" .. self:getPlacarString())
		end
	end
end

 

Expand   Mostrar mais  

@Way20 show agora sim perfeito, muito obrigado novamente.

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Estatísticas dos Fóruns

    96823
    Tópicos
    519566
    Posts
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo