Ir para conteúdo
  • Cadastre-se

Posts Recomendados

só remover todos os print do creature e da lib que essas mensagens somem.. a porcentagem é (level * 10)/2 ou seja, se vc tem nv 1 vai ter 5% de chance de soltar o ataque

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
  • 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

só remover todos os print do creature e da lib que essas mensagens somem.. a porcentagem é (level * 10)/2 ou seja, se vc tem nv 1 vai ter 5% de chance de soltar o ataque

Olha agora ficou ficou muito show!Ta funcionando tudo,só iria pedir se você consegue resolver o problema do shield estar upando na mão direita com arma empunhada na esquerda ou somente com shield com uma mão vazia matando bixo usando os punhos (fist fighting).

01:51 You see a demon shield +1 (Def:35).
It weighs 26.00 oz.
Experience: [160/200]

Legal seria o sistema ignorar os shield de vez,mas não sei se tem como ele fazer isso,já que ele tem atributo def e as weapons também.

É normal aparecer o level e a xp do item só depois que matar o primeiro bixo? 

Sim,o script só seta descrição no item após o primeiro ganho de exp com a arma.

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

Olha agora ficou ficou muito show!Ta funcionando tudo,só iria pedir se você consegue resolver o problema do shield estar upando na mão direita com arma empunhada na esquerda ou somente com shield com uma mão vazia matando bixo usando os punhos (fist fighting).

01:51 You see a demon shield +1 (Def:35).
It weighs 26.00 oz.
Experience: [160/200]

Legal seria o sistema ignorar os shield de vez,mas não sei se tem como ele fazer isso,já que ele tem atributo def e as weapons também.

Sim,o script só seta descrição no item após o primeiro ganho de exp com a arma.

 

Obrigado pela resposta!

Oi

Link para o post
Compartilhar em outros sites

@Coul, ele já faz isso, não sei pq não tá funcionando com você o.O.

Abre data/lib/constant.lua e procura algo parecido com isso:

WEAPON_NONE = 0
WEAPON_SWORD = 1
WEAPON_CLUB = 2
WEAPON_AXE = 3
WEAPON_SHIELD = 4
WEAPON_DIST = 5
WEAPON_WAND = 6
WEAPON_AMMO = 7
WEAPON_FIST = 8 

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, ele já faz isso, não sei pq não tá funcionando com você o.O.

Abre data/lib/constant.lua e procura algo parecido com isso:

WEAPON_NONE = 0
WEAPON_SWORD = 1
WEAPON_CLUB = 2
WEAPON_AXE = 3
WEAPON_SHIELD = 4
WEAPON_DIST = 5
WEAPON_WAND = 6
WEAPON_AMMO = 7
WEAPON_FIST = 8 

 

Pelo oque intendi no code esta correto se for sword ,club,axe,dist,wand,então executa a função,interessante que ele nao cita shield mas reconhece mesmo assim.

 

if f == 1(WEAPON_SWORD )or f == 2(WEAPON_CLUB )or f == 3(WEAPON_AXE )or f == 5(WEAPON_DIST )or f == 6(WEAPON_WAND )then

 

Esta igualzinho   :hum:

WEAPON_NONE = 0
WEAPON_SWORD = 1
WEAPON_CLUB = 2
WEAPON_AXE = 3
WEAPON_SHIELD = 4
WEAPON_DIST = 5
WEAPON_WAND = 6
WEAPON_AMMO = 7
WEAPON_FIST = 8

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

coloca uma arrow no lugar do shield e vê se upa.. se upar então o problema é na lib mesmo..

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

Quando avança os níveis as armas ganham mais ataque? swords, clubs, menos as rods e wands... Se não, tem como colocar? Aumentar uma quantidade de ataque...

Oi

Link para o post
Compartilhar em outros sites

eu não coloquei justamente porque o script é geral pra todas as armas e ficaria desbalanceado se só knights ganhassem mais ataque na arma.
 

coloca isso

if isInArray({1,2,3}, getItemWeaponType(teste.uid)) then
doItemSetAttribute(teste.uid, "attack", getItemAttack(teste.uid) + (level * 2))
end

acima de doItemSetAttribute(teste.uid, "exp", 0) no creaturescript

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

eu não coloquei justamente porque o script é geral pra todas as armas e ficaria desbalanceado se só knights ganhassem mais ataque na arma.

 

coloca isso

if isInArray({1,2,3}, getItemWeaponType(teste.uid)) then
doItemSetAttribute(teste.uid, "attack", getItemAttack(teste.uid) + (level * 2))
end

acima de doItemSetAttribute(teste.uid, "exp", 0) no creaturescript

 

Entendi. obrigado!

 

Só uma dúvida. Como eu posso aumentar o dano das conditions e da recuperação de mana?

Oi

Link para o post
Compartilhar em outros sites

na parte de configuração tem um spoiler que explica..

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

coloca uma arrow no lugar do shield e vê se upa.. se upar então o problema é na lib mesmo..

Arrow não esta upando exp,

 

Tem mais duas coisas estranhas,armas de dist como Bow e Wands estão sendo ignoradas,é como se não existisse o sistema,não recebo mensagem de exp,nada e nem erro no console tentei matar os monstro colado para ver se era a distancia,mas fico na mesma! :blink:

A Sword e a Club esta normal upando e atacando com as condition de acordo com o configurado.

Link para o post
Compartilhar em outros sites

@xWhiteWolf  fiz uma modificação que ficou bom,claro pessoal vai reclamar,eu mudei a parte:

if f == 1 or f == 2 or f == 3 or f == 5 or f == 6 then

Para:

if f == 1 or f == 2 or f == 3 then

Curiosamente,isso resolveu o problema do shield estar upando,agora ficou um script normal,mas somente para as armas de mão (sword,club,axe),parece que da forma que estava, ele esta bugando porque pulava do f == 3 para f == 5,pelo oque entendi foi isso,porque retire esse salto depois do f == 3  e o shield não buga mais.

 

 

 

_____Edit___

Fiz um teste agora usando todos setados no script(inclusive o shield):

if f == 1 or f == 2 or f == 3 or f == 4 or f == 5 or f == 6 then

A Dist foi reconhecida agora,coisa que antes não era,mas o shield voltou a ser reconhecido tbm,e wand e rod ainda continua sem ser reconhecido,bom vou deixar trabalhar apenas com a 1,2 e 3,vou pensar em outra coisa para os mages futuramente.

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

eu não coloquei justamente porque o script é geral pra todas as armas e ficaria desbalanceado se só knights ganhassem mais ataque na arma.

 

coloca isso

if isInArray({1,2,3}, getItemWeaponType(teste.uid)) then
doItemSetAttribute(teste.uid, "attack", getItemAttack(teste.uid) + (level * 2))
end

acima de doItemSetAttribute(teste.uid, "exp", 0) no creaturescript

 

 

To com uma duvida,quero deixa para upar 1 ponto de atk a cada level,como fica isso no script?Fiz como vc disse ficou assim:



function onKill(cid, target, lastHit)
 if not isMonster(target) then
        return true
    end
local upgrade = {
[1] = {required = 100},
[2] = {required = 200},
[3] = {required = 300},
[4] = {required = 400},
[5] = {required = 500}
}
 
local teste = getWeapon(cid)
 
if teste == false then
return true
end
 
 
if getCreatureMaster(target) ~= nil then
return true
end
 
local pos = getThingPos(cid)
local level = getItemLevel(teste.uid, #upgrade)
         
 
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))
 
local expatual = getItemAttribute(teste.uid, "exp") or 0
 
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))
if isInArray({1,2,3}, getItemWeaponType(teste.uid)) then
doItemSetAttribute(teste.uid, "attack", getItemAttack(teste.uid) + (level * 2))
end
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 

Só que quando upa level da esse erro no console:

[19:1:44.312] [Error - CreatureScript Interface]
[19:1:44.312] data/creaturescripts/scripts/itemexp.lua:onKill
[19:1:44.312] Description:
[19:1:44.312] data/creaturescripts/scripts/itemexp.lua:45: attempt to perform ar
ithmetic on a nil value
[19:1:44.312] stack traceback:
[19:1:44.312]   data/creaturescripts/scripts/itemexp.lua:45: in function <data/c
reaturescripts/scripts/itemexp.lua:1>
Editado por Coul (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

nesse script q vc postou a linha 45 tá vazia, logo não poderia dar erro nela..

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

nesse script q vc postou a linha 45 tá vazia, logo não poderia dar erro nela..

Bugou adicionou linhas vazias na hora de postar,não sei oque houve,posta de novo aqui(agora deu certo :boos: ):

function onKill(cid, target, lastHit)
 if not isMonster(target) then
        return true
    end
local upgrade = {
[1] = {required = 100},
[2] = {required = 200},
[3] = {required = 300},
[4] = {required = 400},
[5] = {required = 500}
}
 
local teste = getWeapon(cid)
 
if teste == false then
return true
end
 
 
if getCreatureMaster(target) ~= nil then
return true
end
 
local pos = getThingPos(cid)
local level = getItemLevel(teste.uid, #upgrade)
         
 
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))
 
local expatual = getItemAttribute(teste.uid, "exp") or 0
 
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))
if isInArray({1,2,3}, getItemWeaponType(teste.uid)) then
doItemSetAttribute(teste.uid, "attack", getItemAttack(teste.uid) + (level * 2))
end
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 
Editado por Coul (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

deixa assim e vê se dá certo:



 
function onKill(cid, target, lastHit)
 if not isMonster(target) then
        return true
    end
local upgrade = {
[1] = {required = 100},
[2] = {required = 200},
[3] = {required = 300},
[4] = {required = 400},
[5] = {required = 500}
}
 
local teste = getWeapon(cid)
 
if teste == false then
return true
end
 
 
if getCreatureMaster(target) ~= nil then
return true
end
 
local pos = getThingPos(cid)
local level = getItemLevel(teste.uid, #upgrade)
         
 
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))
 
local expatual = getItemAttribute(teste.uid, "exp") or 0
 
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))
if isInArray({1,2,3}, getItemWeaponType(teste.uid)) then
doItemSetAttribute(teste.uid, "attack", getItemAttribute(teste.uid, "attack") + ((level + 1) * 2))
end
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 

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

deixa assim e vê se dá certo:

 

function onKill(cid, target, lastHit)
 if not isMonster(target) then
        return true
    end
local upgrade = {
[1] = {required = 100},
[2] = {required = 200},
[3] = {required = 300},
[4] = {required = 400},
[5] = {required = 500}
}
 
local teste = getWeapon(cid)
 
if teste == false then
return true
end
 
 
if getCreatureMaster(target) ~= nil then
return true
end
 
local pos = getThingPos(cid)
local level = getItemLevel(teste.uid, #upgrade)
         
 
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))
 
local expatual = getItemAttribute(teste.uid, "exp") or 0
 
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))
if isInArray({1,2,3}, getItemWeaponType(teste.uid)) then
doItemSetAttribute(teste.uid, "attack", getItemAttribute(teste.uid, "attack") + (level * 2))
end
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 

Tive este erro ao matar e subir de level:

[18:14:52.750] [Error - CreatureScript Interface]
[18:14:52.750] data/creaturescripts/scripts/itemexp.lua:onKill
[18:14:52.750] Description:
[18:14:52.750] data/creaturescripts/scripts/itemexp.lua:45: attempt to perform a
rithmetic on a nil value
[18:14:52.750] stack traceback:
[18:14:52.750]  data/creaturescripts/scripts/itemexp.lua:45: in function <data/c
reaturescripts/scripts/itemexp.lua:1>

O level ta subindo,só o atk que fica na mesma.

Link para o post
Compartilhar em outros sites

editei lá, testa agr.. se não der certo, antes do if que dá ataque coloca pra printar isso daqui:

getItemAttribute(teste.uid, "attack")

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

 

editei lá, testa agr.. se não der certo, antes do if que dá ataque coloca pra printar isso daqui:

getItemAttribute(teste.uid, "attack")

Olha se eu printei certo...

function onKill(cid, target, lastHit)
 if not isMonster(target) then
        return true
    end
local upgrade = {
[1] = {required = 100},
[2] = {required = 200},
[3] = {required = 300},
[4] = {required = 400},
[5] = {required = 500}
}
 
local teste = getWeapon(cid)
 
if teste == false then
return true
end
 
 
if getCreatureMaster(target) ~= nil then
return true
end
 
local pos = getThingPos(cid)
local level = getItemLevel(teste.uid, #upgrade)
         
 
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))
 
local expatual = getItemAttribute(teste.uid, "exp") or 0
 
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))
print("getItemAttribute")
if isInArray({1,2,3}, getItemWeaponType(teste.uid)) then
doItemSetAttribute(teste.uid, "attack",getItemAttribute(teste.uid, "attack") + ((level + 1) * 2))
end

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 

Se estiver meu log foi esse:

getItemAttribute

[20:15:16.421] [Error - CreatureScript Interface]
[20:15:16.421] data/creaturescripts/scripts/itemexp.lua:onKill
[20:15:16.421] Description:
[20:15:16.421] data/creaturescripts/scripts/itemexp.lua:46: attempt to perform a
rithmetic on a nil value
[20:15:16.421] stack traceback:
[20:15:16.421]  data/creaturescripts/scripts/itemexp.lua:46: in function <data/c
reaturescripts/scripts/itemexp.lua:1>
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.




×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo