Jump to content

luangop

Member
  • Content Count

    449
  • Joined

  • Last visited

  • Days Won

    9

luangop last won the day on May 13 2018

luangop had the most liked content!

7 Followers

About luangop

  • Rank
    Honorário

Profile Information

  • Gender
    Masculino
  • I am
    Tibiano

Recent Profile Visitors

2209 profile views
  1. Eu uso tfs 0.3.6 .. Mas mesmo assim obrigado vou dar uma estudada nela.
  2. Eu uso otclient, n o problema é com o servidor mesmo mano, as funções estão como int32 não reconhecendo assim valor maior que 2,147,483,648 ----EDIT Acho que vc entendeu mal o problema, não me refiro a janela de trade do npc, me refiro a função doPlayerRemoveMoney mesmo, que ao usar se o player tiver mais que 2,147,483,648 de money na bag buga e remove muito mais do que deveria.
  3. Estou usando tfs 0.3.6, tibia 8.54 (poketibia mas não interfere) Meu servidor é high exp e portanto os players acumulam altos valores de gold, para equilibrar tenho NPC's que vendem items a preços igualmente elevados. A questão é, na source as funções getPlayerMoney, doPlayerRemoveMoney e doPlayerAddMoney estão em 32 bits. Sendo assim se o player tiver mais de 2 bilhoes em dinheiro (worth, valor das notas no items.xml) na bag e fala com algum npc ou qualquer coisa que 'retire' 'dinheiro' da bag, buga e acaba removendo muito mais que deveria. Já tentei passar por conta as funções para 64bits mas não obtive sucesso. Alguém já mexeu com isso antes para me dar uma luz?
  4. @vyctor17 Primeiramente desculpe reviver o tópico... eu estou tentando fazer um sistema de guardian, ou cards como alguns chamam.. E neste sistema preciso que o summon que tenha a tag [GUARDIAN] no seu nome seja 'ignorado' pelas criaturas. Tipo com esse sistema o player vai ter 2 summons. O poke normal e o guardian. Se o player estiver usando seu poke normal e o guardian, o monstro deve focar somente no poke normal e ignorar o guardian. Se o player estiver sem o poke normal, usando apenas o guardian, o monstro deve focar no player ignorando completamente o guardian. Consegue me ajudar?
  5. Uma ajuda para o tópico... Ao invés de usar uma nova função (totalmente desnecessária, pesando na memória ram do servidor) para mostrar números inteiros, utilize uma função padrão da linguagem lua.. exemplo: playerAddExp(pk, math.floor(expTotal / 10)) ou playerAddExp(pk, math.ceil(expTotal / 10)) Explicação: math.floor vai retornar um número inteiro menor ou igual ao resultado da equação. math.ceil vai retornar um número inteiro maior ou igual ao resultado da equação.
  6. Up Alguém conseguiu resolver? Estou com o mesmo problema no meu OT de pokemon.
  7. Entendi.. Vou te ensinar a pescar nos 2 primeiros, o resto vc pesca sozinho. elseif msgcontains(msg, "shenron") or msgcontains(msg, "SHENRON") and talk_state == 1 then if getPlayerStorageValue(cid, 30023) >= 1 then doPlayerSetVocation(cid, XXX) -- Vocation rebornada. selfSay("Parabens, voce virou um Shenron Reborn.", cid) else doPlayerSetVocation(cid, 376) -- Vocation normal. selfSay("Parabens, voce virou um Shenron.", cid) end elseif msgcontains(msg, "vegetto") or msgcontains(msg, "VEGETTO") and talk_state == 1 then if getPlayerStorageValue(cid, 30023) >= 1 then doPlayerSetVocation(cid, XXX) -- Vocation rebornada. selfSay("Parabens, voce virou um Vegetto Reborn.", cid) else doPlayerSetVocation(cid, 388) -- Vocation normal. selfSay("Parabens, voce virou um Veggeto.", cid) end
  8. Relacionado as portas, dependendo do seu provedor de internet eles tem que liberar no sistema deles. (Comigo foi assim) Sobre mudar de sqlite para mysql. Quando se faz uma mudança dessa tem que modificar as querys nos scripts. Todos os sistemas que pararam de funcionar devem ter sido programados apenas com query sqlite.
  9. Você precisa editar seu items.otb, ele que está restringindo.
  10. local outfit = XXXX -- Storage da outfit no outfits.xml function onUse(cid, item) if doPlayerRemoveItem(cid, item.itemid, 1) setPlayerStorageValue(cid, outfit, 1) return true end end E você precisa configurar a outfit em data/xml/outfits.xml da seguinte forma: <outfit id="47" quest="181644"> <list gender="0" lookType="1414" name="Nome da outfit"/> <list gender="1" lookType="1413" name="Nome da outfit"/> </outfit> Em outfit id="47" <~~ vc olha qual e a ultima outfit do seu xml, e aumenta 1. em quest="181644' <~~ vc coloca uma storage que vc ainda não utiliza no servidor, esta mesma storage vai la no outro script.
  11. E oque tem que acontecer? se for reborn tem que perder o reborn? Se for, isso vai resolver \/ local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local choose = {} local cancel = {} local available = {} function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_PRIVATE and 0 or cid if(msgcontains(msg, "vocacao")) then selfSay("Qual dessas vocacoes voce quer se tornar? Shenron(VIP), Vegetto(VIP), Tapion(FREE), Kame(VIP), King Vegeta(VIP), Kagome(VIP), Zaiko(VIP), Chilled(Free), C8(VIP), Bills(VIP), Whiss(VIP), Super Broly(VIP), Champa(VIP), Paikuhan(VIP), Botamo(Free), Jiren(VIP), Yamcha(Free), Zamasu(VIP), Goku Black(VIP).", cid) talkState[talkUser] = 1 elseif msgcontains(msg, "shenron") or msgcontains(msg, "SHENRON") and talk_state == 1 then if getPlayerStorageValue(cid, 30023) >= 1 then setPlayerStorageValue(cid, 30023, -1) end doPlayerSetVocation(cid, 376) selfSay("Parabens, voce virou um Shenron", cid) elseif msgcontains(msg, "vegetto") or msgcontains(msg, "VEGETTO") and talk_state == 1 then if getPlayerStorageValue(cid, 30023) >= 1 then setPlayerStorageValue(cid, 30023, -1) end doPlayerSetVocation(cid, 388) selfSay("Parabens, voce virou um Vegetto", cid) elseif msgcontains(msg, "tapion") or msgcontains(msg, "TAPION") and talk_state == 1 then if getPlayerStorageValue(cid, 30023) >= 1 then setPlayerStorageValue(cid, 30023, -1) end doPlayerSetVocation(cid, 400) selfSay("Parabens, voce virou um Tapion", cid) elseif msgcontains(msg, "kame") or msgcontains(msg, "KAME") and talk_state == 1 then if getPlayerStorageValue(cid, 30023) >= 1 then setPlayerStorageValue(cid, 30023, -1) end doPlayerSetVocation(cid, 413) selfSay("Parabens, voce virou um Kame", cid) elseif msgcontains(msg, "king vegeta") or msgcontains(msg, "KING VEGETA") and talk_state == 1 then if getPlayerStorageValue(cid, 30023) >= 1 then setPlayerStorageValue(cid, 30023, -1) end doPlayerSetVocation(cid, 425) selfSay("Parabens, voce virou um King Vegeta", cid) elseif msgcontains(msg, "kagome") or msgcontains(msg, "KAGOME") and talk_state == 1 then if getPlayerStorageValue(cid, 30023) >= 1 then setPlayerStorageValue(cid, 30023, -1) end doPlayerSetVocation(cid, 437) selfSay("Parabens, voce virou um Kagome", cid) elseif msgcontains(msg, "zaiko") or msgcontains(msg, "ZAIKO") and talk_state == 1 then if getPlayerStorageValue(cid, 30023) >= 1 then setPlayerStorageValue(cid, 30023, -1) end doPlayerSetVocation(cid, 449) selfSay("Parabens, voce virou um Zaiko", cid) elseif msgcontains(msg, "chilled") or msgcontains(msg, "CHILLED") and talk_state == 1 then if getPlayerStorageValue(cid, 30023) >= 1 then setPlayerStorageValue(cid, 30023, -1) end doPlayerSetVocation(cid, 461) selfSay("Parabens, voce virou um Chilled", cid) elseif msgcontains(msg, "c8") or msgcontains(msg, "C8") and talk_state == 1 then if getPlayerStorageValue(cid, 30023) >= 1 then setPlayerStorageValue(cid, 30023, -1) end doPlayerSetVocation(cid, 478) selfSay("Parabens, voce virou um C8", cid) elseif msgcontains(msg, "bills") or msgcontains(msg, "BILLS") and talk_state == 1 then if getPlayerStorageValue(cid, 30023) >= 1 then setPlayerStorageValue(cid, 30023, -1) end doPlayerSetVocation(cid, 552) selfSay("Parabens, voce virou um Bills", cid) elseif msgcontains(msg, "whiss") or msgcontains(msg, "WHISS") and talk_state == 1 then if getPlayerStorageValue(cid, 30023) >= 1 then setPlayerStorageValue(cid, 30023, -1) end doPlayerSetVocation(cid, 572) selfSay("Parabens, voce virou um Whiss", cid) elseif msgcontains(msg, "super broly") or msgcontains(msg, "SUPER BROLY") and talk_state == 1 then if getPlayerStorageValue(cid, 30023) >= 1 then setPlayerStorageValue(cid, 30023, -1) end doPlayerSetVocation(cid, 587) selfSay("Parabens, voce virou um Super Broly", cid) elseif msgcontains(msg, "champa") or msgcontains(msg, "CHAMPA") and talk_state == 1 then if getPlayerStorageValue(cid, 30023) >= 1 then setPlayerStorageValue(cid, 30023, -1) end doPlayerSetVocation(cid, 602) selfSay("Parabens, voce virou um Champa", cid) elseif msgcontains(msg, "paikuhan") or msgcontains(msg, "PAIKUHAN") and talk_state == 1 then if getPlayerStorageValue(cid, 30023) >= 1 then setPlayerStorageValue(cid, 30023, -1) end doPlayerSetVocation(cid, 615) selfSay("Parabens, voce virou um Paikuhan", cid) elseif msgcontains(msg, "botamo") or msgcontains(msg, "BOTAMO") and talk_state == 1 then if getPlayerStorageValue(cid, 30023) >= 1 then setPlayerStorageValue(cid, 30023, -1) end doPlayerSetVocation(cid, 627) selfSay("Parabens, voce virou um Botamo", cid) elseif msgcontains(msg, "jiren") or msgcontains(msg, "JIREN") and talk_state == 1 then if getPlayerStorageValue(cid, 30023) >= 1 then setPlayerStorageValue(cid, 30023, -1) end doPlayerSetVocation(cid, 640) selfSay("Parabens, voce virou um Jiren", cid) elseif msgcontains(msg, "yamcha") or msgcontains(msg, "YAMCHA") and talk_state == 1 then if getPlayerStorageValue(cid, 30023) >= 1 then setPlayerStorageValue(cid, 30023, -1) end doPlayerSetVocation(cid, 653) selfSay("Parabens, voce virou um Yamcha", cid) elseif msgcontains(msg, "zamasu") or msgcontains(msg, "ZAMASU") and talk_state == 1 then if getPlayerStorageValue(cid, 30023) >= 1 then setPlayerStorageValue(cid, 30023, -1) end doPlayerSetVocation(cid, 667) selfSay("Parabens, voce virou um Zamasu", cid) elseif msgcontains(msg, "goku black") or msgcontains(msg, "GOKU BLACK") and talk_state == 1 then if getPlayerStorageValue(cid, 30023) >= 1 then setPlayerStorageValue(cid, 30023, -1) end doPlayerSetVocation(cid, 681) selfSay("Parabens, voce virou um Goku Black", cid) elseif(msgcontains(msg, "bye") or msgcontains(msg, "goodbye") or msgcontains(msg, "cya")) then selfSay("cya!", cid, TRUE) closeShopWindow(cid) removeFocus(cid) end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  12. Eu sí baixei e compilei e deu tudo certo.. pra dar erro vc deve ter modificado alguma coisa, ou não tem as bibliotecas .net 4 no PC
  13. tá no tópico ... No caso originalmente está assim na source: msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_LEVEL)); Neste msg->put.. preciso por o valor que se encontra na minha database, na tabela reset. Tentei assim mas não deu> Database* db = Database::getInstance(); DBQuery query; query << "SELECT `reset` FROM `players` WHERE `id` = " << player->getGUID(); DBResult* result; std::string resets; resets = result->getDataInt("reset"); int32_t resetes = atoi(resets.c_str()); msg->put<uint16_t>(resetes); Eu não sei fazer a query mysql e o code pra extrair a informação como int (número)
  14. A qual parte se refere ser impossivel? eu já consegui alterar a informação que o servidor envia ao client, já está aparecendo meu level no lugar da exp, e resets no lugar do level quando uso o script de resets por storage, só não consigo fazer a query correta pra puxar a informação da database. Segue prints: prints
  15. .Qual servidor ou website você utiliza como base? TFS 0.4 rev 3777 Qual o motivo deste tópico? Estou a dias tentando fazer uma função na source e não consigo, sou leigo. Este sistema é para um servidor exp alta, já consegui fazer o level do player aparecer no lugar da experiencia no client, pois no lugar do level buga quando chega em um número muito alto, para tal simplesmente fiz isso: uint64_t experience = player->getPlayerInfo(PLAYERINFO_LEVEL); msg->put<uint32_t>(experience); E como o servidor tem sistema de resets, eu queria fazer aparecer no lugar do level, o reset do player.. primeiramente meu sistema de resets era com storage, e eu consegui fazer isso da seguinte maneira: std::string value; player->getStorage(378378, value); int32_t resets = atoi(value.c_str()); msg->put<uint16_t>(resets); Mas por motivos de praticidade para incluir informações e sistemas no site, mudei meu sistema de reset para registrar os resets na database. no caso o nome da coluna ficou 'reset'. Então tentei fazer aparecer os resets no client com uma query mysql mas como não tenho conhecimento de mysql em C++ deu errado kk Vou postar como eu tentei: Database* db = Database::getInstance(); DBQuery query; query << "SELECT `reset` FROM `players` WHERE `id` = " << player->getGUID(); DBResult* result; std::string resets; resets = result->getDataInt("reset"); int32_t resetes = atoi(resets.c_str()); msg->put<uint16_t>(resetes);

Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia começando do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer fazer um plano publicitário para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução!

×
×
  • Create New...