Ir para conteúdo
  • Cadastre-se

(Resolvido)"You cannot use this object.", mesmo com o script no actions


Ir para solução Resolvido por guioljf,

Posts Recomendados

Olá...

Gostaria da ajuda de vocês...

 

Baixei um OTserv 0.6.4 versão 8.6 bem limpo... Estou tentando adicionar o sistema de change gold nele mas, por algum motivo, não funciona.

 

As alterações foram:

 

actions.xml

<!-- Change gold -->
  <action itemid="2148" event="script" value="changegold.lua"/>
  <action itemid="2152" event="script" value="changegold.lua"/>
  <action itemid="2160" event="script" value="changegold.lua"/> 

 

changegold.lua

function onUse(cid, item, fromPosition, itemEx, toPosition)
  if item.itemid == 2148 and item.type == 100 then
    doChangeTypeItem(item.uid, item.type - item.type)
    doPlayerAddItem(cid, 2152, 1)
    doSendAnimatedText(fromPosition, "$$$", TEXTCOLOR_LIGHTBLUE)
  elseif item.itemid == 2152 and item.type == 100 then
    doChangeTypeItem(item.uid, item.type - item.type)
    doPlayerAddItem(cid, 2160, 1)
    doSendAnimatedText(fromPosition, "$$$", TEXTCOLOR_TEAL)
  elseif item.itemid == 2152 and item.type < 100 then
    doChangeTypeItem(item.uid, item.type - 1)
    doPlayerAddItem(cid, 2148, 100)
    doSendAnimatedText(fromPosition, "$$$", TEXTCOLOR_YELLOW)
  elseif item.itemid == 2160 then
    doChangeTypeItem(item.uid, item.type - 1)
    doPlayerAddItem(cid, 2152, 100)
    doSendAnimatedText(fromPosition, "$$$", TEXTCOLOR_LIGHTBLUE)
  else
    return false
  end
return true 
end

Já conferi o items.xml e tá tudo ok lá... já até reiniciei o server imaginando que o reload pudesse estar com problema, mas não funcionou. Estou esquecendo algo?

Valeu!!

 
 
Link para o post
Compartilhar em outros sites
  • Moderador

tenta assim

 

em actions.xml

 

coloca 

<action itemid="2148;2152;2160" event="script" value="changegold.lua"/>
 

changegold.lua

local coins = {
	[ITEM_GOLD_COIN] = {
		to = ITEM_PLATINUM_COIN, effect = TEXTCOLOR_YELLOW
	},
	[ITEM_PLATINUM_COIN] = {
		from = ITEM_GOLD_COIN, to = ITEM_CRYSTAL_COIN, effect = TEXTCOLOR_LIGHTBLUE
	},
	[ITEM_CRYSTAL_COIN] = {
		from = ITEM_PLATINUM_COIN, effect = TEXTCOLOR_TEAL
	}
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(getPlayerFlagValue(cid, PLAYERFLAG_CANNOTPICKUPITEM)) then
		return false
	end

	local coin = coins[item.itemid]
	if(not coin) then
		return false
	end

	if(coin.to ~= nil and item.type == ITEMCOUNT_MAX) then
		doChangeTypeItem(item.uid, item.type - item.type)
		doPlayerAddItem(cid, coin.to, 1)
		doSendAnimatedText(fromPosition, "$$$", coins[coin.to].effect)
	elseif(coin.from ~= nil) then
		doChangeTypeItem(item.uid, item.type - 1)
		doPlayerAddItem(cid, coin.from, ITEMCOUNT_MAX)
		doSendAnimatedText(fromPosition, "$$$", coins[coin.from].effect)
	end

	return true
end

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

I like

Link para o post
Compartilhar em outros sites

Tem algum código que é para ser adicionado nos movements?

Não, nada no movements...

loreal, o script que você mandou é exatamente igual ao meu, com uma diferença que usa constantes como ITEM_GOLD_COIN que nem estão declaradas nessa versão que eu uso...

 

O problema aqui é algo mais complicado... O otserv ignora o action, como se não houve nenhum script de action pra esse item...

 

Link para o post
Compartilhar em outros sites

Tente isto

 

local coins = {


[2148] = {to = 2152},
[2152] = {to = 2160, from = 2148},
[2160] = {to = 8777, from = 2152},
[8777] = {from = 2160},
}

function onUse(cid, item, fromPosition, itemEx, toPosition)

if(getPlayerFlagValue(cid, PLAYERFLAG_CANNOTPICKUPITEM)) then
return false
end

local coin = coins[item.itemid]
if(not coin) then
return false
end

if(coin.to ~= nil and item.type == ITEMCOUNT_MAX) then
doChangeTypeItem(item.uid, item.type - item.type)
doPlayerAddItem(cid, coin.to, 1)
elseif(coin.from ~= nil) then
doChangeTypeItem(item.uid, item.type - 1)
doPlayerAddItem(cid, coin.from, ITEMCOUNT_MAX)
end

return true
end

 

<action itemid="2148;2152;2160;8777" event="script" value="other/changegold.lua"/>

 

 

Não se esqueça de colocar no diretório corretamente.

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

Shyrriro, já vi um erro no seu código daqui... na última linha do coins, tem uma vírgula... não pode acabar o array com virgula.

 

Agradeço as respostas, mas o erro não tá no meu script, não adianta eu substituir o meu por outro que faz a mesma coisa...

O OT simplesmente não tá enxergando que há um action pra aquele item, não é erro de código.


Consegui resolver sozinho... vou compartilhar com vocês.

 

O problema tava no action.xml

 

<action itemid="2148" event="script" value="changegold.lua"/>

 

Acho que pela versão do OT ser antiga e mais clean, esse linha aí de cima não significa nada pra ele... alterei ela e funcionou assim:

<action itemid="2148" script="changegold.lua"/>

 

Tá funcionando perfeito agora.
Vlw galera

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 ViitinG
      Galera gostaria de um script que quando desse use em 100 Gold Coin virase 1 Platinum Coin e quando desse use em 100 Platinum Coin virase um Crystal Coin.
      Preciso disso o mais rapido possivel.
      Quem puder ajudar agradeço demaiss !!!!!!!
    • Por brunomagnos
      Oi eu preciso de ajuda, eu estava querendo colocar o sistema de pet.. ecoloquei um script  e talz.. funciona com o god.. mas com player n ajuda ai
       
       
       
      function onUse(cid, item, frompos, item2, topos) local storage = 11549 -- n mexa local exhausted = 5 -- tempo em segundos   if (getPlayerStorageValue(cid, storage) >= os.time()) then return doPlayerSendCancel(cid, "Você tem que esperar " .. getPlayerStorageValue(cid, storage) - os.time() .. " segundos para usar novamente.") end   local summons = getCreatureSummons(cid)   local pet = { ["Rotworm"] = {1,10}, ["Minotaur"] = {11,15}, ["Dwarf Soldier"] = {16,19}, ["Minotaur Guard"] = {20,25}, ["Dragon Hatchling"] = {26,32}, ["Dragon"] = {33,45}, ["Giant Spider"] = {46,55}, ["Dragon Lord"] = {56,120}, ["Grim Reaper"] = {121,160}, ["Ghastly Dragon"] = {161,200}, ["Undead Dragon"] = {201,1000} }   for k,v in pairs(pet) do -- 1   if getPlayerLevel(cid) >= v[1] and getPlayerLevel(cid) < v[2] then -- 2 if (table.maxn(summons) < 1)then -- 3 x = doSummonCreature(k, getCreaturePosition(cid)) doConvinceCreature(cid, x) doCreatureSay(cid, k ..", go!", TALKTYPE_ORANGE_1) doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 2) return true end end end if isCreature(cid) then -- 4 doRemoveCreature(getCreatureSummons(cid)[1]) doCreatureSay(cid,"Hey Brother Come back!!!", TALKTYPE_ORANGE_1) setPlayerStorageValue(cid,storage,os.time()+exhausted) return true end end           Namoral eu consegui arrumar sozinho de tanta espera da ajuda de vocês... -.-'
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo