RO
tfs 0.3

Account Storage Value

Por rorix, 28 de jul. de 2016 em Scripts

accountstora
storage
account
13
2.2k
rorixR
28 de julho de 2016 às 18:11

Galera, estou querendo adicionar no meu server a seguinte função:

getAccountStorageValue(getPlayerAccountId(cid), key)setAccountStorageValue(getPlayerAccountId(cid), key, value)

que é uma função para setar storage em accounts, mas eu segui alguns tutoriais e deu erro na hora de executar isso no sql:

CREATE TABLE `account_storage` (`account_id` int(11) NOT NULL default '0',`key` int(10) unsigned NOT NULL default '0',`value` varchar(255) NOT NULL default '0',UNIQUE KEY `account_id_2` (`account_id`,`key`),KEY `account_id` (`account_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

sempre fica dando de sintax e eu não sei resolver, alguem poderia ajudar?

 

Aqui segue uma segunda dúvida parecida com essa, se alguem souber: http://www.xtibia.com/forum/topic/241578-doplayeropenchannelcid-channel_private/

 

edit: lembrando que a source que estou usando é para tibia 7.72

Editado Julho 28 por rorix

Dragon Ball HiperD
28 de julho de 2016 às 19:24

data/lib/function.lua

 

function getAccountStorageValue(accidkey)
  
local value db.getResult("SELECT `value` FROM `account_storage` WHERE `account_id` = " .. accid .. " and `key` = " .. key .. " LIMIT 1;")
   if(
value:getID() ~= -1then
    
return value:getDataInt("value")
   else
    return -
1
   end
   value
:free()
 
end
 
 
 
function setAccountStorageValue(accidkeyvalue)
  
local getvalue db.getResult("SELECT `value` FROM `account_storage` WHERE `account_id` = " .. accid .. " and `key` = " .. key .. " LIMIT 1;")
   if(
getvalue:getID() ~= -1then
   db
.executeQuery("UPDATE `account_storage` SET `value` = " .. accid .. " WHERE `key`=" .. key .. " LIMIT 1');")
   
getvalue:free()
   return 
1
   
else
   
db.executeQuery("INSERT INTO `account_storage` (`account_id`, `key`, `value`) VALUES (" .. accid .. ", " .. key .. ", '"..value.."');")
   return 
1
   end
 end

 

 

database

 

CREATE TABLE `account_storage` (
  `
account_idint(11NOT NULL default '0',
  `
keyint(10unsigned NOT NULL default '0',
  `
valuevarchar(255NOT NULL default '0',
  
UNIQUE KEY `account_id_2` (`account_id`,`key`),
  
KEY `account_id` (`account_id`)
ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

eu testei e funfo normal !

 

credito azi

rorixR
28 de julho de 2016 às 19:41

Mano, colei certinho na database e apareceu esse erro:

edit: lembrando que a source que estou usando é para tibia 7.72

 Error while executing query: near "unsigned": syntax error<simple query executor>

 

Editado Julho 28 por rorix

rorixR
30 de julho de 2016 às 00:15

up

PoccnnP
30 de julho de 2016 às 09:19

Pelo o que eu saiba, ots anteriores a cliente 8.0 não usam sql e sim xml como database.

rorixR
30 de julho de 2016 às 11:54

ele é aberto por sql mesmo

sqlType = "sqlite"

 

PoccnnP
30 de julho de 2016 às 13:08

Remove essa sentença do codigo.

Citar

unsigned

 

rorixR
30 de julho de 2016 às 21:59
8 horas atrás, Poccnn disse:

Remove essa sentença do codigo.

 

 

removi, ai da esse erro

Error while executing query: near "KEY": syntax error<simple query executor>

 

PoccnnP
31 de julho de 2016 às 08:05

Temos um erro de sintaxe.

para sql, todas as palavras chaves sao escritas em maiusculos.

'and' tem que ser escrito 'AND'

Muda todas as palavras chaves usadas pelo sql para maiusculos.

rorixR
31 de julho de 2016 às 08:09
2 minutos atrás, Poccnn disse:

Temos um erro de sintaxe.

para sql, todas as palavras chaves sao escritas em maiusculos.

'and' tem que ser escrito 'AND'

Muda todas as palavras chaves usadas pelo sql para maiusculos.

 

tentei assim

CREATE TABLE `account_storage` (  `account_id` INT(11) NOT NULL default '0',  `key` INT(10) UNSIGNED NOT NULL default '0',  `value` VARCHAR(255) NOT NULL default '0',  UNIQUE KEY `account_id_2` (`account_id`,`key`),  KEY `account_id` (`account_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

mas gerou o mesmo error

 Error while executing query: near "unsigned": syntax error<simple query executor>

 

sera que pq ta dando isso?

PoccnnP
31 de julho de 2016 às 08:11

unsigne é em minusculo mesmo, desde que seu sql der suporte a ele; pelo o que ei saiba ele é das versoes recentes de sql.

rorixR
31 de julho de 2016 às 08:13

estranho, eu testei no sql e da error de syntax, quanto eu boto no site pelo mysql e testo lá ele vai normal, o que pode ser?

coloquei unsigned minusculo e deu mesmo error

PoccnnP
31 de julho de 2016 às 08:14

Se deu erro é porque seu sql nao da suporte para ele, remova-o.