Ir para conteúdo

Underewar

Diretor de Projetos
  • Registro em

  • Última visita

Tudo que Underewar postou

  1. Olá a todos estou recrutando membros para criarmos um global Completo e liberar no github assim que pronto. Para aqueles interessados, estamos criando um styleSheet para conversões de scripts para o novo padrão, participe da criação entrando para a organização. Excalidraw The Road So Far Aproveitando para informar a fork do my-aac Atualizado com bootstrap 5 ainda não está finalizado caso alguém queira participar, passar o nick do github.
  2. Bom basicamente são multiplicadores que as tag xml estão passando para a src, para saber literalmente o que cada um faz teria que dar uma verificada. No entanto cada um faz oque fala. O wildLevel é a força do pokemon quando não pertence a um jogador. Tu que ajudou fazer ajuda ai @Rookie KKKK
  3. ['Vileplume'] = {offense = 1, defense = 6.5, specialattack = 6.5, life = 1100, vitality = 7, agility = 200, exp = 1, level = 75, wildLvl = 45, type = 'grass', type2 = 'poison'}, ['Shiny Vileplume'] = {offense = 2.3, defense = 12.5, specialattack = 11.5, life = 4265, vitality = 8.1, agility = 230, exp = 1, level = 135, wildLvl = 90, type = 'grass', type2 = 'poison'}, é aqui mesmo você pode balancear o seu pokemon se eu ajudei marque como melhor resposta você me ajuda ?
  4. Você tem o link do Pstorm ai? Eu baixo aqui e vejo onde é ⛩️
  5. Procure no arquivo configuration.lua algo relacionado ao pokemon status attack, se não me engano esta base usa o configuration.lua como default de suas configs. Da uma olhada no Level_Table, e no pokemon status.
  6. Manda-me um print da sua pasta data/lib.
  7. Qual servidor você baixou ? tem o link ? a src seria o padrão de atualização por exeplo : PDA, PokeStorm... etc
  8. Para a mensagem aparecer no local chat. Rafhael-Oliveira#7549 me add discord te passo umas dicas! procure por data/lib/player.lua e adicione. function Game.broadcast(message, sender) local players = Game.getPlayers() ? função braodcast capturando jogadores online for _, cid in ipairs(players) do ? array de jogadores local msg = NetworkMessage() ? Verificando jogadores online msg:addByte(0xAA) ? -- interação Hexadecimal com Client 12 msg:addU32(1) -- ??????? Same HERE msg:addString(sender) ? Este evento ja existia msg:addU16(0x00) ? Nova interação com Client12 msg:addByte(TALKTYPE_BROADCAST) ? Ja existia msg:addString(message) ? Ja existia msg:sendToPlayer(Player(cid)) ? Ja existia end end
  9. Aparentemente você digitou uma linha com aspas a mais pode compartilhar seu códigos?
  10. A claro você esta usando a base da OTX ? Então vamos la vou te falar aqui oque é isso O revScript é um sistema que agora não tem mais necessidade do XML, podemos registrar o evento no proprio arquivo LUA (Graças adeus), pelomenos eu acho inutil o XML e é esse o intuito do revScript, algumas principais caracteristicas de criar scripts com revscritp é a facilidade de manipular events em um unico script, ou até compartilhar resultados de funções com outros arquivos revScript, fica aqui um exmeplo de como criar um BoradCast MSG no revScript sem a necessidad de um XML! Apenas crie um arquivo.lua e adicione! local autoBroadcast = GlobalEvent("AutoBroadcast") -- Criando o Evento para Registro como se fosse no XML function autoBroadcast.onThink(interval, lastExecution) local messages = { "[DONATES]: write your message here", "[COMMANDS]: write your message here " } Game.broadcastMessage(messages[math.random(#messages)], MESSAGE_EVENT_ADVANCE) return true end autoBroadcast:interval(300000) --5 minutes aqui seria o intervalo que adicionariamos no XML autoBroadcast:register() -- Aqui seria o registro que fariamos no XML Espero que tenha conseguido te dar uma luz! Bônus : Existem maneiras de modificar o método desta MSG no player.lua em /data/lib você consegue desenvolver novas funcionalidades para o evento de broadCast function Game.broadcast(message, sender) local players = Game.getPlayers() ? função braodcast capturando jogadores online for _, cid in ipairs(players) do ? array de jogadores local msg = NetworkMessage() ? Verificando jogadores online msg:addByte(0xAA) ? -- interação Hexadecimal com Client 12 msg:addU32(1) -- ??????? Same HERE msg:addString(sender) ? Este evento ja existia msg:addU16(0x00) ? Nova interação com Client12 msg:addByte(TALKTYPE_BROADCAST) ? Ja existia msg:addString(message) ? Ja existia msg:sendToPlayer(Player(cid)) ? Ja existia end end
  11. Olá Rafa estranho, se você se baseia na ultima versão da TFS o arquivo existe sim ? https://github.com/otland/forgottenserver/blob/master/data/globalevents/globalevents.xml Qual seria sua base?
  12. Fla clan! atualizei o topico! vamos la? Oque eu adicionei no topico? veja aqui
  13. Underewar postou uma resposta no tópico em Portal
    Fala Tryller, po como esquecer essa base? as primeiras versoes do alissow é com crystal server
  14. Hoje tive tempo para sentar aqui vamos la! Primeiro em creaturescripts/scripts crie um arquivo: blessitem.lua function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) if getPlayerItemCount(cid,item_id,amount) then local p = getPlayerPosition(cid) doSendAnimatedText(p, "Protected", COLOR_ORANGE) doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 50) end return true end Em creaturescript.xml <event type="preparedeath" name="blessitem" event="script" value="blessitem.lua"/>
  15. Foi mal confundi as linguagens lua nao usa pipe function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) if (isPlayer(cid) == TRUE) then if (getPlayerItemCount(cid,item_id,amount) and not(getPlayerBlessing(cid, bless[1,2,3,4,5]) then doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 50) end end return true end
  16. function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) if (isPlayer(cid) == TRUE) then if (getPlayerItemCount(cid,item_id,amount) || not(getPlayerBlessing(cid, bless[1,2,3,4,5]) then doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 50) end end return true end
  17. local item_id,amount = 7721,1 function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) if (isPlayer(cid) == TRUE) then if (getPlayerItemCount(cid,item_id,amount) then if not(getPlayerBlessing(cid, bless[i]) then for i = 1, table.maxn(bless) do doPlayerAddBlessing(cid, bless[i]) end end end end return TRUE end
  18. @Morg vlw agora entendi haha
  19. Iniciantes ?Quer ser bom pratique!Quer ser muito bom? pratique muito!, use as areas sem exemplos para treinar e aprenda neste topico a criar funções! Como eu sei oque é uma função? sempre que você encontrar algo assim "blablabla()" isso é uma função assim como "() =>" isso é uma função, assim como "function ()" isso é uma função, dentro de uma função podemos passar instruções então abrimos chaves {} aqui no lua é o then. Beleza agora que você sabe oque é uma função continue! Sobre Lista com quase todas as funções disponíveis. você sera capaz de : Ler pequenas instruções para funções. Usar as instruções. Usar um retorno de uma função Introdução a ["get" function] A baixo existe uma lista com a função e a sua explicação. Essas funções devem sempre retornar a string ou o valor pedido. getPlayerFood(cid) Essa função vai verificar a quantos segundos o players esta com a propriedade em um food. Ajude esse tópico a ficar 100% com um exemplo e treine suas habilidades. getCreatureHealth(cid) Essa função vai checkar a quantidade da vida da criatura. Ajude esse tópico a ficar 100% com um exemplo e treine suas habilidades. getPlayerMaxMana(cid) Essa função vai retornar a quantidade maxima de mana Ajude esse tópico a ficar 100% com um exemplo e treine suas habilidades. getPlayerLevel(cid) Essa função vai pegar o level atual de jogador Ajude esse tópico a ficar 100% com um exemplo e treine suas habilidades. getPlayerMagLevel(cid) Essa função vai pegar o magic level atual de um jogador Ajude esse tópico a ficar 100% com um exemplo e treine suas habilidades. getPlayerName(cid) Essa função pega o nome de um jogador Ajude esse tópico a ficar 100% com um exemplo e treine suas habilidades. getPlayerAccess(cid) Essa função verifica o acesso de um jogador Ajude esse tópico aoficar 100% com um exemplo e treine suas habilidades. getPlayerPosition(cid) Essa função verifica a posição de um player Ela vai retornar um Array (Se você não sabe oque é um Array use o SLAD Search Like a Dev e abra o google) Exemplo de retorno {x = 127, y = 7, z = 9, stackpos = 1} {x = 396, y = 582, z = 13, stackpos = 2} quando o player estiver em cima de um item stackpos = 2 Exemplo de uso local playerPos = getPlayerPosition(cid)--Armazenando a função em uma variavel com a posição do jogador doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your current position is [X: "..playerPos.x.." | Y: "..playerPos.y.." | Z: "..playerPos.z.."].") getPlayerSkill(cid, skillid) Essa função vai verificar a skill de um jogador Sendo esses os ids das skills que podem ser usados: 0 = Fist Fighting 1 = Club Fighting 2 = Sword Fighting 3 = Axe Fighting 4 = Distance Fighting 5 = Shielding 6 = Fishing Exemplo de uso if getPlayerSkill(cid, 2) >= 20 then -- Verificando se a skill Sword é maior que 20 doPlayerAddItem(cid, 2376, 1) -- Se sim adicionando uma Sword como recompensa else --Se não você ainda não tem skill 20 doPlayerSendCancel(cid, "Sorry, your sword skill is not high enough.") end getPlayerTown(cid) Essa função vai verificar a cidade atual de um jogador Exemplo de uso local playerPos = getCreaturePosition(cid) -- Ja aprendemos a utilizar se não se lembra para pegarmos a posição do jogador ali em cima if getPlayerTown(cid) == 1 then -- Verificamos se a cidade atual do jogador é igual a 1 -- Se sim Verificando na posição do jogador uma string , e um numero que representa a textColor ou o seu nome de efeito TEXTCOLOR_GOLD doSendAnimatedText(playerPos, 'I am leaving in town with id: 1 (Main City)! :)', TEXTCOLOR_GOLD) elseif getPlayerTown(cid) == 2 then -- Verificando se a cidade atual é igual a 2 doSendAnimatedText(playerPos, 'I am leaving in town with id: 2 (Desert City)! :)', TEXTCOLOR_GOLD) end getPlayerVocation(cid) Essa função retorna o id da vocação Exemplos de uso local playerVoc = getPlayerVocation(cid) -- colocando a função em uma variavel if playerVoc == 1 or playerVoc == 5 then --Se a vocação é Sorcerer ou Master Sorcerer then weapon = Wand weapon == 2190 --Wand of vortex elseif playerVoc == 2 or playerVoc == 6 then --Se a vocação é == Druid ou Elder Druid then weapon = Rod weapon == 2182 --Snakebite Rod elseif playerVoc == 3 or playerVoc == 7 then --Se a vocação é == Paladin ou Royal Paladin then weapon = Spear weapon == 2389 --Spear elseif playerVoc == 4 or playerVoc == 8 then --Se a vocação é == Knight ou Elite Knight then weapon = Sword weapon == 2412 --Katana end doPlayerAddItem(cid, weapon, 1) -- usando a storage do weapon para retornar a arma a ser adicionada getPlayerItemCount(cid,itemid) Essa função vai verificar quantos item == itemid o jogador possui no momento Exemplos de uso local crystalCoins = getPlayerItemCount(cid, 2160) -- Declarada a variavel crystalCoins que vai verificar se o jogador possui o id 2160 local platinumCoins = getPlayerItemCount(cid, 2152) -- Declarada a variavel pplatinumCoins que vai verificar se o jogador possui o id 2152 local goldCoins = getPlayerItemCount(cid, 2148) -- O mesmo para o gold coin -- agora criamos uma variavel money que é igual rystalCoins * 10000 + platinumCoins * 100 + goldCoins money = crystalCoins * 10000 + platinumCoins * 100 + goldCoins -- então imprimimos para o jogador usando cid, msg doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your money: " ..money.. "gp") getPlayerFreeCap(cid) -- Essa função verifica quanto de cap disponivel o jogador ainda tem Exemplo de uso local playerCap = getPlayerFreeCap(cid) -- armazenando a função que verifica o cap na variavel playerCap local item = 2393 --Giant Sword local itemweight = getItemWeight(item, 1) -- nova função usada para pegar o peso do item if playerCap >= itemweight then -- verificando se o cap é maior que o pseo do item -- caso seja adiciona o item e manda uma mensagem doPlayerSendTextMessage(cid,22,'You have found a giant sword.') doPlayerAddItem(cid,item,1) else -- senão não possui cap doPlayerSendTextMessage(cid, 22, 'You have found a ' .. item .. 'weighing ' ..itemweight.. ' oz it\'s too heavy.') getPlayerLight(cid) Retorna a luz atual de um jogador Exemplo 215 - Depois de usar a spell "utevo gran lux" getPlayerSlotItem(cid, slot) Essa função verifica qual item o jogador esta equipado os slots que podem ser verificados são 1 = helmet 2 = necklace slot 3 = backpack, bag 4 = armor 5 = left hand 6 = right hand 7 = legs 8 = boots 9 = ring slot 10 = ammo slot Essa função tambem retorna uma Array de um slot Por exemplo: {itemid = 2493, uid = 70001, actionid = 0} (demon helmet, slot = 1) Exemplo de uso -- Aqui passamos o paremetro do slot e verifica com o itemid que desejar if getPlayerSlotItem(cid, 2) == 2173 then -- Verificando se tem aol doPlayerSendTextMessage(cid,22,'Ok, you can go.') else doPlayerSendTextMessage(cid,22,'Sorry, you need amulet of loss to go.') doTeleportThing(cid, fromPosition, TRUE) end getPlayerDepotItems(cid, depotid) Essa função vai verificar quanto slots e item e a sua quantidade o jogador tem no depot (slots reserved, becouse 10cc = 1 slot) xx player tem no depot exemplo de retorno 7 - quando ojogado - sword - rope - 100 uh - parcel (inside: 10 crystal coins + label) - depot chest (standard, all players have it) Exemplo de uso depotItems = getPlayerDepotItems(cid, 3) -- Verificando o depot na cidade 3 if depotItems < 2 then --quando o depot conter menos que 2 items então doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Your depot contains 1 item.") else --se não o deposit contem a quantidade de item retornada doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Your depot contains " ..depotItems.. " items.") end getPlayerSex(cid) Essa função retorna o sexo de um jogador Retorno 0 - female 1 - male Exemplo de uso i f getPlayerSex(cid) == 0 then --female doSendAnimatedText(playerPos, 'GiRl :*:*', TEXTCOLOR_GOLD) elseif getPlayerSex(cid) == 1 then --male doSendAnimatedText(playerPos, 'Wtf? I aM BoY.', TEXTCOLOR_GOLD) else -- Caso não tenha sexo doSendAnimatedText(playerPos, 'Wtf? I aM BoY.', TEXTCOLOR_GOLD) end getPlayerLookDir(cid) Esta função retorna a direção que o jogador esta olhando Retorno 0 - jogador esta olhando (north) (/\) 1 - jogador esta olhando (east) (>) 2 - jogador esta olhando (south) (\/) 3 - jogador esta olhando (<) Exemplo de uso local direction = getPlayerLookDir(cid) -- armazenando a direção que o player esta olhando na variavel direction if direction = 0 then --quando for north doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You are looking to north") elseif direction = 1 then --quando for east doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You are looking to east") elseif direction = 2 then --quando for south doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You are looking to south") else --quando for west doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You are looking to west") end getPlayerGUID(cid) Essa função deve retornar o id de um jogador Retorno Player.id de uma chamada de retorno then return = -1 Exemplo DE USO - Imprimito o texto no channel default com uma 'string retornando o id do jogador com a função getPlayerGUID()' doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You are player with id: "..getPlayerGUID(cid)) getPlayerFlagValue(cid, flag) Para saber quais flags existem procure src/const.h Essa função retorna o valor de uma flag 1 quando verdadeiro 0 quando false (evento) Exemplo de uso -- Setando a variavel flagValue com a função getPlayerFlagValue(cid, id da flag) flagValue = getPlayerFlagValue(cid, 32) -- flag 32 = "Pode sumonar todos os mosntros" if flagValue = 1 then --se flag = 1 ou seja se pode sumonar. se for igual a 32 doSummonCreature("Demon", fromPosition.x + 1) -- Sumonar demon 32 = true else -- senão ou seja, se flag 32 = false doSummonCreature("Rat", fromPosition.x + 1) -- sumon rat 32 = false end getPlayerGroupId(cid) Essa função vai checar o group-id do jogador Exemplo de uso local group = getPlayerGroupId(cid) -- armazenando a função que capturar o groupid na variavel group if group == 3 --se for God só Exemplo doPlayerAddItem(cid,2160,100) --usando a função doPlayerAddItem para adicionar 100 crystal coins elseif group == 2 --se For Gamemaster só Exemplo doPlayerAddItem(cid,2160,50) --usando a função doPlayerAddItem para adicionar 50 crystal coins else -- senão chora nb doPlayerSendCancel(cid, "Sorry, cheats doesnt work for you." end getPlayerGuildId(cid) Essa função vai verificar o id da guild do jogador Exemplo de uso -- Armazenando a função que capturar o id da guild do jogador na varial guildId local guildId = getPlayerGuildId(cid) if guildId == 21 then -- se o jogador possuir 21 então doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Welcome in!") -- 21 = true elseif guildId == 22 then -- se for diferente de 21 então doPlayerSendCancel(cid,"This area is not for your guild") -- 21 != true end getPlayerGuildName(cid) Essa função vai verificar o nome da guild de um jogador Exemplo de uso -- Armazenando a função que captura o nome da guild do jogador na variavel guildName local guildName = getPlayerGuildName(cid) -- mandando um animação de texto na posição atuao da criatura (cid = creatureID), concatenando com guildName ou seja a função da primeira linha e a cor gold doSendAnimatedText(getCreaturePosition(cid),guildName, TEXTCOLOR_GOLD) getPlayerGuildRank(cid) Essa função verifica o cargo que o jogador possui na guildName Exemplo de uso -- Armazenando a função que captura o cargo de um jogador da guild que ele possui local rank = getPlayerGuildRank(cid) -- inviando uma text message par ao jogador informando ele o rank na guild usando a concatenação .. variavel .. doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"You're a " .. rank .. " in your guild.")
  20. Aqui pequeno gafanhoto. No caso o script a baixo não remove o item quando o player morrer... era isso? Te aconselho a usar o sistema de bless para isso que é oque os cript esta fazendo aqui em baixo, se estiver um item id,quantidade e o player não estiver com a bless as blesses serão adicionadas. local item_id,amount = 7721,1 function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) if (isPlayer(cid) == TRUE) then if (getPlayerItemCount(cid,item_id,amount) then if not(getPlayerBlessing(cid, bless[i])) then for i = 1, table.maxn(bless) do doPlayerAddBlessing(cid, bless[i]) end end end end return TRUE end

Informação Importante

Confirmação de Termo