Ir para conteúdo

Hadggar

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Hadggar recebeu reputação de L3K0T em Harry Potter Sprites - FREE   
    Bom primeiramente por que estou postando?, bom obvio é que tenho direitos autorais sobre elas, e hoje permito que vocês a usem, ou seja é free for use, eu paguei 500 reais, nessas sprites, e bom tive muitos problemas com o spriter, @geraldoo.maranhao, e bom primeiramente antes disso, eu estava desenvolvendo um projeto também baseado em harry potter, e nem sabia da existencia do projeto dele, e bom ele me acusou de ter ripado as sprites dele, por eu ter conseguido em uma pagina umas das sprites q o mesmo tinha copiado, e nem eu sabia que ele usava, então o mesmo me acusou de plagio e etc, depois com o tempo comprei as sprites dele, e ele sempre prestando um atendimento horrível, me tratando super mal, e me acusando de plagio etc, o próprio tinha postado no otland, e super acusaram ele de plagio, ou seja né, bem surreal, mas bem queria deixar meu feedback até mesmo sobre o profissional que ele é, e dizer que não recomendaria, pela pessoa meia perturbada, e pela falta de profissionalismo que ele possui, seja no atendimento ou entrega. 
     
    um pouco do que possui no pacote:

     
    Resolvi postar, por ter desistido totalmente do projeto, e esta trabalhando em um totalmente distinto do antigo, focado na plataforma mobile, e bom espero que possa ser útil para alguém, já que meus 500 reais não voltam mais, e também estou postando, por que o mesmo estava me vendendo o pacote por 1.000, eu comprei 500 reais, e ele agora esta vendendo por 500 tudo, até  as que eu comprei, antes de eu confirmar a comprar com o mesmo, ele jurou que iria apagar e não iria revender, mais um motivo de indignação.
     
    Download - Mediafire (link quebrado)
     
    Download - Tibia King
     
    Scan - VirusTotal
     
     
  2. Gostei
    Hadggar recebeu reputação de b3499063 em [NPC Guard] Ataca Skulls e Monsters, Invasores   
    Opa Galera, hoje vou trazer para vocês um NPC que ataca players pk é monstros invasores, analizem no forum e não achei nem um funcionando , testei em 8.54 é 8.60 e funcionou perfeitamente então vamos la.
     
    Primeiramente vá em /data/npc/script/ é crie um arquivo chamado defender.lua é lá dentro adicione :
    local level = 10  ----- change this to make the npc hit more/less---------------------|damage_min = (level * 2 + maglevel * 3) * min_multiplier |   local maglevel = 10  ----- change this to make the npc hit more/less -----------------|damage_max = (level * 2 + maglevel * 3) * max_multiplier |   local min_multiplier = 2.1  ----- change this to make the npc hit more/less ----------|damage_formula = math.random(damage_min,damage_max)      |   local max_multiplier = 4.2  ----- change this to make the npc hit more/less ---------------------------------------------------------------------   local check_interval = 5  ----- change this to the time between checks for a creature (the less time the more it will probably lag :S)     local radiusx = 7  ----- change this to the amount of squares left/right the NPC checks (default 7 so he checks 7 squares left of him and 7 squares right (the hole screen)     local radiusy = 5  ----- change this to the amount of squares left/right the NPC checks (default 5 so he checks 5 squares up of him and 5 squares down (the hole screen)     local Attack_message = "An Invader, ATTACK!!!"  ----- change this to what the NPC says when he sees a monster(s)     local town_name = "Archgard"  ----- the name of the town the NPC says when you say "hi"    local Attack_monsters = TRUE  ----- set to TRUE for the npc to attack monsters in his area or FALSE if he doesnt    local Attack_swearers = TRUE  ----- set to TRUE for the npc to attack players that swear near him or FALSE if he doesnt    local Attack_pkers = TRUE  ----- set to TRUE for the npc to attack players with white and red skulls or FALSE if he doesnt    local health_left = 10  ----- set to the amount of health the npc will leave a player with if they swear at him (ie at 10 he will hit the player to 10 health left)    local swear_message = "Take this!!!"  ----- change this to what you want the NPC to say when he attackes a swearer    local swear_words = {"shit", "fuck", "dick", "cunt"}  ----- if "Attack_swearers" is set to TRUE then the NPC will attack anyone who says a word in here. Remember to put "" around each word and seperate each word with a comma (,)    local hit_effect = CONST_ME_MORTAREA  ----- set this to the magic effect the creature will be hit with, see global.lua for more effects   local shoot_effect = CONST_ANI_SUDDENDEATH  ----- set this to the magic effect that will be shot at the creature, see global.lua for more effects   local damage_colour = TEXTCOLOR_RED  ----- set this to the colour of the text that shows the damage when the creature gets hit   ------------------end of config------------------    local check_clock = os.clock()  ----- leave this    local focus = 0  ----- leave this        function msgcontains(txt, str)      return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))     end        function onCreatureSay(cid, type, msg)     msg = string.lower(msg)    health = getCreatureHealth(cid) - health_left       if ((string.find(msg, '(%a*)hi(%a*)'))) and getDistanceToCreature(cid) < 4 then            selfSay('Hello ' .. creatureGetName(cid) .. '! I am a defender of '..town_name..'.')            doNpcSetCreatureFocus(cid)            focus = 0       end          if msgcontains(msg, 'time') then          selfSay('The time is ' .. getWorldTime() .. '.')      end         if messageIsInArray(swear_words, msg) then           if Attack_swearers == TRUE then               selfSay('' .. swear_message ..' ')                doCreatureAddHealth(cid,-health)               doSendMagicEffect(getThingPos(cid),17)                doSendAnimatedText(getThingPos(cid),health,180)               doNpcSetCreatureFocus(cid)                focus = 0            end       end    end        function getMonstersfromArea(pos, radiusx, radiusy, stack)    local monsters = { }     local starting = {x = (pos.x - radiusx), y = (pos.y - radiusy), z = pos.z, stackpos = stack}     local ending = {x = (pos.x + radiusx), y = (pos.y + radiusy), z = pos.z, stackpos = stack}     local checking = {x = starting.x, y = starting.y, z = starting.z, stackpos = starting.stackpos}        repeat            creature = getThingfromPos(checking)                if creature.itemid > 0 then                    if isCreature(creature.uid) == TRUE then                       if isPlayer(creature.uid) == FALSE then                          if Attack_monsters == TRUE then                                                          table.insert (monsters, creature.uid)                                check_clock = os.clock()                                                   end                      elseif isPlayer(creature.uid) == TRUE then                            if Attack_pkers == TRUE then                               if getPlayerSkullType(creature.uid) > 0 then                                   table.insert (monsters, creature.uid)                                    check_clock = os.clock()                                    end                           end                       end                    end                end            if checking.x == pos.x-1 and checking.y == pos.y then                checking.x = checking.x+2            else                 checking.x = checking.x+1            end            if checking.x > ending.x then                checking.x = starting.x                checking.y = checking.y+1            end        until checking.y > ending.y            return monsters     end        function onThink()     if (Attack_monsters == TRUE and Attack_pkers == TRUE) or (Attack_monsters == TRUE and Attack_pkers == FALSE) or (Attack_monsters == FALSE and Attack_pkers == TRUE) then       if (os.clock() - check_clock) > check_interval then                monster_table = getMonstersfromArea(getCreaturePosition(getNpcCid(  )), radiusx, radiusy, 253)                if #monster_table >= 1 then                   selfSay('' .. Attack_message ..' ')                        for i = 1, #monster_table do                            doNpcSetCreatureFocus(monster_table[i])                            local damage_min = (level * 2 + maglevel * 3) * min_multiplier                            local damage_max = (level * 2 + maglevel * 3) * max_multiplier                            local damage_formula = math.random(damage_min,damage_max)                          doSendDistanceShoot(getCreaturePosition(getNpcCid(  )), getThingPos(monster_table[i]), shoot_effect)                          doSendMagicEffect(getThingPos(monster_table[i]),hit_effect)                            doSendAnimatedText(getThingPos(monster_table[i]),damage_formula,damage_colour)                            doCreatureAddHealth(monster_table[i],-damage_formula)                            check_clock = os.clock()                            focus = 0                        end                elseif table.getn(monster_table) < 1 then                    focus = 0                    check_clock = os.clock()                end          end    end       focus = 0    end Depois vá em /data/npc/ é la crie um arquivo defender.xml é lá adicione:
    <?xml version="1.0"?>      <npc name="Defender" script="defender.lua" access="5" lookdir="2" autowalk="25">    <mana now="800" max="800"/>    <health now="200" max="200"/>    <look type="131" head="116" body="94" legs="78" feet="115" addons="3"/>   </npc> local level = 10 -- Quanto o NPC irar tirar. local maglevel = 10 -- Quanto o NPC Irar tirar. local min_multiplier = 2.1 -- Quanto o NPC Irar tirar. local max_multiplier = 4.2 -- Quanto o NPC Irar tirar. local Attack_message = "An Invader, ATTACK!!!" -- A mensagem queo NPC irar falar quanto detectar um invasor. Creditos: Knekarn Eu (Por Postar aki no forum)
  3. Gostei
    Hadggar recebeu reputação de ernaix69 em [TalkAction] Sistema de Jail !   
    Opa galera blz? hoje vou trazer um sistema para vocês de jail, então vamos la !
     
    Algumas Funções !
     
    Funções:
     
    *Exemplo, GM quer prender um player que ta fazeno algu de errado, ai ele fala !jail ,4(no exemplo ele ficara 4 minutos preso), éo nome do fulano, !jail 4,fulano ,!jail 15,fulano ou !jail 30,fulano.
     
    * Verificação jogador o tempo de prisão (mostra data unjail) 
    * auto unjail jogadores 
    * Kick todos os jogadores da prisão depois de acidente / restart [teletransporte para jogador templo] 
     
    Primeiramente vá em \data\talkactions e abra o talkactions.xml é lá adicione:
    <talkaction words="!jail" script="jailsystem.lua"/> <talkaction words="!unjail" script="jailsystem.lua"/> <talkaction words="/jail" script="jailsystem.lua"/> <talkaction words="/unjail" script="jailsystem.lua"/> Agora vá em \data\talkactions\scripts é crie um arquivo chamado jailsystem.lua é la adicione :
    -- Default jail time in seconds -- default_jail = 30 -- The permission you need to jail someone -- grouprequired = 4 -- StorageValue that the player gets -- jailedstoragevalue_time = 1338 jailedstoragevalue_bool = 1339 -- Set the position of the jail: -- jailpos = { x = 1037, y = 1004, z =7 } -- Set the position once unjailed: -- unjailpos = { x = 1029, y = 1005, z =7 } -- auto kicker, dont edit jail_list = {} jail_list_work = 0 function checkJailList(param) addEvent(checkJailList, 1000, {}) for targetID,player in ipairs(jail_list) do if isPlayer(player) == TRUE then if getPlayerStorageValue(player, jailedstoragevalue_time) < os.time() then doTeleportThing(player, unjailpos, TRUE) setPlayerStorageValue(player, jailedstoragevalue_time, 0) setPlayerStorageValue(player, jailedstoragevalue_bool, 0) table.remove(jail_list,targetID) doPlayerSendTextMessage(player,MESSAGE_STATUS_CONSOLE_ORANGE,'You were kicked from jail! See you later :)') end else table.remove(jail_list,targetID) end end end function onSay(cid, words, param) if jail_list_work == 0 then jail_list_work = addEvent(checkJailList, 1000, {}) end if param == '' and (words == '!unjail' or words == '/unjail') then if getPlayerStorageValue(cid, jailedstoragevalue_time) > os.time() then doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You are jailed until ' .. os.date("%H:%M:%S", getPlayerStorageValue(cid, jailedstoragevalue_time)) .. ' (now is: ' .. os.date("%H:%M:%S", os.time()) .. ').') else if getPlayerStorageValue(cid, jailedstoragevalue_bool) == 1 then table.insert(jail_list,cid) doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You will be kicked from jail in one second.') else doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You are not jailed.') end end return TRUE end local jail_time = -1 for word in string.gmatch(tostring(param), "(%w+)") do if tostring(tonumber(word)) == word then jail_time = tonumber(word) end end local isplayer = getPlayerByName(param) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(param, string.len(jail_time)+1)) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(param, string.len(jail_time)+2)) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(param, string.len(jail_time)+3)) end end end if jail_time ~= -1 then jail_time = jail_time * 60 else jail_time = default_jail end if words == '!jail' or words == '/jail' then if getPlayerGroupId ( cid ) >= grouprequired then if isPlayer(isplayer) == TRUE then doTeleportThing(isplayer, jailpos, TRUE) setPlayerStorageValue(isplayer, jailedstoragevalue_time, os.time()+jail_time) setPlayerStorageValue(isplayer, jailedstoragevalue_bool, 1) table.insert(jail_list,isplayer) doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You jailed '.. getCreatureName(isplayer) ..' until ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (now is: ' .. os.date("%H:%M:%S", os.time()) .. ').') doPlayerSendTextMessage ( isplayer, MESSAGE_INFO_DESCR, 'You have been jailed by '.. getCreatureName(cid) ..' until ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (now is: ' .. os.date("%H:%M:%S", os.time()) .. ').') return TRUE else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Player with this name doesn\'t exist or is offline.") return FALSE end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You don't have access to unjail other players.") return FALSE end elseif words == '!unjail' or words == '/unjail' then if getPlayerGroupId ( cid ) >= grouprequired then if isPlayer(isplayer) == TRUE then doTeleportThing(isplayer, unjailpos, TRUE) setPlayerStorageValue(isplayer, jailedstoragevalue_time, 0) setPlayerStorageValue(isplayer, jailedstoragevalue_bool, 0) table.remove(jail_list,targetID) doPlayerSendTextMessage(isplayer,MESSAGE_STATUS_CONSOLE_ORANGE,getCreatureName(cid) .. ' let you go out from jail! See you later :)') doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You unjailed '.. getCreatureName(isplayer) ..'.') else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Player with this name doesn\'t exist or is offline.") return FALSE end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You don't have access to unjail other players.") return FALSE end end return FALSE end Algumas configurações
     
    grouprequired = 4 -- aki séra até o grupo que poderar usar no caso group 4 pra baixo.
    jailpos = { x = 1037, y = 1004, z =7 } -- aki séra a posição para aonde o player irar quando for preso.
    unjailpos = { x = 1029, y = 1005, z =7 }- -aki séra para aonde ele for quando ele n tiver mais preso, no caso unjail.
    Creditos: Gesior.pl EU.   Lembre-se eu testei em tibia 8.54 é 8.60 é funcionou perfeitamente !
     
     
     
     
     
     
     
  4. Gostei
    Hadggar recebeu reputação de Anivia em Harry Potter Sprites - FREE   
    Bom primeiramente por que estou postando?, bom obvio é que tenho direitos autorais sobre elas, e hoje permito que vocês a usem, ou seja é free for use, eu paguei 500 reais, nessas sprites, e bom tive muitos problemas com o spriter, @geraldoo.maranhao, e bom primeiramente antes disso, eu estava desenvolvendo um projeto também baseado em harry potter, e nem sabia da existencia do projeto dele, e bom ele me acusou de ter ripado as sprites dele, por eu ter conseguido em uma pagina umas das sprites q o mesmo tinha copiado, e nem eu sabia que ele usava, então o mesmo me acusou de plagio e etc, depois com o tempo comprei as sprites dele, e ele sempre prestando um atendimento horrível, me tratando super mal, e me acusando de plagio etc, o próprio tinha postado no otland, e super acusaram ele de plagio, ou seja né, bem surreal, mas bem queria deixar meu feedback até mesmo sobre o profissional que ele é, e dizer que não recomendaria, pela pessoa meia perturbada, e pela falta de profissionalismo que ele possui, seja no atendimento ou entrega. 
     
    um pouco do que possui no pacote:

     
    Resolvi postar, por ter desistido totalmente do projeto, e esta trabalhando em um totalmente distinto do antigo, focado na plataforma mobile, e bom espero que possa ser útil para alguém, já que meus 500 reais não voltam mais, e também estou postando, por que o mesmo estava me vendendo o pacote por 1.000, eu comprei 500 reais, e ele agora esta vendendo por 500 tudo, até  as que eu comprei, antes de eu confirmar a comprar com o mesmo, ele jurou que iria apagar e não iria revender, mais um motivo de indignação.
     
    Download - Mediafire (link quebrado)
     
    Download - Tibia King
     
    Scan - VirusTotal
     
     
  5. Curtir
    Hadggar recebeu reputação de Cat em Harry Potter Sprites - FREE   
    Bom primeiramente por que estou postando?, bom obvio é que tenho direitos autorais sobre elas, e hoje permito que vocês a usem, ou seja é free for use, eu paguei 500 reais, nessas sprites, e bom tive muitos problemas com o spriter, @geraldoo.maranhao, e bom primeiramente antes disso, eu estava desenvolvendo um projeto também baseado em harry potter, e nem sabia da existencia do projeto dele, e bom ele me acusou de ter ripado as sprites dele, por eu ter conseguido em uma pagina umas das sprites q o mesmo tinha copiado, e nem eu sabia que ele usava, então o mesmo me acusou de plagio e etc, depois com o tempo comprei as sprites dele, e ele sempre prestando um atendimento horrível, me tratando super mal, e me acusando de plagio etc, o próprio tinha postado no otland, e super acusaram ele de plagio, ou seja né, bem surreal, mas bem queria deixar meu feedback até mesmo sobre o profissional que ele é, e dizer que não recomendaria, pela pessoa meia perturbada, e pela falta de profissionalismo que ele possui, seja no atendimento ou entrega. 
     
    um pouco do que possui no pacote:

     
    Resolvi postar, por ter desistido totalmente do projeto, e esta trabalhando em um totalmente distinto do antigo, focado na plataforma mobile, e bom espero que possa ser útil para alguém, já que meus 500 reais não voltam mais, e também estou postando, por que o mesmo estava me vendendo o pacote por 1.000, eu comprei 500 reais, e ele agora esta vendendo por 500 tudo, até  as que eu comprei, antes de eu confirmar a comprar com o mesmo, ele jurou que iria apagar e não iria revender, mais um motivo de indignação.
     
    Download - Mediafire (link quebrado)
     
    Download - Tibia King
     
    Scan - VirusTotal
     
     
  6. Obrigado
    Hadggar recebeu reputação de KiraConquest em Harry Potter Sprites - FREE   
    Bom primeiramente por que estou postando?, bom obvio é que tenho direitos autorais sobre elas, e hoje permito que vocês a usem, ou seja é free for use, eu paguei 500 reais, nessas sprites, e bom tive muitos problemas com o spriter, @geraldoo.maranhao, e bom primeiramente antes disso, eu estava desenvolvendo um projeto também baseado em harry potter, e nem sabia da existencia do projeto dele, e bom ele me acusou de ter ripado as sprites dele, por eu ter conseguido em uma pagina umas das sprites q o mesmo tinha copiado, e nem eu sabia que ele usava, então o mesmo me acusou de plagio e etc, depois com o tempo comprei as sprites dele, e ele sempre prestando um atendimento horrível, me tratando super mal, e me acusando de plagio etc, o próprio tinha postado no otland, e super acusaram ele de plagio, ou seja né, bem surreal, mas bem queria deixar meu feedback até mesmo sobre o profissional que ele é, e dizer que não recomendaria, pela pessoa meia perturbada, e pela falta de profissionalismo que ele possui, seja no atendimento ou entrega. 
     
    um pouco do que possui no pacote:

     
    Resolvi postar, por ter desistido totalmente do projeto, e esta trabalhando em um totalmente distinto do antigo, focado na plataforma mobile, e bom espero que possa ser útil para alguém, já que meus 500 reais não voltam mais, e também estou postando, por que o mesmo estava me vendendo o pacote por 1.000, eu comprei 500 reais, e ele agora esta vendendo por 500 tudo, até  as que eu comprei, antes de eu confirmar a comprar com o mesmo, ele jurou que iria apagar e não iria revender, mais um motivo de indignação.
     
    Download - Mediafire (link quebrado)
     
    Download - Tibia King
     
    Scan - VirusTotal
     
     
  7. Obrigado
    Hadggar recebeu reputação de LeoTK em Harry Potter Sprites - FREE   
    Bom primeiramente por que estou postando?, bom obvio é que tenho direitos autorais sobre elas, e hoje permito que vocês a usem, ou seja é free for use, eu paguei 500 reais, nessas sprites, e bom tive muitos problemas com o spriter, @geraldoo.maranhao, e bom primeiramente antes disso, eu estava desenvolvendo um projeto também baseado em harry potter, e nem sabia da existencia do projeto dele, e bom ele me acusou de ter ripado as sprites dele, por eu ter conseguido em uma pagina umas das sprites q o mesmo tinha copiado, e nem eu sabia que ele usava, então o mesmo me acusou de plagio e etc, depois com o tempo comprei as sprites dele, e ele sempre prestando um atendimento horrível, me tratando super mal, e me acusando de plagio etc, o próprio tinha postado no otland, e super acusaram ele de plagio, ou seja né, bem surreal, mas bem queria deixar meu feedback até mesmo sobre o profissional que ele é, e dizer que não recomendaria, pela pessoa meia perturbada, e pela falta de profissionalismo que ele possui, seja no atendimento ou entrega. 
     
    um pouco do que possui no pacote:

     
    Resolvi postar, por ter desistido totalmente do projeto, e esta trabalhando em um totalmente distinto do antigo, focado na plataforma mobile, e bom espero que possa ser útil para alguém, já que meus 500 reais não voltam mais, e também estou postando, por que o mesmo estava me vendendo o pacote por 1.000, eu comprei 500 reais, e ele agora esta vendendo por 500 tudo, até  as que eu comprei, antes de eu confirmar a comprar com o mesmo, ele jurou que iria apagar e não iria revender, mais um motivo de indignação.
     
    Download - Mediafire (link quebrado)
     
    Download - Tibia King
     
    Scan - VirusTotal
     
     
  8. Gostei
    Hadggar recebeu reputação de Zyros em setCreatureName(cid, name, description)   
    vlw deu tudo certo, estou usando 8.54 vlw
  9. Curtir
    Hadggar deu reputação a chavoz em (Resolvido)New Pokemon Bar OTCLIENT   
    Oi galera!
     
    Primero que nada me disculpo mi portugués (traductor)
     
     
    Eu to creando isso:
     

     
    Mas eu nao consigo fazer que o "Health Bars" tenha funcao...
    eu ja crei um comando pra ver % de vida no pokemon do jogador
     

     
    Eu não tenho conhecimento suficiente da OTC para fazer isso.
     
    Me Pregunto sí alguien me entendio, y si es asi, por favor ayudeme.
     
  10. Curtir
    Hadggar deu reputação a Guilherme em [C++] Opcode versão 8.54+   
    Por: BananaFight > DragonElement
     
    Adaptação pra source 8.54+

    LEMBRE-SE, ISSO É NA SOURCE DO SERVIDOR

    Vamos ao código.


    protocolgame.h

    Embaixo de
    void AddShopItem(NetworkMessage_ptr msg, const ShopInfo item); Adicione

    void parseExtendedOpcode(NetworkMessage& msg); void sendExtendedOpcode(uint8_t opcode, const std::string& buffer); protocolgame.cpp

    Embaixo de

    uint32_t key[4] = {msg.GetU32(), msg.GetU32(), msg.GetU32(), msg.GetU32()}; enableXTEAEncryption(); setXTEAKey(key); Adicione

    // notifies to otclient that this server can receive extended game protocol opcodes if(operatingSystem >= CLIENTOS_OTCLIENT_LINUX) sendExtendedOpcode(0x00, std::string()); Embaixo de

    void ProtocolGame::AddShopItem(NetworkMessage_ptr msg, const ShopInfo item) { const ItemType& it = Item::items[item.itemId]; msg->AddU16(it.clientId); if(it.isSplash() || it.isFluidContainer()) msg->AddByte(fluidMap[item.subType % 8]); else if(it.stackable || it.charges) msg->AddByte(item.subType); else msg->AddByte(0x01); msg->AddString(item.itemName); msg->AddU32(uint32_t(it.weight * 100)); msg->AddU32(item.buyPrice); msg->AddU32(item.sellPrice); } Adicione

    void ProtocolGame::parseExtendedOpcode(NetworkMessage& msg) { uint8_t opcode = msg.GetByte(); std::string buffer = msg.GetString(); // process additional opcodes via lua script event addGameTask(&Game::parsePlayerExtendedOpcode, player->getID(), opcode, buffer); } void ProtocolGame::sendExtendedOpcode(uint8_t opcode, const std::string& buffer) { // extended opcodes can only be send to players using otclient, cipsoft's tibia can't understand them NetworkMessage_ptr msg = getOutputBuffer(); if(msg) { TRACK_MESSAGE(msg); msg->AddByte(0x32); msg->AddByte(opcode); msg->AddString(buffer); } } Embaixo de

    case 0x1E: // keep alive / ping response parseReceivePing(msg); break;
    Adicione

    case 0x32: // otclient extended opcode parseExtendedOpcode(msg); break; enums.h

    Embaixo de

    enum GuildLevel_t { GUILDLEVEL_NONE = 0, GUILDLEVEL_MEMBER, GUILDLEVEL_VICE, GUILDLEVEL_LEADER }; Substitua o OperatingSystem por este

    enum OperatingSystem_t { CLIENTOS_LINUX = 0x01, CLIENTOS_WINDOWS = 0x02, CLIENTOS_OTCLIENT_LINUX = 0x0A, CLIENTOS_OTCLIENT_WINDOWS = 0x0B, CLIENTOS_OTCLIENT_MAC = 0x0C, };/
    player.h

    Embaixo de
     

    void sendCreatureShield(const Creature* creature) Adicione

    void sendExtendedOpcode(uint8_t opcode, const std::string& buffer) {if(client) client->sendExtendedOpcode(opcode, buffer);} luascript.cpp

    Embaixo de

    void LuaScriptInterface::registerFunctions() { Adicione

    //doSendPlayerExtendedOpcode(cid, opcode, buffer) lua_register(m_luaState, "doSendPlayerExtendedOpcode", LuaScriptInterface::luaDoSendPlayerExtendedOpcode); Embaixo de

    SHIFT_OPERATOR(int32_t, LeftShift, <<) SHIFT_OPERATOR(int32_t, RightShift, >>) SHIFT_OPERATOR(uint32_t, ULeftShift, <<) SHIFT_OPERATOR(uint32_t, URightShift, >>) #undef SHIFT_OPERATOR Adicione
    int32_t LuaScriptInterface::luaDoSendPlayerExtendedOpcode(lua_State* L) { //doSendPlayerExtendedOpcode(cid, opcode, buffer) std::string buffer = popString(L); int opcode = popNumber(L); ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(popNumber(L))) { player->sendExtendedOpcode(opcode, buffer); lua_pushboolean(L, true); } lua_pushboolean(L, false); return 1; } luascript.h

    Embaixo de

    virtual void registerFunctions(); Adicione

    static int32_t luaDoSendPlayerExtendedOpcode(lua_State* L); creatureevent.h
    .
    Substitua
    CREATURE_EVENT_PREPAREDEATH Por isso

    CREATURE_EVENT_PREPAREDEATH, CREATURE_EVENT_EXTENDED_OPCODE // otclient additional network opcodes Embaixo de
    uint32_t executePrepareDeath(Creature* creature, DeathList deathList); Adicione
    uint32_t executeExtendedOpcode(Creature* creature, uint8_t opcode, const std::string& buffer); creatureevent.cpp

    Embaixo de

    else if(tmpStr == "death") m_type = CREATURE_EVENT_DEATH; Adicione

    else if(tmpStr == "extendedopcode") m_type = CREATURE_EVENT_EXTENDED_OPCODE; Embaixo de

    case CREATURE_EVENT_DEATH: return "onDeath"; Adicione
    case CREATURE_EVENT_EXTENDED_OPCODE: return "onExtendedOpcode"; Embaixo de

    case CREATURE_EVENT_DEATH: return "cid, corpse, deathList"; Adicione
    case CREATURE_EVENT_EXTENDED_OPCODE: return "cid, opcode, buffer"; Embaixo de

    std::cout << "[Error - CreatureEvent::executeFollow] Call stack overflow." << std::endl; return 0; } } Adicione
    uint32_t CreatureEvent::executeExtendedOpcode(Creature* creature, uint8_t opcode, const std::string& buffer) { //onExtendedOpcode(cid, opcode, buffer) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(creature->getPosition()); std::stringstream scriptstream; scriptstream << "local cid = " << env->addThing(creature) << std::endl; scriptstream << "local opcode = " << (int)opcode << std::endl; scriptstream << "local buffer = " << buffer.c_str() << std::endl; scriptstream << m_scriptData; bool result = true; if(m_interface->loadBuffer(scriptstream.str())) { lua_State* L = m_interface->getState(); result = m_interface->getGlobalBool(L, "_result", true); } m_interface->releaseEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ char desc[35]; sprintf(desc, "%s", player->getName().c_str()); env->setEvent(desc); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(creature->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(creature)); lua_pushnumber(L, opcode); lua_pushlstring(L, buffer.c_str(), buffer.length()); bool result = m_interface->callFunction(3); m_interface->releaseEnv(); return result; } } else { std::cout << "[Error - CreatureEvent::executeRemoved] Call stack overflow." << std::endl; return 0; } } game.h

    Embaixo de


    int32_t getLightHour() {return lightHour;} void startDecay(Item* item); Adicione
    void parsePlayerExtendedOpcode(uint32_t playerId, uint8_t opcode, const std::string& buffer);
    game.cpp

    Embaixo de

    player->sendTextMessage(MSG_INFO_DESCR, buffer); }
    Adicione

    void Game::parsePlayerExtendedOpcode(uint32_t playerId, uint8_t opcode, const std::string& buffer) { Player* player = getPlayerByID(playerId); if(!player || player->isRemoved()) return; CreatureEventList extendedOpcodeEvents = player->getCreatureEvents(CREATURE_EVENT_EXTENDED_OPCODE); for(CreatureEventList::iterator it = extendedOpcodeEvents.begin(); it != extendedOpcodeEvents.end(); ++it) (*it)->executeExtendedOpcode(player, opcode, buffer); } /creaturescripts/creaturescrips.xml

    <event type="extendedopcode" name="ExtendedOpcode" event="script" value="extendedopcode.lua"/>
    /creaturescripts/extendedopcode.lua
    OPCODE_LANGUAGE = 1 function onExtendedOpcode(cid, opcode, buffer)         if opcode == OPCODE_LANGUAGE then          -- otclient language          if buffer == 'en' or buffer == 'pt' then                  -- example, setting player language, because otclient is multi-language...                  --doCreatureSetStorage(cid, CREATURE_STORAGE_LANGUAGE, buffer)          end         else          -- other opcodes can be ignored, and the server will just work fine...         end end Créditos : MaXwEllDeN 100% por adaptar o código
  11. Curtir
    Hadggar deu reputação a Luan Zero em Sprites NTO   
    Quem é tu? Elas já estão in-game, pra quem eu vendi por não usarem proteção alguns lixos riparam, então eu vim postar, e pra quem eu fiz nem servidor mais tem, apesar que elas estão em diversos servidores, 2018 é ano de coisa nova, e de um modo diferente do ano passado.
  12. Gostei
    Hadggar deu reputação a PedroSTT em Bike system   
    Olá galera , do TibiaKing , venho trazer pra vocês um bike sistem por movements.
     
    QUAL A DIFERENÇA DESSE SISTEMA PARA O ANTIGO ? ( POR ACTIONS)
    Esse sistema evita aquele famoso bug do player dar use na bike e jogar pra outro amigo dar use , fazendo os dois terem bike.
     
    COMO ESSE SISTEMA FUNCIONA ??
    Funciona por movements , ao equipar( no slot do ring[configurável]) ganha a outfit e a speed ( configuráveis)
     
     
    XML
    <movevent type="Equip" itemid="2195" slot="ring" event="script" value="bike.lua"/> <movevent type="DeEquip" itemid="2195" slot="ring" event="script" value="bike.lua"/> SCRIPT
    local bike = {lookType = 100, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0} --- Esse vai ser Homen local bike1 = {lookType = 101, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0} --- Esse vai ser mulher local speed = 20 --- Velocidade que a bike dará local storage = 3421 function onEquip(cid, item, slot) if not isPlayer(cid) and not isPremium(cid) then -- tire o primeiro not, atras do isPlayer para ativar o premium doPlayerSendCancel(cid, "Only premium members are allowed to mount.") return true end if getPlayerSex(cid) == 1 then -- Homem doChangeSpeed(cid, speed) doSetCreatureOutfit(cid, bike, -1) doSendMagicEffect(getPlayerPosition(cid), 18) setPlayerStorageValue(cid, storage, 1) elseif getPlayerSex(cid) == 0 then -- Girl doChangeSpeed(cid, speed) doSetCreatureOutfit(cid, bike1, -1) doSendMagicEffect(getPlayerPosition(cid), 18) setPlayerStorageValue(cid, storage, 1) end return true end function onDeEquip(cid, item, slot) doRemoveCondition(cid, CONDITION_OUTFIT) doChangeSpeed(cid, -speed) doSendMagicEffect(getPlayerPosition(cid), 18) setPlayerStorageValue(cid, storage, 0) end  
  13. Curtir
    Hadggar recebeu reputação de bra em [TalkAction] Sistema de Jail !   
    Opa galera blz? hoje vou trazer um sistema para vocês de jail, então vamos la !
     
    Algumas Funções !
     
    Funções:
     
    *Exemplo, GM quer prender um player que ta fazeno algu de errado, ai ele fala !jail ,4(no exemplo ele ficara 4 minutos preso), éo nome do fulano, !jail 4,fulano ,!jail 15,fulano ou !jail 30,fulano.
     
    * Verificação jogador o tempo de prisão (mostra data unjail) 
    * auto unjail jogadores 
    * Kick todos os jogadores da prisão depois de acidente / restart [teletransporte para jogador templo] 
     
    Primeiramente vá em \data\talkactions e abra o talkactions.xml é lá adicione:
    <talkaction words="!jail" script="jailsystem.lua"/> <talkaction words="!unjail" script="jailsystem.lua"/> <talkaction words="/jail" script="jailsystem.lua"/> <talkaction words="/unjail" script="jailsystem.lua"/> Agora vá em \data\talkactions\scripts é crie um arquivo chamado jailsystem.lua é la adicione :
    -- Default jail time in seconds -- default_jail = 30 -- The permission you need to jail someone -- grouprequired = 4 -- StorageValue that the player gets -- jailedstoragevalue_time = 1338 jailedstoragevalue_bool = 1339 -- Set the position of the jail: -- jailpos = { x = 1037, y = 1004, z =7 } -- Set the position once unjailed: -- unjailpos = { x = 1029, y = 1005, z =7 } -- auto kicker, dont edit jail_list = {} jail_list_work = 0 function checkJailList(param) addEvent(checkJailList, 1000, {}) for targetID,player in ipairs(jail_list) do if isPlayer(player) == TRUE then if getPlayerStorageValue(player, jailedstoragevalue_time) < os.time() then doTeleportThing(player, unjailpos, TRUE) setPlayerStorageValue(player, jailedstoragevalue_time, 0) setPlayerStorageValue(player, jailedstoragevalue_bool, 0) table.remove(jail_list,targetID) doPlayerSendTextMessage(player,MESSAGE_STATUS_CONSOLE_ORANGE,'You were kicked from jail! See you later :)') end else table.remove(jail_list,targetID) end end end function onSay(cid, words, param) if jail_list_work == 0 then jail_list_work = addEvent(checkJailList, 1000, {}) end if param == '' and (words == '!unjail' or words == '/unjail') then if getPlayerStorageValue(cid, jailedstoragevalue_time) > os.time() then doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You are jailed until ' .. os.date("%H:%M:%S", getPlayerStorageValue(cid, jailedstoragevalue_time)) .. ' (now is: ' .. os.date("%H:%M:%S", os.time()) .. ').') else if getPlayerStorageValue(cid, jailedstoragevalue_bool) == 1 then table.insert(jail_list,cid) doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You will be kicked from jail in one second.') else doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You are not jailed.') end end return TRUE end local jail_time = -1 for word in string.gmatch(tostring(param), "(%w+)") do if tostring(tonumber(word)) == word then jail_time = tonumber(word) end end local isplayer = getPlayerByName(param) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(param, string.len(jail_time)+1)) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(param, string.len(jail_time)+2)) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(param, string.len(jail_time)+3)) end end end if jail_time ~= -1 then jail_time = jail_time * 60 else jail_time = default_jail end if words == '!jail' or words == '/jail' then if getPlayerGroupId ( cid ) >= grouprequired then if isPlayer(isplayer) == TRUE then doTeleportThing(isplayer, jailpos, TRUE) setPlayerStorageValue(isplayer, jailedstoragevalue_time, os.time()+jail_time) setPlayerStorageValue(isplayer, jailedstoragevalue_bool, 1) table.insert(jail_list,isplayer) doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You jailed '.. getCreatureName(isplayer) ..' until ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (now is: ' .. os.date("%H:%M:%S", os.time()) .. ').') doPlayerSendTextMessage ( isplayer, MESSAGE_INFO_DESCR, 'You have been jailed by '.. getCreatureName(cid) ..' until ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (now is: ' .. os.date("%H:%M:%S", os.time()) .. ').') return TRUE else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Player with this name doesn\'t exist or is offline.") return FALSE end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You don't have access to unjail other players.") return FALSE end elseif words == '!unjail' or words == '/unjail' then if getPlayerGroupId ( cid ) >= grouprequired then if isPlayer(isplayer) == TRUE then doTeleportThing(isplayer, unjailpos, TRUE) setPlayerStorageValue(isplayer, jailedstoragevalue_time, 0) setPlayerStorageValue(isplayer, jailedstoragevalue_bool, 0) table.remove(jail_list,targetID) doPlayerSendTextMessage(isplayer,MESSAGE_STATUS_CONSOLE_ORANGE,getCreatureName(cid) .. ' let you go out from jail! See you later :)') doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You unjailed '.. getCreatureName(isplayer) ..'.') else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Player with this name doesn\'t exist or is offline.") return FALSE end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You don't have access to unjail other players.") return FALSE end end return FALSE end Algumas configurações
     
    grouprequired = 4 -- aki séra até o grupo que poderar usar no caso group 4 pra baixo.
    jailpos = { x = 1037, y = 1004, z =7 } -- aki séra a posição para aonde o player irar quando for preso.
    unjailpos = { x = 1029, y = 1005, z =7 }- -aki séra para aonde ele for quando ele n tiver mais preso, no caso unjail.
    Creditos: Gesior.pl EU.   Lembre-se eu testei em tibia 8.54 é 8.60 é funcionou perfeitamente !
     
     
     
     
     
     
     
  14. Gostei
    Hadggar recebeu reputação de Cain Jorge em [Sprites] Minato NTO Brasil   
    Ainda bem que gostou ! embreve postarei mais .
  15. Gostei
    Hadggar recebeu reputação de Cain Jorge em [Sprites] Minato NTO Brasil   
    Opa galera blz , malz sé publiquei na area errada ,-,. hoje vou trazer para vocês as sprites do minato do nto brasil que então foram mt bem elaboradas , eu tirei do meu server para publicar aki para vocês não sei se fiz certo , mais enfim resolvi traze-las para vocês, talvez estarei postano a do madara que tenho e mts outras, acredito que pocas pessoas conseguem as sprites do NTO Brasil é todos preucuram, então vamos la. Aki a imagem das sprites:
     

     
    Mt Show neh? 
    Downloads: http://www.4shared.com/rar/Q05kDr7nba/Minato_Outfits_Do_NTO_Brasil.html? Scan: https://www.virustotal.com/pt/file/5167e4544d2b6dc2c892b0bb844d4b6d5da220eff587e66fc3464032777a21a1/analysis/1405371523/ Creditos: ScreMMO (EU) Gostou ? REP+
  16. Gostei
    Hadggar deu reputação a Pedro. em [ShowOFF] Remake Evolutions Server   
    updatezinho c fotinhas in-game!
     

     

     

     

     

     

     
     
  17. Gostei
    Hadggar deu reputação a Pedro. em [ShowOFF] Remake Evolutions Server   
    Valeu nenê!
     
    futuramente qndo tiver com 1 maquina, vou tirar fotos in-game! 
     
    OLD Hydra
     

     

     
     
    New Hydra
     

     

     
     
    OLD Dragon

     

     
    New Dragon
     

     

     
     
     
  18. Gostei
    Hadggar deu reputação a Pedro. em [ShowOFF] Remake Evolutions Server   
    acho que a unica coisa que sei fazer é mapear mesmo, porque sou um desgraçado ruim da porra em script, sei nem o que é um if pqp!
    enfim, curto bastante olds servers tipo Alissow (evolution), Thyrania, SadTeam (karmia), então achei esse projeto do @Comedinha e resolvi edita-lo xd
     
    postarei screens e futuramente pretendo abrir o servidor =)
     
    Rotworm OLD

     
    New Rotworms


     
     
    OLD Demons

     

     
    New Demons

     

     
    OLD Caminho DH

     

     
    New Caminho DH

     

     
  19. Gostei
    Hadggar deu reputação a Nogard em Nogard Graphic Gallery   
  20. Gostei
    Hadggar deu reputação a Nogard em PokémonChangeSlots   
  21. Gostei
    Hadggar deu reputação a Vodkart em [MODS] [8.6] Fire Storm Event - Automático   
    Evento for fun para colocar no seu ot, quem é atingido pelo fogo morre, o último a sobreviver ganha.
     
    O evento é automático, mas também possui um comando para dar inicio ao evento, só usar /firestart minutos
     
    exemplo: /firestart 1
     
     
     
     
    Fire_Storm_Event.xml
    <?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Fire Storm Event" version="8.6" author="Vodkart" contact="" enabled="yes"> <config name="fire_config"><![CDATA[ Fire = { storages = {172354, 172355}, -- storage Count players = {min = 2, max = 50}, -- min, max players no evento minLevel = 20, -- level minimo para entrar no event rewards = {{2160,10},{2494,1}}, -- premios que vai receber timeToStartEvent = 30, -- segundos para começar o evento CheckTime = 5, -- time to check event teleport = {{x=158, y=53, z=7}, {x=189 , y=58, z=7}}, -- posição do teleport, posição para onde o jogador vai arena = {{x=186,y=54,z=7},{x=193,y=60,z=7}} -- posição começo e final da area } Fire_Days = { ["Monday"] = {"13:00","18:00","20:00","22:00"}, ["Tuesday"] = {"13:00","18:00","20:00","22:00"}, ["Wednesday"] = {"13:00","18:00","20:00","22:00"}, ["Thursday"] = {"13:00","18:00","20:00","22:00"}, ["Friday"] = {"13:00","18:00","20:00","22:00"}, ["Saturday"] = {"13:00","18:00","20:00","22:00"}, ["Sunday"] = {"13:00","18:00","20:00","22:00"} } function removeFireTp() local t = getTileItemById(Fire.teleport[1], 1387).uid return t > 0 and doRemoveItem(t) and doSendMagicEffect(Fire.teleport[1], CONST_ME_POFF) end function ZerarStorFire() setGlobalStorageValue(Fire.storages[1], 0) setGlobalStorageValue(Fire.storages[2], 0) end function getPlayersInFireEvent() local t = {} for _, pid in pairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), Fire.arena[1], Fire.arena[2]) then t[#t+1] = pid end end return t end function getFireRewards(cid, items) local backpack = doPlayerAddItem(cid, 1999, 1) -- backpackID for _, i_i in ipairs(items) do local item, amount = i_i[1],i_i[2] if isItemStackable(item) or amount == 1 then doAddContainerItem(backpack, item, amount) else for i = 1, amount do doAddContainerItem(backpack, item, 1) end end end end function doFireInArea(n) if #getPlayersInFireEvent() > 1 then for i = 1, n do local pos = {x=math.random(Fire.arena[1].x, Fire.arena[2].x), y=math.random(Fire.arena[1].y,Fire.arena[2].y), z=Fire.arena[1].z} local m = getTopCreature(pos).uid doSendDistanceShoot({x = pos.x - math.random(4, 6), y = pos.y - 5, z = pos.z}, pos, CONST_ANI_FIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_HITBYFIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_FIREAREA) if m ~= 0 and isPlayer(m) then doSendMagicEffect(getCreaturePosition(m), CONST_ME_FIREAREA) doCreatureSay(m, "Ooh Burn Burn", TALKTYPE_ORANGE_1) local corpse = doCreateItem(3058, 1, getPlayerPosition(m)) doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(m) .. ". He was killed by Fire Field.") doSendMagicEffect(getPlayerPosition(m), CONST_ME_POFF) doTeleportThing(m, getTownTemplePosition(getPlayerTown(m))) doPlayerSendTextMessage(m, MESSAGE_EVENT_ADVANCE, "[Fire Storm Event] You died burned out.") end end local x = 2700-(200*n) addEvent(doFireInArea, x <= 0 and 500 or x, n+1) elseif #getPlayersInFireEvent() == 1 then local cid = getPlayersInFireEvent()[1] doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) getFireRewards(cid, Fire.rewards) doBroadcastMessage("Fire Storm Event have finished. The winner is ".. getCreatureName(cid).. ". Congratulations.", MESSAGE_EVENT_ADVANCE) ZerarStorFire() else doBroadcastMessage("No one Won the Fire Storm Event.", MESSAGE_EVENT_ADVANCE) ZerarStorFire() end end function CheckFireEvent(delay) if getGlobalStorageValue(Fire.storages[1]) ~= (Fire.players.max+1) then if delay > 0 and getGlobalStorageValue(Fire.storages[1]) < Fire.players.max then doBroadcastMessage("[Fire Stortm Event] Starting in " .. delay .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING) elseif delay == 0 and getGlobalStorageValue(Fire.storages[1]) < Fire.players.min then for _, cid in pairs(getPlayersInFireEvent()) do doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end removeFireTp() doBroadcastMessage("The Fire Storm event could not start because of to few players participating.\n At least " .. Fire.players.min .. " players is needed!", MESSAGE_STATUS_WARNING) ZerarStorFire() elseif delay == 0 and getGlobalStorageValue(Fire.storages[1]) >= Fire.players.min then removeFireTp() doBroadcastMessage("Good Lucky! The event will start on "..Fire.timeToStartEvent.." seconds. get ready!") addEvent(doFireInArea, Fire.timeToStartEvent*1000, 1) end addEvent(CheckFireEvent, 60000, delay-1) end end ]]></config> <globalevent name="Storm_Fire_Start" interval="60" event="script"><![CDATA[ domodlib('fire_config') function onThink(interval, lastExecution) if Fire_Days[os.date("%A")] then local hrs = tostring(os.date("%X")):sub(1, 5) if isInArray(Fire_Days[os.date("%A")], hrs) and getGlobalStorageValue(Fire.storages[2]) <= 0 then local tp = doCreateItem(1387, 1, Fire.teleport[1]) doItemSetAttribute(tp, "aid", 45111) CheckFireEvent(Fire.CheckTime) setGlobalStorageValue(Fire.storages[1], 0) end end return true end]]></globalevent> <event type="login" name="Storm_Fire_Login" event="script"><![CDATA[ domodlib('fire_config') function onLogin(cid) registerCreatureEvent(cid, "FireStormBatle") if isInRange(getPlayerPosition(cid), Fire.arena[1], Fire.arena[2]) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end return true end]]></event> <event type="combat" name="FireStormBatle" event="script"><![CDATA[ domodlib('fire_config') if isPlayer(cid) and isPlayer(target) and isInRange(getPlayerPosition(cid), Fire.arena[1], Fire.arena[2]) then doPlayerSendCancel(cid, "You may not attack this player.") return false end return true ]]></event> <movevent type="StepIn" actionid ="45111" event="script"><![CDATA[ domodlib('fire_config') function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerAccess(cid) > 3 then return doTeleportThing(cid, Fire.teleport[2]) end if getPlayerLevel(cid) < Fire.minLevel then doTeleportThing(cid, fromPosition, true) doPlayerSendCancel(cid, "You need to be at least level " .. Fire.minLevel .. ".") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end if getGlobalStorageValue(Fire.storages[1]) <= Fire.players.max then doTeleportThing(cid, Fire.teleport[2]) setGlobalStorageValue(Fire.storages[1], getGlobalStorageValue(Fire.storages[1])+1) doBroadcastMessage(getPlayerName(cid) .. " entered the fire stortm event! Currently " .. getGlobalStorageValue(Fire.storages[1]) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED) if getGlobalStorageValue(Fire.storages[1]) == Fire.players.max then setGlobalStorageValue(Fire.storages[1], getGlobalStorageValue(Fire.storages[1])+1) removeFireTp() doBroadcastMessage("The event will start on "..Fire.timeToStartEvent.." seconds. get ready!") addEvent(doFireInArea, Fire.timeToStartEvent*1000, 1) end end return true end]]></movevent> <talkaction words="/firestart;!firestart" access="5" event="buffer"><![CDATA[ domodlib('fire_config') if getGlobalStorageValue(Fire.storages[2]) > 0 then doPlayerSendCancel(cid, "The event is already starting.") return true elseif not param or not tonumber(param) then doPlayerSendCancel(cid, "Use only numbers.") return true end local param = tonumber(param) <= 0 and 1 or tonumber(param) local tp = doCreateItem(1387, 1, Fire.teleport[1]) doItemSetAttribute(tp, "aid", 45111) CheckFireEvent(tonumber(param)) setGlobalStorageValue(Fire.storages[1], 0) setGlobalStorageValue(Fire.storages[2], 1) ]]></talkaction> <globalevent name="FireDebug-Start" type="start" event="buffer"><![CDATA[ domodlib('fire_config') ZerarStorFire() return true]]></globalevent> </mod>  
    A configuração está explicita na lib do mods... valeu!
     
    fire lua.rar
  22. Curtir
    Hadggar recebeu reputação de Weslley Kiyo em Servidor Global (o 8.60 mais completo)   
    Muito bom, ótimo trabalho hahaha!
  23. Gostei
    Hadggar deu reputação a Weslley Kiyo em Servidor Global (o 8.60 mais completo)   
    Obrigado!
     
     
    Pessoal, Infelizmente tive uns problemas pessoais e acabei dando uma pausa no projeto, mas o mesmo não acabou.
     
    Estou voltando agora com o projeto e estou acrescentando Archivements ao servidor. Também revisando alguns npcs e arrumando o mapa em sí.
  24. Gostei
    Hadggar deu reputação a Weslley Kiyo em Servidor Global (o 8.60 mais completo)   
    Sabe, tenho ódio de ver os servidores anunciando (100% global, o mais completo)... Bem, hoje venho mostrar a vocês, que de fato, o mais atual está por vir. O servidor ainda está em desenvolvimento mas posso dizer que já é o mais completo 
     
    Todas as falas dos npcs  retirado do tibiawiki (Ao digitar job, name, etc...) Todas as missões e quests retirado do tibiawiki (Com questlog) Servidor 8.60 com mapa 10.37 e muitas adições de áreas da versão 11.0 que possui suporte à 8.60 Todos os monstros atualizados para melhor balanceamento de loot/damage Todas as houses foram refeitas para evitar bugs em paredes e nomes das mesmas.  
    Imagens \/ \/
     
     
    "O trabalho é árduo, porém o resultado pode ser gratificante" 
  25. Gostei
    Hadggar deu reputação a Vodkart em Npc Auction Versão 1.0 [Atualizado]   
    Versões: Foi feito para servidores que não tem o market system, mas funciona desde o 8.54 até 9.6+
    Suporta: servidores Sqlite e MySql
    Sobre: O Npc basicamente funciona da seguinte maneira, você "deposita" alguns items neste npc e durante "X" dias ele vende para você, claro que o npc irá cobrar "Y" preço pelo serviço...
    Para mais informações acessem o link que explica com imagens: http://tibiaking.com...mo-auction-npc/
     
    Basta fazer o download, executar a query que é pedida e depois disso colocar os arquivos em seus respectivas pastas.
     
    ##ATUALIZADO Versão 1.0##
     
    - Agora a Lib foi ajustada e bugs removidos
    - Itens de type "others" e "ammunition" arrumados
    - O Npc agora devolve seus itens quando quiser
    - Os itens vão para o depot quando não vende o item
    - Nova aba de "all" que mostra todos os itens em uma janela, independente da seleção do tipo de item;
     
     
    obs: Antes de instalar a lib leia o arquivo txt, porque tem 2 tipos de lib, um é usado 'db.executeQuery' e o outro 'db,query'(fiz isso para o pessoal que não sabe alterar as funções)
     
     
     
    Npc Auction 1.0.rar

Informação Importante

Confirmação de Termo