Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Boa noite,

 

Tenho um global 10.53, que compilei faz algumas semanas, aparentemente está sem erros e os que tinham eu arrumei, porém tem um erro que persiste e incomoda. Toda vez que um player morre, aparece um erro no distro referente a quest elemental spheres, como mostra a imagem abaixo:

 

ps6qePy.png

 

 

...\data\creaturescripts\scripts\elemental spheres quest.lua

local boss = {
	["fire overlord"] = {g_storage = 40064, p_storage = 60027},
	["energy overlord"] = {g_storage = 40065, p_storage = 60028},
	["ice overlord"] = {g_storage = 40066, p_storage = 60029},
	["earth overlord"] = {g_storage = 40067, p_storage = 60030},
}


function onDeath(cid, corpse, lasthitkiller, mostdamagekiller, lasthitunjustified, mostdamageunjustified)
	local pid = Player(mostdamagekiller)

	local t = boss[Creature(cid):getName():lower()]

	pid:setStorageValue(t.p_storage, 1)
	setGlobalStorageValue(t.g_storage, -1)

	return true
end


function onKill(cid, target)
	if Creature(target):getName():lower() == "lord of the elements" then
		Player(cid):setStorageValue(60031, 1)
	end

	return true
end

function onLogin(cid)
	Player(cid):registerEvent("ElementalSpheresKill")
	return true
end

Lembrando que o erro só aparece quando algum player morre, alguém sabe o que possa ser?

Link para o post
Compartilhar em outros sites
  • 2 weeks later...
  • 3 months later...

Na linha onde tem:

pid:setStorageValue(t.p_storage, 1)

Substitua por:

if pid ~= nil then
   pid:setStorageValue(t.p_storage, 1)
end

Explicação:

Ele tenta identificar o PID (ID da Creature/Player) só que não encontra, ou seja, é considerado nulo/inexistente. Para evitar tal erro, fiz a verificação pra se caso o PID seja existente e/ou diferente de nulo.

Link para o post
Compartilhar em outros sites
function onDeath(cid, corpse, lasthitkiller, mostdamagekiller, lasthitunjustified, mostdamageunjustified)
	local pid = Player(mostdamagekiller)

	local t = boss[Creature(cid):getName():lower()]

	pid:setStorageValue(t.p_storage, 1)
	setGlobalStorageValue(t.g_storage, -1)

	return true
end

por esta: 

function onDeath(cid, corpse, lasthitkiller, mostdamagekiller, lasthitunjustified, mostdamageunjustified)
	local pid = Player(mostdamagekiller)
	
	if pid then
		local t = boss[Creature(cid):getName():lower()]
		if t then
			pid:setStorageValue(t.p_storage, 1)
			setGlobalStorageValue(t.g_storage, -1)
		end
	end

	return true
end
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.

  • Conteúdo Similar

    • Por Doria Louro
      Olá nobre senhores, tudo bem com vocês?
      Servidor: TFS 0.3.6
      Cliente:    8.60
       
      Estou com a seguinte ideia, criar conjuntos de equipamentos em meu servidor, que aumente os atributos do player ao utilizar o conjunto/set completo, exemplo:

       
      Um exemplo dos itens contidos no meu itens.xml:
      <item id="2487" article="a" name="warrior armor"> <attribute key="weight" value="9000" /> <attribute key="armor" value="13" /> <attribute key="skillSword" value="1" /> <attribute key="skillAxe" value="1" /> <attribute key="skillClub" value="1" /> <attribute key="slotType" value="body" /> <attribute key="healthGain" value="2" /> <attribute key="healthTicks" value="3000" /> <attribute key="description" value="+2 HP every 3s, Sale value: $5000" /> </item>  
      Em meu movements.xml:
      <movevent type="Equip" itemid="2487" level="30" slot="armor" event="function" value="onEquipItem"> <vocation id="8" /> </movevent> <movevent type="DeEquip" itemid="2487" slot="armor" event="function" value="onDeEquipItem" />  
      Entretanto eu fico limitado aos eventos de Equip default, se eu altero para meu script full_set.lua:
      <movevent type="Equip" itemid="2487" level="30" slot="armor" event="script" value="full_set.lua"> <vocation id="8" /> </movevent>  
      Executando meu script  eu perco os atributos contidos no itens.xml, tais como o aumento de skill, ganho de HP por segundo e também qualquer vocação pode utilizar o equipamento.
       
      Simplificando, é possível utilizar os recursos padrões de Equip do movements e adicionar um/mais scripts personalizáveis sem perder as funcionalidades da function onEquipItem?
      Meu objetivo é quanto mais partes do set o jogador possuir, mais bônus ele obterá, um exemplo:
       
      Warrior Set
      [2 peças] - Aumenta em 100 HP total
      [4 peças] - Aumenta em 2 shielding
       
      Eu tenho uma ideia de colocar essa verificação no creaturescripts, entretanto não gostaria de tomar esse rumo pois acredito que poderia sobrecarregar meu servidor com as verificações por thing.
      Efetuei consultas pela internet e geralmente o pessoa que tem essa duvida utiliza itens que não tem status, tipo um ring, no meu caso é diferente.
       
      Possível solução: Seria utilizar o código Equip padrão no meu script e depois aplicar meu código, entretanto eu não encontrei em nenhum local esse script de Equip,
       
      Quem puder me ajudar eu ficaria eternamente grato já que esse é um sistema chave no meu projeto, agradeço desde já
    • Por Mathwsz
      Bom galera, estou trazendo um script de fusão que funciona assim:
      Explicação: É necessário de 7 itens, na qual você coloca em tal coordenada e aperte a alavanca, sendo assim formando um item na qual você deseja em tal lugar configurado.
      Exemplo: Você pode fazer 7 bosses na qual dropa tals itens "Parecidos" e formando um item raro de sua escolha, ou como preferir.. Vamos ao script!
       
      Em Data/Actions/Scripts crie um arquivo chamado fusaoitens.lua e adicione isto dentro:
       
       
      Agora, em Data/Actions.xml adicione o seguinte:
       
      <action uniqueid="9900" script="fusaoitens.lua" /> E no seu RemeresMapEditor , pegue sua alavanca, vai em Propriedades e adicione o UniqueID 9900 nele! 
      PRONTO! Agora configure e divirta-se! Obs: Caso lhe ajudei, da um REP+ Aí !
    • Por BonasxD
      Bom galera primeiramente não sei se estou na area correta ou se nao estou, se nao por favor mover para area certa, grato!
      Estou com esse erro ao tenta instalar o gesior usando a tfs 0.4 não passa dessa parte ja tentei de tudo e nao sei oque fazer ;(
       
      Testei o mesmo procedimento no meu Windows e Funcionou corretamente agora no meu VM(Ubuntu22) não passa desse erro. 
       
      Ja pesquisei por tudo e não sei oque fazer

    • Por Kill of sumoners
      Boa noite, estou com um erro ao atacar um player em meu sv eu nao pego pk, nem sai magia, aparece a mensagem "voce so pode usar isso em criaturas"
      obs: magia em area acerta e pega pk, apenas as targets ou hits de arma nao vao 
    • Por Imperius
      Tinha visto isso no servidor do MegaTibia / Kaldrox e achei bem interessante.
       
      Todos os tópicos que encontrei sobre o assunto de alterar a cor das mensagens dos GMs, CMs e ADM no channel Help para vermelho, falavam que tinham que fazer uma configuração na própria source do servidor.
       
      Fiz uma gambiarra que funciona, sem a necessidade de mexer na source do servidor e de utilizar comandos para isso. Testei somente em TFS 0.4 e funciona tranquilamente.
       
      segue abaixo como configurar em seu otserver:
       
      data > talkactions > scripts > crie um arquivo chamado gmsayred.lua e cole o código abaixo:
       
      function onSay(cid, words, param, channel) if channel == CHANNEL_HELP then for _, pid in ipairs(getPlayersOnline()) do doPlayerSendChannelMessage(pid, '', "".. getCreatureName(cid) .. ": ".. words, TALKTYPE_CHANNEL_R1, CHANNEL_HELP) end return true end end  
      em talkactions.xml cole a tag abaixo:

       
      <!-- Gamemasters --> <talkaction default="yes" filter="quotation" logged="no" access="3" event="script" value="gmsayred.lua"/>    
      e pronto! Agora é só enviar alguma mensagem no Help que a mensagem ficará em vermelho.
       

       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo