Ir para conteúdo
  • 0
Raulcdj

Scripting Scripts RemovedAddons

Pergunta

Raulcdj    2
Raulcdj

Antes de fazer a sua pergunta, tenha certeza de ter lido o guia abaixo:

https://forums.otserv.com.br/index.php?/forums/topic/165121-como-fazer-uma-pergunta-ou-o-grande-guia-do-usuário-com-dúvidas/

Descreva em algumas palavras a base utilizada. (Nome do servidor / Nome do cliente / Nome do Website / etc).

Ex: executavel PO Dash World  1.0

Base: 

Base  PokexGeneration Pda.

Qual a sua pergunta?

queria ajuda em um scripts que eu estou tentado fazer de remover addons do pokemon mais não estou conseguindo preciso de ajuda comecei uns dias a estudar scripts então não entendo muito sobre o assunto esta dando um erro se alguém puder ajuda agradeço.

Você tem o código disponível? Se tiver poste-o na caixa de código que está dentro do spoiler abaixo:

Spoiler

function onSay(cid, words, param, addons, depotid)
     
 if not tonumber(param) then
    doPlayerSendTextMessage (cid, 15, "voce removeu o addon do seu poke  Esta no depoti")
    getPlayerSlotItem(cid, slot, 2395)
    doPlayerRemoveOutfit(cid,looktype, addons, slot)
    getPlayerDepotItems(cid, depotid)
    doPlayerSendTextMessage (cid, 20, "o pokemon tem que esta no slot para addons ser removido")
    
    isItemMovable(itemid,2395)
end return

end

<talkaction words="/addonsRemove" access="1" event="script" value="!addon.lua"/>

esta surgindo esse erro 

[21/01/2019 12:43:21] [Error - TalkAction Interface] 
[21/01/2019 12:43:21] data/talkactions/scripts/!addon.lua:onSay
[21/01/2019 12:43:21] Description: 
[21/01/2019 12:43:21] (luaDoPlayerRemoveOutfit) Player not found

Você tem alguma imagem que possa auxiliar no problema? Se sim, anexe-a dentro do spoiler abaixo:

Spoiler

Screenshot_1.png

Screenshot_2.png

Screenshot_3.png

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

8 respostass a esta questão

Recommended Posts

  • 1
TheRatazana    8
TheRatazana

Olá Raulcdj, tranquilo?

Bom, peço desculpas cara, na hora de criar o código eu não percebi. Só agora enquanto escrevia que eu vi que não passei o item alvo para que possa pegar o atributo.

No script de talkactions coloque na linha 14:

doPlayerAddItem(cid, getItemAttribute(pokeball, "addonItem"))

Se olhar bem vai perceber que eu não passei o pokeball para a função getItemAttribute, como nos outros casos das linhas de baixo. Uma vacilada mesmo 

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 1
Lightwood    8
Lightwood

O script em si esta com diversas falhas:
- Você esta tentando tirar a outfit de um pokémon, não de um player! Geralmente os sistemas de Addon são feitos com:

doSetCreatureOutfit

e depois usam a função:

doRemoveCondition(cid, CONDITION_OUTFIT)

quando querem retirar essa outfit!


- Da onde você esta puxando essas informações?

* slot, looktype, addons

O servidor em si não consegue entender da onde vem tal informação, então ele vai te retornar um erro.
Poste o sistema de addons que você esta utilizando, que eu te mostro como fazer para criar o !addons remove corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 1
TheRatazana    8
TheRatazana

Olá, bom dia Raulcdj.  Bom eu não sei se compreendi da forma que você talvez tenha pensado, mas eu tentei fazer algo aqui pra te ajudar. Eu dei uma olhada no sistema que você postou acima e tentei entender o que você queria com o primeiro script. Pode não ser o que quer, mas talvez te ajude

 

function onSay(cid, words, param, channel)
	if #getCreatureSummons(cid) > 0 then
		doPlayerSendCancel(cid, "Please back your pokemon.")
		return false
	end

	local pokeball = getPlayerSlotItem(cid, 8).uid

	if getItemAttribute(pokeball,"addon") <= 0 then
		doPlayerSendCancel(cid, "Nenhum addon para remover.")
		return false
	end

	doPlayerAddItem(cid, getItemAttribute("addonItem"))

	doSetItemAttribute(pokeball, "addon", 0)
	doSetItemAttribute(pokeball, "addonfly", 0)
	doSetItemAttribute(pokeball, "addonride", 0)
	doSetItemAttribute(pokeball, "addonsurf", 0)
	doSetItemAttribute(pokeball, "addonItem", 0)

	doPlayerSendTextMessage(cid, 28, "Você removeu o addon do seu pokemon.")

	return true
end

 

Pra que funcione legal, você precisa adicionar isso aqui na linha 30 do seu sistema

doSetItemAttribute(pb, "addonItem", item.itemid)

 

Uma preocupação quando ao sistema foi que ele sempre coloca o addon aparentemente. Se um addon já estiver no pokemon o attributo addon será > 0, e no caso isso não impediria dele colocar outro por cima, o que poderia atrapalhar isso ai. Talvez você queira checar se attributo addon não é igual a 0 ou menos

if getItemAttribute(pb,"addon") <= 0 then
	doRemoveItem(item.uid, 1)
	doPlayerSendTextMessage(cid, 27 , "Congratulations! Now your pokemon will use the addon.")
	doSetItemAttribute(pb,"addon",addon)
	doSetItemAttribute(pb,"addonfly",fly)
	doSetItemAttribute(pb,"addonride",ride)
	doSetItemAttribute(pb,"addonsurf",surf)
	doSetItemAttribute(pb, "addonItem", item.itemid)
	return true
else
	doPlayerSendCancel(cid, "Your pokemon already has an addon.")
	return true
end

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 1
TheRatazana    8
TheRatazana

Você adicionou a modificação na linha 30 do seu sistema?

doSetItemAttribute(pb, "addonItem", item.itemid)

 Sem ela o item não vai ter esse atributo, e ai não vai conseguir adicionar ao jogador na 

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0
Raulcdj    2
Raulcdj
7 horas atrás, Rookie disse:

O script em si esta com diversas falhas:
- Você esta tentando tirar a outfit de um pokémon, não de um player! Geralmente os sistemas de Addon são feitos com:


doSetCreatureOutfit

e depois usam a função:


doRemoveCondition(cid, CONDITION_OUTFIT)

quando querem retirar essa outfit!


- Da onde você esta puxando essas informações?

* slot, looktype, addons

O servidor em si não consegue entender da onde vem tal informação, então ele vai te retornar um erro.
Poste o sistema de addons que você esta utilizando, que eu te mostro como fazer para criar o !addons remove corretamente.

Spoiler

function onUse(cid, item, fromPosition, itemEx, toPosition)
                local addons = {
                [ID DO ITEM] = {pokemon= "NOME DO POKEMON" , looktype = LOOKTYPE NORMAL, fly = FLY, SE NÃO TIVER PONHA 0, ride = RIDE, SE NÃO TIVER PONHA 0, surf = SE NÃO TIVER SURF PONHA 0},
               }
 
                if #getCreatureSummons(cid) > 0 then
                                doPlayerSendCancel(cid, "Please back your pokemon.")
                                return false
                end     
                local addon = addons[item.itemid].looktype
                local fly = addons[item.itemid].fly
                local ride = addons[item.itemid].ride
                local surf = addons[item.itemid].surf
 
                local pb = getPlayerSlotItem(cid, 8).uid
                local pk = addons[item.itemid].pokemon
 
                if getItemAttribute(pb,"poke") ~= pk then
                                doPlayerSendCancel(cid, "Sorry, you can't use this addon on this poke.")
                return false
                end
 
                if getItemAttribute(pb,"addon") >= 0 then
                                doRemoveItem(item.uid, 1)
                                doPlayerSendTextMessage(cid, 27, "Congratulations! Now your pokemon will use the addon.")
                                doSetItemAttribute(pb,"addon",addon)
                                doSetItemAttribute(pb,"addonfly",fly)
                                doSetItemAttribute(pb,"addonride",ride)
                                doSetItemAttribute(pb,"addonsurf",surf)
                                return true
                end     
 
return true
end

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0
Raulcdj    2
Raulcdj
3 horas atrás, TheRatazana disse:

Olá, bom dia Raulcdj.  Bom eu não sei se compreendi da forma que você talvez tenha pensado, mas eu tentei fazer algo aqui pra te ajudar. Eu dei uma olhada no sistema que você postou acima e tentei entender o que você queria com o primeiro script. Pode não ser o que quer, mas talvez te ajude

 


function onSay(cid, words, param, channel)
	if #getCreatureSummons(cid) > 0 then
		doPlayerSendCancel(cid, "Please back your pokemon.")
		return false
	end

	local pokeball = getPlayerSlotItem(cid, 8).uid

	if getItemAttribute(pokeball,"addon") <= 0 then
		doPlayerSendCancel(cid, "Nenhum addon para remover.")
		return false
	end

	doPlayerAddItem(cid, getItemAttribute("addonItem"))

	doSetItemAttribute(pokeball, "addon", 0)
	doSetItemAttribute(pokeball, "addonfly", 0)
	doSetItemAttribute(pokeball, "addonride", 0)
	doSetItemAttribute(pokeball, "addonsurf", 0)
	doSetItemAttribute(pokeball, "addonItem", 0)

	doPlayerSendTextMessage(cid, 28, "Você removeu o addon do seu pokemon.")

	return true
end

 

Pra que funcione legal, você precisa adicionar isso aqui na linha 30 do seu sistema


doSetItemAttribute(pb, "addonItem", item.itemid)

 

Uma preocupação quando ao sistema foi que ele sempre coloca o addon aparentemente. Se um addon já estiver no pokemon o attributo addon será > 0, e no caso isso não impediria dele colocar outro por cima, o que poderia atrapalhar isso ai. Talvez você queira checar se attributo addon não é igual a 0 ou menos


if getItemAttribute(pb,"addon") <= 0 then
	doRemoveItem(item.uid, 1)
	doPlayerSendTextMessage(cid, 27 , "Congratulations! Now your pokemon will use the addon.")
	doSetItemAttribute(pb,"addon",addon)
	doSetItemAttribute(pb,"addonfly",fly)
	doSetItemAttribute(pb,"addonride",ride)
	doSetItemAttribute(pb,"addonsurf",surf)
	doSetItemAttribute(pb, "addonItem", item.itemid)
	return true
else
	doPlayerSendCancel(cid, "Your pokemon already has an addon.")
	return true
end

 

cara fuciona certinho porem o addon nao retorna para beg ela some e nao vai para o deposito poderia me ajuda nisso quando removo o addon da esse erro mais nao achei aonde esta pois nao entendo muito 
[31/01/2019 14:06:53] [Error - TalkAction Interface] 
[31/01/2019 14:06:53] data/talkactions/scripts/!addons.lua:onSay
[31/01/2019 14:06:53] Description: 
[31/01/2019 14:06:53] (luaDoPlayerAddItem) Item not found

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0
Raulcdj    2
Raulcdj
1 hora atrás, TheRatazana disse:

Você adicionou a modificação na linha 30 do seu sistema?


doSetItemAttribute(pb, "addonItem", item.itemid)

 Sem ela o item não vai ter esse atributo, e ai não vai conseguir adicionar ao jogador na 


[31/01/2019 20:57:30] [Error - TalkAction Interface] 
[31/01/2019 20:57:30] data/talkactions/scripts/!addons.lua:onSay
[31/01/2019 20:57:30] Description: 
[31/01/2019 20:57:30] (luaDoPlayerAddItem) Item not found

 

erro na hora de remove o addons

function onUse(cid, item, fromPosition, itemEx, toPosition)
                local addons = { 
                [12982] = {pokemon= "Noctowl" , looktype = 1502, fly = 1503, 0, ride = 0, surf = 0},
                }
                
                if #getCreatureSummons(cid) > 0 then
                                doPlayerSendCancel(cid, "Please back your pokemon.")
                                return false
                end     
                local addon = addons[item.itemid].looktype
                local fly = addons[item.itemid].fly
                local ride = addons[item.itemid].ride
                local surf = addons[item.itemid].surf
 
                local pb = getPlayerSlotItem(cid, 8).uid
                local pk = addons[item.itemid].pokemon
 
                if getItemAttribute(pb,"poke") ~= pk then
                                doPlayerSendCancel(cid, "Sorry, you can't use this addon on this poke.")
                return false
                end
 
                if getItemAttribute(pb,"addon") >= 0 then
                                doRemoveItem(item.uid, 1)
                                doPlayerSendTextMessage(cid, 27, "Congratulations! Now your pokemon will use the addon.")
                                doSetItemAttribute(pb,"addon",addon)
                                doSetItemAttribute(pb,"addonfly",fly)
                                doSetItemAttribute(pb,"addonride",ride)
                                doSetItemAttribute(pb,"addonsurf",surf)
                                doSetItemAttribute(pb, "addonItem", item.itemid)
                                return true
                end     
 
return true
end

adicionei certinho

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0
Raulcdj    2
Raulcdj
Em 03/02/2019 em 11:52, TheRatazana disse:

Olá Raulcdj, tranquilo?

Bom, peço desculpas cara, na hora de criar o código eu não percebi. Só agora enquanto escrevia que eu vi que não passei o item alvo para que possa pegar o atributo.

No script de talkactions coloque na linha 14:


doPlayerAddItem(cid, getItemAttribute(pokeball, "addonItem"))

Se olhar bem vai perceber que eu não passei o pokeball para a função getItemAttribute, como nos outros casos das linhas de baixo. Uma vacilada mesmo 

obrigado mano ajudo e muito

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×