Ir para conteúdo

GiovaniRodrigo

Membro
  • Registro em

  • Última visita

Tudo que GiovaniRodrigo postou

  1. GiovaniRodrigo postou uma resposta no tópico em Suporte Tibia OTServer
    Para perder tudo ao morrer, deslogar, etc... é só ir no banco de dados e na tabela players e colocar save 0. Toda vez que ele deslogar ou morrer ele não é salvo e volta tudo do zero. E na estrutura da tabela player deixa o default de save como 0, assim todo player novo estará com save 0 e você não irá precisar mudar toda vez. Avise me se der certo. Att. Giovani Rodrigo
  2. O fechamento do executável pode não ser causado pelos Unique ID duplicados, pois tenho um OT de teste que ele era map global, quando eu abri ele com map global tinha muito Unique ID duplicado e não fechava. Para retirar os Unique ID duplicados pode dar um trabalho, pois os Unique ID são usados em quest, missões, etc. Então se você apenas retirasse eles faltaria algo no seu OT, você deveria marcar os Unique ID e mudar na pasta do OT e no mapa. Daria um pouco de trabalho, mas é possivel retirar todos Unique ID. Att. Giovani Rodrigo
  3. Reportado Dúvida Sanada Att. Giovani Rodrigo
  4. GiovaniRodrigo postou uma resposta no tópico em Suporte Tibia OTServer
    Ele quer criar um site e não abrir um. Os programas essenciais são: Dreamweaver: Neste programa você cria os códigos de programação do seu site. Photoshop: Neste programa você pode criar as imagens usadas no site, como planos de fundo, botões, etc. Tudo que envolver uma imagem trabalhada pode ser feito nele. Fireworks: Neste programa você cria um template do site para ter uma base de como vai ser o site, é mais ou menos um rascunho. Nele você pode posicionar os menus e tudo que um site tem. (OBS: Você pode criar imagens tanto no Photoshop quanto no Fireworks.) Eu sigo uma sequência: Primeiro: Crio um rascunho em uma folha da papel. Segundo: Começo a trabalhar as imagens usando Photoshop. Terceiro: Com as imagens e botões já feitos começo a posicioná-los no Fireworks, para ter uma noção de como o site irá ficar depois de pronto. Quarto: Monto o site em códigos pelo Dreamweaver. Se você quiser implementar algo no seu site pode usar o Flash também. Aconselho as versões CS5 ou CS6 dos programas. Lembrando que, montar um site não é tão simples assim, na verdade não é nada simples se você quer montar algo de qualidade, fica mais difícil ainda se você for interagir com banco de dados e servidor de tibia, pois exige uma segurança muito boa. Att. Giovani Rodrigo
  5. Script atualizado e 100% funcional.
  6. Mande o script do VIP que você está usando neste momento. Att. Giovani Rodrigo
  7. Ata sou meio desligado, não presto muito atenção no que leio, acho que é por isso que meus scripts a maioria das vezes da erro, mas tudo bem. Att. Giovani Rodrigo
  8. Sim, é creaturescripts. Ai esta a tag dele, caso precisar <event type="advance" name="AdvanceSave" event="script" value="advancesave.lua"/> Att. Giovani Rodrigo
  9. Action do item Crie um arquivo chamado itemexp.lua na pasta data/actions/scripts/other e cole isso local expReward = 100000 function onUse(cid, item, frompos, item2, topos) if item.actionid == 4056 then doRemoveItem(item.uid, 1) doPlayerAddExp(cid, expReward) doPlayerSendTextMessage(cid, 22, 'You just won '.. expReward ..' experience.') end return TRUE end Adicione no arquivo actions.xml que esta na pasta data/actions a seguinte linha <action actionid="4056" event="script" value="other/itemexp.lua"/> Action do baú Crie um arquivo chamado questexp.lua na pasta data/actions/scripts/quests e cole isso local count = 1 function onUse(cid, item, frompos, item2, topos) if item.uid == 42726 then queststatus = getPlayerStorageValue(cid, 43502) if queststatus == -1 or queststatus == 0 then if getPlayerLevel(cid) >= 10 then local item = doPlayerAddItem(cid, 7726, count) doSetItemActionId(item, 4056) setPlayerStorageValue(cid, 43502, 1) doPlayerSendTextMessage(cid, 22, 'You just won '.. count ..' '.. getItemNameById(7726) ..'.') else doPlayerSendTextMessage(cid, 22, 'You don\'t have enough level.') end else doPlayerSendTextMessage(cid, 22, 'It\'s empty.') end end return TRUE end Adicione no arquivo actions.xml que esta na pasta data/actions a seguinte linha <action uniqueid="42726" script="quests/questexp.lua" /> Testado e está 100% funcional Dúvidas? Me avise. Att. Giovani Rodrigo
  10. Em meu servidor de testes esse funciona perfeitamente. local config = { savePlayer = true, healPlayerOnLevel = true } function onAdvance(cid, skill, oldLevel, newLevel) if(skill == SKILL__EXPERIENCE) then return true end if(skill == SKILL__LEVEL and config.healPlayerOnLevel) then doCreatureAddHealth(cid, getCreatureMaxHealth(cid) - getCreatureHealth(cid)) doCreatureAddMana(cid, getCreatureMaxMana(cid) - getCreatureMana(cid)) end if(config.savePlayer) then doPlayerSave(cid, true) end return true end Att. Giovani Rodrigo
  11. Quest que de level eu não saberia fazer, mas quest que de exp eu consigo. Crie um arquivo chamado questexp.lua na pasta data/actions/scripts/quests e cole isso dentro local expReward = 100000 function onUse(cid, item, frompos, item2, topos) if item.uid == 41726 then queststatus = getPlayerStorageValue(cid, 32502) if queststatus == -1 or queststatus == 0 then if getPlayerLevel(cid) >= 10 then doPlayerAddExp(cid, expReward) setPlayerStorageValue(cid, 32502, 1) doPlayerSendTextMessage(cid, 22, 'You just won '.. expReward ..' experience.') else doPlayerSendTextMessage(cid, 22, 'You don\'t have enough level.') end else doPlayerSendTextMessage(cid, 22, 'It\'s empty.') end end return TRUE end Configurando Adicione no arquivo actions.xml que esta na pasta data/actions a seguinte linha <action uniqueid="41726" script="quests/questexp.lua"/> Acho quest que da experiência melhor que dar level porque imagine a seguinte situação: Em um servidor de Rate Experience baixa um level 200 está se matando de upa, quando do nada ele faz uma quest e ganha 7 leveis? E um level 10 que upa fácil faz a mesma quest e ganha apenas 7 level. Quest por experiência é melhor porque ele estando level 200 ou level 10 a quantidade de experiência será a mesma. Testado e está 100% funcional Dúvidas? Me avise. Att. Giovani Rodrigo
  12. Sobre liberar a 7272 eu nunca liberei e nunca precisou, sobre o IP nunca ouvi falar sobre isso, sei que se ela é roteada é compartilhada. Mesmo apenas um computador estando ligado nela continua sendo compartilhada.
  13. Você usa roteador? Se sim a sua internet mesmo não tendo outro PC para compartilhar continua sendo compartilhada. Se você usa roteador tente colocar no config.lua o IPv4 que você pode encontrar no CMD. (OBS: Os player entraram pelo IP do site meuip.com.br ou pelo IP fixo que você criou) Att. Giovani Rodrigo
  14. Obrigado pelo elogio, sou muito novo na área de script, faz um mês que comecei a estudar isso. Obrigado pela dica. Essa técnica se aplica em qualquer script que for usar varios Unique ID? Att. Giovani Rodrigo
  15. Tinha esquecido algumas coisas no código então editei ele.
  16. Estou sem OT para testar, modifiquei outra coisa que estava faltando, copie e tente de novo. Poste o resultado.
  17. Olhe no console do OT e veja se está dando algum erro, se estiver dando erro poste aqui. @EDIT Já achei o erro e editei o primeiro post meu, copie novamente o código e teste.
  18. Crie um arquivo chamado bankpoints.lua na pasta data/npc/scripts e cole isso dentro function getPlayerPoints(id) local query = db.getResult('SELECT premium_points FROM accounts WHERE id = '.. id ..';') if query:getID() ~= -1 then return query:getDataInt('premium_points') end return LUA_ERROR end 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 itemCount = 0 local itemToken = 102 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, 'balance') then npcHandler:say('You have '.. getPlayerPoints(getPlayerGUID(cid) ..' points.', cid) talkState[talkUser] = 0 elseif msgcontains(msg, 'deposit') then npcHandler:say('How many points do you want to deposit?', cid) talkState[talkUser] = 1 elseif talkState[talkUser] == 1 then if not tonumber(msg) or tonumber(msg) < 1 then npcHandler:say('Please tell me how many points you want to deposit?', cid) end itemCount = math.abs(tonumber(msg)) npcHandler:say('You want to deposit '.. itemCount ..' points?', cid) talkState[talkUser] = 2 elseif msgcontains(msg, 'yes') and talkState[talkUser] == 2 then if getPlayerItemCount(cid, itemToken) >= itemCount then local query = db.executeQuery('UPDATE accounts SET premium_points = premium_points + '.. itemCount ..' WHERE id '.. getPlayerGUID(cid) ..';') if query ~= LUA_ERROR then npcHandler:say('You deposited '.. itemCount ..' points.', cid) doPlayerRemoveItem(cid, itemTokens, itemCount) talkState[talkUser] = 0 else npcHandler:say('Points can not be deposited, please contact a gamemaster.', cid) error('[Error::Query] '.. query ..', error while trying to add a value into balance.') talkState[talkUser] = 0 end else npcHandler:say('Sorry, you don\'t have the required items', cid) talkState[talkUser] = 0 end elseif msgcontains(msg, 'withdraw') then npcHandler:say('How many points do you want to withdraw?', cid) talkState[talkUser] = 3 elseif talkState[talkUser] == 3 then if not tonumber(msg) or tonumber(msg) < 1 then npcHandler:say('Please tell me, how many points you want to withdraw?', cid) end itemCount = math.abs(tonumber(msg)) npcHandler:say('You want to cash out '.. itemCount ..' points?', cid) talkState[talkUser] = 4 elseif msgcontains(msg, 'yes') and talkState[talkUser] == 4 then if getPlayerPoints(getPlayerGUID(cid)) >= itemCount then local query = db.executeQuery('UPDATE accounts SET premium_points = (premium_points - '.. itemCount ..') WHERE id = '.. getPlayerGUID(cid) ..';') if query then npcHandler:say('You drew '.. itemCount ..' points.', cid) doPlayerAddItem(cid, itemToken, itemCount) talkState[talkUser] = 0 else npcHandler:say('Money can not be retired, please contact a gamemaster.', cid) error('[Error::Query] '.. query ..', error while trying to remove a value from balance.') talkState[talkUser] = 0 end else npcHandler:say('Sorry, you don\'t have that amount for withdraw.', cid) talkState[talkUser] = 0 end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Configurando Crie um arquivo chamado Bank Points.xml na pasta data/npc e cole isso dentro <?xml version="1.0" encoding="UTF-8"?> <npc name="Jhon" script="data/npc/scripts/bankpoints.lua" walkinterval="0" floorchange="0"> <health now="150" max="150" /> <look type="129" head="114" body="119" legs="114" feet="114" corpse="2212" /> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|. If you want to see your account balance, say {balance}." /> <parameter key="message_walkaway" value="Hey Hey, where you go ?"/> <parameter key="message_farewell" value="Goodbye |PLAYERNAME|!"/> </parameter> </npc> Não testei, caso der erro avise. Dúvidas? Me avise. @EDIT Créditos Eu -- Edição do Script feito pelo SkyDangerous -- Skydangerous -- Script -- Att. Giovani Rodrigo
  19. Obrigado, fico feliz em ajudar o pessoal daqui do fórum. Att. Giovani Rodrigo
  20. Você coloca a senha criptografada(letras e números) no password. A primeira senha que é a account name você deixa normal porque ela não é criptografada, já a password(segunda senha) ela tem que ser criptografada.
  21. Não é necessário fazer nada na porta e sim nas alavancas. Crie um arquivo chamado changevoc.lua na pasta data/actions/scripts e cole isso dentro function onUse(cid, item, frompos, item2, topos) if item.uid == 30000 then doPlayerSetVocation(cid, 1) doSendMagicEffect(topos, 14) doPlayerSendMessage(cid, 22, 'You changed his vocation to sorcerer.') doRemoveCreature(cid) end if item.uid == 30001 then doPlayerSetVocation(cid, 2) doSendMagicEffect(topos, 14) doPlayerSendMessage(cid, 22, 'You changed his vocation to druid.') doRemoveCreature(cid) end if item.uid == 30002 then doPlayerSetVocation(cid, 3) doSendMagicEffect(topos, 14) doPlayerSendMessage(cid, 22, 'You changed his vocation to paladin.') doRemoveCreature(cid) end if item.uid == 30003 then doPlayerSetVocation(cid, 4) doSendMagicEffect(topos, 14) doPlayerSendMessage(cid, 22, 'You changed his vocation to knight.') doRemoveCreature(cid) end end Adicione a seguinte lina no arquivo actions.xml na pasta data/actions <action uniqueid="30000" event="script" value="changevoc.lua" /> <action uniqueid="30001" event="script" value="changevoc.lua" /> <action uniqueid="30002" event="script" value="changevoc.lua" /> <action uniqueid="30003" event="script" value="changevoc.lua" />
  22. O site usa encriptação sha1, então você tem que encriptar a senha e colocar manualmente no banco de dados. Site para encriptar a senha. Att. Giovani Rodrigo
  23. Vamos começar pelo NPC. Crie um arquivo chamado npcquest.lua na pasta data/npc/scripts e cole isso dentro Crie um arquivo chamado Npc Quest.xml na pasta data/npc e cole isso dentro <?xml version="1.0" encoding="UTF-8"?> <npc name="Nome Npc" script="data/npc/scripts/npcquest.lua" walkinterval="25" floorchange="0" access="5" level="1" maglevel="1"> <health now="150" max="150"/> <look type="128" head="97" body="100" legs="115" feet="114" corpse="2212"/> <parameters> <parameter key="message_greet" value="Hello, |PLAYERNAME|! Would like to do a {mission} for me?"/> <parameter key="message_walkaway" value="Hey Hey, where you go?"/> <parameter key="message_farewell" value="Goodbye |PLAYERNAME|."/> </parameters> </npc> Configurando Agora vamos para a porta Actions Crie um arquivo chamado storagedoor.lua na pasta data/action/scripts e cole isso dentro function onUse(cid, item, frompos, item2, topos) if getPlayerStorageValue(cid, 30003) >= 1 then doTransformItem(item.uid,item.itemid+1) doTeleportThing(cid, topos) else doPlayerSendTextMessage(cid, 22, 'You don\'t have access to area.') end end Adicione a seguinte linha no arquivo actions.xml que esta na pasta data/actions <action actionid="4587" event="script" value="storagedoor.lua" /> Movements Crie um arquivo chamado storagedoor.lua na pasta data/movements/scripts e cole isso function onStepOut(cid, item, position, fromposition) doTransformItem(item.uid,item.itemid-1) end Adicione a seguinte linha no arquivo movements.xml que esta na pasta data/movements <movements type="StepOut" actionid="4587" event="script" value="storagedoor.lua" /> MapEditor No MapEditor coloque a porta com o Action ID 4587 Não testei caso der erro avise. Dúvidas? Me avise. @EDIT Editei o script do NPC pois tinha esquecido de algo. (OBS: Use portas que ela fechada seja um ID antes da aberta, ex: Fechada: 5112 e Aberta: 5113) Att. Giovani Rodrigo
  24. GiovaniRodrigo postou uma resposta no tópico em Suporte Tibia OTServer
    Muito obrigado, fico feliz em ajudar os usuários. Att. Giovani Rodrigo
  25. GiovaniRodrigo postou uma resposta no tópico em Suporte Tibia OTServer
    Crie um arquivo chamado tileitem.lua na pasta data/movements/scripts e cole isso dentro local slotItem = 2 local itemId = 5785 function onStepIn(cid, item, fromPosition, item2, topos) if getPlayerSlotItem(cid, slotItem).itemid == itemId then doPlayerSendMessage(cid, 22, 'Welcome') else doTeleportThing(cid, fromPosition) doPlayerSendMessage(cid, 22, 'You need a '.. getItemNameById(itemId) ..' to pass') end end Configurando Adicione no arquivo movements.xml que está na pasta data/movements a seguinte linha <movevent type="StepIn" actionid="5785" event="script" value="tileitem.lua"/> No piso que você quer que exige o item coloque o Action ID 5785 Não testei então se der algum erro avise. Dúvidas? Me Avise Att. Giovani Rodrigo

Informação Importante

Confirmação de Termo