Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 04/18/14 em todas áreas
-
Styller Yourots 8.60 Original (PLATINUM) RPG (Compilado para Linux e para Windows) Mapa Base: Yourots 1.2 Editado por Leonardo. Informações: Versão 0.6 17/07/09 -Novo Visual do Templo. -95% a City 8.50 -Novas Quest\\\'s -Depot com novo Visual -SD igual a do Global. -Novos Monstros do 8.5 com respawn. -Novas Houses -Addons Funcionando. -Married Outfit -Firewalker Boots 100%. -Adicionada Itens 8.50 100%. -GOD 100%. -Adicionado Change Log -Soft Boots Funfando -Dual Hit -Npc System 100%.. -Questdoors. -Novas areas de Hunt -Respawn de Medusa Adicioando. -Demon Oak Quest 100%. -Guardian Halberd Quest. -Algumas Casas com novas Paredes. -Novo Outfit (KinG). -Inquisition 100% -Melhorei o Respawn de Bog Raider da Hydras -Sem o bug dos Grim Reapers -Npc Bless 100% -Novas Magias 8.5 -Sem o Icone de Pz e da Red Sword (por enquanto) -Ferumbras Tower (Igual a do Global) Agora Completada e com caminho para ir até ela. -Agora a Sudden Death (SD) após dar seu hit deixa um elemento de Morte tirando \\\"50\\\" -Remodelei o Amazon Camp. -Agora o Player pode recarregar sua Soft Boots e Firewalker Boots, clicando na \\\"Worn\\\" -Area de Vampiros. -Area de Infernalist. -Seais da Poi igual ao Tibia Global. -Novas Paredes. -Quest Firewalker Boots para quem fizer Demon Helmet Quest. (By Leo) -Nova Runa do tibia Global (Wild Growth). -Mais casas na cidade. -Mais pvp influenciando player jogar o Servidor. -Novo Visual do Temple. -Agora o Player ao soltar uma magia de Buff é adicionado Status. -Mais Estabilidade do Server. -Auto-clean de 2 em 2hrs. -Adicionado respawn de Faraó em Nargor. -Adicionado Great Shield Quest. -Novo respawn de Behemoth em Nargor. -Adicionado Yalahar City Full -Adicionado o Captain Eddy para levar o player à Yalahar. -Agora os players podem comprar BPS de PoTIonS e RuNAS por meio do "Buy with backpacks" no npc Dark Rodo! -Helmet of The Ancients Quest (HOTA) -Adicionado a Quest da Obsidian Knife -Adicionado o sistema de !ranks sem bug! --Melhorei a Arquitetura da Cidade. -Agora o player pode usar a enchated small ruby no Helmet of the Ancients (By LeozeraRox 100%) -Adicionado o NPC Bank sem bugs. -Foi retirado alguns Bugs. Rev 02 6/08/09 -Novo Visual do Templo. -98% a City 8.50 -Alavanca de Bp de Potions 100% -Adicionado Justice Seeker Quest -Depot com novo Visual -Sem o Bug dos Grim Reaper. -Novas Hydras. -Novos Frost Dragons, agora maior. -Adicionado o Icone de Protection Zone. -Adicionado a Black Skull -Nova Worn Soft Boots. -Nova Worn Firewalker Boots. -Loot Mensagem 100%. -Agora após o player criar o character no Acc Manager ele recebe os itens da sua Vocação. -Adicionado o Dark Cemiter (Nightstaker,Lich,Necromancer) -Adicionado uma Igreja mais por inquanto sem Casamento -Melhorei o sul da Cidade.. -Visual da City muito Bonito. -Novos demons. -Arena PvP 100%. -Loot do hellspawn agora igual do do Tibia Global. -Mais Estabilidade. -Mais Casas. -Retirei o "lixo" do mapa, pois pesava bastante os OT Servers. -!rank agora atualiza de 5 em 5min. -O preço da Yalahi Armor subiu para 600k -Melhorei o Respawn de Bog Raider da Hydras -Adicionei uma cave de Giant Spider e Hydra na Hydra Land. -Npc Bless 100% e agora mais completo. -NPC Bank sem bugs. -Adicionei o comando /ban -Bar para se diverir com amigos. -Nova Magia pra Royal Paladins "exevo con san" -Arrumado o Exhausted. -Rust Remover System -Para quem não quiser black skull basta por "no" no conf.lua >> " useBlackSkull = "yes" " -Agora o Npc Betoven não leva pro temple e sim para o Barco. -Foi retirado alguns Bugs. Rev 03 9/08/09 -Depot Com visual 8.50. -Arrumado o Bug do Outfit -Novo Exe. -Agora A Riona vende Rusty Remover. -Novo visual do cemitério -Adicionado o Married Outfit. -Removi Yalahar, pois era uma cidade inútil no servidor e servia só para pesar o server. -Hellgorak com loot igual do Tibia Global. -Mais estabilidade do que antes. -Retirado todas as camas por enquanto, pois quando o player dormia o server caia. -Foi retirado alguns Bugs. Rev 04 13/08/09 -Novo Distro. -Arrumado o Bug das camas. -Camas em todas as Casas. -Agora nem na Inquisition e nem na Demon Oak os players podem pegar os itens da amostra. (Obrigado usuários) -Clean não trava o server. -Server não cai mais, por erros. -Agora temos !notice. -Para banir Ctrl+Y -Todos itens 8.50 com seus nomes. -Mais estabilidade no servidor do que antes. -Foi retirado alguns Bugs. New Version 0.6.1 20/09/09 -Cave de Rotwoms reformulada. -Cave de Demos Reformulada. -Magias agora mais reais (sem aquelas exageradas). -Agora a Inquisition possui mais uma Sala. -Parte da Poi foi reformulada. -Adicionado o NPC Raphael, que vende buffer por 20min (nada exagerado) para os players. -Agora um cadeia para os players infratores. -Para Prender um player /jail "tempo,nome do player (apenas GMs e GODs) -Agora o player pode chamar players para quest através do comando- !service Pits of Inferno Quest, 5000 (o 5000 é o preço para os interessados). -Player agora pode trocar 200 demonic essences por um Nighmare ou Necromancer Shield (!necromancer-!nightmare). -Premia City toda Reformulada e com mais um hunt de Demons. -Adicionado os NPCs na Blue City. -Temos agora um Broadcast para dar informações aos players. -Adicionado um Hunt de Medusa e Defiler na Pits Prison. -Adicionado Demona na Hunt de Warlock. -Cave de Warlock toda reformulada. -Adicionado quest do noble axe nos Cyclops. -Adicionado um cave de Wyrms. -Pequenas edições no Temple. -Agora o Demon Oak sumona um Demodras no Lugar do Necropharus. -Foi retirado alguns Bugs. Rev 01 (0.6.1) 10/10/09 -Edições na pasta creaturescripts. -Bug do player não morrer arrumado. -Arrumado os Bugs da Premia City. -Novo Exe. foi adicionado e agora serve para Tibia 8.50 e 8.52. -Agora ficou mais dificiu derrubar o server e acho que impossivel. -Adicionado o NPC Hagar no temple, para dar boas vindas. -Bug do utito tempo san arrumado. -Bugs foram retirados. Rev 02 (0.6.1) 28/10/09 -Novo Exe. -Agora 100% Estável, devido aos vários testes. -Adicionado o NPC Aldo para recarregar a Soft Boots, segundo os players são mais RPG. -Ediçoes no mapa. -Edições no NPC Henricus. -Bugs foram retirados. Rev 03 (0.6.1) 31/10/09 -Retirado o NPC de recarregar a Soft Boots. -Permaneceu o Antigo jeito de recarregar. -Edições na Inquisition. -Bug da Arena PVP Arrumado. -Bug do NPC Henricus arrumado. -Adicionado a Quest do Blessed Shield na Fermbras Tower, onde o player escolhe apenas um Item. -Bugs foram retirados. Rev 04 (0.6.1) 02/11/09 -Novo Exe. -Mudei o Acc Manager de Lugar. -Adicionei o Npc Aldo (Recarrega Soft Boots). -Systema de Tapete Voador. -Systema de Jumper. -Uma atividade básica de mapping na cidade. -Systema de VIP: (Utilizando Database. Para mais informações: /vip) -Expandi 3 novas Hunts à Leste da Cidade. -Adicionei a Serpent Coat Quest. -Raid do The Mutated Pumkin ( /raid The Mutated Pumpkin ) -Nova Hunt de Frost Dragon na V.I.P City. -Nova Cidade Criada "Tiquanda Island" -Adicionei Systema de Refinamento para V.I.Ps. (Sem exagero) -Algumas Edições na POI. -Adicionei um Npc que leva o Player a Svargrond -Adicionei Arena Quest (greenshore - scrapper - warlord) 100% Igual ao Tibia Global. -Melhorei a Performaçe do Demon Oak. -Agora na Arena-PVP o player não perde item e nem level. -Nova Entrada para a Blood Land. -Um sistema de Invasão que o Boss invasor causa um incêndio nas Florestas de Nargor. -Adicionei a Quest da Giant Sword. -Sistema de Poll: (Via Database). *!createpoll PERGUNTA? *!activatepoll ID *!cancelpoll *!seepoll *!seeresults ID *!remvotes ID *!rempoll ID *!votepoll Option - Quando uma enquete está ativa, esse é o comando que os jogadores irão utilizar para votar na opção desejada. O número de opções pode variar. -Sistema de Afk (!afk on - !afk off). -Agora os Lideres de Guild podem mandar uma mensagem em Vermelho para os Membros. ( /guild ). -O membro de uma guild pode escolher ser atacado ou não por um outro membro de uma guild. ( /attackguild on - /attackguild off ) -Married System 100% (Via Database) *Como Casar: PLAYER1: Hi PLAYER1: marry PLAYER1: yes PLAYER1: Nome do PLayer 2 PLAYER2: Hi PLAYER2: marry PLAYER2: yes PLAYER2: proceed Os casais também podem se separar. -Adicionei o NPC Morgan em Blood City (Vende e compra Anéis) -Algumas Edições no Spells.xml -Colocamos um Sistema de quando a V.I.P do Player acabar, ele ser teleportado para a Cidade Principal. -Criei um Hunt de Destroyer e Demon. -Adicionei o Npc Old Jeff que vende outros tipos de Munição. -Bugs Foram Retirados. Versão de Reveillon (0.6.5) 16/12/09 -Novo Exe. -Mudei o Acc Manager. -Protocolo 8.54 -Outfits e Addons 8.54 (Warmaster) -95% dos Itens já foram Adicionados. -90% features -/unban funcionando 100% -Addons do Warmaster sendo vendido no Varkhal. -Adicionei a Magia "exana flam" -Agora o player começa com a "expedition backpack" -Suporte Para Mapas 8.54. -Bugs Foram Retirados. Versão de Retomada (0.7.0) 24/04/10 -Novo Distro totalmente estável. (LeozeraRox) -Proteção contra MageBomb. -Protocolo 8.54-8.55 -Lugares de Caça para todos os monstros 8.54 -Mais de 10 Quest dos novos itens foram adicionadas. -99% features. -Regularição das Spells. -Bank system via talkaction adicionado. -Comando para adiquirir bless igual a do global adicionado "!bless" -Novas Backpacks sendo vendidas na Riona. -Cidade toda reformulada. -Npc "A Ghostly Sage" para aquisição da permição para Pits Of Inferno. -Pits of Inferno mais similar ao do Tibia Global. -Nova Hunt de Infernalist adicionada. -Novo local da Igreja. -Adicionado o NPC Erisk (vendedor de alguns itens 8.54 para quem fez Pits of Inferno) -Adicionado Nightmare Doll quest. -Bugs Foram Retirados... (account manager - instabilidade). Versão de Retomada (0.7.0) Rev 01 08/05/10 -Novo Distro totalmente estável. (LeozeraRox) -Sem bug do Deathlist (foi retirado por segurança). -Novo andar na Trainer Room. -Sem bug que dava crash no Server. -Algumas Mudanças. -Bugs Foram Retirados... Versão de Retomada (0.7.2) Rev 02 15/05/10 -Novo Distro 8.54/8.55/8.56/8.57. (LeozeraRox- Techloko) -Bug dos protocolos arrumados. -Algumas Mudanças. -Bugs Foram Retirados... Versão 0.7.5 30/07/10 -Novo Distro 8.60. (LeozeraRox - Robson) -Potions em Cargas sem Bugs. -Runas em Cargas sem Bugs. -Itens 8.60 Adicionados. -Monstros 8.60 Adicionados. -Itens 8.54/8.60 sendo vendidos no Npc Esrik após completar Missão. -Novo Outfit e Addons Wayfarer. -Estabilidade. -Itens 8.60 com suas funções em perfeito funcionamento. -Bugs Foram Retirados... Versão 0.7.5 Rev 01 31/07/10 -Novo Distro. (LeozeraRox - Robson) -Sem bug das Houses. -Edições no Itens.xml. -Pequenas mudanças em Nargor. -Edições na Pasta Monsters. Versão 0.7.5 Rev 02 31/07/10 -Bug das Runas Arrumado. -Edições no Itens.xml. -Jogabilidade 100% Nova Versão (0.7.5) Rev 03 12/07/11 -Adicionado o Npc Jonny ano Norte de Blood City. -Todas as Magias do Tibia 8.70. -Agora o refinador é vendido no NPC Dufi. -Alavancas agora vendem cargas nas Bps. -Bugs Foram Retirados... Nova Versão (0.7.5) Rev 04 17/07/11 -Adicionado Frag System. -Hagar agora é útil no servidor. -Quando o player é assassinado ele perde seu coração -Alguns npcs foram mudados de lugar. -A Jogabilidade foi melhorada... Versão Definitiva (0.8) 20/12/11 -Adicionado VIP Vocation. -Completamente Sem Bugs. -Novo Distro. -Suporte Para War System -Adicionado !stamina. -Boas mudanças na Cidade Principal. -Bug de Runas e Potions corrigidos. -Trainers Modificados. -Novas Hunts, tanto VIP quanto Free. -Balanceamento de Vocações. -Adicionado a Light City para adquirir os itens de Addon. -Corrigido o Ex-Key Ring. -Sem Bug da Soya e Dark Rodo -Adicionada Darashia, totalmente Full. -Ferumbras, Ghazbaran e Morgaroth com seus Loots 100% iguais ao Tibia Global. -POI ficou mais Real. -Melhorou a Estabilidade. -Adicionada Novas Quests. -Adicionado o Addon Doll, (Ex: !addon first warrior) Versão Completa (0.9) 17/01/12 -Mudanças no Depot. -Novo Distro "muito melhor" -Addons dão atributos agora. -Anti-Push dos BOTS (Elf e Cya) -Frag arrumado. -Sem bug das Guilds. -Adicionado Refinaria em Baixo do Temple. -Na versão com teleports, foi feito uma nova area. -Boas mudanças na Cidade Principal. -Novidade nos prêmios da POI. -Sem Bugs Versão Completa (1.0) 01/03/13 -Retirei o bug da contagem de frags -melhorei a jogabilidade. -Sem Bugs Versão Completa (1.1) 03/03/13 -Coloquei sistema anti-magebomb -Pode se comprar VIP no NPC Hagar. Versão Completa (1.2) 16/03/13 -Nova Distro "Muito Melhor", pois nao da lag no server. -Não tem mais as dll's infectadas (virus). -Coloquei mais areas de caça no OT -Novos Npcs -Npc Esrik em cima do ponto de venda do NPC Raphael -Modifiquei o Templo -Sistema anti-divulgação de OT-Server -Adicionei o comando !promotion -Deixei a database mais segura. -Verifiquei se havia alguns bugs. Versão Premium 26/04/13 -War System com Escudos 100% sem utilizar database sql (BY LeozeraRox) -War of Emperium sem utilizar database sql /woe on(Configurado para todas as quartas e sabados as 18 horas) -Edições na cidade -Edições na Hunt de Cyclops -Edições na Hunt de GS -Edições na Hunt de Demon -Vocações Balancead -SD Igual tibia global -Adicionei uma Hunt de Hero -Novo Comando para informações do server !expinfo -Novos Npcs: Alice -Guia do War System !infowar -Removi Bugs de mapping -Removi Bugs da Database -Pronto para deixar online. -Sistemas de Pontos /atributos -Adicionado o NPC Scrutinon -Adicionado Lottery System, sorteando addon dolls -Retirei bug maps. Versão GOLD 2016: OBS: Primeiramente gostaria de explicar a minha volta. Depois de muito tempo sem postar, atualizar, encontrei no meu computador uma versão do Styller unica, sem bugs e a qual eu nunca havia compartilhado, pois eu utilizava esta para fazer meus OTs. Agora estou disponibilizando abaixo. -Cidade toda reformulada (Procurei valorizar o PVP) -Sistema de venda de itens offline -Training Offline -Edições na Hunt de Draggy -Sistema de exp guild, a exp de todos aumentam em 1% para cada membro online -Sistema de casamento, marido e esposa ao caçar juntos ganham mais exp. (!marriage info) -Vocações Balanceadas -Regulagem das Spells -Sistema de Itens VIP -Vip agora pode ser comprada com !buyvip -Novos Npcs. -Area de Trainer toda reformulada -Incorporei a database sql, para quem preferir -Castelo de respawns e npcs exclusivos para quem terminar Inquisition Quest -Barco oferecendo viagens para 5 cidades -Area de teleports reformulada -Adicionei o removedor de frags para quem terminar Inquisition Quest -Adicionei o sistema de montaria para quem terminar Inquisition Quest -Nova quest para level 250+ -Sistema de presentes para os players -Auto bless para players 40- (Anti power abuser) -Novas areas de hunt -É possivel ver os inimigos do Guild War System que estão online (!warmembers) -Otimizei para que não ficasse pesado e prejudicasse a jogabilidade -Informações randomicas no broadcast -War of Emperium reformulada. -Deathcast. (Estimular a War e o Revanchismo). -Sistema de recuperação de stamina, basta deixar treinando nos trainers. -Retirei bug maps. Versão 2017: -Senha do GOD corrigida -Otimização. -Removi alguns bugs. Versão PLATINUM [03/03/2017]: -Nova distro bem mais otimizada -Adicionado Cast System. (!cast on) -Adicionado o CASTLE WAR 24Hrs -Battle sai ao entrar em Protection Zone. -Não é possivel jogar lixo nas casas. -!disband corrigido -Adicionado 2 cidades (Ghala e Belisy) -Auto Loot Adicionado. -Remoção de bug maps. Acc do GOD Raymond: god/styller ScreenShots Novo Visual do Templo Castle War 24Hrs War of Emperium Novo Visual dos Trainers. Barco para as Cidades cheias de Hunts Novo Visual do Depot Novos Teleports. Firewalker Boots Quest. Trainers Offline. Blue Legs Quest Real. Refinaria. War System 100%. Vocation VIP - Second Promotion. Inquisition Castle para quem terminou a Inquisition. Download Styller Yourots Platinum "2017" (8.60) https://www.4shared.com/rar/NtjBLvNyei/86_Styller_Yourots_Platinum_20.html? Scan.\\\"/// --> https://www.virustot...sis/1363451248/ Mapa Editor ---> Clique Aqui Postem ae o que Acharam Galera!!! Obrigado RME pela perfeição e por ser um Exelente Map Editor!!! Gogo Up LeveL!2 pontos
-
Bom dia jovens, graças ao grande Omega eu consegui terminar o código do NPC Dicer, a função para checar o gold foi feita por ele então deem um beijo nele O NPC é parecido com aqueles BOTS que ficam no tibia global em yalahar normalmente, você joga uma quantia em gold e fala L ou H também pode ser Low ou High e com sorte pode ganhar o dobro da quantia apostada, exemplo: Eu vou lá jogo 20k na mesa e falo Low, caso caia nos números 1, 2 ou 3 eu irei ganhar o dobro da quantia que eu apostei que no foi 20k, mas se cair nos números 4, 5 ou 6 eu iria perder esses 20k. O High é a mesma coisa porém ao contrario, se eu falo High e cair nos numero 4, 5 ou 6 eu ganho o dobro da quantia que eu apostei e se cair no 1, 2 ou 3 eu perderia tudo. Crie um arquivo em data/npc com o nome dicer.xml e adicione isso dentro: <?xml version="1.0"?> <npc name="Dicer" script="data/npc/scripts/dicer.lua" walkinterval="1000" floorchange="0"> <health now="100" max="100"/> <look type="132" head="114" body="0" legs="0" feet="114" addons="3"/> <parameters> <parameter key="message_greet" value="Ola {|PLAYERNAME|}, caso queria tentar a sorte diga {L} ou {Low} para apostar nos numeros {1}, {2} ou {3} ||| {H} ou {High} para apostar nos numeros {4}, {5} ou {6}!" /> </parameters> </npc> Agora vá até data/npc/scripts e crie um arquivo com o nome dicer.lua e adicione isso dentro: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local coins = {[2148] = 1, [2152] = 100, [2160] = 10000} function countMoneyOnPos(pos) local money = 0 for stack = 1, 50 do pos.stackpos = stack local item = getThingFromPos(pos) if item and item.uid > 0 then if coins[item.itemid] then money = money + coins[item.itemid] * item.type end end end return money end local posCoal = {x = 169, y = 58, z = 7} -- POSIÇÃO DO COAL, ONDE O GOLD DEVE ESTAR local posNpc = {x = 193, y = 45, z = 7} -- POSIÇÃO DO NPC local pos = getPosByDir(getThingPos(cid), getCreatureLookDirection(cid), 1) -- NÃO ALTERAR if msgcontains(msg, 'l') or msgcontains(msg, 'L') or msgcontains(msg, 'low') or msgcontains(msg, 'Low') then if countMoneyOnPos(pos) > 0 then if math.random(1, 6) <= 3 then doPlayerAddMoney(cid, countMoneyOnPos(pos)*2) doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 26) doSendMagicEffect(posNpc, 28) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(1, 3)..', parabéns!', TALKTYPE_ORANGE_1) else doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 2) doSendMagicEffect(posNpc, 26) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(4, 6)..', tente novamente!', TALKTYPE_ORANGE_1) end else doCreatureSay(getNpcId(), getCreatureName(cid)..', coloque uma quantia de gold no recipiente para começar a apostar!', TALKTYPE_ORANGE_1) end elseif msgcontains(msg, 'h') or msgcontains(msg, 'H') or msgcontains(msg, 'high') or msgcontains(msg, 'High') then if countMoneyOnPos(pos) > 0 then if math.random(1, 6) <= 3 then doPlayerAddMoney(cid, countMoneyOnPos(pos)*2) doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 26) doSendMagicEffect(posNpc, 28) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(4, 6)..', parabéns!', TALKTYPE_ORANGE_1) else doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 2) doSendMagicEffect(posNpc, 26) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(1, 3)..', tente novamente!', TALKTYPE_ORANGE_1) end else doCreatureSay(getNpcId(), getCreatureName(cid)..', coloque uma quantia de gold no recipiente para começar a apostar!', TALKTYPE_ORANGE_1) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Você deve fazer alterações nesta parte: local posCoal = {x = 169, y = 58, z = 7} -- POSIÇÃO DO COAL, ONDE O GOLD DEVE ESTAR local posNpc = {x = 193, y = 45, z = 7} -- POSIÇÃO DO NPC Aconselhável montar uma área pro npc ficar idêntica a da fotos para não bugar o código, o coal() deve sempre ficar na frente do player pois a função ira chegar o gold a frente do player. Ao falar Hi Npc verificando que não tem gold no coal Vencendo uma aposta Perdendo uma aposta Créditos: Markin(Anne) Omega pela função de checar o gold2 pontos
-
Mudar nome do Player. ( /rn Name, NewName, time )
kida123 e um outro reagiu a DuuhCarvalho por um tópico no fórum
[talkactions] Bom, o titulo já diz tudo, você muda o nome de um certo player. /rn Nome do Player, Novo Nome, tempo para o player ser kickado(em segundos). Exemplo : /rn Duuh, Duuh Carvalho, 5 Simples, porem útil. Vá em data / talkactions / scripts. cria um arquivo lua e cola isso dentro : Coloque a tag em data / talkactions / talkactions.xml : <talkaction log="yes" words="/rn" access="4" event="script" value="NomeDoArquivo.lua"/> Simples2 pontos -
[Show Off] Beto
DuuhCarvalho e um outro reagiu a beto06 por um tópico no fórum
http://4.imgland.net/-h6oz6.png http://4.imgland.net/a5zy8P.png2 pontos -
Fala galera do xtibia, Hoje estou trazendo o servidor PDA by: Bolz editado por mim, Passei um bom tempo Editando ele Espero que gostem;; • Menu: ├ Informações; ├ Ediçoes; ├ Erros; ├ Prints; ├ Download; └ Creditos. • Informações Basicas • • Erros do servidor • • PrintScreen • • Download's • Servidor PDA by: Bolz [Editado Por Mim ] http://www.4shared.com/rar/06OG8lB5ba/pda_by_bolz_verso_god_anna.html? OTClient:: http://www.4shared.com/rar/x5LgTQKLce/OTclient.html? @Atualizado 02/04/2014 • Menu: ├ Ediçoes; ├ Prints; ├ Download; • Edições / ajustes • • PrintScreen • • Download's • Servidor PDA by: Bolz [Editado Por Mim v2 ] http://www.4shared.com/rar/_lB31rwxba/PDA_By_Bolz_Verso_GOD_anna_v2.html? OTclient v2:: http://www.4shared.com/rar/aiqka_kQce/OTclient_v2.html? • Creditos • Slicer (pelo servidor) Brun123 (por alguns scripts, e por criar o pda) Stylo Maldoso (pelo mapa) Bolz (por editar Maior Parte do Server) Eu ( por Corrigir Varios bugs e Editar varias coisas no Servidor) Gabrielsales ( pelos Systemas:: "Held item", "Ditto system" ) valakas ( Por ter ajudado a resolve o Bug da Barra de Ataques do OTclient v2) Xtibia (por alguns scripts) Cometem OQ acharam do Server Tou parando com as atualizações por enquanto POr causa das Provas (Tenho que Passa) Mais quando terminar as Aulas posto Nova atualiazação... Obrigado a Todos que Elogiaram minha edição nesse Belo servidor1 ponto
-
Fala galera do xtibia, Hoje estou trazendo um servidor que estava editando para meu amigo Por no Vps dele, Mais ele Disse que Não Queria mais então resolvi Postar ele Para download AQ no xTibia.. alguns pensaram que é meu servidor mais não é, só usei como base e adicionei varios outros systemas como vocês veram nas Printscrens .. ex:: Held items com Tier, novas Remakes para os Pokemons, Novas quests e etc.. • Menu: ├ Informações; ├ Ediçoes; ├ Erros; ├ Prints; ├ Download; └ Creditos. • Informações Basicas • • Erros do servidor • • PrintScreen • • Download's • Servidor PokéxMaster: http://www.4shared.com/rar/Mti3uzUoce/PokxMaster.html? OtClient: http://www.4shared.com/rar/XmIpCJKWba/OtClient_Master.html? • Creditos • Slicer (pelo servidor) Brun123 (por alguns scripts, e por criar o pda) Stylo Maldoso (pelo mapa) Eu ( por Corrigir Varios bugs e Editar varias coisas no Servidor) Gabrielsales ( pelos Systemas:: "Held item", "Ditto system" ) Gristony (Pelo Module do Shop no OTC ) Xtibia (por alguns scripts) antes que alguém venha Fala merda no Tópico, dizendo que o servidor é somente uma copia do Meu, vou logo avisando a base sim realmente foi a minha antiga v1 mais tem Varios systemas adicionados e Varias outra coisas como sistema de Torneio só faltando configurar os horarios..1 ponto
-
1 ponto
-
Eae galeerrra xtibiana. Venho disponibilizar o famoso sistema de televisão poketibiano completo o sistema foi feito para ambos os clients tibianos. O sistema permite você assistir outro players jogando assim você fica sem usar itens,falar(so pm), se movimentar e etc... Vamos la: Vá em luascript.cpp e procure: int32_t LuaScriptInterface::luaGetTopCreature(lua_State* L) { //getTopCreature(pos) PositionEx pos; popPosition(L, pos); ScriptEnviroment* env = getEnv(); Tile* tile = g_game.getTile(pos); if(!tile) { pushThing(L, NULL, 0); return 1; } Thing* thing = tile->getTopCreature(); if(!thing || !thing->getCreature()) { pushThing(L, NULL, 0); return 1; } pushThing(L, thing, env->addThing(thing)); return 1; } E coloque embaixo: int32_t LuaScriptInterface::luaGetAllsTvs(lua_State* L) { //getAllsTvs(cid) ScriptEnviroment* env = getEnv(); Player* player = env->getPlayerByUID(popNumber(L)); if (!player) { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); return 1; } Tvlist::iterator it; it = player->tv.begin(); lua_newtable(L); uint32_t tableplayers = 1; for(uint32_t i = 1; it != player->tv.end(); ++it, ++i) { Player* players = env->getPlayerByUID(*it); if (players) { lua_pushnumber(L, tableplayers); lua_pushnumber(L, env->addThing(players)); pushTable(L); tableplayers = tableplayers+1; } } return 1; } int32_t LuaScriptInterface::luaSetPlayerTv(lua_State* L) { ScriptEnviroment* env = getEnv(); Player* player_tv = env->getPlayerByUID(popNumber(L)); Creature* creature = env->getCreatureByUID(popNumber(L)); if (!creature) { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } Player* player = creature->getPlayer(); if (!player) { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); return 1; } if (!player_tv) { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); return 1; } player_tv->tv.push_back(player->getID()); SpectatorVec::iterator it; SpectatorVec list = g_game.getSpectators(player->getPosition()); Player* tmpPlayer = NULL; Condition* condition = NULL; if((condition = Condition::createCondition(CONDITIONID_DEFAULT, CONDITION_GAMEMASTER, -1, 0, false, GAMEMASTER_INVISIBLE))) { creature->setHideName(false); player->addCondition(condition); g_game.internalCreatureChangeVisible(creature, VISIBLE_GHOST_DISAPPEAR); for(it = list.begin(); it != list.end(); ++it) { if((tmpPlayer = (*it)->getPlayer()) && !tmpPlayer->canSeeCreature(player)) tmpPlayer->sendMagicEffect(player->getPosition(), MAGIC_EFFECT_POFF); } for(AutoList<Player>::iterator pit = Player::autoList.begin(); pit != Player::autoList.end(); ++pit) { if(!pit->second->canSeeCreature(player)) pit->second->notifyLogOut(player); } IOLoginData::getInstance()->updateOnlineStatus(player->getGUID(), false); if(player->isTrading()) g_game.internalCloseTrade(player); player->clearPartyInvitations(); if(player->getParty()) player->getParty()->leave(player); g_game.internalTeleport(player, player_tv->getPosition(), true); } lua_pushboolean(L, true); } int32_t LuaScriptInterface::luaDoSendChannelsTv(lua_State* L) { ScriptEnviroment* env = getEnv(); Player* player = env->getPlayerByUID(popNumber(L)); if (!player) { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); return 1; } player->sendChannelsDialog(true); lua_pushboolean(L, true); return 1; } int32_t LuaScriptInterface::luaDoRemovePlayerTv(lua_State* L) { ScriptEnviroment* env = getEnv(); Player* player = env->getPlayerByUID(popNumber(L)); Player* creature = env->getPlayerByUID(popNumber(L)); if (!player) { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); return 1; } for(std::list<uint32_t>::iterator it = player->tv.begin(); it != player->tv.end(); ++it) { if ((*it) == creature->getID()) { Tvlist tv = player->tv; if (!creature) { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); return 1; } Player* player_tv = creature->getPlayer(); if (!player) { return 1; } SpectatorVec::iterator its; SpectatorVec list = g_game.getSpectators(player_tv->getPosition()); Player* tmpPlayer = NULL; Condition* condition = NULL; creature->setHideName(false); if((condition = player_tv->getCondition(CONDITION_GAMEMASTER, CONDITIONID_DEFAULT, GAMEMASTER_INVISIBLE))) { IOLoginData::getInstance()->updateOnlineStatus(player_tv->getGUID(), true); for(AutoList<Player>::iterator pit = Player::autoList.begin(); pit != Player::autoList.end(); ++pit) { if(!pit->second->canSeeCreature(player_tv)) pit->second->notifyLogIn(player_tv); } for(its = list.begin(); its != list.end(); ++its) { if((tmpPlayer = (*its)->getPlayer()) && !tmpPlayer->canSeeCreature(player_tv)) tmpPlayer->sendMagicEffect(player_tv->getPosition(), MAGIC_EFFECT_TELEPORT); } player_tv->removeCondition(condition); g_game.internalCreatureChangeVisible(creature, VISIBLE_GHOST_APPEAR); *it = NULL; } } } lua_pushboolean(L, true); } Continuando em luascript.cpp procure: //doCreatureSay(uid, text[, type = SPEAK_SAY[, ghost = false[, cid = 0[, pos]]]]) lua_register(m_luaState, "doCreatureSay", LuaScriptInterface::luaDoCreatureSay); Coloque embaixo: //doRemovePlayerTv(cid, id) lua_register(m_luaState, "removePlayerTv", LuaScriptInterface::luaDoRemovePlayerTv); //getAllsTv() lua_register(m_luaState, "getTvs", LuaScriptInterface::luaGetAllsTvs); //setPlayerTv(cid, player) lua_register(m_luaState, "setPlayerTv", LuaScriptInterface::luaSetPlayerTv); //doSendChannelstTv(cid) lua_register(m_luaState, "doSendChannelsTv", LuaScriptInterface::luaDoSendChannelsTv); Em luascript.h procure: static int32_t luaGetPlayerParty(lua_State* L); Coloque embaixo: static int32_t luaGetAllsTvs(lua_State* L); static int32_t luaSetPlayerTv(lua_State* L); static int32_t luaDoSendChannelsTv(lua_State* L); static int32_t luaDoRemovePlayerTv(lua_State* L); Vamos agora em game.cpp: Procure: bool Game::playerSay(uint32_t playerId, uint16_t channelId, SpeakClasses type, const std::string& receiver, const std::string& text) E substitua função por esta nova função: bool Game::playerSay(uint32_t playerId, uint16_t channelId, SpeakClasses type, const std::string& receiver, const std::string& text) { Player* player = getPlayerByID(playerId); if(!player || player->isRemoved()) return false; std::string str; if (player->getStorage(34421, str) && str == "true") { if (type == SPEAK_SAY) { player->getStorage(292924, str); player->sendTextMessage(MSG_STATUS_SMALL, str.c_str()); return false; } switch(type) { case SPEAK_WHISPER: return playerWhisper(player, text); case SPEAK_YELL: return playerYell(player, text); case SPEAK_PRIVATE: case SPEAK_PRIVATE_RED: case SPEAK_RVR_ANSWER: return playerSpeakTo(player, type, receiver, text); case SPEAK_CHANNEL_O: case SPEAK_CHANNEL_Y: case SPEAK_CHANNEL_RN: case SPEAK_CHANNEL_RA: case SPEAK_CHANNEL_W: { if(playerTalkToChannel(player, type, text, channelId)) return true; return playerSay(playerId, 0, SPEAK_SAY, receiver, text); } case SPEAK_BROADCAST: return playerBroadcastMessage(player, SPEAK_BROADCAST, text); case SPEAK_RVR_CHANNEL: return playerReportRuleViolation(player, text); case SPEAK_RVR_CONTINUE: return playerContinueReport(player, text); default: break; } internalCreatureSay(player, SPEAK_SAY, text, false); return false; } uint32_t muteTime = 0; bool muted = player->isMuted(channelId, type, muteTime); if(muted) { char buffer[75]; sprintf(buffer, "You are still muted for %d seconds.", muteTime); player->sendTextMessage(MSG_STATUS_SMALL, buffer); return false; } if(player->isAccountManager()) { player->removeMessageBuffer(); return internalCreatureSay(player, SPEAK_SAY, text, false); } if(g_talkActions->onPlayerSay(player, type == SPEAK_SAY ? CHANNEL_DEFAULT : channelId, text, false)) return true; if(!muted) { ReturnValue ret = RET_NOERROR; if(!muteTime) { ret = g_spells->onPlayerSay(player, text); if(ret == RET_NOERROR || (ret == RET_NEEDEXCHANGE && !g_config.getBool(ConfigManager::BUFFER_SPELL_FAILURE))) return true; } player->removeMessageBuffer(); if(ret == RET_NEEDEXCHANGE) return true; } switch(type) { case SPEAK_SAY: return internalCreatureSay(player, SPEAK_SAY, text, false); case SPEAK_WHISPER: return playerWhisper(player, text); case SPEAK_YELL: return playerYell(player, text); case SPEAK_PRIVATE: case SPEAK_PRIVATE_RED: case SPEAK_RVR_ANSWER: return playerSpeakTo(player, type, receiver, text); case SPEAK_CHANNEL_O: case SPEAK_CHANNEL_Y: case SPEAK_CHANNEL_RN: case SPEAK_CHANNEL_RA: case SPEAK_CHANNEL_W: { if(playerTalkToChannel(player, type, text, channelId)) return true; return playerSay(playerId, 0, SPEAK_SAY, receiver, text); } case SPEAK_PRIVATE_PN: return playerSpeakToNpc(player, text); case SPEAK_BROADCAST: return playerBroadcastMessage(player, SPEAK_BROADCAST, text); case SPEAK_RVR_CHANNEL: return playerReportRuleViolation(player, text); case SPEAK_RVR_CONTINUE: return playerContinueReport(player, text); default: break; } return false; } Continuando em game.cpp procure a função: ReturnValue Game::internalMoveCreature(Creature* creature, Direction direction, uint32_t flags/* = 0*/) E substitua por esta função: ReturnValue Game::internalMoveCreature(Creature* creature, Direction direction, uint32_t flags/* = 0*/) { const Position& currentPos = creature->getPosition(); Cylinder* fromTile = creature->getTile(); Cylinder* toTile = NULL; Position destPos = getNextPosition(direction, currentPos); if(direction < SOUTHWEST && creature->getPlayer()) { Tile* tmpTile = NULL; if(currentPos.z != 8 && creature->getTile()->hasHeight(3)) //try go up { if((!(tmpTile = map->getTile(Position(currentPos.x, currentPos.y, currentPos.z - 1))) || (!tmpTile->ground && !tmpTile->hasProperty(BLOCKSOLID))) && (tmpTile = map->getTile(Position(destPos.x, destPos.y, destPos.z - 1))) && tmpTile->ground && !tmpTile->hasProperty(BLOCKSOLID)) { flags = flags | FLAG_IGNOREBLOCKITEM | FLAG_IGNOREBLOCKCREATURE; destPos.z--; } } else if(currentPos.z != 7 && (!(tmpTile = map->getTile(destPos)) || (!tmpTile->ground && !tmpTile->hasProperty(BLOCKSOLID))) && (tmpTile = map->getTile(Position( destPos.x, destPos.y, destPos.z + 1))) && tmpTile->hasHeight(3)) //try go down { flags = flags | FLAG_IGNOREBLOCKITEM | FLAG_IGNOREBLOCKCREATURE; destPos.z++; } } ReturnValue ret = RET_NOTPOSSIBLE; if((toTile = map->getTile(destPos))) ret = internalMoveCreature(NULL, creature, fromTile, toTile, flags); if(ret != RET_NOERROR) { if(Player* player = creature->getPlayer()) { player->sendCancelMessage(ret); player->sendCancelWalk(); } } Player* player = creature->getPlayer(); if (player) { Tvlist::iterator it; it = player->tv.begin(); for(uint32_t i = 1; it != player->tv.end(); ++it, ++i) { Player* players = getPlayerByID(*it); if (players) { internalTeleport(players, player->getPosition(), true, 0); } } } return ret; } Procure a função: bool Game::playerRequestChannels(uint32_t playerId) Substitua a função por: bool Game::playerRequestChannels(uint32_t playerId) { Player* player = getPlayerByID(playerId); if(!player || player->isRemoved()) return false; player->sendChannelsDialog(false); return true; } Agora vamos a protocolgame.cpp e procure a função; void ProtocolGame::sendChannelsDialog(bool tv) E substitua por esta função: void ProtocolGame::sendChannelsDialog(bool tv) { NetworkMessage_ptr msg = getOutputBuffer(); std::string str; if(msg) { if (tv) { uint16_t bytes = 0; for(AutoList<Player>::iterator it = Player::autoList.begin(); it != Player::autoList.end(); ++it) { it->second->getStorage(22120, str); if (str == "true") { bytes = bytes+1; } } if (bytes < 1) { player->sendCancel("Não há nenhuma tv online"); return; } TRACK_MESSAGE(msg); msg->AddByte(0xAB); msg->AddByte(bytes); uint16_t id = 200; for(AutoList<Player>::iterator it = Player::autoList.begin(); it != Player::autoList.end(); ++it) { it->second->getStorage(22120, str); if (str == "true") { id = id+1; it->second->getStorage(12121, str); msg->AddU16(id); msg->AddString(str); } } return; } TRACK_MESSAGE(msg); msg->AddByte(0xAB); ChannelList list = g_chat.getChannelList(player); msg->AddByte(list.size()); for(ChannelList::iterator it = list.begin(); it != list.end(); ++it) { if(ChatChannel* channel = (*it)) { msg->AddU16(channel->getId()); msg->AddString(channel->getName()); } } } } Procure em protocolgame.h a seguinta declaração: void sendChannelsDialog(); Substitua por: void sendChannelsDialog(bool tv); Agora vamos em player.h e procure: void sendChannelsDialog() {if(client) client->sendChannelsDialog();} E substitua por: void sendChannelsDialog(bool tv) {if(client) client->sendChannelsDialog(tv);} Procure denovo em player.h: typedef std::list<Party*> PartyList; E adicione embaixo: typedef std::list<uint32_t> Tvlist; Continuando em player.h procure: AttackedSet attackedSet; Coloque embaixo: Tvlist tv; Vamos denovo a protocolgame.cpp e procure: if(player->isAccountManager()) { switch(recvbyte) { case 0x14: parseLogout(msg); break; case 0x96: parseSay(msg); break; default: sendCancelWalk(); break; } } Coloque embaixo: std::string str; if (player->getStorage(34421, str) && str == "true") { player->getStorage(292924, str); switch(recvbyte) { case 0x14: parseLogout(msg); break; case 0x96: parseSay(msg); break; case 0x97: // request channels parseGetChannels(msg); break; case 0x98: // open channel parseOpenChannel(msg); break; case 0x99: // close channel parseCloseChannel(msg); break; case 0x9A: // open priv parseOpenPriv(msg); break; case 0x1E: // keep alive / ping response parseReceivePing(msg); break; default: player->sendTextMessage(MSG_INFO_DESCR, str); break; } Seguidamente vá em creatureevent.cpp e procure: else if(tmpStr == "preparedeath") m_type = CREATURE_EVENT_PREPAREDEATH; Coloque embaixo: else if(tmpStr == "selecttv") m_type = CREATURE_EVENT_SELECTTV; Procure depois: case CREATURE_EVENT_PREPAREDEATH: return "onPrepareDeath"; Coloque embaixo: case CREATURE_EVENT_SELECTTV: return "onSelectTv"; Procure: case CREATURE_EVENT_PREPAREDEATH: return "cid, deathList"; Coloque embaixo: case CREATURE_EVENT_SELECTTV: return "cid, id"; Procure: uint32_t CreatureEvent::executeChannelJoin(Player* player, uint16_t channelId, UsersMap usersMap) { //onJoinChannel(cid, channel, users) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { std::stringstream scriptstream; scriptstream << "local cid = " << env->addThing(player) << std::endl; scriptstream << "local channel = " << channelId << std::endl; scriptstream << "local users = {}" << std::endl; for(UsersMap::iterator it = usersMap.begin(); it != usersMap.end(); ++it) scriptstream << "users:insert(" << env->addThing(it->second) << ")" << std::endl; scriptstream << m_scriptData; bool result = true; if(m_interface->loadBuffer(scriptstream.str())) { lua_State* L = m_interface->getState(); result = m_interface->getGlobalBool(L, "_result", true); } m_interface->releaseEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ char desc[35]; sprintf(desc, "%s", player->getName().c_str()); env->setEventDesc(desc); #endif env->setScriptId(m_scriptId, m_interface); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(player)); lua_pushnumber(L, channelId); UsersMap::iterator it = usersMap.begin(); lua_newtable(L); for(int32_t i = 1; it != usersMap.end(); ++it, ++i) { lua_pushnumber(L, i); lua_pushnumber(L, env->addThing(it->second)); lua_settable(L, -3); } bool result = m_interface->callFunction(3); m_interface->releaseEnv(); return result; } } else { std::cout << "[Error - CreatureEvent::executeChannelJoin] Call stack overflow." << std::endl; return 0; } } Coloque embaixo: uint32_t CreatureEvent::executeSelectTv(Player* player, uint16_t id) { //onSelectTv(cid, id) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { std::stringstream scriptstream; scriptstream << "local cid = " << env->addThing(player) << std::endl; scriptstream << "local id = " << id << std::endl; scriptstream << m_scriptData; bool result = true; if(m_interface->loadBuffer(scriptstream.str())) { lua_State* L = m_interface->getState(); result = m_interface->getGlobalBool(L, "_result", true); } m_interface->releaseEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ char desc[35]; sprintf(desc, "%s", player->getName().c_str()); env->setEventDesc(desc); #endif env->setScriptId(m_scriptId, m_interface); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(player)); lua_pushnumber(L, id); bool result = m_interface->callFunction(2); m_interface->releaseEnv(); return result; } } else { std::cout << "[Error - CreatureEvent::executeChannelJoin] Call stack overflow." << std::endl; return 0; } } Vá em creatureevent.h e procure: CREATURE_EVENT_ATTACK, Coloque embaixo: CREATURE_EVENT_SELECTTV Procure continuando em creatureevent.h: uint32_t executeCombat(Creature* creature, Creature* target); Coloque embaixo: uint32_t executeSelectTv(Player* player, uint16_t id); Vá agora em game.cpp denovo e procure a função: bool Game::playerOpenChannel(uint32_t playerId, uint16_t channelId) Substitua a função por: bool Game::playerOpenChannel(uint32_t playerId, uint16_t channelId) { Player* player = getPlayerByID(playerId); if(!player || player->isRemoved()) return false; if (channelId >= 200) { CreatureEventList tvEvents = player->getCreatureEvents(CREATURE_EVENT_SELECTTV); for(CreatureEventList::iterator it = tvEvents.begin(); it != tvEvents.end(); ++it) (*it)->executeSelectTv(player, channelId); return true; } ChatChannel* channel = g_chat.addUserToChannel(player, channelId); if(!channel) { #ifdef __DEBUG_CHAT__ std::cout << "Game::playerOpenChannel - failed adding user to channel." << std::endl; #endif return false; } if(channel->getId() != CHANNEL_RVR) player->sendChannel(channel->getId(), channel->getName()); else player->sendRuleViolationsChannel(channel->getId()); return true; } Vá em data/lib e crie um novo arquivo lua chamado tv system: names = {} storage_hastv = 22120 storage_watchtv = 34421 storage_nametv = 12121 storage_idwatchtv = 21213 storage_msgwatch = 292924 storage_namewatchtv = 21923 storage_save_group_id = 63732 smallerros = false ERROR_ID_NOT_FOUND = "ERROR\nPLAYER NOT FOUND\nSet Storage FALSE ON LOGIN" MSG_TV_SYSTEM = "Esta ação não e possivel você esta assistindo" MSG_CREATE_TV = "Parabéns, você criou sua TV " MSG_LOGOUT_TV = "Você saiu da tv " MSG_LOGOUT_TV_TOWN = "Você retornou a sua cidade " ID_ITEM_TV = 1949 ---- IMPORTANTE ID DA SUA CAM(CAMERA) MSG_WATCH_TV = "Você esta assitindo a uma tv" MSG_HAS_TV = "Você ja tem tv" MSG_NO_HAS_TV = "Você não tem tv" MSG_ENTER_PLAYER = "Um novo player entrou - " MININUM_STRING_CARACTER = 4 HAS_TV = "Você ja tem uma tv" MSG_DELETE_TV = "Você deletou sua channel com sucesso" MSG_WATCH_TV_ENTER_TV = "Você entrou na channel " NAME_WRONG = "Nome incorreto" MSG_HAS_NAME_TV = "Desculpe, ja existe uma tv com este nome escolha outro por favor" function setBooleanStorage(cid, storage, bool) if not bool then setPlayerStorageValue(cid, storage, -1) return true end setPlayerStorageValue(cid, storage, "true") return true end function checkFindStrings(str, array) for i=1, #array do if string.find(str, array[i]) then return true end end return false end function playerHasTv(cid) return getPlayerStorageValue(cid, storage_hastv) == "true" and true end function playerWatchTv(cid) return getPlayerStorageValue(cid, storage_watchtv) == "true" and true end function getTvOnlines() local t = {} local online = getPlayersOnline() for i=1, #online do if playerHasTv(online[i]) then table.insert(t, online[i]) end end return t end function getNamesTv(sep) local tvs = getTvOnlines() str = "" for i=1, #tvs do str = str..sep..getTvName(tvs[i]) end return str end function getIdByTvName(name) local tvs = getTvOnlines() for i=1, #tvs do if tvs[i] == name then return name end end return false end function stopWatchAllsPlayerTv(id) local onlines = getTvs(id) for i=1, #onlines do playerStopWatchTv(onlines[i]) end return true end function getNameTv(id) if not isPlayer(id) then print(ERROR_ID_NOT_FOUND) return false end local storage = getPlayerStorageValue(id, storage_nametv) if storage ~= -1 then return storage end return "" end function createNewTv(cid, name) if #name < MININUM_STRING_CARACTER or checkFindStrings(name, names) then doPlayerSendCancel(cid, NAME_WRONG) return false end local tvs = getTvOnlines() for i=1, #tvs do if getNameTv(tvs[i]) == name then doPlayerSendCancel(cid, MSG_HAS_NAME_TV) return false end end if playerHasTv(cid) then doPlayerSendCancel(cid, MSG_HAS_TV) return false end if playerWatchTv(cid) then doPlayerSendCancel(cid, MSG_WATCH_TV) return false end setBooleanStorage(cid, storage_hastv, true) setPlayerStorageValue(cid, storage_nametv, name) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, MSG_CREATE_TV..name) return true end function getTvNameById(id) if not isPlayer(id) then print(ERROR_ID_NOT_FOUND) return false end return getPlayerStorageValue(id, storage_nametv) end function playerWatchTv(cid, id) if not isPlayer(id) then if smallerros then print(ERROR_ID_NOT_FOUND) end return false end if playerHasTv(cid) then doPlayerSendCancel(cid, MSG_HAS_TV) return false end if playerWatchTv(cid) then doPlayerSendCancel(cid, MSG_WATCH_TV) return false end local name = getTvNameById(id) setBooleanStorage(cid, storage_watchtv, true) setPlayerStorageValue(cid, storage_msgwatch, MSG_TV_SYSTEM) setPlayerStorageValue(cid, storage_idwatchtv, id) setPlayerStorageValue(cid, storage_namewatchtv, name) setPlayerStorageValue(cid, storage_save_group_id, getPlayerGroupId(cid)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, MSG_WATCH_TV_ENTER_TV) doPlayerSendTextMessage(id, MESSAGE_STATUS_CONSOLE_BLUE, MSG_ENTER_PLAYER..getCreatureName(cid)) setPlayerTv(cid, id) return true end function playerStopWatchTv(cid) local id = getPlayerStorageValue(cid, storage_idwatchtv) local name = getPlayerStorageValue(cid, storage_namewatchtv) local town = getPlayerTown(cid) local namet = getTownName(town) local post = getTownTemplePosition(town) if getPlayerStorageValue(cid, storage_watchtv) ~= "true" then return true end removePlayerTv(cid, id) setBooleanStorage(cid, storage_watchtv, false) setPlayerStorageValue(cid, storage_idwatchtv, -1) setPlayerStorageValue(cid, storage_namewatchtv, -1) setPlayerGroupId(cid, getPlayerStorageValue(cid, storage_save_group_id)) doTeleportThing(cid, post) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, MSG_LOGOUT_TV..name) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, MSG_LOGOUT_TV_TOWN..namet) return true end function deleteTv(cid) if getPlayerStorageValue(cid, 22120) ~= "true" then return false end stopWatchAllsPlayerTv(cid) setBooleanStorage(cid, storage_hastv) setPlayerStorageValue(cid, storage_nametv, -1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, MSG_DELETE_TV) return true end Agora vamos em actions e crie um arquivo lua chamado tv e coloque: function onUse(cid, item, fromPosition, itemEx, toPosition) doSendChannelsTv(cid) end Vá em actions.xml e coloque a seguinte configurando com o id da sua tv: Agora vamos em talkactions e crie um novo arquivo lua chamado delete e coloque isto: function onSay(cid, words, param, channel) deleteTv(cid) return true end Agora vamos em talkactions.xml e coloque a seguinte tag: <talkaction words="/delete" event="script" value="delete.lua"/> Agora vamos a creaturescripts e crie um arquivo lua chamado createTv e coloque: function onTextEdit(cid, it:em, newText) if item.itemid == ID_ITEM_TV then createNewTv(cid, newText) return true end return true end Crie outro chamado de tv e coloque: function onSelectTv(cid, id) local tv = getTvOnlines() local idstarter = 200 for i=1, #tv do local tv = tv[i] local sub_id = i+idstarter if sub_id == id then playerWatchTv(cid, tv) end end return true end Crie outro chamado de tvlogout : function onLogout(cid) if isPlayer(cid) then deleteTv(cid) playerStopWatchTv(cid) end return true end Vá em creaturescripts.xml e coloque as seguintes as tags: <event type="textedit" name="newTv" event="script" value="createTv.lua"/> <event type="selecttv" name="selecttv" event="script" value="tv.lua"/> <event type="logout" name="tvlogout" event="script" value="tvlogout.lua"/> Vá em data/xml/group.xml e abra o arquivo e coloque o novo group: <group id="8" name="Tv" flags="3845069447162" customFlags="2097151" access="1" violationReasons="4" nameViolationFlags="2"/> Video do sistema em execução: E recomendavel NUNCA modificar as storages porques estão ligados aos codigos. Para mudar o id da camera e so mudar a variavel ID_ITEM_TV Para deletar uma tv diga o comand /delete1 ponto
-
Bom, muitas pessoas estavam tentando colocar para o pokemon se teleportar igual ao PxG, 5 sqm's na vertical ou 7 sqm's na horizontal Mas, o poketele q jah vem no PDA, ele so teleporta o poke com um valor unico, ou seja, se for 5 na horizontal tera de ser 5 na vertical, ou set for 7 na horizontal, 7 na vertical, e assim sucessivamente... Esse poketele aki q eu so fiz uma pekenininininina modificação, faz ele teleporta o poke q nem o dah PxG Bom, se o seu poketele jah esta funcionando, apenas substitua o script por este: Caso keira trocar, so mudar em maxx ou maxy ---------------------------------------------------------- Essa tag, é apenas se o seu poketele não estiver ativo: OBS: é pra substituir os scripts acima pelos seus!! OBS²: caso keira trocar o effect, muda nas duas partes 'doSendMagicEffect(getThingPos(cid), 211)'1 ponto
-
Increvam-se nas #Aulas de Mapping# Para se Tornar meu Aluno é presiso os Pré-Requesitos. Conexão com Internet Computador Razoavelmente Bom Tempo Disponivel de 2 Horas por Dia Seguir as Regras da Escola e do Forum Xtibia Remeres Map Editor Instalado e Configurado Meio de Contato : Skype, Email, Facebook Você vai Aprender muito nas aulas , e será capaz de fazer seu proprio mapa sozinho no final das aulas Material Enviado ao Aluno para o Estudo Noções Basicas de Mappeamento Logica de Criação de Cenário Nature Contruções Noções de Respaws Quests Nivel Basico Quests Nivel Avançado Parte do Material será enviada Via PDF ou Video Acada envio de material , será cobrado um pequenos exercicios Envie sua Incrição Nome : Idade : Experiência : Oque quer Aprender a fazer nas aulas de Mappeamento ? Tempo Disponivel : [ Manhã , Tarde , Noite ] Envie no Topico ou Via MP Ao Termino das Aulas Você estara tendo estes Resultados1 ponto
-
Global Full 8.70 LANÇADO! Crie sua conta e ganhe 10 dias de VIP.
pinheirog3 reagiu a hadamais por um tópico no fórum
Olá amigos Xtibianos, Mais do que apresentar um OTserv, estou vindo apresentar um trabalho bacana, e com vários diferenciais. Meu primeiro projeto de qualidade, e que veio sendo trabalhado bastante. Estarei abrindo esse servidor no dia 20/04 às 14h em fase Beta e ENFORCED por 1 semana. Vocês terão a oportunidade de experimentar um servidor de características quase únicas. Muitas delas, são exclusividades. Estou chamando esse projeto de Extreme War, Global Full 8.70! .: Calendário: -> Lançamento BETA: Domingo, 20/04/2014 às 14h (Todos começarão lvl 300+) EM VERSÃO ENFORCED! -> Lançamento OFICIAL: Domingo, 27/04/2014 às 14h (Todos serão resetados e ganharão 10 dias de VIP ao logarem) em versão OPEN. Mas, dependendo da escolha de vocês, pode ser que ele fique mesmo enforced, e assim faremos somente alguns ajustes. As contas ja podem ser feitas no site: http://extremewar.otserv.me/ http://extremewar.otserv.me/ http://extremewar.otserv.me/ http://extremewar.otserv.me/ .: Exp/Skills rate: 300x Skill 80.0 x Magic 20.0 x Loot 4.0 x .:Principais eventos Battlefield: Time A VS Time B em um cenário que exige estratégia e habilidade! Citywar: Faça o maior frag, como nos tempos de Counter Strike! Zombie Event: Fuja dos zombies e seja o último sobrevivente! Castle Land: Dispute a hegemonia do castelo e garanta um acesso exclusivo a um continente! Questland: Continente aberto todas as quintas e domingo às 20h. Explore! Fire Storm: Não deixe que a chuva de fogo lhe acerte, sendo o último sobrevivente! Enchanted Forest: Clique na bandeira central, passando por teleportes malucos! .: Quests customizadas (saindo da rotina!) Anihilator Returns: Desafie 6 Orshabaais na mais clássica quest. (Questland) SOI: Uma quest que une estratégia, habilidade e muito trabalho em equipe. (Infernia) Epic Quest: Extermine os 4 BOSSES mais difícies e ganhe seu passe para Epic Land. (Ethnos) .: E mais: 40 invasões Eventos semanais Concurso QI (Indique 1 amigo e ganhe 2 dias de VIP automáticamente se o player pegar lvl 200+) Caça ao Tesouro (Escondemos algumas bags em uma cidade invadida) Resta 1 Loteria .: Cidades Exclusivas Infernia: Trainers Vips com uma variedade de hunts para players lvl 200+ Columbia: Cidade com houses e hunts exclusivas, com baixo risco de pklização Ethno: Cidade exclusiva com excelentes hunts para players 100+ Epic Land: Cidade exclusiva de players que completarem a Epic Quest (lvl 300+) .: Sistemas diferenciados: Cast TV: Transmita sua tela do jogo para quem quiser assistir. Anti Kick: Paralisação dos monsters em caso de crash do server. Concurso QI: Indique amigos pelo site e ganhe dias de VIP! Trade House: Faça um trade de house com segurança, sem ser enganado. Cashe Site: Proteção contra flood em todas as páginas de nosso site. Modern ACC: Framework mais seguro da atualidade. Sistema Anti-DDoS: Seguramos ataques! Jogue com tranquilidade .: Principal diferencial (ao ver de muitos, inclusive eu xD): Não tem muita paciência de começar em um servidor novo? Ganhe um presente! - Ao pegar level 19, lhe damos 30 leveis ..... You advanced from level 19 to level 49. - Ao chegar no level 70, ganhe 20k. - Ao chegar no level 125, ganhe 100k. - Ao chegar no level 200, ganhe 200k. - Sabe qual é o melhor? A exp é 100x! .: Qualidades: - Mapa Global - 24 horas - Servidor dedicado com proteção Anti-Nuker 100% - Suporte In-game e no Site - Cliente Próprio (Baixe no Site) - Addons - Montarias Bom, esse foi um pouco do que é o Extreme War, Global Full 8.70. Espero vocês nessa mega war que acontecerá na sexta feira (20/04/2014) às 14h! Gratz ATUALIZAÇÃO: Fase Beta encerrada. Dia 27, domingo, às 14:00: reinauguração do servidor em modo Open e definitivo. Façam suas contas. http://extremewar.otserv.me/ http://extremewar.otserv.me/ http://extremewar.otserv.me/1 ponto -
Fim dos Tempos Capitulo 22 Sinais: (Do Grego: semeiom) Prodígio, portento, i.e., uma ocorrência incomum, que transcende o curso normal da natureza. Maravilhas: (Do latim: mirabilium) Coisa extraordinária, que causa espanto. Pode ser tida como um perfeito sinônimo de milagre. Imagine a destruição dominando por todos os lados. Não a destruição das coisas simplesmente, mas a destruição da mente das pessoas. Imagine uma pessoa fugindo pela rua, pessoas correndo por todos os lados, as forças armadas fazendo o seu melhor, mas sem obter sucesso... Essa pessoa em foco corre até um beco, se esconde atrás de uma caçamba de entulho e, depois de ver que o barulho das pessoas e das forças armadas vai para longe, ou seja, depois de ver que as coisas se acalmaram um pouco, começa a fazer suas anotações em seu caderno. Ele pensava que, talvez, um dia, essas anotações pudessem valer alguma coisa, pois ele esteve ali no dia mais terrível que ele já viveu em toda sua vida. Então ele começa a escrever as últimas notícias: Demônios dominaram a terra nesse momento, demônios que foram soltos por um alienígena que encontraram no meio do nada. O fazendeiro que o encontrou disse que ele caiu do céu... Droga! Eu sabia que esse alien não parecia ser confiável, mas agora é tarde de mais para ficar se lamentando.Esses demônios estão soltos por toda a parte e... Alguma coisa explode na rua atrás dele e, por isso, ele sai correndo beco à dentro. Ele atravessa o beco até sair do outro lado da quadra onde estava. Aquela rua também estava um caos, como as outras. Os militares estavam por toda parte e eles atiravam sem tomar muito cuidado com os civis, pois a coisa estava séria. Os demônios entravam nas pessoas e elas começavam a delirar, ter visões, ouviam vozes, perdiam a noção de espaço, pensavam que estavam em outros lugares, entre outras coisas mais tenebrosas. Alguns demônios mais violentos dominavam o corpo das pessoas e faziam com que elas corressem enlouquecidas pela rua e se jogava na frente de carros, de tiros e tentava matar suas vítimas. Mas, como a morte resolveu “tirar umas férias”, eles saiam do corpo das vítimas e iam para outra pessoa. Enquanto isso, a pessoa ficava agonizando por causa da dor que estava sentindo, sem morrer. Era uma coisa muito terrível. Outras pessoas, vendo aquele sofrimento, aquela violência, aqueles demônios, o sangue... Ficavam loucas e tentavam se suicidar, pulando dos prédios. Depois de dois meses direto com esses demônios fazendo esse tipo de coisa pela rua, por onde quer que você fosse era possível ver centenas de pessoas pulando dos prédios. Estava quase igual àquele filme chamado “Guerra Mundial Z”: uma cachoeira de pessoas tentando se suicidar, mas a morte estava impedida de levá-los. Por outro lado, enquanto tudo isso acontecia, Heylel era levado para um lugar seguro, pois ele tinha dito aos presidentes que aqueles demônios eram, na verdade, o exército de alienígenas enviados pelo rei do lugar de onde ele veio. Ele disse que eles queriam pegá-lo, pois ele era o único que era contra a tirania do rei. Um dos presidentes até perguntou: Por que você não disse que eles poderiam mandar tropas para te prender? Heylel: Porque eu tive medo que vocês me entregassem sem que antes ouvissem meu lado da história. O homem em particular, que estava ali, disse: Ótimo. Agora que está tudo esclarecido, saia da nossa frente! Venha senhor... Preparamos um caminhão para o senhor com um comunicador interno, para que o senhor não perca o contato conosco. Ali era um daqueles tribunais secretos,aonde só os presidentes vão para discutirem os assuntos mais... Secretos. Então, depois de saírem dali, eles continuaram para acharem um lugar seguro. Eles colocaram Heylel dentro da parte traseira de um caminhão especial das forças armadas do homem em particular. Lá dentro tinha toda uma central de operações. O homem que se dizia profeta ia à frente do caminhão falando para que todos adorassem ao homem em particular e aceitassem sua marca, pois ele era o único que poderia salvá-los daquela dor insuportável. As pessoas vinham aos montes para fazer com que sua dor parasse. O homem que se diz profeta as curava e seguia seu caminho, mas depois que ele se afastava, as feridas das pessoas se abriam novamente e o sangramento voltava. Então as pessoas iam atrás do caminhão pedindo para serem curadas. Quando eles estavam passando por uma rua, inclusive, dois demônios estavam “curtindo” sua destruição. Eles competiam entre si: Quantas pessoas você já pegou? E o outro respondia: 52 até agora, e você? O outro: - Haha! Já consegui 60! Você é um bosta! Não consegue me acompanhar! - É o que veremos! (Eles são desprezíveis, não são?) Mas então, quando eles foram para possuírem outra pessoa, o primeiro viu o carro onde o homem que se diz profeta estava. Ele parou e o segundo bateu nas costas dele, pois estava muito rápido. O segundo pergunta: Por que você parou? Está maluco? O primeiro: Olha lá. É o general. O segundo: O que a gente faz? O primeiro: Como assim?! Não lembra mais do combinado?! Temos que fingir que somos afetados por ele. Tudo que ele mandar a gente fazer, temos que fazer.Se não... Você já sabe. O segundo: Ah... Sei. Então vamos. Então eles vão em direção às pessoas que estavam próximas do carro do homem que se diz profeta como se eles fossem fazer alguma coisa terrível com eles. Então o homem que se diz profeta faz sair raios de suas mãos, quase acertando os demônios. Os demônios fogem fingindo que estão com medo, pois o raio nem os acertou. As pessoas, ao verem raios saindo das mãos do homem que se diz profeta, creem no que ele diz e isso ajudou para que elas fossem condenadas. Enquanto isso, Heylel assistia tudo de uma pequena janela que tinha na parte da frente do baú do caminhão. Ele vê quando os demônios saem voando fingindo que estão com medo e comenta consigo mesmo: Rsrsrsrs... Aiai... Esses dois sempre foram ótimos atores. Então, um pouco mais a frente, algo acontecia. Um grupo de cristãos estava impedindo que os demônios fizessem o que queriam com as pessoas ali perto. Devia ter uns 5 demônios rodeando aquele lugar, mas os cristãos ali, não deixavam que eles se aproximassem das pessoas. Eles viram duas pessoas feridas pelo ferrão dos demônios e resolveram ajudá-las. Para isso, fizeram uma roda ao redor dos feridos para protegê-los, enquanto outros dois oravam para que a ferida dos outros se curasse. Quando o caminhão de Heylel ia se aproximando dali, ele disse pelo rádio: Pare aí! Pare aí! Pare! Pare! Mas o que é aquilo? Os veículos pararam e os presidentes, que estavam cada um em seu carro, observaram enquanto um dos cristãos que estavam lá perto da roda que eles formaram deu ordens para que o demônio se afastasse. E ele obedeceu! Como eles estavam de longe, viram apenas o rapaz apontando o dedo para o demônio e dizendo algo. Os movimentos de mãos que ele estava fazendo ajudaram, pois foi bem na hora em que Heylel disse: Vejam aquilo. Aquele humano está dando ordens ao soldado. Vejam! Então o demônio se agachou e ficou imóvel. Nessa hora todos os presidentes só tiveram uma reação natural: . E o homem em particular perguntou: Mas como? Você não disse que eles são de onde você veio? Heylel: E são. Eu já sei o que deve estar acontecendo aqui. Aquele homem deve ser um K'eruwb disfarçado. Eles pensaram que eu não perceberia... Rsrsrs... Boa tentativa. Um dos presidentes: E eles podem fazer isso? Heylel: Claro que podem. Não subestime as habilidades dos K'eruwb. Homem em particular: Vamos ver mais de perto. Os veículos voltaram a andar lentamente, como antes, e foram se aproximando. “(Apocalipse 13:14) E engana, faz extraviar, aqueles que estão habitando sobre a terra, através dos sinais que lhe foi permitido fazer diante da besta feroz, dizendo àqueles que estão habitando sobre a terra para fazerem uma imagem à besta feroz que tem o ferimento da espada e que viveu.” Continua...1 ponto
-
Isso e um OT que tem Cast system, que e tipo uma TV que a outra pessoa abre pra verem ela jogando A Conta provavelmente vc cria pelo Site do OT1 ponto
-
Killua Task System [Atualizado 16/04/2014]
curruwilliam reagiu a Killua por um tópico no fórum
Assim que eu tiver tempo, coloco pra aparecer o completo1 ponto -
Dev c++ (DUVIDA)
JeanCristian reagiu a Maenilse por uma questão
baixei os meus daki, se quiser tentar conferir, ele vem com todas as libraries ja instaladas corretamente. Dev-Cpp1 ponto -
no disco local c/xampp/apache/conf tem la a pasta chamada extra1 ponto
-
getPlayerItems(cid)
DuuhCarvalho reagiu a caotic por um tópico no fórum
A função getPlayerItems lista todos os itens do player essa função e muito necessaria afinal a pessoal pode procurar itens especificos. Vá em luascript.cpp e procure: int32_t LuaScriptInterface::luaSetMonsterOutfit(lua_State* L) { //doSetMonsterOutfit(cid, name, time) int32_t time = (int32_t)popNumber(L); std::string name = popString(L); ScriptEnviroment* env = getEnv(); if(Creature* creature = env->getCreatureByUID(popNumber(L))) lua_pushboolean(L, Spell::CreateIllusion(creature, name, time) == RET_NOERROR); else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } Coloque embaixo: int32_t LuaScriptInterface::luaGetPlayerItems(lua_State* L) { typedef std::map<int32_t, Container*> Containerlist; typedef std::list<Item*> Itemlist; Itemlist itemlist; Containerlist container; ScriptEnviroment* env = getEnv(); Player* player = env->getPlayerByUID(popNumber(L)); if (!player) { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); return 1; } lua_newtable(L); for(int32_t slotId = 1; slotId < 11; ++slotId) { if (Item* item = player->inventory[slotId]) { itemlist.push_back(item); if(Container* containeritem = item->getContainer()) { container[container.size()+1] = (containeritem); } } } int32_t x = 0; Item* item = NULL; while (x < container.size()) { x = x+1; Cylinder* cylinder = container[x]; if (cylinder) { for(int32_t i = cylinder->__getFirstIndex(); i < cylinder->__getLastIndex(); i++) { if(item = cylinder->__getThing(i)->getItem()) { itemlist.push_back(item); if(Container* subContainer = item->getContainer()) { container[container.size()+1] = subContainer; } } } } } ItemList::iterator it = itemlist.begin(); for(int32_t i = 1; it != itemlist.end(); ++it, ++i) { if (Item* item = *it) { lua_pushnumber(L, i); env->addTempItem(env, item); lua_pushnumber(L, env->addThing(item)); pushTable(L); } } return 1; } Procure continuando em luascript.cpp: //doRemoveCreature(cid[, forceLogout = true]) lua_register(m_luaState, "doRemoveCreature", LuaScriptInterface::luaDoRemoveCreature); Abaixo coloque: //getPlayersItems(cid) lua_register(m_luaState, "getPlayerItems", LuaScriptInterface::luaGetPlayerItems); Em luascript.h procure: static int32_t luaGetPlayersByAccountId(lua_State* L); Coloque abaixo: static int32_t luaGetPlayerItems(lua_State* L); Exemplo de uso: function getItemsPlayer(cid, container) local x = {} local itens = getPlayerItems(cid) for i=1, #itens do if not isContainer(itens[i]) and not container then if (itens[i]) then table.insert(x, itens[i]) end end end return x end function onSay(cid, words, param, channel) local itens = getItemsPlayer(cid, false) local str = "" for i=1, #itens do if (itens[i]) then str = getItemName(itens[i]).."\n" end doShowTextDialog(cid, 1397, str) end return true end1 ponto -
Compilando OTserver Linux Ubuntu 13.10 64bits
Natanael Beckman reagiu a NetBSD por um tópico no fórum
Bom tutorial, mas muitas distros linux estão trocando o mysql pelo mariadb, isso não "afeta" o server porque, pelo menos teoricamente, ambos são compatíveis,mas... e a parte da compilação?1 ponto -
1 ponto
-
Duvida na modificação do link do site...
VictorWEBMaster reagiu a Junior001 por um tópico no fórum
Bem simples entre no site do no-ip.com crie uma conta e um host após fizer isto baixe o software do no-ip e logue-o e selecione o host criado. Depois libere as portas 7171,7172,8090 no seu modem/firewal. e Por ultimo no xampp vá no disco local c/xampp/apache/conf abra o httpd.conf e troque as portas 80 por 8090 depois abra a pasta extra e abra o httpd-ssl.conf e troque as portas 443 por 4499 após ter feito este procedimento seja feliz acesse assim http://seuhost:80901 ponto -
OTClient 0.6.5 rev2274 32bits
Tony Araujo reagiu a EdMignari por um tópico no fórum
Instala o Visual C++ Redistributable Packages (mesmo se seu sistema for x64, instala o vcredist_x86.exe também).1 ponto -
[C++] Compilando Um Otserv
Natanael Beckman reagiu a Maenilse por um tópico no fórum
no meu tbm aparece isso, porem n é obrigatorio a atualizaçao, basta vc pular esse passo, e se vc fez o resto tudo correto, so compilar normalmente.1 ponto -
Minhas fotografias [iPhone]
Alexclusive reagiu a saviomu por um tópico no fórum
Adoro ver fotos de paisagens e animais. Em breve vou comprar unm lumia 925 e irei tentar me aventurar neste mundo kk1 ponto -
Personal website | Themed Iron Man
Avuenja reagiu a felipemuniz2013 por um tópico no fórum
Você é o cara Avu todos web aqui te admiram ><1 ponto -
[PEDIDO] Website para OTServ 7.6 (XML)
VictorWEBMaster reagiu a grilado13 por uma questão
O único que eu utilizei e funcionou (após eu modificar corretamente para o meu servidor, na época), foi esse http://sourceforge.net/projects/nicaw-acc/files/NICAW%20XML/ boa sorte1 ponto -
[Resolvido] Como Colocar A PokeDex Igual Do PxG
Shadow Phantom reagiu a Wend ll por uma questão
Extraia o arquivo na sua pasta do otc. Arquivo: http://www.mediafire.com/download/yg0d1f2rur6dsa9/game_pokedex.rar Vai em lib/pokedex system e substitua por isto:1 ponto -
Como eu amo .Net Framework <3 O cara faz algo que funciona bem, mas nunca vai saber se funciona para os outros. É Igual desenvolver pro Internet Explorer. Eu vou fazer uma atualização que deve corrigir o problema.1 ponto
-
if msgcontains(msg, "tchau") then selfSay("Ateh a proxima.", cid) talkState[talkUser] = nil npcHandler:releaseFocus(cid) É só usar o método npcHandler:releaseFocus que o NPC para de falar com o jogador.1 ponto
-
pode escolher qual vc quer ler aqui http://www.xtibia.com/forum/forum/572-tutoriais-de-scripting/ ou ver esse http://www.xtibia.com/forum/topic/182113-tutorial-basico-creaturescripts/ ou http://www.xtibia.com/forum/topic/203791-qual-e-a-coisa-mais-importante-em-um-codigo-e-por-que-e-a-elegancia/ ou http://www.xtibia.com/forum/topic/213312-como-funcionam-os-scripts/ ou http://www.xtibia.com/forum/topic/223991-manual-de-referencia-de-lua-51/ ou POR NIVEL http://www.xtibia.com/forum/topic/222237-enciclopedia-de-tutoriais-de-scripting/ http://www.xtibia.com/forum/topic/99746-pasta-data-enciclopedia-13-tutoriais-para-entender-ela-toda/ clicando em uma porta recomendo ler sobre actions1 ponto
-
Vocês já devem ter essa criatura mais vai aii uma previa da minha versão dela, caso gostem podem usar podem editar a vontade... se eu tiver tempo mando depois as costas! abrs1 ponto
-
Amigo Tem esses 2 Modos:: Aumentando o Limite das Sprites ou Substituindo Sprites do Seu Client1 ponto
-
Pokémon Origins
felipemuniz2013 reagiu a lucasmacaca por um tópico no fórum
REP+ 10000 MUITO BOM ...BELO TRABALHO1 ponto -
Boa Tarde, Há sim, diversos tipos diferentes de mensagens você pode colocar para aparecer, experimente: MESSAGE_STATUS_CONSOLE_BLUE Ficando assim: doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você recebeu uma Chain Legs e 3100EXP. Procure Arkires, no cemitério ao norte, ele precisa de sua ajuda. ") Aqui tem uma lista das constantes definidas nas libs: MESSAGE_FIRST MESSAGE_EVENT_ORANGE MESSAGE_STATUS_CONSOLE_ORANGE MESSAGE_STATUS_WARNING MESSAGE_EVENT_ADVANCE MESSAGE_EVENT_DEFAULT MESSAGE_STATUS_DEFAULT MESSAGE_INFO_DESCR MESSAGE_STATUS_SMALL MESSAGE_STATUS_CONSOLE_BLUE Experimente e veja se a mensagem aparece normalmente. Aguardando respostas. Abraços1 ponto
-
[Arquivado]Então ? #PxG
LucasPirilampo reagiu a nociam por um tópico no fórum
Sim funciona, acho que vou deixar igual ao do pokexgame mesmo.1 ponto -
[Arquivado]Então ? #PxG
LucasPirilampo reagiu a nociam por um tópico no fórum
Coloquei na barra sera que fico bom ?1 ponto -
OT Digimon
pierobom reagiu a Leandro222 por um tópico no fórum
OT Digimon Baseado no anime digimon,o server irá contar com sistema de level para evolução de digimons,e sistema de fusão para digimons específicos,para quem não conhece um pequeno resumo. História Sete crianças estão num acampamento de verão quando, inesperadamente, uns estranhos aparelhos caem do céu - os digivices (digital devices ou dispositivos digitais) e elas são transportadas para o Mundo Digital (Digimundo), mais propriamente para uma ilha conhecida como Ilha Arquivo. Cada uma das crianças conhece um digimon que se torna seu companheiro. Para tentarem regressar a casa, as crianças percebem que existem digimons bons e digimons maus. Eles iniciam uma luta contra os inimigos que pretendem dominar o Mundo Digital com a força da Escuridão, contando com a ajuda dos seus digimons que, com o passar do tempo, se tornam mais poderosos e conseguem se converter em criaturas maiores e mais fortes. Sistemas Sistema de level:evoluções no 12,25,35,60,120 Sistema de cards:Não necessita de level,evolução automática. Sistema de Fusão: Dois digivices são colocados na máquina junto com itens específicos,no qual irá gerar um novo digivice. Necessitamos de spriters e mappers,tendo 2 vagas para cada. Contato só postar seus dados abaixo,o server conta com 195 digimons com sistema de evolução por level pronto,e alguns itens.1 ponto -
Cadê as imagens do server? O que já foi feito até agora? Cadê as informações sobre os diferenciais desse pra outros projetos? Tá faltando muita coisa aí no topic :31 ponto
-
[Arquivado][CLIENTE FLASH][ALL MAKERS] Cliente tibia em flash
KincaJr reagiu a VictorWEBMaster por um tópico no fórum
Novas imagens disponibilizadas!!! Opinem!1 ponto -
[New] GlobalWar 9.86
gumercindo26 reagiu a Piabeta Kun por um tópico no fórum
consegui achar um cliente 9.86, porem os colldown estao todos bugados, ou voce se cura ou voce bate, ou seja, se voce bater voce noa se cura e morre, se voce se cura voce nao bate e acaba morrendo, foda isso ai, perdio o tesao, como sempre esse ot tinha tudo pra ser o melhor br, e continua a mesma merda desde a verçao 8.70, que nao tinha nem npcs em edron, falo nada!1 ponto