Líderes
-
xWhiteWolf
HéroiPontos3605Total de itens -
-
-
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 08/24/16 em todas áreas
-
Sorce Nto War Shinobi
Sorce Nto War Shinobi
Weddson e um outro reagiu a KotZletY por uma resposta no tópico
2 pontosThe Forgotten Server! Versão: 0.3.6 Patch Level 1 Compatível com OT's 8.5x até 8.7x Quinta e última versão do Mestre Crying Damson! Source Original, zerada e sem nenhuma alteração, Bom Uso e Boa Sorte! xD Link do TFS: TFS 0.3.6 PL1 - Master.rar Link das Dll's: Dll's_TFS_0.3.6_PL1.rar (Necessárias para roda o Server!) Scan do TFS: Scan Scan das Dll's: Scan ( O Vírus detectado nas Dll's é um falso-positivo, não vai fazer mal a sua maquina, afinal se fosse algo ruim não estaria no meu PC ).. ..2 pontos -
[Battlefield Event New!] Exclusivo e mais legal ;p
[Battlefield Event New!] Exclusivo e mais legal ;p
Eduardo Dantas reagiu a Absolute por uma resposta no tópico
1 pontoFala galerinha linda do TK, vejo muita gente reclamando do battlefield do nosso amigo Vodkart, mas aqui funciona 100%, creio que seja rejeição nos TFS, mas então resolvi trazer a vocês um battlefield que venho customizando a algum tempo, o mesmo possui em alguns servidores poloneses, globalwar e cia. O Evento é um pouco modificado do que o tradicional battlefield, porém acho que ficou mais legal, é de pegar a bandeira do time inimigo, para dar um pouco mais de emoção que tal? rs. Preste atenção nos arquivos e como configurar, estarei explicando tudo passo a passo. Atenção, o comando para abrir o evento é: /battlefield 20 (o 20 é o número de participantes, no caso 10 no time vermelho e 10 no preto, coloque sempre números pares para balancear corretamente o evento) Vamos ao que interessa: Primeiramente, em data/libs crie um arquivo com o nome de battlefield.lua e adicione o seguinte dentro: battlefield = { storage = 201206300801, storage2 = 201206300802, tpPos = {x=32342, y=32213, z=7}, -- aonde aparecerá o teleport pos_team_1 = {x=31621,y=31860,z=7}, -- posição do team 1 (do lado direito) pos_team_2 = {x=31582,y=31860,z=7}, -- posição do team 2 (do lado esquerdo) spectors = {{x=31593,y=31853,z=6},{x=31609,y=31853,z=6},{x=31593,y=31866,z=6},{x=31609,y=31866,z=6}}, -- aonde aparecerá os espectadores (em volta do battlefield) team1Name = "Black Assassins", team2Name = "Red Barbarians", } function doBroadCastBattle(type,msg) for _, cid in pairs(getPlayersOnline()) do if getPlayerStorageValue(cid, battlefield.storage2) ~= -1 then doPlayerSendTextMessage(cid,type,msg) end end return true end function removeTp() local t = getTileItemById(battlefield.tpPos, 1387) if t then doRemoveItem(t.uid, 1) doSendMagicEffect(battlefield.tpPos, CONST_ME_POFF) end end function OpenWallBattle() local x = true local B = { [1] = {1056,{x=31601, y=31858, z=6, stackpos = 1}}, -- posição da barreira [2] = {1056,{x=31601, y=31859, z=6, stackpos = 1}}, -- posição da barreira [3] = {1056,{x=31601, y=31860, z=6, stackpos = 1}}, -- posição da barreira [4] = {1056,{x=31601, y=31861, z=6, stackpos = 1}} -- posição da barreira } for i = 1, #B do if getTileItemById(B[i][2], B[i][1]).uid == 0 then x = false end if x == true then doRemoveItem(getThingfromPos(B[i][2]).uid,1) else doCreateItem(B[i][1], 1, B[i][2]) end end end function getWinnersBattle(storage) local team = storage == 1 and battlefield.team1Name or battlefield.team2Name doBroadcastMessage("Players from team ".. team .." won the event battlefield,they received a Master Surprise Bag!") setGlobalStorageValue(battlefield.storage, -1) removeTp() OpenWallBattle() for _, cid in pairs(getPlayersOnline()) do if getPlayerStorageValue(cid, battlefield.storage2) ~= -1 then doRemoveCondition(cid, CONDITION_OUTFIT) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) if getPlayerStorageValue(cid, battlefield.storage2) == storage then doPlayerAddItem(cid,6571,1) end setPlayerStorageValue(cid, battlefield.storage2, -1) end end end Como configurar este passo; Pós o primeiro passo, crie um arquivo em actions/scripts com o nome de battlefieldAbsolute.lua e adicione o seguinte dentro: function onUse(cid, item, fromPosition, itemEx, toPosition) local team = getPlayerStorageValue(cid, battlefield.storage2) if (item.actionid == 45001 and team == 1) or (item.actionid == 45002 and team == 2) then getWinnersBattle(team) end return true end Em actions.xml, adicione as seguintes linhas: <action actionid="49901" event="script" value="battlefieldAbsolute.lua"/> <action actionid="45002" event="script" value="battlefieldAbsolute.lua"/> Pós o segundo passo, vá até sua pasta creaturescripts/scripts e crie um arquivo com o nome de combat.lua e adicione o seguinte: function onLogin(cid) if getGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage) == -1 then setGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage, 0) setGlobalStorageValue(_Lib_Battle_Info.TeamTwo.storage, 0) setGlobalStorageValue(_Lib_Battle_Info.storage_count, 0) end registerCreatureEvent(cid, "BattleTeam") registerCreatureEvent(cid, "BattleDeath") return true end function onCombat(cid, target) if isPlayer(cid) and isPlayer(target) then if getPlayerStorageValue(cid, _Lib_Battle_Info.TeamOne.storage) == 1 and getPlayerStorageValue(target, _Lib_Battle_Info.TeamOne.storage) == 1 then doPlayerSendCancel(cid, "You may not attack your team mates.") return false end if getPlayerStorageValue(cid, _Lib_Battle_Info.TeamTwo.storage) == 1 and getPlayerStorageValue(target, _Lib_Battle_Info.TeamTwo.storage) == 1 then doPlayerSendCancel(cid, "You may not attack your team mates.") return false end return true end return true end function onPrepareDeath(cid, deathList, lastHitKiller, mostDamageKiller) if getPlayerStorageValue(cid, _Lib_Battle_Info.TeamOne.storage) >= 1 then setPlayerStorageValue(cid, _Lib_Battle_Info.TeamOne.storage, -1) setGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage, getGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage)-1) doRemoveCondition(cid, CONDITION_OUTFIT) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[Battle Field] You Are Dead!") if getGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage) == 0 then getWinnersBattle(_Lib_Battle_Info.TeamTwo.storage) else doBroadCastBattle(23,"[BattleField Information] ".._Lib_Battle_Info.TeamOne.name.." "..getGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage).." VS "..getGlobalStorageValue(_Lib_Battle_Info.TeamTwo.storage).." " .._Lib_Battle_Info.TeamTwo.name) end elseif getPlayerStorageValue(cid, _Lib_Battle_Info.TeamTwo.storage) >= 1 then setPlayerStorageValue(cid, _Lib_Battle_Info.TeamTwo.storage, -1) setGlobalStorageValue(_Lib_Battle_Info.TeamTwo.storage, getGlobalStorageValue(_Lib_Battle_Info.TeamTwo.storage)-1) doRemoveCondition(cid, CONDITION_OUTFIT) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[Battle Field] You Are Dead!") if getGlobalStorageValue(_Lib_Battle_Info.TeamTwo.storage) == 0 then getWinnersBattle(_Lib_Battle_Info.TeamOne.storage) else doBroadCastBattle(23,"[BattleField Information] ".._Lib_Battle_Info.TeamOne.name.." "..getGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage).." VS "..getGlobalStorageValue(_Lib_Battle_Info.TeamTwo.storage).." " .._Lib_Battle_Info.TeamTwo.name) end end return true end Ainda na mesma pasta crie outro arquivo com o nome de pdeath.lua com o seguinte conteúdo: (ATENÇÃO QUE NA MESMA PASTA SÃO 2 ARQUIVOS) function onPrepareDeath(cid, corpse, lastHitKiller, mostDamageKiller) if getPlayerStorageValue(cid, config_tvt.green_kills) > 0 then doTeleportThing(cid, config_tvt.green_pos) setGlobalStorageValue(red_kills, getGlobalStorageValue(red_kills) + 1) end if getPlayerStorageValue(cid, config_tvt.red_kills) > 0 then doTeleportThing(cid, config_tvt.red_pos) setGlobalStorageValue(red_kills, getGlobalStorageValue(green_kills) + 1) end doPlayerSendTextMessage(cid, 27, "You dead! by Absolute") return true end Em creaturescripts/creaturescripts.xml adicione as seguintes linhas: <event type="preparedeath" name="BattlefieldP" event="script" value="pdeath.lua"/> <event type="combat" name="BattlefieldC" event="script" value="combat.lua"/> Pós o terceiro passo, em movements/scripts crie um arquivo com o nome de battlefieldAbsolute.lua e adicione o seguinte: local conditionBlack = createConditionObject(CONDITION_OUTFIT) setConditionParam(conditionBlack, CONDITION_PARAM_TICKS, -1) addOutfitCondition(conditionBlack, {lookType = 134, lookHead = 114, lookBody = 114, lookLegs = 114, lookFeet = 114}) local conditionRed = createConditionObject(CONDITION_OUTFIT) setConditionParam(conditionRed, CONDITION_PARAM_TICKS, -1) addOutfitCondition(conditionRed, {lookType = 143, lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94}) function onStepIn(cid, item, position, fromPosition) if getPlayerAccess(cid) > 3 then doTeleportThing(cid, battlefield.pos_team_1) return true elseif getGlobalStorageValue(battlefield.storage) == 0 then doTeleportThing(cid, battlefield.spectors[math.random(#battlefield.spectors)]) return true end if getGlobalStorageValue(battlefield.storage) > 0 then if getGlobalStorageValue(battlefield.storage) % 2 == 0 then setPlayerStorageValue(cid, battlefield.storage2, 1) doAddCondition(cid, conditionBlack) doTeleportThing(cid, battlefield.pos_team_1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You will join the team " .. battlefield.team1Name .. "!") else setPlayerStorageValue(cid, battlefield.storage2, 2) doAddCondition(cid, conditionRed) doTeleportThing(cid, battlefield.pos_team_2) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You will join the team " .. battlefield.team2Name .. "!") end setGlobalStorageValue(battlefield.storage, getGlobalStorageValue(battlefield.storage)-1) if getGlobalStorageValue(battlefield.storage) == 0 then doBroadcastMessage("Battlefield will start in 1 minute, please create your strategy!") addEvent(doBroadcastMessage, 60*1000, "BattleField will begin now!") addEvent(OpenWallBattle, 60*1000) else doBroadcastMessage("We are waiting "..getGlobalStorageValue(battlefield.storage).." players to Battlefield starts.") end end return true end Em movements.xml adicione a seguinte linha: <movevent type="StepIn" actionid="45000" event="script" value="battlefieldAbsolute.lua"/> Á pedidos fiz o comando para abrir manualmente, então em talkactions/scripts crie um arquivo com o nome de battlefieldopenAbsolute.lua e coloque: function onSay(cid, words, param) if getGlobalStorageValue(battlefield.storage) ~= -1 then doPlayerSendCancel(cid, "The event is already open.") return true elseif not tonumber(param) or param % 2 ~= 0 then doPlayerSendCancel(cid, "You must choose an even number.") return true end doBroadcastMessage("The event BattleField was opened and We are waiting "..param.." Players! Team divided into "..((param)/2).." VS "..((param)/2)) setGlobalStorageValue(battlefield.storage, tonumber(param)) local tp = doCreateItem(1387, 1, battlefield.tpPos) doItemSetAttribute(tp, "aid", 45000) return true end Em talkactions.xml adicione a linha: <talkaction words="/battlefield" access="3" event="script" value="battlefieldopenAbsolute.lua"/> Screenshots do mapa do evento; Clique em spoiler para ver. Download & Scan do mapa;1 ponto -
[Mod] Automatic Raids [Dia E Hora Marcada]
Automatic Raids.xml <?xml version="1.0" encoding="UTF-8"?> <mod name="Automatic Raids" version="1.0" author="Vodkart And xotservx" contact="tibiaking.com" enabled="yes"> <config name="raids_func"><![CDATA[ days = { ["Monday"] = { ["21:30"] = {nome = "Orshabaal", pos = {fromPosition = {x=184, y=55, z=7},toPosition = {x=188, y=58, z=7}},m = {"5 Fire Devil", "2 Orshabaal"}, Time = 15}, ["21:33"] = {nome = "Dragon", pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}},m = {"100 Dragon"}, Time = 20} }, ["Sunday"] = { ["10:08"] = {nome = "Demon", pos = {fromPosition = {x=202, y=11, z=7},toPosition = {x=204, y=12, z=7}}, m = {"1 Demon"}, Time = 15}, ["10:46"] = {nome = "Hydra", pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}}, m = {"7 Hydra", "4 Cyclops"}, Time = 20} } } ]]></config> <globalevent name="AutomaticRaids" interval="60" event="script"><![CDATA[ domodlib('raids_func') function onThink(interval, lastExecution) if days[os.date("%A")] then hours = tostring(os.date("%X")):sub(1, 5) tb = days[os.date("%A")][hours] if tb then function removeCreature(tb) for x = ((tb.pos.fromPosition.x)-10), ((tb.pos.toPosition.x)+10) do for y = ((tb.pos.fromPosition.y)-10), ((tb.pos.toPosition.y)+10) do local m = getTopCreature({x=x, y=y, z= tb.pos.fromPosition.z}).uid if m ~= 0 and isMonster(m) then doRemoveCreature(m) end end end end doBroadcastMessage("The invasion of " .. tb.nome .. " started") for _,x in pairs(tb.m) do for s = 1, tonumber(x:match("%d+")) do pos = {x = math.random(tb.pos.fromPosition.x, tb.pos.toPosition.x), y = math.random(tb.pos.fromPosition.y, tb.pos.toPosition.y), z = tb.pos.fromPosition.z} doSummonCreature(x:match("%s(.+)"), pos) end end addEvent(removeCreature, tb.Time*60*1000, tb) end end return true end ]]></globalevent> </mod> Configuração: days = { ["Monday"] = { ["21:30"] = {nome = "Orshabaal", pos = {fromPosition = {x=184, y=55, z=7},toPosition = {x=188, y=58, z=7}},m = {"5 Fire Devil", "2 Orshabaal"}, Time = 1}, ["21:33"] = {nome = "Dragon", pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}},m = {"100 Dragon"}, Time = 2} }, ["Tuesday"] = { ["10:44"] = {nome = "Demon", pos = {fromPosition = {x=184, y=55, z=7},toPosition = {x=188, y=58, z=7}}, m = {"5 Demon", "8 Fire Devil"}, Time = 1}, ["10:46"] = {nome = "Hydra", pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}}, m = {"7 Hydra", "4 Cyclops"}, Time = 2} } } ["DIA"] = { ["HORA DA INVASÃO"] = {nome = "NOME DA INVASÃO", pos = {começo e final da área}, monster = {"MONSTROS"}, Time = para remover os monstro} } O dia da invasão é colocada entre " " e somente dia em inglês e a primeira letra maiúscula, exemplo: "Saturday" Depois são as hora da invasão, que é colocada entre " " e somente a hora e minuto, segundos não precisa exemplo: "15:00" As Posições estão entre { } adicionando as posições x, y e z, é o começo e final da área exemplo: pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}} fromPosition -- começo da área onde vai acontecer a raid toPosition -- final da área onde vai acontecer a raid Os monters tem um modo especial de configurar, vc coloca entre { }, e cada monstro entre " ", e entre as " " vc adiciona "QUANTIDADE MONSTRO", e para adicionar mais tipos de monstro se separa por virgulas, exemplo: {"40 Water Elemental", "5 Cyclops"} Time é uma função extra, é para caso ninguém participe do evento os monstros não fiquem pelo mapa, e é em minutos, exemplo: Time = 151 ponto
-
[8.54] PokeCyan [ Editado By Senhor] Atualizado 3.0 2016
Boa Noite , Boa Tarde ou Bom Dia TK's não sei a hora que vocês vão ver o Tópico Estava com meu Projeto do "Pokemon H" Fiz várias Ediçoes no Servidor Que Baixei aqui no Tibia King Mesmo e vim disponibilizá-los para vocês. Então bora ao que interessa né? • Menu: ├ Informações; ├ Edições; ├ Erros; ├ Prints; ├ Mapa ├ Download; ├ Atualização; ├ Utilitários; └ Créditos. • Informações Básicas • • Edições / Ajustes • • Erros do Servidor • • Prints• • MAPA • • Downloads • Cliente * MediaFire e Scan Servidor * MediaFire e Scan • Download Atualização 2.0 • Download: https://www.mediafire.com/?ik211gku2hdqz2t Scan : • Download Atualização 3.0 • 2016 OBS: NÃO TERÁ MAIS EDIÇÕES. • Utilitários • Remeres que usei pra editar: AQUI • Créditos • Brun Por Criar o Servidor Slicer Por Editar o Servidor Mulurka (pelas out) Stylo pelo tuto do ícone system noninhu por ajudar em alguns spells tem 2 caras tbm eu eskeci o nome deles agora que ajudaram 1 com as insignias na barra de skill e o outrio pelas scripts da liga pokemon dandanrvb pelas scripts do icone system erondino por algumas caves ih é só bjundão a all Vudi (Eu) Por editar o resto do servidor e trazer as novidades Tioj Pelas edições e Por fazer eu copiar a organização do tópico dele kk obg Kuuhaku pela cave dos geot . Held Itens By Gabriel Sales Gabriel Sales AnnaFeeh pelo script do ditto system pxg Obs: Se Está faltando algum crédito me avise pra mim colocar ( Não sei se está faltando algum) Obs: Qualquer Outra Duvida Estarei de Suporte no Tópico Obs: SENHA GOD/GOD OBS : Se Pegar o Servidor e Postar em Outro Fórum sem as minhas permissão vou pedir para o dono do forum ou site retirar o conteúdo . (Esse Conteúdo é exclusivo do TibiaKing obrigado) Se ajudei Já sabe né1 ponto
-
[v32] GlobalFull 11/12 - New Asuras, Falcons, Warzones 4,5,6 . (Updates Frequentes)
[v32] GlobalFull 11/12 - New Asuras, Falcons, Warzones 4,5,6 . (Updates Frequentes)
anderson de souza reagiu a Qwizer por uma resposta no tópico
1 pontoGlobal 11/12x [v32] - New Falcons - New Asuras - Warzone 4,5,6 - Exercise Training - Raids 100% - Monstros 100% - Trainer Offline 100% - Trainer Online 100% - Taming system funcionando 100%; - Database completa - War System 100% - Global MAP Full - Store 100% - Imbuement - Prey System - Entre outros sistemas. Projeto no: GITHUB Scan Vírus Total IMAGES Créditos:1 ponto -
New Library v. 1.2
New Library v. 1.2
Underewar reagiu a xWhiteWolf por uma resposta no tópico
1 pontoFala galera, hoje vim trazer pra vocês uma nova biblioteca de funções que eu venho desenvolvendo, pretendo ir atualizando esse tópico constantemente sempre adicionando funções novas e explicando a utilização delas. Algumas funções que eu coloquei aqui estão presentes na OTAL também, porém algumas eu fiz pequenas correções de forma que essa lib poderia facilmente substituir a OTAL sem grandes problemas (pelo menos se você utilizava apenas as funções básicas da otal) Todas as funções que não tem -- nome do autor do lado dela foram feitas por mim, xWhiteWolf ou Night Wolf (NW). O restante delas são créditos dos devidos autores, apenas coloquei pois considero funções vitais no server de cada um. Crie um arquivo em data/lib chamado 075 - White Wolf Functions.lua e coloque o seguinte código dentro: Agora eu vou explicar oque cada função faz porque de nada adianta lançar uma lib e não explicar oque ela faz não é mesmo? hahaha Obs inicial: quando uma função tiver em seus parametros um [] significa que oque está dentro do colchetes não é um parâmetro obrigatório. Como usar: doShowTimeByPos(cid, getCreaturePosition(cid), 20, 20) Irá fazer uma contagem regressiva na posição que o player se encontra começando de 20 e mandando a mensagem na mesma cor da fala dos monstros. Essa função é bem útil em actions/spells para fazer contagem de tempo em runas como a magic wall e ver quanto tempo falta pra magic wall sumir) Obs: Espero que ajude bastante pessoas a entender sobre funções, eu utilizei cid como o principal uid das funções nos exemplos mas você pode muito bem utilizar outros uids, fica a critério seu. Qualquer dúvida comentem abaixo que eu vou tentar ajudar da melhor maneira. Ahhh, isso daí foi testado em 8.54 mas deve funcionar em quase todas as versões que tenham as funções básicas do TFS. EDIT: Pessoal, agora é sério, essa lib tem fácil umas 600 linhas, das quais umas 500 eu devo ter codado sozinho (na mão, linha por linha). Eu tive todo o trabalho de testar cada uma delas e oque eu peço é o mínimo de gratidão e respeito. Se eu te ajudei clique em Gostei, se você tiver alguma dúvida eu to me colocando a disposição de responder qualquer coisa relacionada ao tópico, mesmo que você não saiba nem oque é uma lib apenas venha aqui e escreva sua dúvida. EDIT 2: Duas novas funções adicionas, espero que gostem! EDIT 3: Três novas funções adicionadas juntamente com suas respectivas explicações.1 ponto -
Experience Weapon System
Experience Weapon System
JowL reagiu a xWhiteWolf por uma resposta no tópico
1 pontoEai 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. Fuis1 ponto -
[PDA] Ditto System Igual PXG
1 pontoOiie Galera do TK *--* hoje irei Postar um Tutorial que os Caras Mim pediram já que o outro Fórum Fechou. Não sei se tá na área certa se não tiver porfavor movam Bom, vou ensinar como fazer um ditto system igual pxg, ou seja, clona tipo(fire, water...), habilidades... Ex: se eu clonar um charizard, ele fica tipo fire/flying, e eu posso usar fly... Vamos lá. Adicionando script no order.lua(data/actions/scripts). Substituia: por:: Pronto, ele ja esta se transformando, mas e pra voltar? Crie um arquivo.lua com nome de dittorevert na pasta "data/talkactions/scripts". E dentro dele bote: function onSay(cid, words, param, channel) local thisball = getPlayerSlotItem(cid, 8) if getItemAttribute(thisball.uid, "ehditto") then doItemSetAttribute(thisball.uid, "poke", "Ditto") doItemSetAttribute(thisball.uid, "ehditto", 1) end end Depois vá em talkactions.xml, localizado na pasta "data/talkactions" e insira esta linha: <talkaction log = "yes" words = "!revert" hide="yes" event = "script" value = "dittorevert.lua"/> Perfeito, sistema funcionando, mas tem um problema, ele tem a mesma força do pokemon normal, como faço pra diminuir? Simples, vá em "data/lib" e abra o "level system.lua". Nele procure isso: E substitua por isso: PS: Como ali está "0.75", a força é diminuida em 1/4(um quarto). Pode mudar para o quanto quiser. EX: 0.50 -> 2/4. 0.25 -> 3/4. Pronto, sistema feito. Mas assim não da de indentificar que é ditto, sendo assim possivel enganar outros players. Para isso, vá em "data/creaturescripts/scripts" abra look.lua e procure por: table.insert(str, "\nIt contains "..getArticle(pokename).." "..pokename..".\n") e substitua por: if getItemAttribute(thing.uid, "ehditto") == 1 then table.insert(str, "\nIt contains "..getArticle(pokename).." "..pokename.." (Ditto).\n") else table.insert(str, "\nIt contains "..getArticle(pokename).." "..pokename..".\n") end No Goback.lua(data/actions/scripts) e no Some Functions.lua(data/lib) procure isso: E apague. Em Some Functions.lua procure por: E deixe assim: Ainda no some functions.lua apague isso: GIF do System: OBS: Para que o ditto se transforme por completo, fale !revert puxe e bote ele novamente. Qualquer bug, avisem. PS: Se feito corretamente, não há bugs. Créditos:: GabrielSales1 ponto
-
Lib 000-Const
1 pontoOlá pessoal, venho mais uma vez trazer um tutorial simples, e tentar explicar tudo claramente, esse tutorial pode ficar grande dependendo do desenrolar dele, pois é um pack de tutoriais, então vou usar spoilers para ajudar na formatação do tópico. Nota: as informações usadas abaixo, podem ser tanto usadas com o nome, quanto com o número, e podem ser encontradas na pasta lib no arquivo 000-const https://pastebin.com/0FfPcg7y line4 Coordenadas: Tutorial feito e formatado por Caronte o + gato do fórum, avaliações do perfil são bem-vindas. Explicando: doMoveCreature(cid, direction): Serve para mover tanto o player quanto o monstro. Combate: Tutorial feito e formatado por Caronte o + gato do fórum, avaliações do perfil são bem-vindas. Parâmetros de condição: Condições: Slots: Tutorial feito e formatado por Caronte o + gato do fórum, avaliações do perfil são bem-vindas. Participação: xWhiteWolf Bom, é só isso o tutorial pessoal, espero que tenham gostado, e o que prego nesses tutoriais é a essência da simplicidade, às vezes, uma coisa que parece ser boba para você, pode atormentar uma outra pessoa. Const_ani e Const_me: Tutorial feito e formatado por Caronte o + gato do fórum, avaliações do perfil são bem-vindas. Talktypes and message types: [title][/title] Tutoriais concluídos por ordem de formatação (podem ser alterados assim mesmo): Coordenadas, e suas direções. Combat (ainda há coisas a serem adicionadas). Slots. CONST_ME and CONST_ANI Os assuntos do tópico poderão se diminuídos ou aumentados de acordo com o desenrolar do tempo, gostaria de apoio, e não me incomodaria se alguém se propusesse fazer algum tutorial, eles serão supervisionados por mim e formatados por mim, para serem postados neste tópico. Esse tópico demorou e vai demorar muito para fazer cada tutorial, então eu não me importo com um obrigado e REP+, OBS.: Um obrigado vale bem mais do que um REP+1 ponto
-
[PEDIDO] Servidor de poketibia atualizado
Bom, estou procurando alguma base de poketibia para trabalhar em cima, mas eu procuro uma específica, é mapa do PDA ou PokexCyan, que contenha as novas sprites dos CPs e que contenha os pokemons Shiny Wobbuffet, Tangrowth, Shiny Tangrowth... É uma que no primeiro andar do CP de Saffron, há os 2 NPCs que transformam o Magmortar em Shiny Magmortar e o Electivire em Shiny Electivire, já no segundo andar tenha o NPC Henry (Stones), NPC Helder, NPC de nickname, e um outro que vende umas Backpacks, já no terceiro andar tem 1 máquina de Boost e o tp para as demais máquinas de boost, e do outro lado do terceiro andar tem os teleportes para as áreas vip, teleportes para quests e para sala de eventos. Já joguei uns 3 ou 4 servidores que usam essa base mas não consigo achar em lugar nenhum, se alguém souber onde consigo me manda ai por favor, dou rep++ para sempre kkkk Segue alguns prints de partes do CP (2º e 3º andares): @UP1 ponto
-
Anunciar Newsticker
1 pontoE aí galera do TK, Estou trazendo mais uma inovação para o Tibia King, é o sistema de anunciar as ultimas 5 newstickers postadas no site! Vamos ao código, em globalevents.xml adicione: <globalevent name="information" interval="1800000" event="script" value="autobroadcast.lua"/> Ele vai anunciar de 30 em 30 minutos as mensagens, lembrando que não anuncia todas de uma vez, ele sorteia uma das 5. Em globalevents/scripts adicione um arquivo lua com o nome de autobroadcast e coloque isso dentro do conteúdo: function onThink(interval, lastExecution) local result = db.getResult("SELECT text FROM `z_news_tickers` ORDER by date DESC LIMIT 0,5") local sorteado = math.random(1, 5) local news = {} if result:getID() == -1 then return false end repeat if result:getID() ~= -1 then table.insert(news, result:getDataString("text")) end until not result:next() if not news[sorteado] then return false end doBroadcastMessage("News: " .. string.sub(news[sorteado], 1, 150) .. "", MESSAGE_EVENT_ADVANCE) return TRUE end Pronto, já estará funcionando seu sistema (se sua tabela de newsticker não for z_news_tickers é só mudar. Créditos: Keilost Globalwar1 ponto
-
(Resolvido)Passwords com letras estranhas no banco??
Você até pode trocar para plain mas terá de trocar todas as que já estão criadas uma-a-uma. NÃO recomendo trocar para plain. Se você for invadido por algum kid ou mongol, provavelmente não sabem destes sites. Se puder dar um ´gostei´, ficaria grato!1 ponto
-
(Resolvido)Passwords com letras estranhas no banco??
(Resolvido)Passwords com letras estranhas no banco??
thelifeofpbion reagiu a Enzo Caue por uma resposta no tópico
1 pontoDescriptografe ;]1 ponto -
Me ajuda no server de poketibia minha pergunta é...
Isso é porque a cada level que a pessoa tem uma pequena porcentagem dos atributos do Pokémon aumentam, mas isso ocorre sempre dependendo do level de quem usa o Pokémon, creio que isso seja alterado na config, mas não tenho certeza. Mas caso alguém saiba ajudem ele. Pode até estar um pouco ''ultrapassado'' a diferença de força. Mas fique tranquilo, isso é editável e não é um bug.1 ponto
-
[10.93] Projeto Capernia, RL MAP
1 pontohttp://www.halfaway.net/index.php?home1 ponto
-
Scripter e Spriter.
1 pontoPoste sobre o projeto para incentivar o pessoal, sem informação fica complicado ...1 ponto
-
(Resolvido)Sobre Atributos (preciso de dicas)
(Resolvido)Sobre Atributos (preciso de dicas)
thelifeofpbion reagiu a xWhiteWolf por uma resposta no tópico
1 pontoisso são todas as tags possíveis segundo a source 0.4 q eu tinha aqui (deve ser igual pra 0.36). os nomes são os em verde. Pra dar atributo diferente de acordo com a vocação: OU modifica a source, OU dá o atributo via script.1 ponto -
(Resolvido)Erros de Lastnews e Pages Alguem ajuda?
Qual versão se esta usando? e qual Gesior? por via das duvidas teste esse:1 ponto
-
Barco Navegando por Rota Pré-Definida
Fala pessoal do Tibiaking, bom hoje vim postar um sistema bem interessante, que não é da minha autoria porém no final tem os creditos, como eu tinha falado em outro tópico eu tinha servidor em mente, tinha feito algumas coisa e tal, e tinha uma quest que para chegar no npc você tinha que cruzar o mar, então depois de procurar um pouco achei esse sistema e coloquei no meu OTserv achei bem legal, decidir compartilhar com vocês . Informação basica : É um MOD que apesar de ser um script básico ele tem um efeito bastante legal e consiste em um barco onde você irá escolher qual caminho ele fará, mas será definido no arquivo XML não por o player tendeu ? Bom primeiramente nós iremos na pasta mod e criar um arquivo xml chamado boatsystem e coloque o seguinte dentro : Configurar o Script : Toda a configuração dele está aqui ( para que não sabe meche com script, só mecha nessa parte ) local t = {4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2} local postart = {x=968, y=1001, z=7, stackpos=1} local posback = {x=994, y=978, z=7, stackpos=1} local delay = 350 LOCAL T : são todas as direções que o barco vai andar, em sentido horário. 1 = norte 2 = leste 3 = sul 4 = oeste LOCAL POSTART : é a posição que o meio do barco vai estar quando ele estiver indo para algum lugar. LOCAL POSBACK : é a posição que o meio do barco vai estar quando ele estiver voltando. LOCAL DELAY : O delay é o tempo em mile segundos que demora pra o barco andar. Adicionando no Map editor: Faça 3 sqms do id 4820. Adicione o actionid 6617 nesses sqms. Faça 3 ids de barco, voce escolhe se eh o virado para cima ou para o lado. Bote o actionid 6616 no meio do barco. Nessa forma : O vermemlho indica que tem o id 4820 e o actionid 6617. O verde indica o actionid 6616 Aqui temos um video demostrativo do autor do MOD onde veremos o resultado Observações : -Na pos que ele vai chegar só faça o negocio na aguá, não precisa fazer outro bote. - Coloque Ant-logout nos SQM's da rota que segundo o autor vai dar bug caso alguém deslogue no barco. Todos os créditos : - MatheusMkalo1 ponto
-
Problema com função getPlayerMagLevel(cid)
Problema com função getPlayerMagLevel(cid)
mezuf reagiu a xWhiteWolf por uma resposta no tópico
1 pontoVamos ler a descrição do erro e tentar entender oque ela significa: Description: <luaGetPlayerMagLevel> Player not found ao usar a função getPlayerMagLevel ele não encontrou o player que vc tá tentando fazer a checagem. Ok, mas por que isso ocorre? Bom, você colocou lá em cima: local cura = getPlayerMagLevel(cid) Mas oque é esse cid aí? De onde ele vem? Parece que achamos o problema... vc tá tentando puxar o ml de algo que não está definido ainda. "Mas Lobo, cid é o player que executa a spell, certo?" SIM, mas só dentro do escopo da spell. Acompanhe: Pra você fazer uma spell que recupera dependendo do ml vc precisa fazer um callback nessa spell.. segue esse tutorial aqui1 ponto -
Password Criptografados sha1 - SQLite
Password Criptografados sha1 - SQLite
thelifeofpbion reagiu a Gaant por uma resposta no tópico
1 pontoSe você tiver um senha, tipo SSKS20LSJNX, assim enrolado, acho q não tem nenhum problema em deixar em plain ;~; o sha1 é só caso alguém consiga entrar no seu phpmyadmin, que dai ele poderia roubar os dados e talz, mais nunca vi disso, acho que é melhor deixar plain1 ponto -
(Resolvido)[Pedido] Script de porta! Alguem poderia me ajudar!
lvldoor.lua (data/actions/scripts): function onUse(cid, item, fromPos, item2, toPos) lvl = 1000 if getPlayerLevel(cid) >= lvl then doTeleportThing(cid, toPos) doSendMagicEffect(fromPos, CONST_ME_MAGIC_BLUE) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Você precisa de level '..lvl..' para poder abrir a porta.') doSendMagicEffect(fromPos, CONST_ME_POFF) end return true end Adicione a tag ao arquivo actions.xml (data/actions): <action actionid="ACTIONID" event="script" value="lvldoor.lua"/>1 ponto
-
(Resolvido)[AJUDA] NAO CONSIGO LOGAR ACC NO SITE GESIOR
(Resolvido)[AJUDA] NAO CONSIGO LOGAR ACC NO SITE GESIOR
mattheus reagiu a Victor Fasano Raful por uma resposta no tópico
1 pontoAmigo, por favor... Substitua o seu config-and-functions.php por este: Cya1 ponto -
(Resolvido)Sistema de Mineração
(Resolvido)Sistema de Mineração
kaioboyy reagiu a xWhiteWolf por uma resposta no tópico
1 pontoexatamente como vc pediu... terra = {351,352,353,354,355} levels = { [-1] = 2229, ---- skull [0] = 1294, --- small stone [1] = 3976, --- worm [10] = 2149, -- Small Emerald [12] = 2146, -- Small Sapphire [15] = 2145, -- Small Diamond [17] = 2150, -- Small Amethyst [20] = 2147, -- Small Ruby [25] = 2144, -- Black Pearls [27] = 2143, -- White Pearls [30] = 2157, -- Gold Nuggets [35] = 2156, --- red gem [36] = 2158, -- blue gem [37] = 2155, -- green gem [38] = 2153, -- violet gem [39] = 2154, -- yellow gem [40] = 2157, -- small enchanted emerald [42] = 2157, -- Small Enchanted Sapphiire [45] = 2158, -- Small Enchanted Amethyst [50] = 2161, -- Small Enchanted Ruby [70] = 2162 -- Life Crystal } local config = { storage = 19333, chance = 40, --- chance de achar um item ou não k = 2, --- constante de level.. quanto maior, mais fácil é upar. (a fórmula é level ao quadrado dividido pela constante) experience = 19334 } function onUse(cid, item, fromPosition, itemEx, toPosition) local drops = {} function getDrops(cid) for i= -1,getPlayerStorageValue(cid, config.storage) do if levels[i] then table.insert(drops, levels[i]) end end return true end if isInArray(terra, itemEx.itemid) then getDrops(cid) doPlayerSetStorageValue(cid, config.experience, getPlayerStorageValue(cid, config.experience)+1) local experience = getPlayerStorageValue(cid, config.experience) if experience >= (getPlayerStorageValue(cid, config.storage)^2)/config.k then doPlayerSetStorageValue(cid, config.storage, getPlayerStorageValue(cid, config.storage)+1) doPlayerSendTextMessage(cid, 27, "Congratulations, you have leveled! Your currect level is "..getPlayerStorageValue(cid, config.storage) ..".") if getPlayerStorageValue(cid, config.storage) == 50 then doPlayerSendTextMessage(cid, 20, "For reaching level "..getPlayerStorageValue(cid, config.storage) .." you have been awarded with Mining Helmet.") doPlayerAddItem(cid, 7497, 1, true) end end if config.chance >= math.random(1,100) then if #drops >= 1 then local item = drops[math.random(1,#drops)] doPlayerSendTextMessage(cid, 27, "You have found a "..getItemNameById(item)..".") doPlayerAddItem(cid, item, 1, true) end doSendMagicEffect(toPosition, 3) else doSendMagicEffect(toPosition, 2) return TRUE end elseif itemEx.itemid == item.itemid then doPlayerSendTextMessage(cid, 27, "You're currenctly level "..getPlayerStorageValue(cid, config.storage)..".") else return FALSE end return true end agora é só ir no creaturescripts\scripts\login.lua e colocar antes do ultimo return true: if getPlayerStorageValue(cid, 19333) == -1 then setPlayerStorageValue(cid, 19333, 0) elseif getPlayerStorageValue(cid, 19334) == -1 then setPlayerStorageValue(cid, 19334, 0) end obs: a fórmula pro level da skill tá assim: level atual x level atual / k dá pra mudar mas eu prefiri fazer assim pq a função quadrática é crescente então a cada level ia precisar de mais experiencia doque o level anterior, mas fica a seu critério mudar. Pode parecer que tá bem fácil upar no começo, mas lembre-se doque eu falei. Fazendo uma continha simples você descobre que se precisa de somente 50 mineiradas pra pegar level 10, mas a mesma conta nos diz que é necessário 1250 mineiradas pra se chegar no 50. Então cuidado com oque faz na fórmula auheuhauheuh Também tomei a liberdade de editar o formato inicial das recompensas.. fiz a cada 2 leveis pra facilitar e não complicar o script ainda mais, mas ainda assim está dentro daquilo que vc falou anteriormente. Espero que vc tenha gostado porque leveu quase 4 horas pra fazer isso aí auhuhauhauh1 ponto -
[RESOLVIDO] Erro 0xc000007b ao executar TFS
Galera, consegui! haha O problema não era na source, nem nas minhas alterações. Esse erro é causado por incompatibilidade com as DLLs. Fui testar com outras DLLs que eu tinha aqui e funcionou. Valeu pela ajuda de vocês!1 ponto
-
Modo Hard (Anti SQL Injection)
1 pontoOlá! Bom, primeiramente, oque é SQL Injection? LEMBRANDO QUE: Como OTServ's usa MySQL & PhpMyAdmin, não é muito necessário estar utilizando os AntiSQL, não é "necessário" mais é "bom" prevenir, pois talvez seu site tem alguma falhinha de SQL Injection por cmd e você não sabe, então é bom prevenir, Se for Gesior ACC, é bom estar utilizando apenas "uma" função, não use várias para não entrar em conflito, isso pode prejudicar e falhar as seguranças do site. Aqui abaixo eu vou postar as mais usadas formas de proteger contra isso, pode ser inserida no seu Layout.php ou através de Include no PHP se o arquivo for necessário use no index.php: <?php include "nomedoarquivo.php"; ?> Metodo 1 (Hard) (Criamos um Arquivo Antisql.php) <?php $xa = getenv('REMOTE_ADDR'); $badwords = array(";","'","\"","*","union","x:","x:\#","delete ","///","from|xp_|execute|exec|sp_executesql|sp_|select|update|set|shutdown|insert|delete|where|drop table|show tables|#|\*|","DELETE","insert",","|"x'; U\PDATE Character S\ET level=99;-\-","x';U\PDATE Account S\ET ugradeid=255;-\-","x';U\PDATE Account D\ROP ugradeid=255;-\-","x';U\PDATE Account D\ROP ",",W\\HERE 1=1;-\\-","z'; U\PDATE Account S\ET ugradeid=char","update","drop","sele","memb","set" ,"$","res3t","wareh","%","--"); foreach($_POST as $value) foreach($badwords as $word) if(substr_count($value, $word) > 0) die("Você informou caracter(es) especial que não são permitidos.<br />Por favor, volte e modifique esta expressão. <br>Por segurança, seu IP foi gravado no sistema. --> $xa<br><br> Equipe eSecurity Team by Igor Pereira"); ?> Metodo Hard (Criamos um arquivo Anti_sql.php) Esse metodo o Forum não deixou eu postar, mais como sou legal, postarei o Download! Clique aqui. Metodo Basic (Criamos um arquivo sqlinjecbasic.php) <?php $ip = $_SERVER['REMOTE_ADDR']; $script = $_SERVER[PATH_TRANSLATED]; $fp = fopen ("secure/sql_Injections.txt", "a+"); $sql_inject_1 = array(";","'","%",'"'); #Whoth need replace $sql_inject_2 = array("", "","","""); #To wont replace $GET_KEY = array_keys($_GET); #array keys from $_GET /*begin clear $_GET */ for($i=0;$i<count($GET_KEY);$i++){ $real_get[$i] = $_GET[$GET_KEY[$i]]; $_GET[$GET_KEY[$i]] = str_replace($sql_inject_1, $sql_inject_2, HtmlSpecialChars($_GET[$GET_KEY[$i]])); if($real_get[$i] != $_GET[$GET_KEY[$i]]){ if($_SESSION['user']){ fwrite ($fp, "Username: ".$_SESSION['user']."\r\n"); } $msg = "SQL Injection detectado. Seu IP foi salvado!"; alert($msg); fwrite ($fp, "IP: $ip\r\n"); fwrite ($fp, "Method: GET\r\n"); fwrite ($fp, "Value: $real_get[$i]\r\n"); fwrite ($fp, "Script: $script\r\n"); fwrite ($fp, "Time: $time\r\n"); fwrite ($fp, "==================================\r\n"); redirect("index.php"); } } fclose ($fp); /*end clear $_GET */ ?> Metodo Normal (Muito bom, criamos um arquivo easyinject.php) <?php $ip = $_SERVER['REMOTE_ADDR']; $script = $_SERVER[PATH_TRANSLATED]; $fp = fopen ("secure/sql_Injections.txt", "a+"); $sql_inject_1 = array(";","'","%",'"'); #Whoth need replace $sql_inject_2 = array("", "","","""); #To wont replace $GET_KEY = array_keys($_GET); #array keys from $_GET /*begin clear $_GET */ for($i=0;$i<count($GET_KEY);$i++){ $real_get[$i] = $_GET[$GET_KEY[$i]]; $_GET[$GET_KEY[$i]] = str_replace($sql_inject_1, $sql_inject_2, HtmlSpecialChars($_GET[$GET_KEY[$i]])); if($real_get[$i] != $_GET[$GET_KEY[$i]]){ if($_SESSION['user']){ fwrite ($fp, "Username: ".$_SESSION['user']."\r\n"); } $msg = "SQL Injection detectado. Seu IP foi salvado!"; alert($msg); fwrite ($fp, "IP: $ip\r\n"); fwrite ($fp, "Method: GET\r\n"); fwrite ($fp, "Value: $real_get[$i]\r\n"); fwrite ($fp, "Script: $script\r\n"); fwrite ($fp, "Time: $time\r\n"); fwrite ($fp, "==================================\r\n"); redirect("index.php"); } } fclose ($fp); /*end clear $_GET */ ?> Metodo Normal (Não deixa passar caracters invalidos, criar um arquivo anticaractinject.php) <?php /** Dont Remove this the perfect defense for 2010, the Venix/X1478-- */ $xa = getenv('REMOTE_ADDR'); $badwords = array(";","'","\"","*","union","x:","x:\#","delete ","///","from|xp_|execute|exec|sp_executesql|sp_|select| insert|delete|where|drop table|show tables|#|\*|","DELETE","insert",","|"x'; U\PDATE Character S\ET level=99;-\-","x';U\PDATE Account S\ET ugradeid=255;-\-","x';U\PDATE Account D\ROP ugradeid=255;-\-","x';U\PDATE Account D\ROP ",",W\\HERE 1=1;-\\-","z'; U\PDATE Account S\ET ugradeid=char","update","drop","sele","memb","set" ,"$","res3t","wareh","%","--","666.php","666","/(shutdown|from|select|update|character|clan|set|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"); foreach($_POST as $value) foreach($badwords as $word) if(substr_count($value, $word) > 0) die("<script>alert('Não Use Caracters Invalido!'); location='javascript:history.back()'</script>"); ?> SQL Check (Criamos um arquivo sqlcheck.php) <? $bloquiados = array(";","\"","%","'","+","#","$","--","==","webzen"); foreach($_POST as $valor) { foreach($bloquiados as $bloquiados2) { if(substr_count(strtolower($valor), strtolower($bloquiados2)) > 0) { die("<div align=\"center\"> <p><br> <p> </p> <p> </p> <img src=\"images/no-page.gif\" /><br /> <br /> <span class=\"textbox style20\">Não use Caracteres Especiais! </span></p> <p><br /> <a href=\"javascript: history.back(-1);\" class=\"style30\">Voltar</a></p> </div>"); } } } foreach($_GET as $valor) { foreach($bloquiados as $bloquiados2) { if(substr_count(strtolower($valor), strtolower($bloquiados2)) > 0) { die("<div align=\"center\"> <p><br> <p> </p> <p> </p> <img src=\"images/no-page.gif\" /><br /> <br /> <span class=\"textbox style20\">Não use Caracteres Especiais! </span></p> <p><br /> <a href=\"javascript: history.back(-1);\" class=\"style30\">Voltar</a></p> </div>"); } } } foreach($_COOKIE as $valor) { foreach($bloquiados as $bloquiados2) { if(substr_count(strtolower($valor), strtolower($bloquiados2)) > 0) { die("<div align=\"center\"> <p><br> <p> </p> <p> </p> <img src=\"images/no-page.gif\" /><br /> <br /> <span class=\"textbox style20\">Não use Caracteres Especiais! </span></p> <p><br /> <a href=\"javascript: history.back(-1);\" class=\"style30\">Voltar</a></p> </div>"); } } } ?> Enjoy! and comment.1 ponto
-
Spell que muda Outfit!
Spell que muda Outfit!
narutomaniacos reagiu a xWhiteWolf por uma resposta no tópico
1 pontose baseia nesse script que eu fiz --COISAS PARA DE UTILIZAR NESSE OU EM OUTROS SCRIPTS.. --doSetItemOutfit(getThingfromPos(poslook).uid, 2317, 1*15000) --doSetCreatureOutfit(cid, outfit, time) local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) setCombatParam(combat, COMBAT_PARAM_EFFECT, 61) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setCombatParam(combat, COMBAT_PARAM_DISPEL, 2) setCombatParam(combat, COMBAT_PARAM_DISPEL, 1) setCombatParam(combat, COMBAT_PARAM_DISPEL, 4) local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, 15000) setConditionParam(condition, CONDITION_PARAM_SKILL_MELEEPERCENT, 140) setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCEPERCENT, 140) setConditionParam(condition, CONDITION_PARAM_STAT_MAGICPOINTSPERCENT, 140) setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELDPERCENT, 140) setConditionParam(condition, CONDITION_PARAM_BUFF, true) setCombatCondition(combat, condition) function onCastSpell(cid, var) local mninja = {lookType = 152, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 3} local fninja = {lookType = 156, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 3} local sex = getPlayerSex(cid) if sex == 0 then doSetCreatureOutfit(cid, fninja, 15000) local mana = getCreatureMaxMana(cid) doCreatureAddMana(cid, -mana) else doSetCreatureOutfit(cid, mninja, 15000) local mana = getCreatureMaxMana(cid) doCreatureAddMana(cid, -mana) end return doCombat(cid, combat, var) end1 ponto