Líderes
-
gabrielzika
MembroPontos482Total de itens -
luanluciano93
HéroiPontos5981Total de itens -
-
Danyel Varejao
MembroPontos80Total de itens
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 11/17/17 em todas áreas
-
[PESQUISA] Proteções contra ataques DDOS
[PESQUISA] Proteções contra ataques DDOS
icemirow e um outro reagiu a luanluciano93 por uma resposta no tópico
2 pontosOlá pessoal, estou fazendo uma pesquisa com vários donos de OTS para ver qual os tipos de ataques que eles recebem e qual proteção eles usam ... Você usa métodos de proteções contra ataques? Se sim, quais? Explique. • Wallison (Aurera-global, 2300 online) Utilizo serviço externo para proteger o servidor (servecore). • Natanael (megatibia, 1521 online) Em primeiro lugar contrate uma empresa que tenha um bom filtro pois sem isso impossivelmente ter "uma certa paz" e o iptables não faz milagres (uso OVH). Em seguida contrate alguém que entenda de proteção tem varios Sys Admin de qualidade e confiaveis no mercado, aconselho Pedro Sodré (@Nightz). • Felipe (ImperialOT, 919 online, offine) - Uso a proteção da OVH + a da servecore (hardware), o ataque passa por umas 5 maquinas ate chegar em mim, tipo um proxy. Mas pelo que sei, se souber configurar o firewall da OVH, vc não leva ataque. Irei atualizando com o tempo ... • Mod_avasive (proteção) • cloudfire (proteção) • OVH (servidor)2 pontos -
Alavanca que troca item por outros itens !
Alavanca que troca item por outros itens !
Igorzerah e um outro reagiu a Vabrindox por uma resposta no tópico
2 pontosQuebrei a cabeça aqui e fiz um script para vc, o jogador vai colocar os 3 itens e vai receber no msm local o item configurado, qualquer outro item colocado a mais junto com os 3 itens em cima da bancada vai ser removido. E sim só funciona somente com os 3 itens configurados. Actions.xml Coloque sempre 1 ActionID diferente para cada alavanca que usar esse msm script, colocando eles agrupadamente na tag: <action actionid="3001;3002;3003" event="script" value="craft.lua"/> Scripts/craft.lua Crie um arquivo .lua chamado "craft" e cole o codigo: Aqui estão alguma explicações para vc configurar pos_bancada1 = {x=105,y=121,z=7}, --> posição da 1ª bancada só trocar o x,y e z e assim por diante no pos_bancada2 e 3 item1_craft = {item1=2466, item2=2455,item3=2454,premio=2674, nome_do_item='Apple'}, --> Aqui está toda a informação do 1º item que vc quer fazer, o item1,item2,item3 são os ids dos 3 itens necessários para criar o "premio" que tbm é só trocar o id, e o nome do item vc tem que colocar dentro das ' ' isso ae é só para ficar legal msm haha, o resto e tudo a msm coisa é só trocar. function onUse(cid, item, fromPosition, itemEx, toPosition) local Configs = { pos_bancada1 = {x=105,y=121,z=7}, pos_bancada2 = {x=107,y=121,z=7}, pos_bancada3 = {x=109,y=121,z=7}, item1_craft = {item1=2466, item2=2455,item3=2454,premio=2674, nome_do_item='Apple'}, item2_craft = {item1=2643, item2=2642,item3=2641,premio=2640, nome_do_item='Soft Boots'}, item3_craft = {item1=2634, item2=2635,item3=2636,premio=2637, nome_do_item='Black King'}, } local Script = { stack1 = getItemStackpos(Configs.pos_bancada1,Configs.item1_craft.item1), stack2 = getItemStackpos(Configs.pos_bancada1,Configs.item1_craft.item2), stack3 = getItemStackpos(Configs.pos_bancada1,Configs.item1_craft.item3), stack4 = getItemStackpos(Configs.pos_bancada2,Configs.item2_craft.item1), stack5 = getItemStackpos(Configs.pos_bancada2,Configs.item2_craft.item2), stack6 = getItemStackpos(Configs.pos_bancada2,Configs.item2_craft.item3), stack7 = getItemStackpos(Configs.pos_bancada3,Configs.item3_craft.item1), stack8 = getItemStackpos(Configs.pos_bancada3,Configs.item3_craft.item2), stack9 = getItemStackpos(Configs.pos_bancada3,Configs.item3_craft.item3), } if Script.stack1 and Script.stack2 and Script.stack3 then doCleanTile(Configs.pos_bancada1) addEvent(doCreateItem, 100, Configs.item1_craft.premio, 1, Configs.pos_bancada1) doPlayerSendTextMessage(cid, 22, "Parabens, Voce Forjou "..Configs.item1_craft.nome_do_item.." .") doSendMagicEffect(Configs.pos_bancada1, NST_ME_FIREWORK_BLUE) doSendMagicEffect(Configs.pos_bancada1, CONST_ME_FIREWORK_YELLOW) doSendMagicEffect(Configs.pos_bancada1, CONST_ME_FIREWORK_RED) return true end if Script.stack4 and Script.stack5 and Script.stack6 then doCleanTile(Configs.pos_bancada2) addEvent(doCreateItem, 100, Configs.item2_craft.premio, 1, Configs.pos_bancada2) doPlayerSendTextMessage(cid, 22, "Parabens, Voce Forjou "..Configs.item2_craft.nome_do_item.." .") doSendMagicEffect(Configs.pos_bancada2, NST_ME_FIREWORK_BLUE) doSendMagicEffect(Configs.pos_bancada2, CONST_ME_FIREWORK_YELLOW) doSendMagicEffect(Configs.pos_bancada2, CONST_ME_FIREWORK_RED) return true end if Script.stack7 and Script.stack8 and Script.stack9 then doCleanTile(Configs.pos_bancada3) addEvent(doCreateItem, 100, Configs.item3_craft.premio, 1, Configs.pos_bancada3) doPlayerSendTextMessage(cid, 22, "Parabens, Voce Forjou "..Configs.item3_craft.nome_do_item.." .") doSendMagicEffect(Configs.pos_bancada3, NST_ME_FIREWORK_BLUE) doSendMagicEffect(Configs.pos_bancada3, CONST_ME_FIREWORK_YELLOW) doSendMagicEffect(Configs.pos_bancada3, CONST_ME_FIREWORK_RED) return true end doPlayerSendTextMessage(cid, 28, "Voce nao tem os 3 itens, para Craftar!") return true end function getItemStackpos(position, id) if getTileItemById(position, id).itemid == 0 then return nil end for i = 0, 255 do local pos = getThingFromPos({x=position.x, y=position.y, z=position.z, stackpos=i}) if pos.itemid == id then return i end end end @Zzyzx Ah foi mal eu botei tudo em 1 só bancada e vc queria de baixo da bancada de cada item né..erro meu, mas não vou arrumar agora não só amanha pq to sem tempo.2 pontos -
(Resolvido)Você já pegou seu pokémon!
(Resolvido)Você já pegou seu pokémon!
Emmidio e um outro reagiu a gabrielzika por uma resposta no tópico
2 pontosSempre que for criar quests diferentes substitua: local storage = 40009 Exemplo: local storage = 40010 Se você repetir a storage não dará para um player abrir os dois Baús. Espero ter ajudado!2 pontos -
DATABASE ERRO 8.60 BAIAK
DATABASE ERRO 8.60 BAIAK
alekinhowsz e um outro reagiu a gabrielzika por uma resposta no tópico
2 pontosTente importando isto top_mining.sql2 pontos -
[TFS 1.x] TK Vip System
[TFS 1.x] TK Vip System
Murilo35 reagiu a luanluciano93 por uma resposta no tópico
1 pontoOlá pessoal, estou desenvolvendo esse sistema vip para TFS 1.x, se precisarem de alguma função nova é só comentar, criei para usar em um servidor meu e resolvi postar, bom proveito a todos. É só ir no arquivo data/lib/core/player.lua e adicionar esse código no começo do script: -- ALTER TABLE `accounts` ADD `vip_time` BIGINT(20) NOT NULL DEFAULT 0; -- player:getVipTime() function Player.getVipTime(self) local resultId = db.storeQuery("SELECT `vip_time` FROM `accounts` WHERE `id` = '".. self:getAccountId() .."';") local time = resultId ~= false and result.getNumber(resultId, "vip_time") or 0 result.free(resultId) return time end -- player:isVip() function Player.isVip(self) return self:getVipTime() > os.time() and true or false end -- player:addVipDays(days) function Player.addVipDays(self, days) return(self:isVip() and tonumber((days * 86400))) and db.query("UPDATE `accounts` SET `vip_time` = '".. (self:getVipTime() + (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") or db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() + (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:removeVipDays(days) function Player.removeVipDays(self, days) return(self:isVip() and tonumber((days * 86400))) and db.query("UPDATE `accounts` SET `vip_time` = '".. (self:getVipTime() - (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") or db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() - (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:setVipDays(days) function Player.setVipDays(self, days) return db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() - (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:removeVip() function Player.removeVip(self) db.query("UPDATE `accounts` SET `vip_time` = '0' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:sendVipDaysMessage() function Player.sendVipDaysMessage(self) if self:isVip() then local vipTime = self:getVipTime() - os.time() local vipDays = 1 + (math.floor(vipTime / 86400)) return self:getVipTime() ~= false and self:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'You have '.. vipDays .. ' vip day(s) in your account.') end end -- player:checkVipLogin() function Player.checkVipLogin(self) if self:getVipTime() > 0 and not self:isVip() then return self:removeVip() and self:teleportTo(self:getTown():getTemplePosition()) end end As funções são: • player:getVipTime() - Retorna o valor da tabela vip_time (igual esta na database). • player:isVip() - Retorna se o player é vip ou não. • player:addVipDays(days) - Usa-se em algum script para para adicionar dias de vip ao player (parâmetro de entrada "days"). • player:removeVipDays(days) - Usa-se em algum script para para remover dias de vip do player (parâmetro de entrada "days"). • player:setVipDays(days) - Usa-se em algum script para para mudar os dias de vip do player (parâmetro de entrada "days"). • player:removeVip() - Usa-se em algum script para para remover todo tempo de vip do player. • player:sendVipDaysMessage() - Retorna uma mensagem no player mostrando os dias de vip que ainda restam ao player. • player:checkVipLogin() - Checa se a vip do player acabou, se sim teleporta ele para o templo. Qualquer dúvida ou erro/bug poste aqui.1 ponto -
Download Clients 11+ IP 127.0.0.1
Olá galera do TK. Hoje eu trago vários clientes de Tibia 11+ com IP 127.0.0.1. Vi que alguns usuários não estão conseguindo algumas versões 11 então resolvi postar aqui. Estou disponibilizando o EXECUTÁVEL DO CLIENTE. Para que funcione é só colocar na pasta BIN da versão correspondente. Também disponibilizei a pasta completa compactada. Vamos ao que interessa. Tibia 11.43.5504 127.0.0.1-11.43.5504.exe SCAN do cliente Pasta completa: Tibia 11.43.5504.rar SCAN pasta completa Tibia 11.44.5516 127.0.0.1-11.44.5516.exe SCAN do cliente Pasta completa: Tibia 11.44.5516.rar SCAN pasta completa Tibia 11.46.5556 127.0.0.1-11.46.5556.exe SCAN do cliente Pasta completa: Tibia 11.46.5556.rar SCAN pasta completa Tibia 11.47.5640 127.0.0.1-11.47.5640.exe SCAN do cliente Pasta completa: Tibia_11_47.5640.rar SCAN pasta completa Tibia 11.47.5674 127.0.0.1-11.47.5674.exe SCAN do cliente Pasta completa: Tibia_11_47.5674.rar SCAN pasta completa Tibia 11.48.5712 127.0.0.1-11.48.5712.exe SCAN do cliente Pasta completa: Tibia_11_48.5712.rar SCAN pasta completa Tibia 11.48.5753 127.0.0.1-11.48.5753.exe SCAN do cliente Pasta completa: Tibia_11_48.5753.rar SCAN pasta completa Tibia 11.49.5813 127.0.0.1-11.49.5813.exe SCAN do cliente Pasta completa: Tibia_11_49.5813.rar SCAN pasta completa Tibia 11.49.5884 127.0.0.1-11.49.5884.exe SCAN do cliente Pasta completa: Tibia_11_49.5884.rar SCAN pasta completa Tibia 11.49.5921 127.0.0.1-11.49.5921.exe SCAN do cliente Pasta completa: Tibia_11_49.5921.rar SCAN pasta completa Tibia 11.49.5983 127.0.0.1-11.49.5983.exe SCAN do cliente Pasta completa: Tibia_11_49.5983.rar SCAN pasta completa Tibia 11.49.6018 127.0.0.1-11.49.6018.exe SCAN do cliente Pasta completa: Tibia 11.49.6018.rar SCAN pasta completa Tibia 11.49.6030 127.0.0.1-11.49.6030.exe SCAN do cliente Tibia 11.49.6030.rar SCAN pasta completa Tibia 11.50.6055 127.0.0.1-11.50.6055.exe SCAN do cliente Tibia 11.50.6055.rar SCAN pasta completa Tibia 11.51.6099 127.0.0.1-11.51.6099.exe SCAN do cliente Tibia 11.51.6099.rar SCAN pasta completa Tibia 11.52.6104 127.0.0.1-11.52.6104.exe SCAN do cliente Tibia 11.52.6104.rar SCAN pasta completa Tibia 11.55.6239 127.0.0.1-11.55.6239.exe SCAN do cliente Tibia 11.55.6239.rar SCAN pasta completa Tibia 11.56.6239 127.0.0.1-11.56.6239.exe SCAN do cliente Tibia 11.56.6239.rar SCAN pasta completa Tibia 11.57.6239 127.0.0.1-11.57.6239.exe SCAN do cliente Tibia 11.57.6239.rar SCAN pasta completa Tibia 11.58.6239 127.0.0.1-11.58.6239.exe SCAN do cliente Tibia 11.58.6239.rar SCAN pasta completa Tibia 11.58.6239 ATUALIZADO 127.0.0.1-11_58.6239.exe ATUALIZADO SCAN do cliente Tibia 11.58.6239 ATUALIZADO.rar SCAN pasta completa Tibia 11.59.6424 127.0.0.1-11.59.6424.exe SCAN do cliente Tibia 11.59.6424.rar SCAN pasta completa Tibia 11.60.6457 127.0.0.1-11.60.6457.exe SCAN do cliente Tibia 11.60.6457.rar SCAN pasta completa Tibia 11.65.6492 127.0.0.1-11.65.6492.exe SCAN do cliente Tibia 11.65.6492.rar SCAN pasta completa Tibia 11.65.6507 127.0.0.1-11.65.6507.exe SCAN do cliente Tibia 11.65.6507.rar SCAN pasta completa Tibia 11.66.6516 127.0.0.1-11.66.6516.exe SCAN do cliente Tibia 11.66.6516.rar SCAN pasta completa Tibia 11.70.6535 127.0.0.1-11.70.6535.exe SCAN do cliente Tibia 11.70.6535.rar SCAN pasta completa Tibia 11.70.6543 127.0.0.1-11.70.6543.rar SCAN do cliente Tibia 11.70.6543.rar SCAN pasta completa Tibia 11.70.6548 127.0.0.1-11.70.6548.rar SCAN do cliente Tibia 11.70.6548.rar SCAN pasta completa Tibia 11.70.6555 127.0.0.1-11.70.6555.rar SCAN do cliente Tibia 11.70.6555.rar SCAN pasta completa Espero que eu tenha ajudado. Créditos: A Cip pelos clientes e a mim por ter alterado os ips nos mesmos. REP+ é sempre bom e não dói. Abraços. ATT , Jaurez/JZDJ1 ponto
-
[Link Quebrado]Pokémon Mythology
1 pontoBom tava com um projetinho a um tempo atras mas como eu resolvi parar com ele resolvi trazer aqui pra vcs. Sim tem a maioria das coisas que a DXP tem porem tem bastante bugs removidos, o servidor fica online sem algum tipo de queda. esta estavel para por online alem de ter um mapa unico tem um cliente lido d+ meu orgulho huahuahua mais em fim vamos ao que interessa • Informações Basicas • • Duel System. • Nick System. • Autoloot System. • Block Respaw System. • Mega Evolução Ssystem. • Auto Stacking System. • Player passa por dentro de outros Players(Não sei o nome deste sistema kk). • Ditto Memory System. • Player pode usar potions, revive, soltar poke andando sem parar. • Limite de efeitos aumentados nas sources até 380(Podendo aumentar muito mais) • Transparência. • Cliente criptografado(Acompanha OBD único para o cliente). • Sistemas básicos como fly, ride, surf, order etc. • Held System(Não tem todos, falta fazer alguns, ja tem o x-luck). • Fishing trocando o outfit automaticamente. • Icone System. • Varias Pokeballs novas. • Task System. • Guild System. • NPC dialogo E muito+, não testei o servidor todo. podem ter sistemas no server que eu esqueci de colocar aqui na lista. Tem mais coisas mas não me lembro ao certo de tudo que eu coloquei ;-; </3 • Bugs • Irei postar os que eu sei, podem haver mais. • Gym System não esta funcionando. • O famoso bug do autoloot '- • Pokemons da 3 geração todos arrumados porem pode dar revive mesmo com ele pra fora da ball • scizor ao ser chamado de volta pra ball fica com o icon de shiny scizor • Alguns erros no cliente que faz dar umas speed pra frente Que eu saiba e só isso mas provavelmente tenha mais que eu não estou ciente :C • Prints • Não queria ter que postar meu projeto mas como Minha Propia equipe esta ameaçando a fazer isso tai pra vcs :C • Dowload • scan : https://www.virustotal.com/#/file-analysis/Yjg0MTM2YmRkNjZkNmRjNDJhODgxMThlOWFjZmM2YmM6MTUwMzI3MzI0Mg== servidor+sources+cliente : https://mega.nz/#!sIJ1nATJ!cEXaqXdkW0iXWnFeklNpa9yRS0y9exoRDkM-WBnpACo Senha : domviniciusbr • Créditos • •CipSoft •Nintendo •TFS Team •Dark X Poke •PXG •Tom Lukz (Smix) •Allan Harlen (Kttallan/lordsorte) •Eduardo Meskita (FuuinFake) •Noninhouh •Tony Araujo •Taiger/Dudu •Drakopoulos •Justiceiro751 •Vinicius Clel (Walox) •Vinicius FT (K95) •DeadPool •Marshmello E a todos que tiveram alguma participação em sistemas, server, site, cliente etc. Se estiver faltando algo como créditos, má formatação etc, por favor me avisem, é meu primeiro post de server.1 ponto
-
Dll de mudar cor do nome dos npcs e mais.
Dll de mudar cor do nome dos npcs e mais.
Adventure reagiu a cleitonbandeira por uma resposta no tópico
1 pontoOlá pessoal do tk, vim trazer hoje uma dll para tibia 8.54 que encontrei em um narutibia pl. Essa Dll pelo que entendi serve pra mudar a cor do nome dos npcs de verde para azul, ela também faz exibir na tela alguma informação e o fps. vejam a dll na imagem ao lado. Para mudar aquele texto exibido pela dll é so editar pelo notepad. download: https://www.mediafire.com/file/dtv314zblnnh845/ntg.dll Scan: https://www.virustotal.com/#/file/c52dc9d0099da27ac788979e055b819b6fafb946ed8b1b04c5ec483a6660036c/detection creditos: Naruto The Greatest1 ponto -
[C++] doCreatureCastSpell(creature, spellName)
[C++] doCreatureCastSpell(creature, spellName)
Sexyboyy reagiu a Orochi Elf por uma resposta no tópico
1 ponto[C++] doCreatureCastSpell (0.3.6pl1) Escrito e testado: 0.3.6PL1 [8.54 - 8.60] Salve galera do TibiaKing, eu fui procurar na internet sobre essa função e vi que já tentaram cria-la, porém não conseguiram, ou se conseguiram nunca postaram. Então eu resolvi faze-la para vocês, e eu percebi que ninguém nunca tinha feito, por causa de uma dúvida, e um certo grau de dificuldade. Certamente, eu tive uma dificuldade no começo, porém ao desenvolver da função eu percebi que não era nada de mais. Então eu trago aqui pra vocês esta função, cuja a ideia é fazer com que a criatura (jogador ou monstro) a utilize uma magia pelo nome dela, importante lembrar que o nome da magia, não é as palavras mágicas, exemplo: "utani hur" é a palavra mágica e "haste" é o nome da magia. Enfim, sem mais delongas e vamos aos códigos Vá ao arquivo "LuaScript.cpp" e procure por: //doPlayerAddExperience(cid, amount) lua_register(m_luaState, "doPlayerAddExperience", LuaScriptInterface::luaDoPlayerAddExperience); E abaixo adicione: //doCreatureCastSpell // by OrochiElf. lua_register(m_luaState, "doCreatureCastSpell", LuaScriptInterface::luaDoCreatureCastSpell); Agora procure por: E abaixo adicione: int32_t LuaScriptInterface::luaDoCreatureCastSpell(lua_State* L) // by OrochiElf. { //doCreatureCastSpell(cid, spellname) std::string spellName = popString(L); ScriptEnviroment* env = getEnv(); if(Creature* creature = env->getCreatureByUID(popNumber(L))) { InstantSpell* spell = g_spells->getInstantSpellByName(spellName); if(!spell) { lua_pushboolean(L, false); return 1; } Creature* target = creature->getAttackedCreature(); if(target) spell->castSpell(creature, target); else spell->castSpell(creature, creature); lua_pushboolean(L, true); } else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } Agora vá ao arquivo "LuaScript.h" e procure por: static int32_t luaDoPlayerAddItem(lua_State* L); E abaixo adicione: static int32_t luaDoCreatureCastSpell(lua_State* L); // by OrochiElf Exemplo, eu tenho um pet, e quero que ele utilize a magia de "utani hur" - "haste". Talkaction Code: function onSay(cid, words, param, channel) local summon = getCreatureSummons(cid)[1] if isCreature(summon) then doCreatureCastSpell(summon, "haste") end return true end Esta função é muito requisitada para fazer servidores de pokémon, evitando gambiarras. Que foi o motivo para qual eu desenvolvi ela Créditos. Tony Araújo (OrochiElf) 100%1 ponto -
(Resolvido)Atake dos pokemon por LVL do player
(Resolvido)Atake dos pokemon por LVL do player
DarkRed reagiu a gabrielzika por uma resposta no tópico
1 pontoTenta assim:1 ponto -
(Resolvido)Atake dos pokemon por LVL do player
(Resolvido)Atake dos pokemon por LVL do player
DarkRed reagiu a gabrielzika por uma resposta no tópico
1 pontomanda seu move1.lua em data/talkactions1 ponto -
Tfs 1.2 Delete items em player_items, player_depotitems
Tfs 1.2 Delete items em player_items, player_depotitems
BennyDz reagiu a luanluciano93 por uma resposta no tópico
1 pontofunction onSay(player, words, param) local resultId = db.storeQuery("SELECT `player_id`,`sid`, CONVERT(`attributes` USING latin1) AS `attr` FROM `player_items` WHERE CONVERT(`attributes` USING latin1) LIKE '%timerOnExp%'") if resultId then repeat local attr = result.getStream(resultId, "attr") local timerOnExp = tonumber(string.sub(attr, 25, 34)) if timerOnExp then if os.time() >= timerOnExp then print(os.time() .." >= .. "timerOnExp) local player_id = result.getNumber(resultId, "player_id") local sid = result.getNumber(resultId, "sid") db.query("DELETE FROM `player_items` WHERE `player_id`=".. player_id .." AND `sid` = ".. sid) end end until not result.next(resultId) end return false end1 ponto -
Tfs 1.2 Delete items em player_items, player_depotitems
Tfs 1.2 Delete items em player_items, player_depotitems
BennyDz reagiu a luanluciano93 por uma resposta no tópico
1 ponto-- <talkaction words="!test" script="teste.lua" /> function onSay(player, words, param) local resultId = db.storeQuery("SELECT `player_id`,`sid`, CONVERT(`attributes` USING latin1) AS `attr` FROM `player_items` WHERE CONVERT(`attributes` USING latin1) LIKE '%timerOnExp%'") if resultId then repeat local attr = result.getStream(resultId, "attr") local timerOnExp = tonumber(string.sub(attr, 25, 34)) if os.time() >= timerOnExp then local player_id = result.getNumber(resultId, "player_id") local sid = result.getNumber(resultId, "sid") db.query("DELETE FROM `player_items` WHERE `player_id`=".. player_id .." AND `sid` = ".. sid) print("deleted!") end until not result.next(resultId) end return false end1 ponto -
Tfs 1.2 Delete items em player_items, player_depotitems
Tfs 1.2 Delete items em player_items, player_depotitems
BennyDz reagiu a luanluciano93 por uma resposta no tópico
1 ponto-- <talkaction words="!test" script="teste.lua" /> function onSay(player, words, param) local resultId = db.storeQuery("SELECT `player_id`,`sid`, CONVERT(`attributes` USING latin1) AS `attr` FROM `player_items` WHERE CONVERT(`attributes` USING latin1) LIKE '%timerOnExp%'") if resultId then repeat local attr = result.getStream(resultId, "attr") local timerOnExp = tonumber(string.sub(attr, 25, 34)) if os.time() >= timerOnExp then local player_id = result.getNumber(resultId, "player_id") local sid = result.getNumber(resultId, "sid") db.storeQuery("DELETE FROM `player_items` WHERE `player_id`=".. player_id .." AND `sid` = ".. sid) print("deleted!") end until not result.next(resultId) end return false end1 ponto -
Tfs 1.2 Delete items em player_items, player_depotitems
Tfs 1.2 Delete items em player_items, player_depotitems
BennyDz reagiu a luanluciano93 por uma resposta no tópico
1 ponto-- <talkaction words="!test" script="teste.lua" /> function onSay(player, words, param) local resultId = db.storeQuery("SELECT `player_id`,`pid`,`sid`,CONVERT(`attributes` USING latin1) AS `attr` FROM `player_items` WHERE CONVERT(`attributes` USING latin1) LIKE '%timerOnExp%'") if resultId then repeat local attr = result.getStream(resultId, "attr") local timerOnExp = tonumber(string.sub(attr, 25, 34)) if os.time() >= timerOnExp then local sid = result.getNumber(resultId, "sid") db.storeQuery("DELETE FROM `player_items` WHERE `sid` = ".. sid) print("deleted!") end until not result.next(resultId) end return false end1 ponto -
Tfs 1.2 Delete items em player_items, player_depotitems
Tfs 1.2 Delete items em player_items, player_depotitems
BennyDz reagiu a luanluciano93 por uma resposta no tópico
1 ponto-- <talkaction words="!test" script="teste.lua" /> function onSay(player, words, param) local resultId = db.storeQuery("SELECT `player_id`,`pid`,`sid`,CONVERT(`attributes` USING latin1) AS `attr` FROM `player_items` WHERE CONVERT(`attributes` USING latin1) LIKE '%timerOnExp%'") if resultId then repeat local test1 = result.getStream(resultId, "attr") -- retorn string if test1 then local test = string.sub(test1, 25, 34) print(test) if tonumber(test) then print("number: ".. test) end end until not result.next(resultId) end return false end1 ponto -
(Resolvido)É possivel criar um script que faça o player soltar magia sempre que atacar?
(Resolvido)É possivel criar um script que faça o player soltar magia sempre que atacar?
quemtuacha reagiu a esnio12 por uma resposta no tópico
1 pontoSe você tiver essa função nas sourcers é possivel sim1 ponto -
(Resolvido)Você já pegou seu pokémon!
(Resolvido)Você já pegou seu pokémon!
Emmidio reagiu a gabrielzika por uma resposta no tópico
1 pontoTenta Assim:1 ponto -
(Resolvido)Atake dos pokemon por LVL do player
(Resolvido)Atake dos pokemon por LVL do player
DarkRed reagiu a gabrielzika por uma resposta no tópico
1 pontoMe Explique melhor, acho que não entendi. Você quer que upe o pokemon para poder usar uma magia?1 ponto -
(Resolvido)Você já pegou seu pokémon!
(Resolvido)Você já pegou seu pokémon!
Emmidio reagiu a gabrielzika por uma resposta no tópico
1 pontoManda o Script que você está utilizando!1 ponto -
[TFS 1.x] TK Vip System
[TFS 1.x] TK Vip System
alls reagiu a luanluciano93 por uma resposta no tópico
1 pontoBoa tarde @alls , então, não é desda forma que funciona. Existe uma contagem de computador, que é determinada desde uma certa época, que começou a contar por segundos e assim vai ... digamos que esse determinado segundo que eu estou escrevendo é o valor 100000, daqui a 1 minuto ele vai valer 100060 ... e é assim. Esse valor que esta salvo na sua database é o "time" de quando vai acabar sua vip. O script verifica se o "time" atual é maior que esse valor que voce tem salvo, se sim, sua vip acabou (isso é verificado toda vez que vocÊ LOGAR).1 ponto -
(3º) | [8.60] - Epic Server
1 pontoThat part of the system points, maybe you need to convert the querry that works in SQL to MYSQL, or add a points system that works with Gesior, and disable the current one. Usually always comes in the gesior a delivery system of donate items. I still have to spend some querry as you can see inside the ot folder. I do not understand much of MYSQL, I recommend creating a topic in the forum / part of support, I'm sorry!1 ponto
-
OTserver, vale o tempo?
1 pontoExistem ja servidores mapa global 8.6 com mais de 1000 players online e mais um monte com 100+ ... Se o seu servidor n se destacar em algo, ou tiver um diferencial para atrair os players, acho que não vale o investimento. Porem como o @Absolute falou "tudo é conhecimento"1 ponto
-
script de missão
1 pontoBlz eu fiz no msm estilo ele vai no npc o npc da missao para ele e depois que o player acabar ele volta ao npc e o npc da uma nova missao e assim por diante quantos vc quiser. Creaturescripts.xml Lembra que vc botou o kill_task.lua agora toda vez que vc quiser uma nova task vc coloca as tag assim como eu botei abaixo e vc configura separadamente cada uma da maneira que vc quiser <event type="kill" name="kill_task" event="script" value="kill_task3.lua"/> <event type="kill" name="kill_task" event="script" value="kill_task2.lua"/> creaturescripts/scripts Ae vc precisa criar o arquivo .lua com os nomes novos "kill_task2.lua" e "kill_task3.lua" eu vou te mandar os 2 logo para vc nao ficar com duvida de como ta a configuração. Lembrando que eu mudei umas coisinhas só para ficar mais facil na hr de configurar e n precisar mudar o nome do bicho na msg só na config. kill_task2.lua storage = 2501, Tem que ta igual a storage da missao 2 do npc pq a 1 foi a que eu te mandei antes e a 3 é a task_kill3 monster = 'Troll', Nome do monstro premio = 2160, Id do premio qtd = 1, Quantidade de itens do premio exp = 100, Exp que ganha mas vc pode botar 0 caso n queira nenhuma local Configs = { storage = 2501, monster = 'Troll', premio = 2160, qtd = 1, exp = 100, } function onKill(cid, target, lastHit) if isMonster(target) and getCreatureName(target) == Configs.monster then local get = getPlayerStorageValue(cid, Configs.storage) if get >=0 and get <=5 then setPlayerStorageValue(cid, Configs.storage, (get+1)) local gett = getPlayerStorageValue(cid, Configs.storage) doCreatureSay(cid, 'Voce matou '..gett..' '..Configs.monster..' ate agora.', TALKTYPE_ORANGE_1) if gett == 5 then doPlayerAddItem(cid, Configs.premio, Configs.qtd) doPlayerAddExp(cid,Configs.exp) doCreatureSay(cid, 'Voce acabou a missao!.', TALKTYPE_ORANGE_1) setPlayerStorageValue(cid, Configs.storage, (gett+1)) end end end return true end kill_task3.lua local Configs = { storage = 2502, monster = 'Sheep', premio = 2160, qtd = 1, exp = 100, } function onKill(cid, target, lastHit) if isMonster(target) and getCreatureName(target) == Configs.monster then local get = getPlayerStorageValue(cid, Configs.storage) if get >=0 and get <=5 then setPlayerStorageValue(cid, Configs.storage, (get+1)) local gett = getPlayerStorageValue(cid, Configs.storage) doCreatureSay(cid, 'Voce matou '..gett..' '..Configs.monster..' ate agora.', TALKTYPE_ORANGE_1) if gett == 5 then doPlayerAddItem(cid, Configs.premio, Configs.qtd) doPlayerAddExp(cid,Configs.exp) doCreatureSay(cid, 'Voce acabou a missao!.', TALKTYPE_ORANGE_1) setPlayerStorageValue(cid, Configs.storage, (gett+1)) end end end return true end Npc/scripts o Npc "task.lua" ficou assim: storage_1 = 2500, É a storage da primeira task(missao) storage_2 = 2501, msm coisa só que da 2 storage_3 = 2502, e da 3 qtd_kill1 = 5, Aqui é a quantidade de bichos que o player precisa matar da 1 missao qtd_kill2 = 5, msm coisa só que da 2 qtd_kill3 = 5, da 3 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 local Configs = { storage_1 = 2500, storage_2 = 2501, storage_3 = 2502, qtd_kill1 = 5, qtd_kill2 = 5, qtd_kill3 = 5, } local get1 = getPlayerStorageValue(cid, Configs.storage_1) local get2 = getPlayerStorageValue(cid, Configs.storage_2) local get3 = getPlayerStorageValue(cid, Configs.storage_3) if(msgcontains(msg, 'missao') and (get1 == -1)) then selfSay('Para ganhar o premio mate '..Configs.qtd_kill1..' Rabbit! Voce ira receber automaticamente.', cid) setPlayerStorageValue(cid, Configs.storage_1, 0) return true elseif get1 >=0 and get1 <=Configs.qtd_kill1 then selfSay('Voce precisa matar '..(Configs.qtd_kill1-get1)..' Rabbits!', cid) return true end if(msgcontains(msg, 'missao') and (get2 == -1)) then selfSay('Para ganhar o premio mate '..Configs.qtd_kill2..' Troll! Voce ira receber automaticamente.', cid) setPlayerStorageValue(cid, Configs.storage_2, 0) return true elseif get2 >=0 and get2 <=Configs.qtd_kill2 then selfSay('Voce precisa matar '..(Configs.qtd_kill2-get2)..' Troll!', cid) return true end if(msgcontains(msg, 'missao') and (get3 == -1)) then selfSay('Para ganhar o premio mate '..Configs.qtd_kill3..' Sheep! Voce ira receber automaticamente.', cid) setPlayerStorageValue(cid, Configs.storage_3, 0) return true elseif get3 >=0 and get3 <=Configs.qtd_kill3 then selfSay('Voce precisa matar '..(Configs.qtd_kill3-get3)..' Sheep!', cid) end if get1>Configs.qtd_kill1 and get2>Configs.qtd_kill2 and get3>Configs.qtd_kill3 then selfSay('Voce ja fez todas as missoes!', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Qualquer coisa só falar, e eu sei que outras pessoas vão dizer que o código não esta perfeito e que da para fazer de alguma outra maneira mas eu fui fazendo para treinar msm faz muito tempo que não programo para otserv e estou voltando agora e lembrando aos poucos. @igorcano1 Para vc botar mais recompensas vc pode ir fazendo assim: local Configs = { storage = 2502, monster = 'Sheep', premio = 2160, premio2= 2152, qtd = 1, qtd_2 = 1, exp = 100, } function onKill(cid, target, lastHit) if isMonster(target) and getCreatureName(target) == Configs.monster then local get = getPlayerStorageValue(cid, Configs.storage) if get >=0 and get <=5 then setPlayerStorageValue(cid, Configs.storage, (get+1)) local gett = getPlayerStorageValue(cid, Configs.storage) doCreatureSay(cid, 'Voce matou '..gett..' '..Configs.monster..' ate agora.', TALKTYPE_ORANGE_1) if gett == 5 then doPlayerAddItem(cid, Configs.premio, Configs.qtd) doPlayerAddItem(cid, Configs.premio2, Configs.qtd_2) doPlayerAddExp(cid,Configs.exp) doCreatureSay(cid, 'Voce acabou a missao!.', TALKTYPE_ORANGE_1) setPlayerStorageValue(cid, Configs.storage, (gett+1)) end end end return true end1 ponto
-
Erro nas senhas da data base
Erro nas senhas da data base
Emmidio reagiu a gabrielzika por uma resposta no tópico
1 pontoCara você tem que Mudar isso no seu site, ele está para Sha1. Mudar apenas no config.lua do servidor não vai mudar nada...1 ponto -
script de missão
1 pontoFiz um bem simples ve se resolve seu problema. O jogador precisa ir até o npc falar "missao" e ae depois é só ele ir caçar e matar a quantidade certa de bichos para ganhar item/exp automaticamente. E se ele for no npc o npc indica para ele que não pode mais fazer aquela "missao" novamente. creaturescripts.xml <event type="kill" name="kill_task" event="script" value="kill_task.lua"/> creaturescripts/login.lua Antes do return true la do final bota isso. registerCreatureEvent(cid, "kill_task") creaturescripts/scripts Cria um arquivo .lua com o nome "kill_task" e cola isso dentro. local Configs = { storage = 2427, monster = 'Rabbit', premio = 2160, qtd = 1, exp = 100, } function onKill(cid, target, lastHit) if isMonster(target) and getCreatureName(target) == Configs.monster then local get = getPlayerStorageValue(cid, Configs.storage) if get >=0 and get <=5 then setPlayerStorageValue(cid, Configs.storage, (get+1)) local gett = getPlayerStorageValue(cid, Configs.storage) doCreatureSay(cid, 'Voce matou '..gett..' Rabbits ate agora.', TALKTYPE_ORANGE_1) if gett == 5 then doPlayerAddItem(cid, Configs.premio, Configs.qtd) doPlayerAddExp(cid,Configs.exp) doCreatureSay(cid, 'Voce acabou a missao!.', TALKTYPE_ORANGE_1) setPlayerStorageValue(cid, Configs.storage, (gett+1)) end end end return true end Npc Na pasta npc crie um arquivo .xml com o nome "Task" e cole isso <?xml version="1.0" encoding="UTF-8"?> <npc name="Task" script="task.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="128" head="17" body="54" legs="114" feet="0" addons="2"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|, eu tenho uma missao para voce!"/> </parameters> </npc> Npc/scripts Crie um arquivo .lua com o nome "task" e cole isso 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 local storage = 2427 local get = getPlayerStorageValue(cid, storage) if(msgcontains(msg, 'missao') and (get == -1)) then selfSay('Para ganhar o premio mate 5 Rabbits! Voce ira receber automaticamente.', cid) setPlayerStorageValue(cid, storage, 0) elseif get >=5 then selfSay('Voce acabou a missao de matar Rabbits!', cid) else selfSay('Voce precisa matar '..(5-get)..' Rabbits!', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())1 ponto
-
Once Upon a Time
Once Upon a Time
deivaoo reagiu a Once Upon a Time por uma resposta no tópico
1 pontoPrimeiramente Bom dia, Boa tarde ou Boa noite à todos que estiverem lendo esse tópico!! O tibia é um jogo com possibilidades incríveis e misturar histórias com o desenvolvimento do jogo poderia formar algo muito incrível, se não fosse tão trabalhoso. Quem sou eu ? Me chamo Luciano Claudio, tenho 19 anos, e já tive um otserver, cujo considerei-o grandinho, porém era desgastante a busca por novos players e a manutenção dos players já presentes dentro do jogo! Com isso, eu gostaria de apresentar um novo projeto que eu tenho em mente chamado: Once Upon a Time. Um jogo que misturaria a dinâmica do tibia com uma boa história que pudesse manipular o jogo. Por exemplo: um boss (impactante) seria morto uma unica vez ou uma determinada quest poderia salvar ou não uma determinada cidade... A grande variação de raças: As raças seriam divididas em um grupinho pois combinaria com o sistema de clãs (que vai ser explicado na próxima etapa). As raças seriam depois divididas em vocações (seria aqui uma renda para a equipe criadora, pois ao lançar uma nova vocação [e isso aconteceria com frequência] antes dela ser free, a gente poderia cobrar um custo, para quem quisesse testar, testa-la!). Raças: Humanos: A raça predominante no jogo, a maioria dos clãs e a maioria das cidades tem, entre seus participantes, humanos. As grandes historias sempre giram em torno dessa raça, de onde saem muitos heróis e vilões poderosos! Elfos: A raça mais calma, porém nada pacífica! São os forjadores das melhores armas do jogo e nunca são rebaixados à nada. Os elfos são mais cautelosos nas suas amizades, em geral, apoiam clãs da natureza e da luz. Porém, há alguns que apoiam as trevas, esses ja foram corrompidos há muito tempo! Orcs: Generalizados como a raça guerreira pois não há guerras em que não haja orcs! Porém, essa generalização não é totalmente verdade, muitos clãs foram forjados pelos orcs, pregando tanto o bem quanto o mal. Eles acreditam muito no companheirismo, por isso estão presentes na maioria dos clãs também! Eles são seguidores da justiça e da luta. Portanto, são esses os papeis que eles ocupam nos clãs. Anões: A raça mais trabalhadora e mais rica do jogo. Quase todos os equipamentos presentes no jogo foram forjados pelos anões! São também ótimos guerreiros e bastante orgulhosos! Essa raça sempre busca por riqueza e prosperidade, suas cidades são gigantes e entre as montanhas. A maior parte dos clãs que os anões participam são de criação, desde armas até porções. Goblins: Extremamente inteligentes, capazes de fazer maquinas. Porém, não ache que são apenas inteligentes. São fortes também! Alguns são assassinos por natureza! Não subestime-os, pois vocês também verão sua grande inteligencia e força! A maior parte dos seus professores (os melhores) de engineer serão goblins! Bombas, robôs.. Espere de tudo dessa raça! Os seus clãs são, em sua maioria, de conhecimento. Minotauros: Os minotauros sempre foram uma raça injustiçada! Na época das grandes guerras, eles eram escravos da maioria das cidades. Desde então, eles têm medo de confiar nos outros. São uma raça muito inteligente e fortes, por terem sido muito maltratados ficaram muito bom na arte da cura! Hoje, são referencia na criação de porções! Eles são muito sábios e valentes, a maior parte deles vivem nas periferias das grandes cidades e tornam aquele local bastante agradável! Eles estão bastante presente na maioria dos clãs e principalmente nos clãs da natureza! Sistema de Clãs O sistema de clãs seria baseado nas guilds do tibia atual. Porém os players não podem cria-las, o server já vem com um grande número delas! Assim, participantes de determinados clãs podem ou não entrar em algumas cidades, podem ou não ter algumas missões ou até podem ser ou não inimigo de outros clãs! Clãs: Aparecendo o clã na barra de skills: Com ranks entre os melhores clãs: Algo muito legal poderia ser implementado nesse sistema, o que eu penso à principio é uma storage para determinado clã, fazendo com que npc's ou cidades só aceitem determinadas storages... Esse sistema também aumentaria as opções de jogabilidade, haja vista que uma vocação poderia escolher diferentes clãs, ganhando diferentes bônus com isso. Além disso, haveria nerfs e buffs constantes tanto nas raças e vocações, quanto nos clãs também! Mapa do jogo: Aqui um lugar onde eu precisaria de muita ajuda, não sou muito bom em mapear... Haveriam cidades pequenas (essas seriam as cidades grandes de tibia, por exemplo carlin) e haveriam as cidades grandes (poucas mas realmente grandes)! Não tenho muito o que falar aqui, porém as cidades seguem determinados clãs, ou seja, baseando-se nos estilos dos clãs as cidades seriam construídas! Também haveriam cidades aéreas, mas essa é uma história para depois! Vocações: Aqui é onde começa o verdadeiro trabalho duro! Uma das grandes rendas para manter o jogo online seria a venda do pré lançamento das vocações, tipo: algo semelhante a dbo na venda de personagens "vip". Entretanto, no nosso esses personagens sempre ficariam free após um tempo! As vocações serão separadas, também, por outfits 2 especificas, ou seja, a vocação terá duas outfits a inicial e a do promotion! (obs: serão sem os addons, os addons serão outras coisas dentro do jogo) Alguns exemplos de vocações que eu consigo pensar : As iniciais: Knight: São cavaleiros que além de ter força física e aguentar muito dano também são favorecidos por uma magia unica, magia divina. Outfit Inicial: Outfit Promoted: Sorcerer: Os grandes magos, que estudam muito para serem fortes e resistentes. Não é nada fácil a vida de um mago, porém isso faz com que eles sejam sempre muito sábios para tomar uma boa decisão! Outfit Inicial: Outfit Promoted: Priest: Grandes sacerdotes da paz, que ajudam seus companheiros curando-os e salvando-os de si mesmos! Porém, eles sempre ajudaram as pessoas na guerra e a guerra sempre andou próximo da maldição, por isso essa classe também pode ser corrompida. Outfit Inicial: Outfit Promoted: Hunter: Amantes da tecnologia, essa classe usa adagas, arco e flecha e outras armas à distancia. Possuem pets bem treinados que compram nos melhores pet's shops. Diferente dos monstros sumonados pelo Summoner, esses pet's também possuem leveis. Outfit Inicial: Outfit Promoted: Archer: São extremamente habilidosos e divinamente precisos em seus tiros, a luz sempre está ao lado deles e eles usam-a bastante. Outfit Inicial: Outfit Promoted: Arcanist: Aprendizes da luz e sabem usa-la muito bem! Vivem em locais com muitas arvores e luz, amam a natureza e tudo entre ela. Se dão muito bem com os druidas! Outfit Inicial: Outifit Promoted: Warrior: Orcs guerreiros, não tão bom com magias mas conseguem muita força, rapidez e cura com suas magias de esteroides na batalha! Outfit Inicial: Outfit Promoted: Shaman: A principio todos os orcs eram shaman, porém foram perdendo sua magia com o passar do tempo. Alguns ainda são reflexos da sua história, mantendo grande poder e vontade na sua magia! Outfit Inicial: Outfit Promoted: Soldier: Um anão que não tem medo de apanhar, usa armas de duas mãos ou duas armas. Não curte muito os escudos, pois acha um peso inútil já que não ajuda a matar ninguém. Ganha muita força em contato com os inimigos, cuidado! Outfit inicial: Outfit Promoted: Guard: Ao contrário do soldier, esse anão não tem medo de pegar no pesado. Geralmente usa escudo(s) e armadura muito pesadas podendo ter ou não uma arma! Segura bastante o dano e chama muita atenção enquanto os outros ficam encarregados do dano! Outfit Inicial: Outfit Promoted: Monk Os anões também tem sua afinidade com a magia, de uma forma mais estudada do que puro talento eles conseguem, também, ser uma boa referencia em fortes poderes mágicos! Outfit Inicial: Outift Promoted: Engineer Todos conseguem ser engenheiro. Porém, os goblins são tão bons nisso que eles tornaram sua propria vocação! Constroem maquinas tanto para coloca-las no campo de batalha quanto para monta-las. Outfit Inicial : Outfit Promoted: (Varia de qual robô você se transformar) Fighter: Os minotauros são muito fortes na batalha, tanto que conseguem aguentar ficar na luta durante dias! Também conseguem usar a magia a seu favor. Outfit Inicial: Outfit Promoted: Ranger: São muito bons à distancia conseguindo carregar armas mais pesadas e muitas flechas! Outfit Inicial: Outfit Promoted: Mage: Ótimos healers, além de ter muito dano e serem muito resistentes! São considerados os mais pacientes, por isso sempre tomam uma boa decisão. Outfit Inicial: Outfit Promoted: Outros sistemas : O Cliente: Com base no otclient o cliente vai ser mais parecido com o cliente do tibia 11.0. Com alguns sistemas para as nossas áreas de pvp e jogos. Além de vários outros sistemas que só o Otclient disponibiliza, como sons, transparência, efeitos... Sistemas para deixar o jogo menos cansativo: pvp: Além do pvp normal nas cidades/caves/estradas, como no wow, o meu jogo também existiria um sistema "player vs. player" com base no battlefield ou algo parecido. No otc com um botão você esperaria numa fila até juntar as 30 pessoas +ou- (você entra num chat onde conversa com outras pessoas na fila e/ou dentro do jogo e nesse chat avisa quantas pessoas faltam para jogar) Com premiações de xp e gold! Otima forma para farmar. Dugeons: Dugeons são tipo umas quests, locais onde só pode entrar com time. Nessas dugeons aparece monstros mais fortes (elite e até lendários) e com muita quantidade deles. Tipos de monstros: Existem 3 tipos do mesmo monstro. Os comuns que são os normais Os de elite (mais fortes e mais mais agressivos, até mesmo com sua própria raça) Antes do nome vem (elite) e com a skull white Ex : (elite) rotworm Os lendários (os monstros do tipo mais forte que existe, dependendo do monstro, é melhor chamar uma equipe para enfrentá-los) Antes do nome vem (legendary) e com a skull black Ex : (legendary) rotworm Os lendários são bem mais comuns em dugeons. Porém, eles podem aparecer aleatoriamente também. Além do enorme número de raças e vocações, pretendo também acrescentar alguns items, para que o jogo fique com mais opções também! Precisamos de: Alguém que saiba manipular no Otclient Web Designer Quem quiser participar entre em contato por aqui no tibia king!!1 ponto -
[860] Wand que cria portal
[860] Wand que cria portal
Natanael Beckman reagiu a Danyel Varejao por uma resposta no tópico
1 pontolocal Configs = { Teleport_ID = 1387, Effect = 10, Time_To_Remove = 60, Exhaust_Use = 120, Destinations = { {x = 85, y = 121, z = 6}, {x = 85, y = 122, z = 6}, {x = 85, y = 123, z = 6}, {x = 86, y = 121, z = 6}, {x = 86, y = 122, z = 6} } } local function isWalk(cid, Position) Position.stackpos = 0 if getTileThingByPos(Position).uid ~= 0 then local TileInfo = getTileInfo(Position) if getTopCreature(Position).uid == 0 and doTileQueryAdd(cid, Position) == RETURNVALUE_NOERROR then return true end end end local function removeTeleport(Position) local Teleport = getTileItemById(Position, Configs.Teleport_ID).uid if Teleport > 0 then doSendMagicEffect(Position, CONST_ME_POFF) doRemoveItem(Teleport) end return true end local function checkPosition(Position) for i = 1, #Configs.Destinations do if Position.x == Configs.Destinations[i].x and Position.y == Configs.Destinations[i].y and Position.z == Configs.Destinations[i].z then return false end end return true end function onUse(cid, item, fromPosition, itemEx, toPosition) local Exhausted = getPlayerStorageValue(cid, 55335) if os.time() < Exhausted then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Wait ".. Exhausted - os.time() .." seconds to create another teleport.") return true end if isWalk(cid, toPosition) and checkPosition(toPosition) then setPlayerStorageValue(cid, 55335, os.time() + Configs.Exhaust_Use) doCreateTeleport(Configs.Teleport_ID, Configs.Destinations[math.random(1, #Configs.Destinations)], toPosition) doSendMagicEffect(toPosition, Configs.Effect) addEvent(removeTeleport, Configs.Time_To_Remove * 1000, toPosition) else doPlayerSendCancel(cid, "Sorry, not possible.") doSendMagicEffect(toPosition, CONST_ME_POFF) end return true end1 ponto -
mc nao pode se atakar
mc nao pode se atakar
Natanael Beckman reagiu a Danyel Varejao por uma resposta no tópico
1 pontofunction onLogin(cid) registerCreatureEvent(cid, "MC_Block_Target") registerCreatureEvent(cid, "MC_Block_Combat") return true end function onTarget(cid, target) if isPlayer(cid) and isPlayer(target) then if getPlayerIp(cid) == getPlayerIp(target) then return false end return true end return true end function onCombat(cid, target) if isPlayer(cid) and isPlayer(target) then if getPlayerIp(cid) == getPlayerIp(target) then return false end return true end return true end <event type="login" name="MC_Block_Login" event="script" value="NoTargetMC.lua"/> <event type="target" name="MC_Block_Target" event="script" value="NoTargetMC.lua"/> <event type="combat" name="MC_Block_Combat" event="script" value="NoTargetMC.lua"/>1 ponto -
[PEDIDO]Script que order não funciona em pz
[PEDIDO]Script que order não funciona em pz
Natanael Beckman reagiu a Danyel Varejao por uma resposta no tópico
1 pontolocal skills = specialabilities local surfborders = {4644, 4645, 4646, 4647, 4648, 4649, 4650, 4651, 4652, 4653, 4654, 4655, 4656, 4657, 4658, 4659, 4660, 4661, 4662, 4663} local txt = { ["rock smash"] = {"break that rock!", "smash that rock!", "destroy that rock!", "smash it!", "break it!", "destroy it!"}, ["cut"] = {"cut that bush!", "cut it down!", "cut it off!", "cut off that bush!", "cut down that bush!", "cut that bush down!"}, ["move"] = {"move!", "move there!", "go there!", "walk there!"}, ["light"] = {"flash!", "light!", "flash this place!", "light up this place!"}, ["dig"] = {"open that hole!", "dig that hole!", "open it!", "dig it!"}, ["blink"] = {"teleport there!", "blink there!", "blink!", "teleport!"}, ["ride"] = {"let me ride you!", "let's ride!", "let me mount you!", "let me get on you!"}, ["fly"] = {"let's fly!", "let me get on you!"} , ["untransform"] = {"go back to normal!", "transform into yourself again!", "stop transformation!"}, ["headbutt"] = {"headbutt on three", "headbutt that three!", "headbutt it off"}, --alterado v2.6 } function onUse(cid, item, frompos, item2, topos) if getPlayerStorageValue(cid,130130) >= 1 then doPlayerSendTextMessage(cid, 19, "Nao Pode Dar Order Nessa Area.") return true end if getPlayerStorageValue(cid,6598754) >= 1 or getPlayerStorageValue(cid, 6598755) >= 1 then doPlayerSendTextMessage(cid, 19, "[Order] Nao Pode usa Order Nessa Area.") return true end if getTilePzInfo(getPlayerPosition(cid)) then doPlayerSendTextMessage(cid, 19, "[Order] Nao Pode usa Order em protect zone.") return true end local checkpos = topos checkpos.stackpos = 0 if getTileThingByPos(checkpos).uid <= 0 then return true end --------END FLY/RIDE -------- if getCreatureCondition(cid, CONDITION_OUTFIT) and (item2.uid == cid or getRecorderPlayer(topos) == cid) and (getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1) then if isInArray({460, 11675, 11676, 11677}, getTileInfo(getThingPos(cid)).itemid) then doPlayerSendCancel(cid, "You can\'t stop flying at this height!") return true end local item = getPlayerSlotItem(cid, 8) local pokemon = getItemAttribute(item.uid, "poke") local x = pokes[pokemon] if getTileInfo(getThingPos(cid)).itemid >= 4820 and getTileInfo(getThingPos(cid)).itemid <= 4825 then doPlayerSendCancel(cid, "You can\'t stop flying above the water!") return true end doSummonMonster(cid, pokemon) local pk = getCreatureSummons(cid)[1] if not isCreature(pk) then pk = doCreateMonster(pokemon, backupPos) if not isCreature(pk) then doPlayerSendCancel(cid, "You can't stop flying/riding here.") return true end doConvinceCreature(cid, pk) end doTeleportThing(pk, getThingPos(cid), false) doCreatureSetLookDir(pk, getCreatureLookDir(cid)) adjustStatus(pk, item.uid, true, false, true) doPlayerSay(cid, ""..getPokeName(getCreatureSummons(cid)[1])..", let me get down!", 19) doRegainSpeedLevel(cid) doRemoveCondition(cid, CONDITION_OUTFIT) local pkpkpk = getCreatureSummons(cid)[1] local pkjg = getPlayerSlotItem(cid, 8).uid local pkza = getPlayerSlotItem(cid, 8).uid local pkxd = getItemAttribute(pkjg,"addon") if not pkxd then doSetItemAttribute(pkza,"addon",0) elseif pkxd > 0 then doSetCreatureOutfit(pkpkpk, {lookType = pkxd}, -1) end setPlayerStorageValue(cid, 17000, -1) setPlayerStorageValue(cid, 17001, -1) return true end if #getCreatureSummons(cid) == 0 then return doPlayerSendCancel(cid, "You need a pokemon to use order!") end if getCreatureNoMove(getCreatureSummons(cid)[1]) then return true end markLP(getCreatureSummons(cid)[1], -1) if getMarkedPos(getCreatureSummons(cid)[1]).x == topos.x and getMarkedPos(getCreatureSummons(cid)[1]).y == topos.y then return true end local unfix = {x = 1, y = 1, z = 1} local thisball = getPlayerSlotItem(cid, 8) local mysum = getCreatureSummons(cid)[1] local sid = mysum or cid local maxMoveDist = getDistanceBetween(getThingPos(sid), topos) * 2 + 1 markPos(mysum, topos) markOwnerPos(mysum, getThingPos(cid)) -------- ROCK SMASH --------- if item2.itemid == 1285 and isInArray(skills["rock smash"], getPokemonName(mysum)) then doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["rock smash"][math.random(1, #txt["rock smash"])].."", 19) addEvent(goThere, 500, mysum, topos, "rock smash", isCreature(getCreatureTarget(cid))) return true end ----------------------------- -------- HEADBUTT ----------- if item2.itemid == 12591 and getPokemonLevel(mysum) >= 15 then --alterado v2.6 --id do item arvore normal doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["headbutt"][math.random(1, #txt["headbutt"])].."", 19) addEvent(goThere, 500, mysum, topos, "headbutt", isCreature(getCreatureTarget(cid))) return true end ----------------------------- -------- CUT ---------------- if item2.itemid == 2767 and isInArray(skills["cut"], getPokemonName(mysum)) then doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["cut"][math.random(1, #txt["cut"])].."", 19) addEvent(goThere, 500, mysum, topos, "cut", isCreature(getCreatureTarget(cid))) return true end ----------------------------- -------- TRANSFORM ---------- if getCreatureName(mysum) == "Ditto" and isMonster(item2.uid) then if item2.uid == mysum then if isTransformed(mysum) then deTransform(mysum, getItemAttribute(thisball.uid, "transTurn")) markPos(mysum, unfix) doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["untransform"][math.random(1, #txt["untransform"])].."", 19) return true end doPlayerSendCancel(cid, "Your ditto is not transformed.") markPos(mysum, unfix) return true end if getCreatureName(item2.uid) == "Ditto" then doPlayerSendCancel(cid, "Your ditto can't transform into another ditto.") markPos(mysum, unfix) return true end if getCreatureName(item2.uid) == getPlayerStorageValue(mysum, 1010) then doPlayerSendCancel(cid, "Your ditto is already transformed into that pokemon.") markPos(mysum, unfix) return true end local cd = getCD(thisball.uid, "trans", 40) if cd > 0 then doPlayerSendCancel(cid, "Your pokemon is too tired to transform again. Cooldown: ("..getStringmytempo(cd)..")") return true end if getHappiness(mysum) <= 50 then doSendMagicEffect(getThingPos(mysum), happinessRate[1].effect) markPos(mysum, unfix) return true end local turn = getItemAttribute(thisball.uid, "transTurn") if not turn or turn > 10 then doItemSetAttribute(thisball.uid, "transTurn", 0) else doItemSetAttribute(thisball.uid, "transTurn", turn + 1) end local time = 140 + 2 * getPokemonLevel(mysum) turn = getItemAttribute(thisball.uid, "transTurn") markPos(mysum, unfix) setPlayerStorageValue(mysum, 1010, getCreatureName(item2.uid)) doSetCreatureOutfit(mysum, getCreatureOutfit(item2.uid), -1) addEvent(deTransform, time * 1000, mysum, turn) doSendMagicEffect(getThingPos(mysum), 184) doCreatureSay(mysum, "TRANSFORM!", TALKTYPE_MONSTER) local name = getCreatureName(item2.uid) setCD(thisball.uid, "trans", 40) doItemSetAttribute(thisball.uid, "transBegin", os.clock()) doSetItemAttribute(thisball.uid, "transLeft", time) doSetItemAttribute(thisball.uid, "transOutfit", getCreatureOutfit(item2.uid).lookType) doSetItemAttribute(thisball.uid, "transName", getCreatureName(item2.uid)) doFaceCreature(mysum, getThingPos(item2.uid)) doPlayerSay(cid, ""..getPokeName(mysum)..", transform into "..getArticle(name).." "..name.."!", 19) if useKpdoDlls then doUpdateMoves(cid) --alterado v2.6 end if dittoCopiesStatusToo then doSetItemAttribute(thisball.uid, "boffense", dittoBonus * getOffense(item2.uid)) doSetItemAttribute(thisball.uid, "bdefense", dittoBonus * getDefense(item2.uid)) doSetItemAttribute(thisball.uid, "bsattack", dittoBonus * getSpecialAttack(item2.uid)) doSetItemAttribute(thisball.uid, "bagility", dittoBonus * getSpeed(item2.uid)) adjustStatus(mysum, thisball.uid) end return true end ----------------------------- -------- LIGHT -------------- if isMonster(item2.uid) and getCreatureMaster(item2.uid) == cid then markPos(mysum, unfix) if not isInArray(skills["light"], getPokemonName(item2.uid)) then doPlayerSendCancel(cid, "Your pokemon can't use flash.") return true end local cd = getCD(thisball.uid, "light", 30) if cd > 0 then doPlayerSendCancel(cid, "Your pokemon is too tired to use flash. Cooldown: ("..getStringmytempo(cd)..")") return true end doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["light"][math.random(1, #txt["light"])].."", 19) doCreatureSay(mysum, "FLASH!", TALKTYPE_MONSTER) doSendMagicEffect(getThingPos(mysum), 28) local size = 5 size = size + math.floor(getSpecialAttack(mysum) / 60) size = size + math.ceil(getPokemonLevel(mysum) / 60) if size > 11 then size = 11 end doSetCreatureLight(mysum, size, 215, 600*1000) local delay = math.floor(30 - getPokemonLevel(mysum) / 4) if delay > 0 then setCD(thisball.uid, "light", delay) end return true end ----------------------------- -------- DIG ---------------- if isInArray(skills["digholes"], item2.itemid) and isInArray(skills["dig"], getPokemonName(mysum)) then doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["dig"][math.random(1, #txt["dig"])].."", 19) addEvent(goThere, 500, mysum, topos, "dig", isCreature(getCreatureTarget(cid))) return true end ----------------------------- -------- BLINK / MOVE ------- if not isCreature(item2.uid) and isInArray(skills["blink"], getPokemonName(mysum)) then local cd = getCD(thisball.uid, "blink", 30) if getPlayerStorageValue(mysum, 2365487) == 1 then return true --alterado v2.4 end if cd > 0 or not canWalkOnPos(topos, false, false, true, true, true) then doPlayerSendCancel(cid, "Blink cooldown: ("..getStringmytempo(cd)..")") doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["move"][math.random(1, #txt["move"])].."", 19) addEvent(goThere, 500, mysum, topos, "move", isCreature(getCreatureTarget(cid)), maxMoveDist) return true end local CD = isShinyName(getCreatureName(mysum)) and 20 or 30 --edited blink markPos(mysum, topos) markOwnerPos(mysum, getThingPos(cid)) setCD(thisball.uid, "blink", CD) doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["blink"][math.random(1, #txt["blink"])].."", 19) doSendDistanceShoot(getThingPos(mysum), topos, 39) doSendMagicEffect(getThingPos(mysum), 211) doTeleportThing(mysum, topos, false) doSendMagicEffect(topos, 134) doCreatureSay(mysum, "BLINK!", TALKTYPE_MONSTER) goThere(mysum, topos, "blink", isCreature(getCreatureTarget(cid))) --edited blink return true end ----------------------------- ----START FLYorRIDE --------- if (item2.uid == cid or getRecorderPlayer(topos) == cid) and (isInArray(skills["fly"], getPokemonName(mysum)) or isInArray(skills["ride"], getPokemonName(mysum))) then if getPlayerStorageValue(cid, 212124) >= 1 then --alterado v2.6 return doPlayerSendCancel(cid, "You can't do it with a pokemon with mind controlled!") end if getPlayerStorageValue(cid, 52480) >= 1 then return doPlayerSendCancel(cid, "You can't do it while a duel!") --alterado v2.6 end if getPlayerStorageValue(cid, 5700) == 1 then doPlayerSendCancel(cid, "You can't do that while is mount in a bike!") --edited proteçao pra bike return true end local pct = getCreatureHealth(mysum) / getCreatureMaxHealth(mysum) doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", 1 - pct) if isInArray(skills["fly"], getPokemonName(mysum)) then doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["fly"][math.random(1, #txt["fly"])].."", 19) addEvent(goThere, 500, mysum, topos, "fly", isCreature(getCreatureTarget(cid))) else doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["ride"][math.random(1, #txt["ride"])].."", 19) addEvent(goThere, 500, mysum, topos, "ride", isCreature(getCreatureTarget(cid))) end return true end ----------------------------------Control Mind-------------------------------------------- alterado v2.5 if isCreature(item2.uid) and ehMonstro(item2.uid) and isInArray(skills["control mind"], getCreatureName(mysum)) and item2.uid ~= mysum then if not isCreature(item2.uid) then return true end if isSleeping(mysum) then return doPlayerSendCancel(cid, "Your pokemon is sleeping...zZzZ") end if getTileInfo(getThingPos(cid)).protection or getTileInfo(getThingPos(getCreatureSummons(cid)[1])).protection then return doPlayerSendCancel(cid, "You or your pokemon are in Pz zone!") end if #getCreatureSummons(cid) == 2 then return doPlayerSendCancel(cid, "You only can control one Pokemon!") end local cd = getCD(thisball.uid, "control", 120) if cd > 0 then doPlayerSendCancel(cid, "You have to wait "..cd.." segs to use Control Mind again!") return true end if getPokemonLevel(item2.uid) >= getPokemonLevel(mysum) then return doPlayerSendCancel(cid, "Your pokemon can't control this mind!") end local cmed = item2.uid setCD(thisball.uid, "control", 120) doSendDistanceShoot(getThingPos(mysum), getThingPos(cmed), 39) -------------- setPlayerStorageValue(cid, 212124, 1) doConvinceCreature(cid, cmed) setPlayerStorageValue(cmed, 212123, 1) doCreatureSay(cid, ""..getCreatureName(mysum)..", control "..string.lower(getCreatureName(cmed)).."'s mind!", 19) local cmname = getCreatureName(mysum) local cmpos = getThingPos(mysum) local pokelife = (getCreatureHealth(mysum) / getCreatureMaxHealth(mysum)) doItemSetAttribute(thisball.uid, "hp", pokelife) doRemoveCreature(mysum) local cmzao = doSummonCreature(""..cmname.." cm", cmpos) doConvinceCreature(cid, cmzao) setPlayerStorageValue(cid, 888, 1) if useKpdoDlls then doUpdateMoves(cid) end local function check(cid, controled, rod) if isCreature(cid) then ball2 = getPlayerSlotItem(cid, 8) if getPlayerStorageValue(cid, 888) <= 0 then return true end if not isCreature(controled) then setPlayerStorageValue(cid, 212124, 0) local sum = isCreature(getCreatureSummons(cid)[1]) and getCreatureSummons(cid)[1] or getCreatureSummons(cid)[2] local pkcmpos = getThingPos(sum) doRemoveCreature(sum) local item = getPlayerSlotItem(cid, 8) local pk = doSummonCreature(getItemAttribute(item.uid, "poke"), pkcmpos) doConvinceCreature(cid, pk) doCreatureSetLookDir(getCreatureSummons(cid)[1], 2) addEvent(doAdjustWithDelay, 100, cid, pk, true, true, false) setPlayerStorageValue(cid, 888, 0) cleanCMcds(item.uid) registerCreatureEvent(pk, "SummonDeath") --alterado v2.6 if useKpdoDlls then doUpdateMoves(cid) end return true end if rod <= 0 then --Pokemon controlado local cmed2 = getCreatureSummons(cid)[1] local poscmed = getThingPos(cmed2) local cmeddir = getCreatureLookDir(cmed2) local namecmed = getCreatureName(cmed2) local gender = getPokemonGender(cmed2) local level = getWildPokemonLevel(cmed2) local hp, maxHp = getCreatureHealth(getCreatureSummons(cid)[1]), getCreatureMaxHealth(getCreatureSummons(cid)[1]) doRemoveCreature(getCreatureSummons(cid)[1]) local back = doCreateMonster(namecmed, poscmed) addEvent(doCreatureSetSkullType, 150, back, gender) addEvent(setWildPokemonLevel, 150, back, level) doWildAttackPlayer(back, cid) doCreatureSetLookDir(back, cmeddir) addEvent(doCreatureAddHealth, 100, back, hp-maxHp) -- pokemon controlador local mynewpos = getThingPos(getCreatureSummons(cid)[1]) doRemoveCreature(getCreatureSummons(cid)[1]) local pk2 = doSummonCreature(getItemAttribute(ball2.uid, "poke"), mynewpos) doConvinceCreature(cid, pk2) addEvent(doAdjustWithDelay, 100, cid, pk2, true, true, false) setPlayerStorageValue(cid, 888, 0) doCreatureSetLookDir(getCreatureSummons(cid)[1], 2) setPlayerStorageValue(cid, 212124, 0) cleanCMcds(ball2.uid) registerCreatureEvent(pk2, "SummonDeath") --alterado v2.6 if useKpdoDlls then doUpdateMoves(cid) end else if isInArray({"Haunter", "Gengar", "Shiny Gengar"}, cmname) then doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 214) else doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 220) end end end addEvent(check, 500, cid, controled, rod-1) end check(cid, cmed, 40) return true end --------------------------------------------------------------------- -------- MOVE / END --------- local onlyWater = false if isWater(getTileThingByPos(checkpos).itemid) then onlyWater = true for checkwater = 0, 7 do if not isWater(getTileThingByPos(getPosByDir(checkpos, checkwater)).itemid) then onlyWater = false end end end if onlyWater then doPlayerSendCancel(cid, "Destination is not reachable.") return true end doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["move"][math.random(1, #txt["move"])].."", 19) if isCreature(getCreatureTarget(cid)) then goThere(mysum, topos, "move", isCreature(getCreatureTarget(cid)), maxMoveDist) else addEvent(goThere, 500, mysum, topos, "move", isCreature(getCreatureTarget(cid)), maxMoveDist) end ----------------------------- return true end1 ponto -
(Resolvido)System Points In Game
1 pontoComo sempre aparece alguém pedindo algo semelhante, resolvi fazer um básico aqui. Primeiramente, adicione uma coluna à tabela players de sua database: ALTER TABLE `players` ADD `ot_points` INTEGER NOT NULL DEFAULT 0 Em seguida, crie um arquivo na pasta lib : systempoints.lua (ou qualquer nome de sua preferência) Talkaction Em talkactions/scripts crie um arquivo: pointstalk.lua Adicione a tag em talkactions.xml: <talkaction words="/addpoints;/delpoints;/onpoints;/transfpoints;/helppoints;/points;/getpoints" event="script" value="pointstalk.lua"/> -- Como usar: -- /addpoints Dwarfer,10 -> adiciona 10 pontos ao player Dwarfer -- /delpoints Dwarfer,10 -> remove 10 pontos do player Dwarfer -- /getpoints Dwarfer -> mostrará quantos pontos o player tem -- /points --> mostrará quantos pontos o próprio player possui -- /transfpoints Dwarfer,10 -> transfere 10 pontos para o player Dwarfer -- /onpoints 10 -> adiciona 10 pontos a todos os players online -- /helppoints -> mostra como devem ser usados os comandos permitidos ao player Actions Baú que dá itens por pontos Em actions/scripts, crie um arquivo: chestitemspoints.lua Configuração: local t = { points = 20, -- pontos necessários items = {{2160, 5}, {2152, 7}, {2158, 3}}, -- {id do item, quantidade} que será dado ao player time = {5, "sec"} -- tempo para usar o baú novamente } Em actions.xml, adicione a tag: <action actionid="ACTION_ID_DO_BAÚ" script="chestitemspoints.lua" /> Baú que dá pontos somente uma vez Em actions/scripts, crie um arquivo.lua: chestpoints.lua Em actions.xml, adicione a tag: <action actionid="ACTION_ID_DO_BAÚ" script="chestpoints.lua" /> NPC E, antes que peça rsrsrs, um tile que só passa com certa quantidade de pontos. Movements Em movements/scripts crie um arquivo: tilepoints.lua Em movements.xml: <movevent type="StepIn" actionid="ACTION_ID_DO_PISO" event="script" value="tilepoints.lua"/>1 ponto
-
Como adicionar bike no meu poketibia ?
Man Mais Tipo e a Da Female ? Por Que Quando Os Players Female Clika Na Bike Fica Com Bike Male1 ponto
-
Erro no Database
Erro no Database
ryan henrique reagiu a luanluciano93 por uma resposta no tópico
1 pontoo ot esta em sqlite, esta dando erro porque o ot (servidor) não esta tendo conexão com a database, normalmente se chama theforgottenserver.s3db, algo assim. Se teu ot não tiver basta baixar qualquer outro e colocar.1 ponto -
Como por para o playay ganhar 3 dias de vip ao criar a acc em Mysql?
Vá na pasta do seu site, depois vá na pasta config e abra o arquivo config.php pesquise isso ['newaccount_premdays'] e coloque isso no lugar $config['site']['newaccount_premdays'] = 5; #! O NUMERO 5 É O QUANTO DIA VAI DAR1 ponto
-
doPlayerSetPercentExperienceRate
1 pontoSimples função para adicionar porcentagem a mais na exp ganha. \data\lib\050-functions function doPlayerSetPercentExperienceRate(cid, value) return doPlayerSetRate(cid, SKILL__LEVEL, getConfigValue("rateExperience") + (value / 100)) end Uma função simples, de como usar: function onUse(cid, item) storage = 1214 percent = 20 if getPlayerStorageValue(cid, storage) == -1 then doPlayerSetPercentExperienceRate(cid, percent) setPlayerStorageValue(cid, storage, 1) else doPlayerSendCancel(cid, "Você ja tem "..percent.."% de experiencia extra") end return true end Até1 ponto