Ir para conteúdo

Roy

Membro
  • Registro em

  • Última visita

Tudo que Roy postou

  1. Roy postou uma resposta no tópico em Códigos C++
    basta seguir o tópico, explica tudo certinho
  2. Roy postou uma resposta no tópico em Códigos C++
    Bem, não é muita coisa mas como estava me incomodando resolvi tentar mudar a posição das strings de Spells in game. Após eu morrer umas 3 vezes em um OT kkkkk, por conta de usar várias spell fazendo um spam, tipo esse: Tenho mania de observar a barra de HP no personagem. Então movi as strings das spells. Você pode mover pra cima, pra baixo, lado direito ou esquerdo você escolhe. Eu coloquei na dll, você pode modificar se quiser, também vou colocar o .CT pra quem quiser injetar em algum cliente. OBS: Cliente 8.6 E ficou assim: Acima do personagem e um pouco mais no centro do nome, assim fico livre pra enxergar o HP. SpellsPos.CT Injeta no cliente e marca as duas box. Dll_SRC.rar Não esqueça de alterar pra 32x/86x antes de compilar TibiaMain.dll Não esqueça de importar a dll com Stud_PE
  3. Roy postou uma resposta no tópico em Códigos C++
    Cara é pra funcionar a partir do momento que o .exe for iniciado. Você pode tentar injetar a .dll no seu .exe e abrir. Importe a .dll no seu cliente e veja se funciona. Tibia_RPC.dll.rar
  4. Roy postou uma resposta no tópico em Códigos C++
    Assim que eu tiver tempo livre eu vou mexendo aos poucos e depois posto.
  5. Roy postou uma resposta no tópico em Códigos C++
    Bem eu não sei nem por onde começar já que. Acredito eu que faz uns 2 anos mais ou menos que não me envolvo com Tíbia então hoje vim trazer algo novo para todos nós. Bem o que è Discord RPC? Nada mais nada menos que, aquela janelinha que mostra qual jogo você está jogando no Discord. E ao passar o mouse em cima do úsuario você pode checar os detalhes. Bem o Tíbia em sí já tem o Discord RPC por padrão mas o que eu trouxe a vocês o Discord-RPC que você pode editar como você quiser. Por exemplo. Talvez seja uma contribuição bem clichê. Mas para aqueles que deseja que os players mostre para os outros que está jogando seu otserv é uma boa, que possa ajudar a divulgar também. Acredito eu. Enfim vamos lá. Bem primeiro de tudo você precisa criar sua aplicação no Discord. Vá até o site de Desenvolvimentos de Aplicações do Discord e crie o seu canal clicando em New Aplication. Após Criar seu canal com o nome do seu Otserv, Descrição e ter colocado sua logo ou sei lá. Seu Canal Está quase completo. (Lembrando que as imagens precisam ser ou 512x512 ou 1024x1024) Vá até Rich Presence: Escolha sua logo e também clique em Add Image(s) e adicione uma imagem para sua Logo do Discord-RPC. Para quando o cara passar o mouse por cima do úsuario enxergar ela. Ok até aqui tudo OK. Só precisa aguardar o Discord carregar sua logo e enquanto isso vamos fazer o restante. Baixe a source do Discord-RPC. Tibia-RPC.rar https://drive.google.com/file/d/1N9oOlxEdMmPZbwPNFRNMXI4z86_v_AbL/view?usp=share_link Após baixar e abrir. Vá até o Discord.Cpp e vai aparecer assim pra você. Primeiro precisamos definir o ID do nosso Canal que criamos no Discord. Quando criamos o canal ele já nos da o ID do nosso canal. Você cópia o ID e cola em cima do outro que está no Discord.CPP. Após isso vamos ver os detalhes. Em Rich Presence conseguimos visualizar a imagem que adicionamos Ok. Abaixo de Rich Presence tem o Art Assets que é onde adicionamos as imagens de logo e tal. Vamos em Visualizer Clicamos nele e então vamos editar nosso Dircord RPC da forma que desejarmos. Após Editar a direita veremos como ele vai ficar quando alguém passar o mouse em cima do úsuario. Vamos em Show Code e vemos como ficou o código nele. certo! bem de alguns não necessitamos necessáriamente a não ser que você queira adicionar mais alguma coisa. recomendo não mexer nessas linhas. DiscordRichPresence discordPresence; memset(&discordPresence, 0, sizeof(discordPresence)); discordPresence.startTimestamp = starttime; Discord_UpdatePresence(&discordPresence); Tudo ok. Então vá até o Discord.cpp e edite-as como quiser. E vemos tudo lindo assim: Após isso só compilar e importar a dll no seu cliente tibia. Se você não tem nenhum importador de .dll eu vou disponibilizar pra você o link do Stud_PE Com ele você pode importa sua dll no seu cliente e ser feliz. Para importar a dll ao seu cliente, instale o Stud_PE no seu computador, após instalar. Abra. Importe o Tibia ou arraste o Tibia pra dentro do Stud_PE Vá em Functions > Clique com o botão direito dentro da janela de Fuctions. Cliqu em Add New Import > Dll Select > Selecione a dll do Discord-RPC > Após isso Clique em > Select func. > Selecione a função > Após Clique em > Add to List e clique em ADD. Então só da Ok e abrir o seu Cliente. Bem eu vou mandar a versão que mostra o Nome e Level pra vocês assim: Essa versão mostra o Nome do personagem quando loga e o level. OBS: a dll faz um update de checagem a cada 5 segundos então precisa aguardar até seu nome aparecer. Em Discord.h você pode determinar o level máximo do seu servidor. fazendo cada linha por level. Você precisa procurar os endereços com o Cheat Engine. Se caso for procurar pelo Check Login pesquisa por 1 se o char estiver logado. E 0 quando estiver deslogado, vai procurando até encontar qual endereço muda quando logar e deslogar. Em questão do nome procura pro string e o nome do seu personagem. Na maioria das vezes é quase sempre o primeiro mas você pode mudar o nome no Cheat pra ter certeza. Em questão do Level Procura pelo valor do level por exemplo: 211, da um addskill pra level o level 212 e da um Next Scan na pesquisa com o valor novo pra ter certeza. e vai adicionando mais um pouco até ter a certeza. Supostamente eu encontrei na primeira pesquisa e só precisei upar 1 level mas vocês podem demorar um pouco. único coisa que não consegui identificar foi a vocação do personagem que eu queria muito mas com isso acho que já é o suficiente. Tibia-RPC N.L.rar✔️ https://drive.google.com/file/d/1N9oOlxEdMmPZbwPNFRNMXI4z86_v_AbL/view?usp=share_link perdõe se eu não fui autoexplicativo e se postei na sessão errada. Corrijam-me se eu falei algo errado ou fiz algo de errado. Essa Source não fui eu quem criei. Eu usei o VS 2019. Qualquer dúvida por favor sinta-se a vontade. Meu obtjetivo é trazer algo novo pra comunidade e que possa ajudar outras pessoas. Esse lançamento pode ser inútil pra alguns mas para outros pode servidor de grande favor. Para aqueles que jogam usando Discord e tal.
  6. Amigo se eu não estou enganado, como faz um tempinho que não mexo em Otserv em Movements.xml você pode colocar level também para equipar a arma.
  7. Troque essa linha: if target == isMonster or isCreature then Por essa e veja se funciona. if target == isPlayer then
  8. Roy postou uma resposta no tópico em Suporte Tibia OTServer
    Que combine com o Site. Telara.rar
  9. Afinal qual você vai usar, o com Party ou que o DEKU pediu? Enfim mude esse: doSetItemActionId(uid, 9003) Por esse: doItemSetAttribute(uid, "aid", 9003) Se não funcionar verifique se em seu 050-function tem essa função. function doItemSetActionId(uid, aid) return doItemSetAttribute(uid, "aid", aid) end Se não tiver adicionar. e testa.
  10. Tem tudo aqui no TK amigo só usar a barra de pesquisa e você encontra o que procura, principalemte como criar um client próprio e deixar seu site Online. Sobre as configurações não é um bicho de 7 cabeças enfim, só postar aqui o erro ou, o que você deseja que o pessoal que souber vai lhe ajudar.
  11. É o seguinte ele irá castar a Spell em alguém tipo. Exiva Black Fenix E ambos terá que está em party(somente em party) e então serão teleportado para o local. O portal criado não irá funcionar mais até porque somente ambos irá poder passar pelo portal do outro lado no caso. adicionar na tag xml da spell: needtarget="1" params="1" range="1" range="1" = distância necessária para poder castar a spell. 1 = Player próximo um do outro. E irá ficar assim: <instant name="test" words="test" lvl="0" needtarget="1" params="1" range="1" maglv="0" manapercent="0" soul="0" exhaustion="1000" prem="0" enabled="1" script="test.lua"/> Spell .lua ------------------------------------------------------------------------------------------------------------------- Sim tem sim, mas você vai adicionar uma action no piso para onde o Player irá ser teleportado. Tag Movements.xml <movevent type="StepIn" actionid="9002" event="script" value="Piso-TPos.lua"/> Piso-TPos.lua ------------------------------------------------------------------------------------------------------------------- Porque só salva a posição do Jogador que usou a spell. doSavePlayerPos(cid, config.storage, getThingPos(cid)) Eu acho que tive uma solução para todos que entrarem no portal criado. Substituir esse no lugar do outro spell .lua Movements.xml adicionar essa tag. <movevent type="StepIn" actionid="9003" event="script" value="teleport2.lua"/> em Movements/scripts criar um arquivo com nome. Teleport2.lua e adicionar isso dentro. OBS: Lembrando que o tempo do teleport criado tem que ser menor que o tempo para entrar no outro Teleport assim o player(s) voltará para o local de onde o Teleport foi criado.
  12. Ter tem,mas não acho necessário é só o player castar a spell e outro jogador pode entrar
  13. Poxa cara. Tudo bem então Você vai fazer o seguinte, vai criar a Spell e colocar o script dela acima Ok. Agora você vai adicionar essas duas linhas no seu movements.xml <movevent type="StepIn" actionid="9000" event="script" value="piso.lua"/> <movevent type="StepIn" actionid="9001" event="script" value="teleport.lua"/> você pode colocar o nome que quiser o cria uma arquivo .lua com o script de cada.
  14. <movevent type="StepIn" actionid="9000" event="script" value="piso.lua"/> <movevent type="StepIn" actionid="9001" event="script" value="teleport.lua"/> No piso onde o player precisa passar para acessar o portal coloca action 9000 e no Teleport que o player irá ser teleportado 9001
  15. É o seguinte o portal será criado Ok, mas o tempo do outro portal deve ser maior senão o player irá voltar para o local onde ele foi teleportado ou seja, não o local onde o portal foi criado, a partir do momento em que o portal criado for removido ao ele usar o outro portal ele será teleportado para o Removido, Acho que deu para entender. Spell local config = {storage = 8001}--Seleciona a storage 8001 e separa entre 3, exemplo - "8001, 8002, 8003", Entao nao use nenhuma dessas 3 storages em outros scripts. local cfg = {storage = 8000, Tempo = 1*60} --1 minuto. Tempo que poderá passar no piso ao redor do Teleport. local function doSavePlayerPos(uid, storage, pos) doCreatureSetStorage(uid, storage, pos.x) doCreatureSetStorage(uid, storage+1, pos.y) doCreatureSetStorage(uid, storage+2, pos.z) end function onCastSpell(cid, var) ---------------------------------------------------------------------------------------------------------------------------------------------------------------- local TeleportID = 1387 local Teleport = { config = { ToPos = {x = 309, y = 287, z = 7}, -- Local onde o jogador será teleportado Pos = getCreaturePosition(cid), Time = 10, --Quanto tempo irá durar o Teleport }, } function removeTeleport(Teleport) local t = getTileItemById(Teleport.config.Pos, TeleportID) if t then doRemoveItem(t.uid, 1) doSendMagicEffect(Teleport.config.Pos, CONST_ME_POFF) end end doCreateTeleport(TeleportID, Teleport.config.ToPos,Teleport.config.Pos) addEvent(removeTeleport, Teleport.config.Time * 1000, Teleport) setPlayerStorageValue(cid, cfg.storage, os.time()+cfg.Tempo) doSavePlayerPos(cid, config.storage, getThingPos(cid)) ---------------------------------------------------------------------------------------------------------------------------------------------------------------- return TRUE end Movements.xml <movevent type="StepIn" actionid="9000" event="script" value="piso.lua"/> <movevent type="StepIn" actionid="9001" event="script" value="teleport.lua"/> piso.lua function onStepIn(cid, item, position, fromPosition) local config = {storage = 8000} if (getPlayerStorageValue(cid, config.storage) <= os.time()) then return true else doTeleportThing(cid, fromPosition, false) doPlayerSendCancel(cid, "Você deve aguardar " ..getPlayerStorageValue(cid, config.storage) - os.time().." para poder entrar nesse portal!") end return true end Teleport.lua function onStepIn(cid, item, position, fromPosition) local config = {storage = 8001} local function getSavedPlayerPos(uid, storage) return {x = getCreatureStorage(uid, storage), y = getCreatureStorage(uid, storage+1), z = getCreatureStorage(uid, storage+2)} end if (getPlayerStorageValue(cid, config.storage) <= os.time()) then doTeleportThing(cid, getSavedPlayerPos(cid, config.storage)) else doTeleportThing(cid, fromPosition, false) doPlayerSendCancel(cid, "Você deve aguardar " ..getPlayerStorageValue(cid, config.storage) - os.time().." para poder entrar nesse portal!") end return true end
  16. Pode ser assim? Tibia.wmv
  17. Veja ai se vai funconar de uma meneira que você queira. <?xml version="1.0" encoding="UTF-8"?> <npc name="ItemsDonor" script="data/npc/scripts/donor.lua" speed="0" floorchange="0"> <health now="100" max="100"/> <look type="129" head="78" body="88" legs="0" feet="88" addons="3"/> <parameters> <parameter key="message_greet" value="Olá |PLAYERNAME| eu sou um vendendor muito conhecido pelos belissimos itens que vendo, tenho certeza que não irá se arrepender!" /> <parameter key="message_walkaway" value="Volte Sempre."/> <parameter key="message_farewell" value="Espero sua volta!" /> </parameters> </npc> Quando ele comprar até o storage chegar em 6 ele não pdoerá comprar mais, mas ai com um pouco de conhecimento você pode aumentar e um Scriper pode melhorar de uma forma que possa diminuir o script e ficar melhor. local cfg ={ price = 100 } 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 function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid if isInArray({"donate","donor"}, msg) then if getPlayerStorageValue(cid, 2357) <= 0 then npcHandler:say('Você gostaria de comprar um {item donor} por {'..cfg.price..' gold\'s ingot\'s}', cid) talkState[talkUser] = 1 elseif getPlayerStorageValue(cid, 2357) == 1 then npcHandler:say('Você gostaria de comprar um {item donor} por {'.. cfg.price*5 ..' gold\'s ingot\'s}', cid) --*5 = 500 talkState[talkUser] = 2 elseif getPlayerStorageValue(cid, 2357) == 2 then npcHandler:say('Você gostaria de comprar um {item donor} por {'.. cfg.price*10 ..' gold\'s ingot\'s}', cid) --*10 = 1000 talkState[talkUser] = 3 elseif getPlayerStorageValue(cid, 2357) == 3 then npcHandler:say('Você gostaria de comprar um {item donor} por {'.. cfg.price*15 ..' gold\'s ingot\'s}', cid) talkState[talkUser] = 4 elseif getPlayerStorageValue(cid, 2357) == 4 then npcHandler:say('Você gostaria de comprar um {item donor} por {'.. cfg.price*20 ..' gold\'s ingot\'s}', cid) talkState[talkUser] = 5 elseif getPlayerStorageValue(cid, 2357) == 5 then npcHandler:say('Você gostaria de comprar um {item donor} por {'.. cfg.price*30 ..' gold\'s ingot\'s}', cid) talkState[talkUser] = 6 end elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if getPlayerItemCount(cid, 9971) >= cfg.price then doPlayerTakeItem(cid,9971,cfg.price) doPlayerAddItem(cid,2160,1) setPlayerStorageValue(cid,2357,1) npcHandler:say('Foi um prazer negociar com você!', cid) else npcHandler:say('Volte quando tiver os {'..cfg.price..' gold\'s ingot\'s}', cid) end elseif(msgcontains(msg, 'yes') and getPlayerStorageValue(cid,2357) == 1 and talkState[talkUser] == 2) then if getPlayerItemCount(cid, 9971) >= cfg.price*5 then doPlayerTakeItem(cid,9971,cfg.price*5) doPlayerAddItem(cid,2160,2) setPlayerStorageValue(cid,2357,2) npcHandler:say('Foi um prazer negociar com você!', cid) else npcHandler:say('Volte quando tiver os {'.. cfg.price*5 ..' gold\'s ingot\'s}', cid) end elseif(msgcontains(msg, 'yes') and getPlayerStorageValue(cid,2357) == 2 and talkState[talkUser] == 3) then if getPlayerItemCount(cid, 9971) >= cfg.price*10 then doPlayerTakeItem(cid,9971,cfg.price*10) doPlayerAddItem(cid,2160,3) setPlayerStorageValue(cid,2357,3) npcHandler:say('Foi um prazer negociar com você!', cid) else npcHandler:say('Volte quando tiver os {'.. cfg.price*10 ..' gold\'s ingot\'s}', cid) end elseif(msgcontains(msg, 'yes') and getPlayerStorageValue(cid,2357) == 3 and talkState[talkUser] == 4) then if getPlayerItemCount(cid, 9971) >= cfg.price*15 then doPlayerTakeItem(cid,9971,cfg.price*15) doPlayerAddItem(cid,2160,4) setPlayerStorageValue(cid,2357,4) npcHandler:say('Foi um prazer negociar com você!', cid) else npcHandler:say('Volte quando tiver os {'.. cfg.price*15 ..' gold\'s ingot\'s}', cid) end elseif(msgcontains(msg, 'yes') and getPlayerStorageValue(cid,2357) == 4 and talkState[talkUser] == 5) then if getPlayerItemCount(cid, 9971) >= cfg.price*20 then doPlayerTakeItem(cid,9971,cfg.price*20) doPlayerAddItem(cid,2160,5) setPlayerStorageValue(cid,2357,5) npcHandler:say('Foi um prazer negociar com você!', cid) else npcHandler:say('Volte quando tiver os {'.. cfg.price*20 ..' gold\'s ingot\'s}', cid) end elseif(msgcontains(msg, 'yes') and getPlayerStorageValue(cid,2357) == 5 and talkState[talkUser] == 6) then if getPlayerItemCount(cid, 9971) >= cfg.price*30 then doPlayerTakeItem(cid,9971,cfg.price*30) doPlayerAddItem(cid,2160,6) setPlayerStorageValue(cid,2357,6) npcHandler:say('Foi um prazer negociar com você!', cid) else npcHandler:say('Volte quando tiver os {'.. cfg.price*30 ..' gold\'s ingot\'s}', cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  18. Nada tá dano certo porque o cara já começa com um dia de Premium account então o script vai checar se é somente premium account e vai mudar o storage. Agora na hora de comprar uma PA no NPC ou item que der os dias de Premium adicione essa linha abaixo: setPlayerStorageValue(cid, 45586, 1) e mude os demais pra esse: Assim irá checar se é Premium Account e com a Storage que foi dada pelo NPC/Item que da a Premium comprada. if isPremium(cid) == TRUE and getPlayerStorageValue(cid, 45586) == 1 then Veja ai se vai funcionar.
  19. Rapais veja ai se funciona do jeito que você quer. Obs: Caso ele não transforme é só relogar. Em Items.xml altere para esse. <item id="2123" article="a" name="ring of the sky"> <attribute key="weight" value="40" /> <attribute key="slotType" value="ring" /> <attribute key="stopduration" value="1" /> <attribute key="showduration" value="1" /> <attribute key="transformEquipTo" value="2124" /> </item> <item id="2124" article="a" name="crystal ring"> <attribute key="weight" value="90" /> <attribute key="slotType" value="ring" /> <attribute key="showduration" value="1"/> <attribute key="decayTo" value="0" /> <attribute key="duration" value="21600"/> <attribute key="transformDeEquipTo" value="2123" /> </item> Em Movements.xml Altere para esse. <movevent type="Equip" itemid="2123" slot="ring" event="function" value="onEquipItem"/> <movevent type="DeEquip" itemid="2123" slot="ring" event="function" value="onDeEquipItem"/> <movevent type="Equip" itemid="2124" slot="ring" event="script" value="Anel.lua"/> <movevent type="DeEquip" itemid="2124" slot="ring" event="script" value="Anel.lua"/> Anel.lua
  20. Baixe e instale. Caso dê erro de DLL me informe. Erro_0xc000007b.rar
  21. Verifique se está funcionando da seguinte forma. 1º Quando o player Free account nunca estiver colocado PA logar Ele não irá ser teleportado e nem irá surgir mensagem. 2º Após ele comprar PA e assim a mesma acabar ele será teleportado para o templo (Ao efetuar login) 3º tem o Think que eu adicionei caso queira que funcione da mesma forma nesse caso não precisa logar ele começa uma verificação após o jogador logar e assim se repete o 1º/2º Adapte ambos eu creio que é isso que você está pedindo ao contrário disso não entendo o que você quer realmente. Em Creaturescripts.xml adicione: <event type="think" name="PremCheck" event="script" value="PremCheck.lua"/> <event type="login" name="PremLogin" event="script" value="PremLogin.lua"/> em login.lua registe. registerCreatureEvent(cid, "CheckPrem") Agora crie um arquivo com nome PremCheck.lua e adicione. Agora crie um arquivo com nome PremLogin.lua e adicione.
  22. Quando o jogador recebe premium account o storage muda para 1 certo? e quando o premium account acabar o storage é modificado para -1 e é teleportado para o templo é isso? Eu não entendi muito esse Script ai.
  23. Em actions.xml adicione. <action actionid="120;121" event="script" value="porta.lua"/> Crie um arquivo porta.lua em actions/scripts e adicione.
  24. Veja se tem essa tag no seu config.lua housePriceEachSquare = 3500 --Senão me engano o máximo é 8900

Informação Importante

Confirmação de Termo