Ir para conteúdo

Yan Liima

Héroi
  • Registro em

  • Última visita

Tudo que Yan Liima postou

  1. Para os atributos dos items funcionarem, você precisa ir em movements.xml e adicionar isto: <movevent type="Equip" itemid="ID" slot="head" event="function" value="onEquipItem"/> <movevent type="DeEquip" itemid="ID" slot="head" event="function" value="onDeEquipItem"/> Em ID você substitui para o ID do item. OBS: note que em slot está escrito slot="head" head é para helmet. Aqui está para outros item :
  2. Vê essa aqui: mysql.sql Depois você vai ter que adicionar/executar as Query. Principalmente da Loterry, creio que deve usar rs
  3. Loterry: Erro dois o @Storm já disse qual é a solução. E o erro 3 de o jogador voltar pro level 1 creio que é por causa do PLAYERLOSS_EXPERIENCE usado na função: doPlayerSetLossPercent, essa porra do Loss Experience sempre buga nos server, fazendo com quem volte pro nv1, bem complicado... Tente colocar por Bless. doPlayerAddBlessing(cid, 1), doPlayerAddBlessing(cid, 2)... Até 5.
  4. O primeiro que te mandei com certeza irá dar certo. Da até pra fazer por outro script, mas não será necessario. Teste que irá dar certo. function onLogin(cid) local pos = {x = 153, y = 52, z = 7} if isPremium(cid) then setPlayerStorageValue(cid, 6787656, 1) elseif getPlayerStorageValue(cid, 6787656) == 1 and not isPremium(cid) then doTeleportThing(cid, pos) doPlayerSetTown(cid,1) doSendMagicEffect(getPlayerPosition(cid), 240) setPlayerStorageValue(cid, 6787656, -1) setPlayerStorageValue(cid, 6787657, 1) doRemoveCreature(cid) end return TRUE end function onLogin(cid) if getPlayerStorageValue(cid, 6787657) == 1 then doPlayerPopupFYI(cid, "Sua Premium Expirou!\nNao Deixe De Visitar Nosso SHOP.") setPlayerStorageValue(cid, 6787657, -1) end return TRUE end
  5. Estranho irmão... Tentou mudar o arquivo? porque se você reparar ele ta tentando ler um arquivo que não existe. Já aconteceu esse bug comigo, e resolvi trocando o arquivo ou alterando o nome.
  6. Você informou o diretório errado do arquivo em creaturescript. note que tem um pequeno problema depois do killtasksystem. Tem um caractere invalido. Tente editar o nome do arquivo de novo, apaga e tente concertar. Deixando: killtasksystem.lua
  7. Use o que eu te mandei, creio que irá resolver o problema. Caso aquele não der, tente esse: function onLogin(cid) local pos = {x = 153, y = 52, z = 7} if isPremium(cid) then setPlayerStorageValue(cid, 6787656, 1) elseif getPlayerStorageValue(cid, 6787656) == 1 and not isPremium(cid) then doTeleportThing(cid, pos) doPlayerSetTown(cid,1) doSendMagicEffect(getPlayerPosition(cid), 240) setPlayerStorageValue(cid, 6787656, -1) setPlayerStorageValue(cid, 6787657, 1) doRemoveCreature(cid) elseif getPlayerStorageValue(cid, 6787657) == 1 then doPlayerPopupFYI(cid, "Sua Premium Expirou!\nNao Deixe De Visitar Nosso SHOP.") setPlayerStorageValue(cid, 6787657, -1) end return TRUE end
  8. Fiz aqui, testa ai Em creaturescript/scripts crie um arquivo com o nome qualquer e coloque isto dentro: -- Script by Yan Liima(Night) function onDeath(cid, corpse, deathList) if not isPlayer(cid) then return true end local loot = false -- Se o jogador morrer ele irá perder o loot? local xp = false -- Se o jogador morrer ele irá perder EXP? local loss = getConfigValue('deathLostPercent') local killer = deathList[1] -- Não mexa aqui if isMonster(killer) then doCreatureSetDropLoot(cid, loot) doPlayerSetLossPercent(cid, PLAYERLOSS_SKILLS, 0) doPlayerSetLossPercent(cid, PLAYERLOSS_MANA, 0) if xp == false then doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 1) end end return TRUE end XML: <event type="death" name="ProtegerPlayer" event="script" value="nome_do_arquivo.lua"/> Login.lua: registerCreatureEvent(cid, "ProtegerPlayer") Cara o unico problema vai ser o PLAYERLOSS_EXPERIENCE, bem provavel que ele buga e faz o jogador voltar pro nv1. Muitos reclamam sobre isso. Se acontecer o mesmo, tente trocar para Blessing
  9. function onLogin(cid) local pos = {x = 153, y = 52, z = 7} if isPremium(cid) then setPlayerStorageValue(cid, 6787656, 1) elseif getPlayerStorageValue(cid, 6787656) == 1 and not isPremium(cid) then doTeleportThing(cid, pos) doPlayerSetTown(cid,1) doSendMagicEffect(getPlayerPosition(cid), 240) setPlayerStorageValue(cid, 6787656, -1) setPlayerStorageValue(cid, 6787657, 1) doRemoveCreature(cid) end return TRUE end function onLogin(cid) if getPlayerStorageValue(cid, 6787657) == 1 then doPlayerPopupFYI(cid, "Sua Premium Expirou!\nNao Deixe De Visitar Nosso SHOP.") setPlayerStorageValue(cid, 6787657, -1) end return TRUE end
  10. #Introdução Bom hoje estarei trazendo aqui o sistema de Ping feito pelo Mock, com uma pequena adaptação feita por mim para funcionar em TFS 0.4(talvez podendo funcionar em outras) Pois o que ele disponibilizou foi apenas para TFS 0.3.6 e nem foi muito utilizado pela comunidade. Muitos servidores daqui para download tem script no talk mas a lib está totalmente errada e não tem o code nas sources. Esse sistema tem varias utilizades, podendo usar o comando !ping para verificar seu ms ou até mesmo por para kikar jogadores com ms muito alto... Se você não sabe o cliente já tem um sistema de ping, e getOtsystime é como os.time () + os.clock (), você tem ano, mês, dia, hora, minutos, segundos, milisegundos... Enfim chega de enrolação e vamos lá! Code para TFS 0.4 e OTX: Code para TFS 0.3.6 LIB: Prontinho, agora seu servidor está pronto para utilizar as funções de Ping. Seja criativo! Ahh você é daqueles que quer tudo na mão né? Aqui vai um talkactions para ver o ping. Em talkactions/scripts crie um arquivo chamado playerping.lua, cole isto dentro: -- Script by Yan Liima(Night for tibiaking.com) function onSay(cid, words, param, channel) local ms = ping.CheckPing(cid) doPlayerSendTextMessage(cid,22,"Ping aproximado --> ["..ms.."].") return true end Em talkactions.xml <talkaction words="!ping" event="script" value="playerping.lua"/>
  11. Estranho ... tente utilizar o Enigma Virtual Box para compilar. Se o erro persistir, se for possivel me envie os seus arquivos por aqui ou pelo privado para mim analisar. enigmavb.exe
  12. Sinceramente não faço ideia do motivo disso estar acontecendo. É como se uma hora ele reconhessece a função getPlayerNameByGUID e outra hora não. De qualquer forma tente dessa meneira: function onSay(cid, words, param) if param == '' then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "/find item name") return true end local item_id = tonumber(param) if(not item_id) then item_id = getItemIdByName(tostring(param), false) if(not item_id) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Item wich such name does not exists.") return true end end local str, player_depotitems, players_items, tile_items = "",{},{},{} local dp = db.getResult("SELECT `player_id`, `count` FROM `player_depotitems` WHERE `itemtype` = "..item_id),{} if (dp:getID() ~= -1) then repeat player_depotitems[#player_depotitems+1] = {dp:getDataInt("player_id"), dp:getDataInt("count") } until not(dp:next()) dp:free() end local pi = db.getResult("SELECT `player_id`, `count` FROM `player_items` WHERE `itemtype` = "..item_id),{} if (pi:getID() ~= -1) then repeat players_items[#players_items+1] = {pi:getDataInt("player_id"), pi:getDataInt("count") } until not(pi:next()) pi:free() end local hi = db.getResult("SELECT `tile_id`, `count` FROM `tile_items` WHERE `itemtype` = "..item_id),{} if (hi:getID() ~= -1) then repeat local tile = db.getResult("SELECT `house_id`, `x`, `y`, `z` FROM `tiles` WHERE `id` = "..hi:getDataInt("tile_id")),{} tile_items[#tile_items+1] = {tile:getDataInt("house_id"),tile:getDataInt("x"),tile:getDataInt("y"),tile:getDataInt("z")} until not(hi:next()) hi:free() end if #player_depotitems > 0 then str = str .. "#DEPOT ITEMS#\nQuantidade - Jogador\n" for i = 1, table.maxn(player_depotitems) do local name = getPlayerByNameWildcard(player_depotitems[i][1]) local target_online = getPlayerByNameWildcard(name) str = str .. player_depotitems[i][2] .. ' ' .. name ..' | '..(not isPlayer(target_online) and 'Offline' or 'Online')..'\n' end end if #players_items > 0 then str = str .. (str ~= "" and "--------------//-------------\n\n#PLAYER ITEMS#\nQuantidade - Jogador\n" or "#PLAYER ITEMS#\nQuantidade - Jogador\n") for i = 1, table.maxn(players_items) do local name = getPlayerByNameWildcard(players_items[i][1]) local target_online = getPlayerByNameWildcard(name) str = str .. players_items[i][2] .. ' ' .. name ..' | '..(not isPlayer(target_online) and 'Offline' or 'Online')..'\n' end end if #tile_items > 0 then str = str .. (str ~= "" and "--------------//-------------\n\n#TILE ITEMS#\nHouse ID - Tile Position\n" or "#TILE ITEMS#\nHouse ID -Tile Position\n") for i = 1, table.maxn(tile_items) do str = str .. tile_items[i][1] .. ' - {x = ' .. tile_items[i][2] ..', y = ' .. tile_items[i][3] ..', z = ' .. tile_items[i][4] ..'} \n' end else str = str .. (str ~= "" and "" or "O item não foi encontrado em nenhum jogador.") end return doShowTextDialog(cid,item_id, str) end
  13. Cara olhei um dos teus topicos e vi que você usa TFS, e se com o amigo ali funcionou deveria funcionar contigo também. Verifique o seu arquivo .lua e vê se o formato não está bugado
  14. Pro Vod né irmão, o merito é dele kkkk Aproveitando aqui, @Vodkart responde mensagem.
  15. Acho que agora vai! Como o Vodkart teve que pegar o script original por causa do code box ele esqueceu de alterar uma parte. Aproveitei e adicionei a msg caso o item não seja encontrado.
  16. Estou meio enferrujado, tenta ai: -- by Yan Liima(Night for Tibiaking.com) function onSay(cid, words, param, channel) local staff = db.getResult("SELECT name, online FROM players WHERE group_id >= 2;") local name = staff:getDataString("name") local online = staff:getDataInt("online") if isPlayer(getCreatureByName(name)) then msg = "Nome : " .. name .. " | Status: [".. (online == 1 and "Online" or "Offline") .."]\n" end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, msg) return true end
  17. Por padrão o comando /b exibe uma mensagem em vermelho com o nome do administrador. E o /bc você pode definir a cor e não exibe o nome. Provavelmente como o @King Laker disse, pode ser a sua distro. A distro que você está usando pode ter sido compilada com alguma modificação. Sugiro que edite alguma source de sua preferencia e compile ela. Ou, baixe uma distro qualquer para fazer o teste. Use as scripts de /b e /bc padrões. Troque o seu bc pelo que o Iury mandou.
  18. SHOP: Sistema automatico para PagSeguro:
  19. O problema de não entrar no teu servidor não tem nada ver com a distro. aparentemente está tudo certo. Aquele erro que tu marcou em amarelo é porque não existe o arquivo shop.php na pasta globalevents. Mas ele não é o acusador de tu não poder logar. Talvez o erro esteja no client. Alterou o IP do client? vai na pasta mods/client_entergame/entergame.lua e mude o IP. Se não der certo tente mudar de client e faça o teste novamente.
  20. Se preferir você pode ir em items.xml procurar pelo piso e adicionar isto: <attribute key="walkStack" value="0" /> Irá ficar assim: <item id="0" article="a" name="tile"> <attribute key="walkStack" value="0" /> </item> Assim nenhum jogador irá conseguir passar por outro em cima de X piso.
  21. Agora entende porque não ajudo muito a comunidade TibiaKing? O que eu acho mais chato também é um membro daqui do Fórum (não irei citar nomes) que vive 24horas pedindo suporte e não tem coragem de ajudar alguém ou resolver sozinho, ele nem ao menos chega a tentar... já tive problemas também em fazer um script mandar no tópico do individo e ele vir mandando privado dizendo pra mim remover (isso foi em outro fórum).
  22. No seu config.lua procure por: deathLostPercent = E no login.lua procure por: doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE Quanto maior mais level e skills o player irá perder.
  23. Tutorial completo: LINK
  24. Em creaturescript/scripts crie um arquivo chamado mensagem.lua e cole isto: function onLogin(cid) if isPlayer(cid) then doPlayerSendTextMessage(cid, 22, "MENSAGEM") end return true end Em creaturescript.xml adicione: <event type="login" name="LoginMensagem" event="script" value="mensagem.lua"/> SIMPLES!

Informação Importante

Confirmação de Termo