Postado Setembro 3, 2019 5 anos Boa tarde. Eu venho tentando fazer no meu ot (e no site) um "ranking de quests feitas". Pra isso, primeiro fiz um script onLogin que verifica as storages de todas as quests do jogo e faz a contagem de quantas foram feitas numa storageSoma. Agora, eu criei uma coluna "quests_feitas" na tabela "players" da minha database "test" e quero fazer com que esse valor da storageSoma (que é o total de quests feitas pelo player) seja atualizado na coluna "quests_feitas" sempre que ele fizer login. Me parece bem simples, mas infelizmente não entendo de programação o suficiente para fazer isso. Agradeço se alguém puder ajudar. Segue o código (essa parte da dbQuery é a que está errada e preciso ajustar): -- ordered as in creaturescripts.xml local storagesQuests = { 5010, 5020, 5030, 5040, 5050, 5060, 5070, 5080, 1114, 87580, 587423, 1036, 1096, 1087, 1111, 1112, 1113, 1115, 1048, 1116, 1039, 1109, 1086, 1049, 1118, 1117, 1049, 1050, 1038, 1065, 1044, 1004, 1067, 1047, 1027, 1022, 1040, 1010, 1031, 1030, 1005, 1066, 1061, 1088, 1069, 1045, 1089, 1020, 1093, 1026, 1077, 1081, 1095, 1035, 1072, 1075, 1033, 1070, 1006, 1062, 1076, 1034, 1017, 1064, 1041, 1079, 1002, 1082, 1092, 1029, 1032, 1021, 1018, 1037, 1105, 1083, 1099, 1046, 1000, 1098, 1019, 1051, 1014, 1012, 1043, 1094, 1084, 1001, 1042, 1106, 1078, 1008, 1104, 1013, 1090, 1011, 1052, 1080, 1101, 1010, 1003, 1028, 1007, 1073, 1074, 1102, 1071, 1063, 1097, 1053, 1068, 1091, 1085, 1009, 1023, 1024, 1025, 1103, 50084, 58784 } local storageSoma = 100000 function onLogin(player, cid) for _, storage in ipairs(storagesQuests) do if player:getStorageValue(storage) == -1 then player:setStorageValue(storage, 0) end end player:setStorageValue(storageSoma, 0) for _, storage in ipairs(storagesQuests) do if player:getStorageValue(storage) == 1 then player:setStorageValue(storageSoma, player:getStorageValue(storageSoma) + 1) end end db.query('INSERT INTO `player` (`quests_feitas`) VALUES (' .. storageSoma .. ' )') return true end
Postado Setembro 4, 2019 5 anos local storagesQuests = { 5010, 5020, 5030, 5040, 5050, 5060, 5070, 5080, 1114, 87580, 587423, 1036, 1096, 1087, 1111, 1112, 1113, 1115, 1048, 1116, 1039, 1109, 1086, 1049, 1118, 1117, 1049, 1050, 1038, 1065, 1044, 1004, 1067, 1047, 1027, 1022, 1040, 1010, 1031, 1030, 1005, 1066, 1061, 1088, 1069, 1045, 1089, 1020, 1093, 1026, 1077, 1081, 1095, 1035, 1072, 1075, 1033, 1070, 1006, 1062, 1076, 1034, 1017, 1064, 1041, 1079, 1002, 1082, 1092, 1029, 1032, 1021, 1018, 1037, 1105, 1083, 1099, 1046, 1000, 1098, 1019, 1051, 1014, 1012, 1043, 1094, 1084, 1001, 1042, 1106, 1078, 1008, 1104, 1013, 1090, 1011, 1052, 1080, 1101, 1010, 1003, 1028, 1007, 1073, 1074, 1102, 1071, 1063, 1097, 1053, 1068, 1091, 1085, 1009, 1023, 1024, 1025, 1103, 50084, 58784 } local storageSoma = 100000 function onLogin(player, cid) for _, storage in ipairs(storagesQuests) do if player:getStorageValue(storage) == -1 then player:setStorageValue(storage, 0) end end local x = 0 for _, storage in ipairs(storagesQuests) do if player:getStorageValue(storage) == 1 then x = x + 1 end end player:setStorageValue(storageSoma, x) local playerId = player:getId() db.query("UPDATE `players` SET `quests_feitas` = " .. x .. " WHERE `id` = " .. playerId) return true end STYLLER OT 2022
Postado Setembro 4, 2019 5 anos Autor Cara, não sei nem como agradecer, tas resolvendo todos os meus problemas! Mas aparentemente não tá sendo atualizada a coluna "quests_feitas" na database. Não deu nenhum erro na distro, mas todos os valores continuam zero (coloquei pra aparecer o valor da storageSoma no !stats e lá está contanto a qntd de quests). Resolvido! O problema era aqui: local playerId = player:getId() Eu tinha que usar: local playerId = player:getGuid() Novamente muito obrigado Luan! Vc é foda cara. Editado Setembro 4, 2019 5 anos por MatCollier (veja o histórico de edições)
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.