Ir para conteúdo
Banner com Efeitos

Orientalz

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Orientalz deu reputação a Kimoszin em Problema /attr position x y z   
    Cria um teleport embaixo de você.

    newteleport.lua

    function onSay(cid, words, param, channel) local s = string.explode(param, ",") local topos = {x=s[1], y=s[2], z=s[3]} doCreateTeleport(1387, topos, getCreaturePosition(cid)) return TRUE end talkactions.xml <talkaction words="/newteleport" access="5" event="script" value="newteleport.lua"/> /newteleport 1017, 1027, 7
  2. Gostei
    Orientalz deu reputação a Yan Liima em Limite de players em guild website   
    Limite máximo de players em guild WEBSITE ?

     
    Bom, decidi postar essa modificação que fiz a muito tempo, pois vi que bastante gente queria
    Para Modern AAC e vi que ninguém soube ajudar. Como é algo bem simples e ta parado aqui faz tempo
    Decidi disponibilizar. Não só para Modern, mas para Gesior também!
    Estarei disponibilizando de duas maneiras:
    1º Será um valor configurado no proprio config.php, onde determinará o limite máximo de todas as guild.
    2º A verificação será feita por DB, onde terá um valor padrão para cada guilda criada, podendo ser alterado o valor de membros maximo.
    Ou seja, a guilda número UM pode ter máximo de 50 players, e a guilda número DOIS pode ter o máximo de 100.
    Vocês pode ser criativos e vender items que aumenta o limite ou fazer eventos/sorteios para aumentar...

     
    Enfim, vamos lá...
    Primeira maneira:
    Modern AAC:
    Gesior:
     
    Segunda maneira:
     
    Modern AAC:
    Gesior:
     
    Prontinho galera!!!
    Caso queiram para cmd in-game: LINK
  3. Gostei
    Orientalz deu reputação a JehJunco em Adicionando restrição de level e vocação em itens   
    Olá pessoal.
     
    Andei fazendo várias pesquisas pela internet atrás de "como adicionar restrição de level e vocação em itens" e achei alguns conteúdos bacanas (mas não lembro se foi neste fórum), porém muitas vezes o conteúdo desejado não vinha bem explicado.
     
    Tomando isto como base, resolvi criar este post para que várias pessoas que venham a ter a mesma dúvida que eu tive consigam saná-las.
     
    Para quem está procurando colocar restrições em todos os equipamentos (sejam armaduras, armas ou até mesmo munições), segue abaixo um tutorial bem básico (lembrando que não sou programador, apenas um curioso que quando enfia algo na cabeça, não sossega enquanto não resolve! ).
     
    Para isso, vamos modificar o arquivo MOVEMENTS.XML e somente os valores em "itemid", "level" e "vocation id" (OBS.: sempre faça uma cópia do arquivo para evitar possíveis problemas com edição).
     
    Para AMULETS:
    <movevent type="Equip" itemid="" slot="necklace" event="function" value="onEquipItem"/> <movevent type="DeEquip" itemid="" slot="necklace" event="function" value="onDeEquipItem"/> Para HELMETS:
    <movevent type="Equip" itemid="" slot="head" level="" event="function" value="onEquipItem">     <vocation id=""/> </movevent> <movevent type="DeEquip" itemid="" slot="head" event="function" value="onDeEquipItem"/> Para ARMORS:
    <movevent type="Equip" itemid="" slot="armor" level="" event="function" value="onEquipItem">     <vocation id=""/> </movevent> <movevent type="DeEquip" itemid="" slot="armor" event="function" value="onDeEquipItem"/> Para LEGS:
    <movevent type="Equip" itemid="" slot="legs" level="" event="function" value="onEquipItem">     <vocation id=""/> </movevent> <movevent type="DeEquip" itemid="" slot="legs" event="function" value="onDeEquipItem"/> Para RINGS:
    <movevent type="Equip" itemid="" slot="ring" event="function" value="onEquipItem"/> <movevent type="DeEquip" itemid="" slot="ring" event="function" value="onDeEquipItem"/> Para BOOTS:
    <movevent type="Equip" itemid="" slot="feet" level="" event="function" value="onEquipItem">     <vocation id=""/> </movevent> <movevent type="DeEquip" itemid="" slot="feet" event="function" value="onDeEquipItem"/> Para SHIELDS:
    <movevent type="Equip" itemid="" slot="shield" level="" event="function" value="onEquipItem">     <vocation id=""/> </movevent> <movevent type="DeEquip" itemid="" slot="shield" event="function" value="onDeEquipItem"/> Para WEAPONS:
    <movevent type="Equip" itemid="" slot="shield" level="" event="function" value="onEquipItem">     <vocation id=""/> </movevent> <movevent type="DeEquip" itemid="" slot="shield" event="function" value="onDeEquipItem"/> Por que utilizar o slot="shield" para armas?
    No começo eu achei que não iria funcionar, pois somente um escudo pode ser equipado por vez.
    Daí pensei: E se eu utilizar este atributo nas armas, será que vai dar certo? Afinal de contas, assim como os escudos, as armas também usam as mãos e também podem ser equipadas uma por vez! 
    Eis o resultado: Funcionou perfeitamente!
     
    Para AMMUNITIONS (flexas e bolts):
    <movevent type="Equip" itemid="" slot="ammunition" level="" event="function" value="onEquipItem"/>  <movevent type="DeEquip" itemid="" event="function" value="onDeEquipItem"/> Vocês podem até questionar: Mas qual a finalidade de limitar equipamentos, armas se munições?
    Simples! Assim como qualquer tipo de RPG (querendo ou não, de alguma forma Tibia se encaixa nessa categoria) existem certas restrições de equipamentos e também para prevenir que qualquer player utilize qualquer tipo de equipamento, arma ou até mesmo munições, sem possuir os requerimentos necessários exigidos pelo item em questão (o que não acontece em muitos OTs). Assim o jogo fica mais "balanceado" e mais próximo do que "as leis do RPG mandam".
     
    OBS e opinião própria.: Para aqueles que são fãs de RPG, já devem ter percebido que a classe Paladin do Tibia não tem nada a ver com os paladinos de qualquer RPG! A única "semelhança" entre eles seria a utilização de magias sagradas, por que de resto são arqueiros com nome de paladinos! 
     
    Paladin = Classe cavaleira com atributos voltados mais para defesa e suporte a seus aliados.
    Knight = Cavaleiro que ataca sempre na linha de frente, o famoso Berserker!
    Archer = Atiradores excepcionais que evitam ao extremo a linha de frente, e dão suporte aos magos.
    Mages = Clérigos (ou magos brancos -  que utilizam apenas magias de cura e sagradas), Druidas (magos da natureza) e Black Mages (magos que utilizam magias negras e de destruição), entre vários outros!
     
    Bom, é isso! Espero ter ajudado!
  4. Gostei
    Orientalz deu reputação a Vodkart em Event BOSS   
    position é sempre do MENOR para o MAIOR... seja X, Y ou Z.
     
    testa assim:
     
    boss_hours = { ["01:00"] = {boss_name = "Phoenix Boss", pos = {fromPosition = {x=238, y=915, z=7}, toPosition = {x=1024, y=1142, z=8}}, time = 30, extra_time = 10}, ["02:00"] = {boss_name = "Gogeta Boss", pos = {fromPosition = {x=213, y=775, z=7}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["03:00"] = {boss_name = "Dende Boss", pos = {fromPosition = {x=542, y=433, z=6}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["04:00"] = {boss_name = "Phoenix Boss", pos = {fromPosition = {x=238, y=915, z=7}, toPosition = {x=1024, y=1142, z=8}}, time = 30, extra_time = 10}, ["05:00"] = {boss_name = "Gogeta Boss", pos = {fromPosition = {x=213, y=775, z=7}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["06:00"] = {boss_name = "Dende Boss", pos = {fromPosition = {x=542, y=433, z=6}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["07:00"] = {boss_name = "Phoenix Boss", pos = {fromPosition = {x=238, y=915, z=7}, toPosition = {x=1024, y=1142, z=8}}, time = 30, extra_time = 10}, ["08:00"] = {boss_name = "Gogeta Boss", pos = {fromPosition = {x=213, y=775, z=7}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["09:00"] = {boss_name = "Dende Boss", pos = {fromPosition = {x=542, y=433, z=6}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["10:00"] = {boss_name = "Phoenix Boss", pos = {fromPosition = {x=238, y=915, z=7}, toPosition = {x=1024, y=1142, z=8}}, time = 30, extra_time = 10}, ["11:00"] = {boss_name = "Gogeta Boss", pos = {fromPosition = {x=213, y=775, z=7}, toPosition = {x=1024, y=915, z=8}}, time = 30, extra_time = 10}, ["12:00"] = {boss_name = "Dende Boss", pos = {fromPosition = {x=542, y=433, z=6}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["13:00"] = {boss_name = "Phoenix Boss", pos = {fromPosition = {x=238, y=915, z=7}, toPosition = {x=1024, y=1142, z=8}}, time = 30, extra_time = 10}, ["14:00"] = {boss_name = "Gogeta Boss", pos = {fromPosition = {x=213, y=775, z=7}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["15:00"] = {boss_name = "Dende Boss", pos = {fromPosition = {x=542, y=433, z=6}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["16:00"] = {boss_name = "Phoenix Boss", pos = {fromPosition = {x=238, y=915, z=7}, toPosition = {x=1024, y=1142, z=8}}, time = 30, extra_time = 10}, ["17:00"] = {boss_name = "Gogeta Boss", pos = {fromPosition = {x=213, y=775, z=7}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["18:00"] = {boss_name = "Dende Boss", pos = {fromPosition = {x=542, y=433, z=6}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["19:00"] = {boss_name = "Phoenix Boss", pos = {fromPosition = {x=238, y=915, z=7}, toPosition = {x=1024, y=1142, z=8}}, time = 30, extra_time = 10}, ["20:00"] = {boss_name = "Gogeta Boss", pos = {fromPosition = {x=213, y=775, z=7}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["21:00"] = {boss_name = "Dende Boss", pos = {fromPosition = {x=542, y=433, z=6}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["23:45"] = {boss_name = "Phoenix Boss", pos = {fromPosition = {x=238, y=915, z=7}, toPosition = {x=1024, y=1142, z=8}}, time = 30, extra_time = 10}, ["23:00"] = {boss_name = "Gogeta Boss", pos = {fromPosition = {x=213, y=775, z=7}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10}, ["00:00"] = {boss_name = "Dende Boss", pos = {fromPosition = {x=542, y=433, z=6}, toPosition = {x=1024, y=915, z=7}}, time = 30, extra_time = 10} } function isWalkable(pos) -- by Nord / editado por Omega if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false elseif isCreature(getTopCreature(pos).uid) then return false elseif getTileInfo(pos).protection then return false elseif hasProperty(getThingFromPos(pos).uid, 3) or hasProperty(getThingFromPos(pos).uid, 7) then return false end return true end function getPlayersInBossArea(tb) local t = {} for _, pid in pairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), tb.pos.fromPosition, tb.pos.toPosition) then t[#t+1] = pid end end return t end function doRemoveBoss(tb, force) for x = tb.pos.fromPosition.x, tb.pos.toPosition.x do for y = tb.pos.fromPosition.y, tb.pos.toPosition.y do for z = tb.pos.fromPosition.z, tb.pos.toPosition.z do local m = getTopCreature({x=x, y=y, z=z}).uid if m ~= 0 and isMonster(m) then if not force and #getPlayersInBossArea(tb) > 0 then addEvent(doRemoveBoss, tb.extra_time*60*1000, tb, true) return true end doSendMagicEffect(getCreaturePosition(m), 54) -- Efeito no monstro quando for removido doSendMagicEffect(getCreaturePosition(m), 3) -- Efeito no monstro quando for removido doRemoveCreature(m) break end end end end end function onThink(interval, lastExecution) hours = tostring(os.date("%X")):sub(1, 5) tb = boss_hours[hours] if tb then local create = true repeat local pos = {x = math.random(tb.pos.fromPosition.x, tb.pos.toPosition.x), y = math.random(tb.pos.fromPosition.y, tb.pos.toPosition.y), z = tb.pos.fromPosition.z} if isWalkable(pos) then doCreateMonster(tb.boss_name, pos) 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) doSendMagicEffect(pos, CONST_ME_MORTAREA) doBroadcastMessage("O Boss "..tb.boss_name.." nasceu!") addEvent(doRemoveBoss, tb.time*60*1000, tb, false) create = false end until not create end return true end  
  5. Gostei
    Orientalz deu reputação a Vodkart em Event BOSS   
    @BangxD
     
    Não testei
     
    boss_hours = { ["10:00"] = {boss_name = "Demon", pos = {fromPosition = {x=1011, y=910, z=7}, toPosition = {x=1024, y=915, z=7}}, time = 20, extra_time = 10}, ["11:00"] = {boss_name = "Rat", pos = {fromPosition = {x=1011, y=910, z=7}, toPosition = {x=1024, y=915, z=7}}, time = 20, extra_time = 10}, ["12:00"] = {boss_name = "Hydra", pos = {fromPosition = {x=1011, y=910, z=7}, toPosition = {x=1024, y=915, z=7}}, time = 20, extra_time = 10} } function isWalkable(pos) -- by Nord / editado por Omega if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false elseif isCreature(getTopCreature(pos).uid) then return false elseif getTileInfo(pos).protection then return false elseif hasProperty(getThingFromPos(pos).uid, 3) or hasProperty(getThingFromPos(pos).uid, 7) then return false end return true end function getPlayersInBossArea(tb) local t = {} for _, pid in pairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), tb.pos.fromPosition, tb.pos.toPosition) then t[#t+1] = pid end end return t end function doRemoveBoss(tb, force) for x = tb.pos.fromPosition.x, tb.pos.toPosition.x do for y = tb.pos.fromPosition.y, tb.pos.toPosition.y do local m = getTopCreature({x=x, y=y, z= tb.pos.fromPosition.z}).uid if m ~= 0 and isMonster(m) then if not force and #getPlayersInBossArea(tb) > 0 then addEvent(doRemoveBoss, tb.extra_time*60*1000, tb, true) return true end doSendMagicEffect(getCreaturePosition(m), 54) -- Efeito no monstro quando for removido doSendMagicEffect(getCreaturePosition(m), 3) -- Efeito no monstro quando for removido doRemoveCreature(m) break end end end end function onThink(interval, lastExecution) hours = tostring(os.date("%X")):sub(1, 5) tb = boss_hours[hours] if tb then local create = true repeat local pos = {x = math.random(tb.pos.fromPosition.x, tb.pos.toPosition.x), y = math.random(tb.pos.fromPosition.y, tb.pos.toPosition.y), z = tb.pos.fromPosition.z} if isWalkable(pos) then doCreateMonster(tb.boss_name, pos) 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) doSendMagicEffect(pos, CONST_ME_MORTAREA) doBroadcastMessage("O Boss "..tb.boss_name.." nasceu!") addEvent(doRemoveBoss, tb.time*60*1000, tb, false) create = false end until not create end return true end  
  6. Gostei
    Orientalz deu reputação a hiquezerah em Event BOSS   
    @Orientalz   tenta assim     
    <globalevent name="othersboss" interval="1000" event="script" value="othersboss.lua"/>  
  7. Gostei
    Orientalz deu reputação a Swiruseq69 em [8.54] Dragon Ball New Story   
    Name of the project: Dragon Ball New Story Project version: v1.51 TFS version: 0.3.6pl1r102 Version of the protocol: 8.54     Dragon Ball New Story v1.51     What does our server have?: [*] Advanced and expanded SAG SYSTEM [*] The two weapons system [*] A lot of "chest quests" and those more discerning [*] Many bonus spells: (including "Mystic Chou Maretsugeki" and a lot more) [*] 19 "Balanced" vocations [*] Attack Speed System [*] Huge map (Comparing to other server) [*] And a lot more! *Can't remember tho*   Once upon a a time (I mean, before Akram robbed me) the server was in the lead [in terms of anime servers and not only]. The record was 524 people online! :) Many people think, that this version was "the greatest of DBNS history". We don't have "orsh weapons", funny systems like in dbns v14?? XD   VIDEO <-- Click to check video  Screens: Download: [*]Engine: >> Click << [*]DLL's (only Windows): >> Click << [*]Client: >> Click << [*]Database: >> Click <<   Scans: [*]Engine: Virustotal.com [*]DLL's (only Windows): Virustotal.com [*]Client: Virustotal.com [*]Database: Virustotal.com     In "engine" pack there are two files - First one to run it on Windows, secon one to run it on Debian 7 (DBNS v1.51 Engine.exe = WINDOWS / dbns_engine = LINUX). PROJECT ISN'T OpenSource.  
    ////Last update: 29.06.2018 - 22:40
     
    Changelog:
     
  8. Gostei
    Orientalz deu reputação a xWhiteWolf em (Resolvido)[PEDIDO]/addskill   
    a função é pelo distro.. no talkactions tem que estar assim:
    <talkaction log="yes" words="/addskill" access="5" event="function" value="addSkill"/> e a forma de utilizar no server é pegando um char com acesso 5 ou maior e usando:
    /addskill NOME DO PLAYER, tipo de skill, quantidade
    um exemplo pra aumentar 10 leveis no character xWhiteWolf:
    /addskill xWhiteWolf, experience, 10 se não estiver funcionando mesmo assim daí vc terá que trocar de distro :~
  9. Gostei
    Orientalz deu reputação a koyotestark em Character View com outfit e skills Modern AAC   
    Ola pessoas, venho trazer algo aqui que eu armenguei para meu site e queria compartilhar, com vocês que é o CharacterView com skills e outfits.
    O Script de outfit no character view eu peguei do Otland postado pelo averatec e então fiz algumas adições com o pouco que entendo.
    Vamos as explicações?
    Para adicionar a outfit vcs vão precisar de 2 coisas. 
    1 - do script que vou disponibilizar
    2 - das outfits de seu ot. para isso vcs terão que exportar manualmente ou do jeito que souberem, caso seja de ot alternativo, se for de tibia ja vou disponibilizar as outfits do 8.60 que foi coclocado pra dowload junto na postagem do otland.
     
    Instalando view_chacracter.php
    - Vá até a pasta do xamp ou programa onde está seu site e abra a pasta do site, caso seja no xampp será o htdocs.
    Dentro da pasta procure por "SYSTEM", depois "APPLICATION" e depois "VIEWS"
    Cole o view_character.php dentro de VIEWS.
    - Agora para aparecer as outfits, vá em PUBLIC e cole tudo o que estiver dentro da pasta OUTFITTER que são: o arquivo "outfitter.php" e a pasta "outfits"
    - Caso adicione novas outfits siga o modelo das outfits que estão dentro. "lembrando que devem estar sempre na pasta outfit e template" caso seja outfit colorida, coloque a base na pasta template.
    - Caso seu servidor seja alternativo "dragon ball, naruto etc. apague todas as outfits e insira as suas de db/nt, renomeie as suas da seguinte forma "1_2_0_0" alterando somente o primeiro numero que é referente ao ID da outfit.
     
    Eu adicionei apenas 5 skills, pois são os que mais sao usados em meu servidor, caso queira usar mais, basta copiar esta parte
    e colocar abaixo ou acima e mudar o skill ID referente ao skill, sendo? 
    0 fist, 1 club, 2 sword, 3 axe, 4 distance, 5 shield e 6 fishing.
    E renomear como desejar
     
    - Caso queira remover as barras horizontais do fundo, basta remover este trecho 
    bgcolor="#D4C0A1"  
    Demonstração:
    Eu fiz questão de usar uma outfit 64px para mostrar o que acontece quando for assim.
    Optei por upar em mais de 1 servidor.
    Arquivos:
    Outfitter + Character View GoogleDrive
    Outfitter + Character View Mediafire
    Outfitter + Character View Mega
    Outfitter + Character View.zip
    SCAN:
    https://www.virustotal.com/gui/file/4e35ee20732efb1e7df9196416bd40b05ea92230f629f9ba427d32dfdb7b8f71/detection
    Creditos: 
    Eu: Kira Conquest/Kira Stark - por editarr e adicionar skill bar
    averatec do Otland onde eu peguei o outfitter
    eu não lembro onde eu peguei o script mana e health bar
  10. Gostei
    Orientalz deu reputação a thiagobji em [NPC] Vender Spells pelo NPC   
    Olá galera do TibiaKing, a um tempo eu estava querendo um NPC que vendia spells (magias)

    Porém, eu não achava, na época não tinha, então, eu fui no ##### e pedi lá esse NPC que vendia spells pelo NPC, ai o "VODKART", postou esse NPC lá e me ajudou, e se não me engano, não existe esse NPC aqui no TK, então agora irá ter.

    Chega de papo/enrolação e vamos para o que interessa.

    Abra a pasta do seu OT/data/npc/NOME DO SEU NPC.xml e coloque isso:



    needlearn="0" Você coloca assim: needlearn="1"

    EXPLICANDO SOBRE O NEEDLEARN:

    needlearn="1" -- Aqui está que precisa comprar a magia no NPC para poder usa-la.
    needlearn="0" -- Aqui está que não precisa comprar a magia no NPC para poder usa-la.

    CRÉDITOS:
    Vodkart (Pelo Script)
    Thiagobji (Pelo Tópico, Pelo Pedido e por postar no TibiaKing.com)

    É ISSO GALERA, QUALQUER DÚVIDA SÓ POSTAR.
  11. Gostei
    Orientalz deu reputação a Vodkart em (Resolvido)Todos ganham item ao matar boss   
    function onDeath(cid, corpse, deathList) local monsters, t = {"Demon","Hydra"}, {} local items = {{2160,1},{2148,2}} -- ITEM ID, QUANTIDADE if isMonster(cid) and isInArray(monsters, getCreatureName(cid)) then for _, players in pairs(deathList) do if isPlayer(players) then local give = true if #t > 0 and isInArray(t, getPlayerIp(players)) then give = false end t[#t+1] = getPlayerIp(players) if give then for i = 1, #items do doPlayerAddItem(players, items[i][1], items[i][2]) end end end end return true end return true end  
     
    tag
     
    <event type="death" name="AddItens" event="script" value="nome do seu script.lua"/>  
    adc no monstro
     
    <script> <event name="AddItens"/> </script>  
     
  12. Gostei
    Orientalz deu reputação a Bodak Reborn em (Resolvido)Todos ganham item ao matar boss   
    creaturescripts/script
    nome_arquivo.lua
    local config = { monster = {"Demon", "Dragon"}, -- nome dos monstros, separado por vírgulas. item = {[1] = 2160, [2] = 2159}, -- [um numero maior que o anterior] = ID do item1, ID do item2, ID do item3... qnt = {[1] = 2, [2] = 5}, -- [um numero maior que o anterior] = quantidade do item1, quantidade do item2, quantidade do item3... effect = 27, -- efeito ao matar o monstro. } function onKill(cid, target) if isInArray(config.monster, getCreatureName(target)) then for i = 1, #config.item do doPlayerAddItem (cid, config.item[i], config.qnt[i]) end doPlayerSendTextMessage (cid, 19, "Você receberá uma recompensa por derrotar o "..getCreatureName(target)..".") doSendMagicEffect (getThingPos (cid), config.effect) end return true end XML:
    <event type="kill" name="killBossReward" event="script" value="nome_arquivo.lua"/> Registre o evento em login.lua:
    registerCreatureEvent(cid, "killBossReward")  
  13. Gostei
    Orientalz deu reputação a Bruno Carvalho em [TalkAction] Player Check System   
    Versão: 3.2
    Versão de tibia: 9.4+ (Funciona em anteriores)
    Descrição: Existem muitos scripts que ajudam o administrador do servidor a cuidar dele, um deles é saber coisas sobre quem está jogando e se está sendo honesta. Eu peguei alguns scripts e estou juntando em um para diminuir o tamanho e ter uma fácil verificação.

    TAG:
    <talkaction log="yes" words="!p;/p" access="5" event="script" value="playercheck.lua"/> Script:
    Talkactions/scripts/playercheck.lua

    local config = { check = {"check", "viwer", "verificar", "ver"}, delete = {"del", "delete", "deletar"}, search = {"search", "procurar"} } function getItemsInContainer(cont, sep) local text = "" local tsep = "" local count = "" for i=1, sep do tsep = tsep.."-" end tsep = tsep..">" for i=0, getContainerSize(cont.uid)-1 do local item = getContainerItem(cont.uid, i) if isContainer(item.uid) == FALSE then if item.type > 0 then count = "("..item.type.."x)" end text = text.."\n"..tsep..getItemNameById(item.itemid).." "..count.." ("..item.itemid..")" else if getContainerSize(item.uid) > 0 then text = text.."\n"..tsep..getItemNameById(item.itemid).." ("..item.itemid..")" text = text..getItemsInContainer(item, sep+2).." ("..item.itemid..")" else text = text.."\n"..tsep..getItemNameById(item.itemid).." ("..item.itemid..")" end end end return text end function onSay(cid, words, param, channel) local slotName = {"Cabeça", "Amuleto", "Backpack", "Armor", "Mao Direita", "Mao Esquerda", "Legs", "Pés", "Ring", "Ammo Slot"} local t = string.explode(param, ",") if(table.isStrIn(param, config.check)) then if getPlayerGroupId (cid) >= 5 then local player = getPlayerByNameWildcard(t[2]) if isPlayer(player) == TRUE then local text = getPlayerName(player).."'s Equipment: " for i=1, 10 do text = text.."\n\n" local item = getPlayerSlotItem(player, i) if item.itemid > 0 then if isContainer(item.uid) == TRUE then text = text..slotName[i]..": "..getItemNameById(item.itemid).." ("..item.itemid..") "..getItemsInContainer(item, 1) else text = text..slotName[i]..": "..getItemNameById(item.itemid).." ("..item.itemid..")" end else text = text..slotName[i]..": Empty" end end doShowTextDialog(cid, 6579, text) else doPlayerSendCancel(cid, "This player is not online.") end end elseif(table.isStrIn(param, config.delete)) then if getPlayerGroupId(cid) >= 5 then local player = getPlayerByNameWildcard(t[3]) if isPlayer(player) == TRUE then count = t[4] if(not t[4]) then count = 1 end if getPlayerItemCount(player, t[2]) > 0 then if doPlayerRemoveItem(player, t[2], count) then doPlayerSendCancel(cid, "Item Deletado.") else doPlayerSendCancel(cid, "Este player não esta quantidade.") end else doPlayerSendCancel(cid, "Este player não tem o item.") end end end elseif(table.isStrIn(param, config.search)) then if getPlayerGroupId (cid) >= 5 then local player = getPlayerByNameWildcard(t[3]) local result = db.getResult("SELECT name, online FROM players WHERE id IN (SELECT player_id FROM player_items WHERE itemtype = ".. t[2] ..");") local msg = "Resultados da busca pelo item ".. t[2] .." em seu banco de dados:\n\n" if result:getID() ~= -1 then while true do local name = result:getDataString("name") local online = result:getDataInt("online") msg = msg .. name .." [".. (online == 1 and "Online" or "Offline") .."]\n" if not result:next() then break end end else msg = msg .. "O item não foi encontrado em nenhum jogador." end doShowTextDialog(cid, t[2], msg) end end return true end Explicação:
    Quando o god digita:
    /p check, (PNAME) - Ele verifica os items que o player tem.
    /p del, (ID), (PNAME), (COUNT) - Ele deleta o item de determinado player (Se não colocar o count ele irá remover somente 1).
    /p search, (ID) - Ele verifica quantos players tem tal item e se está online.

    Créditos:
    Oneshot
    CaioODemais
    Comedinha (Bruno Carvalho)
     
  14. Gostei
    Orientalz deu reputação a ViitinG em [creaturescripts] Senha para porta   
    Bom para quem não sabe como funciona o script,é basicamente uma senha para conseguir abrir uma porta e após um tempo a porta se fecha automaticamente,podendo ser configurado o tempo/senha/porta.
     
    • Adicionando o script •
     
    Em "data/creaturescripts/creaturescripts.xml" adicione está tag :
    <event type="textoparaporta" name="Senha" event="script" value="senhaporta.lua"/> Em "data/creaturescripts/scripts/login.lua" adicione está tag no final do script :
    registerCreatureEvent(cid, "Senha") Em "data/creaturescripts/scripts/senhaporta.lua" adicione este script :
    local uniqueids = {8049, 8050} local passwords = { ["TibiaKing"] = {doorpos = {x = 163, y = 36, z = 7}, doorid = 6257, blackboardpos = {x = 162, y = 36, z = 7}, blackboardid = 1811, uniqueid = 8049, doorclosetime = 10}, ["TK"] = {doorpos = {x = 1000, y = 1000, z = 7}, doorid = 1213, blackboardpos = {x = 1000, y = 1000, z = 7}, blackboardid = 1811, uniqueid = 8050, doorclosetime = 10} } function onTextEdit(cid, item, newText) local x = passwords[newText] local function onCloseDoor() if(getTileItemById(x.doorpos,x.doorid+1).uid) > 0 then doTransformItem(getTileItemById(x.doorpos,x.doorid+1).uid, x.doorid) doSendMagicEffect(x.doorpos, CONST_ME_MAGIC_RED) end end for _, check in pairs(uniqueids) do if item.uid == check then if x and item.uid == x.uniqueid then if(getTileItemById(x.doorpos,x.doorid).uid) > 0 then doTransformItem(getTileItemById(x.doorpos,x.doorid).uid, x.doorid + 1) doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_GREEN) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Sua Senha "'..newText..'" esta correta, voce pode entrar.') addEvent(onCloseDoor,x.doorclosetime*1000) doRemoveItem(item.uid, 1) local blackboard = doCreateItem(x.blackboardid,1,x.blackboardpos) doItemSetAttribute(blackboard, "uid", x.uniqueid) else doRemoveItem(item.uid, 1) local blackboard = doCreateItem(x.blackboardid,1,x.blackboardpos) doItemSetAttribute(blackboard, "uid", x.uniqueid) doPlayerSendCancel(cid, 'A porta ja esta aberta, feche-a ou espera ela se fechar.') end else doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) doPlayerSendCancel(cid, 'Sua senha "'..newText..'" esta incorreta.') end end end return true end • Configurando •
     
     
    Creditos : Limos
     
    Imagens :



  15. Gostei
    Orientalz deu reputação a LeoTK em (Resolvido)Drop Random com porcentagem   
    Fala galera procurei muito mas não consegui achar, alguém poderia fazer um script para dropar items randomicamente configuráveis de mais de um monstro por exemplo
     
    os monstros minotaur,orc tem 50% de chance de dropar um machado ou uma espada e 5% de chance de dropar as duas o machado e a espada no mesmo loot estou precisando muito galera se alguém puder dar essa força
     
    tfs 0.3.6 8.54
  16. Gostei
    Orientalz deu reputação a Elwyn em (Resolvido)Tile que enxe stamina   
    Essas mensagens são do print que deixei sem querer. Não apareceram outras mensagens?
     
    Se você fizer essa talkaction:
    function onSay(cid, words, param)     local value = param and tonumber(param) or 1     doPlayerSetStamina(cid, value)     return true end Com a seguinte tag:
        <talkaction access="0-4" words="!teste" event="script" value="stamina.lua" /> E mandar no tibia a seguinte mensagem:
     
     
     
    Sua stamina muda para 00:20?
     
    A propósito, o script que estou usando no OTX é exatamente este:
     



     
    E funciona perfeitamente. Note que é apenas o script anterior sem o print e com um delay maior no regen de stamina.
  17. Gostei
    Orientalz deu reputação a Vodkart em [Sistema] Battlefield Event! V.1   
    Mapa BattleField Feito Por AnneMotta :

    Mapa Battlefield.rar

    Scan: https://www.virustot...sis/1346548669/


    Imagens do mapa



    Descrição:

    - O evento é automático e acontece em determinado dia e hora da semana
    - Logo após é aberto um teleport então apenar um número limitado de players entra no evento
    - São formados por dois times, os "Black Assassins" e os "Red Barbarians"
    - Os times são balanceados automaticamente, quando o último jogador entra, esse teleport é fechado e depois de 5 minutos o evento começa, os 5 minutos são para os players ter tempo de planejar um ataque.
    - O sistema tem por finalidade matar todos do time inimigo, e os players que sobreviverem recebem um prêmio.

    Bônus:

    - Durante o evento é mostrado na tela somente dos jogadores que estão no evento um placar de times.

    - Até o último player entrar no evento, ficam mandando broadcast dizendo quanto players faltam para dar inicio ao jogo.

    - Se o evento abrir e não atingir a meta de players colocada, o evento é finalizado e os players voltam para o templo.




    Lembre-se:

    - De colocar Pvp Tool na área
    - De colocar área NoLogout


    Imagens:




    Instalação:

     
    Data > Lib       Data > CreatureScript > Script     Data > GlobalEvents > Scripts       Data > Movements > Script             Configurações do evento
  18. Gostei
    Orientalz deu reputação a VitorSubhi em [Sistema] Battlefield Event! V.1   
    Sistema muito bem elaborado, porém possuem pessoas que gostariam de ativar o evento manualmente a qualquer momento, além do evento automático...
    Então resolvi criar um Talkaction, para contribuir, para instalá-lo é muito fácil... Basta criar um arquivo chamado Battlefield em Data/Talkactions/Scripts, e adicionar:
    function onSay(cid, words, param)     if(param == '') then         return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "/battlefield players"), TRUE     end     if (tonumber(param) %2 == 0) then         local tp = doCreateItem(1387, 1, _Lib_Battle_Info.tpPos)         doItemSetAttribute(tp, "aid", 45000)         CheckEvent(_Lib_Battle_Info.limit_Time)         doBroadcastMessage("The event BattleField was opened. We are waiting "..param.." Players! Team divided into "..((param)/2).." VS "..((param)/2)..".")         return setGlobalStorageValue(_Lib_Battle_Info.storage_count, param)     end     return TRUE end E em seguida adicionar ao arquivo Data/Talkactions/Talkactions.xml, a seguinte linha:
    <talkaction words="/battlefield" log="yes" access="5" event="script" value="Battlefield.lua"/>  
    Como iniciar o evento, basta utilizar o seguinte comando (/battlefield players).
    Obs.: O número de players deve ser par, considerando que haverá número de players iguais nos dois times.
  19. Gostei
    Orientalz deu reputação a Vodkart em [PEDIDO] Low level protect   
    levelprotection.lua

    function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) local level = 50 if isPlayer(cid) and getPlayerLevel(cid) < level then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doCreatureAddHealth(cid, getCreatureMaxHealth(cid), 65535, 256, true) doCreatureAddMana(cid, getCreatureMaxMana(cid)) doRemoveConditions(cid, false) return false end return true end TAG <event type="preparedeath" name="ProtectLevel" event="script" value="levelprotection.lua"/> caso não tenha registrado no login.lua adc registerCreatureEvent(cid, "ProtectLevel")
  20. Obrigado
    * Áudio de saudação *
     
    Neste tutorial, irei ensinar alguns passos inicias para utilizar o OTClientV8
     
    1º Passo: Como fixar ip e colocar a spr no local correto
     
    - Faço o download no link: https://github.com/OTCv8/otclientv8
    - Extraia o arquivo
    - Dentro da pasta principal, vá até o arquivo init.lua
     
    Neste trecho, precisará remover os comentários --[[ e ]]:
    Servers = { --[[ OTClientV8 = "http://otclient.ovh/api/login.php", OTClientV8c = "otclient.ovh:7171", OTClientV8Test = "http://otclient.ovh/api/login2.php", LocalTestServ = "127.0.0.1:7171:1098:110:30:93" ]] }  
    Ficando assim:
    Servers = { Meuserver = "127.0.0.1:7171:1098" } ficando na seguinte configuração NOME = "IP:PORTA:VERSÃO"
     
     
    Para fixar e não aparecer a lista de servers, basta alterar:
    ALLOW_CUSTOM_SERVERS = true -- if true it shows option ANOTHER on server list  
    Para:
    ALLOW_CUSTOM_SERVERS = false -- if true it shows option ANOTHER on server list  
     
    Caso queira trocar o nome do aplicativo é só mudar
    g_app.setName("OTCv8") trocando o "OTCv8" para o nome desejado, lembrando que isto irá alterar apenas o nome da janela do aplicativo
     
     
    Incluir a SPR/Dat:

    Para incluir, basta ir na pasta data, criar uma nova pasta e renomear com o nome "things" e depois criar uma outra pasta dentro dela com o nome da versão que desejar utilizar, exemplos:
    * 800
    * 860
    * 910
    * 1100
    dentro desta pasta, incluir as respectivas spr/dat da versão correspondente 

    Um vídeo objetivo do conteúdo citado acima:
     
     
     

     
    2º Passo: Remover campo "Token" da tela inicial
     
    Apesar de ser algo simples, vejo muitos perguntarem como remover este campo, vamos lá:

    - Vá até a pasta modules -> client_entergame
    - Abra o arquivo entergame.lua
    - Na linha 380 remova ou comente o trecho:
    enterGame:getChildById('accountTokenTextEdit'):clearText()  
    - Na linha 412 remova ou comente o trecho:
    G.authenticatorToken = enterGame:getChildById('accountTokenTextEdit'):getText()  
    - salve o arquivo
    - na mesma pasta, abra o arquivo entergame.otui
    - da linha 32 a 44 remova ou comente o seguinte trecho:
    MenuLabel !text: tr('Token') anchors.left: prev.left anchors.top: prev.bottom text-auto-resize: true margin-top: 8 TextEdit id: accountTokenTextEdit anchors.left: parent.left anchors.right: parent.right anchors.top: prev.bottom margin-top: 2  
    Um vídeo objetivo do conteúdo citado acima:
     
     

    3º Passo: como encriptar os arquivos
     
    - Recomendo inicialmente criar uma cópia da pasta que ira encriptar, pois não é reversivo
    - Copie o endereço da pasta onde estão os arquivos
    - Abra o cmd e navegue até esta pasta utilizando o comando cd (link do endereço da pasta)
    - utilize o comando otclient_dx.exe --encrypt
    - Aguarde o sistema sinalizar que os arquivos foram encriptados 
     
    PS: a pasta do modulo bot ( modules -> game_bot ) não pode ser encriptado, remova ela antes deste processo.
     
    Um vídeo objetivo do conteúdo citado acima:
     
     

    4º Passo: Utilizando o auto update
     
    IMPORTANTE:
    Este processo precisa ser feito exatamente como demonstrado, qualquer link errado o sistema não irá funcionar.
     
    - Dentro da pasta API, abra o arquivo updater_advanced.php
     
    em $files_dir = "/var/www/otclient/files"; é a pasta onde conterá os arquivos do otclient para download, lembrando que o caminho precisa estar especificada desde a pasta inicial
    em $files_url = "http://otclient.ovh/files"; é o link que você pode utilizar o navegador para acessar a pasta "files" a mesma pasta do processo anterior.
    em $checksum_update_interval = 60; é o tempo em segundos, que o update levará para checkar se há alguma atualização ( não é necesário alterar )
     
    - Na sua vps, dentro da pasta do SITE, cria uma pasta chamada API e outra pasta dentro dela chamada FILES
    - Envie o arquivo updater_advanced.php para a pasta API
    - De permissão 777 para pasta e subpasta API
     
    * voltando aos arquivos do otclient * 
     
    - Abra o arquivo init.lua
     
    aconselho alterar o "APP_NAME = "otclientv8", pois é o nome da pasta que ficará salva nos arquivos temporários, isso evitará conflitos com versões já existe no pc
    altere o campo updater, colocando o endereço apontado para o arquivo updater_advanced.php enviado para o seu site nos passos anteriores.
     
    - Após as edições anteriores, salve o arquivo 
    - Compacte os arquivos data, layout, modules e init.lua, renomeando para data.zip ( obrigatoriamente precisa ser zip )
    - Exclua os arquivos zipados e os demais desnecessários para os jogadores.
     
    Atenção: o auto update só funcionará se os arquivos estiverem zipado conforme descrito.
     
    - Envie todos os arquivos para a pasta files em sua vps ( recomendo zipar para enviar, poupara processamento e tempo de envio )
    - Após enviar, extraia os arquivos NA VPS, os arquivos no pc devem continuar zipado
    - Atenção nesta parte, as pastas e arquivo data / layout / modules / init.lua necessáriamente precisam estar na mesma pasta do executáveis, conforme time 4:20 no vídeo que deixarei disponível no final.
     
    lembrando: o update só aceitará arquivos editados após o tempo estipulado em checksum_update_interval , se fizer edições antes deste tempo, o sistema não irá considerar
     
     
    Um vídeo objetivo do conteúdo citado acima:
     
     
     
  21. Gostei
    Orientalz 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. Gostei
    Orientalz deu reputação a Wise em Item para o last hit / mais dano   
    Ambos (lasthitkiller / mostdamagekiller) recebem um item?
    Se for:

    bossreward.lua (data\creaturescripts\scripts):
    local lasthit = {5432, 1} -- lasthitkiller = {itemid, amount} local mostdmg = {5432, 1} -- mostdamagekiller = {itemid, amount} function doPlayerAddDepotItems(pid, item, count) -- function by magus - modified by vodkart     local item, count = {item}, {(count or 1)}          for k, v in ipairs(item) do         local ls = db.getResult("SELECT `sid` FROM `player_depotitems` WHERE `player_id` = "..pid.." ORDER BY `sid` DESC LIMIT 1")         return db.executeQuery("INSERT INTO `player_depotitems` (`player_id`, `sid`, `pid`, `itemtype`, `count`, `attributes`) VALUES ("..pid..", "..(ls:getDataInt("sid")+1)..", 101, "..v..", "..count[k]..", '')") or false     end      end function onDeath(cid, corpse, deathList)     local last, most = deathList[1], deathList[2]          if isPlayer(last) then         if getPlayerFreeCap(last) > getItemWeightById(lasthit[1], lasthit[2]) then             doPlayerAddItem(last, lasthit[1], lasthit[2])             doPlayerSendTextMessage(last, MESSAGE_INFO_DESCR, 'You have received a reward for being the player that gave the last hit on the BOSS.')         else             doPlayerAddDepotItems(last, lasthit[1], lasthit[2])             doPlayerSendTextMessage(last, MESSAGE_STATUS_CONSOLE_BLUE, 'You have received a reward for being the player that gave the last hit on the BOSS. But you don\'t have enought cap, so it was sent to your depot.')         end     end          if isPlayer(most) then         if getPlayerFreeCap(most) > getItemWeightById(mostdmg[1], mostdmg[2]) then             doPlayerAddItem(most, mostdmg[1], mostdmg[2])             doPlayerSendTextMessage(most, MESSAGE_INFO_DESCR, 'You have received a reward for being the player that gave the most damage on the BOSS.')         else             doPlayerAddDepotItems(most, mostdmg[1], mostdmg[2])             doPlayerSendTextMessage(most, MESSAGE_STATUS_CONSOLE_BLUE, 'You have received a reward for being the player that gave the most damage on the BOSS. But you don\'t have enought cap, so it was sent to your depot.')         end     end          return true end

     
    Tag - creaturescripts.xml (data\creaturescripts):
    <event type="death" name="BOSSReward" event="script" value="bossreward.lua"/>

     
    Registre o creature event no XML do monster:
    <script> <event name="BOSSReward"/> </script>
  23. Gostei
    Orientalz deu reputação a Adriano SwaTT em (Resolvido)Tile que enxe stamina   
    Teste este:
    Registre em movements.xml as tags abaixo:

    <movevent type="StepIn" actionid="12129" event="script" value="tile_stamina.lua"/>     <movevent type="StepOut" actionid="12129" event="script" value="tile_stamina.lua"/>  
    Crie o arquivo tile_stamina.lua e cole o código abaixo dentro:

    ---------- Script by: Adriano Swatt -------- local maxstamina = 2520  -- quantidade máxima de Stamina (Não sei se é este valor mesmo) local qtdd = 1 -- quantidade de Stamina é adicionada local tempo = 5 -- em segundos para cada regeneração local tileid, action = 412, 12129 -- ID do Piso de Stamina, ActionID usada no Piso ----------- FIM DAS CONFIGURAÇÕES ----------- function onStepIn(cid, item, position, fromPosition) local getpos = getPlayerPosition(cid) local tilepos = getTileItemById(getpos, tileid).actionid local getsta = getPlayerStamina(cid)     if getsta < maxstamina and isPlayer(cid) then         addEvent(GetStamina, 100, cid)     else         doTeleportThing(cid, fromPosition)         doPlayerSendCancel(cid, "Sua stamina já está cheia.")     end return true end function onStepOut(cid, item, position, fromPosition)     stopEvent(GetStamina) return true end function GetStamina(cid) local getpos = getPlayerPosition(cid) local tilepos = getTileItemById(getpos, tileid).actionid local getsta = getPlayerStamina(cid)     if tilepos == action then             if getsta < maxstamina and isPlayer(cid) then             doPlayerSendCancel(cid, "Sua stamina está subindo.")             setPlayerStamina(cid, getsta + qtdd)             addEvent(GetStamina, tempo * 1000, cid)         else             doTeleportThing(cid, fromPosition)             doPlayerSendCancel(cid, "Sua stamina já está cheia.")         end     end return true end  
    Poste o resultado.
    Boa sorte.
  24. Gostei
    Orientalz deu reputação a Elwyn em (Resolvido)Tile que enxe stamina   
    eventsId = {} local function rechargeStamina(cid)     if not isPlayer(cid) then         eventsId[cid] = nil         return     end     doPlayerSetStamina(cid, getPlayerStamina(cid) + 1)     eventsId[cid] = addEvent(rechargeStamina, 60 * 1000, cid) end function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)     if isPlayer(cid) then         eventsId[cid] = addEvent(rechargeStamina, 60 * 1000, cid)     end     return true end function onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor)     if isPlayer(cid) then         stopEvent(eventsId[cid])         eventsId[cid] = nil     end     return true end  
    Agora ele só adicionará a cada minuto.
  25. Curtir
    Orientalz deu reputação a LeoTK em [Modern Acc] Widget Promocional no Home   
    Salve galera bom uma vez cheguei a pesquisar e não achei nada do gênero porém achei esse script e funcionou perfeitamente espero que façam bom uso ele é um widget promocional que vai aparecer apenas se acessar o home do site ficando assim
     

     
    Bom analisando o código eu percebi uma pequena falha futura que no caso seria a biblioteca de jquery então vou deixar os mesmo para baixar \/
     
    jquery.popupoverlay.js
    jquery-1.8.2.min.js
     
    Bom o código que vou deixar já esta configurado para procurar as jquery na pasta raiz do site do modern ou seja pasta htdocs ou www onde fica a pasta
    templates
    system
    public
    etc...
     
    Ficando assim
     

     
    Código \/
     
    Instalação \/
     
    Para fazer funciona apenas no home do modern acc sera necessário adicionar esse código no home que se localiza em
     
    \pasta do site\system\application\views - abra o arquivo home.php
     
    No começo do arquivo vai ter <?php coloque o código acima ficando assim
     
    <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Popup by Dezon</title> </head> <body> <!-- Conteudo do popup: --> <div id="my_popup"> <!-- ########################## # Editar a partir daqui: # ########################## --> <p align="center"> <img src="http://i.imgur.com/07XkCV0.png" class="imgBorder"> </p> <p align="center"> <button class="my_popup_close btn btn-danger"> Fechar </button> </p> <!-- ####################### # Fim da edicao aqui! # ####################### --> </div> <!-- jQuery --> <script src="/jquery-1.8.2.min.js"></script> <!-- jQuery Popup Overlay --> <script src="/jquery.popupoverlay.js"></script> <script> // Nao mexa se nao sabe do que se trata!!! $(document).ready(function() { $('#my_popup').popup({ transition: 'all 0.3s', scrolllock: true, autoopen: true }); }); </script> </body> </html> <!-- Pagina de popup criada por Dezon, exclusivamente para o TibiaKing.com Por favor, manter esses creditos!!! Dezon - [email protected] --> <?php Se reparar todo o código esta adicionado e depois vem o código existente no home.php depois disso salve e pronto basta alterar o link da imagem para uma imagem promocional criada ao gosto de vocês
     
    Créditos
    ChaitoSoft
    @dezon

Informação Importante

Confirmação de Termo