Ir para conteúdo

Underewar

Diretor de Projetos
  • Registro em

  • Última visita

Tudo que Underewar postou

  1. [Error - mysql_real_query] Query: SELECT * FROM shop_history WHERE `processed` = 0; Message: Table 'zedeky.shop_history' doesn't exist Bom no caso dele era só adicionar a tebela shop.
  2. FIX AQUI https://github.com/thetibiaking/tfs-pokemon-tibiaking/commit/69f2b953fd8b6ab78d9153bf5eb29e0f70d44ceb
  3. Tem que rodar como localhost para funcionar. O link atual da ots esta off, o método ainda funciona.
  4. Na database tudo bem no arquivo do config.lua nao pode ter.
  5. não pode haver espaços nos nomes das pastas troque as barras \ por /
  6. Configure essas 4 linhas e vai dar certo. Linha 19 = Nome do banco de dados. Linha 20 = Usuario do banco. Linha 21 = Senha do Banco. Linha 24 = Caminho para o arquivo config.lua do seu servidor
  7. Na pasta do seu site você deve encontrar um arquivo config.php esse arquivo precisa de algumas configurações iniciais como Nome do usuario do Mysql e Senha Nome do Banco entre outros....
  8. Você configurou corretamente seu htocs/config.php?
  9. Código funcional e testado basta adaptar no seu código. Se você não conseguir avisa aqui. config = { -- POS </\ fromPos = { x = 669, y = 850, z = 6 }, -- POS >\/ toPos = { x = 675, y = 856, z = 6 }, playerInside = "Already have one player inside" } function onUse(player, item, fromPosition, target, toPosition, isHotkey) -- Contexto -- ¹ Criado uma função nesse escopo responsável por verificar área, essa função recebe 2 parâmetros, área de inicio e área final. -- ² Criada a variável players um objeto representando os jogadores da área sendo iterado aqui players[#players+1] -- ³ Verificando se a quantidade de item dentro do objeto é maior que 0 se sim, efeito de fumaça e mensagem de falha. local function onCheckArea(fromPos, toPos) local players = {} for x = config.FromPos.x, config.ToPos.x do for y = config.FromPos.y, config.ToPos.y do for z = config.FromPos.z, config.ToPos.z do local tile = Tile(x, y, z) local creature = tile:getTopCreature() if creature and creature:isPlayer() then players[#players+1] = creature end end end end if #players > 0 then player:getPosition():sendMagicEffect(CONST_ME_POFF) return player:sendTextMessage(MESSAGE_EVENT_ADVANCE, config.msgs.playerInside ) end onCheckArea(config.fromPos, config.toPos) end
  10. Precisei dessa função e não achei em lugar nem um aqui está uma versão funcional para tfs 1.2 +. Listando o monstro ou player que o jogador morreu. Data/Creaturescript/XML <event type="login" name="LoginDeath" script="death_tp.lua" /> <event type="preparedeath" name="DeathTeleport" script="death_tp.lua"/> Data/Creaturescript/death_tp.lua function onLogin(player) player:registerEvent("DeathTeleport") return true end local maxDeathRecords = 5 -- By Underewar function onPrepareDeath(player, killer) -- Update Death DB local byPlayer = 0 local killerName if killer ~= nil then if killer:isPlayer() then byPlayer = 1 else local master = killer:getMaster() if master and master ~= killer and master:isPlayer() then killer = master byPlayer = 1 end end killerName = killer:getName() else killerName = "field item" end local byPlayerMostDamage = 0 local mostDamageKillerName if mostDamageKiller ~= nil then if mostDamageKiller:isPlayer() then byPlayerMostDamage = 1 else local master = mostDamageKiller:getMaster() if master and master ~= mostDamageKiller and master:isPlayer() then mostDamageKiller = master byPlayerMostDamage = 1 end end mostDamageName = mostDamageKiller:getName() else mostDamageName = "field item" end local playerGuid = player:getGuid() db.query("INSERT INTO `player_deaths` (`player_id`, `time`, `level`, `killed_by`, `is_player`, `mostdamage_by`, `mostdamage_is_player`, `unjustified`, `mostdamage_unjustified`) VALUES (" .. playerGuid .. ", " .. os.time() .. ", " .. player:getLevel() .. ", " .. db.escapeString(killerName) .. ", " .. byPlayer .. ", " .. db.escapeString(mostDamageName) .. ", " .. byPlayerMostDamage .. ", " .. (unjustified and 1 or 0) .. ", " .. (mostDamageUnjustified and 1 or 0) .. ")") local resultId = db.storeQuery("SELECT `player_id` FROM `player_deaths` WHERE `player_id` = " .. playerGuid) local deathRecords = 0 local tmpResultId = resultId while tmpResultId ~= false do tmpResultId = result.next(resultId) deathRecords = deathRecords + 1 end if resultId ~= false then result.free(resultId) end local limit = deathRecords - maxDeathRecords if limit > 0 then db.asyncQuery("DELETE FROM `player_deaths` WHERE `player_id` = " .. playerGuid .. " ORDER BY `time` LIMIT " .. limit) end if byPlayer == 1 then local targetGuild = player:getGuild() targetGuild = targetGuild and targetGuild:getId() or 0 if targetGuild ~= 0 then local killerGuild = killer:getGuild() killerGuild = killerGuild and killerGuild:getId() or 0 if killerGuild ~= 0 and targetGuild ~= killerGuild and isInWar(playerId, killer:getId()) then local warId = false resultId = db.storeQuery("SELECT `id` FROM `guild_wars` WHERE `status` = 1 AND ((`guild1` = " .. killerGuild .. " AND `guild2` = " .. targetGuild .. ") OR (`guild1` = " .. targetGuild .. " AND `guild2` = " .. killerGuild .. "))") if resultId ~= false then warId = result.getDataInt(resultId, "id") result.free(resultId) end if warId ~= false then db.asyncQuery("INSERT INTO `guildwar_kills` (`killer`, `target`, `killerguild`, `targetguild`, `time`, `warid`) VALUES (" .. db.escapeString(killerName) .. ", " .. db.escapeString(player:getName()) .. ", " .. killerGuild .. ", " .. targetGuild .. ", " .. os.time() .. ", " .. warId .. ")") end end end end -- teleportando o player para o templo player:teleportTo(player:getTown():getTemplePosition()) -- enchenco life e mana player:addHealth(player:getMaxHealth()) player:addMana(player:getMaxMana()) -- Remove EXP local level = player:getLevel() player:removeExperience(level * 10 * 100, true) -- DEATH MSG player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You are dead.") -- criando efeito de teleport player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) return false end
  11. Sim funcional!
  12. Compilei essa base usando o dev-cpp. Dentro da pasta src voce vai encontar uma pasta chmada dev-cpp abra o arquivo .dev co mo dev-cpp Não é estavel e esta longe de ser usavel.
  13. De qual quer maneira, você baixou essa base onde? tem o link ? Posso tentar arrumar se eu tiver acesso aos arquivos.
  14. Deve ter algo muito sério rolando na sua source...
  15. Tenta dar um /r no char e ve o log se o char desloga
  16. Qual tfs
  17. Tenta mudar a posição do jogador que esta bugado e a outfit dele como o will falou.
  18. Editei o seu agora deve funcionar. OTS_Player.php
  19. Bom nesse caso para pesquisar você precisa utilizar um constructor que ja esta sendo usado na pagina para pegar as informações. Esse é o constructor, você nao precisa entendelo. Mas precisa saber que existe. $player = new Player(); $player->find($name); if($player->isLoaded()) { $account = $player->getAccount(); $account_db = new Account(); Para isso crie uma nova função em : libs/OTS_Player.php uma nova chamada para o reset public function getReset() { if( !isset($this->data['reset']) ) { throw new E_OTS_NotLoaded(); } return $this->data['reset']; } Tambem é necessario criar um novo getter para o constructor; Dentro da função getter ; public function __get($name) case 'reset': return $this->getReset(); Agora o setter public function __set($name, $value) case 'reset': return $this->setReset($value); Agora sim você pode pesquisar utilizando a função getReset() que vai buscar o data desse contexto atual, que no caso é um constructor da chamada player no banco de dados. Agora chame no render da pagina com: $player->getReset() $main_content .= '<TR BGCOLOR="'.$bgcolor.'"> <TD style="border:1px solid #faf0d7;">resets:</TD> <TD style="border:1px solid #faf0d7;">' .$player->getReset().' </TD> </TR>'; Characters.txt Me manda o seu OTS_Player.php @ILex WilL
  20. Geralmente esse erro ou seu item.otb esta errado, ou as sprites do seu client não condiz com a que foi utilizando para salvar o mapa no rme
  21. Underewar postou uma resposta no tópico em Bots para OTC
    Tenta criar um waypoint que vai executar o seguinte script na casa local playerPos = g_game.getLocalPlayer():getPosition() local houseX = 9999 local houseY = 9999 if playerPos.x >= houseX and playerPos.y => houseY then gotolabel("HouseDrop", "Walking: false") else gotolabel("Start", "Walking: true") end Na label HouseDrop ative o seguinte script if not g_game.isOnline() then return end local itemsToDrop = {3364, 3365} -- IDS TO DROP local containers = g_game.getContainers() for v, container in pairs(containers) do if container:getItemsCount() > 0 then local containerItems = container:getItems() for j, item in pairs(containerItems) do for k, itemId in pairs(itemsToDrop) do if item:getId() == itemId then g_game.moveItem(item, g_game.getLocalPlayer():getPosition(), item:getCount()) return end end end end end auto(1000)
  22. @edit Vou fazer pra voce não tinha visto o layout.php no topico. Pelo que entendi a sua table players ja possui a coluna resets certo? Então basta adicionar esta linha no seu render <small><font color="white">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Resets: ('.$skill['reset'].')</font></small> Tente melhorar os arquivos em php que você estiver editando, estão desorganizados. Existem ferramentas para te ajudar nessa parte. Vai te ajudar a entender os códigos. Seria uma boa trocar o nome dessa variavel skills as skill por players as player. Vou deixar o layout php atualizado aqui. Para você entender como voce pode pegar dados da dabatase e colocar na sua tela. Você vai precisar sempre procurar e armazenar esse dado, você pode fazer isso utilizando uma variavel, no caso do php para usar uma variavel. Dentro de uma função php inicie a variavel com $ podemos utilizar o comando query do sql para pesquisar na database, precisamos passar algumas parametros o primeiro dele sendo oque nós estamos buscando nesse caso o * representa todos os dados da tabela players, que seria o segundo argumento ai então um terceiro argumento where ou seja selecionaremos todas as colunas da tabela players onde a coluna deleted seja = 0 e o group id seja 1(group_id do player no seu server) Agora que ja temos nossa pesquisar armazenada em uma variavel podemos imprimir na tela do usuario. Crie uma tag e passe como valor dela a sua variavel de pesquisa lembrando que para usar o nome de uma variavel em uma tag html é preciso utllizar '.nomedavariavel['nomeDaColuna'].' <?php /* Podemos criar a variavel aqui dentro utilizando o $ : */ $Pesquisar_Todos_Players = $SQL->query(' SELECT * FROM players WHERE deleted = 0 AND group_id = 1 AND account_id != 1 ORDER BY level DESC LIMIT 5'); ?> <small> <font color="white">Nome do player: ('.$Pesquisar_Todos_Players['name'].') </font> </small> layout.php Tente pesquisar oque ORDER BY level DESC LIMIT 5 Está parte ordena por level decrescente no maximo 5, tente pesquisar sobre as querys SQLS
  23. Me manda o script da widget

Informação Importante

Confirmação de Termo