KA
erro

Sistema troca de Moedas

Por kaizy536, 28 de nov. de 2013 em Scripts

troca
moeda
sistema
uma
pra
outra
tipo
resolvido
script
9
2k
kaizy536K
28 de novembro de 2013 às 23:21

Gente, estou com um erro aqui no meu script, primeiro vou falar do que eu to tentando fazer, depois vou falar do erro..

 

Eu to tentando fazer com que possa transformar por exemplo 100 moedas verde, em 1 moeda prata, e vice versa, igual o sistema de troca de gold coins>platinum coins>crystal coins.. Enfim, pra fazer esse script eu basicamente peguei o script do server que é changegold.lua e tentei adicionar somente o que eu queria fazer, abaixo segue o script:

 

 

 

 

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, to = ITEM_MOEDA_VERDE, effect = TEXTCOLOR_TEAL
}
[iTEM_MOEDA_VERDE] = {
from = ITEM_CRYSTAL_COIN, to = ITEM_MOEDA_DE_OURO, effect = TEXTCOLOR_RED
}
[iTEM_MOEDA_DE_OURO] = {
from = ITEM_MOEDA_VERDE, effect = TEXTCOLOR_GREEN
}
}
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
Em vermelho é a parte que eu adicionei ao script.

 

Agora o erro:

 

 

 

[28/11/2013 22:18:06] [Error - LuaScriptInterface::loadFile] data/actions/scripts/other/changegold.lua:11: '}' expected (to close '{' at line 1) near '['

[28/11/2013 22:18:06] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/other/changegold.lua)
[28/11/2013 22:18:06] data/actions/scripts/other/changegold.lua:11: '}' expected (to close '{' at line 1) near '['
[28/11/2013 22:18:06] [Error - LuaScriptInterface::loadFile] data/actions/scripts/other/changegold.lua:11: '}' expected (to close '{' at line 1) near '['
[28/11/2013 22:18:06] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/other/changegold.lua)
[28/11/2013 22:18:06] data/actions/scripts/other/changegold.lua:11: '}' expected (to close '{' at line 1) near '['
[28/11/2013 22:18:06] [Error - LuaScriptInterface::loadFile] data/actions/scripts/other/changegold.lua:11: '}' expected (to close '{' at line 1) near '['
[28/11/2013 22:18:06] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/other/changegold.lua)
[28/11/2013 22:18:07] data/actions/scripts/other/changegold.lua:11: '}' expected (to close '{' at line 1) near '['

 

 

 

Por favor, se alguem puder me ajudar nisso faz ai :). Obrigado

Editado Novembro 28 por kaizy536

KilluaK
28 de novembro de 2013 às 23:32

Vc esqueceu de 2 virgulas e, alem disso, acho que o script nao vai reconhecer "ITEM_MOEDA_VERDE" entao eu transformei isso em uma variavel


local ITEM_MOEDA_VERDE = 123 -- Bota o id da moeda verde
local ITEM_MOEDA_DE_OURO = 123 -- Bota o id da moeda de ouro

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, to = ITEM_MOEDA_VERDE, effect = TEXTCOLOR_TEAL
},
[ITEM_MOEDA_VERDE] = {
from = ITEM_CRYSTAL_COIN, to = ITEM_MOEDA_DE_OURO, effect = TEXTCOLOR_RED
},
[ITEM_MOEDA_DE_OURO] = {
from = ITEM_MOEDA_VERDE, effect = TEXTCOLOR_GREEN
}
}
 
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
zipter98Z
28 de novembro de 2013 às 23:33

ah, não vi que o amoeba postou antes e.e

Editado Novembro 28 por zipter98

kaizy536K
28 de novembro de 2013 às 23:46

vlw amoeba xD, vou testar aqui.. zipter98 kkkk xd


mano, so tem um problema aqui, eu consigo transforma as crysta coin em moeda verde, mais nao consigo voltar a transformaçao da moeda verde em crystal coin, e outro problema tambem é o mesmo com a moeda de ouro, mesmo com 100 moedas verde eu nao consigo transforma-la em 1 moeda de ouro, e nem voltar a transformaçao x.x

KilluaK
29 de novembro de 2013 às 11:54

Vc esqueceu de registrar os ids novos no actions.xml

kaizy536K
29 de novembro de 2013 às 14:07

hm, como que eu faço isso? preciso criar um novo .lua? ou so por direto no .xml? e oque escrever la ?


@vo tentar aqui arrumar

KilluaK
29 de novembro de 2013 às 14:10

coloca isso no actions.xml

 

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

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

 

no lugar do ID vc coloca o id da moeda verde e no outro, o da moeda de ouro

kaizy536K
29 de novembro de 2013 às 14:38

xd, funcionando 100% :)

OmegaO
29 de novembro de 2013 às 18:03

Tópico movido para a seção de dúvidas e pedidos resolvidos.