Ir para conteúdo
  • Cadastre-se

Posts Recomendados

é exatamente isso: o print serve pra demarcar pedaços do script e aí pelo console a gente analisa até que parte ele tá executando.

Usa esse daqui:

function onKill(cid, target, lastHit)
print(1)
local upgrade = {
[1] = {required = 1000},
[2] = {required = 10000},
[3] = {required = 100000},
[4] = {required = 1000000},
[5] = {required = 10000000}
}

	local teste = getWeapon(cid)
	
	if teste == false then
	print("error in test")
		return true
	end
		
	if getCreatureMaster(target) ~= target then
	print("error in master")
		return true
	end
		
	local pos = getThingPos(cid)
	local level = getItemLevel(teste.uid, #upgrade)
			
		if level >= #upgrade then
		print(2)
			doItemSetAttribute(teste.uid, "description", "Experience: ["..upgrade[level].required.."/"..upgrade[level].required.."]")
			return true
		end					
			
local count = math.floor((getMonsterInfo(string.lower(getCreatureName(target))).experience))
local expatual = getItemAttribute(teste.uid, "exp") or 0
local newexp = expatual+count

		if newexp >= upgrade[level + 1].required then 
		print(3)
			doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"You leveled your "..getItemNameById(teste.itemid).." to ".. level+1 ..".")
			doItemSetAttribute(teste.uid,'name', getItemNameById(teste.itemid)..' +'..(level+1))
			doSendMagicEffect(pos, math.random(28,30))
			doItemSetAttribute(teste.uid, "exp", 0)
			if level + 2 <= #upgrade then
			print(4)
				doItemSetAttribute(teste.uid, "description", "Experience: [".. 0 .."/"..upgrade[level + 2].required.."]")
			end
		else
		print(5)
			doItemSetAttribute(teste.uid, "exp", expatual+count)
			doItemSetAttribute(teste.uid, "description", "Experience: ["..(expatual+count).."/"..upgrade[level + 1].required.."]")
			doPlayerSendTextMessage(cid, 27, "Congratulations, you get the experience of a ".. getCreatureName(target) .."!")
		end
return true
end 

Se o script estiver instalado corretamente ele vai mostrar varias msgs no console qnd vc matar 1 monstro

Opa agora tive resultado que não sei oque é,mas ja fiquei feliz sabendo que o script esta instalado correto,kkkkk

[20:47:36.875] Human has logged in.
1
error in master
1
error in master
1
error in master

Matei 3 deu 3 erros iguais.

Link para o post
Compartilhar em outros sites
  • Respostas 109
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Eai galera, hoje eu to trazendo pra vocês o meu Experience Weapon System. Pra quem não conhece é um sistema em que conforme você vai matando os monstros sua arma vai adquirindo parte da experiencia e

[1] = {required = 1000}, -- qnt de exp precisa pra cada nivel no formato [nv] = {required = experiencia requerida} [2] = {required = 10000}, [3] = {required = 100000}, [4] = {required = 1000000}, [5]

@Coul, é só remover o restante dos prints agr que vc sabe que funciona   @Ayna, até daria pra fazer mas tem que fazer pela source pra n ficar gambiarra.. porque o player pode upar e qnd remover a es

Posted Images

perfeito, achamos o erro uhauhauha
agora vc vai mudar aquela parte que está
 

if getCreatureMaster(target) ~= target then
    print("error in master")
        return true
    end

 

e deixar assim:
 

if getCreatureMaster(target) ~= target then
	print(type(getCreatureMaster(target)))
        print(getCreatureMaster(target))
		return true
	end

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

 

perfeito, achamos o erro uhauhauha

agora vc vai mudar aquela parte que está

 

e deixar assim:

 

if getCreatureMaster(target) ~= target then
	print(type(getCreatureMaster(target)))
        print(getCreatureMaster(target))
		return true
	end

ok,feito agora tive esse retorno ao matar 3 criaturas.

1
nil

1
nil

1
nil
Link para o post
Compartilhar em outros sites

agr pode deixar assim que vai funcionar

if getCreatureMaster(target) ~= nil then
        return true
    end

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

 

agr pode deixar assim que vai funcionar

if getCreatureMaster(target) ~= nil then
        return true
    end

Funcionou, apenas deu isso no log do console matei 2 rotworms:

1
5
1
5

22:00 Congratulations, you get the experience of a rotworm!

 

look da arma ta:Experience: [91/1000] normal.

 

Agora esse erro 1 5 toda criaturar que matar vai dar isso,normal?

Link para o post
Compartilhar em outros sites

@ xWhiteWolf 

Uma ideia para script que eu gostaria muito! Quando maior for o level do personagem mais damage o item vai ter. Por exemplo uma espada empunhada por um lvl 10, teria 12 de atk, mas quando ela for empunhada por um level 20 ela teria 16 de atk. Abrçss

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

Só da o REP+.

 

 

Link para o post
Compartilhar em outros sites

@Coul, é só remover o restante dos prints agr que vc sabe que funciona :D 


@Ayna, até daria pra fazer mas tem que fazer pela source pra n ficar gambiarra.. porque o player pode upar e qnd remover a espada deixaria ela com - attack que o normal. 

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

@Coul, é só remover o restante dos prints agr que vc sabe que funciona :D

 

Cara muito obrigado,sou grato de verdade pela sua paciência e dedicação em me ajudar,seu sistema funcionou para mim,então acabei de fazer uma doação de R$10 no seu pagseguro de agradecimento por tudo que você fez.

Boa sorte em sua careira!

 

 

@xWhiteWolf

Constatei que quando esta com  sword na mão esquerda e com shield na mão direita ele upa o shield e ignora a sword,tem como programar para ignorar o escudo,ja que ele não tem nenhuma função.

 

Também verifiquei que não esta upando o level 2,eu consigo upar o level 1 normalmente,a descrição da arma fica correta igual a tabela pronto para avançar para o nivel 2,(You see a magic sword + 1 (Atk:48, Def:35 +3).It weighs 42.00 oz. 42.00 oz.Experience: [0/10000]),mas basta matar uma criatura para resetar e voltar na experiencia antiga(Experience: [40/1000]),resultado fica upando level 1 infinitamente,posso insistir que ela sempre upa o level 1,tem conserto esse problema?

 

OBS:Não apresenta erro nenhum no console.

Editado por Coul (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

@Coul, Obrigado pela doação, significa bastante.

Estranho esses erros porque a lib tem funções justamente pra retornar level e distinguir onde está a arma. Ele deve tar dando algum problema na hr de rodar as funções, faz o mesmo processo de print pras funções da lib e vamos ver aonde que seu server tá travando

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Ok,vamos lá.

Aqui segue script com as print inclusa dentro do código:

function isThatWeapon(uid) -- Function by Mock the bear.
print(1)
uid = uid or 0
local f = getItemWeaponType(uid)
if f == 1 or f == 2 or f == 3 or f == 5 or f == 6 then
print(2)
return true
end
return false
end
print(3)
function getWeapon(uid) -- Function by Night Wolf
	teste = getPlayerSlotItem(uid, CONST_SLOT_RIGHT)
	if teste.itemid > 0 then
	print(4)
		if not isThatWeapon(teste.uid) then
			teste = getPlayerSlotItem(uid, CONST_SLOT_LEFT)
		end
	else
	print(5)
		teste = getPlayerSlotItem(uid, CONST_SLOT_LEFT)
	end
        print(6)
	if teste.itemid > 0 then
		if not isThatWeapon(teste.uid) then
			teste = false
		end
	else
	print(7)
		teste = false
	end
return teste
end
        print(8)
function getItemLevel(uid, maxlevel) -- Function By Night Wolf
	level = 0
	local name = getItemName(uid)
	                        print(9)
	for i = 1, maxlevel do
		if string.find(tostring(name),"+".. i .."") then
			level = i
			end
			print(10)
		end
return level
end

Aqui erros no console quando os sistema são carregados ao iniciar o servidor:

 

2njd0mb.png

 

Agora erros do console quando mato o primeiro monstro:

2u74ntj.png

Não sei se as print exige lugares específicos para serem inseridas,fiz aleatoriamente.

Link para o post
Compartilhar em outros sites

foi bem até, deu pra ter uma noção de onde pode estar dando o erro mas agr usa essa versão aqui:

mata um primeiro mostro e mostra o print do console fazendo o favor

function isThatWeapon(uid) -- Function by Mock the bear.
uid = uid or 0
local f = getItemWeaponType(uid)
if f == 1 or f == 2 or f == 3 or f == 5 or f == 6 then
print(f)
return true
end
return false
end

function getWeapon(uid) -- Function by Night Wolf
	teste = getPlayerSlotItem(uid, CONST_SLOT_RIGHT)
	if teste.itemid > 0 then
	print(teste.itemid)
		if not isThatWeapon(teste.uid) then
		print("Not weapon")
			teste = getPlayerSlotItem(uid, CONST_SLOT_LEFT)
		end
	else
	print("Mão esquerda")
		teste = getPlayerSlotItem(uid, CONST_SLOT_LEFT)
	end
	if teste.itemid > 0 then
	print(teste.itemid)
		if not isThatWeapon(teste.uid) then
		print("Not Weapon")
			teste = false
		end
	else
	print("Can't found weapon")
		teste = false
	end
return teste
end

function getItemLevel(uid, maxlevel) -- Function By Night Wolf
	level = 0
	local name = getItemName(uid)
	                        print(name)
	for i = 1, maxlevel do
		if string.find(tostring(name),"+".. i .."") then
			level = i
			end
			print(i)
		end
return level
end

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Aqui vai primeiro log,esse aqui eu tirei porque eu nao matei o bixo,apenas dei 1 hit nele ja causou esses erros:

1253voz.png

 

Aqui segundo log de quando eu mato um monstro com apenas 1 hit:

 

2i0xjeb.png

 

E aqui é sobre o shield estar recebendo experiencia no lugar das armas se ele estiver na mão direita, e a arma na esquerda:

2djs6rr.png

Caso ele esteja na esquerda e a arma na direita segue funcionamento normal.

Link para o post
Compartilhar em outros sites

ele funciona normalmente (inclusive upando?) caso esteja a arma na direita?

Troca seu creaturescript por esse:

function onKill(cid, target, lastHit)
local upgrade = {
[1] = {required = 1000},
[2] = {required = 10000},
[3] = {required = 100000},
[4] = {required = 1000000},
[5] = {required = 10000000}
}

	local teste = getWeapon(cid)
	
	if teste == false then
		return true
	end
		
	if getCreatureMaster(target) ~= target then
		return true
	end
		
	local pos = getThingPos(cid)
	local level = getItemLevel(teste.uid, #upgrade)
           print("O level e : "..level)
			
		if level >= #upgrade then
			doItemSetAttribute(teste.uid, "description", "Experience: ["..upgrade[level].required.."/"..upgrade[level].required.."]")
			return true
		end					
			
local count = math.floor((getMonsterInfo(string.lower(getCreatureName(target))).experience))
print("O valor de count eh: ".. count)
local expatual = getItemAttribute(teste.uid, "exp") or 0
print("O valor de expatual eh: ".. expatual)
local newexp = expatual+count

		if newexp >= upgrade[level + 1].required then 
			doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"You leveled your "..getItemNameById(teste.itemid).." to ".. level+1 ..".")
			doItemSetAttribute(teste.uid,'name', getItemNameById(teste.itemid)..' +'..(level+1))
			doSendMagicEffect(pos, math.random(28,30))
			doItemSetAttribute(teste.uid, "exp", 0)
			if level + 2 <= #upgrade then
				doItemSetAttribute(teste.uid, "description", "Experience: [".. 0 .."/"..upgrade[level + 2].required.."]")
			end
		else
			doItemSetAttribute(teste.uid, "exp", expatual+count)
			doItemSetAttribute(teste.uid, "description", "Experience: ["..(expatual+count).."/"..upgrade[level + 1].required.."]")
			doPlayerSendTextMessage(cid, 27, "Congratulations, you get the experience of a ".. getCreatureName(target) .."!")
		end
return true
end 


e seu lib por esse:

function isThatWeapon(uid) -- Function by Mock the bear.
uid = uid or 0
print("Entrando na isThatWeapon: ".. f)
local f = getItemWeaponType(uid)
if f == 1 or f == 2 or f == 3 or f == 5 or f == 6 then
return true
end
return false
end

function getWeapon(uid) -- Function by Night Wolf
	teste = getPlayerSlotItem(uid, CONST_SLOT_RIGHT)
	print("Entrando na getWeapon: ".. teste.itemid)
	if teste.itemid > 0 then
		if not isThatWeapon(teste.uid) then
		print("Not weapon in the right")
			teste = getPlayerSlotItem(uid, CONST_SLOT_LEFT)
		end
	else
		teste = getPlayerSlotItem(uid, CONST_SLOT_LEFT)
	end
		print("Entrando na getWeapon[2]: ".. teste.itemid)
	if teste.itemid > 0 then
		if not isThatWeapon(teste.uid) then
		print("Not Weapon")
			teste = false
		end
	else
	print("Can't found weapon")
		teste = false
	end
return teste
end

function getItemLevel(uid, maxlevel) -- Function By Night Wolf
	level = 0
	local name = getItemName(uid)
	                        print(name)
	for i = 1, maxlevel do
		if string.find(tostring(name),"+".. i .."") then
			level = i
			end
			print(level)
		end
return level
end



ps: peço desculpa por estar demorando tanto pra te ajudar uhauha mas preciso que vc tenha paciência, to bem perto de entender oque tá dando de errado e acho q é alguma incompatibilidade com a source mas que vai ser possível resolver!

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

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

ele funciona normalmente (inclusive upando?) caso esteja a arma na direita?

Troca seu creaturescript por esse:

function onKill(cid, target, lastHit)
local upgrade = {
[1] = {required = 1000},
[2] = {required = 10000},
[3] = {required = 100000},
[4] = {required = 1000000},
[5] = {required = 10000000}
}

	local teste = getWeapon(cid)
	
	if teste == false then
		return true
	end
		
	if getCreatureMaster(target) ~= target then
		return true
	end
		
	local pos = getThingPos(cid)
	local level = getItemLevel(teste.uid, #upgrade)
           print("O level e : "..level)
			
		if level >= #upgrade then
			doItemSetAttribute(teste.uid, "description", "Experience: ["..upgrade[level].required.."/"..upgrade[level].required.."]")
			return true
		end					
			
local count = math.floor((getMonsterInfo(string.lower(getCreatureName(target))).experience))
print("O valor de count eh: ".. count)
local expatual = getItemAttribute(teste.uid, "exp") or 0
print("O valor de expatual eh: ".. expatual)
local newexp = expatual+count

		if newexp >= upgrade[level + 1].required then 
			doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"You leveled your "..getItemNameById(teste.itemid).." to ".. level+1 ..".")
			doItemSetAttribute(teste.uid,'name', getItemNameById(teste.itemid)..' +'..(level+1))
			doSendMagicEffect(pos, math.random(28,30))
			doItemSetAttribute(teste.uid, "exp", 0)
			if level + 2 <= #upgrade then
				doItemSetAttribute(teste.uid, "description", "Experience: [".. 0 .."/"..upgrade[level + 2].required.."]")
			end
		else
			doItemSetAttribute(teste.uid, "exp", expatual+count)
			doItemSetAttribute(teste.uid, "description", "Experience: ["..(expatual+count).."/"..upgrade[level + 1].required.."]")
			doPlayerSendTextMessage(cid, 27, "Congratulations, you get the experience of a ".. getCreatureName(target) .."!")
		end
return true
end 

e seu lib por esse:

function isThatWeapon(uid) -- Function by Mock the bear.
uid = uid or 0
print("Entrando na isThatWeapon: ".. f)
local f = getItemWeaponType(uid)
if f == 1 or f == 2 or f == 3 or f == 5 or f == 6 then
return true
end
return false
end

function getWeapon(uid) -- Function by Night Wolf
	teste = getPlayerSlotItem(uid, CONST_SLOT_RIGHT)
	print("Entrando na getWeapon: ".. teste.itemid)
	if teste.itemid > 0 then
		if not isThatWeapon(teste.uid) then
		print("Not weapon in the right")
			teste = getPlayerSlotItem(uid, CONST_SLOT_LEFT)
		end
	else
		teste = getPlayerSlotItem(uid, CONST_SLOT_LEFT)
	end
		print("Entrando na getWeapon[2]: ".. teste.itemid)
	if teste.itemid > 0 then
		if not isThatWeapon(teste.uid) then
		print("Not Weapon")
			teste = false
		end
	else
	print("Can't found weapon")
		teste = false
	end
return teste
end

function getItemLevel(uid, maxlevel) -- Function By Night Wolf
	level = 0
	local name = getItemName(uid)
	                        print(name)
	for i = 1, maxlevel do
		if string.find(tostring(name),"+".. i .."") then
			level = i
			end
			print(level)
		end
return level
end

ps: peço desculpa por estar demorando tanto pra te ajudar uhauha mas preciso que vc tenha paciência, to bem perto de entender oque tá dando de errado e acho q é alguma incompatibilidade com a source mas que vai ser possível resolver!

O escudo com a arma na mão direita não upa,nesse caso apenas a arma recebe exp.

 

Agora nao foi possivel atacar quando eu clico para atacar ele apenas marca o alvo mas nao causa nenhum HIT.

Novo log:

1zexfsw.png

 

 

Relaxa,somo todos aprendizes eterno na vida,se der certo deu,se não der obrigado do mesmo jeito,tentamos,kkk

Editado por Coul (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

puts cometi um equívoco na lib, linha 3 e 4:

print("Entrando na isThatWeapon: ".. f)
local f = getItemWeaponType(uid)

deixa assim:

local f = getItemWeaponType(uid)
print("Entrando na isThatWeapon: ".. f)

 

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

puts cometi um equívoco na lib, linha 3 e 4:

print("Entrando na isThatWeapon: ".. f)

local f = getItemWeaponType(uid)

deixa assim:

local f = getItemWeaponType(uid)

print("Entrando na isThatWeapon: ".. f)

 

corrigido,log ao matar monstro:

2ez48ro.png

Link para o post
Compartilhar em outros sites

perfeito, só faltou reiniciar o server dps de trocar o creaturescript pra eu ver se ele tá pegando os valores certinho

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

perfeito, só faltou reiniciar o server dps de trocar o creaturescript pra eu ver se ele tá pegando os valores certinho

Reiniciado e monstro morto com 1 hit;

208gx1z.png

OBS:Não recebo exp da arma nenhuma mensagem,esta como se não houvesse sistema algum.

Editado por Coul (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

vacilo meu, vai no creaturescript e troca 
 

if getCreatureMaster(target) ~= target then
return true
end

por

if getCreatureMaster(target) ~= nil then
return true
end

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

 

vacilo meu, vai no creaturescript e troca 

 

if getCreatureMaster(target) ~= target then
return true
end

por

if getCreatureMaster(target) ~= nil then
return true
end

 

Script parece que ficou ok o funcionamento da exp,esta upando os level como deveria ser!  :)

Deu isso no log mas deve ser dos print:

 

2lx6on8.png

 

Se estiver ok quero testar as condition,pode me dar uma explicação de como deixa essa formula com mais chance de acontecer o ataque ?

if level > 0 and math.random(100) < ((level * 10)/2)
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.


×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo