SeMa™ Posted November 10, 2013 Report Share Posted November 10, 2013 Hola a todos, tengo un fallo, y no consigo arreglarlo en una quest he preguntado a varios , he probado muchas formas, pero no lo he conseguido aun. Estoy aqui para ver si alguien es capaz de ayudarme en esto. items = { --ID_categoria, ID_item, vnum, cantidad, precio, itemCostType, attr1, val1, attr2, val2, attr3, val3, attr4, val4, attr5, val5, attr6, val6, attr7, val7, sock1, sock2, sock3, Descripcion {1, 1, 149, 1, 100, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Espada Batalla +9"}, {1, 2, 19, 1, 200, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Espada +9"} } local categoria = input(cmdchat("GetISBuyID")) --- esto devuelve 1 valor a la quest local id = input(cmdchat("GetISBuyID2")) --- esto devuelve 1 valor a la quest chat("categoria: "..categoria.." id: "..id) if categoria == items[1] and id == items[2] then chat("categoria:"..items[1].." y id "..items[2]) mysql_query("UPDATE account.account SET coins = coins-"..items[5].." WHERE id = "..pc.get_account_id().." LIMIT 1;") pc.give_item2(items[3], items[4]) end Espero que alguien pueda solucionarme este problemita. Gracias y un saludo. Link to comment Share on other sites More sharing options...
Edward Posted November 10, 2013 Report Share Posted November 10, 2013 Has probado así? items = { --ID_categoria, ID_item, vnum, cantidad, precio, itemCostType, attr1, val1, attr2, val2, attr3, val3, attr4, val4, attr5, val5, attr6, val6, attr7, val7, sock1, sock2, sock3, Descripcion {1, 1, 149, 1, 100, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Espada Batalla +9"}, {1, 2, 19, 1, 200, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Espada +9"} } local categoria = input(cmdchat("GetISBuyID")) --- esto devuelve 1 valor a la quest local id = input(cmdchat("GetISBuyID2")) --- esto devuelve 1 valor a la quest chat("categoria: "..categoria.." id: "..id.."") if categoria == items[1] and id == items[2] then chat("categoria:"..items[1].." y id "..items[2].."") mysql_query("UPDATE account.account SET coins = coins-"..items[5].." WHERE id = "..pc.get_account_id().." LIMIT 1;") pc.give_item2(items[3], items[4]) end Link to comment Share on other sites More sharing options...
SeMa™ Posted November 10, 2013 Author Report Share Posted November 10, 2013 al final no hace falta poner ..", con dejarlo despues del [] es suficiente, pero ya probé así y el problema está en el if No me hace la comparación. Link to comment Share on other sites More sharing options...
Yori Posted November 10, 2013 Report Share Posted November 10, 2013 cuando haces la comparacion usas el array item como si fuera normal, y es un array bidimensional. es decir items[1][1] con dos coordenadas Link to comment Share on other sites More sharing options...
SeMa™ Posted November 10, 2013 Author Report Share Posted November 10, 2013 si, es cierto, pero tambien es verdad, que de ese array solo cogería la 1º linea y no las demás por lo que de esa forma tampoco funcionaría xD Link to comment Share on other sites More sharing options...
Dextrok Posted November 10, 2013 Report Share Posted November 10, 2013 Segun lo que has puesto y lo que entiendo este sería tu resultado, pero ni siquiera explicas que es categoria, y que debería de hacer exactamente el programa. items = {--ID_categoria, ID_item, vnum, cantidad, precio, itemCostType, attr1, val1, attr2, val2, attr3, val3, attr4, val4, attr5, val5, attr6, val6, attr7, val7, sock1, sock2, sock3, Descripcion{1, 1, 149, 1, 100, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Espada Batalla +9"},{1, 2, 19, 1, 200, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Espada +9"}}local categoria = input(cmdchat("GetISBuyID")) --- esto devuelve 1 valor a la questlocal id = input(cmdchat("GetISBuyID2")) --- esto devuelve 1 valor a la questchat("categoria: "..categoria.." id: "..id)if categoria == items[1][1] and id == items[2][1] then chat("categoria:"..items[1].." y id "..items[2]) mysql_query("UPDATE account.account SET coins = coins-"..items[5].." WHERE id = "..pc.get_account_id().." LIMIT 1;") pc.give_item2(items[3], items[4])end Link to comment Share on other sites More sharing options...
SeMa™ Posted November 10, 2013 Author Report Share Posted November 10, 2013 Pues dejo explicado aqui: Yo le doy a 1 boton en py, de 1 itemshop, para comprar 1 item, y desde python envio 2 datos a quest, local categoria = input(cmdchat("GetISBuyID")) --- esto devuelve 1 valor a la questlocal id = input(cmdchat("GetISBuyID2")) --- esto devuelve 1 valor a la quest esos 2 datos los envio, son 2 numeros, 1 es el numero de la categoria de la itemshop y otro es el numero del id del item ( no el vnum ). Necesito que compare esos values recibidos con el array, y haga un pc.give_item2 con esa misma linea del array con su vnum y su cantidad. Link to comment Share on other sites More sharing options...
Yori Posted November 10, 2013 Report Share Posted November 10, 2013 items = { -ID_categoria, ID_item, vnum, cantidad, precio, itemCostType, attr1, val1, attr2, val2, attr3, val3, attr4, val4, attr5, val5, attr6, val6, attr7, val7, sock1, sock2, sock3, Descripcion {1, 1, 149, 1, 100, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Espada Batalla +9"}, {1, 2, 19, 1, 200, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Espada +9"} } local categoria = input(cmdchat("GetISBuyID")) --- esto devuelve 1 valor a la quest local id = input(cmdchat("GetISBuyID2")) --- esto devuelve 1 valor a la quest chat("categoria: "..categoria.." id: "..id) for a=1,table.getn(items),1 do if categoria == items[a][1] and id == items[a][2] then chat("categoria:"..items[a][1].." y id "..items[a][2]) mysql_query("UPDATE account.account SET coins = coins-"..items[a][5].." WHERE id = "..pc.get_account_id().." LIMIT 1;") pc.give_item2(items[a][3], items[a][4]) end -- if end --for necesitas un bucle for para buscar las comparaciones, y como dige antes eso es un array bidimensional Link to comment Share on other sites More sharing options...
pepineitor Posted November 10, 2013 Report Share Posted November 10, 2013 items = { --ID_categoria, ID_item, vnum, cantidad, precio, itemCostType, attr1, val1, attr2, val2, attr3, val3, attr4, val4, attr5, val5, attr6, val6, attr7, val7, sock1, sock2, sock3, Descripcion {1, 1, 149, 1, 100, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Espada Batalla +9"}, {1, 2, 19, 1, 200, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Espada +9"} } local categoria = input(cmdchat("GetISBuyID")) --- esto devuelve 1 valor a la quest local id = input(cmdchat("GetISBuyID2")) --- esto devuelve 1 valor a la quest chat("categoria: "..categoria.." id: "..id) local i = 1 while (i <= table.getn(items)) do i = i + 1 if categoria == items[i][1] and id == items[i][2] then chat("categoria:"..items[1].." y id "..items[2]) mysql_query("UPDATE account.account SET coins = coins-"..items[5].." WHERE id = "..pc.get_account_id().." LIMIT 1;") pc.give_item2(items[3], items[4]) break end end Link to comment Share on other sites More sharing options...
SeMa™ Posted November 10, 2013 Author Report Share Posted November 10, 2013 *Yori: Despues del for, se queda parado y no pasa al if * Pepinatorrrr xD local i = 1 while (i <= table.getn(items)) do i = i + 1 if categoria == items[i][1] and id == items[i][2] then chat("categoria:"..items[1].." y id "..items[2]) mysql_query("UPDATE account.account SET coins = coins-"..items[5].." WHERE id = "..pc.get_account_id().." LIMIT 1;") pc.give_item2(items[3], items[4]) break end end No llega al chat chat("categoria:"..items[1].." y id "..items[2]) Link to comment Share on other sites More sharing options...
pepineitor Posted November 10, 2013 Report Share Posted November 10, 2013 Como va a llegar al chat melón... chat("categoria:"..items[1].." y id "..items[2]) será chat("categoria:"..items[i][1].." y id "..items[i][2]) Tienes que poner en todos los items[1], items[2]...--> items[1]... Yo la e probado así y me funciona: quest tatata beginstate start beginwhen 70010.use beginitems = { {1, 1, 149,1, "Espada Batalla +9"}, {1, 2, 19,1, "Espada +9"}} local categoria = 1 local id = 2 local i = 0 while (i != table.getn(items)) do i = i + 1 if categoria == items[i][1] and id == items[i][2] then chat("categoria:"..items[i][1].." y id "..items[i][2]) end end endendend Link to comment Share on other sites More sharing options...
SeMa™ Posted November 10, 2013 Author Report Share Posted November 10, 2013 Como va a llegar al chat melón... chat("categoria:"..items[1].." y id "..items[2]) será chat("categoria:"..items[i][1].." y id "..items[i][2]) Tienes que poner en todos los items[1], items[2]...--> items[1]... Yo la e probado así y me funciona: quest tatata beginstate start beginwhen 70010.use beginitems = { {1, 1, 149,1, "Espada Batalla +9"}, {1, 2, 19,1, "Espada +9"}} local categoria = 1 local id = 2 local i = 0 while (i != table.getn(items)) do i = i + 1 if categoria == items[i][1] and id == items[i][2] then chat("categoria:"..items[i][1].." y id "..items[i][2]) end end endendend local i = 1 while (i <= table.getn(items)) doi = i + 1if categoria == items[i][1] and id == items[i][2] thenchat("categoria:"..items[i][1].." y id "..items[i][2])mysql_query("UPDATE account.account SET coins = coins-"..items[i][5].." WHERE id = "..pc.get_account_id().." LIMIT 1;")pc.give_item2(items[i][3], items[i][4])breakendend tampoco me va así xd Link to comment Share on other sites More sharing options...
Yori Posted November 10, 2013 Report Share Posted November 10, 2013 mete un chat("dentro del if"), para ver si se cumple la condicion en algun momento edito: por lo que veo, no hay conincidencias, ya que sale el mensaje del bucle repetido las 5 veces, asique lo que parece es que no recoje los valores del cliente, compruebalo con chat("Categoria: "..categoria.." id: "..id) Link to comment Share on other sites More sharing options...
pepineitor Posted November 10, 2013 Report Share Posted November 10, 2013 Pues será tus variables que no funcionan bien, sino mira Link to comment Share on other sites More sharing options...
PACI Posted November 10, 2013 Report Share Posted November 10, 2013 El problema es que los valores del cmdchat no funcionan, pero al probarlo con un chat, si que se salen. Solo hacer la comparación con un elemento del array usando las variables de los cmdchat es lo que no funciona. Link to comment Share on other sites More sharing options...
SeMa™ Posted November 10, 2013 Author Report Share Posted November 10, 2013 voy a probar a pasar los cmdchat's a qf y te cuento. Link to comment Share on other sites More sharing options...
SeMa™ Posted November 10, 2013 Author Report Share Posted November 10, 2013 Pueden cerrar, quedó solucionado, Gracias a todos por vuestra ayuda Link to comment Share on other sites More sharing options...
Recommended Posts