Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 01/30/16 em todas áreas
-
Conteúdo: Imagens Mapa não incluso Downloads: Removendo Bugs de itens (como order, fishing, etc) Sistemas feitos para o PDE: Tutoriais feitos para o PDE: Bugs reportados:3 pontos
-
Bom, faz um tempo que eu mostrei um addon system para o meu servidor E Hoje eu adaptei ele para o PDE 3.0 e irei ensinar a por em seu servidor! Só testado em PDE 3.0, não sei se vai funcionar em algum PDA ou outro tipo de servidor. Vá em actions/scripts e crie um arquivo chamado addon.lua. Adicione isso lá: function onUse(cid, item, fromPosition, itemEx, toPosition) local addons = { [ID DO ITEM] = {pokemon= "NOME DO POKEMON" , looktype = LOOKTYPE NORMAL, fly = FLY, SE NÃO TIVER PONHA 0, ride = RIDE, SE NÃO TIVER PONHA 0, surf = SE NÃO TIVER SURF PONHA 0}, } if #getCreatureSummons(cid) > 0 then doPlayerSendCancel(cid, "Please back your pokemon.") return false end local addon = addons[item.itemid].looktype local fly = addons[item.itemid].fly local ride = addons[item.itemid].ride local surf = addons[item.itemid].surf local pb = getPlayerSlotItem(cid, 8).uid local pk = addons[item.itemid].pokemon if getItemAttribute(pb,"poke") ~= pk then doPlayerSendCancel(cid, "Sorry, you can't use this addon on this poke.") return false end if getItemAttribute(pb,"addon") >= 0 then doRemoveItem(item.uid, 1) doPlayerSendTextMessage(cid, 27, "Congratulations! Now your pokemon will use the addon.") doSetItemAttribute(pb,"addon",addon) doSetItemAttribute(pb,"addonfly",fly) doSetItemAttribute(pb,"addonride",ride) doSetItemAttribute(pb,"addonsurf",surf) return true end return true end Em actions.xml adicione: <action itemid="ID;ID;ID" event="script" value="addon.lua"/> Agora em actions/goback.lua antes de: else doPlayerSendCancel(cid, "This pokemon is fainted.") end return true end Adicione: local pk = getCreatureSummons(cid)[1] local pb = getPlayerSlotItem(cid, 8).uid local look = getItemAttribute(pb,"addon") if not look then doSetItemAttribute(pb,"addon",0) end if look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) end Em lib/order.lua encontre: local pokemon = flys[getPokemonName(getCreatureSummons(cid)[1])] doPlayerSendTextMessage(cid, 27, "Type \"up\" or \"h1\" to fly higher and \"down\" or \"h2\" to fly lower.") doChangeSpeed(cid, -getCreatureSpeed(cid)) local speed = 500 + PlayerSpeed/5 + getSpeed(sid) * 6 * speedRate doChangeSpeed(cid, speed) setPlayerStorageValue(cid, 54844, speed) doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", getCreatureHealth(getCreatureSummons(cid)[1]) / getCreatureMaxHealth(getCreatureSummons(cid)[1])) doRemoveCreature(getCreatureSummons(cid)[1]) setPlayerStorageValue(cid, 17000, 1) Abaixo adicione: local addonfly= getPlayerSlotItem(cid, 8).uid local addofly = getItemAttribute(addonfly,"addonfly") if not addofly then doSetItemAttribute(addonfly,"addonfly",0) end if addofly > 0 then doSetCreatureOutfit(cid, {lookType = addofly}, -1) end Continuando em order.lua Encontre: local pokemon = rides[getPokemonName(getCreatureSummons(cid)[1])] doChangeSpeed(cid, -getCreatureSpeed(cid)) local speed = 150 + PlayerSpeed + getSpeed(sid) * 5 * speedRate doChangeSpeed(cid, speed) setPlayerStorageValue(cid, 54844, speed) doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", getCreatureHealth(getCreatureSummons(cid)[1]) / getCreatureMaxHealth(getCreatureSummons(cid)[1])) doRemoveCreature(getCreatureSummons(cid)[1]) setPlayerStorageValue(cid, 17001, 1) Em baixo adicione: local addonride = getPlayerSlotItem(cid, 8).uid local addoride = getItemAttribute(addonride,"addonride") if not addoride then doSetItemAttribute(addonride,"addonride",0) end if addoride > 0 then doSetCreatureOutfit(cid, {lookType = addoride}, -1) en Agora em movements/surf.lua encontre: doSetCreatureOutfit(cid, {lookType = surfs[getPokemonName(getCreatureSummons(cid)[1])].lookType + 351}, -1) doCreatureSay(cid, ""..getPokeName(getCreatureSummons(cid)[1])..", lets surf!", 1) doChangeSpeed(cid, -(getCreatureSpeed(cid))) E troque por: local addonsurf = getPlayerSlotItem(cid, 8).uid local addosurf = getItemAttribute(addonsurf,"addonsurf") if not addosurf then doSetItemAttribute(addonsurf,"addonsurf",0) doSetCreatureOutfit(cid, {lookType = surfs[getPokemonName(getCreatureSummons(cid)[1])].lookType + 351}, -1) end if addosurf > 0 then doSetCreatureOutfit(cid, {lookType = addosurf}, -1) end doCreatureSay(cid, ""..getPokeName(getCreatureSummons(cid)[1])..", lets surf!", 1) doChangeSpeed(cid, -(getCreatureSpeed(cid))) No mesmo arquivo ache: doSummonMonster(cid, pokemon) Logo abaixo adicione: local pk = getCreatureSummons(cid)[1] local balla = getPlayerSlotItem(cid, 8).uid local balladdon = getItemAttribute(balla,"addon") if not balladdon then doSetItemAttribute(balla,"addon",0) end if balladdon > 0 then doSetCreatureOutfit(pk, {lookType = balladdon}, -1) end Por ultimo em actions/order.lua encontre: doPlayerSay(cid, ""..getPokeName(getCreatureSummons(cid)[1])..", let me get down!", 1) doRegainSpeed(cid) --alterado v1.7 doRemoveCondition(cid, CONDITION_OUTFIT) Abaixo adicione: local pkjg = getCreatureSummons(cid)[1] local pkza = getPlayerSlotItem(cid, 8).uid local pkxd = getItemAttribute(pkjg,"addon") if not pkxd then doSetItemAttribute(pkza,"addon",0) elseif pkxd > 0 then doSetCreatureOutfit(pkjg, {lookType = pkxd}, -1) end Vá em creaturescripts/scripts/login.lua Troque tudo por: Créditos: @Ceetros2 pontos
-
Serpent Island (Dragon + Serpent spawn + Medusa)
Subhe reagiu a Administrador por um tópico no fórum
SERPENT ISLAND (Dragons + Serpent spawn + Medusa) Versão: 8.60 Recomendado: 50-200 DOWNLOAD SENHA PARA EXTRAIR: www.xtibia.com IMAGENS:1 ponto -
Hoje vou postar mais um sistema para o PDE Sistema da vez: Pokébolas com maior chance de catch dependendo do tipo do pokemon! Também vou ensinar a adicionar pokébolas Não pensei em um nome melhor, então vou chamar de: Ball System Adicionando novas Pokebolas: Pokébolas com maior chance de catch dependendo do tipo do pokemon! Créditos: @Ceetros (talvez ? ) @zipter98 (tive a ideia no tópico do @@Bluester, para acessar clique aqui)1 ponto
-
BOAAS galera!!! Então, baixei um Gesior algum tempo atrás(não lembro onde), e vi que faltavam coisas interessantes nele, então resolvi tentar adicionar(tudo isso esse ano kkk) e CONSEGUI! Não quero enrolar, então vamos ao que interessa: Bom, algumas imagens: Latest News com Featured Article: Menu editado: Who is online? MOSTRANDO OUTFIT COM COR ATUAL!!!: Characters mostrando OUTFIT(COR ATUAL DO PLAYER), HP, MP, EXP, LEVEL e ITEMS!!!: Top guilds: Guild Wars: Downloads arrumados: Battlefield: Trade OFF: Zombie Event: Bom galera, eu adicionei: - Zombie Event page - Battlefield page - Trade Off - Arrumei a page Downloads - Featured Article - Top Guilds page - Guild Wars page - Modifiquei Who is online? e characters.php(outfit, mp, hp, exp, level) - Advanced Admin Panel - Background diferente - Menus novos - Arrumei o sistema de enviar e-mails no cadastro e lost account(falta apenas configurar) Download: https://github.com/s3kk/Gesior/archive/master.zip Scan: https://www.virustotal.com/pt/file/571b26e823c8b209daaf603313bee8d0a7dcfb962747e0c19f4f47dd42781e42/analysis/1452061171/ Database TOTALMENTE LIMPA E COMPATÍVEL: https://github.com/s3kk/Heromassa/blob/master/schemas/war_cast_mysql(gesior).sql Bugs: Obs.: Na página Downloads, se você possuir client próprio, edite em downloads.php o link para download do mesmo! Compátivel com OTS 8.6 e TFS 0.4. Créditos:1 ponto
-
Carlin revamp
bandos reagiu a Administrador por um tópico no fórum
http://i.imgur.com/Ne9bsl1.png Tudo o que você precisa é de uMapinha! http://i.imgur.com/bRkveZE.png Carlin Revamp http://i.imgur.com/I7SBZod.png http://i.imgur.com/bRkveZE.png • Informações Gerais http://tecnocomp.com.br/wp-content/uploads/2014/06/infraestrutura.pngVersão do Mapa: 10.35 (v1.8) http://tecnocomp.com.br/wp-content/uploads/2014/06/infraestrutura.pngPeso: 444kb http://tecnocomp.com.br/wp-content/uploads/2014/06/infraestrutura.pngTempo de desenvolvimento: 5-6 semanas. http://i.imgur.com/o7126Xp.pngDesenvolvedores: Daniel & Gothehell http://i.imgur.com/bRkveZE.png Imagens http://i.imgur.com/bRkveZE.png http://i.imgur.com/o7126Xp.pngDownload: MediaFire http://i.imgur.com/o7126Xp.pngScan: VirusTotal (0/54) http://i.imgur.com/bRkveZE.png Bugs? Reporte no tópico que arrumaremos1 ponto -
BallonSystem [PXG]
Rodrigovagaus reagiu a kaleudd por um tópico no fórum
Consiste em usar x item em Raichu ou Shiny raichu (Poder adicionar mais caso queira) e ao usar o x item ganhará Habilidade de fly,ja deve ter visto por ai em algum video de pxg. Créditos: Zipter98:Pela criação. Testado em PDA 1.9; Script: data/lib/configuration.lua: Coloque esta tabela: flyItem = { --["pokemon_name"] = {outfit = xxxx (número do Dat Editor - 351), speed = xxx}, ["Raichu"] = {outfit = id_outfit, speed = 600}, } data/lib/order.lua: Abaixo de: local pokemon = flys[getPokemonName(getCreatureSummons(cid)[1])] coloque: if not pokemon then pokemon = flyItem[getPokemonName(getCreatureSummons(cid)[1])].outfit else pokemon = pokemon[1] end abaixo de: local speed = flys[getPokemonName(getCreatureSummons(cid)[1])][2] coloque: if not speed then speed = flyItem[getPokemonName(getCreatureSummons(cid)[1])].speed else speed = speed[2] end Troque: doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) por: doSetCreatureOutfit(cid, {lookType = pokemon + 351}, -1) Depois, em data/creaturescripts/scripts, login.lua: Troque: doSetCreatureOutfit(cid, {lookType = flys[poke][1] + 351}, -1) por: local outfit = flys[poke] if not outfit then outfit = flyItem[poke].outfit else outfit = outfit[1] end doSetCreatureOutfit(cid, {lookType = outfit + 351}, -1) Depois, em data/actions/scripts, order.lua: Troque todos os: isInArray(skills["fly"], getPokemonName(mysum)) por: isInArray(skills["fly"], getPokemonName(mysum)) or getItemAttribute(getPlayerSlotItem(cid, 8).uid, "flyItem") Cuidado para não errar algum caractere. Ainda em data/actions/scripts, crie um arquivo com extensão .lua e coloque o seguinte conteúdo: function onUse(cid, item, fromPosition, itemEx, toPosition) if isCreature(itemEx.uid) then return doPlayerSendCancel(cid, "Use this in pokeballs.") elseif not getItemAttribute(itemEx.uid, "poke") then return doPlayerSendCancel(cid, "Use this in pbs w/ pokemons.") elseif not flyItem[getItemAttribute(itemEx.uid, "poke")] then return doPlayerSendCancel(cid, "You can't use this item on this pokemon.") elseif getItemAttribute(getPlayerSlotItem(cid, 8).uid, "flyItem") then return doPlayerSendCancel(cid, "This pokemon can already fly.") end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Now your pokemon can fly.") doItemSetAttribute(itemEx.uid, "flyItem", true) doRemoveItem(item.uid, 1) return true end Tag do actions: <action itemid="ID_DO_ITEM_que_dara_fly" event="script" value="nome_do_arquivo.lua"/>1 ponto -
[SQL] Tutorial Básico
Administrador reagiu a Caronte por um tópico no fórum
Olá pessoal, hoje tenho um tempo livre para dedicar, e decidi criar um tutorial de SQL, nele vou explicar algumas coisas básicas, e algumas que pesquisei para ter certeza do que estou passando, no final do tutorial vou fornecer fontes, que podem ser usadas como forma de estudo. Antes de começar, vou utilizar algumas formatações para facilitar: Esse tutorial pode ser usado para MySQL também, pois o MySQL como o próprio nome já dá enfase, usa uma interface em SQL - que é uma linguagem, não confunda SQL com SQLite Studio ou MySQL. Primeiramente tenho que explicar o que é: SQL - (Structured Query Language) Linguagem de Consulta Estruturada, é uma linguagem de banco de dados, ou seja, serve para guardar, consultar e editar quase quaisquer dados. No seu arquivo .sql que fica na sua pasta \schemas, contém uma database salva através de vários QUERYS, como eu disse antes, querys são parte da interface do SQL, e com eles, você pode jogar num MySQL que abrirá magicamente, ou simplesmente executará os querys preenchendo sua database. Exemplo de arquivo .SQL: Os arquivos .s3db são do SQLite Studio, essa extensão de arquivo é usada para armazenar a database para o programa em específico. Trecho retirado de: http://www.w3schools.com/sql/sql_syntax.asp Querys - query, pode ser traduzido para: pergunta, questão, dúvida. Eles são usados em tudo dentro da linguagem, tudo que você faz com seus dados na database, é um query que roda no interpretador. Cada tabela contém colunas, e cada coluna, contém data = dados, e o conjunto de dados forma a sua database, através da organização de rows e colunas. Vou explicar melhor na prática: Sintaxe - é todo o conjunto de comandos de uma linguagem. que serve para montar a lógica. Umas das sintaxes do SQL: SELECT - Extrai dados da database UPDATE - Atualiza dados da database DELETE - Deleta dados de uma database INSERT INTO - Insere novos dados dentro da database CREATE DATABASE - Cria uma nova database ALTER DATABASE - Altera uma database CREATE TABLE - Cria uma nova tabela ALTER TABLE - Modifica uma tabela DROP TABLE - Deleta uma tabela CREATE INDEX - Cria um index DROP INDEX - Deleta um index DISTINCT - Usa-se junto com SELECT para distinguir o que selecionar WHERE - Usa para impor condições AND - Usa para somar condições OR - Usa para subtrair condições ...E etc... Acesse este link, é um interpretador de querys, com uma database. No canto direito "You Database:" você pode visualizar os dados, e restaurar, restaure quando você fizer alguma merda (como deletar ou alterar algo sem querer). Lá dentro, escreva isto, e aperte "Run SQL >>" , o interpretador irá rodar/executar o query. SELECT * FROM Customers; Essa expressão acima, seleciona * (todos os dados) da tabela Customers (poderia ser tabela Accounts ou Players), que contém várias rows/fileiras (um total de 91), vamos diminuir utilizando outro comando, para diminuir a quantidade de informação: SELECT * FROM Customers WHERE CustomerID < 4; Ótimo, agora ficará assim: Para explicar o que é o que: Quando usamos um QUERY para selecionar, seguimos o seguinte padrão: SELECT coluna FROM tabela WHERE coluna=1; Ou SELECT ContactName FROM Customers WHERE Address="Obere Str. 57" isso vai selecionar direto "Maria Anders" pois os endereços são únicos... Essa situação pode ser usada no tibia por exemplo, para selecionar o noivo ou noiva no marriage system, já que eles precisam ser colocados no banco de dados. Os storages não são nada mais nada menos do que dados da database, que são chamados e alterados através de querys, por LUA ou C++... Vale lembrar pessoal que para usar um query em LUA, é só usar a função: db.query("SELECT * FROM `accounts`") o query dentro foi somente um exemplo. Fontes: http://www.w3schools.com/sql/ http://www.1keydata.com/pt/sql/ Não usei, mas é uma opção em português. Recomendo muito o w3schools, não só para sql, mas para tudo que tiver lá, eles explicam muito bem. Bom, foi isso pessoal, espero que tenham gostado e que ajude nas suas empreitadas QUALQUER Crítica construtiva ou sugestão pode comentar abaixo. Posso fazer outros tópicos de sql, caso este esteja bom. Suporte no tópico. :smile_positivo:1 ponto -
Author:Printer Como funciona: Instalação: Vá em actions/actions.xml e adicione essa linha: <action actionid="8000" script="tronEventLever.lua" /> Vá em actions/scripts e crie um arquivo chamado ''tronEventLever.lua'' e adicione isso dentro: function onUse(player, item, fromPosition, target, toPosition, isHotkey) if item.itemid == 1945 then if tronEvent:onUseLever(player) == false then return true end end item:transform(item.itemid == 1945 and 1946 or 1945) return true end Agora vá em movements/movements.xml e remova essas linhas: <movevent event="AddItem" itemid="1492" function="onAddField" /> <movevent event="StepIn" itemid="1493" function="onStepInField" /> <movevent event="StepIn" itemid="1500" function="onStepInField" /> <movevent event="AddItem" itemid="1500" function="onAddField" /> <movevent event="StepIn" itemid="1506" function="onStepInField" /> <movevent event="AddItem" itemid="1506" function="onAddField" /> E adicione essas linhas: <movevent event="StepIn" itemid="1492" script="tronEventMovement.lua" /> <movevent event="StepIn" itemid="1500" script="tronEventMovement.lua" /> <movevent event="StepIn" itemid="1506" script="tronEventMovement.lua" /> Vá em movements/scripts e crie um arquivo chamado "tronEventMovement.lua" e adicione isso dentro: function onStepIn(creature, item, position, fromPosition) local player = creature:getPlayer() if player == nil then return false end position:sendMagicEffect(CONST_ME_FIREAREA) tronEvent:onPlayerDeath(player, tonumber(item:getAttribute(ITEM_ATTRIBUTE_TEXT)) or 0) return true end Agora em data/global.lua,adicione essa linha: dofile('data/tronEvent.lua') Create new lua inside data folder and name it: "tronEvent.lua" and paste this: http://pastebin.com/qdjptfYe1 ponto
-
1 ponto
-
Valeu Dani, você é zikka demais RS. Continue ajudando as pessoas e sendo humilde que você era longe.1 ponto
-
Obrigado pelo elogio e link atualizado no tópico!1 ponto
-
@, tranquilo então. ^^ sahusahuas #EDIT: Editei meu post anterior com o script para acrescentar a nova versão do script, sem bug algum.1 ponto
-
Servidor 10.90 | Windows 32/64 Bits | Versão Final
Sirarcken reagiu a Marco Oliveira por um tópico no fórum
Haha, eu quem agradeço... deixe um rep pra ajudar1 ponto -
1 ponto
-
O meu funciona perfeitamente também até mais do que eu esperava. Rsrs1 ponto
-
1 ponto
-
Deixa assim: [LUA]--[[ day_of_week: 0 = Sunday, 1 = Monday ... 6 = Saturday hour: value between 0 and 23 minute: value between 0 and 59 storage: unique, not used global storage value --]] local autoStartsTable = { {["day_of_week"] = 6, ["hour"] = 19, ["minute"] = 30, ["storage"] = 7867}, {["day_of_week"] = 5, ["hour"] = 19, ["minute"] = 30, ["storage"] = 7869}, {["day_of_week"] = 4, ["hour"] = 19, ["minute"] = 30, ["storage"] = 7870}, {["day_of_week"] = 3, ["hour"] = 19, ["minute"] = 30, ["storage"] = 7871}, {["day_of_week"] = 2, ["hour"] = 19, ["minute"] = 30, ["storage"] = 7872}, {["day_of_week"] = 1, ["hour"] = 19, ["minute"] = 30, ["storage"] = 7873}, {["day_of_week"] = 0, ["hour"] = 21, ["minute"] = 0, ["storage"] = 7868} } function shouldExecuteEvent(configTable) for _, config in pairs(configTable) do if(tonumber(os.date("%d")) ~= getStorage(config.storage) and tonumber(os.date("%w")) == config.day_of_week) then if(tonumber(os.date("%H")) == config.hour and tonumber(os.date("%M")) == config.minute) then doSetStorage(config.storage, tonumber(os.date("%d"))) return true end end end return false end function onThink(interval, lastExecution, thinkInterval) if(shouldExecuteEvent(autoStartsTable)) then if(getStorage(ZE_STATUS) ~= 1 and getStorage(ZE_STATUS) ~= 2) then removeZombiesEventBlockEnterPosition() doSetStorage(ZE_STATUS, 1) doBroadcastMessage("Zombie Arena Event teleport will be open for 2 minutes. We are waiting for " .. getZombiesEventPlayersLimit() - #getZombiesEventPlayers() .. " players to start.") addEvent(startArenaEvent, 120 * 1000) end end return true end function startArenaEvent() if(getStorage(ZE_STATUS) == 1) then addZombiesEventBlockEnterPosition() doSetStorage(ZE_STATUS, 2) doBroadcastMessage("Zombie Arena Event started.") end end Não esquece que vc pode alterar a hora de inicioa pra cada dia. Basta alterar a parte referente a hour e minute referente aql determinado dia.1 ponto
-
TalkActions e Websites
Thillys Alves reagiu a Danihcv por uma questão
Por distração, eu acabei me esquecendo que vc queria 3 talkactions. Por isso, aqui está o script final com as 3 talkactions: *lembrando que ñ tenho como testar, e estou me baseando no q me foi dito sobre o tfs 1.2: local pointObj = 2160 --id do item "points" function getAccountPoints(player) local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..player:getGuid()..'') if(res:getID() == -1) then return false end local ret = res:getDataInt("premium_points") res:free() return tonumber(ret) end function onSay(player, words, param) if (words == '!sacar') then if param ~= "" then if tonumber(param) ~= nil then if 0 >= tonumber(param) then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "O valor precisa ser acima de zero.") elseif tonumber(param) <= player:getAccountPoints() then player:addItem(pointObj, param) db.executeQuery('UPDATE `accounts` SET `premium_points`='..player:getAccountPoints() - param..' WHERE id='.. player:getGuid()..'') newPoints = player:getAccountPoints() player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Você ainda possui '..newPoints..' premium points em sua conta.') else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem tantos premium points assim.") end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "O valor precisa ser um numero.") end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa especificar um valor.") end elseif (words == '!saldo') then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Seu saldo no shopping atual é de '..player:getAccountPoints()..' Premium points.') elseif (words == '!depositar') then if param ~= "" then if tonumber(param) ~= nil then if 0 >= tonumber(param) then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "O valor precisa ser acima de zero.") elseif tonumber(param) <= player:getItemCount(pointObj) then player:removeItem(pointObj, tonumber(param)) db.executeQuery('UPDATE `accounts` SET `premium_points`='..player:getAccountPoints() + tonumber(param)..' WHERE id='.. player:getGuid()..'') newPoints = player:getAccountPoints() player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Você acabou de depositar '..param..' premium points no shopping. Seu saldo agora é de '..newPoints..' premium points.') else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem tantos premium points assim.") end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "O valor precisa ser um numero.") end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa especificar um valor.") end end return true end Basta usar uma só tag em talkactions.xml apenas se atente a isso na tag:1 ponto -
Porta vocation
Vasto Lord X reagiu a Danihcv por uma questão
Amigo, vc tá usando o script antigo, que estava com erro. O certo a usar é esse ultimo que eu postei: function onStepIn(cid, item, position, fromPosition) local tileConfig = { kickPos = fromPosition, kickEffect = CONST_ME_POFF, kickMsg = "Only the worthy may pass.", enterMsg = "Welcome!", enterEffect = CONST_ME_MAGIC_BLUE, } local vocations = {3,4,7} if isInArray(vocations, getPlayerVocation(cid)) then doPlayerSendTextMessage(cid, 25, tileConfig.enterMsg) doSendMagicEffect(position, tileConfig.enterEffect) return true else doTeleportThing(cid, tileConfig.kickPos) doSendMagicEffect(tileConfig.kickPos, tileConfig.kickEffect) doPlayerSendCancel(cid, tileConfig.kickMsg) return true end end1 ponto -
Porta vocation
Vasto Lord X reagiu a Danihcv por uma questão
@@Vasto Lord X, tem sim. Basta ir acrescentando nessa parte: Segue a nova versão do script, sem erro: function onStepIn(cid, item, position, fromPosition) local tileConfig = { kickPos = fromPosition, kickEffect = CONST_ME_POFF, kickMsg = "Only the worthy may pass.", enterMsg = "Welcome!", enterEffect = CONST_ME_MAGIC_BLUE, } local vocations = {3,4,7} if isInArray(vocations, getPlayerVocation(cid)) then doPlayerSendTextMessage(cid, 25, tileConfig.enterMsg) doSendMagicEffect(position, tileConfig.enterEffect) return true else doTeleportThing(cid, tileConfig.kickPos) doSendMagicEffect(tileConfig.kickPos, tileConfig.kickEffect) doPlayerSendCancel(cid, tileConfig.kickMsg) return true end end1 ponto -
1 ponto
-
1 ponto
-
Servidor 10.90 | Windows 32/64 Bits | Versão Final
Sirarcken reagiu a Marco Oliveira por um tópico no fórum
Os arquivos onde está o erro não é do servidor que disponibilizei...1 ponto -
1 ponto
-
Addon System [PDE]
zNegativeX reagiu a Refe por um tópico no fórum
Troca: local addonfly = getPlayerSlotItem(cid, 8).uid local addofly = getItemAttribute(addonfly,"fly") if not addofly then doSetItemAttribute(addonfly,"addon",0) end if addofly > 0 then doSetCreatureOutfit(cid, {lookType = addofly}, -1) end Por: local addonfly = getPlayerSlotItem(cid, 8).uid local addofly = getItemAttribute(addonfly,"addonfly") if not addofly then doSetItemAttribute(addonfly,"addonfly",0) end if addofly > 0 then doSetCreatureOutfit(cid, {lookType = addofly}, -1) end1 ponto -
Eu estou postando vários sistemas e tutoriais para o PDE. @Topic Adicionado: Lista de tutorias para o PDE1 ponto
-
Addon System [PDE]
zNegativeX reagiu a Refe por um tópico no fórum
@@zNegativeX lib/order: Actions/order: Pois é, é bem fácil adaptar.1 ponto -
Nick System [PDE]
jeanflamengo reagiu a Refe por um tópico no fórum
Olá, hoje eu vim postar mais um sistema para o PDE! Sistema da vez: Nick System Vá em data/npc/scripts e crie um arquivo chamado namer.lua Coloque isso dentro: Agora em data/npc crie um arquivo chamado nick.xml e cole isso: <?xml version="1.0" encoding="UTF-8"?> <npc name="John" script="nick.lua" walkinterval="350000" floorchange="0" speed="0" lookdir="2"> <health now="150" max="150"/> <look type="614" head="115" body="122" legs="0" feet="76"/> <parameters> </parameters> </npc> Agora em actions/scripts/goback.lua Antes de: else doPlayerSendCancel(cid, "This pokemon is fainted.") end return true end Coloque: local nick = getItemAttribute(item.uid, "nick") if not nick then local name = getItemAttribute(item.uid, "poke") local level = getItemAttribute(item.uid, "level") doCreatureSetNick(getCreatureSummons(cid)[1], ""..name.." ["..level.."]") else local level = getItemAttribute(item.uid, "level") doCreatureSetNick(getCreatureSummons(cid)[1], ""..nick.." ["..level.."]") end Caso queira sem o level no nome coloque: local nick = getItemAttribute(item.uid, "nick") if not nick then local name = getItemAttribute(item.uid, "poke") doCreatureSetNick(getCreatureSummons(cid)[1], name) else local level = getItemAttribute(item.uid, "level") doCreatureSetNick(getCreatureSummons(cid)[1], nick) end1 ponto -
(AoM) Adivinhe o Mapa #07
XScupion reagiu a SamueLGuedes por um tópico no fórum
kkk galera passou perto mesmo kk, parabéns ao vencedor xD1 ponto -
Servidor 10.90 | Windows 32/64 Bits | Versão Final
Sirarcken reagiu a Marco Oliveira por um tópico no fórum
Reporte os erros para mim, que já corrijo nas atualizações....1 ponto -
Servidor 10.90 | Windows 32/64 Bits | Versão Final
Sirarcken reagiu a Marco Oliveira por um tópico no fórum
Obvio que sim, mas não pretendo disponibilizar ela ainda. tem muita coisa pra arrumar e se eu disponibilizar agora vou ter que fazer muitas modificações no tópico. então aguarde um pouco mais.1 ponto -
Porta vocation
Vasto Lord X reagiu a Danihcv por uma questão
Tranquilo... Esse script aqui eu já testei e tá 100%. Falta apenas funcionar aí pra vc... sauhsahuas: function onStepIn(cid, item, position, fromPosition) local tileConfig = { kickPos = fromPosition, kickEffect = CONST_ME_POFF, kickMsg = "Only the worthy may pass.", enterMsg = "Welcome!", enterEffect = CONST_ME_MAGIC_BLUE, } local vocations = {3,4,7} if isInArray(vocations, getPlayerVocation(cid)) then doPlayerSendTextMessage(cid, 25, tileConfig.enterMsg) doSendMagicEffect(position, tileConfig.enterEffect) return true else doTeleportThing(cid, tileConfig.kickPos) doSendMagicEffect(tileConfig.kickPos, tileConfig.kickEffect) doPlayerSendCancel(cid, tileConfig.kickMsg) return true end end ~~agradecimentos ao Matheus Duarte1 ponto -
Pokemon Dash Evolution ~> Projeto Comunitário <~
jeanflamengo reagiu a Refe por um tópico no fórum
@Atualizado: Adicionado Sistemas feitos para o PDE!1 ponto -
Porta vocation
Vasto Lord X reagiu a Danihcv por uma questão
@@brendoonh, o erro está reportando que não conseguiu encontrar o arquivo. Pf, garanta de que a instalação dos scripts foi feita de forma correta. *de acordo com o erro, vc precisa btoar o nome do script como: portapala.lua1 ponto -
se vc leu o que eu escrevi acima vc ia ver que não é so um save. qdo server cai todas storages das quests voltam ao 'original', por exemplo da anihi, que so pode ser feita 1x ao dia1 ponto
-
Instanciando Mapas v1.0
Night Wolf reagiu a Skulls por um tópico no fórum
Fala galera, tudo bem? Semana passada abri uma dúvida perguntando se alguém conhecia algum jeito de players compartilharem o mesmo espaço no mapa sem interagirem entre si, como se fossem duas dimensões separadas. Ninguém soube me dar uma solução que fizesse exatamente isso, porém, o Danihcv me deu uma luz sugerindo que eu fizesse algo próximo de um instanciador de mapa. Ou seja, uma forma de clonar automaticamente um pedaço do mapa desejado sem ter que criar mil vezes no map editor. Ainda estou trabalhando na automação do mesmo - pretendo fazer um sistema, sem ser talkaction, que sempre que for necessário ele instancia uma novo espaço para aquele mesmo mapa. Esta é uma primeira versão, feita em talkaction pois achei melhor de trabalhar num primeiro momento e testar todas as funções que eu queria adicionar, ela faz basicamente cópia de uma área do mapa. Pro projeto que eu pensei para esse sistema é suficiente que ele suporte somente mapas do mesmo tamanho e, portanto, foquei em atender esse requisito. Ainda sim, é possível trabalhar com mapas de tamanhos diferentes, desde que eles fiquem em linhas diferentes. Vamos lá Primeiramente, eu fiz um banco de funções que foram utilizadas ou serão úteis mais para frente. Em lib, crie um arquivo chamado cloneMap.lua e adicione o código abaixo: As funções estão todas funcionando, porém algumas não foram utilizadas nessa versão, ficam de bônus pra vocês. Depois disso, vá em talkactions.xml adicione a tag: <talkaction words="!clonemap" event="script" value="cmap.lua"/> Feito isso, crie dentro de scripts um arquivo chamado cmap.lua e adicione o código abaixo: Por último, vá em globalevents/scripts e abra o arquivo start.lua. Dentro da função onStartup(), antes do return true, adicione as 3 linhas a seguir: setGlobalStorageValue(5546, -1) setGlobalStorageValue(5547, -1) setGlobalStorageValue(5548, -1) Pronto. Agora algumas configurações que você deve fazer de acordo com seu mapa: emptySpaceBeginPos - É a posição no mapa onde começa a área vazia que você determinou para a criação das instâncias (Canto superior esquerdo da área, ela cresce para direita até o fim do mapa e depois para baixo e se encerra quando o mapa acaba). Storages - Storages globais onde serão armazenadas os próximos valores X, Y e Z a serem utilizados. (A progressão no eixo z ainda não foi implementada, mas a lógica é a mesma). safe_dist - É a distância entre os mapas, você pode variar de acordo com a utilização que vai dar ao mapa. Feito isso, está pronto para utilizar o Instanciador de Mapas V1.0. Como funciona: !clonemap CenterX CenterY CenterZ Side Floors Centers (X, Y e Z) são as coordenadas centrais do seu mapa (e Z é o floor mais baixo do mapa, caso ele seja multi floor, isto é o floor de valor mais alto - ex, se o seu mapa vai de z=7 até z =10, use CenterZ = 10). Side é a distância entre o centro e uma das bordas (Caso o mapa não seja quadrado, basta usar a maior distância. É possível implementar usando a mesma lógica um SideX e SideY, mas eu não tive tempo de fazê-lo). Floors é o número de andares que tem o seu mapa, se ele ocupa só um andar floor = 1, 2 floor = 2 e assim por diante. Bom é isso, espero que gostem e que seja útil para vocês. Agora vou empenhar no sistema completo, assim que terminar eu posto a versão 2.0 do instanciador com muito mais recursos. Algumas Imagens OBSERVAÇÃO IMPORTANTE Quando você utilizar o comando ingame, esteja longe da área onde o mapa será criado, senão o seu cliente irá debugar. Nada acontece, na verdade, acho que é algum problema do cliente, assim que você abre o tibia novamente tudo se estabiliza, mas é chato ficar re-abrindo então evite isso.\ Grande abraço. ps: Lembrando, novamente dos Créditos ao Danihcv pela ideia, sem o brainstorm por ele promovido no meu tópico isso não seria possível1 ponto -
HeroRPG 0.1 - Um Heroserv RPG! (8.60) Servidor feito pelo Subwat e pelo JonataS (HF) Fala galera estou aqui para apresentar o novo HeroRPG, o Subwat trabalhou muito tempo neste servidor,arrumei alguns bugs,editei o templo e resolvi compartilhar com vocês. Este servidor possui é bem divertido, apesar de um pouco exagerado ele possui todas as vocações balanceadas, além de rates proporcionais. Tá esperando o que? Confira logo! Cidades: ├ Sphere ├ Arumha ├ Jungle City ├ Ice Island └ Ilha Perdida Imagem #1: Templo - Sphere City Imagem #2: Glacial Area Imagem #3: Teleports do Templo Imagem #4: VIP 2 Quest Imagem #5: Campinho de Futebol O Que Contêm no Servidor: ├ Vip 2 ├ City Sphere Reformulada. ├ Novos Teleports e Quests ├ Novos NPC'S └ TFS 0.41 Já Compilado e Estável. Lista Das Principais Quests (Todas Funcionando 100%): ├ The Annihilator Quest ├ Demon Helmet Quest ├ The Pits of Inferno Quest ├ Lord Vapire └ Vip 2 Quest Update 0.1: - Crashes no Console Removidos - Agora em Sqlite sem Bugs - Novo Templo Senha do God: god/god Como Abrir o Mapa Caso dê Erro: Vai no RME Aperta em File>New>Import Map e Selecione o Mapa do Baiak Extreme. Download & Scan Download Download 2 SCAN Os vírus acusados estão no Distro, o Servidor está Limpo!1 ponto