Ir para conteúdo

PsyMcKenzie

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Curtir
    PsyMcKenzie deu reputação a 139 em CONDITION_BLEEDING erro com spell em ot 8.6   
    Já tentou alterar para CONDITION_PHYSICAL?
  2. Gostei
    Tibia 860.rar
    https://www.virustotal.com/gui/file/333e172ac49ba2028db9eb5889994509e7d2de28ebccfa428c04e86defbe15cc
  3. Gostei
    PsyMcKenzie deu reputação a So volto tarde em Spell não pega em sqm da frente   
    qual a versão do seu tfs? se for 1.x, peço desculpas mas não consigo te ajudar

    tfs 0.4 protocolo 8.6 \/

  4. Gostei
    PsyMcKenzie deu reputação a So volto tarde em Spell não pega em sqm da frente   
    tenta com o código em spoiler na resposta que você citou
  5. Gostei
    PsyMcKenzie deu reputação a So volto tarde em Spell não pega em sqm da frente   
    deixa eu entender como funciona a spell, 
    sairia 1 efeito por vez?
     
  6. Gostei
    PsyMcKenzie deu reputação a So volto tarde em Spell não pega em sqm da frente   
  7. Curtir
    PsyMcKenzie deu reputação a Cat em Level máximo de 717217 para 1000000   
    Já joguei o rozinx server, que tinha isso liberado, vc podia pegar lvl 10kk assim como hp/mp, o adm na época me informou que foi feito gambiarra pra isso funcionar com oldclient e o server tinha alguns bugs e crashs de vez enqt. Mesmo conseguindo fazer, vale ressaltar que o client old do Tibia tem um limite de caracteres para esses valores. Não digo que é impossível por que já vi fazerem, mas provavelmente vai ter que mexer com dlls e src.
     
    Com otclient provavelmente de pra fazer mais tranquilo.
     
    Apropósito:
     
     
  8. Gostei
    PsyMcKenzie recebeu reputação de Cat em Level máximo de 717217 para 1000000   
    Vou testar essa alteração para ver se da certo, o ot The Heroes of Time tem level 1000000 como level maximo e ainda usam cliente old, mas no meu caso pretendo usar o otclient.
    Obrigado amigo, vou testar e posto aqui qualquer coisa.
  9. Curtir
    PsyMcKenzie recebeu reputação de zero390 em Sistema de Pet V1.0 By PsyMcKenzie   
    Sistema de Pet V1.0
     


     
     
    E ai Galera, suave?

    Hoje venho trazer pra vocês, meu sistema de pet.
    É bem do tipo pokemon, mas tenho certeza que irão gostar.
    Vou liberá-lo porque gosto de compartilhar as coisas, e sei que alguém esta querendo
    um sistema desses. Assim como eu quis um dia e nunca encontrei um que funcionasse.
    O sistema está na versão 1.0, mas em em breve trarei um npc para healar o pet e algumas talks para o pet soltar spells.

    Vamos lá!


    Primeiramente, vá em data/action/scripts, crie um arquivo com o nome de CatchPet.lua e adicione:

     
    local mtrs = {                 ["Rat"] = {hp = 1000, maxhp = 1000, corpse = 2813, chance = 100},                 ["Rotworm"] = {hp = 1000, maxhp = 1000, corpse = 5967, chance = 100},                 ["Skeleton"] = {hp = 1000, maxhp = 1000, corpse = 5972, chance = 100},                 ["Dragon"] = {hp = 1000, maxhp = 1000, corpse = 3104, chance = 100},                 ["Dragon Lord"] = {hp = 1000, maxhp = 1000, corpse = 5984, chance = 100}, } function onUse(cid, item, frompos, item2, topos)                 for pet_name, v in pairs(mtrs) do                                 if item2.itemid == v.corpse then                                         if math.random(0,100) <= v.chance then                                                 doPlayerSendTextMessage(cid, 27, "Você capturou um ".. pet_name .. ".")                                                 doRemoveItem(item2.uid, 1)                                                 doRemoveItem(item.uid, 1)                                                 local itemcatch = doPlayerAddItem(cid, 7632, 1)                                                 doItemSetAttribute(itemcatch, "namepet", pet_name)                                                 doItemSetAttribute(itemcatch, "description", "Contém um ".. pet_name ..".")                                                 doItemSetAttribute(itemcatch, "lifepet", v.hp)                                                 doItemSetAttribute(itemcatch, "maxlifepet", v.maxhp)                                         else                                                 doPlayerSendTextMessage(cid, 27, "Falhou.")                                         end                                 end                 end                 return true end    
    Em seguida, duplique o arquivo, renomeie para VaiVolta e adicione:


    function onUse(cid, item, frompos, item2, topos)     local health = tonumber(getItemAttribute(item.uid, "lifepet"))     local mhp = tonumber(getItemAttribute(item.uid, "maxlifepet"))     if health <= 0 then         return doPlayerSendCancel(cid, "Esse pet esta morto.")     end     local pet_name = getItemAttribute(item.uid, "namepet")     if item.itemid == 7632 then         if not getTilePzInfo(getPlayerPosition(cid)) then             if #getCreatureSummons(cid) < 1 then                 doTransformItem(item.uid, 7633)                 local summon = doSummonCreature(pet_name, getThingPos(cid))                 doConvinceCreature(cid, summon)                 setCreatureMaxHealth(summon, mhp)                 doCreatureAddHealth(summon, mhp)                 doCreatureAddHealth(summon, health - mhp)                 doSendMagicEffect(getCreaturePosition(summon), 67)                 doCreatureSay(cid, "Vai, ".. pet_name .. "!", TALKTYPE_SAY)             else                 doPlayerSendCancel(cid, "Você já sumonou um Pet.")             end         else             doPlayerSendCancel(cid, "Você não pode estar em Protection Zone para sumonar seu Pet.")         end     elseif item.itemid == 7633 then local hp, maxhp = getCreatureHealth(getCreatureSummons(cid)[1]), getCreatureMaxHealth(getCreatureSummons(cid)[1])         if #getCreatureSummons(cid) >= 1 then             doSendMagicEffect(getCreaturePosition(getCreatureSummons(cid)[1]), 67)             doRemoveCreature(getCreatureSummons(cid)[1])             doTransformItem(item.uid, 7632)             doItemSetAttribute(item.uid, "lifepet", hp)             doItemSetAttribute(item.uid, "maxlifepet", maxhp)             doCreatureSay(cid, "Volta, " .. pet_name .. ".", TALKTYPE_SAY)         end     end     return true end    
    Agora em Actions.xml, adicione as tags:
     
                    <action itemid="2149" event="script" value="CatchPet.lua"/>                 <action itemid="7632;7633" event="script" value="VaiVolta.lua"/>    
     




     
    Configurando



    Nesta parte você irá editar:




    Quote
    ["Rat"] = {hp = 1000, maxhp = 1000, corpse = 2813, chance = 100}, 
    ["Rotworm"] = {hp = 1000, maxhp = 1000, corpse = 5967, chance = 100}, 
    ["Skeleton"] = {hp = 1000, maxhp = 1000, corpse = 5972, chance = 100},
    ["Dragon"] = {hp = 1000, maxhp = 1000, corpse = 3104, chance = 100},
    ["Dragon Lord"] = {hp = 1000, maxhp = 1000, corpse = 5984, chance = 100},

    NOME DO PET / HP / HP MÁXIMO / CORPSE ID ( AQUELE QUE FICA QUANDO O MONSTRO MORRE) / CHANCE DE CAPTURA DO PET.


    Esse são os id's das "pokeballs":
     
     
     

    Caso queira mudar, troque no script e na tag no actions.xml.

    Este é o item de captura:

     
                    <action itemid="2149" event="script" value="CatchPet.lua"/>    
     

     
    Bom, é isso galera, espero que gostem e que façam um bom uso do sistema!
    Aproveitem!

    Dúvidas? Sugestões? Criticas?
    Comentem!!
     
     
     
  10. Gostei
    PsyMcKenzie deu reputação a Noninhouh em [Tutorial] Ajustando andar diagonal   
    Bom, vou mostrar a vocês como editar o andar diagonal no otclient da maneira que vocês preferirem...
    Atualmente, creio que quando você anda diagonalmente, tem um delay até que você possa andar novamente. Vou ensinar tirar esse delay, e deixar a velocidade ao gosto de vocês.
     
    Em creature.cpp do server, procure pela linha:
    if(std::abs(newPos.x - oldPos.x) >= 1 && std::abs(newPos.y - oldPos.y) >= 1) lastStepCost = 3;  
    Esse lastStepCost será a velocidade que o player terá ao andar diagonalmente, em relação a velocidade de quando ele anda em uma direção reta, por exemplo, um player que demora 1 segundo para andar 1 sqm, demoraria 3 segundos para andar diagonalmente. Edite esse valor ao seu gosto!
     
    Em creature.cpp do client, procure as linhas que tem isso:
    getStepDuration(true) E deixe assim:
    getStepDuration()  
    Agora procure por:
    float factor = 3; if(g_game.getClientVersion() <= 810) factor = 2; Apague essa parte
     
    Logo mais abaixo tem:
    if(!ignoreDiagonal && (m_lastStepDirection == Otc::NorthWest || m_lastStepDirection == Otc::NorthEast || m_lastStepDirection == Otc::SouthWest || m_lastStepDirection == Otc::SouthEast)) interval *= factor; Em factor, deixe o mesmo valor que você deixou em lastStepCost no servidor.
     
    Agora em localplayer.cpp no client, novamente procure por:
    getStepDuration(true) E troque por:
    getStepDuration()  
    Pronto, seu personagem andará diagonalmente mais suave, e com a velocidade que você escolheu. 
  11. Gostei
    PsyMcKenzie recebeu reputação de poko360 em (Resolvido)como coloco pra nao usar esse item na PZ?   
    Basta usar:
    if getTilePzInfo(getCreaturePosition(cid)) then doSendMagicEffect(getPlayerPosition(cid), 2) return doCreatureSay(cid, "[Error] nao pode usar em pz", TALKTYPE_ORANGE_1) end antes de iniciar a ação.
    Esse código checa se o player está em pz, se estiver ele envia a mensagem de erro, se não estiver executa a ação.
  12. Gostei
    PsyMcKenzie deu reputação a Leohige em [TFS 1.x] Forja/Troca   
    Bom, comecei a aprender Lua hoje e como joguei Tibia a alguns anos atrás decidi desenvolver scripts pro joguinho. Este script é o meu primeiro trabalho com a linguagem, portanto está bem simples mas também funcional.
     
    A ideia do NPC é que você possa definir um ou mais itens para serem trocados/forjados por/em um item X. Você também pode por uma ou mais storages para que o player possa efetuar a troca/forja, ou se precisa ser premium account.
     
    Aqui tem um GIF demonstrando como o NPC funciona.
     
     
     
    Se você gostou e quer usar em seu servidor, a instalação é bem simples.
     
    Crie um arquivo chamado Marcus Vinicius.xml na pasta data/npc
     
     
    Crie um arquivo chamado forge.lua na pasta data/npc/scripts
     
     
    Agora vá até o arquivo data/npc/lib/npcsystem/modules.lua e antes do último end adicione o seguinte código
     
     
    Depois de tudo isso o NPC já estará funcionando 100%.
     
    Para adicionar novos itens na forja/troca é bem simples, logo nas primeiras linhas do forge.lua você encontrara a configuração do NPC.
     
    Aqui tem uma breve explicação de como configurar o NPC:
     
     
    Bom galera é isso ai, se vocês tiverem algum problema ou sugestão podem falar.
  13. Gostei
    PsyMcKenzie deu reputação a murilao em [Tutorial] Colocando senha do novo XAMPP   
    Olá pessoal do TK!  vim aqui passar um tutorial de como colocar a senha no novo XAMPP versão 5.5.37. Pois quando entra ele nao pede a senha do root.
    Eu procurei aqui no forum e não achei e então resolvi fazer uma pequena tutorial para a galera que não saiba colocar senha.
    Vamos ao que interessa ficando de bla bla bla não vai adiantar nada..
     
    1ª Passo
    Abre pagina inicial digite localhost/phpmyadmin ou localhost:8090/phpmyadmin
    Imagem:
     
    2ª Passo
    Clique no User accounts e depois em Edit privileges e depois em Alterar a palavra-passe e marque opção palavra-passe e ai você digita sua senha e executar.
    Imagem:
     
    3ª Passo
    Agora vai na pasta do seu XAMPP abre ele e depois abre a pasta phpMyAdmin e procura por config.inc.php e abre.
    E nessa configuração você muda:
    /* Authentication type and info */ $cfg['Servers'][$i]['password'] = 'suasenha'; <-- aqui você coloca sua senha que criou. $cfg['Servers'][$i]['AllowNoPassword'] = true; <---- aqui você muda para "false"  
    E pronto fim do tutorial. Espero que ajude muito por ai. VLW 
     
    Créditos: @murilao
  14. Gostei
    PsyMcKenzie deu reputação a Insaend em SPriting on Insaend   
    Boa tarde Usuários do Fórum.
     
     
    Mais um vídeo breve de Spriting.
     
     
  15. Gostei
    PsyMcKenzie recebeu reputação de martimtiburcio em (Um npc qualquer)   
    NPC1:
    <?xml version="1.0" encoding="UTF-8"?> <npc name="Npc um" script="NPC1.lua" walkinterval="2000" floorchange="0"> <health now="150" max="150"/> <look type="139" head="132" body="79" legs="97" feet="132" corpse="2212"/> <parameters> <parameter key="message_greet" value="Olá, |PLAYERNAME|. Você quer me {ajudar}? Eu posso te recompensar..."/> </parameters> </npc>  
    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(msgcontains(msg, 'ajudar')) then selfSay('Você pode me ajudar? Preciso que mate um {boss} para mim e assim eu lhe darei uma recompensa!', cid) end --------------------------------------------------------- if(msgcontains(msg, 'boss')) then if (getPlayerStorageValue(cid,15001) == -1) then selfSay('Mate o boss e eu irei te recompensar!', cid) doTeleportThing(cid,{x=160, y=54, z=7}) elseif (getPlayerStorageValue(cid,15001) == 1) then selfSay('Você já matou o boss!', cid) end return true end --------------------------------------------------------- if(msgcontains(msg, 'recompensa')) then if (getPlayerStorageValue(cid,15001) == -1) then selfSay('Você ainda não matou o boss!', cid) elseif (getPlayerStorageValue(cid,15001) == 1) then local itemr = doPlayerAddItem(cid, 4863, 1) doSetItemActionId(itemr, 10213) selfSay('Parabéns, aqui está sua recompensa!', cid) end return true end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())  
    Agora vai em creaturescripts/scripts, crie um arquivo com o nome de boss e adicione:
     
    function onKill(cid, target, lastHit) if(isMonster(cid)) and getCreatureName(cid) == "NOMEDOBOSS") then setPlayerStorageValue(lastHit, 15001, 1) doTeleportThing(lastHit,{x=POS DO NPC, y=POS DO NPC, z=POS DO NPC}) end return true end  
    Em creaturescripts.xml adicione a tag:
     
    <event type="kill" name="BossKill" event="script" value="boss.lua"/>  
    Em login.lua adicione:
     
    registerCreatureEvent(cid, "BossKill")  
     
    NPC2:
    <?xml version="1.0" encoding="UTF-8"?> <npc name="Npc dois" script="NPC2.lua" walkinterval="2000" floorchange="0"> <health now="150" max="150"/> <look type="139" head="132" body="79" legs="97" feet="132" corpse="2212"/> <parameters> <parameter key="message_greet" value="Olá, |PLAYERNAME|!"/> </parameters> </npc>  
    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 local itemRemove = 105 -- Item que irár "perder" local Outfits = { ["citizen"]={136} } function Remove(cid) if doPlayerRemoveItem(cid,itemRemove, 1) then if(getPlayerSex(cid) == 0)then doPlayerAddOutfit(cid, Outfits[param][1], 3) selfSay("Parabéns, você ganhou um novo outfit!", cid) talkState[talkUser] = 0 else doPlayerPopupFYI(cid, "Você não pode receber o outfit, pois está faltando o item!") return false end end end if getPlayerStorageValue(cid, 15001) == -1 then selfSay("Fale com o outro NPC e volte depois!!") talkState[talkUser] = 0 elseif (msgcontains(msg, 'mission')) then selfSay("Você quer receber seu outfit?") talkState[talkUser] = 1 elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if Remove(cid) then elseif msg == "no" and talkState[talkUser] >= 1 then selfSay("Bye!", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end return TRUE end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())  
     
    O NPC3 vou tentar fazer e posto aqui. Testa esses e me diz se funcionou.
  16. Gostei
    PsyMcKenzie recebeu reputação de Boush em [Ajuda] Talkaction /clean não limpa pz   
    Isso tem que alterar nas sources em map.cpp
     
    uint32_t Map::clean() { uint64_t start = OTSYS_TIME(); uint32_t count = 0, tiles = 0; if (g_game.getGameState() == GAME_STATE_NORMAL) { g_game.setGameState(GAME_STATE_MAINTAIN); } for (int32_t z = 0; z < (int32_t)MAP_MAX_LAYERS; z++) { for (uint32_t y = 1; y <= mapHeight; y++) { for (uint32_t x = 1; x <= mapWidth; x++) { Tile* tile = getTile(x, y, z); if (!tile || tile->hasFlag(TILESTATE_HOUSE) || !tile->getItemList()) { continue; } ++tiles; TileItemVector* itemList = tile->getItemList(); ItemVector::iterator it = itemList->begin(), end = itemList->end(); while (it != end) { if ((*it)->isCleanable()) { g_game.internalRemoveItem(*it, -1); it = itemList->begin(); end = itemList->end(); ++count; } else { ++it; } } } } } if (g_game.getGameState() == GAME_STATE_MAINTAIN) { g_game.setGameState(GAME_STATE_NORMAL); } std::cout << "> CLEAN: Removed " << count << " item" << (count != 1 ? "s" : "") << " from " << tiles << " tile" << (tiles != 1 ? "s" : "") << " in " << (OTSYS_TIME() - start) / (1000.) << " seconds." << std::endl; return count; }  
     
  17. Gostei
    PsyMcKenzie recebeu reputação de Sekk em [PEDIDO] PET System Diferente   
    O que to testando também, acho que até amanhã já terminei, mas não tem nada demais. Apenas o pet e o npc para revivê-lo.
    Aí as alterações são com você.
  18. Gostei
    PsyMcKenzie deu reputação a xWhiteWolf em New Library v. 1.2   
    Fala galera, hoje vim trazer pra vocês uma nova biblioteca de funções que eu venho desenvolvendo, pretendo ir atualizando esse tópico constantemente sempre adicionando funções novas e explicando a utilização delas. Algumas funções que eu coloquei aqui estão presentes na OTAL também, porém algumas eu fiz pequenas correções de forma que essa lib poderia facilmente substituir a OTAL sem grandes problemas (pelo menos se você utilizava apenas as funções básicas da otal)
    Todas as funções que não tem -- nome do autor do lado dela foram feitas por mim, xWhiteWolf ou Night Wolf (NW). O restante delas são créditos dos devidos autores, apenas coloquei pois considero funções vitais no server de cada um. Crie um arquivo em data/lib chamado 075 - White Wolf Functions.lua e coloque o seguinte código dentro:



     
    Agora eu vou explicar oque cada função faz porque de nada adianta lançar uma lib e não explicar oque ela faz não é mesmo? hahaha
    Obs inicial: quando uma função tiver em seus parametros um [] significa que oque está dentro do colchetes não é um parâmetro obrigatório.



    Como usar: doShowTimeByPos(cid, getCreaturePosition(cid), 20, 20)
    Irá fazer uma contagem regressiva na posição que o player se encontra começando de 20 e mandando a mensagem na mesma cor da fala dos monstros.
    Essa função é bem útil em actions/spells para fazer contagem de tempo em runas como a magic wall e ver quanto tempo falta pra magic wall sumir)

     
    Obs: Espero que ajude bastante pessoas a entender sobre funções, eu utilizei cid como o principal uid das funções nos exemplos mas você pode muito bem utilizar outros uids, fica a critério seu.

    Qualquer dúvida comentem abaixo que eu vou tentar ajudar da melhor maneira.
    Ahhh, isso daí foi testado em 8.54 mas deve funcionar em quase todas as versões que tenham as funções básicas do TFS. 

    EDIT: Pessoal, agora é sério, essa lib tem fácil umas 600 linhas, das quais umas 500 eu devo ter codado sozinho (na mão, linha por linha). Eu tive todo o trabalho de testar cada uma delas e oque eu peço é o mínimo de gratidão e respeito. Se eu te ajudei clique em Gostei, se você tiver alguma dúvida eu to me colocando a disposição de responder qualquer coisa relacionada ao tópico, mesmo que você não saiba nem oque é uma lib apenas venha aqui e escreva sua dúvida.

    EDIT 2: Duas novas funções adicionas, espero que gostem!

    EDIT 3: Três novas funções adicionadas juntamente com suas respectivas explicações.
  19. Gostei
    PsyMcKenzie deu reputação a will096 em GrimOT - Alpha em desenvolvimento   
    Ola, estou aqui para apresentar o GrimOT server. Servidor em AlphaTest, que traz um mapa totalmente autoral com características RPG e de exploração.
    A equipe do GrimOT se resume por enquanto em duas pessoas, das quais as mesmas são responsáveis por desenvolver mapa, monstros, spells, quests, actions, scripts em geral incluindo site e trabalhando na parte de instalação e manutenção do servidor VPS.
     
    Desenvolvimento do projeto: 20% relativos ao total final.
     
    O que já esta funcionando dentro do servidor?
     
    Uma cidade inicial. Hunts dispostas em volta da cidade. Hunts inferiores. Interações cenário e jogador. Vocações. Items. Monstros. Magias. Balanceamento de hunt e level, incluindo vocations.   Ip para conferir: grimotgame.servegame.com
    Port: 7171
    Client: 8.60
     
    Contato para interessados no projeto:
    [email protected]
  20. Gostei
    PsyMcKenzie deu reputação a WhiteBubble em Dbo Rox V2 8.60 [Open Source][99% SEM BUGS]   
    Dragon Ball
    Rox
    Servidor 100% estável com mais de 200 horas online.
    38 Vocações sendo 9 delas vip que são:
    Shenron,Vegetto,Zaiko,Kagome,Tapion,Kame
    Chilled,C8 e King Vegetta.
    Spells de fast attack (Usa uma vez sai 10 hits).
    Eventos automaticos como: Castle,Battlefield,Run event.
    Reborn level maximo 600.
    Vamos aos bugs que eu encontrei:
    * Zombie event quando o zombie pega algum player todos do evento e mandando pra fora e evento encerra.
    * Erro quando usa spell e a pessoa morre antes da spell acabar no caso das de combo.
    * Erro nos eventos Battlefield e Run event quando vai adicionar a recompensa da erro por faltar uma tabela na database que não me recordo o nome agora.
     
    Update v2
     Adicionado 7 novas vocações vips sendo elas:
    Bills,Whiss,Golden Freeza,Vegetto Blue,Zamasu,Gogeta Blue e Goku Black Evo.
    Adicionado 3 vocações free sendo elas: Zeno, Vados e Vegetto Black.
    Vocações que antes era vip no update v1 agora são free.
    Fazer reborn não precisa mais fazer quest das esferas do dragão.
     Adicionado cassino que se ganha small diamonds que se troca por:
    Divine Stone(Usado para upgrade), Black Stone (Item para virar Vegetto Black) e Leviathan Amulet.
    Adicionado npc que vende Anti Loss Ring Protege 10% contra todos danos e funciona como a band of loss porem infinita. Ele fica no Yama.
    Adicionado sistema de pontuação por hora online, cada 1 hora online = 1 ponto que se pode trocar por itens no npc Points Trader no Yama.
    Adicionado sistema Anti-MC, podendo logar somente 2 contas por ip.
    Adicionado 3 bosses espalhados pelo mapa (Earth).
    Adicionado sistema de forja podendo criar o melhor set, armas free e o item para virar Zeno.
     Adicionado sistema de upgrade fazendo seu item ficar mais forte.
     Adicionado transformação ultra god para todas as vocações, sendo pega no templo de reset ao lado do esquerdo do templo. Necessário ter level 800 e possuir 100 God Essences que dropam do Ultra God Bills em God Island.Para entrar no templo de reset é necessário possuir 1 reset, para dar reset necessita ter level 800 e digitar o comando "!reset", você voltara para o level 100 com o hp/mp de um player level 100 mas ganhara acesso a área de reset que tem o npc de ultra god e a área de forja.
    Nova moeda acima de Gold sendo ela Blue God equivalente a 100 Gold Bars.
     Area de evento pvp e dice/bag adicionada no Yama.
     Area vip adicionada.
     Adicionado 2 sets novos free, 2 armas free, 2 shields free, senzu free (God Senzu), Senzu vip (Mystic Senzu), Vados staff free, Whiss staff vip.
     Vocações que antes era vip na v1 se pega na capsule ao lado direito do templo.
     Algumas modificações no mapa, hunts, quest.
    Por enquanto é só isso que estou lembrando,conforme eu lembro edito o tópico.
     
    Gostou ? Clique em Gostei logo abaixo.
     
    Para consertar o erro da loteria só executar essa query na sua database:
    CREATE TABLE `lottery` ( `id` int(11) NOT NULL auto_increment, `name` varchar(255) NOT NULL, `item` varchar(255) NOT NULL, `world_id` tinyint(2) unsigned NOT NULL default '0', `item_name` varchar(255) NOT NULL, `date` varchar(256) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;  
     
     
     Downloads
     
    Server (Distro para windows e linux já compilada)      Scan
    Cliente    Scan
    Sources     Scan
    Site (Modern Acc)    Scan
    Database     Scan
     
     
     
     
    Creditos server: Kramer, WhiteBubble
    Creditos site: @Hastafaru e a WhiteBubble por adaptar ao server
    Creditos source: Fir3element e WhiteBubble por aumentar limite de efeitos e por skill fist skill para aumentar attack speed.
     
  21. Gostei
    PsyMcKenzie deu reputação a luangop em Problema com item que da vip e promotion   
    action
    function onUse(cid, item, fromPosition, itemEx, toPosition) local config={ removeOnUse = "yes" -- remover quando usar ("yes" or "no") } local days = 30 -- dias que serão adicionados local daysvalue = days * 24 * 60 * 60 local storageplayer = getPlayerStorageValue(cid, 29000) local timenow = os.time() if getPlayerStorageValue(cid, 29000) - os.time() <= 0 then time = timenow + daysvalue else time = storageplayer + daysvalue end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.") setPlayerStorageValue(cid, 29000, time) local quantity = math.floor((getPlayerStorageValue(cid, 29000) - timenow)/(24 * 60 * 60)) doSendMagicEffect(getPlayerPosition(cid), math.random(28,30)) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. quantity .." dias de VIP restantes.") if (config.removeOnUse == "yes") then doRemoveItem(item.uid, 1) db.executeQuery("UPDATE `players` SET `name` = '[VIP] "..getCreatureName(cid).."' WHERE `id` = "..getPlayerGUID(cid)..";") doPlayerSendTextMessage(cid,25,"Você será kickado em 5 segundos para mudança de nome.") doPlayerAddAddons(cid, 1) local voc = getPlayerVocation(cid) if voc <= 4 then newvoc = voc + 8 elseif voc > 4 and voc <= 8 then newvoc = voc + 4 end doPlayerSetVocation(cid, newvoc) addEvent(doRemoveCreature, 5*1000, cid, true) end return TRUE end Creaturescript
    function onLogin(cid) local temple = { x =156, y = 112, z = 7} if vip.hasVip(cid) == true then if getPlayerStorageValue(cid,29000) ~= 1 then setPlayerStorageValue(cid,29000,1) end else if getPlayerStorageValue(cid,29000) == 1 then doTeleportThing(cid, temple) doPlayerSendTextMessage(cid, 22, "Sua vip acabou!") local voc = getPlayerVocation(cid) if voc > 8 and voc < 13 then newvoc = voc - 4 doPlayerSetVocation(cid, newvoc) end db.executeQuery("UPDATE `accounts` SET `vip_time` = 0 WHERE `id` = ".. getAccountIdByName(getPlayerName(cid)) ..";") setPlayerPromotionLevel(cid, 1) setPlayerStorageValue(cid, 29000, 0) end end return true end function onLogin(cid) local name = string.gsub(""..getCreatureName(cid).."", ".VIP. ", "") if getPlayerStorageValue(cid, 29000) <= 0 then if getCreatureName(cid) ~= name then db.executeQuery("UPDATE `players` SET `name` = '"..name.."' WHERE `id` = "..getPlayerGUID(cid)..";") addEvent(doRemoveCreature, 2*1000, cid, true) end end return true end  
  22. Gostei
    Olá a todos, criei um OTServ a um tempo atrás e não deu muito certo então resolvi deixar disponível para vocês baixarem.
     
    O que editei: - Implementação da Aura System - Boss Event diário 100% automático. - Magias novas (!spells) - Quests inéditas - Eventos funcionais - Implementado um sistema de reset 100% funcional - Áreas Donate, Supreme, Ultimate, Super UP (cave exclusiva) e Reset City. - Sistema de compra de itens no templo. - Dodge e Critical System - Refinamento System - E muito mais...  
    Algumas imagens:
     
     
    Curtiu? dá um REP+ aí
     
    Download: clique aqui
    Scan: clique aqui
    Site: clique aqui
     
    O servidor vêm preparado para ser utilizado com MySQL.
    Em breve colocarei o site que usei para download aqui.
     
    Use a database que vêm junto com o arquivo.
     
     
    Créditos:
    75% Baiak Fusion
    25% Movie
  23. Gostei
    PsyMcKenzie deu reputação a Orochi Elf em Perfect Fly System - OrochiElf   
    Perfect Fly System
    autor: Tony Araújo (OrochiElf)
     
    Olá pessoal, hoje eu vim mostrar a vocês meu novo sistema de voo. Ele utiliza a técnica de simulação de pisos andáveis e invisíveis apenas no client, ou seja, sem a necessidade de criar e destruir vários pisos o que acarreta bastante consumo de memória do servidor em dois pontos, no mapa (por inserir novos pisos) e na execução do servidor.
     
    Bom, o sistema conta com várias funções super interessantes, tais como: Auto Walk (Ao clicar no mapa, o jogador vai até o local indicado), Follow (É possível utilizar o follow sem problemas no fly) e o melhor de todos na minha opinião No Walk Delay (Não existe delay nenhum na caminhada do jogador em qualquer lugar do mapa que ele esteja indo de fly)
     
    Quaisquer dúvidas sobre o sistema, só perguntar
     
    Um vídeo sobre o sistema. Espero que gostem:
  24. Gostei
    PsyMcKenzie deu reputação a luangop em Problema com item que da vip e promotion   
    Seu script de addvip está botando uma storage diferente.
    Isso irá corrigir:
     
    function onUse(cid, item, fromPosition, itemEx, toPosition) local config={ removeOnUse = "yes" -- remover quando usar ("yes" or "no") } local days = 30 -- dias que serão adicionados local daysvalue = days * 24 * 60 * 60 local storageplayer = getPlayerStorageValue(cid, 29000) local timenow = os.time() if getPlayerStorageValue(cid, 29000) - os.time() <= 0 then time = timenow + daysvalue else time = storageplayer + daysvalue end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.") setPlayerStorageValue(cid, 29000, time) local quantity = math.floor((getPlayerStorageValue(cid, 29000) - timenow)/(24 * 60 * 60)) doSendMagicEffect(getPlayerPosition(cid), math.random(28,30)) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. quantity .." dias de VIP restantes.") if (config.removeOnUse == "yes") then doRemoveItem(item.uid, 1) db.executeQuery("UPDATE `players` SET `name` = '[VIP] "..getCreatureName(cid).."' WHERE `id` = "..getPlayerGUID(cid)..";") doPlayerSendTextMessage(cid,25,"Você será kickado em 5 segundos para mudança de nome.") doPlayerAddAddons(cid, 1) addEvent(doRemoveCreature, 5*1000, cid, true) end return TRUE end Sobre a promotion, vc já tem ela configurada no vocations.xml?
    Se tiver, poste o ID das vocations que eu faço pra vc.
  25. Gostei
    PsyMcKenzie recebeu reputação de wilkerankaro em Vps. Tibia 8.6   
    Também to com essa dúvida, vou abrir um server 8.50, mas quero atingir 60, 80 até 100 players.

Informação Importante

Confirmação de Termo