Ir para conteúdo

12Bryan12

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    12Bryan12 deu reputação a xWhiteWolf em (Resolvido)Quest com Tempo   
    os.time é pra contar o tempo em segundos desde 1 de janeiro de 1970. Quando vc usa a função os.time ele retorna o valor de tempo que se passou desde 1 de janeiro de 1970. O ideal é utilizar os.date que tem um critério um pouco mais legal dependendo da variável indicadora que vc utilizar. Mas não tem nada a ver com oque vc pediu aí. Pra fazer algo com tempo vc usa o addEvent e ele funciona mais ou menos assim:
    Observe um script que utiliza addEvent que jajá eu explico
     
    function onUse(cid, item, frompos, item2, topos) local tempo = 8000 local wall1 = {x=612, y=345, z=7, stackpos=1} local pos1 = getThingfromPos(wall1) local wall2 = {x=653, y=345, z=7, stackpos=1} local pos2 = getThingfromPos(wall2) local monster1 = {x=615, y=345, z=7, stackpos=1} local posmonster1 = getThingfromPos(monster1) local monster3 = {x=654, y=345, z=7, stackpos=1} local idparede = 9788 local alavanca = {x=610, y=344, z=7, stackpos=1} local alavancapos = getThingfromPos(alavanca) function wait1(wall1) doCreateItem(idparede,1,wall1) end function wait2(wall2) doCreateItem(idparede,1,wall2) end function wait3(alavanca) doTransformItem(item.uid,1946) end if item.uid == 7777 and item.itemid == 1945 then if pos1.itemid ~= 0 and pos2.itemid ~= 0 then doRemoveItem(pos1.uid,5) doSendMagicEffect(pos1,12) doRemoveItem(pos2.uid,5) doSendMagicEffect(pos2,12) doCreateMonster("Juggernaut",monster1) doSendMagicEffect(monster1,13) doPlayerSendTextMessage(cid,25, "You have ".. tempo/1000 .." seconds to finish the quest") addEvent(wait1,tempo,wall1) addEvent(wait2,tempo,wall2) addEvent(wait3,tempo,alavanca) else doPlayerSendCancel(cid,"You can't start the quest twice.") end elseif item.uid == 7777 and item.itemid == 1946 then doTransformItem(item.uid,item.itemid-1) for x = monster1.x, monster3.x do for y = monster1.y, monster3.y do for z = monster1.z, monster3.z do local mob = getTopCreature({x=x, y=y, z=z}).uid if mob ~= 0 and isMonster(mob) then doRemoveCreature(mob) else doPlayerSendCancel(cid,"Sorry, not possible.") end end end return true end end return true  end addEvent(wait1,tempo,wall1) ele faz o evento chamado wait1 dali a um tempo igual a tempo (no começo do script eu falei que tempo era 8 segundos) e na posição wall1. 
    function wait1(wall1) doCreateItem(idparede,1,wall1) end a função wait1 cria um item de idparede na posição wall1. Então essa quest nada mais faz doque criar uma parede que impede a passagem dali a 8 segundos.
    Seguindo essa lógica da pra fazer a quest que você quer. Só criar uma função que pega o valor de tempo = 0 e adiciona 1 até o valor de  tempo final, dai você coloca addEvent (função X, tempo*1000
    executar determinada função em tempo*1000 mas se o tempo muda então ele vai ficar executando a função de X em X segundos de acordo com o valor de tempo. Para tempo = 1 será 1 segundo, para tempo = 2 será dali a 2 segundos e assim por diante.
     
    AGORA SOBRE A OUTRA DÚVIDA

    Para colocar tempo nos storages vc só tem que fazer isso daqui
    local daysvalue = 7 * 24 * 60 * 60 time = os.time() + daysvalue setPlayerStorageValue(cid, 13340, time) perceba que ele usa os.time, então o script é basicamente isso daqui:
    tempo que storage vai ficar: 7 dias (7*24*60*60)
    tempo = segundos desde 1 de janeiro de 1970 até agora + 7 dias
    dar storage pro player 13340 durante tempo.
     
     
    Espero ter ajudado, qualquer dúvida dá uma pesquisada ou me manda PM
  2. Gostei
    12Bryan12 deu reputação a Natanael Beckman em [GlobalEvents] ServeSave - Shutdown/Automático   
    Galera é um script muito simples, porém pra mim é muito ÚTIL.
     
    Abra a pasta data/globalevents/scripts crie um arquivo .lua com o nome GlobalSave.lua, em seguida adicone o code:
    function prepareShutdown(minutes)         if(minutes <= 0) then                 doSetGameState(GAMESTATE_SHUTDOWN)                 return false         end         if(minutes == 1) then                 doBroadcastMessage("Server is going down in " .. minutes .. " minute for global save, please log out now!")         elseif(minutes <= 3) then                 doBroadcastMessage("Server is going down in " .. minutes .. " minutes for global save, please log out.")         else                 doBroadcastMessage("Server is going down in " .. minutes .. " minutes for global save.")         end         shutdownEvent = addEvent(prepareShutdown, 60000, minutes - 1)         return true end function onTime()     return prepareShutdown(5) -- Quantos minutos pra executar o ServeSave. end Ajustes:
    Quando quiser modificar os minutos altere:  -return prepareShutdown(5) - (5) = 5 minutos, eu recomendo no mínimo 5 minutos, em outras palavras não mexa. Em globalevents.xml adicione a tag seguinte:
    <globalevent name="GlobalSave" time="05:30" event="script" value="GlobalSave.lua"/> No meu ServeSave é feito as 05:30 da manhã, modifique pro horário desejado!
     
    Em config.lua verifique essa regra:
    Se tiver TRUE deixa, assim ele fecha o .exe se não tiver no seu config.lua não tem problema closeInstanceOnShutdown = true -
    -
    -
    Esse tutorial é só isso, clique em GOSTEI, e comente no tópico, muito obrigado!
     
    --------------------------------------------------------------------------------------------------------------------------------------------------------
    AUTO RESTART
    --------------------------------------------------------------------------------------------------------------------------------------------------------
    Pra você que utiliza Windows esse é perfeito:
    Dezon OT Admin [restarter]
     
    Pra você que utiliza Linux:
     
    Baixe esse arquivo, TFS.SH, bote dentro da pasta do seu OT.
    Esse arquivo está configurado pra abrir outro arquivo chamado tfs caso o seu seja outro nome mude pra esse, tfs.
    Sempre que for abrir seu OT execute esse comando ./tfs.sh& e assim toda vez que o OT cair ele renicia automaticamente.
  3. Gostei
    12Bryan12 deu reputação a Natanael Beckman em Auto-Backup Database   
    Galera esse script é um auto backup da sua database, quem gosta de prevenir vamos ao tutorial.
     
    Backup.sh
     
    Criei uma pasta em qualquer local no linux, no meu caso eu fiz uma pasta com o nome database que está localizada na pasta home.
    home/database/backup.sh Certo vamos configura o arquivo, dentro dele já vem tudo explicado mais vou dar um reforço, dentro do arquivo backup.sh contém:
    #!/bin/bash CAMINHO="/home/database/" <--- local onde vai ficar salvo os backups NOMEBACKUP="server-backup" <--- nome do backup USER="root" <--- não mexe SENHA="nitendo64" <--- senha da database BANCO="casa_blanca" <--- nome da database #Nao mexer daqui pra baixo TEMPO="$(date +'%d-%m-%Y-%H-%M')" ##### #Rodando o backup ##### if [[ -z "$USER" || -z "$SENHA" || -z "$BANCO" ]]; then     echo "Por favor preencha o usuário, senha e banco de dados nas configurações." else     mysqldump -u$USER -p$SENHA $BANCO > $CAMINHO"/"$NOMEBACKUP"-"$TEMPO".sql" fi Certo configurado né, vamos fazer um teste:
    Acessa a pasta:
    cd /home/database Da permissão pros arquivos dentro dela, no caso o backup.sh:
    chmod 777 -R * Roda o script pra um teste:
    ./backup.sh Veja na imagem do meu teste, já aparece ali a database, então ta ok deu certo as configurações:
     

     
    Tudo bem, agora vamos configura pra ficar automático, pra todos os dias o script executar o backup em um certo horário:
    crontab -e Se aparecer algo tipo seleciona alguma opção, selecione Nano, que provavelmente seja numero 2...
     

    ----------------------------------------------------------------------------------
     
    Se não aparecer vai direto pra isso:
     

     
    Digite isso dentro do nano, como você ver na imagem acima já tem adicionado:
    0 6,21 * * * sh /home/database/backup.sh ctrl+x y da ENTER No meu caso botei pro script ser executado as 06:00hrs e 21:00hrs, então todo os dias nesse horário o script vai fazer o backup pra essa pasta que configurei, caso queria mudar o horário a logica do comado é clara né.
     
    Caso queria deixar de minutos em minutos abaixo observe um exemplo de 5 em 5 minutos:
    */5 * * * * sh /home/database/backup.sh Caso queria deixar de horas em horas abaixo observe um exemplo de 1 em 1 hora:
    0 */1 * * * sh /home/database/backup.sh Qualquer duvida postem, clica em GOSTEI, valeu.
     
    Créditos total:
    Joffily Ferreira
  4. Gostei
    12Bryan12 recebeu reputação de jpsoave em Mega MageBomb 8.61   
    Desculpa reviver o topico, mais é que preciso muito desse BOT e o link ta off ;s, todos os sites que achei tem milhares de virus '-'
    Se tiver como por outro link ae '-'
     
  5. Gostei
    12Bryan12 deu reputação a Danilonilo8 em Dragon Ball: The History   
    Tópico sendo atualizado diariamente


    "Aceitamos qualquer um que seja competente e queira ajudar"
     
     
     


     
     

    Para os bem informados




    Dragon Ball: The History
    Esse projeto será um servidor baseado nos otservers de Tibia, terá os mesmos gráficos, mas com jogabilidade um pouco diferente, e mais fantástica.

    Muitos irão pensar que essa será somente mais uma modificação barata de Wodbo, mas não, ele terá seus sistemas, sprites e ideias próprias da equipe e seus fãs, como sprites na perspectiva 45º e sistemas "inovadores de verdade", como o attack system, criado pelo nosso programador Tony.

    Ele será baseado em todos os episódios de Dragon Ball, do início do Dragon Ball até o fim do Dragon Ball GT, e poderemos pensar se incluimos o Dragon Ball Kai.

    Como por exemplo, podemos escolher o personagem Goku e começaremos numa nave espacial que caiu na Terra, em seguida, o bebê Goku terá que falar com seu "avô" Son Gohan, e nisso pulamos essa parte para o futuro, em que Goku está com aquela típica roupa roxa, quando criança.

    Se escolhermos o personagem Vegeta, teremos que inventar uma história.

    Conversas a parte:
    Esse projeto foi criado pensando em divertir os jogadores, com um jogo que realmente funcione dessa maneira, e não contenha bugs.

    Queremos proporcionar ao jogador também um conforto nas áreas do mapa, contendo não só paisagens bonitas, mais quanto mais parecidas ao desenho puderem.

    O jogador incorporá o seu personagem favorito e disponível do desenho Dragon Ball, e viverá as mesmas aventuras com seus amigos, sem perder a graça em nada.

    Conterá no jogo, além das sagas originais, diversas missões e mini-missões

    Entre por dentro:




    Equipe
    Contamos com a ajuda de vocês, fãs de Dragon Ball, para ajudarem nas histórias, contamos também com a ajuda de quem tiver experiência em sua área, seja em uma quanto em outra.

    Administrador: danilinho79
    Spriter: danilinho79

    Estou sozinho

    Formulário:
    Cargo:
    Motivo pelo qual queira entrar:
    Msn/Skype/Facebook:
    Em que você acha que poderia ajudar:
    Banners:



  6. Gostei
    12Bryan12 deu reputação a Willyw em Help Client   
    Acho que isso ajuda http://tibiaking.com/forum/topic/12580-mods-anti-bot-system/
     
    Se não funcionar me avisa que eu procuro melhor ;s
     
    Já vi server's com client que bots não funcionavam, a não ser que criassem especialmente pra aquele server.
  7. Gostei
    12Bryan12 deu reputação a Xagah em (Resolvido)Export MiniMap   
    Vá em:

    File > Export > Export Minimap > (Abrirá uma Janela)
     
    Na Opção:

    Floor Options
     
    Selecione: Ground Floor ( Que é o andar térreo).
     
    Na opção Browse escolha onde o arquivo será salvo.

    Se e finalize com "ok". Se o mapa for muito grande, seu programa poderá demorar para abrir o arquivo.
     
    Se seu Mapa realmente tiver algo irá aparecer.

    Acredito que seja isto.
     
    Posta o que conseguiu aqui.



     
  8. Gostei
    12Bryan12 deu reputação a ryukicho em Fazendo Foto Do Mapa Completo!   
    Cara , abra o mapa , depois vai em file no seu remeres , logo apos clique em export  depois export minimapa , logo apos selecione o local desejado a salvar coloque um nome e cliquem em salvar , ele vai carregar uns 13 minimapa se não me engano  são os "Z" ai se vai no no mine mapa 7 e pronto ajudei rep+ , se  tiver vaga  pra mapper no seu poektibia se quiser que eu seja só fala com migo
  9. Gostei
    12Bryan12 deu reputação a MaXwEllDeN em [Resolvido] [DUVIDA] Colocar Trainer mais realista   
    Só é substituir o

    <look type="108" por

    <look typeex="2160"
  10. Gostei
    12Bryan12 deu reputação a Sociopata em Retirando Bug Do Rme 8.60   
    Retirando Bug do RME 8.60





    Primeiramente, abra seu Remeres MapEditor 8.60. Siga estes passos:

    File>Preferences>Client Version> Desmarque a caixa "Check file signatures"> Marque Apply e depois>Ok.

    Muito bem, agora iremos enteder um pouco este erro: Ele diz que não consegue encontrar os arquivos necessários e quando você clica para encontrar, dá o mesmo erro. Vejamos, então devemos instalar o Client Tibia pelo site do Remeres!

    Então, faremos isso. Segue o link de download do Client:

    http://www.remeresma...com/marklar.php

    Muito bem, após baixar, instalar. Crie uma pasta em seu Desktop chamada "Mapeditor"> Agora vá na pasta do seu Tibia (normalmente se localiza em: Disco Local>Arquivos de Programas>Tibia), agora copie os arquivos "tibia.dat", "tibia.spr" e "tibia.pic".Vá na pasta "Mapeditor" no Desktop e cole-os lá mesmo. Agora abra seu MapEditor RME 8.6! Pronto, use á vontade. (Para quem não deu certo, aperte "Ok" no erro e aparecerá uma caixa para procurar os arquivos, selecione Desktop>E em seguida a pasta Mapeditor. Irá carregá-los e pronto!)


    SE ISSO NÃO FUNCIONAR BAIXE O RME NO SITE OFICIAL SEGUE LINK ACIMA E O CLIENT DE TIBIA DE LA TBM EM 70% DOS CASOS DA CERTO
    http://remeresmapeditor.com/marklar.php?clients

    Muito obrigado pessoal, espero que dê certo.
    Creditos

    Roksas
    Sociopata
  11. Gostei
    12Bryan12 deu reputação a Apocalypse em Exp Por Hit v3.0 - Oficial XotservX   
    Instalação

    Primeiramente abra a pasta de seu ot, e procure pelo arquivo config.lua e procure por essas 2 linhas :

    experienceStages = false rateExperience = 50 se o experienceStages tiver ativado mude para false, pois o sistema ainda não tem suporte á Stages. e é muito importante o rateExperience tiver como 0, pois ela sera configurada, em outro local agora. exemplo: experienceStages = false rateExperience = 0 agora entre na pasta creaturescripts/scripts e crie um arquivo lua, chamado exphit.lua e cole o seguinte código: -- CONFIGURAÇÕES DE EXPERIENCIA -- useStages = true -- Usar sistema de Stages , true/false premiumMultipliqueExp = 2 -- Players Premiums terão exp multiplicada, caso não querer deixe 1. rateExp = 50 -- Exp caso não for usar stages. local stages = { -- ["DELEVEL-ATELEVEL"] = EXP, (OBS: NUNCA REPETIR O MSM NUMERO, SEMPRE COLOCAR UM A MAIS.) ["1-50"] = 50, ["51-100"] = 45, ["101-150"] = 40, ["151-200"] = 35, ["201-250"] = 30, ["251-300"] = 25, ["351-400"] = 20, } ultimateExp = 15 -- exp que vai usar caso o level do player não tiver mais na tabela . -- CONFIGURAÇÕES DA PARTY partyPorcent = 40 -- Quantos Porcento da exp vai para os membros da party levelBlockParty = 1000 -- Diferença Maxima de Level permitida para membro da party ganhar exp. expShareRadiusX = 30 -- Distancia maxima permitida no eixo X para membro da party ganhar exp. expShareRadiusY = 30 -- Distancia maxima permitida no eixo Y para membro da party ganhar exp. expShareRadiusZ = 1 -- Distancia maxima permitida no eixo Z para membro da party ganhar exp. -- CONFIGURAÇÕES DE RINGS -- local rings = { -- [ID DO ANEL] = EXP MULTIPLICADA POR X EXP. [3048] = 2, [3049] = 4, [3050] = 6, } -- FIM DAS CONFIGURAÇÕES -- function CalculeExp(monsterhp, exptotal, hit) hit = hit <= monsterhp and math.ceil(exptotal * hit / monsterhp) or 0 return hit < 0 and 0 or hit end function isSummon(uid) return uid ~= getCreatureMaster(uid) or false end function onStatsChange(cid, attacker, type, combat, value) if getCreatureStorage(cid, 50001) ~= 1 then doCreatureSetStorage(cid, 50002, getMonsterInfo(getCreatureName(cid)).experience * rateExp) doCreatureSetStorage(cid, 50001, 1) end if type == STATSCHANGE_HEALTHLOSS then if isMonster(cid) then if isSummon(cid) then return true end if isCreature(attacker) then local _cid = isSummon(attacker) and getCreatureMaster(attacker) or attacker if isPlayer(_cid) then if useStages then for strstage, experience in pairs(stages) do tabstage = string.explode(strstage, "-") if getPlayerLevel(_cid) >= tabstage[1] and getPlayerLevel(_cid) <= tabstage[2] then ultimateExp = experience end end experienceRate = ultimateExp else experienceRate = rateExp end local expgain = CalculeExp(getCreatureMaxHealth(cid), getMonsterInfo(getCreatureName(cid)).experience * experienceRate, value) local ringexp = 1 for idring, expring in pairs(rings) do if getPlayerSlotItem(_cid, 9).itemid == idring then ringexp = expring break end end local premiumMultipliqueExp = isPremium(_cid) and premiumMultipliqueExp or 1 expgain = expgain * ringexp * premiumMultipliqueExp if getCreatureStorage(cid, 50002) > 0 then if getCreatureStorage(cid, 50002) - expgain < 0 then expgain = getCreatureStorage(cid, 50002) end doCreatureSetStorage(cid, 50002, getCreatureStorage(cid, 50002) - expgain) local party = false if isInParty(_cid) then local partyMembers, expParty = getPartyMembers(getPartyLeader(_cid)), expgain / 100 * partyPorcent for indice, partyMember in pairs(partyMembers) do attackerLevel, partyLevel = getPlayerLevel(_cid), getPlayerLevel(partyMember) attackerPos, partyPos = getThingPos(_cid), getThingPos(partyMember) x = false if math.abs(attackerLevel - partyLevel) > levelBlockParty then x = true elseif math.abs(attackerPos.x - partyPos.x) > expShareRadiusX then x = true elseif math.abs(attackerPos.y - partyPos.y) > expShareRadiusY then x = true elseif attackerPos.z ~= partyPos.z then x = true elseif _cid == partyMember then x = true end if x then partyMembers[indice] = nil end end if #partyMembers ~= 0 then expParty = math.ceil(expgain / 100 * partyPorcent) expmember = math.ceil(expParty / #partyMembers) for _, member in pairs(partyMembers) do if member ~= _cid then doPlayerSendTextMessage(member, 12, "You received "..expmember.." party exp.") doPlayerAddExp(member, expmember) end end doPlayerSendTextMessage(_cid, 12, "You gain "..expgain.." exp. (" ..partyPorcent.."% send to party)") doPlayerAddExp(_cid, expgain - expParty) party = true else party = false end end if not party then doPlayerSendTextMessage(_cid, 12, "You gain "..expgain.." exp.") doPlayerAddExp(_cid, expgain) end end end end end end return true end function onCombat(cid, target) if isMonster(target) and not isSummon(target) and not isPlayer(target) then registerCreatureEvent(target, "ExpGain") end return true end na mesma pasta procure pelo arquivo login.lua, e em cima de return true, adc a seguinte linha: registerCreatureEvent(cid, "ExpHit") volte na pasta anterior creaturescripts, e procure pelo arquivo creaturescritps.xml e cole as 2 tags: <event type="statschange" name="ExpGain" event="script" value="exphit.lua"/> <event type="combat" name="ExpHit" event="script" value="exphit.lua"/> para configurar a exp, que era configurada no config.lua está no começo do arquivo exphit.lua , e as configurações da party tbem, dos anéis, e até pode ser usado stages agora, segue abaixo o exemplo: -- CONFIGURAÇÕES DE EXPERIENCIA -- useStages = true -- Usar sistema de Stages , true/false premiumMultipliqueExp = 2 -- Players Premiums terão exp multiplicada, caso não querer deixe 1. rateExp = 50 -- Exp caso não for usar stages. local stages = { -- ["DELEVEL-ATELEVEL"] = EXP, (OBS: NUNCA REPETIR O MSM NUMERO, SEMPRE COLOCAR UM A MAIS.) ["1-50"] = 50, ["51-100"] = 45, ["101-150"] = 40, ["151-200"] = 35, ["201-250"] = 30, ["251-300"] = 25, ["351-400"] = 20, } ultimateExp = 15 -- exp que vai usar caso o level do player não tiver mais na tabela . -- CONFIGURAÇÕES DA PARTY partyPorcent = 40 -- Quantos Porcento da exp vai para os membros da party levelBlockParty = 1000 -- Diferença Maxima de Level permitida para membro da party ganhar exp. expShareRadiusX = 30 -- Distancia maxima permitida no eixo X para membro da party ganhar exp. expShareRadiusY = 30 -- Distancia maxima permitida no eixo Y para membro da party ganhar exp. expShareRadiusZ = 1 -- Distancia maxima permitida no eixo Z para membro da party ganhar exp. -- CONFIGURAÇÕES DE RINGS -- local rings = { -- [ID DO ANEL] = EXP MULTIPLICADA POR X EXP. [3048] = 2, [3049] = 4, [3050] = 6, } -- FIM DAS CONFIGURAÇÕES ----

    Log V2.0 :




    Log V3.0 ( 03/02/2013 ) :


  12. Gostei
    Não vou passar tags


    function checkAndRemove(cid) if isCreature(cid) then addEvent(doTeleportThing, 15 * 60 * 1000, cid, getTownTemplePosition(getPlayerTown(cid))) end end function onLogin(cid) local loginStorage = 2323 local timeStorage = 2324 local vipPos = {x = x, y = y, z = z} if getPlayerStorageValue(cid, loginStorage) > 0 then return true end if getPlayerStorageValue(cid, loginStorage) > 0 and getPlayerStorageValue(cid, timeStorage) - os.time() < 1 then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) return true end setPlayerStorageValue(cid, timeStorage, os.time() + 15 * 60 * 1000) setPlayerStorageValue(cid, loginStorage, 1) doTeleportThing(cid, vipPos) checkAndRemove(cid) return true end
  13. Gostei
    12Bryan12 deu reputação a AgaSsI em [System] Pontos "P" Points System   
    P Points System               Nome do script : P Points system v1   Versão testada : TFS 0.4 (8.70 Funciona em versões anteriores)   Creditos : LsM  
      Como funciona :     O sistema funciona como uma recompensa ao player por ficar online por um certo tempo. O player, ao ficar online por um certo intervalo de tempo programado no código, receberá uma quantidade de pontos "P" a qual também se pode alterar.     O objetivo foi fazer com que os players se sintam incentivados a ficar online por um maior período de tempo para que recebam tais moedas. Essa é, definitivamente, uma forma fácil de se alcançar um número maior de players online, já que a ideia foi retirada de um MMORPG online de grande sucesso.      
      Como utilizar :     C omo o sistema tem como foco dar uma recompensa ao player, no caso pontos P , estes, podem ser utilizados no comercio, em npcs, ou até mesmo na entrada de locais. Sua sintaxe é muito maleável e se encaixa em quaquer requisito desejado.      
      Instalação :     Primeiramente, execute a seguinte QUERY em seu banco de dados :   Código:       ALTER TABLE `accounts` ADD `p_points` INTEGER NOT NULL DEFAULT 0   Em seguida, crie um arquivo com a extensão .lua chamado " points.lua " em " data/creaturescripts/scripts " e adicione o código abaixo : Código:     --[[ P Points System by LsM. OTServ Brasil &#169; 2011 Version : v1.0 ]]-- function onLogin(cid) doCreatureSetStorage(cid, 1219, os.time()) return true end function onLogout(cid) doCreatureSetStorage(cid, 1219, 0) return true end   Ainda em creaturescripts, abra o arquivo " creaturescripts.xml " e adicione a seguinte TAG : Código:     <event type="login" name="PlayerAddPointsTimer" event="script" value="points.lua"/> <event type="logout" name="PlayerResetPointsTimer" event="script" value="points.lua"/>   Agora, em " data/globalevents/script " crie um arquivo com a extensão .lua também chamado " points.lua " e cole o seguinte código : Código:     --[[ P Points System by LsM. OTServ Brasil &#169; 2011 Version : v1.0 ]]-- local config = { p_time = 3600, -- Tempo em segundos para receber os pontos( 3600 = 1hora ) p_points = 1 -- Quantidade de pontos recebida a cada "p_time" }local function givePoints(cid, quant) if os.time() - getCreatureStorage(cid, 1219) >= config.p_time then doPlayerSendTextMessage(cid, 19, "Congratulations, you recieved ".. config.p_points .." p points. Now you have ".. config.p_points + getPoints(cid) .." p points in your account. Your timer was reseted.") doPlayerAddPoints(cid, quant) doCreatureSetStorage(cid, 1219, 0) doCreatureSetStorage(cid, 1219, os.time()) end return true end function onThink(interval) for i, v in pairs(getPlayersOnline()) do givePoints(v, config.p_points) end return true end   E em " globalevents.xml " cole a seguinte TAG : Código:     <globalevent name="points" interval="60" event="script" value="points.lua"/>   Em seguida vá em " data/talkactions/scripts ", crie um arquivo com extensão .lua chamado " points.lua " e adicione o seguinte código : Código:     function onSay(cid, words, param, channel) local getP = getPoints(cid) doPlayerPopupFYI(cid, "You have ".. getP .." P points.") return true end   E em " talkactions.xml " adicione a TAG : Código:     <talkaction words="!ppoints;/ppoints" event="script" value="points.lua"/>   Para finalizar, vá em " data/lib/050-function.lua " e na última linha, adicione as funções abaixo : Código:     function getPoints(cid) local res = db.getResult('select `p_points` from accounts where name = \''..getPlayerAccount(cid)..'\'') if(res:getID() == -1) then return false end local ret = res:getDataInt("p_points") res:free() return tonumber(ret) end function doPlayerAddPoints(cid, quant) return db.executeQuery("UPDATE `accounts` SET `p_points` = '".. getPoints(cid) + quant .."' WHERE `name` ='"..getPlayerAccount(cid).."'") end function doPlayerRemovePoints(cid, quant) return db.executeQuery("UPDATE `accounts` SET `p_points` = '".. getPoints(cid) - quant .."' WHERE `name` ='"..getPlayerAccount(cid).."'") end   Fim, o sistema está instalado.  
      Como configurar :   A parte da configuração é a mais fácil, apenas edite :   Código:       [/size] [/font] local config = { p_time = 3600, -- Tempo em segundos para receber os pontos( 3600 = 1hora ) p_points = 1 -- Quantidade de pontos recebida a cada "p_time" }  
       
       
      Quer utilizar o sistema em um npc, ou action, ou algum outro sistema e não sabe como? Simples, apenas use as seguintes funções :     getPoints(cid) A função retorna a quantidade de pontos do player.     doPlayerAddPoints(cid, quant) A função adiciona a quantidade(quant) de pontos ao player.     doPlayerRemovePoints(cid, quant) A função remove a quantidade(quant) de pontos do player.    
      Ilustração :        
    Funcionamento do script  
        Ilustração de !ppoints  
        Creditos: LsM     A í está galera, espero que gostem, e, para os preguiçosos, disponibilizei o download do sistema completo:     http://www.4shared.c...nts_System.html  
  14. Gostei
    12Bryan12 deu reputação a MaXwEllDeN em Funçao creaturescript.   
    if getPlayerStamina(cid) == 2520 then -- TODO: end
  15. Gostei
    12Bryan12 deu reputação a TonyHalk em Pasta Data - Funções Em Lua   
    Parte I – Funções Lua


    irei mostrar como usar e quase todas as funções em lua existentes no otserver, lembrando que esse tutorial foi baseado no The Forgotten Server 0.3.0 Alpha 3. Portanto poderá haver funções aqui que não terá em outros otservers ou será diferente o nome.
    Lembrando que todas as funções existentes aqui poderão ser usadas tanto em actions,npcs,movements,talk actions e spells.
    Dividi as funções em três grandes grupos e subgrupos, os três grandes são funções get(receba), set (insira) e do (faça).

    Use Forgotten Server 3.0 pelo amor de deus, se você não saber usar sql aprende a usar SqlLite nesse link... Se você Aries você não tem honra para mexer aqui

    Funções Get
    São as funções que retornam valores, ou seja, elas fazem checagens. São muitos usadas e uteis. Ela é usada em condicionais (If, while, for) ou inseridas em variaveis. O modo de usa-la depende do tipo de script ou do jeito que você preferir.
    Dividi elas em dois grupos, a get simples e a get com parametros.

    Funções get simples
    São funções simples mesmo basta coloca-las e elas retornarão um valor, pode coloca-las em condicionais ou em variaveis. E todas elas buscam valores em players.
    Os que há creature pode ser usados em monstros (a maioria).
    São elas :

    getPlayerFood(cid) – Verifica quanto de tempo de comida o player possui.
    getCreatureHealth(cid) – Verifica a health atual do player.
    getCreatureMaxHealth(cid) – Verifica a health maxima do player.
    getCreatureMana(cid) – Verifica a mana atual do player.
    getCreatureMaxMana(cid) – Verifica a mana maxima do player.
    getPlayerLevel(cid) – Verifica o level do player.
    getPlayerExperience(cid) – Verifica a experiencia.
    getPlayerMagLevel(cid) – Verifica o magic level.
    getPlayerAccess(cid) – Verifica o nivel de acesso (player,gm,tutor...)
    getPlayerTown(cid) - Verifica o id da cidade natal do player.
    getPlayerVocation(cid) – Verifica a vocação dele.
    getPlayerSoul(cid) – Verifica o soul points.
    getPlayerFreeCap(cid) – Verifica quanto de capacidade atual existe.
    getPlayerLight(cid) - Verifica o tamanho da luz do player.
    getPlayerGuildId(cid) – Verifica o id atual da guild do player.
    getPlayerGuildName(cid) – Verifica o nome da guild.
    getPlayerGuildRank(cid) - Verifica o posto dele na guild.
    getPlayerGuildNick(cid) – Verifica o nick dele na guild. (aquilo escrito no final entre parenteeses).
    getPlayerGuildLevel(cid) – Verifica o nivel da guild.
    getPlayerSex(cid) – Verifica o sexo do player(0-mulher, 1 – homem).
    getPlayerLookDir(cid) – Verifica a direção na qual ele está olhando. (0-norte, 1-leste, 2-sul, 3 -oeste).
    getPlayerGUID(cid) – Verifica o id dele na database.
    getPlayerPromotionLevel(cid) – Verifica o nivel da promoção do player.
    getPlayerGroupId(cid) – Verifica o nivel dele. (igual acesso).
    getPlayerInstantSpellCount(cid) - Verifica quantas spells o player sabe.
    getMonsterTargetList(cid) – Verifica os montros na qual você está atacando.
    getMonsterFriendList(cid) – Verifica os monstros amigo (provavelmente summons).
    getCreatureOutfit(cid) – Verifica o id da roupa do player.
    getCreaturePosition(cid) – Verifica a posição x,y,z do player.
    getCreatureSpeed(cid) – Verifica a velocidade atual do player.
    getCreatureBaseSpeed(cid) – Verifica a velocidade base do player.
    getCreatureName(cid) – Verifica o nome do player.
    getCreatureTarget(cid) – Verifica quem o player está atacando.
    getPlayerPremiumDays(cid) – Verifica quantos dias de premmium account o player possui.
    getPlayerSkullType(cid) – Verifica qual skull o player possui.
    getPlayerBalance(cid) – Verifica o saldo bancario do player.
    getPlayerStamina(cid) – Verifica o tempo de stamina.
    getPlayerNoMove(cid) – Verifica se ele pode se mover.
    getPlayerExtraExpRate(cid) – Verifica a taxa de experiencia extra (a confirmar).
    getPlayerPartner(cid) – Se o player está em parte ou não.
    getPlayerParty(cid) – Verifica informações da party do player.
    getPartyMembers(lid) – Verifica os membros da party segundo o id da função acima.
    getCreatureMaster(cid) – Verifica a criatura mestre (a que sumona).
    getCreatureSummons(cid) – Verifica os summons da criatura.


    A sintaxe dessas funções é essa :
    Exemplo :

    if getCreatureMana(cid) == 20 then

    Ou

    mana = getCreatureMana(cid)
    if mana == 20 then


    Funções get com parametros.

    Essas funções fazem o mesmo papel da outra get simples, porém elas tem certos parametros pois normalmente elas checam coisas a mais, e algumas checam objetos e não só valores do player.
    Lembrando que se for comparar itens que são com nomes (exemplo : getItemNameById(2195) == 'boots of haste' then) deve se colocar entre aspas pois é uma função string. Numeros não prescisam estar dentro de aspas.
    São elas :


    getPlayerSkill(cid, skillid) - checa o skill especificado do player (0- fist,1-club, 2-sword, 3-axe, 4-distance, 5 -shield, 6 – fishing).
    getPlayerItemCount(cid,itemid) - checa a quantidade de item agrupaveis.
    getPlayerSlotItem(cid, slot) - Checa que item tem no slot do player (1-cabeca, 2- amuleto, 3- backpack, 4-armadura, 5-mao direita, 6-mao esquerda, 7-pernas, 8- botas, 9-anel, 10 slot da torcha).
    getPlayerWeapon(cid, <optional> ignoreAmmo) - Checa que arma o player esta usando. (o outro paramentro ainda n usei).
    getPlayerItemById(cid, deepSearch, itemId, <optional> subType) - Procura o item especifica no item, pode colocar o subtipo (viais por exemplo).
    getPlayerDepotItems(cid, depotid) - Ve quantos itens tem no depot da cidade (Por id de cidade).
    getPlayerFlagValue(cid, flag) - Ve as flag dos players (Apenas em TFS e nunca usei).
    getPlayerCustomFlagValue(cid, flag) - Verifica o valor da flag.
    getPlayerLearnedInstantSpell(cid, name) - Verifica se o player sabe a magia.
    getPlayerInstantSpellInfo(cid, index) - Desconheço
    getInstantSpellInfoByName(cid, name) - Verifica valores da magia
    getInstantSpellWords(name) - Retorna a palavra magica da magia.
    getPlayerStorageValue(uid, valueid) - Verifica o valor do storage do player
    getCreatureByName(name) - Retorna o nome da criatura.
    getPlayerGUIDByName(name) - Verifica o numero da tabela sql do player.
    getPlayerNameByGUID(guid) - Verifica o nome do jogador pelo numero da tabela sql
    getContainerSize(uid) - Verifica quantos slots tem o container.
    getContainerCap(uid) - Verifica quanto pesa o container.
    getContainerItem(uid, slot) - Verifica se há um container no slot especificado.
    getDepotId(uid) - - Verifica o id da cidade do depot.
    getItemDescriptionsById(itemid) - Pega a descrição do item pelo id.
    getItemNameById(itemid) - - Pega o nome do item pelo id.
    getItemPluralNameById(itemid) - Pega o nome em plural do item pelo id.(apenas itens agrupaveis).
    getItemIdArticleById(itemid) - Retorna um valor pelo id. Desconheço essa função
    getItemWeightById(itemid, count, <optional: default: 1> precise) - -Pega o peso do item por id.
    getItemDescriptions(uid) - - Pega a descrição do item por uid. (por exemplo se ele é item ou item2 em actions).
    getItemName(uid) - - Pega a descrição do item por uid.
    getItemAttack(uid) - Pega o ataque do item por uid.
    getItemPluralName(uid) - Pega o nome em plural por uid.
    getItemExtraAttack(uid) - Modifica o ataque extra da arma (Acho que deve ser ataque elemental ou defesa de armor).
    getItemIdArticle(uid) - - Desconheço.
    getItemDefense(uid) - - Pega a defesa do item por uid.
    getItemExtraDefense(uid) - - Pega a defesa extra (armor) por uid.
    getItemArmor(uid) - - Pega o valor de armour por uid.
    getItemAttackSpeed(uid) - - Pega a velocidade de ataque por uid.
    getItemHitChance(uid) - - Pega a chanche de dano do item por uid.
    getItemIdByName(name) - - Retorna o id do item pelo nome.
    getPromotedVocation(vocation) - - Verifica qual o nome da vocação promocional da vocação(Sorcerer = Master Sorcerer).
    getPlayerBlessing(cid, blessing) - - Verifica qual nivel de benção o player tem (1 = 1, 2 =2...).
    getTemplePositionByName(townName) - - Verifica as coordenadas do templo pelo nome da cidade.
    getTemplePositionById(townId) - - Verifica as coordenadas do templo pelo id da cidade.





    Funções Set
    São poucas funções. Elas inserem valores ou seja inserem novos valores, inutilizando os antigos. Deve se usa-las dentro de condicionais.
    Exemplo :

    Quote

    if getItemNameById(item.uid) == 'boots of haste' then
    setItemArmor(item.uid, 5)
    end

    No caso se o item se chamar boots of haste, o script coloca arm 5 nela.

    São elas :

    setItemAttack(uid, attack) - Modifica o ataque da arma
    setPlayerStamina(cid, minutes) - Adicione tempo em stamina.
    setPlayerExtraExpRate(cid, value) - Modifica mais taxa de experiencia
    setPlayerPartner(cid, guid) - Desconheço
    setItemPluralName(uid) - Modifica ou adiciona o nome do item no plural.
    setItemName(uid) - Muda o nome do item.
    setItemIdArticle(uid) - Modifica o article no item (sei la q merda é essa)
    setItemExtraAttack(uid, extraattack) - Adiciona ataque extra na arma.
    setItemDefense(uid, defense) - Modifica defesa no item
    setItemExtraDefense(uid, extradefense) - Modifica aquela defesa extra na arma
    setItemArmor(uid, armor) - Modifica a armor do item
    setItemAttackSpeed(uid, attackspeed) - Muda a velocidade de ataque do item
    setItemHitChance(uid, hitChance) - Modifica a taxa de dano do item
    setGlobalStorageValue(valueid, newvalue) - Adiciona um valor global (Muito util para scripts avançados)
    setHouseOwner(houseid, ownerGUID) - Muda o dono da casa
    setWorldType(type) - Muda o estilo do mundo para PvP, Non Pvp e Pvp Enforced




    Funções do
    Funções que fazer algo, normalmente modificam , porem ao contrario do set algumas apenas adiciona valores. São usadas dentro de condicionais.
    A sintaxe dela é :
    if item.itemid == 2195 then
    doCreatureAddHealth(cid, -1000)
    end

    No caso se o item usado no script for 2195, ele remove 1000 de hp.

    São elas :
    doPlayerLearnInstantSpell(cid, name) - Faz o player aprende a magia pelo nome dela.
    doRemoveItem(uid, quantidade) - Remove o item do player.
    doPlayerFeed(cid, food) - Adiciona "comida" ao player.
    doPlayerSendCancel(cid, text) - Manda aquela mensagem branca no rodape da tela.
    doPlayerSendDefaultCancel(cid, ReturnValue) - Inutil pelo que saiba , pq nunca vi um script com isso e por isso n sei pra q serve.
    doTeleportThing(cid, newpos, <optional> pushmove) - Teleporta o player para uma nova posição.
    doTransformItem(uid, toitemid, <optional> count/subtype) - Transforma o item em outro.
    doCreatureSay(cid, text, type) - - Faz o player falar algo.
    doSendMagicEffect(pos, type[, player]) - Faz algum efeito magico
    doSendDistanceShoot(frompos, topos, type) - Faz algum efeito de distancia
    doChangeTypeItem(uid, newtype) - Muda o tipo dele ou a quantidade de itens agrupaveis.
    doSetItemActionId(uid, actionid) - Adiciona uma nova actionid por uid.
    doSetItemText(uid, text) - - Adiciona um texto ao item.
    doSetItemSpecialDescription(uid, desc) - Coloca a descrição especial no item. (Esse item foi feito especialmente para sei la kem).
    doSendAnimatedText(pos, text, color) - Manda um texto animado (Se vc joga servidor Pvp Enforced sabe qual é).
    doPlayerAddSkillTry(cid, skillid, n) - Adiciona uma tentativa em um skill (Se vc colocar 9999999 ele aumenta apenas 1 skill).
    doCreatureAddHealth(cid, health) - Adiciona life ao player.
    doCreatureAddMana(cid, mana) - Adiciona mana ao player.
    doPlayerSetTown(cid, townid) - Muda a cidade do player.
    doPlayerSetVocation(cid,voc) - Muda a vocação do player ( Não coloque vocação promocional em TFS pq dará erros).
    doPlayerRemoveItem(cid, itemid, count, <optional> subtype) - Remove um item do player.
    doPlayerAddExp(cid, exp) - Adiciona experiencia ao player.
    doPlayerAddOutfit(cid,looktype,addons) - Adiciona addons do outfit ao player.
    doPlayerRemoveOutfit(cid,looktype,addons) - Remove addons do outfit do player.
    doAddContainerItem(uid, itemid, <optional> count/subtype) - Adiciona um container por uid.
    doBroadcastMessage(message, type) - Manda uma mensagem global ao servidor.
    doPlayerBroadcastMessage(cid, message, <optional> type) -
    doPlayerSetSex(cid, newSex) - - Muda o sexo do Player (0- mulher, 1 homem)
    doCreatureChangeOutfit(cid, outfit) - Muda a roupa do player.
    doSetMonsterOutfit(cid, name, time) - Muda a roupa para de um monstro.
    doSetItemOutfit(cid, item, time) - Muda a roupa do player para de um item.
    doSetCreatureOutfit(cid, outfit, time) - Adiciona uma roupa por tempo.
    doPlayerAddMapMark(cid, pos, type, <optional> description) - Adiciona aquelas marcações no mapa do jogador.
    doPlayerAddPremiumDays(cid, days) - Adiciona dias de premmium no jogador
    doPlayerAddManaSpent(cid, mana) - Adiciona % de magic level (Se vc colcoar 99999999 ele aumentará muitos mls...)
    doPlayerAddSoul(cid, soul) - Adiciona soul points ao jogador
    doPlayerAddItem(uid, itemid, <optional> count/subtype, <optional: default: 1> canDropOnMap) - Adiciona itens no player.
    doPlayerAddItemEx(cid, uid, <optional: default: 0> canDropOnMap) - Adiciona um item2 no player (Estranho).
    doPlayerSendTextMessage(cid, MessageClasses, message) - Manda um texto pro player.
    doPlayerAddMoney(cid, money) - Adiciona dinheiro ao player
    doPlayerRemoveMoney(cid, money) - Remove dinheiro do player.
    doPlayerWithdrawMoney(cid, money) - Remove dinheiro do banco
    doPlayerDepositMoney(cid, money) - Adiciona dinheiro ao banco.
    doPlayerTransferMoneyTo(cid, target, money) - Transfere dinheiro do banco.
    doShowTextDialog(cid, itemid, text) - Mostra o texto do item
    doDecayItem(uid) - Decai o item (aprodecer)
    doCreateItem(itemid, type/count, pos) -
    doCreateItemEx(itemid, <optional> count/subtype) - Cria um item2.
    doTileAddItemEx(pos, uid) - Cria um item2 em um tile
    doAddContainerItemEx(uid, virtuid) - Adiciona um item2 no container
    doCreateTeleport(itemid, topos, createpos) - Cria um teleport
    doSummonCreature(name, pos) - Sumona um monstro

    Existem mais comandos porém são rarissimos de ser usados. Por que os cara do TFS criam comandos em Luas para o Gesior e Jiddo se lascarem criando tranqueiras em Lua.


    Stackpos
    Sem duvidas, umas das partes mais chatas de explicar, porém ao aprender é dificil esquecer.
    O stackpos é usado para se mexer em itens empilhados, infelizmente ele se modifica muito então essa tabela mostra os stackpos que não mudam.


    Quote

    0 – ground (chão)
    1- Qualquer objeto acima do chão (se houver chão)
    253 – player ou monstro
    255 – item mais alto de qualquer pilha
    65535 – dentro de um player

    Agora tirando isso os de 2 a 252 sempre mudam (Eu acho que não esqueci os outros que mudam), então vou tentar explicar do jeito que entendi antigamente...
    Se você tem empilhado o chão, uma mesa, e um bag. Os stackpos ficam assim


    Quote

    0 – chão
    1 – mesa
    2 – bag
    Agora se você tem os mesmo itens e em cima da bag uma backpack e um scarab coin.

    Quote

    0-chão
    1-mesa
    2-scarab coin
    3-backpack
    4-bag

    Confundiu ? Sim é normal, se houver três ou mais itens acima do chão, o chão e o objeto acima dele continuam com o mesmo stackpos. Porém depois é contado de cima para baixo.
    Veja esse exemplo :
    stackpos:

    Quote

    0-areia
    1-mesa
    2-backpack
    3-bag
    4-gold coin
    5-rope
    6-shovel
    7-machete
    8-dead human

    Nesse caso a ordem dos itens de baixo para cima é :
    Areia, mesa, dead human, machete, shovel, rope, gold coin.bag e backpack. Entenderam agora ?
    Se não tente fazer uns testes que com certeza entenderá. E depois pelo seu bem, tente não esquecer isso. Pois em movements é importantissimo.



    Bem esse tutorial foi leve e servirá de base para os proximos, pois esses comandos podem ser usados em tudo que há lua.
    Peço desculpas se ele fico confuso
    Pois não estou vagal quanto antes e tenho pouco tempo...
    Esperem que virão mais tutoriais.

    Comentarios é o combustivel. Então deem sugestões, reclamações ou me ofendam sei la.
  16. Gostei
    12Bryan12 recebeu reputação de Fabiano Alberto em [AJUDA]Script war outfit...   
    Como voce tinha me pedido, fis de 4 team.

    Primeiro voce copia 3 arquivos la do creaturescript, renomeie o primeiro de attack
    e coloque :



    Depois renomeie o segundo de atkmagia e coloque :


    E o ultimo no creaturescript, voce renomeie o nome de removesto
    e coloque :


    Agora vamos para area de moveevents,

    Copie qualquer arquivo la, e renomeie-o de outfit
    e coloque :


    Copeie outros arquivos la, e muda as storage ali, 123321 dps 123322, e a de baixo tbm 123325 dps 123326,
    e assim vai indo.

    Pronto, agora as tags



  17. Gostei
    12Bryan12 deu reputação a Kimoszin em Uma funçao que reverte a onAdvance...   
    Faça uma verificação se ele avançar, você da uma storage e adiciona o health, se for menor e ele tiver essa storage, você remove a storage e retira o health.
  18. Gostei
    12Bryan12 deu reputação a Kimoszin em TibiaAPI 9.7.1   
    Mas ta no link oficial, então não sei.
  19. Gostei
    12Bryan12 deu reputação a Kimoszin em TibiaAPI 9.7.1   
    Parece que voltaram a atualizar o TibiaAPI

    Você pode saber mais aqui:
    http://tpforums.org/forum/thread-11597.html

    Source:
    http://code.google.com/p/tibiaapi/source/browse/#svn%2Fbranches%2Ftibiaapi-current%2Ftrunk%2Ftibiaapi

    Download:
    TibiaAPI 9.7.1.rar







    Créditos
    Jo3, Farsa e toda equipe que ajuda para fazer a TibiaAPI.
  20. Gostei
    12Bryan12 deu reputação a Kimoszin em [Resolvido] Help! Modificação no LevelDoll ActionScript!   
    function onUse(cid, item, fromPosition, itemEx, toPosition) local config = { storage = 56575, minLevel = 500, gainLevel = 2, maxUse = 10, } if (getPlayerStorageValue(cid, config.storage) >= config.maxUse) then return doPlayerSendCancel(cid, "Você já usou o limite maximo de level dolls.") end if (getPlayerLevel(cid) > config.minLeevl) then return doPlayerSendCancel(cid, "Desculpe, mas voce não possui o level necessario.") end doPlayerAddExp(cid, getExperienceForLevel((getPlayerLevel(cid)+config.gainLevel)) - (getPlayerExperience(cid))) doCreatureAddMana(cid, getCreatureMaxMana(cid) - getCreatureMana(cid)) doCreatureAddHealth(cid, getCreatureMaxHealth(cid) - getCreatureHealth(cid)) doSendMagicEffect(topos, CONST_ME_HOLYAREA) doSendAnimatedText(topos, 'Level Up', TEXTCOLOR_RED) doPlayerSetStorageValue(cid, config.storage, getPlayerStorageValue(cid, config.storage) + 1) return doRemoveItem(item.uid, 1) end
  21. Gostei
    12Bryan12 deu reputação a markimbozi em Criando sign modelada (iniciante)   
    Introdução:
    Esse tutorial vai ensinar como criar sign modeladas e com renders saindo da imagem.


    1 etapa: Crie um arquivo novo igual na imagem:



    2 etapa: Quando criado vai ficar desse jeito:



    3 etapa: Agora crie alguma forma geometrica nele ou algo do tipo, eu usei o retangulo arredondado:



    Vai ficar assim:



    4 etapa: Agora abra uma render, ela não pode ter nenhum fundo tem que ser transparente.



    5 etapa: Agora coloque uma tipografia, efeitos, cores, oque você quiser



    6 etapa: agora corte sua sign para o tamanho ficar certinho dela, para corta clica no icone corte demarcado .



    7 etapa: Pronto agora e você vai em salvar como... e salve em formato png.


    Sua sign modelada está pronta. Agora você quer colocar alguma coisa dentro da forma que você fez na sign? continue lendo.

    1 Etapa: Abra a imagem que você vai utilizar:



    2 Etapa: Agora você faz a mesma forma que você usou em cima da imagem: eu aconselho a copiar a forma que você fez na sign para ficar o mesmo tamanho e depois não te que ficar modificando.



    3 etapa: Agora você muda a ordem da camada, você coloca a camada da imagem em cima da camada da forma, observer que a forma está de baixo da imagem, ficando assim:



    4 etapa: Agora você clica com o botão direito na camada da imagem que está em cima da camada da forma e clica em criar máscara de corte:



    Agora e so você mexer e ver qual parte fica melhor da imagem e depois clicar com o botão direito de novo e fechar máscara de corte.

    5 etapa: Agora clica com o botão direito de novo e clica em mesclar camadas visíveis:



    6 etapa: Agora e so pegar a imagem e colocar na sign e salvar do mesmo jeito que salvo a 1 sign.



    Outro exemplo de sign modelada que eu fiz:



    Créditos by: Markimbozi
  22. Gostei
    12Bryan12 deu reputação a Zulphor em Crystal Arrown + Golden Bow   
    Oii
    Não sou Scripter !
    mas eu procurando achei algo parescido Fica ae pra voce e tentar adaptar do seu jeito okZ



    Adicione esta linha no seu arquivo weapons.xml.
    <distance id="2352" event="script" value="crystalarrow.lua"/> Bem nao testei, mas fica disponivel pra voce e Observer os Ids ( 7438 ) item necessario , ok Autor :Oneshot 2 °Segundo Topico que achei Arrespeito disso é ... em movements.xml adicione essa tag.<pre class="prettyprint"><movevent type="Equip" itemid="2352" slot="ammo" event="script" value="crystal.lua"/> agora em scripts crie um arquivo lua com o nome crystal. adicione isso dentro dele: function onEquip(cid,item)local bow = 7438 if(getPlayerSlotItem(cid,5).itemid == bow)or(getPlayerSlotItem(cid,6).itemid == bow)then doDecayItem(item.uid) else return FALSE,doPlayerSendCancel(cid,'voc&#234; precisa estar usando o '..getItemNameById(bow)..'.') end return TRUEend

    Autor :Marcryzius



    BEM TERMINO AQUI, lembre se der certo OU errado Poste Erros / logs , para que eu ou outros tente ajudar

    Boa Sorte ae !
  23. Gostei
    12Bryan12 deu reputação a ricardo3 em ACTION HEAL DUVIDA   
    caraio mano cala boca você falo 2x fechado tópico ninguem ajuda. presta atenção no post dos cara.. eles te faz uma pergunta você não responde.. os cara não é advinha pra saber oque você que..

    POSTA UMA IMAGEM Filho da P@!$!@#(*))(*(*@#! :@


    EDIT
    e ainda me da um double post ¬¬
  24. Gostei
    12Bryan12 deu reputação a Vodkart em House Clean   
    Descrição: É para deletar house de players inativos, ou seja, o player que não loga em "X" dias perde a sua house!

    houseclean.lua

    function onTimer() local days = 15*24*60*60 doSaveServer() local query = db.getResult("SELECT `owner`,`id` FROM `houses`;") if (query:getID() ~= -1) then while true do local own,houseid = query:getDataInt("owner"),query:getDataInt("id") local qry = db.getResult("SELECT `lastlogin` FROM `players` WHERE `id` = "..own) if(qry:getID() ~= -1) then last = tonumber(qry:getDataInt("lastlogin")) if last < os.time() - days then setHouseOwner(houseid, NO_OWNER_PHRASE,true) end end if not(query:next()) then break end end query:free() end return true end globalevents.xml <globalevent name="HouseClean" time="03:00" event="script" value="houseclean.lua"/> na tag está para executar o script as 3 da manhã se quiser alterar só mudar essa parte: time="03:00" para configurar os dias que o player que não logar em "X" dias É aqui: local days = 15*24*60*60

    no caso está para o jogador que não logar em 15 dias perder a house.
  25. Gostei
    12Bryan12 deu reputação a Skyforever em [CreatureScripts] Hit Message   
    Versão com chance adicionada ao tópico

    PS: Não foi testada

    @EDIT
    Esta com 25% de chance de funcionar.

Informação Importante

Confirmação de Termo