Ir para conteúdo
  • Cadastre-se

{RESOLVIDO} [bug] Ao dar look


Posts Recomendados

Eu estava fazendo uma script de look, porem da um certo bug na distro

[25/9/2014 12:35:59] [Error - CreatureScript Interface] 
[25/9/2014 12:35:59] data/creaturescripts/scripts/lookreset.lua:onLook
[25/9/2014 12:35:59] Description: 
[25/9/2014 12:35:59] (LuaInterface::luaGetPlayerNameByGUID) Player not found

Alguém sabe como resolver?

Script:

 function onLook(cid, thing, position, lookDistance)
	if isPlayer(thing.uid) and thing.uid ~= cid then
				local string = 'You see '..getCreatureName(thing.uid)..'. (Level '..  getPlayerLevel(thing.uid)..') [Resets '..getPlayerResets(thing.uid)..'].'
		if getPlayerFlagValue(thing.uid, PLAYERFLAG_SHOWGROUPINSTEADOFVOCATION) then
				if(getPlayerSex(thing.uid)== 1) then
			string = string..' He is '.. getPlayerGroupName(thing.uid) ..'.'
		end
		if(getPlayerSex(thing.uid)== 0) then
			string = string..' She is '.. getPlayerGroupName(thing.uid) ..'.'
		end	

		elseif getPlayerVocation(thing.uid) ~= 0 then
		if(getPlayerSex(thing.uid)== 1) then
			string = string..' He is '.. getPlayerVocationName(thing.uid) ..'.'
		end
		if(getPlayerSex(thing.uid)== 0) then
			string = string..' She is '.. getPlayerVocationName(thing.uid) ..'.'
		end		
		else
		if(getPlayerSex(thing.uid)== 1) then
			string = string..' He has no vocation.'
		end
		if(getPlayerSex(thing.uid)== 0) then
			string = string..' She has no vocation.'
		end	
		end

		if getPlayerNameByGUID(getPlayerPartner(thing.uid), false, false) ~= nil then
		if(getPlayerSex(thing.uid)== 1) then
			string = string..' He is '.. (getPlayerSex(thing.uid) == 0 and 'wife' or 'husband') ..' of '.. getPlayerNameByGUID(getPlayerPartner(thing.uid)) ..'.'
		end
				if(getPlayerSex(thing.uid)== 0) then
			string = string..' She is '.. (getPlayerSex(thing.uid) == 0 and 'wife' or 'husband') ..' of '.. getPlayerNameByGUID(getPlayerPartner(thing.uid)) ..'.'
		end
		end

		if getPlayerGuildId(thing.uid) > 0 then
			if(getPlayerSex(thing.uid)== 1) then
			string = string..' He is ' .. (getPlayerGuildRank(thing.uid) == '' and 'a member' or getPlayerGuildRank(thing.uid)) ..' of the '.. getPlayerGuildName(thing.uid)
		end
				if(getPlayerSex(thing.uid)== 0) then
			string = string..' She is ' .. (getPlayerGuildRank(thing.uid) == '' and 'a member' or getPlayerGuildRank(thing.uid)) ..' of the '.. getPlayerGuildName(thing.uid)
		end
			string = getPlayerGuildNick(thing.uid) ~= '' and string..' ('.. getPlayerGuildNick(thing.uid) ..').' or string..'.'
		end

		if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEECREATUREDETAILS) then
			string = string..'\nHealth: ['.. getCreatureHealth(thing.uid) ..' / '.. getCreatureMaxHealth(thing.uid) ..'], Mana: ['.. getCreatureMana(thing.uid) ..' / '.. getCreatureMaxMana(thing.uid) ..'].'
			string = string..'\nIP: '.. doConvertIntegerToIp(getPlayerIp(thing.uid)) ..'.'
		end

		if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEEPOSITION) then
			string = string..'\nPosition: [X:'.. position.x..'] [Y:'.. position.y..'] [Z:'.. position.z..'].'
		end
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string)  
		return false
----------------------------------------------------------------------------------------------------------------------------------------
	elseif thing.uid == cid then
		local string = 'You see yourself. (Level '..  getPlayerLevel(cid)..') [Resets '..getPlayerResets(cid)..'].'
		if getPlayerFlagValue(cid, PLAYERFLAG_SHOWGROUPINSTEADOFVOCATION) then
			string = string..' You are '.. getPlayerGroupName(cid) ..'.'
		elseif getPlayerVocation(cid) ~= 0 then
			string = string..' You are '.. getPlayerVocationName(cid) ..'.'
		else
			string = string..' You have no vocation.'
		end

		if getPlayerNameByGUID(getPlayerPartner(cid), false, false) ~= nil then
			string = string..' You are '.. (getPlayerSex(cid) == 0 and 'wife' or 'husband') ..' of '.. getPlayerNameByGUID(getPlayerPartner(cid)) ..'.'
		end

		if getPlayerGuildId(cid) > 0 then
			string = string..' You are ' .. (getPlayerGuildRank(cid) == '' and 'a member' or getPlayerGuildRank(cid)) ..' of the '.. getPlayerGuildName(cid)
			string = getPlayerGuildNick(cid) ~= '' and string..' ('.. getPlayerGuildNick(cid) ..').' or string..'.'
		end

		if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEECREATUREDETAILS) then
			string = string..'\nHealth: ['.. getCreatureHealth(cid) ..' / '.. getCreatureMaxHealth(cid) ..'], Mana: ['.. getCreatureMana(cid) ..' / '.. getCreatureMaxMana(cid) ..'].'
			string = string..'\nIP: '.. doConvertIntegerToIp(getPlayerIp(cid)) ..'.'
		end

		if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEEPOSITION) then
			string = string..'\nPosition: [X:'.. position.x..'] [Y:'.. position.y..'] [Z:'.. position.z..'].'
		end
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string)  
		return false
	end
	return true
end

Funciona, so da esse bug, que eu nao sei por que

12:35 You see yourself. (Level 363) [Resets 1]. You are Knight. You are Leader of the No muroo.
12:35 You see ADM Thock. (Level 28) [Resets 4]. He is administrador. He is Leader of the Naequipe.

Pronto, resolvi,pdem fechar o topico


resolvido

Editado por narazaky (veja o histórico de edições)

Te ajudei? Então Rep + ;)

Link para o post
Compartilhar em outros sites

Na verdade eu só tirei aquela verificação:

		if getPlayerNameByGUID(getPlayerPartner(thing.uid), false, false) ~= nil then
		if(getPlayerSex(thing.uid)== 1) then
			string = string..' He is '.. (getPlayerSex(thing.uid) == 0 and 'wife' or 'husband') ..' of '.. getPlayerNameByGUID(getPlayerPartner(thing.uid)) ..'.'
		end
				if(getPlayerSex(thing.uid)== 0) then
			string = string..' She is '.. (getPlayerSex(thing.uid) == 0 and 'wife' or 'husband') ..' of '.. getPlayerNameByGUID(getPlayerPartner(thing.uid)) ..'.'
		end
		end

		if getPlayerNameByGUID(getPlayerPartner(cid), false, false) ~= nil then
			string = string..' You are '.. (getPlayerSex(cid) == 0 and 'wife' or 'husband') ..' of '.. getPlayerNameByGUID(getPlayerPartner(cid)) ..'.'
		end

Pois no meu servidor nao tem o sistema de casamento.

deixando ele assim:

 function onLook(cid, thing, position, lookDistance)
	if isPlayer(thing.uid) and thing.uid ~= cid then
				local string = 'You see '..getCreatureName(thing.uid)..' (Level '..  getPlayerLevel(thing.uid)..') [Reset '..getPlayerResets(thing.uid)..'].'
		if getPlayerFlagValue(thing.uid, PLAYERFLAG_SHOWGROUPINSTEADOFVOCATION) then
				if(getPlayerSex(thing.uid)== 1) then
			string = string..' He is '.. getPlayerGroupName(thing.uid) ..'.'
		end
		if(getPlayerSex(thing.uid)== 0) then
			string = string..' She is '.. getPlayerGroupName(thing.uid) ..'.'
		end	

		elseif getPlayerVocation(thing.uid) ~= 0 then
		if(getPlayerSex(thing.uid)== 1) then
			string = string..' He is '.. getPlayerVocationName(thing.uid) ..'.'
		end
		if(getPlayerSex(thing.uid)== 0) then
			string = string..' She is '.. getPlayerVocationName(thing.uid) ..'.'
		end		
		else
		if(getPlayerSex(thing.uid)== 1) then
			string = string..' He has no vocation.'
		end
		if(getPlayerSex(thing.uid)== 0) then
			string = string..' She has no vocation.'
		end	
		end

		 -- if getPlayerNameByGUID(getPlayerPartner(thing.uid), false, false) ~= nil then
		 -- if(getPlayerSex(thing.uid)== 1) then
			 -- string = string..' He is '.. (getPlayerSex(thing.uid) == 0 and 'wife' or 'husband') ..' of '.. getPlayerNameByGUID(getPlayerPartner(thing.uid)) ..'.'
		 -- end
				 -- if(getPlayerSex(thing.uid)== 0) then
			 -- string = string..' She is '.. (getPlayerSex(thing.uid) == 0 and 'wife' or 'husband') ..' of '.. getPlayerNameByGUID(getPlayerPartner(thing.uid)) ..'.'
		 -- end
		-- else
		-- string = string
		-- end

		if getPlayerGuildId(thing.uid) > 0 then
			if(getPlayerSex(thing.uid)== 1) then
			string = string..' He is ' .. (getPlayerGuildRank(thing.uid) == '' and 'a member' or getPlayerGuildRank(thing.uid)) ..' of the '.. getPlayerGuildName(thing.uid)
		end
				if(getPlayerSex(thing.uid)== 0) then
			string = string..' She is ' .. (getPlayerGuildRank(thing.uid) == '' and 'a member' or getPlayerGuildRank(thing.uid)) ..' of the '.. getPlayerGuildName(thing.uid)
		end
			string = getPlayerGuildNick(thing.uid) ~= '' and string..' ('.. getPlayerGuildNick(thing.uid) ..').' or string..'.'
		end
		
		if (getPlayerGroupId(cid) >= 5) then
		if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEECREATUREDETAILS) then
			string = string..'\nHealth: ['.. getCreatureHealth(thing.uid) ..' / '.. getCreatureMaxHealth(thing.uid) ..'], Mana: ['.. getCreatureMana(thing.uid) ..' / '.. getCreatureMaxMana(thing.uid) ..'].'
			string = string..'\nIP: '.. doConvertIntegerToIp(getPlayerIp(thing.uid)) ..'.'
		end

		if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEEPOSITION) then
			string = string..'\nPosition: [X:'.. position.x..'] [Y:'.. position.y..'] [Z:'.. position.z..'].'
		end
		end
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string)  
		return false
----------------------------------------------------------------------------------------------------------------------------------------
	elseif thing.uid == cid then
		local string = 'You see yourself. (Level '..  getPlayerLevel(cid)..') [Reset '..getPlayerResets(cid)..'].'
		if getPlayerFlagValue(cid, PLAYERFLAG_SHOWGROUPINSTEADOFVOCATION) then
			string = string..' You are '.. getPlayerGroupName(cid) ..'.'
		elseif getPlayerVocation(cid) ~= 0 then
			string = string..' You are '.. getPlayerVocationName(cid) ..'.'
		else
			string = string..' You have no vocation.'
		end

		-- if getPlayerNameByGUID(getPlayerPartner(cid), false, false) ~= nil then
			-- string = string..' You are '.. (getPlayerSex(cid) == 0 and 'wife' or 'husband') ..' of '.. getPlayerNameByGUID(getPlayerPartner(cid)) ..'.'
		-- end

		if getPlayerGuildId(cid) > 0 then
			string = string..' You are ' .. (getPlayerGuildRank(cid) == '' and 'a member' or getPlayerGuildRank(cid)) ..' of the '.. getPlayerGuildName(cid)
			string = getPlayerGuildNick(cid) ~= '' and string..' ('.. getPlayerGuildNick(cid) ..').' or string..'.'
		end
	
			if (getPlayerGroupId(cid) >= 5) then
		if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEECREATUREDETAILS) then
			string = string..'\nHealth: ['.. getCreatureHealth(cid) ..' / '.. getCreatureMaxHealth(cid) ..'], Mana: ['.. getCreatureMana(cid) ..' / '.. getCreatureMaxMana(cid) ..'].'
			string = string..'\nIP: '.. doConvertIntegerToIp(getPlayerIp(cid)) ..'.'
		end

		if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEEPOSITION) then
			string = string..'\nPosition: [X:'.. position.x..'] [Y:'.. position.y..'] [Z:'.. position.z..'].'
		end
		end
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string)  
		return false
	end
	return true
end

Mas em breve postarei o sistema de reset completo

Te ajudei? Então Rep + ;)

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 Linus
      Você  pode configurar se quer que o preço aumente a cada reset, se quer que o level pra resetar aumente e se vc quer que a vida resete junto (e quanto % da vida atual será a vida após resetar).
       
       
      Testado em tfs 1.1, Versão 10.77
       
       
       
       
      Vá em data/npc/lib/ crie npc_resets.lua :
       



       
      Você pode editar mexendo aqui. no script acima :
      config = { minlevel = 150, --- Level inical para resetar price = 10000, --- Preço inicial para resetar newlevel = 20, --- Level após reset priceByReset = 0, --- Preço acrescentado por reset percent = 30, ---- Porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total) maxresets = 50, ---- Maximo de resets levelbyreset = 0 --- Quanto de level vai precisar a mais no próximo reset } agora em data/npc/ crie reseter.XML :
       



       
       
       
      Agora em data/npc/scripts crie reseter.lua :
       



       
       
       
      Img : 
       

    • Por gpedro
      Testado: MySQL & SQLite
      Distro: TFS 0.4_SVN & TFS 0.3.6

      MySQL

      ALTER TABLE `players` ADD `resets` INT(11) NOT NULL DEFAULT "0"; SQLite ALTER TABLE players ADD resets INTEGER not null default 0 Adicionando nas sources player.h procure por: uint32_t level; logo abaixo, adicione: uint32_t resets; iologindata.cpp procure por query << "SELECT `id`, `account_id`, `group_id`, `world_id`, `sex`, `vocation`, `experience`, `level`," substitua por: query << "SELECT `id`, `account_id`, `group_id`, `world_id`, `sex`, `vocation`, `experience`, `level`, `resets`, " procure por player->level = std::max((uint32_t)1, (uint32_t)result->getDataInt("level")); logo abaixo adicione: player->resets = (uint32_t)result->getDataInt("resets"); procure por query << "`maglevel` = " << player->magLevel << ", "; logo abaixo adicione: query << "`resets` = " << player->resets << ", "; players.cpp procure por: s << " (Level " << level << ")"; substitua por: s << " (Level " << level << ") [Reset " << resets << "]"; players.h procure por: void setPromotionLevel(uint32_t pLevel); logo abaixo adicione: uint32_t getResets() { return resets;} void setResets(int32_t amount) { resets += amount; if (resets < 0) {resets = 0;} } luascript.cpp para 0.3.6 static int32_t luaDoPlayerSetIdleTime(lua_State* L); logo abaixo adicione: static int32_t luaGetResets(lua_State* L); static int32_t luaSetResets(lua_State* L); talkactions.xml <talkaction words="!rank;/rank" event="script" value="ranks.lua"/> <talkaction words="!reset;/reset" script="reset.lua"/> ranks.lua
      Créditos: Dark Skyllen, Marcryzius, Mock, Kydrai, Cykotitan, gpedro*.
      * adaptação para 0.4
    • Por xWhiteWolf
      Fala galera do TK, hoje vim pra trazer pra vocês um npc criado por mim e pelo Nogard numa madrugada aí para solucionar a dúvida de um cara no suporte. Eu dei uma melhorada no script original, tirei umas coisas repetidas e adicionei novas funções; 
      Você agora pode configurar se quer que o preço aumente a cada reset, se quer que o level pra resetar aumente e se vc quer que a vida resete junto (e quanto % da vida atual será a vida após resetar).
      Testado em TFS 0.3.6, Versão 8.45

      Sem mais delongas, vamos ao script.
      Antes de tudo crie um arquivo chamado reseter.lua na pasta data\npc\scripts\ e coloque isso daqui dentro dele:


      Você pode editar tudo mexendo aqui:
      local config = {
      minlevel = 150, --- level inical para resetar
      price = 10000, --- preço inicial para resetar
      newlevel = 20, --- level após reset
      priceByReset = 0, --- preço acrescentado por reset
      percent = 100, ---- porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total)
      levelbyreset = 0 --- quanto de level vai precisar a mais no próximo reset
      }
      Feito isso, crie agora o npc que irá utilizar esse script.. em data\npc crie um arquivo.xml chamado Reseter.xml e coloque isso dentro dele:
      Agora é só colocar o seu npc no mapa pelo mapa editor e curtir

      OBS 1: Se seu server for 8.6 ou maior troque no script.lua as funções db.executeQuery por db.query
      OBS 2: Esse script dava pra ser diminuido ainda mais mas por hora deixa ele assim, se vc tiver alguma proposta melhor por favor poste nos comentários que eu testo a sua versão e edito o tópico se for o caso.
      OBS 3: Não remova os créditos, isso é a coisa mais baixa e suja que alguém pode fazer.. eu scripto pra ajudar a comunidade do Tibia a evoluir e libero 99% doque eu faço, se vocês não removerem os créditos e não postarem em outros fórums sem minha permissão isso pode continuar assim.


      --- EDIT: Coloquei algumas imagens pra vcs verem como fica no server  
       
         
       
         

       



      EDIT: Arrumei o problema de o npc não dar bye automáticamente qnd o player se afasta, bugando em algumas versões e impedindo de conversar com outros npcs. Apenas substituam o arquivo em scripts pela versão atualizada, grato.

      EDIT2: Novos erros arrumados, agora o NPC dá bye automaticamente e não buga qnd te reseta.

      EDIT3: Resolvido bug de dar hi, reset, yes várias vezes e derrubar o servidor (troque tanto o xml qnt o script do npc)
      O script também foi identado.
    • Por Marjer
      Ola! Eu tenho uma duvida!
      Eu tenho 1 mapa 9.60 e ficou 1 tempo online, e assim foi crecendo.. (accs, players, etc..)
      E eu consegui passar para 10.10
      E gostaria de saber se tem como passa a database do 9.60 pro 10.10 ?
      Tem algum jeito que eu possa fazer isso ?
      Eu fiz uns test..
      Quando eu coloquei a database do 9.60 na pasta do 10.10
      Eu abri o executer e aparece isso de primeiro :

      (Uso Distro : The Forgotten Server, version 0.3.7_7_SVN)

      Updating Database Manager
      Updating Database to version 37...
      Updating has been updated to version: 37.
      Updating Database to version 38...
      Updating has been updated to version: 38.
      Optimized database.

      E abriu normalmente...
      Nessa database tem as contas, e depois que abril certinho o mapa.
      Eu tento entra e fala que o password ou o login estao errados.
      E quando eu logo no account manager da esse erro :
      Error during getDataInt(offinetraining_time)
      Error during getDataInt(offinetraining_skill)
      sqlite3_prepare_v2(): SQILITE ERRO: no such table? player_inboxitems (SELECT "pid, "sid", "itemtype", "count", "attributes" FROM "player_inboxitems" WHERE "player_id" = 1 ORDEN BY "Sid Desc;)

      Toda vez que entro no jogo, com personagem, ou account manager, no Server Log aparece isso :
       00:32 You must be logged out for more than 10 minutes to start offline training.
      E quando entro eu ando um pouco, depois eu relogo, vai para o templo, e com a mesma mensagem acima!
      E quando logo, no executer, da 1 erro muitoo grande!
      Irei postar uma foto!
      Foto :



      Entao.. Tem como ?

      ---------------------------
      (Uso Distro : The Forgotten Server, version 0.3.7_7_SVN)
      Entao...
      Eu peguei outra database, porque a da versão 9.60 dava erro!
      Eu fiz varios tests com a database.
      Pelo o que eu procurei e testei, essa database funcionou 100%
      Massss.....
      Meu mapa é Radbr, então tem o sistema de resets.
      Já tentei falar, /installreset, é mesma coisa que nada!
      E quando o player reseta nessa database, da 1 erro!
      Mas sera que é erro no Script ? ( Mas na outra versão 8.60 ea 9.60 funcionava!.... )

      E o player volta pro level 20, e com vida e mana de antes.
      Mas não aparece no look, e da erro no executer :
      Error during get DataInt (reset)  "4 vezes aparece esse erro" e depois...
      Tabela de Resets: Intalada ... [success]
      Error during get DataInt (reset)
      Ai desloga o char.. E quando desloga da esse erro :

      sqlite3_prepare_v2(): SQLITE ERROR: no such column: reset (UPDATE "players" SET "reset" = 1 WHERE "id"=3;)
      Ai loga o char... E da esse erro :
      sqlite3_prepare_v2(): SQLITE ERROR: no such column: reset (SELECT "ID", "reset" FROM "players" ORDEN BY DESC;)

      Tem algum jeito de arruma isso ?
      Eu procurei algumas coisas mas não achei! Talvez alguma SQL query possa ajuda nisso! Talvez..
      Se alguém souber... Por favor me ajuda.
      Irei colocar meu servidor online, e preciso de uma database boa! Nem que não de a do 9.60
      Mas uma que funcione...! E não de erro do sistema de reset!
      Por favor se alguém puder me ajuda, eu agradeço!

      Atenciosamente, Marjer!
       
      EDIT : Foto postada
    • Por Cleiton Felipi
      Bom dia galera!
      Bom eu gostaria de saber se existe algum comando para mysql que reseta o level e mana o life e os skill dos players, sem deletar os char, e o comando que manda todos para o templo.
      Não sei se estou na area correta, se não tiver desculpa.
      Desde já obrigado.
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo