Ir para conteúdo

azzouks

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Erro
    consulta SQL:
    INSERT INTO accounts( blocked BOOLEAN NOT NULL DEFAULTFALSE )
    Mensagens do MySQL : 
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BOOLEAN         NOT NULL
                                 DEFAULT FALSE
    )' at line 1 
     
     
    quando tento entrar no "localhost" aparece
     
    Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bought' in 'order clause'' in C:\xampp\htdocs\latestnews.php:13 Stack trace: #0 C:\xampp\htdocs\latestnews.php(13): PDO->query('SELECT * FROM `...') #1 C:\xampp\htdocs\index.php(63): include('C:\xampp\htdocs...') #2 {main} thrown in C:\xampp\htdocs\latestnews.php on line 13
  2. Gostei
    Erro
    consulta SQL:
    INSERT INTO accounts( blocked BOOLEAN NOT NULL DEFAULTFALSE )
    Mensagens do MySQL : 
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BOOLEAN         NOT NULL
                                 DEFAULT FALSE
    )' at line 1 
     
     
    quando tento entrar no "localhost" aparece
     
    Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bought' in 'order clause'' in C:\xampp\htdocs\latestnews.php:13 Stack trace: #0 C:\xampp\htdocs\latestnews.php(13): PDO->query('SELECT * FROM `...') #1 C:\xampp\htdocs\index.php(63): include('C:\xampp\htdocs...') #2 {main} thrown in C:\xampp\htdocs\latestnews.php on line 13
  3. Gostei
    azzouks recebeu reputação de poko360 em (Resolvido)[PEDIDO] Como deixar uma runa infinita.   
    Se eu colocar false vai remover de todas as runas

    E so colocar charges 0

    Topico resolvido, pode fechar
  4. Gostei
    azzouks recebeu reputação de Martim Tiburcio em [Pedido] Potions Novas para Curar Mana   
    vc quer fazer tipo uma Health Potion ?
    se for ta ai o script:



    ta ai, essa potion heala entre 5%HP TOTAL+300 e 9%HP total+500 (voce pode configurar como quiser)
    agora em actions.xml coloque:
     
    <action itemid="11514" script="liquids/large health potion.lua"/>
     
    coloque o ID da beserk potion, mas antes procure pra ver se nao tem nenhuma tag com o id dela.. 
     
    Ajudei? REP+
  5. Gostei
    azzouks recebeu reputação de rngomes em {Pedido} Rings   
    cara, faz o anel, como qualquer outro.. no itens.xml voce adiciona os attributos ao anel ..
     
    Magic Level = <attribute key="increaseMagicPercent" value="105"/>    --> adiciona 5% de dano magico, se voce colocar apenas value="5" vai diminuir os danos, e o player hitara apenas 5% do total que ele hitaria sem o ring.
     
    meele = nao sei quais funções vc tem no seu servidor, mas pode ser :
    attribute key="hitChance" value="130"
    ou 
    attribute key="increasePhysicalPercent" value="130"
     
    NÃO ESTOU AFIRMANDO QUE NO SEU SERVIDOR SEJA ESSAS FUNÇÕES.. se voce tiver suas sources, procure nos itens la os attributos que vc tenha..
     
    no meu servidor tem todos esses tres.. e eu os uso perfeitamente.
     
    no terceiro ring, coloque os dois attributos no ring, que nao tem conflito.
     
    Ajudei? deixa um Rep+ ai
     
    meu blessed so da skills e magic
    <item id="13688" name="blessed ring"> <attribute key="description" value="It's a blessed ring. [Inc.Magic 10%,Abs.all 10% Regen.Life 150/1, Regen.Mana 50/1, Skills +15]"/> <attribute key="decayTo" value="0"/> <attribute key="weight" value="100"/> <attribute key="transformDeEquipTo" value="13689"/> <attribute key="healthGain" value="150"/> <attribute key="healthTicks" value="1"/> <attribute key="manaGain" value="50"/> <attribute key="manaTicks" value="1"/> <attribute key="skillClub" value="15"/> <attribute key="skillAxe" value="15"/> <attribute key="skillShield" value="15"/> <attribute key="skillSword" value="15"/> <attribute key="skillFist" value="1"/> <attribute key="skillDist" value="15"/> <attribute key="skillFish" value="15"/> <attribute key="skillShield" value="15"/> <attribute key="speed" value="400"/> <attribute key="increaseMagicPercent" value="10"/> <attribute keu="absorbPercentAll" value="10"/> <attribute key="slotType" value="ring"/> <attribute key="showduration" value="1"/> <attribute key="duration" value="1800"/>
  6. Gostei
    azzouks deu reputação a Hona em Criando instalador para Client   
    Criando instalador para Client













    Download:
    baixaki,mediafire,4shared





    Abra o aplicativo [ Install Creator ].



    Depois você vera uma tela em cima do aplicativo.








    Click em avançar.








    Agora escolha os arquivos lembrando elis devem estar em uma pasta.



    (o programa ira copiar tudo que estiver dentro da pasta)








    Depois de escolher os arquivos.



    Escolha o idioma de sua preferencia.



    Escolha o nome do programa.








    Depois click em avançar.




    Agora vc escolhe se seu instalador sera full (tela cheia)ou small (pequeno).








    Depois click em avançar.





    Olhe a imagem abaixo e façam o ki estar nela.








    Depois de configurar click em avançar.








    Agora coloque tudo sobre o aplicativo que vc quer criar.








    Depois click em avançar.





    Agora coloque a descrição da sua licença.








    Depois click em avançar.





    Agora escolha o local a onde o seu jogo sera salvo depois de instalado no pc do jogador.








    Depois click em avançar.





    Agora vamos criar um atalho para seu arquivo.



    Procure seu arquivo .exe na pasta.












    Agora coloque o nome do seu atalho.








    Depois marque a caixa que diz: Add desktop shortcut








    Agora click em avançar.








    Aki deixe em branco.







    Agora click em avançar







    Agora selecione se quer ou não uninstaller.







    Depois click em avançar.







    Agora marque a caixa que diz do not build the install program







    Agora clique em concluir.







    Agora click em Build.







    Agora escolha onde vai salvar o instalador.







    Depois inicie o teste se ficou como vc queria.




















    Creditos: Adriano C

  7. Gostei
    azzouks recebeu reputação de Wiz Khalifa em [Pagseguro Automático] 100% e com Double Points OPCIONAL   
    Ok, Obrigado!
    conseguiu? q q tava fazendo de errado?
  8. Gostei
    azzouks recebeu reputação de NathanAmaro em {Pedido} Rings   
    cara, faz o anel, como qualquer outro.. no itens.xml voce adiciona os attributos ao anel ..
     
    Magic Level = <attribute key="increaseMagicPercent" value="105"/>    --> adiciona 5% de dano magico, se voce colocar apenas value="5" vai diminuir os danos, e o player hitara apenas 5% do total que ele hitaria sem o ring.
     
    meele = nao sei quais funções vc tem no seu servidor, mas pode ser :
    attribute key="hitChance" value="130"
    ou 
    attribute key="increasePhysicalPercent" value="130"
     
    NÃO ESTOU AFIRMANDO QUE NO SEU SERVIDOR SEJA ESSAS FUNÇÕES.. se voce tiver suas sources, procure nos itens la os attributos que vc tenha..
     
    no meu servidor tem todos esses tres.. e eu os uso perfeitamente.
     
    no terceiro ring, coloque os dois attributos no ring, que nao tem conflito.
     
    Ajudei? deixa um Rep+ ai
     
    meu blessed so da skills e magic
    <item id="13688" name="blessed ring"> <attribute key="description" value="It's a blessed ring. [Inc.Magic 10%,Abs.all 10% Regen.Life 150/1, Regen.Mana 50/1, Skills +15]"/> <attribute key="decayTo" value="0"/> <attribute key="weight" value="100"/> <attribute key="transformDeEquipTo" value="13689"/> <attribute key="healthGain" value="150"/> <attribute key="healthTicks" value="1"/> <attribute key="manaGain" value="50"/> <attribute key="manaTicks" value="1"/> <attribute key="skillClub" value="15"/> <attribute key="skillAxe" value="15"/> <attribute key="skillShield" value="15"/> <attribute key="skillSword" value="15"/> <attribute key="skillFist" value="1"/> <attribute key="skillDist" value="15"/> <attribute key="skillFish" value="15"/> <attribute key="skillShield" value="15"/> <attribute key="speed" value="400"/> <attribute key="increaseMagicPercent" value="10"/> <attribute keu="absorbPercentAll" value="10"/> <attribute key="slotType" value="ring"/> <attribute key="showduration" value="1"/> <attribute key="duration" value="1800"/>
  9. Gostei
    azzouks recebeu reputação de loreal em item que reala por hit!   
    vai em weapons, crie 1 script pra cada item que vc quer que heale 10% 
    vai em Weapons.xml e adicione a tag:
    <distance id="2352" level="60" unproperly="1" event="script" value="distances/cristal arrow.lua"><vocation id="3"/><vocation id="7" showInDescription="0"/></distance> feito isso crie uma pasta dentro de weapons/script com o nome "distances"
    vá em weapons/script/distances e crie um arquivo : cristal arrow.lua e dentro coloque isto:
    <!-- Script Criado por GM Azzouks --> local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_INFERNALBOLT) function onGetFormulaValues(cid, level, maglevel) skill = getPlayerSkill(cid,4) min = -((skill*7)+level) max = -((skill*7)+(level*2)) return min, max end setCombatCallback(combat1, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_EFFECT, 31) setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_INFERNALBOLT) function onGetFormulaValues(cid, level, maglevel) skill = getPlayerSkill(cid,4) min = -((skill*9)+(level*2)) max = -((skill*12)+(level*2)) return min, max end setCombatCallback(combat2, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onUseWeapon(cid, var) rand = math.random(1,100) if rand >= 3 then local regenhp = (getCreatureMaxHealth(cid) / 100) * 10 doCreatureAddHealth(cid, regenhp) doCombat(cid, combat1, var) end rand = math.random(1,100) if rand <= 2 then doPlayerSay(cid, "Fell my fury!?",16) local regenhp = (getCreatureMaxHealth(cid) / 100) * 15 doCreatureAddHealth(cid, regenhp) doCombat(cid, combat2, var) end end Explicação
     
    la em cima no Combat1, serão os hit's "normais" baseados em skills e level, tudo configurável. 
    já no combat2, é como se fosse um dano 'critico', também baseado em skills e level, e novamente tudo configurável.
     
    la em baixo eu fiz 98% de chance de hits normais e 2% de chance de dar hit critico..
    nos hits normais ele healará 10% do HP total, e nos criticos Healará 15% do HP total..
     
    voce pode modela-lo como quiser, só nao tire os créditos por favor :3
     
    qualquer duvida mande pra gente que nós resolvemos TUDO
     
    Ajudei? Rep+ nao machuca ninguem : )
  10. Gostei
    azzouks recebeu reputação de Wiz Khalifa em [Pagseguro Automático] 100% e com Double Points OPCIONAL   
    Absolute, como eu configuro pra cada 10 reais dar 100 PP e acima de 50 reais ser double ?
     
     
    nao consigo configurar a URL de retorno, meu servidor tem :8090, como eu faço ?
     
     
     
     
     
    Ja foi sanado a duvida
  11. Gostei
    azzouks deu reputação a Absolute em [Clean House] Remover casas de quem não loga   
    Olá Galera do TK, venho hoje rapidamente trazer um sistema muito útil e pedido em meu tópico do !eject system: http://www.tibiaking.com/forum/topic/35060-eject-system-expulsar-player-inativo-da-house/

     
    Explicação:
    Sabe aqueles players chatos que compram as melhores casas e não logam no servidor e enche a desgrama da casa de item só para os novos players não comprar? Pois é, isto não existirá mais! =D
    Este script é apenas um arquivo que você colocará em sua pasta mods e ele executará toda vez que o servidor for reiniciado, ou seja: Quando o servidor ligar ele irá verificar os players que não logam a X dias (configurável) e então expulsa-los da casa movendo seus items para o depot deixando a casa sem dono.
     
     
     
     
    Vamos ao que interessa;   Na pasta principal do servidor, onde fica a distro que roda o servidor e tudo mais, entre na pasta MODS e crie um arquivo com o nome de cleanhouses.xml e dentro coloque o seguinte: <?xml version="1.0" encoding="UTF-8"?> <mod name="Cleanhouses" version="1.03" author="nsanee" contact="tibiaking.com" enabled="yes"> <description> v.1.03 - Added 'onlyNonPremium' configurable. Removed modlib, since the script is run once anyway we don't need it loaded at all times. It shouldn't now stop execution when a house is nameless. v.1.02 - now uses only one sql query, removed multiworld configurable since it's not needed anymore v.1.01 - small fixes, optimized query + multiworld support. This mod will clean houses of inactive players and move their items to the depot. config explained: days - If the player hasn't logged in for this number of days his house will be freed. log - true/false, whether to enable logging of which houses have been cleaned. file - path to the log file, where logs will be stored. Ignored if 'log' set to false onlyNonPremium - if set to 'true', the script will clean only the houses of players who don't have any pacc days left. other notes: DO NOT remove doSaveServer() at the end, otherwise if your server happens to crash before the nearest server save you will regret it =) </description> <globalevent name="cleanhouses" type="start" event="buffer"><![CDATA[ local config = { days = 3, log = true, file = getDataDir() .. "/logs/cleanhouses.txt", onlyNonPremium = true } local ns_query =[[ SELECT houses.owner, houses.id as hid, houses.name as house_name ,players.name FROM houses LEFT JOIN players ON players.id=houses.owner LEFT JOIN accounts ON players.account_id=accounts.id WHERE players.lastlogin < (UNIX_TIMESTAMP() - ]] ..config.days.. [[*24*60*60) ]] ..(config.onlyNonPremium and ' AND accounts.premdays=0 ' or '')..[[ AND players.world_id =]] .. getConfigValue("worldId") local house = db.getResult(ns_query) local logs = " :: Houses cleaned:\n\n" if house:getID() ~= -1 then repeat logs = logs .. house:getDataString('house_name') ..", owned by " .. house:getDataString('name') .. "\n" setHouseOwner(house:getDataInt('hid'), 0) until not house:next() house:free() else logs = logs .. "There were no houses to clean." end if config.log then doWriteLogFile(config.file, logs) end addEvent(doSaveServer, 1000) ]]></globalevent> </mod> Pronto, salve e feche.
     
    Toda vez que o servidor iniciar irá expulsar os players que não logam aos dias configuráveis.
     
     

     
     
     
    Como configurar:
     days = 3 * É o número em DIAS que o player terá que ficar sem logar para perder a casa.
     
     
     
    Configure apenas isto, o resto aconselho não mexer, caso queira aprimorar o sistema aconselho ser avançado na área para não causar erros no mesmo.
     
     
     

    O Mesmo foi testado hoje por mim e está em funcionalidade a todas as versões de TFS.
     
     
     
    Créditos:
    Absolute
    nsanee (otland)




    Demais dúvidas deixe-me saber!
     
     
     
    Até o próximo
  12. Gostei
    azzouks deu reputação a xWhiteWolf em Dodge System (Por Item)   
    Fala galera do TK, hoje vim trazer pra vocês à pedidos do grande @azzouks uma versão do meu Dodge System por equips.

    Explicação: É um sistema onde vc pode colocar uma % de esquiva nos itens e ao usá-los você ganha a chance de desviar dos ataques e levar somente metade do dano.

    Qualquer semelhança com esse > http://www.tibiaking.com/forum/topic/8223-mod-reflect-system-01/ < mod do @Aluccard não é mera coincidência, eu usei o mod dele como base pra fazer o meu *-*

    Sem mais delongas vamos ao script:
    Vá na pasta do seu server e abra uma pasta chamada "mods".. lá dentro crie um arquivo com o nome que vc quiser (sério) de extensão.xml e adicione o seguinte nele:
     




    Configurando:
    Se você não manja de script então eu sugiro que vcs só alterem essa parte aqui:
     
    em vermelho é o máximo que uma pessoa pode ter de dodge: se ela tiver usando um full set que deixe ela com um total de 99% de dodge ela só vai poder aproveitar 50%. Isso foi feito pra evitar um bug.. vocês podem se sentir livres pra alterar esse numero mas não coloquem nada muito grande pra evitar que seus servers explodam.
    em verde é a porcentagem do dano que vocês vao tomar ao desviar.. nesse caso os ataques que eu der dodge darão 50% do dano (0.5)
    em azul é a porcentagem inicial que todos os players vão ter. Por padrão está 0 mas se vc quiser que todos os players do seu server tenham 20% e que cada item dê 5% também é possível editando esse 0 pra 20.

    Feito isso vá em data\lib\function.lua e adicione essas linhas 
    function getItemDodgePercent(itemuid) return getItemAttribute(itemuid, "dodgePercent") end function doPlayerAddDodgeItem(cid, itemid, percent) local item = doPlayerAddItem(cid, itemid) doItemSetAttribute(item, "description", "[Dodge: "..percent.."%]") doItemSetAttribute(item, "dodgePercent", percent) end Agora é só aproveitar no seu server.. toda vez que vc for usar num script vc poderá utilizar as funções getItemDodgePercent(item)
    e a doPlayerAddDodgeItem(cid, itemid, percent).

    Pra finalizar aqui tem um exemplo de uma quest que dá uma plate armor com 0.8% de dodge:




    Espero que gostem!


    EDITADO: 
     
    Fiz um script de action pra ser uma pedra que vai dar dodge nos items. Ele tem muito que melhorar mas por ora ele tá 99% pronto pra ser colocado em algum server que utilize esse dodge system.
    function isHandItem(uid) -- NW based on Mock          uid = uid or 0         if isInArray({1,2,3,4,5,6}, getItemWeaponType(uid)) then              return true          end          return false end function getItemDodgePercent(itemuid) return getItemAttribute(itemuid, "dodgePercent") or 0 end function setItemDodgePercent(uid, percent) doItemSetAttribute(uid, "description", "[Dodge: "..percent.."%]") doItemSetAttribute(uid, "dodgePercent", percent) end function onUse(cid, item, fromPosition, itemEx, toPosition)  level = 0 local upgrade = { [1] = {min = 1, max = 5, chance = 100}, [2] = {min = 5, max = 10, chance = 80}, [3] = {min = 10, max = 20, chance = 60}, [4] = {min = 20, max = 40, chance = 40}, [5] = {min = 40, max = 50, chance = 20} } function isWearing(uid) -- NW based on Mock          uid = uid or 0         if isInArray({uid}, getPlayerSlotItem(cid, 1).uid) or isInArray({uid}, getPlayerSlotItem(cid, 4).uid) or isInArray({uid}, getPlayerSlotItem(cid, 7).uid) or isInArray({uid}, getPlayerSlotItem(cid, 8).uid) then              return true          end          return false end if isHandItem(itemEx.uid) or isWearing(itemEx.uid) then local name = getItemName(itemEx.uid) local atual = math.floor(getItemDodgePercent(itemEx.uid)*10)/10 for i = 1, #upgrade do if string.find(tostring(name),"+".. i .."") then level = i end end if level >= #upgrade then doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Your item is already on max level, you can't upgrade it any further.") return true end if math.random(0,100) <= upgrade[level + 1].chance then  doRemoveItem(item.uid, 1) doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"You leveled your "..getItemNameById(itemEx.itemid).." to ".. level+1 ..".") setItemDodgePercent(itemEx.uid, atual + (math.random(upgrade[level+1].min,upgrade[level+1].max))/10) doItemSetAttribute(itemEx.uid,'name', getItemNameById(itemEx.itemid)..' +'..(level+1)) doSendMagicEffect(toPosition, math.random(28,30)) else doRemoveItem(itemEx.uid, 1) doRemoveItem(item.uid, 1) doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Your "..getItemNameById(item.itemid).." has failed and destroyed your "..getItemNameById(itemEx.itemid).." in the process") doSendMagicEffect(toPosition, 4) end else doPlayerSendTextMessage(cid, 24,"You cant refine this item.") end return true end
    Note que pra colocar dodge num item ele tem que: Estar equipado se for qualquer tipo de armadura (legs, boots, helmet, armor) ou livremente (se for weapon/shield).. Necklaces, rings e pendants não são possíveis de colocar dodge.. se vc quiser que seja edita essa função dentro do script pros slots de ring e necklace mas eu não aconselharia a fazer isso.
     e no xml coloque: 
    <action itemid="8306" script=upgraderock.lua"/>
  13. Gostei
    azzouks deu reputação a xWhiteWolf em (Resolvido)[Pedido] Dodge System 8.54   
    vou dar uma olhada pra ver oque eu consigo fazer.. to seguindo o tópico, caso eu consiga eu posto aqui
  14. Gostei
    opa, quem quiser pode fechar o tópico... segue solução:
     
    O groups.xml deve estar assim:
    <?xml version="1.0" encoding="UTF-8"?> <groups> <group id="1" name="Player"/> <group id="2" name="Tutor" flags="16809984" customFlags="2" access="1"/> <group id="3" name="Senior Tutor" flags="68736352256" customFlags="14" access="2" maxVips="200"/> <group id="4" name="Gamemaster" flags="3808558964575" customFlags="257215" access="3" depotLimit="3000" maxVips="300" outfit="75"/> <group id="5" name="Community Manager" flags="3840774348794" customFlags="781823" access="4" depotLimit="4000" maxVips="400" outfit="266"/> <group id="6" name="God" flags="3845069447162" customFlags="50331647" access="5" depotLimit="5000" maxVips="500" outfit="302"/> </groups> E o channels.xml deve estar assim:
     
    <?xml version="1.0" encoding="UTF-8"?> <channels> <!-- README: 0 - dynamic, reserved for guilds 1 - always acts as Party channel, only "name" tag available 6 - acts as Help channel- clientsided message 65535 - DO NOT CHANGE THE ID- only "name", "enabled", "active" and "logged" tags available --> <channel id="1" name="Party"/> <channel id="2" name="Counselor" access="1"/> <channel id="3" name="World Chat" level="2"/> <channel id="4" name="Staff" access="3"/> <channel id="5" name="Advertising" level="8" muted="120" conditionId="2" conditionMessage="You may only place one offer in two minutes."> <vocation id="1-8"/> </channel> <channel id="6" name="Advertising-Rookgaard" level="2" muted="120" conditionId="3" conditionMessage="You may only place one offer in two minutes."> <vocation id="0"/> </channel> <channel id="7" name="Help" logged="yes"/> <channel id="8" name="English Chat" level="2"/> <!-- <channel id="9" name="My Custom Channel"/> --> <channel id="65535" name="Private Chat Channel"/> </channels> Obrigado a todos que tentaram ajudar!
  15. Gostei
    azzouks deu reputação a Absolute em [City War Event] Luta pela sobrevivência   
    Fala galerinha linda do TK, hoje estou trazendo um evento que andei modificando e otimizando, é o evento City WAR, este evento tem no servidor globalwar e outros.
    A autoria vem de um membro da otland, portante havia o mesmo aqui em um datapack e decidi otimizar este evento para vocês do TK.
    Observação: É um pouco parecido com o evento do meu amigo e scripter DuH, porém com mais funções e regras, mas o objetivo é praticamente o mesmo.
     
     
    Como funciona:
     



     
     
     
     
     
     
    Vamos lá;
     
    Primeiramente, em sua pasta data/lib crie um arquivo com o nome de city war.lua e dentro do mesmo coloque:
    configCW = {timetostart = 500, -- tempo para iniciar o evento em segundos by Absolute telpos = {x=32340, y=32213, z=7}, -- onde aparecerá o teleport stats = 201201201701, kill = 201201201702, death = 201201201703, ostime = 201201201704, evttime = 20, -- quanto tempo irá rolar o evento topleftPos = {x=32722, y=31336, z=6}, -- canto esquerdo superior botrightPos = {x=32791, y=31384, z=6}, -- canto direito inferior templepos = {x=32369, y=32241, z=7}, -- posição do templo principal arenapos = {{x=32722, y=31340, z=6}, {x=32786, y=31336, z=6}, {x=32722, y=31380, z=6}, {x=32783, y=31374, z=6}}, -- posição dos 4 tronos times = 8, -- não precisa mexer finaltime = 300 -- não precisa mexer } function configCW:new() local newevt = {} setmetatable(newevt, self) self.__index = self doBroadcastMessage("The City War will be open in " .. self.timetostart .. " seconds.") setGlobalStorageValue(self.stats, 0) addEvent(function () newevt:start() end, self.timetostart*1000) end function configCW:start() if getGlobalStorageValue(self.stats) == 0 then setGlobalStorageValue(self.ostime, os.time()) local teleport = doCreateItem(1387, self.telpos) doItemSetAttribute(teleport, "aid", 5540) setGlobalStorageValue(self.stats, 1) doBroadcastMessage("The City War is starting...") for _, posi in pairs(self.arenapos) do local item = getTileItemById(posi, 1387) if(item.uid ~= 0) then doRemoveItem(item.uid) end end addEvent(function () self:preclose() end, self.evttime*1000*60) addEvent(function () self:announce(0) end, (self.evttime/self.times)*1000*60) end end function configCW:announce(times) if times < self.times then if #self:getTopFrags(true) >= 1 then doBroadcastMessage("Top City War fraggers: " .. self:getTopFrags()) end addEvent(function () self:announce(times+1) end, (self.evttime/self.times)*1000*60) end end function configCW:preclose() if getGlobalStorageValue(self.stats) == 1 then setGlobalStorageValue(self.stats, 2) doBroadcastMessage("The City War will end in " .. self.finaltime .. " seconds.") addEvent(function () self:close() end, self.finaltime*1000) local item = getTileItemById(self.telpos, 1387) if(item.uid ~= 0) then doRemoveItem(item.uid) end end end function configCW:close() if getGlobalStorageValue(self.stats) == 2 then if #self:getTopFrags(true) >= 1 then doBroadcastMessage("The City War has ended. The winners are: " .. self:getTopFrags()) else doBroadcastMessage("The City War has ended. There were no winners.") end doRemovePlayersFromArea(self.topleftPos, self.botrightPos, self.templepos) for _, posi in pairs(self.arenapos) do doCreateTeleport(1387, self.templepos, posi) end for place, info in ipairs(self:getTopFrags(true)) do if place > 5 then break end local cid = getPlayerByName(info) doPlayerSendTextMessage(cid, 4, "Congratulations, you were the " .. place .. "º place in the City War.") doPlayerAddItem(cid, 6571, 1) end setGlobalStorageValue(self.stats, -1) end end function configCW:isPlayerInEvent(cid) if getPlayerStorageValue(cid, self.stats) == -1 or getPlayerStorageValue(cid, self.stats) - os.time() <= -5 or getGlobalStorageValue(self.stats) < 1 then return false end return true end function configCW:getTopFrags(tab) local frag = {} for _, pid in pairs(getPlayersOnline()) do if (getPlayerStorageValue(pid, self.kill) ~= -1 or getPlayerStorageValue(pid, self.death) ~= -1) and self:isPlayerInEvent(pid) then local kill = getPlayerStorageValue(pid, self.kill)+1 local death = getPlayerStorageValue(pid, self.death)+1 print(getCreatureName(pid), kill-death) table.insert(frag, {getCreatureName(pid), kill-death}) end end print(#frag) local frag, str, n = doOrderTab(frag, 0), nil, 5 print(#frag) if tab then return frag else if #frag < 5 then n = #frag end for i = 1, n do local cid = getPlayerByName(frag[i]) local kill = getPlayerStorageValue(cid, self.kill)+1 local death = getPlayerStorageValue(cid, self.death)+1 str = str and str .. ", " .. frag[i] .. "[" .. kill .. "/" .. death .. "]" or frag[i] .. "[" .. kill .. "/" .. death .. "]" end end return str end function doOrderTab(tabela, value) local max, index = {}, nil for i = 1, #tabela do valor = value for a, b in ipairs(tabela) do if b[2] > valor then valor = b[2] valor2 = b[1] index = a end end table.remove(tabela, index) if valor ~= value then table.insert(max, valor2) end end return max end Configuração do arquivo:
    telpos = {x=32340, y=32213, z=7}, -- POSIÇÃO ONDE NASCE O TP DO EVENTO!
    topleftPos = {x=32722, y=31336, z=6}, -- AQUI COLOQUE A POSIÇÃO DO CANTO ESQUERDO LA EM CIMA DO MAPA botrightPos = {x=32791, y=31384, z=6}, -- AQUI A POSIÇÃO DO CANTO DIREITO EM BAIXO DO MAPA templepos = {x=32369, y=32241, z=7}, -- POSIÇÃO DO TEMPLO ONDE OS JOGADORES NASCERAM PÓS A MORTE arenapos = {{x=32722, y=31340, z=6}, {x=32786, y=31336, z=6}, {x=32722, y=31380, z=6}, {x=32783, y=31374, z=6}}, -- ATENÇÃO, NO MAPA QUE ESTAREI DISPONIBILIZANDO VISIVELMENTE TERÁ 4 BASES, VOCÊ TERA QUE COLOCAR A POSIÇÃO DAS BASES AÍ NESSES 3 LUGARES.  doPlayerAddItem(cid, 6571, 1) -- AQUI VOCÊ COLOCARÁ O PRÊMIO DO GANHADOR, NO CASO QUEIRA ADICIONAR POR EXEMPLO 1kk, COLOQUE 2160,1 - Primeiro ID depois quantia.       Segundo passo, crie um arquivo com o nome de citywarCreature.lua e coloque dentro da pasta creaturescripts/scripts com o seguinte conteúdo: function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) if isInRange(getCreaturePosition(cid), configCW.topleftPos, configCW.botrightPos) then setPlayerStorageValue(cid, configCW.death, getPlayerStorageValue(cid, configCW.death) +1) setPlayerStorageValue(lastHitKiller[1], configCW.kill, getPlayerStorageValue(lastHitKiller[1], configCW.kill) +1) end return true end E adicione em creaturescripts.xml a seguinte tag
    <event type="preparedeath" name="CityWar" event="script" value="citywarCreature.lua"/>   Terceiro passo, crie um arquivo em movements/scripts com o nome de citywarMovements.lua com o seguinte conteúdo: function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition) if isPlayer(cid) and getGlobalStorageValue(configCW.stats) == 1 then doTeleportThing(cid, configCW.arenapos[math.random(1, #configCW.arenapos)]) doSendMagicEffect(getPlayerPosition(cid), 28) if not(configCW:isPlayerInEvent(cid)) then setPlayerStorageValue(cid, configCW.stats, getGlobalStorageValue(configCW.ostime) + configCW.evttime*60 + configCW.finaltime) setPlayerStorageValue(cid, configCW.kill, -1) setPlayerStorageValue(cid, configCW.death, -1) end else doTeleportThing(cid, fromPosition) end return true end Em Movements.xml adicione a seguinte linha: <movevent type="StepIn" actionid="5540" event="script" value="citywarMovements.lua"/> Quarto e último passo, em talkactions/scripts crie um arquivo com o nome de citywarTalkactions.lua e coloque o seguinte conteúdo:
    function onSay(cid, words, param) if getGlobalStorageValue(configCW.stats) == -1 then configCW:new() else doPlayerSendCancel(cid, "The event is already running.") end return true end Em talkactions/talkactions.xml adicione a seguinte linha:
    <talkaction log="yes" words="/citywar" access="3" event="script" value="citywarTalkactions.lua"/> E por fim, estou disponibilizando o world do evento, vocês usam se quiser, tentei adapta-lo para 8.6 mas ficou meio slá, o Viiting estava ocupado e não pode me ajudar, enfim segue a imagem e download do world.otbm:
     


        Lembrando que ninguém além do Collocorpusek da otland tem direito de pedir remoção do script, pois a base é dele.
       
    Créditos:
    Absolute
    Collocor Gringo Lindo.
     
  16. Gostei
    azzouks deu reputação a luanluciano93 em (Resolvido)Erro ao clicar em 'my account'   
    Use o comando no phpmyadmin:
    ALTER TABLE `bans` ADD `reason` INT UNSIGNED NOT NULL DEFAULT 0;
  17. Gostei
    Entre em "accountmanagement.php", procure por essa linha.
    $account_location = $account_logged->getLocation();

    Logo abaixo coloque isso e salve!.     
    $acc_id = $account_logged->getId();
    if($acc_id == 1) die("Está conta está BLOQUEADA.");
  18. Gostei
    azzouks deu reputação a Natanael Beckman em DEV C++ Compilando TFS no Windows   
    DEV C++,  aprenda a compila uma source TFS!
     
    Downloads(Baixe de acordo as configurações do seu windows):
    DEV C++ CONFIGURADO PARA 32BITS
    DEV C++ CONFIGURADO PARA 64BITS
    REV 3884 TFS 0.4
     
    Certo, feitos os downloads, extrai DEV C++ no Disco C e REV 3884 em Documentos.
    ======================================
    Abra o DEV C++:
    ======================================

    ======================================
    Abra a Source:
    ======================================

    ======================================
    Localize a pasta da Source e abra o arquivo TheForgottenServer.dev, Documentos> trunk.r3884> dev-cpp> TheForgottenServer.dev:
    ======================================

    =============================================================

    ======================================
    Aguarde carregar todos os arquivos:
    ======================================

    ======================================
    Vamos adicionar o parâmetro -D__CONSOLE__ no teclado digita ALT + P, clique em parameters e adicione o parâmetro... Feito? clique em OK:
    ======================================

    ======================================
    Vamos compilar Source, no teclado digite CTRL+F9 e aguarde finalizar o processo:
    ======================================

    ======================================
    Se der tudo certo em Log vai estar como mostra a imagem abaixo:
    ======================================

    ======================================
    Verifique na pasta Documentos> trunk.r3884> dev-cpp você vai encontrar o arquivo TheForgottenServer.exe e pronto meu parabéns você compilou!
    ======================================

    ===========================================
    Só isso galera tutorial rápido resumido e útil!
    Créditos Natanael Beckman!    
    ===========================================     
     
    Caso você adquira uma source com apenas os arquivos .cpp e .h e não sabe como compilar o projeto, abaixo vamos explicar:
    Na pasta onde está localizado os arquivos .cpp e .h crie uma pasta chamada dev-cpp, e dentro dela adicione uma imagem icone.
     

     
    Abra o DEV-C++, clique em  File> New> Project:
     

     
    Logo em seguida selecione Empty Project, em name terá o nome Project1 altere utilize o nome quer quiser, após isso clique em OK e em seguida selecione a pasta dev-cpp que criamos:
     

     
    Agora selecione a opção Win32GUI caso use source OTX ou TFS selecione Win32Console ao lado << Browse selecione a imagem do icone que está na pasta Dev-Cpp.
     

     
    No mesmo menu na aba Parameters em C++ compiler adicione os seguintes parâmetros:
    -D__ENABLE_SERVER_DIAGNOSTIC__ -D__ROOT_PERMISSION__ -D__GROUND_CACHE__ -D__USE_SQLITE__ -D__USE_MYSQL__ -D__CONSOLE__ -D__WAR_SYSTEM__ E em Linker adicione as seguintes libs:
    -lboost_filesystem -lboost_thread -lboost_system -lboost_regex -lsqlite3 -lwsock32 -llua5.1 -lws2_32 -leay32 -lmysql -lxml2 -lgmp -lz -s   No mesmo Menu na aba Build Option escreva na segunda coluna horizontal escreva Obj e dê OK.     Na lateral terá o nome do seu projeto o meu no caso é The Forgotten Server, clique com o botão direito do mouse em cima do nome e clique na opção Add Project:      Selecione na pasta da sua source todos os arquivos .cpp e .h após isso salva o projeto e já pode compilar CTRL+F9:         OpenSSL 0.9.8   1º baixe http://devpaks.org/details.php?devpak=73 2° abra Dev-Cpp > Tools > Packager Manager > Install > Seleciona o arquivo baixado e instala, fecha abre e testa!
      Clica aqui \/
  19. Gostei
    azzouks deu reputação a grafit em Tirar Battle ao entrar em PZ   
    Desculpa estar revivendo o post mas pode ser dúvida de outras pessoas..
     
    Nas versões novas ele não aceita o comando
     

    doRemoveCondition(cid, CONDITION_INFIGHT)  
     
    Ele só aceita assim:
     

    doRemoveConditions(cid, CONDITION_INFIGHT)    
    Então o código fica assim:
     

    function onThink(cid, interval) if(getTilePzInfo(getCreaturePosition(cid))) then doRemoveConditions(cid, CONDITION_INFIGHT) end end  
     
    com um S no condition
  20. Gostei
    azzouks deu reputação a Victor Fanly em [ajuda] preciso converter a versao do meu mapa   
    Creio que pra converter um mapa você precisa ir em File>Import>Import Map, o RME vai importar o mapa pra versão dele.
  21. Gostei
    azzouks deu reputação a Jamison Collins em Critical hit com Regen Life   
    Tente isso : 
    local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) function onGetFormulaValues(cid, level, maglevel) skill = getPlayerSkill(cid,3) min = -((skill*52)+(level*2)) max = -((skill*55)+(level*2)) return min, max end setCombatCallback(combat1, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_EFFECT, 31) setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) function onGetFormulaValues(cid, level, maglevel) skill = getPlayerSkill(cid,3) min = -((skill*55)+(level*3)) max = -((skill*60)+(level*4)) return min, max end setCombatCallback(combat2, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_EFFECT, 31) setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) function onGetFormulaValues(cid, level, maglevel) skill = getPlayerSkill(cid,3) min = -((skill*59)+(level*4)) max = -((skill*66)+(level*5)) return min, max end setCombatCallback(combat3, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") local condition = createConditionObject(CONDITION_EMO) setConditionParam(condition, CONDITION_PARAM_DELAYED, 1) addDamageCondition(condition, 100, 3000, -607) setCombatCondition(combat2, condition) local condition = createConditionObject(CONDITION_EMO) setConditionParam(condition, CONDITION_PARAM_DELAYED, 1) addDamageCondition(condition, 100, 3000, -607) setCombatCondition(combat3, condition) function onUseWeapon(cid, var) Critical = math.random(1,100) if Critical > 80 then local regenhp = (getCreatureMaxHealth(cid) / 100) * 10 doPlayerAddHealth(cid, regenhp) doSendAnimatedText(getPlayerPosition(cid), "Critical!", TEXTCOLOR_LIGHTGREY) doCombat(cid, combat2, var) end Critical = math.random(1,100) if Critical < 2 then local regenhp = (getCreatureMaxHealth(cid) / 100) * 10 doPlayerAddHealth(cid, regenhp) doPlayerSay(cid,"For Honor!",16) doSendAnimatedText(getPlayerPosition(cid), "Critical!", TEXTCOLOR_LIGHTGREY) doCombat(cid, combat3, var) else doCombat(cid, combat1, var) end end Não testei.
     
     
    @edit
     
    Vi que se script tem um bug...
    Não existe a função:  'getCreatureHealthMax'
    O correto é: 'getCreatureMaxHealth' 
    Então, você tem a opção de usar o script acima, ou de apenas alterar a função errada para função certa no seu script.
  22. Gostei
    azzouks deu reputação a Adriano SwaTT em [Tutorial] Criando Mana Rune   
    É, todos conhecem a "Mana Rune", então nem tenho muito o que fala...
    Então vamos lá..

    A Imagem da Runa que será a "Mana Rune" está no spoiler abaixo.





    1º Passo





    2º Passo





    3º Passo




    Apague o que está codificado e adicione o código abaixo em seu lugar.

    <item id="2281" article="a" name="Mana Rune"> <attribute key="weight" value="120" /> </item>


    É, eu acho que é isso...Espero que funcione.


    Créditos pelo Script: Miter (Outro Forum)
    Script Editado por: AdrianoSwaTT
    TUTORIAL feito por: AdrianoSwaTT


    Abraços galera
  23. Gostei
    azzouks deu reputação a xWhiteWolf em (Resolvido)[Pedido Duplo] NPC que reseta e Nova Moeda   
    @Lyon @azzouks o script funcinou até na parte de editar as skills? é que eu nunca havia mexido com npc antes, foi realmente um "desafio". 
  24. Gostei
    azzouks deu reputação a Adriano SwaTT em ajuda com funçoes   
    Algumas funções funcionam em quaisquer versões.
    Se der sorte, basta seguir normalmente o tutorial da versão 8.6 na versão 7.92.
    Agora tem pequenos detalhes que podem ser diferente, como a colocação da palavra de função (ex: 8.60 "doPlayerAddItem" e em 7.92 "doPlayerAddItemCount", tipo isso [meramente exemplo]) mas se for só isso é pouca coisa a se arrumar.
  25. Gostei
    azzouks deu reputação a xWhiteWolf em (Resolvido)[Pedido Duplo] NPC que reseta e Nova Moeda   
    comente alguma coisa.... funcionou? não funcionou? eu dediquei muito tempo fazendo isso pra você e eu gostaria de um feedback.

Informação Importante

Confirmação de Termo