Da algum erro no distro?
Movements / MYSQL
Por Helflin, 19 de out. de 2013 em Scripts
info
Grupo: Marquês
Registrado: 03/02/13
Posts: 1.2k
Reputação: +254
Gênero: Masculino
Char no Tibia: Partiu Baladinha

Sim, eu queria mudar o valor do "atributo" >> 'is_training' de 0 para 1... da tabela 'players'.
Sendo que esse atributo é para cada player, ou seja, teria de mudar somente na linha daquele player, e eu não sei como definir esta linha....
info
Grupo: Marquês
Registrado: 03/02/13
Posts: 1.2k
Reputação: +254
Gênero: Masculino
Char no Tibia: Partiu Baladinha

db.query("UPDATE `players` SET `is_training` = 1;")
nunca mexi com querys peguei uma de um script aqui e tentei editar... veja se funciona...
Editado Outubro 19 por Fawz
Sua query está errada. Você tem que alterar não inserir.
É mais ou menos assim:
db.query("UPDATE `players` SET `is_training` = 1 WHERE 'name' = '".. getCreatureName(cid).."'")
Fawz, esta linha que você citou, altera para 1 todos os players, ai que está o problema, eu queria que trocasse somente o atributo do player que entrou no teleport.
Xanpsw, a sua linha ai não modificou nada na tabela.
@UP
db.query("UPDATE `players` SET `is_training` = 1;")
O negócio é modificar esta query para trocar o atributo somente de 1 player ao invés de todos os players.
info
Grupo: Marquês
Registrado: 03/02/13
Posts: 1.2k
Reputação: +254
Gênero: Masculino
Char no Tibia: Partiu Baladinha

Troca seu script por esse:
function onStepIn(cid, item, pos)
if getPlayerStorageValue(cid, 33339) == 1 then
doPlayerSendTextMessage(cid,22,"Voce acaba de iniciar seu treinamento.")
setPlayerStorageValue(cid,33339,1)
db.query("UPDATE `players` SET `is_training` = 1;")
else
return false
end
return true
end
Editado Outubro 19 por Fawz
Fawz, não mudou nada na database, creio que tenha erro na comparação.
O problema é para definir a linha do player que tem que ser alterada.
info
Grupo: Marquês
Registrado: 03/02/13
Posts: 1.2k
Reputação: +254
Gênero: Masculino
Char no Tibia: Partiu Baladinha

Existe alguma quest que da a storage 33339?
Tenta esse:
function onStepIn(cid, item, pos)
if getPlayerStorageValue(cid, 33339) == 1 then
doPlayerSendTextMessage(cid,22,"Voce acaba de iniciar seu treinamento.")
db.query("UPDATE `players` SET `is_training` = 1;")
else
return false
end
return true
end
Vou te explicar o que eu fiz, ali eu coloquei caso o player tiver a storage 33339 ele vai retornar a mensagem e vai executar a query, caso não ele não vai retornar nada.
Editado Outubro 19 por Fawz
Sei la, eu tinha copiado de um outro bagulho, nem sei mais kkkkkkkkkkkkkkkkkkkkkkkkkkk
da um help ai mano pode tirar isso ae
ve se assim fica melhor:
function onStepIn(cid, item, pos)
if item.uid == 1478 then
doPlayerSendTextMessage(cid,22,"Voce acaba de iniciar seu treinamento.")
db.query("UPDATE `players` SET `is_training` = 1 WHERE 'name' = '".. getCreatureName(cid).."'")
return true
end
end
Editado Outubro 19 por Helflin
info
Grupo: Marquês
Registrado: 03/02/13
Posts: 1.2k
Reputação: +254
Gênero: Masculino
Char no Tibia: Partiu Baladinha

Se quiser eu posso criar um baú que dê a storage pro player e ele só pode entrar no tp se tiver a storage...
action:
function onUse(cid, item, frompos, item2, topos) ----------Config---------- sto1 = 33339 ---------Fim Config------- if getPlayerStorageValue(cid, sto) == 1 then doPlayerSendTextMessage(cid,22,"Você já usou este baú.") elseif setPlayerStorageValue(cid, sto, 1) then doPlayerSendTextMessage(cid,22,"Você agora está autorizado a usar o teleport.") end return true end
movement:
function onStepIn(cid, item, pos, toPos, fromPosition)
----------Config----------
sto1 = 33339
---------Fim Config-------
if getPlayerStorageValue(cid, sto1) == 1 then
doPlayerSendTextMessage(cid,22,"Voce acaba de iniciar seu treinamento.")
db.query("UPDATE `players` SET `is_training` = 1;")
else
doTeleportThing(cid, fromPosition)
return false
end
return true
end
Editado Outubro 19 por Fawz
Bom não é isso, esses bagulhos de quest era que eu tinha copiado um outro arquivo.
Eu estou querendo que exemplo:
Administrador entrou no teleporte para a sala de trainers.
-- ai vai na database e altera a coluna "is_training" para 1, somente a linha do Administrador.
Ou seja, o Administrador fica com 1 em "is_training", no caso 1 em boolean = verdadeiro...
---------------------------------------------------------------------------------
Bom, resolvi aqui, o erro era esse:
function onStepIn(cid, item, pos)
if item.uid == 1478 then
doPlayerSendTextMessage(cid,22,"Voce acaba de iniciar seu treinamento.")
db.query("UPDATE `players` SET `is_training` = 1 WHERE name = '".. getCreatureName(cid).."'")
return true
end
end
na quarta linha, correto: name ao invés de 'name' .
RESOLVIDO, PODEM FECHAR O TÓPICO.
Vlw pela ajuda galera, abraços.
Editado Outubro 19 por Helflin
info
Grupo: Marquês
Registrado: 03/02/13
Posts: 1.2k
Reputação: +254
Gênero: Masculino
Char no Tibia: Partiu Baladinha

Ok ok, te respondi a PM.
Dúvida sanada, tópico reportado para que movam.







info
Grupo: Artesão
Registrado: 26/05/08
Posts: 142
Reputação: +9
Bom, eu queria que quando o player entrasse no teleport, os atributos "is_training" que de todos estão 0(que eu defini), mudasse para 1, isso no atributo somente do jogador que entrar no teleport.
Pensei em algo assim, mas da errado:
function onStepIn(cid, item, pos) if item.uid == 1478 then queststatus = getPlayerStorageValue(cid,33339) if queststatus == -1 then doPlayerSendTextMessage(cid,22,"Voce acaba de iniciar seu treinamento.") setPlayerStorageValue(cid,33339,1) db.query("INSERT INTO `players` WHERE ('name' = '".. getCreatureName(cid).."')(`is_training`) VALUES '1';") return true end end endÉ mais em MYSQL a duvida.