-
Total de itens
239 -
Registro em
-
Última visita
-
Dias Ganhos
7
Histórico de Reputação
-
Ayron5 recebeu reputação de aline533 em Aprenda a por o target da PXG no seu servidor!
No meu tbm tive erro na compilação .-. jfsdjfshf aí me toquei no que era.
Mano é que na minha source está assim
Note que se seguir o tutorial, essa parte
g_painter->drawBoundingRect(Rect(dest + (animationOffset - getDisplacement() + 2)*scaleFactor, Size(28, 28)*scaleFactor), std::max<int>((int)(2*scaleFactor), 1)); Ela se encontra na minha pelo menos kkk aqui
if(m_showTimedSquare && animate) { Seguindo como está falando lá, vai ficar assim
Que na hora da compilação... Vai gerar um errinho e não vai compilar .-.
Então eu mudei e fiz assim... joguei tudo na
if(m_showStaticSquare && animate) { Com isso deu tudo certo... vejam ^^
É isso... Vlw pelo tutor ^^
-
Ayron5 recebeu reputação de DanijoBR em Modern Acc layout poketibia.
Como essa área está parada a muito tempo, resolvi compartilhar um layout que editei de acordo com meu gosto.
Deixei simplão mesmo, tá usável e fácil de editar.
O que vale é ajudar. XD
Créditos para otpk... e o Benny pois usei o dele como base.
Imagem:
Link:
Scan:
-
Ayron5 recebeu reputação de raulcdj em Baú Que dá Outfit se tiver Level
Bom galera antes de tudo, pesquisei e não encontrei desse que dá a roupa se tiver o tal level pedido na script.
Tou deixando bem explicado para melhor compreensão de todos. O script é simples e já foi testado, estando o mesmo 100% na minha base 8.54
Vamos lá!
Vá em data/actions/scripts e crie um arquivo Lua chamado > Outfitquest
Feito isso dentro adicione esse código v
Em actions.xml você adiciona v
Explicação:
if item.uid == 12154 then 12154 é a unique id que você vai colocar no baú. Lembrando que vc pode mudar os valores. Obs: Mudando esse valor vc terá que deixar igual na da tag da actions.xml
if getPlayerLevel(cid) >= 30 then 30 é o level que o player precisa ter para concluir a quest. Mude ao seu gosto!
questOut = getPlayerStorageValue(cid, 31503) 31503 é a storage da quest, recomendo não mudar/caso mude, deixe todos eles iguais pois eles se repetem no script.
setPlayerStorageValue(cid, 181655, 1) 181655 é a storage da quest da roupa que vc vai querer que ele ganhe, mas vc me pergunta Ayron/Sepultura onde eu acho essa storage de roupa?
Simples, vá em data/XML e abra o outfits.xml Lá vc encontrará algo assim v
<outfit id = "59" quest = "181655"> <list gender = "0" lookType = "1498" name = "Christmas" /> <!-- 0 mulher, 1 homem --> <list gender = "1" lookType = "1497" name = "Christmas" /> </ outfit> Note que o valor 181655 é o valor da quest que lista as roupas que deseja dar no baú
Atenção aqui ( o script dá a roupa automático de acordo com o sexo do player) ^ ^
Bom se vc já fez tudo deixou as coisas OK falta a ultima parte. Abra o seu (rme map editor) e lá escolha o baú, feito isso aperte com o botão direito do mouse sobre ele
e vá em propriedades, abrirá uma janelinha, na parte da Unique ID coloque o valor da unique da script que é o mesmo da tag na actions.xml = 12154 ficando assim v
Pronto! salve o mapa e vá testar. ^ ^
Espero ajudar alguém, e se ajudei deixa o Rep! aí para fortalecer a amizade
É isso, abraços!
-
Ayron5 deu reputação a akumah em [Encerrado] [Pokemon] ajuda confusion em players
@zipster98
É exatamente isso, haha! O confusion em player é muito bugado, o mesmo não pode colocar pokémons e nem nada, ainda mais no OTClient que andar em diagonal é bem bugado.
No newStatsuSystem.lua, da pasta lib procure por
function doConfusion2(cid, cd, check) if not isCreature(cid) then return true end e, abaixo disso, coloque:
if isPlayer(cid) then return true end -
Ayron5 deu reputação a Refe em Central de Aprendizado LUA: Desvios condicionais!
Bom, eu vou tentar trazer semanalmente umas dicas de programação, começando com LUA de após fechar todas as dicas eu irei começar o central de aprendizado em c++.
Hoje, sendo a primeira "aula" eu irei explicar os desvios condicionais, que são:
If else elseif Como utilizar IF?
Basicamente, o "if" se trata de uma condição, sendo utilizado da seguinte forma:
if <condição> then Como exemplo, irei fazer um desvio caso o nível do jogador seja maior ou igual a 15:
if player:getLevel() >= 15 then Após isto, deve se colocar oque o script irá realizar caso a condição seja satisfeita.
No exemplo a seguir ele irá printar para o console o nível do jogador:
if player:getLevel() >= 15 then print(player:getLevel()) end Else e Elseif: caso condição não seja satisfeita
Digamos que no script anterior eu queria que caso a condição não seja satisfeita o console printe "no", eu posso fazer com ajuda do "else":
if player:getLevel() >= 15 then print(player:getLevel()) else print('no') end O elseif é mais "complexo", por exemplo: ele nega a condição anterior e adiciona uma nova condição.
Quero que de acordo com o nome do jogador ele printe uma informação como exemplo:
if player:getName() =="Refe" then print('feio') elseif player:getName() == "Sone" then print('lindo') elseif player:getName() == "Frenvius" then print('feio') end Resumo das dicas:
If: Usado para adicionar uma condição
Else: Nega a condição anterior, ou caso ela não seja satisfeita
Elseif: Nega a condição anterior e adiciona uma nova condição.
-
Ayron5 deu reputação a Yan Liima em Limite máximo de players em guild WEBSITE
Limite máximo de players em guild WEBSITE ?
Bom, decidi postar essa modificação que fiz a muito tempo, pois vi que bastante gente queria
Para Modern AAC e vi que ninguém soube ajudar. Como é algo bem simples e ta parado aqui faz tempo
Decidi disponibilizar. Não só para Modern, mas para Gesior também!
Estarei disponibilizando de duas maneiras:
1º Será um valor configurado no proprio config.php, onde determinará o limite máximo de todas as guild.
2º A verificação será feita por DB, onde terá um valor padrão para cada guilda criada, podendo ser alterado o valor de membros maximo.
Ou seja, a guilda número UM pode ter máximo de 50 players, e a guilda número DOIS pode ter o máximo de 100.
Vocês pode ser criativos e vender items que aumenta o limite ou fazer eventos/sorteios para aumentar...
Enfim, vamos lá...
Primeira maneira:
Modern AAC:
Gesior:
Segunda maneira:
Modern AAC:
Gesior:
Prontinho galera!!!
Caso queiram para cmd in-game: LINK
-
Ayron5 recebeu reputação de Jaum152 em Como mudar essa barra de hp em baixo do nome do player?
Amigo é só pesquisar aqui no fórum...
-
Ayron5 deu reputação a Refe em Adicionando mais tiles a visão do jogador!
Hoje eu vim ensinar como aumenta a "tela" de jogo do OTCLIENT
(Desculpe o merchant, era a unica imagem que eu tinha salvo)
Testado em : 0.3.6pl1, Pode funcionar em 1.0 com alterações pequenas.
Em protocolgame.cpp ache:
return ((x >= myPos.x - 8 + offsetz) && (x <= myPos.x + 9 + offsetz) && (y >= myPos.y - 6 + offsetz) && (y <= myPos.gety + 7 + offsetz)); e troque por:
return ((x >= myPos.x - Map::maxClientViewportX + offsetz) && (x <= myPos.x + (Map::maxClientViewportX+1) + offsetz) && (y >= myPos.y - Map::maxClientViewportY + offsetz) && (y <= myPos.y + (Map::maxClientViewportY+1) + offsetz)); Agora, continuando em protocolgame.cpp ache:
GetMapDescription(pos.x - 8, pos.y - 6, pos.z, 18, 14, msg); E troque por:
GetMapDescription(pos.x - Map::maxClientViewportX, pos.y - Map::maxClientViewportY, pos.z, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, msg); Continuando em protocolgame.cpp ache a função:
void ProtocolGame::sendMoveCreature(const Creature* creature, const Tile* newTile, const Position& newPos, uint32_t newStackpos, const Tile* oldTile, const Position& oldPos, uint32_t oldStackpos, bool teleport) Dentro da função encontre:
A parte que começa em if (oldPos.y > newPos.y) { e Termina em GetMapDescription(newPos.x - 8, newPos.y - 6, newPos.z, 1, 14, msg); } e troque por:
if (oldPos.y > newPos.y) { // north, for old x msg->AddByte(0x65); GetMapDescription(oldPos.x - Map::maxClientViewportX, newPos.y - Map::maxClientViewportY, newPos.z, (Map::maxClientViewportX+1)*2, 1, msg); } else if (oldPos.y < newPos.y) { // south, for old x msg->AddByte(0x67); GetMapDescription(oldPos.x - Map::maxClientViewportX, newPos.y + (Map::maxClientViewportY+1), newPos.z, (Map::maxClientViewportX+1)*2, 1, msg); } if (oldPos.x < newPos.x) { // east, [with new y] msg->AddByte(0x66); GetMapDescription(newPos.x + (Map::maxClientViewportX+1), newPos.y - Map::maxClientViewportY, newPos.z, 1, (Map::maxClientViewportY+1)*2, msg); } else if (oldPos.x > newPos.x) { // west, [with new y] msg->AddByte(0x68); GetMapDescription(newPos.x - Map::maxClientViewportX, newPos.y - Map::maxClientViewportY, newPos.z, 1, (Map::maxClientViewportY+1)*2, msg); Agora ache:
if(newPos.z == 7) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 5, 18, 14, 3, skip); //(floor 7 and 6 already set) GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 4, 18, 14, 4, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 3, 18, 14, 5, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 2, 18, 14, 6, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 1, 18, 14, 7, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 0, 18, 14, 8, skip); Depedendo da Source, a parte será assim:
Por:
if(newPos.z == 7) //going to surface { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 5, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 3, skip); //(floor 7 and 6 already set) GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 4, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 4, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 3, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 5, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 2, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 6, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 1, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 7, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 0, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 8, skip); Agora ache:
else if(newPos.z > 7) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, oldPos.getZ() - 3, 18, 14, 3, skip); Depedendo da source será assim:
Por:
else if(newPos.z > 7) //underground, going one floor up (still underground) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, oldPos.z - 3, (Map::maxClientViewportX+1), (Map::maxClientViewportY+1)*2, 3, skip); Agora ache:
//moving up a floor up makes us out of sync //west msg->AddByte(0x68); GetMapDescription(oldPos.x - 8, oldPos.y - 5, newPos.z, 1, 14, msg); //north msg->AddByte(0x65); GetMapDescription(oldPos.x - 8, oldPos.y - 6, newPos.z, 18, 1, msg); E troque por:
//moving up a floor up makes us out of sync //west msg->AddByte(0x68); GetMapDescription(oldPos.x - Map::maxClientViewportX, oldPos.y - (Map::maxClientViewportY-1), newPos.z, 1, (Map::maxClientViewportY+1)*2, msg); //north msg->AddByte(0x65); GetMapDescription(oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z, (Map::maxClientViewportX+1)*2, 1, msg); Agora ache:
if(newPos.z == 8) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z, 18, 14, -1, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z + 1, 18, 14, -2, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z + 2, 18, 14, -3, skip); Dependendo da source poderá ser:
e troque por:
if(newPos.z == 8) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -1, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z + 1, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -2, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z + 2, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -3, skip); Agora ache:
else if(newPos.z > oldPos.z && newPos.z > 8 && newPos.z < 14) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z + 2, 18, 14, -3, skip); Depedendo da source pode ser assim:
E troque por:
else if(newPos.z > oldPos.z && newPos.z > 8 && newPos.z < 14) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z + 2, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -3, skip); Agora em map.h edite essa parte como quiser:
static const int32_t maxViewportX = 11; //min: maxClientViewportX + 1 static const int32_t maxViewportY = 11; //min value: maxClientViewportY + 1 static const int32_t maxClientViewportX = 8; static const int32_t maxClientViewportY = 6; O modo de Edição é assim:
Agora em map.cpp do OTCLIENT
Ache:
void Map::resetAwareRange() { AwareRange range; range.left = 8; range.top = 6; range.bottom = 7; range.right = 9; setAwareRange(range); } Troque por:
{ AwareRange range; range.left = 8; //Valor que colocou em maxClientViewportX range.top = 6; //Valor que colocou em maxClientViewportY range.bottom = range.top+1; range.right = range.left+1; setAwareRange(range); } Créditos:
Flatlander - OTLAND - Criação
Ceetros - Tradução
Agora vamos deixar o OTCLIENT lindão.
Troque tudo de modules/game_interface/interface.lua (na pasta do OTCLIENT)
por:
http://pastebin.com/tH7qyreW
(para o tutorial não ficar muito grande botei no pastebin, já que o spoiler tá bugando)
Creditos dessa parte:
Edubart (Criador do OTCLIENT)
Ceetros
Caso tenha ajudado, dê um rep+
-
Ayron5 deu reputação a Tony Araujo em [CREATURESCRIPT] Exp Aura Sytem (OTP Based)
[CREATURESCRIPT] Exp Aura System (OTP Based)
Autor: Tony Araújo (OrochiElf)
Vídeo demonstrativo: https://imgur.com/8OFTfL8
(por algum motivo não carregou link direto kk)
Eai rapeize, beleza? Espero que sim. Bom, hoje vim trazer a vocês o sistema de Exp Aura, fiz ele baseado no do OTPokemon.
Bom, o sistema funciona da seguinte forma, você mata um monstro e tem uma chance desse monstro criar uma aura, que no caso será um efeito que ficará se repetindo por determinado tempo, ou caso preferência, até o corpo do monstro sumir, caso apareça essa aura, você precisa ficar na posição do efeito para coletar esse bônus. É um sistema bem simples, porém legal (acredito eu kkkkkk).
Bom, vamos lá.
1. Vá em [data/creaturescripts/scripts] e lá crie um arquivo chamado (CODDINGS-ExpAura.lua), e dentro adicione:
LINK DO HASTEBIN AQUI
A configuração é bem simples, vamos lá:
local EXPAURA = { aura_effect = 11, -- É o ID do efeito que irá ficar se repetindo, até o bonus ser coletado. gain_effect = 14, -- É o ID do efeito que irá aparecer quando o bonus for coletado. spawn_chance = 25, -- É a chance que este bônus tem de acontecer, sendo 25 = 25% use_specific_time = 15 -- Aqui você configura por quanto tempo o bônus esperará ser coletado, em segundos, porém caso prefira que espere até o corpo sumir, troque o número por false }
2. Continuando dentro do scripts, vá em (login.lua) e procure por:
registerCreatureEvent E acima do primeiro resultado, você adicione:
registerCreatureEvent(cid, "ExpAura+")
3. Agora vá no creaturescripts.xml e adicione a tag:
<event type="kill" name="ExpAura+" event="script" value="CODDINGS-ExpAura.lua"/>
Bom galera, feito isso, está pronto para se divertir. Espero que gostem e façam bom proveito.
-
Ayron5 deu reputação a Tony Araujo em [OTClient - Module] Caught Achievement v1.4 - Atualizado!
[OTClient - Module] Caught Achievement v1.4 - Atualizado
Autor: Tony Araújo (OrochiElf)
Fala meus bacanos, de boas? Espero que sim. Bom, há uns 4 anos atrás, cheguei a fazer ultima atualização do sistema de Caught Achievement, que nada mais é do que aquele sistema da PxG, onde você ganha um determinado XP pela captura de um pokemon, além de mostrar quantas pokebolas foram utilizadas, porém, aquela versão não estava muito boa, pois era necessário fazer diversas adaptações para adição de novas pokebolas, fora o código que não estava mais me agradando, então resolvi fazer uma nova atualização e deixar o sistema "auto-adaptável", onde não é necessário mais nenhuma edição nele, pois ele recebe os dados do servidor e interpreta de forma automática, sendo assim, suportando um número ilimitado de pokebolas e sem burocracias. Bom, sem mais, vamos lá.
PS: Como não existe uma base única de servidor utilizada atualmente, e sim diversas, não tem como eu fazer um tutorial único e pré-destinado de instalação, então tentarei explicar mais ou menos o que é necessário fazer para o sistema funcionar perfeitamente, mas fiquem tranquilos, é algo beeem simples.
Primeiramente, precisaremos criar um arquivo no [data/lib], chamado (CODDINGS-CaughtWindow.lua) (sugestivo não? kkk) e dentro adicione o código:
LINK DO HASTEBIN AQUI
Bom, a configuração é bem auto explicativa, não tem muito mistério, vamos lá:
["Nome do Pokemon" = {portrait = Item ID do portrait, experience = Quantidade de Exp pelo Caught, storage_balls = Storage de armazenamento, aconselho seguir o fluxo} ex: ["bulbasaur"] = {portrait = 11989, experience = 3000, storage_balls = 15050},
Bom, segunda parte da instalação é o seguinte, agora nós vamos adicionar o contador de balls, acredito que o melhor local e o de mais fácil instalação, seria no script de catch do actions, então vá nesse arquivo e procure por esse código aqui
doRemoveItem(item.uid, 1)
E então, acima dele, você adiciona:
-- Caught Window System CaughtWindow.ballcount(cid, name, item.itemid) Sendo o (name) necessariamente o nome do pokemon, então caso a variável onde guarda esse valor seja diferente, você só arruma ali na função e pronto.
Bom, para finalizarmos, vamos agora enviar a sinalização de quando o pokemon é capturado. O servidor que estou usando aqui (não sei o nome dele, achei perdido no pc), ele possui uma lib onde existe essa função responsável, então acredito que possa existir no de vocês também. Procurem por algo como catch system, catch ou algo deste genero. Aqui, existe a função chamada: doCapturePokemon, tentem procurar por ela ou similar.
Dentro desta função, procure por essa função aqui, ou também, similar a ela: doPlayerSendTextMessage(cid, 27, "Congratulations, you caught a pokemon ("..poke..")!")
e logo acima, adicione:
-- Caught Window System CaughtWindow.sendcaught(cid, poke) Seguindo a mesma lógica da anterior, a variavel (poke), necessariamente precisa ser o nome do pokemon.
Bom galera, feito isso, o sistema está perfeitamente instalado, bastando apenas vocês adicionarem o módulo no cliente. Só fazer o download dele aqui no tópico, que deixarei o .zip anexado, aconselho adicionarem ele dentro da pasta mods e não da modules, por conta do auto-carregamento de forma mais simplificada (no caso, não sendo necessário criar dependencia no game_interface), mas caso seu client não tenha, você pode criar esta pasta sem nenhum prejuízo.
Bom, por hoje é isso rapeize, tamu junto e até a próxima xD
[coddings]caughtwindow.rar
-
Ayron5 deu reputação a Gengo em [OTClient] Sistema de Dialogo Otpokemon
[OTClient] Sistema de Dialogo Otpokemon
Venho através desse tópico contribuir para a comunidade, um simples modulo de dialogo no estilo do Otpokemon,
não é um sistema de dialogo avançado é algo simples que deixa seu servidor intuitivo.
1) Faça o download do modulo no qual se encontra no final do tópico e abrindo a pasta do seu client, extraia e coloque o modulo na pasta modules.
2) O módulo utiliza uma função chamada switch que não é comum ter no otclient, porem podemos colocar sem muito esforço, na pasta do otclient abra o arquivo util.lua que se encontra em modules/corelib/ e no final do arquivo coloque o seguinte código:
Feito o passo 1 e 2, vamos para a parte do servidor.
1) Crie um arquivo na pasta data/lib/ podendo ter o nome de npcdialog_lib.lua e coloque o seguinte código:
2) O arquivo que acabamos de criar utiliza uma função chamada table.serialize que não é comum ter nos servidores, para que funcione sem erros vamos adicionar, abra o arquivo 012-table.lua que fica na pasta do seu servidor em data/lib/ ou você pode criar o arquivo e adicionar o seguinte código:
Feito todo esse procedimento, estarei disponibilizando um npc para que vocês possam ter uma noção de como utilizar esse sistema de dialogo.
1) Crie um arquivo na pasta do servidor em data/npc/ chamado Gengo.xml e adicione o seguinte código:
2) Crie um arquivo na pasta do servidor em data/npc/lib/ com o nome gengo.lua e adicione o seguinte código:
O npc é algo simples, porem serve para que você possa ter uma noção de como utilizar as funções do npc.
Demostrativo dentro do game:
Arquivos para download e o scan:
-
Ayron5 deu reputação a Gengo em [OTClient] OTP Bank System
Estava fazendo esse modulo e decidi postar, para quem quiser é um modulo de banco igual do OTPokemon, segue o demostrativo.
OBS: Download contém apenas o módulo e não está completo.
-
Ayron5 deu reputação a Michyalex em [OTClient] House look PXG
Oi galera venho a postar o module House Look igual ao PXG que fiz hoje.
No server vamos para a pasta de creaturescripts, no Look.lua colocamos o seguente
local houseId = getHouseFromPos(position) if houseId and getItemNameById(thing.itemid):find("door") then if getHouseOwner(houseId) ~= 0 then house_owner = getPlayerNameByGUID(getHouseOwner(houseId)) else house_owner = "Nobody" end house_name = getHouseName(houseId) house_town = getTownName(getHouseTown(houseId)) house_size = getHouseTilesCount(houseId) house_price = getHousePrice(houseId) local house_information = string.format("house_data|%s|%s|%s|%u|%u", house_name, house_owner, house_town, house_size, house_price) return doSendPlayerExtendedOpcode(cid, 199, house_information) and false Esse codigo debe ser colocado como o if principal ou como um elseif no final do arquivo Look.lua
Baixe o Modolo e ja era. Ficaria assim:
PD: o modulo usa o opcode 199, lembrese de registrar o modulo no GAME_INTERFACE como
- game_house
Virustotal: https://www.virustotal.com/gui/file/58db3f2aa43c1297dc24b26e751e66a1acb6bdbbd3c0fecd27e35e789f7eb440/detection
Credits:
A mim por fazer
PXG por fazer o desenho principal
game_house.rar
-
Ayron5 recebeu reputação de xmaster0 em NPC que vende informação
Dale! suave? deixo aqui um npc que fiz agora para meu servidor...
Como fala no titulo, ele cobra uma certa quantia de dinheiro ou item, para dar uma informação, só configure certinho.
É bem simples mas pode ajudar alguém
Lembrando que está testado e funcionando 100%
Vá em data/npc e crie um arquivo XML com o nome info e cole isso dentro...
Salve e feche...
Agora em data/npc/scripts crie um arquivo LUA com o nome info e cole dentro...
Bom, é só isso espero ajudar alguém, se ajudei deixa o REP! Aí pra fortalecer a amizade
LEMBRANDO QUE DENTO DO ARQUIVO ESTÁ A EXPLICAÇÃO.
-
Ayron5 recebeu reputação de xmaster0 em Baú Que dá Outfit se tiver Level
Bom galera antes de tudo, pesquisei e não encontrei desse que dá a roupa se tiver o tal level pedido na script.
Tou deixando bem explicado para melhor compreensão de todos. O script é simples e já foi testado, estando o mesmo 100% na minha base 8.54
Vamos lá!
Vá em data/actions/scripts e crie um arquivo Lua chamado > Outfitquest
Feito isso dentro adicione esse código v
Em actions.xml você adiciona v
Explicação:
if item.uid == 12154 then 12154 é a unique id que você vai colocar no baú. Lembrando que vc pode mudar os valores. Obs: Mudando esse valor vc terá que deixar igual na da tag da actions.xml
if getPlayerLevel(cid) >= 30 then 30 é o level que o player precisa ter para concluir a quest. Mude ao seu gosto!
questOut = getPlayerStorageValue(cid, 31503) 31503 é a storage da quest, recomendo não mudar/caso mude, deixe todos eles iguais pois eles se repetem no script.
setPlayerStorageValue(cid, 181655, 1) 181655 é a storage da quest da roupa que vc vai querer que ele ganhe, mas vc me pergunta Ayron/Sepultura onde eu acho essa storage de roupa?
Simples, vá em data/XML e abra o outfits.xml Lá vc encontrará algo assim v
<outfit id = "59" quest = "181655"> <list gender = "0" lookType = "1498" name = "Christmas" /> <!-- 0 mulher, 1 homem --> <list gender = "1" lookType = "1497" name = "Christmas" /> </ outfit> Note que o valor 181655 é o valor da quest que lista as roupas que deseja dar no baú
Atenção aqui ( o script dá a roupa automático de acordo com o sexo do player) ^ ^
Bom se vc já fez tudo deixou as coisas OK falta a ultima parte. Abra o seu (rme map editor) e lá escolha o baú, feito isso aperte com o botão direito do mouse sobre ele
e vá em propriedades, abrirá uma janelinha, na parte da Unique ID coloque o valor da unique da script que é o mesmo da tag na actions.xml = 12154 ficando assim v
Pronto! salve o mapa e vá testar. ^ ^
Espero ajudar alguém, e se ajudei deixa o Rep! aí para fortalecer a amizade
É isso, abraços!
-
Ayron5 recebeu reputação de Zbieracz em [Fechado] Base Pokémon XYZ RPG Online
Acabei de compilar.
Tá aí pr quem está precisando...
Distro.
TheForgottenServer.rar
-
Ayron5 deu reputação a Michyalex em [Pokemon] AutoMegaEvolve talkactions
Oi galera, eu fiz um script faz muito tempo para autoMegaEvolve um pokemon com opçao de ativar ou desativar, nao e a gran coisa mais pode ser de ajuda para muitos.
PD: sou spanhol e meu portuguesse não e o mais bom do mundo.
Vamo lá:
___________________ TALKACTIONS
● Cria um arquivo chamado autoMegaEvolve.lua em talkactions/script cole o script
● Depois adiciona em talkactions.xml
<talkaction words="!autoMegaEvolve" hide="yes" case-sensitive="no" event="script" value="automegaevolve.lua"/> ___________________ ACTIONS
● Vai para actions/scripts/basic/goback.lua e pesquise por
doCreatureSetLookDir(pk, 2) ● Acima dele cole o seguente
if getPlayerStorageValue(cid, storages.MegaAutoEvolve) == 1 then goBackToMega(pk) end ___________________ LIBS
● Vai para data/libs/106-main functions.lua e no final cole o seguente
● Vai para ~main tables.lua e pesquise por
storages = { ● Adicione o seguente no final do Json
MegaAutoEvolve = 20010
-
Ayron5 recebeu reputação de M i s s em Baú Que dá Outfit se tiver Level
Bom galera antes de tudo, pesquisei e não encontrei desse que dá a roupa se tiver o tal level pedido na script.
Tou deixando bem explicado para melhor compreensão de todos. O script é simples e já foi testado, estando o mesmo 100% na minha base 8.54
Vamos lá!
Vá em data/actions/scripts e crie um arquivo Lua chamado > Outfitquest
Feito isso dentro adicione esse código v
Em actions.xml você adiciona v
Explicação:
if item.uid == 12154 then 12154 é a unique id que você vai colocar no baú. Lembrando que vc pode mudar os valores. Obs: Mudando esse valor vc terá que deixar igual na da tag da actions.xml
if getPlayerLevel(cid) >= 30 then 30 é o level que o player precisa ter para concluir a quest. Mude ao seu gosto!
questOut = getPlayerStorageValue(cid, 31503) 31503 é a storage da quest, recomendo não mudar/caso mude, deixe todos eles iguais pois eles se repetem no script.
setPlayerStorageValue(cid, 181655, 1) 181655 é a storage da quest da roupa que vc vai querer que ele ganhe, mas vc me pergunta Ayron/Sepultura onde eu acho essa storage de roupa?
Simples, vá em data/XML e abra o outfits.xml Lá vc encontrará algo assim v
<outfit id = "59" quest = "181655"> <list gender = "0" lookType = "1498" name = "Christmas" /> <!-- 0 mulher, 1 homem --> <list gender = "1" lookType = "1497" name = "Christmas" /> </ outfit> Note que o valor 181655 é o valor da quest que lista as roupas que deseja dar no baú
Atenção aqui ( o script dá a roupa automático de acordo com o sexo do player) ^ ^
Bom se vc já fez tudo deixou as coisas OK falta a ultima parte. Abra o seu (rme map editor) e lá escolha o baú, feito isso aperte com o botão direito do mouse sobre ele
e vá em propriedades, abrirá uma janelinha, na parte da Unique ID coloque o valor da unique da script que é o mesmo da tag na actions.xml = 12154 ficando assim v
Pronto! salve o mapa e vá testar. ^ ^
Espero ajudar alguém, e se ajudei deixa o Rep! aí para fortalecer a amizade
É isso, abraços!
-
Ayron5 recebeu reputação de nociam em GYM SYSTEM PFV
Absurdo.
E faz mesmo, hj eu tenho esse sistema graças a ele @nociam gente boa de mais.
-
Ayron5 recebeu reputação de BrunooMaciell em Pesca
Aqui está! Fiz as Alterações no seu script, testei aqui e está 100% dá forma que vc pediu. ^^
-
Ayron5 deu reputação a Yan Oliveira em Quest Log em Janela
Olá amigos do Xtibia, venho trazer um tutorial simples, mas interessante, que exibe uma caixa de diálogo com texto contendo todas as quests do seu servidor.
Atenção: Testado somente em TFS 0.3/0.4
Vamos lá!
Vá em Data/Talkactions/Scripts e crie um arquivo.lua chamado quest_log.lua e adicione o script:
---------------- QUEST LOG BY YAN18 ----------------- -- NOME DA QUEST NO ÍNDICE, O NÍVEL E STORAGE NO VALOR -- local quests = { ["Cerulean City"] = {level = 30, storage = 32500}, ["Fire Stone"] = {level = 50, storage = 32501}, ["Boost Machine"] = {level = 100, storage = 32502} } function onSay(cid, words, param) local quest_completada = "- Quests completadas: \n\n" local quest_incompleta = "\n- Quests não completadas: \n\n" for i, _ in pairs (quests) do if (getPlayerLevel(cid) >= quests[i].level) and (getPlayerStorageValue(cid, quests[i].storage) < 1) then quest_incompleta = quest_incompleta .. "* " ..i.. " - Nível: " ..quests[i].level.. " \n" elseif (getPlayerLevel(cid) >= quests[i].level) and (getPlayerStorageValue(cid, quests[i].storage) >= 1) then quest_completada = quest_completada .."* " ..i.. " - Nível: " ..quests[i].level.. " \n" end end if quest_completada == "- Quests completadas: \n\n" then quest_completada = quest_completada .. " Nenhuma quest foi completada ainda. \n\n" elseif quest_incompleta == "\n- Quests não completadas: \n\n" then quest_incompleta = quest_incompleta .. " Todas as quests foram completadas." end local quest = quest_completada .. quest_incompleta return doShowTextDialog(cid, 1811, quest) end
Agora abra o talkactions.xml que fica em Data/Talkactions/talkctions.xml e adicione a tag:
<talkaction words="!quest" event="script" value="quest_log.lua"/> Deixei o comando !quest ali em words na tag xml, mas você pode colocar outro comando de sua preferência.
Explicação: Adicione todas as quests do servidor na tabela quests, colocando o nome dela como índice, o level e storage (preste bem atenção para colocar a storage correta) como valores. Em caso de dúvidas, só seguir o exemplo que fiz. Também fiz verificação para ver se todas as quests do jogo (que você colocar na tabela) foram feitas ou não, e também fiz verificação de nível do jogador por quest, ou seja, os jogadores só verão as quests que eles tem nível para fazer. De resto não tem muito o que mexer, só se quiser reduzir ou aumentar a quantidade de espaço entre as linhas, mas ai é da preferência de cada um. Caso queira retirar a verificação de nível do jogador (pare verem todas as quests) só mudar isso:
for i, _ in pairs (quests) do if (getPlayerLevel(cid) >= quests[i].level) and (getPlayerStorageValue(cid, quests[i].storage) < 1) then quest_incompleta = quest_incompleta .. "* " ..i.. " - Nível: " ..quests[i].level.. " \n" elseif (getPlayerLevel(cid) >= quests[i].level) and (getPlayerStorageValue(cid, quests[i].storage) > 1) quest_completada = quest_completada .."* " ..i.. " - Nível: " ..quests[i].level.. " \n" end end Para isso:
for i, _ in pairs (quests) do if getPlayerStorageValue(cid, quests[i].storage) < 1 then quest_incompleta = quest_incompleta .. "* " ..i.. " - Nível: " ..quests[i].level.. " \n" else quest_completada = quest_completada .."* " ..i.. " - Nível: " ..quests[i].level.. " \n" end end
Se fizer tudo corretamente, é para aparecer essa janela com as informações e nível da(s) quest(s):
Essa janela é criada na função doShowTextDialog, e o segundo parâmetro dela é um item que aparece como ícone, geralmente deixam 0 (e recomendo deixar 0 como padrão), mas tem base que o id do item 0 aparece como algum item do jogo (as vezes montanhas ou outros itens de ambiente), então deixei um blackboard, até para ficar mais coerente hehe. Você também pode criar um item para representar essa janela, mas vai da preferência e criatividade de cada um.
Se você tiver source, pode até criar uma janela com título de "Quests" para ficar mais bonito a interface, mas vai de cada um.
OBS: Em alguns servidores pode ser que dê crash na distro por conta do item passado no segundo parâmetro da função doShowTextDialog(cid, id_item, texto), precisa ficar atento nisso.
Qualquer dúvida só perguntar!
Abraços e fiquem com Deus!
-
Ayron5 deu reputação a Poke X Ice em [RESOLVIDO] Pedido de Script : By Catcher
mande seu script de catch e donate bau
vou passar meus scripts:
Capturando colocando nick de quem capturou: by Eu
servidor/data/lib/catch system.lua procure por:
servidor/data/creaturescript/script/look.lua
agora outro estou refazendo melhorando um pouco -'
-
Ayron5 deu reputação a Gengo em Trava para barras
Eai mano blz?
A localização desse lockButton fica na posta data/styles/30-miniwindow.otui, já o código em que faz a ação, ele se localiza em modules/corelib/ui/uiminiwindow.lua
-
Ayron5 deu reputação a GamerGoiano em Outfit Module para Poketibia (OTCLIENT)
@Ayron5 @mastof
Experimentem trocar
local outfitColor = getOutfitColor(j*19 + i)
por
local outfitColor = getOufitColor(j*19 + i)
E me manda aqui denovo pra eu ver o erro do terminal, se não der é pq vcs tão usando um otclient desatualizado
---------
Ou então tenta substituir só o .otui
-
Ayron5 deu reputação a GamerGoiano em Module TELEPORT LIST (POKETIbIA)
Ja que eu comprei eu tenho o direito de repassar pra quem eu quiser!
Comprei esse modulo de um cara e ele me passou infuncional, se alguém quiser ele pra editar, deixo aqui pra vocês:
Como funciona: ao clicar em uma cidade, ele manda o comando !h saffron ou o nome da city.
Download: https://www.dropbox.com/s/1dn9c2p25en8c8c/TP LIST.rar?dl=0
Scan: https://www.virustotal.com/gui/file/06ef6e8655eadb9a0bb4f38ef5afaad354e3bb508e325ff9e392ae9f466b864b/detection
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.