Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 03/13/17 em todas áreas

  1. Anél de Experiência' [Exp Ring]

    HaragOT reagiu a Adriano SwaTT por uma resposta no tópico

    1 ponto
    Eu tentei achar aqui no TibiaKing o Anél de Experiência (Ring of Experience ou Exp Ring), e só achei um tutorial, mas está meio imcompleto e confuso... No entanto decidi postar este que criei há alguns meses. Como o nome diz, é um anél que aumenta a experiência de sua caçada' (configurável) \o/ Vamos lá... 1º Passo 2º Passo <movevent type="Equip" itemid="7697" slot="ring" event="script" value="exp_ring.lua"/> <movevent type="DeEquip" itemid="7697" slot="ring" event="script" value="exp_ring.lua"/> <movevent type="Equip" itemid="7708" slot="ring" event="script" value="exp_ring.lua"/> <movevent type="DeEquip" itemid="7708" slot="ring" event="script" value="exp_ring.lua"/> Pronto, em "movements.xml" é só. 3º Passo Aqui, temos duas opções... O Exp Ring Tradicional é para server com Experiência fixa, ou seja, a EXP é sempre a mesma.. Já o Exp Ring por Stages é para server que a Experiência varia de acordo com o level do player. Clique no Spoiler referente ao seu server. EXP RING Tradicional: function onEquip(cid, item, slot) doTransformItem(item.uid, 7697, 1) doPlayerSendTextMessage(cid, 22, 'Agora ganha 2x mais experiencia!') doPlayerSetExperienceRate(cid, getConfigValue("rateExperience")*0.2) return TRUE end function onDeEquip(cid, item, slot) doTransformItem(item.uid, 7708, 1) doPlayerSendTextMessage(cid, 22, 'Experiencia extra cancelada.') doPlayerSetExperienceRate(cid, 1) return TRUE end EXP RING por Stages: function onEquip(cid, item, slot) local rate = {} if getPlayerLevel(cid) <= 200 then rate = 1.3 elseif getPlayerLevel(cid) > 200 and getPlayerLevel(cid) <= 280 then rate = 1.15 elseif getPlayerLevel(cid) > 280 then rate = 1.05 end doTransformItem(item.uid, 7697, 1) doPlayerSendTextMessage(cid, 22, "Sua experiencia foi aumentada em "..((rate - 1)*100).." %.") doPlayerSetExperienceRate(cid, rate) return TRUE end function onDeEquip(cid, item, slot) doTransformItem(item.uid, 7708, 1) doPlayerSendTextMessage(cid, 22, "Sua experiencia esta de volta ao normal.") doPlayerSetExperienceRate(cid, 1.0) return TRUE end Salve-o e feche o arquivo. Para aprender configurar a rate do Script clique no spoiler abaixo: Azul: É o valor em vezes que aumentará a experiência. Ex: Onde está o "2" no código, você pode substituir por quantas vezes que que seja a multiplicação da EXP' (2 é igual a 2x mais Exp)... Ou pode por em porcentagens usando como está abaixo: 1.5 = 50% 1.2 = 20% E assim sucessivamente. Se quer um Anel de Experiencia Recarregável (como soft boots), clique no Spoiler abaixo. Configurações do NPC: Recolhe: "broken experience ring" Custo: "50k" Devolte: "Brand-New Experience Ring" 5º Passo É, acho que é isso... Qualquer coisa postem aqui para resolvermos juntos. Eu editei o Script, criei o NPC e criei o Tutorial. Créditos pelo tutorial: AdrianoSwaTT Créditos pelo Exp Ring Stages: Vodkart Créditos pelo Script: OTLand Abraços, espero que seja útil' 2º Passo <movevent type="Equip" itemid="7697" slot="ring" event="script" value="exp_ring.lua"/> <movevent type="DeEquip" itemid="7697" slot="ring" event="script" value="exp_ring.lua"/> <movevent type="Equip" itemid="7708" slot="ring" event="script" value="exp_ring.lua"/> <movevent type="DeEquip" itemid="7708" slot="ring" event="script" value="exp_ring.lua/"> Pronto, em "movements.xml" é só. 3º Passo function onEquip(cid, item, slot) doTransformItem(item.uid, 7697, 1) doPlayerSendTextMessage(cid, 22, 'Agora ganha 2x mais experiencia!') doPlayerSetExperienceRate(cid, getConfigValue("rateExperience")*0.2) return TRUE end function onDeEquip(cid, item, slot) doTransformItem(item.uid, 7708, 1) doPlayerSendTextMessage(cid, 22, 'Experiencia extra cancelada.') doPlayerSetExperienceRate(cid, 1) return TRUE end 4º Passo <!--?xml version="1.0" encoding="UTF-8"?--> <npc name="Joalheiro" script="data/npc/scripts/Sell/ring_repair.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"> <look type="128" head="40" body="37" legs="116" feet="95" addons="0"> <parameters> <parameter key="message_greet" value="Just great, another ... 'customer'. Hello, |PLAYERNAME|. If you want to trade, let's get it over with."> <parameter key="message_farewell" value="That's music in my ears."> <parameter key="message_walkaway" value="Yeah, get lost."> <parameter key="message_onsendtrade" value="Yeah, buy something."> <parameter key="module_shop" value="1"> </parameters> </npc> Salve e feche. Agora vá na pasta ( Data / NPC / Scripts / Sell ) e crie um arquivo com o nome "ring_repair.lua" (pode copiar um arquivo existente e renomeá-lo). Após fazer isto, abra este arquivo (ring_repair.lua) e cole o código abaixo dentro. Obs: se tiver algo escrito do arquivo, apague-o e deixe somente o código abaixo. local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if(msgcontains(msg, 'ring') or msgcontains(msg, 'experience')) then selfSay('Do you want to repair your experience ring for 50000 gold coins?', cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if(getPlayerItemCount(cid, 2122) >= 1) then if(doPlayerRemoveMoney(cid, 50000) == TRUE) then doPlayerRemoveItem(cid, 2122, 1) doPlayerAddItem(cid, 7697) selfSay('Here you are.', cid) else selfSay('Sorry, you don\'t have enough gold.', cid) end else selfSay('Sorry, you don\'t have the item.', cid) end talkState[talkUser] = 0 elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then talkState[talkUser] = 0 selfSay('Ok then.', cid) return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Salve e feche.
  2. EVENTO - Last Man Standing - 100% funcional.

    Vodkart reagiu a Xagah por uma resposta no tópico

    1 ponto
    Olá, bom dia a todos. Como tenho visto muitíssimos pedidos neste sentido, lhes apresento o LMS - Last Man Standing com BroadCast
  3. 1 ponto
    Bom Galera Esse Site ja Foi Postado Aki No Forum Mais O Link Foi Retirado Entao Estou trazendo Outra vez pra caso alguem queira usar IMAGENS Download Scan Creditos Para Otpokemon Pelo Site eo @wougoplex Pelo Reuplound
  4. Experience Weapon System

    JowL reagiu a xWhiteWolf por uma resposta no tópico

    1 ponto
    Eai galera, hoje eu to trazendo pra vocês o meu Experience Weapon System. Pra quem não conhece é um sistema em que conforme você vai matando os monstros sua arma vai adquirindo parte da experiencia e upando de nível junto com você! Eu abri um tópico pra sugestões mas os players foram tão criativos que eu decidi seguir meus instintos e fazer da minha própria maneira se não ia ficar muito ruim pra servers que não fossem derivados. Testado em TFS 0.3.6 mas deve funcionar em qualquer um que tenha getThing(Pos) e onAttack e onKill ;] Foi decidido por mim então fazer da seguinte maneira: • Axes/ Swords/ Bows/ Crossbows: Tem 5% de chance (pra cada nivel) de ferir gravemente o oponente e deixar ele sangrando, o nível do ferimento é proporcional ao nível da arma. • Clubs: Tem 5% de chance (pra cada nivel) de bater com tanta força que faça todos ao redor sentirem o tremor do seu ataque e levarem um dano baseado no nivel da arma e no ataque da mesma. • Wands/ Rods: Tem 5% de chance (pra cada nivel) de retirar uma quantidade de mana do player (proporcional ao nivel da arma) e ficar recuperando mana mais rapidamente durante 5 segundos após isso Dito isso vamos ao que interessa: Adiciona essas duas linhas no seu creaturescripts.xml: <event type="kill" name="itemexp" script="itemexp.lua"/> <event type="attack" name="conditionitem" script="conditionitem.lua"/> e no login.lua: --------------- Experience System ---------------- registerCreatureEvent(cid,"itemexp") registerCreatureEvent(cid,"conditionitem") Agora crie um arquivo em data\lib\ chamado 037 - Experience System.lua e coloque isso dentro dele: Feito isso crie um arquivo em creaturescripts\scripts chamado itemexp.lua e adicione isso daqui: Agora crie outro arquivo em creaturescripts\scripts, adicione isso daqui nele e chame de conditionitem.lua: Agora configurando: Obs: tudo que está no local um serve pros locais dois, tres, quatro e cinco pra configurar o nivel de sangramento em cada nível, tanto a velocidade que sangra como o dano que sai. No caso, sendo nivel 1 ele vai tirar 3x de -5, 3x de -3 e 3x de -2 antes de sumir, isso dá -30 de dano total em 9 segundos. Bom, é isso aí, a minha idéia era trazer um pouco a mais de RPG e fazer o pessoal pensar 2x antes de sair trocando suas armas pela primeira que ele dropa que tenha + ataque que a dele pois assim ele passa a ter que valorizar mais os itens que já possui a um bom tempo; Outro motivo é que agora os items vão valer mais e agora seu server vai ter mais movimento nas trocas ;] Espero que tenham gostado e qualquer coisa é só falar nos comentários. Abraço do lobinho. Ps: aqui tem duas fotinhas mas o resto só instalando mesmo porque tem bastante coisa pra mostrar. E lembrando, se te ajudei clica em Gostei aqui embaixo. Fuis
  5. Erro na Database (10.96)

    Dornellas reagiu a psychonaut por uma resposta no tópico

    1 ponto
    ALTER TABLE players ADD skill_critical_hit_chance INT NOT NULL DEFAULT(0) Seleciona o banco antes. Aí faz com os outros, só muda o nome Faltou a ; aí pra separar as queries Aqui se tu quiser tentar esse: ALTER TABLE `players` ADD COLUMN `skill_critical_hit_chance` INT(10) UNSIGNED NOT NULL DEFAULT(0); ALTER TABLE `players` ADD COLUMN `skill_critical_hit_chance_tries` BIGINT(20) UNSIGNED NOT NULL DEFAULT(0); ALTER TABLE `players` ADD COLUMN `skill_critical_hit_damage` INT(10) UNSIGNED NOT NULL DEFAULT(0); ALTER TABLE `players` ADD COLUMN `skill_critical_hit_damage_tries` BIGINT(20) UNSIGNED NOT NULL DEFAULT(0); ALTER TABLE `players` ADD COLUMN `skill_life_leech_chance` INT(10) UNSIGNED NOT NULL DEFAULT(0); ALTER TABLE `players` ADD COLUMN `skill_life_leech_chance_tries` BIGINT(20) UNSIGNED NOT NULL DEFAULT(0); ALTER TABLE `players` ADD COLUMN `skill_life_leech_amount` INT(10) UNSIGNED NOT NULL DEFAULT(0); ALTER TABLE `players` ADD COLUMN `skill_life_leech_amount_tries` BIGINT(20) UNSIGNED NOT NULL DEFAULT(0); ALTER TABLE `players` ADD COLUMN `skill_mana_leech_chance` INT(10) UNSIGNED NOT NULL DEFAULT(0); ALTER TABLE `players` ADD COLUMN `skill_mana_leech_chance_tries` BIGINT(20) UNSIGNED NOT NULL DEFAULT(0); ALTER TABLE `players` ADD COLUMN `skill_mana_leech_amount` INT(10) UNSIGNED NOT NULL DEFAULT(0); ALTER TABLE `players` ADD COLUMN `skill_mana_leech_amount_tries` BIGINT(20) UNSIGNED NOT NULL DEFAULT(0);
  6. Erro na Database (10.96)

    Dornellas reagiu a psychonaut por uma resposta no tópico

    1 ponto
    Cria essa coluna aí na tabela players 1. Acessa http://localhost/phpmyadmin/ localhost você coloca o ip do servidor. 2. Abre o banco e clica em guilds ou a tabela que tá dando erro. A sua é players. 3. Clica em estrutura e Executar aonde diz criar nova coluna. 4. Aí vai adicionando como pedir A sua é pra adicionar a skill_critical_hit_change, tenta por INT e sem Tamanho/Valores e se não der certo põe VARCHAR no tipo e 255 no tamanho
  7. da uma olhada nesse tópico # link removido #
  8. Erro Weapon

    robi123 reagiu a DukeeH por uma resposta no tópico

    1 ponto
    Brother, você sabe compilar? Abre combat.cpp nas sources, procura por CombatHealthFunc. Essa função e a de baixo (CombatManaFunc) Troca as duas por isso: bool Combat::CombatHealthFunc(Creature* caster, Creature* target, const CombatParams& params, void* data) { int32_t change = 0; if(Combat2Var* var = (Combat2Var*)data) { change = var->change; if(!change) change = random_range(var->minChange, var->maxChange, DISTRO_NORMAL); } if(g_game.combatBlockHit(params.combatType, caster, target, change, params.blockedByShield, params.blockedByArmor)) return false; if(change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() == SKULL_BLACK) change = change*2; if(change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() != SKULL_BLACK) change = change; if(!g_game.combatChangeHealth(params.combatType, caster, target, change, params.effects.hit, params.effects.color)) return false; CombatConditionFunc(caster, target, params, NULL); CombatDispelFunc(caster, target, params, NULL); return true; } bool Combat::CombatManaFunc(Creature* caster, Creature* target, const CombatParams& params, void* data) { int32_t change = 0; if(Combat2Var* var = (Combat2Var*)data) { change = var->change; if(!change) change = random_range(var->minChange, var->maxChange, DISTRO_NORMAL); } if(change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() == SKULL_BLACK) change = change*2; if(change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() != SKULL_BLACK) change = change; if(!g_game.combatChangeMana(caster, target, change)) return false; CombatConditionFunc(caster, target, params, NULL); CombatDispelFunc(caster, target, params, NULL); return true; } Ai compila e testa sem o creaturescript, por ser uma versão das mais antigas, acho melhor manipular os danos por sources mesmo, ai acho que o *2 seria o valor correto (dobro).
  9. Erro Weapon

    robi123 reagiu a DukeeH por uma resposta no tópico

    1 ponto
    O problema do "um pouquinho menos" é porque nas versões mais velhas, essa função onStatsChange tem um problema: Você hita 200 do player, (descontando defesas) Essa função entra, pega o 200, multiplica por 2. Esse valor (400) passa de novo pela defesa. Estranho você colocar 0.9 e ele bater mais, isso ai era pra reduzir o dano em 10%. Quanto mais ali mais dano vai dar, vai tentando adequar a como ficar melhor. Pesado eu não diria, porque lua é bem leve. Mas pelas questões que falei a cima o melhor mesmo seria nas sources, ainda não tirar um tempo pra procurar. Mas em algum lugar das sources ele declara que os danos em player (seja magia ou ataque) são divididos pela metade dos causados em monstros. Se retirar isso ficaria igual e de forma mais limpa que em lua.
  10. script critical bug

    JcA reagiu a DukeeH por uma resposta no tópico

    1 ponto
    @JcA Faltou essa parte do topico que mandou. em creaturescripts\scripts\login.lua adicione isso antes do ultimo return true: if getPlayerStorageValue(cid, 48903) == -1 then setPlayerStorageValue(cid, 48903, 0) end Explicação: Os storages começam em -1, então a primeira pedra está levando pro 0. Colocando aquilo que mandei no login.lua, se o cara entrar e o storage do critical for -1, ele vai colocar 0. Assim a proxima pedra vai pro 1.
  11. Erro Weapon

    robi123 reagiu a DukeeH por uma resposta no tópico

    1 ponto
    Testa algo assim: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) function onGetFormulaValues(cid, weapon, sword, level) min = -(((weapon*2.0) + (((sword/5)*16.0)) + (level*6.0))) max = -(((weapon*2.0) + (((sword/5)*16.0)) + (level*6.0))) local dobromin = min local dobromax = max return min, max end setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onTargetCreature(cid, target) if(isPlayer(target)) then doTargetCombatHealth(cid, target, COMBAT_PHYSICALDAMAGE, dobromin, dobromax, CONST_ME_NONE) end return true end function onUseWeapon(cid, var) return doCombat(cid, combat, var) end Ele vê se o alvo é player e dobra o dano, mas se quiser em todas as armas e tal, o melhor seria sources. Vou procurar sobre. Edit. Outra idéia seria fazer um creaturescript pra cada dano que um jogador recebe, se for de outro jogador, multiplicar por 2. Funcionaria para ataque e magia e não precisaria editar tudo. creaturescripts/creaturescripts.xml <event type="statschange" name="danoplayers" event="script" value="danoplayers.lua"/> creaturescripts/scripts/danoplayers.lua function onStatsChange(cid, attacker, type, combat, value) if isPlayer(attacker) and isPlayer(cid) and type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS then doTargetCombatHealth(attacker, cid, combat, -value*2, -value*2, 255) end return true end creaturescripts/scripts/login.lua registerCreatureEvent(cid, "danoplayers")
  12. Erro Weapon

    robi123 reagiu a DukeeH por uma resposta no tópico

    1 ponto
    Normal, qualquer magia/arma bate menos em jogadores, mesmo sem itens. Em todos os servidores/distros... Provavelmente isso consta nas sources, mas não sei exatamente onde, posso procurar.
  13. Key Door Help

    Eduardo Dantas reagiu a psychonaut por uma resposta no tópico

    1 ponto
    ta aí, só demorou 5 anos REVERSE_DOORS, CHILD_DOORS = {}, {} for k, v in pairs(DOORS) do REVERSE_DOORS[v] = k local tmp = getItemInfo(v) if(tmp.transformUseTo ~= 0) then CHILD_DOORS[tmp.transformUseTo] = k end end function onUse(cid, item, fromPosition, itemEx, toPosition) if(item.aid > 0 and itemEx.aid > 0) then if(isPlayerPzLocked(cid) and getTileInfo(toPosition).protection) then doPlayerSendDefaultCancel(cid, RETURNVALUE_ACTIONNOTPERMITTEDINPROTECTIONZONE) return true end local doors = DOORS[itemEx.itemid] if(not doors) then doors = REVERSE_DOORS[itemEx.itemid] end if(not doors) then doors = CHILD_DOORS[itemEx.itemid] end if(doors) then if(item.actionid ~= itemEx.actionid) then doPlayerSendCancel(cid, "The key does not match.") else if (getCreaturePosition(cid).x < getThingPos(item.uid).x) then doTeleportThing(cid, {x=getThingPos(item.uid).x+1, y=getThingPos(item.uid).y, z=getThingPos(item.uid).z}) doSendMagicEffect({x=getThingPos(item.uid).x+1, y=getThingPos(item.uid).y, z=getThingPos(item.uid).z}, CONST_ME_MAGIC_BLUE) else doTeleportThing(cid, {x=getThingPos(item.uid).x-1, y=getThingPos(item.uid).y, z=getThingPos(item.uid).z}) doSendMagicEffect({x=getThingPos(item.uid).x-1, y=getThingPos(item.uid).y, z=getThingPos(item.uid).z}, CONST_ME_MAGIC_BLUE) end end return true end end return false end
  14. Spell Errp

    robi123 reagiu a Rusherzin por uma resposta no tópico

    1 ponto
    Posta o script da spell.
  15. Dailly Quest

    Mateus Lagasse reagiu a carlinhosvrb por uma resposta no tópico

    1 ponto
  16. (Resolvido)Correção em um script action

    Breaky reagiu a Sekk por uma resposta no tópico

    1 ponto
    Acho que assim ta certo, testa ai @Breaky function onUse(cid, item, itemEx, toPosition, fromPosition) local s = 89745 local outfitF = 136 -- outfit Female citizen local outfitM = 128 -- outfit Male citizen local condo = createConditionObject(CONDITION_OUTFIT) if getPlayerStorageValue(cid, s) == 4 then doPlayerRemoveItem(cid, item.uid, 1) if getPlayerSex(cid) == 0 then addOutfitCondition(condo, {lookType = outfitF, lookHead = 114, lookBody = 114, lookLegs = 114, lookFeet = 114}) -- escolhe a cor de cada membro do outfit ai doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_BLUE) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Now, you cannot change your outfit!") else addOutfitCondition(condo, {lookType = outfitM, lookHead = 114, lookBody = 114, lookLegs = 114, lookFeet = 114}) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_BLUE) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Now, you cannot change your outfit!") end else doPlayerSendCancel(cid, "Sorry, you can't use this item yet.") end return true end
  17. Preciso de uma query para snowball event.

    lucasmuniz67 reagiu a Vodkart por uma resposta no tópico

    1 ponto
    CREATE TABLE IF NOT EXISTS `snowballwar` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `score` int(11) NOT NULL, `data` varchar(255) NOT NULL, `hora` varchar(255) NOT NULL, PRIMARY KEY (`id`), KEY `id` (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ; ALTER TABLE `players` ADD `sbw_points` BIGINT( 255 ) NOT NULL DEFAULT '0';
  18. Mordem Acc Otpokemon 4.0 Re-uplound

    DrewMarques reagiu a Tio Marshmello por uma resposta no tópico

    1 ponto
    esse layout foi pego na net mais um membro posto e dps deleto
  19. Mordem Acc Otpokemon 4.0 Re-uplound

    Monicamayway reagiu a Tio Marshmello por uma resposta no tópico

    1 ponto
    Topico atualizado
  20. 1 ponto
    E seu ? entao vou por os creditos
  21. 1 ponto
    Obg por aprovar Mano
  22. (Resolvido)script npc de repair

    jNo reagiu a psychonaut por uma resposta no tópico

    1 ponto
    Tenta aí
  23. (Resolvido)talk de !promotion

    jNo reagiu a Weslley Kiyo por uma resposta no tópico

    1 ponto
    Acho que seria assim então [1] = {level = 8, promoteid = 5, preco = 20000}, [2] = {level = 8, promoteid = 6, preco = 20000}, [3] = {level = 8, promoteid = 7, preco = 20000}, [4] = {level = 8, promoteid = 8, preco = 20000}, [5] = {level = 1000, promoteid = 9, preco = 100000000}, [6] = {level = 1000, promoteid = 10, preco = 100000000}, [7] = {level = 1000, promoteid = 11, preco = 100000000}, [8] = {level = 1000, promoteid = 12, preco = 100000000} }
  24. Me ajudem por esse Talkaction ? pff

    markinhhos reagiu a Thony D. Serv por uma resposta no tópico

    1 ponto
    Vai na pasta data/lib e cria um arquivo chamado 049-vipsys.lua e adiciona isso dentro: vip = { name = "Vip system"; author = "Mock"; version = "1.0.0.0"; query="ALTER TABLE `accounts` ADD `prem_days` INTEGER"; query2="ALTER TABLE `accounts` ADD `prem_days` INT(15) NOT NULL" } function vip.setTable() dofile('config.lua') if sqlType == "mysql" then db.executeQuery(vip.query) else db.executeQuery(vip.query2) end end function vip.getVip(cid) assert(tonumber(cid),'Parameter must be a number') if isPlayer(cid) == FALSE then error('Player don\'t find') end; ae = db.getResult("SELECT `vip_days` FROM `accounts` WHERE `name` = '"..getPlayerAccount(cid).."';") if ae:getID() == -1 then return 0 end local retee = ae:getDataInt("vip_time") or 0 ae:free() return retee end function vip.getVipByAcc(acc) assert(acc,'Account is nil') local a = db.getResult("SELECT `vip_days` FROM `accounts` WHERE `name` = '"..acc.."';") if a:getID() ~= -1 then return a:getDataInt("vip_time") or 0, a:free() else error('Account don\'t find.') end end function vip.setVip(cid,time) dofile("config.lua") assert(tonumber(cid),'Parameter must be a number') assert(tonumber(time),'Parameter must be a number') if isPlayer(cid) == FALSE then error('Player don\'t find') end; db.executeQuery("UPDATE `"..sqlDatabase.."`.`accounts` SET `vip_days` = '"..(os.time()+time).."' WHERE `accounts`.`name` ='".. getPlayerAccount(cid).."';") end function vip.getVipByAccount(acc) assert(acc,'Account is nil') return db.getResult("SELECT `vip_days` FROM `accounts` WHERE `name` = '"..acc.."';"):getDataInt("vip_time") or 0 end function vip.hasVip(cid) assert(tonumber(cid),'Parameter must be a number') if isPlayer(cid) == FALSE then return end; local t = vip.getVip(cid) or 0 if os.time(day) &lt; t then return TRUE else return FALSE end end function vip.hasVips(cid) assert(tonumber(cid),'Parameter must be a number') if isPlayer(cid) == FALSE then return end; local t = vip.getVip(cid) if os.time(day) &lt; t then return TRUE else return FALSE end end function vip.accountHasVip(acc) assert(acc,'Account is nil') if os.time() &lt; vip.getVipByAccount(acc) then return TRUE else return FALSE end end function vip.getDays(days) return (3600 * 24 * days) end function vip.addVipByAccount(acc,time) assert(acc,'Account is nil') assert(tonumber(time),'Parameter must be a number') local a = vip.getVipByAcc(acc) a = os.difftime(a,os.time()) if a &lt; 0 then a = 0 end; a = a+time return vip.setVipByAccount(acc,a) end function vip.setVipByAccount(acc,time) dofile("config.lua") assert(acc,'Account is nil') assert(tonumber(time),'Parameter must be a number') db.executeQuery("UPDATE `accounts` SET `vip_days` = '"..(os.time()+time).."' WHERE `accounts`.`name` ='"..acc.."';") return TRUE end function vip.returnVipString(cid) assert(tonumber(cid),'Parameter must be a number') if isPlayer(cid) == TRUE then return os.date("%d %B %Y %X ", vip.getVip(cid)) end end Agora vai na pasta data/talkactions e abre o arquivo talkactions.xml e adiciona essa tag: <talkaction words="@buyvip30" event="script" value="buyvip.lua"/> Agora vai na pasta data/talkactions/scripts e cria um arquivo chamado buyvip.lua e coloca isso dentro: function onSay(cid, words, param, channel) vip.addVipByAccount(getPlayerAccount(cid), vip.getDays(30)) doPlayerRemoveItem(cid, 2145, 30) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Voce adquiriu 30 dias de VIP!") return true end nao testei aki mais ve ae Ajudei? REP+
  25. tem varios topicos eh só procurar.
  26. 1 ponto
    Esta é uma mensagem automática! Este tópico foi movido para a área correta. Pedimos que você leia as regras do fórum.
  27. function onSay(cid, words, param, channel) local paramm = string.upper(param) if (param == '') then doPlayerSendCancel(cid, "Você deve adicionar um code.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) else local resultado = db.getResult("SELECT * FROM redeemcodes WHERE `code` = '" .. paramm .. "';") if(resultado:getID() ~= -1) then doPlayerSendTextMessage(cid,MESSAGE_STATUS_WARNING, "Você resgatou com sucesso o código: " .. paramm ..".") doPlayerAddItem(cid, ID, QUANTIDADE) db.query("DELETE FROM `redeemcodes` WHERE `code` = '" .. paramm .. "';") else doPlayerSendCancel(cid, "Código invalido.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) end end end Mesma coisa do outro... Agora vai.
  28. [Sistema] Battlefield Event! V.1

    Orientalz reagiu a VitorSubhi por uma resposta no tópico

    1 ponto
    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.
  29. [Waypoint] Cell hunting Dbo Brasil

    hakaishirow reagiu a MatheusVidaLoka por uma resposta no tópico

    1 ponto
    Fala galera do Tibia King, hoje estou aqui para disponibilizar um waypoint de DBO BRASIL, o waypoint é muito usado para chares level 80-150 muitos fazem o waypoint na hora de upar, mas ai perdem um bom tempo de up. O waypoint faz a hunt enteira menos na parte dos Cell Perfect Form (Cell Fodão), se você adicionar ao waypoint a parte dos Cell Perfect Form no level 1-150 provalvelmente irá morrer. Postei o waypoint porque vai que você joga DBO e ta procurando esse waypoint para não ter trabalho de fazer e você derrepente pesquisa no Tibia King e acha. Bom vamos ao waypoint. Como adicionar o script no elf bot ? Com o elf bot aberto vá em CaveBot>Save & Loading settings>Edit (Selecione todo o script que está dentro do edit e substitua pelo script acima)>Load script. Pronto seu waypoint está criado.
  30. [Error occured!] Ajuda com Gesior 1.0

    rhitalu reagiu a Happy Day por uma resposta no tópico

    1 ponto
    Ola. Va na pasta do seu ot abra o config.lua de Ctrl + F e procure por User em baixo do user tera uma script chamada pass Entre aspas estara um nome ex "tutorial' exclua o nome de la e tente dar f5 no site Se ti ajudei. Marque como Melhor Resposta e agradeça com um Rep+, clicando em Gostei!. Obrigado!
  31. Free for use!

    bim reagiu a Nechros por uma resposta no tópico

    1 ponto
    Tutorialzinho pra fazer folhagens, Usei essa técnica pra fazer a arvore de cima. Pode ajudar alguém C achar q vale a pena pode dar REP++ ai, n sei pra q serve, mas pelo jeito ajuda ja q tanta gente pede haha
  32. Bog Raiders - Edron

    nyrakus reagiu a EdsonJunior por uma resposta no tópico

    1 ponto
    Bog Raiders Exp: 50k-70k/h Gp: 4k + Items/h Monstros: Bog Raider Loots: Gold Great Spirit Potion Great Health Potion Springsprout Rod Ultimate Health Potion Paladin Armor Hibiscus Dress Requerimento: Level: 75+ Vocação: Knight; Premium Time: Sim; Equipamento: Rare-set e se possivel soft boots pra evitar waste O que levar: Cerca de 100 HP pra sua segurança Por: Monek666 Soft boot switcher from boh to softs at x mana.ng Alerts you when X of capacity.ng anty paralyze.ng Bog Raiders.wpt reconnecter.ng
Líderes está configurado para São Paulo/GMT-03:00

Informação Importante

Confirmação de Termo