Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 08/27/12 em %
-
Báu/alavanca/npc Que Troca Vip Coin Por Items
AncientGhastlyD e um outro reagiu a Vodkart por uma questão
Alavancas e báus Npc's2 pontos -
Piso Sagrado
XReMiX e um outro reagiu a Moonshadow por um tópico no fórum
Olá, sou novo aqui, não sei se estou postando certo ou se a formatação está boa. Enfim, vamos ao script. Nome: Piso Sagrado Função: Heala o hp do player por completo quando está sobre o piso "X" em dois segundos. - pisoSagrado.lua - No movements.xml coloque:2 pontos -
O script é para remover uma quantia "X" frag do jogador, diferente do outro script de remover frags que removia todos de uma só vez. Importante: Você precisa colocar a função 'doPlayerRemoveFrag' na sua lib, segue o link: http://www.xtibia.com/forum/topic/192856-doplayerremovefragcid-count/ talkactions: Actions2 pontos
-
Subwat Kamikaze v30
Killingtabom reagiu a rogeriocene por um tópico no fórum
Novo Lançamento!!!! < King Subwat Kamikaze> OMG Oque Ha de Novo no Server? -Sistem Pet /Pet noob,Pet normal,Pet Descente e Pet Foda -Shadow vip -Shadow vocaçao -Shadow coins e Demonic coins -Novos Sets: Brutal set,Demonic Set,Shadow set e o Melhor De todos King Set E Strike Set E Adicionado Apocalypse Set (19/07/2013) -Hard Quest - Dando Brutal Set -Novo Design Do Templo E Das Hunts Sistema De Refinamento de Set Removido o bug Do GOD -Demonic Quest - Dando demonic Set -Shop De Alavanca -Vocaçoes balanceadas -Novas Runas e armas -Comando !maxlvl -Novo Design -Trainer em cima do templo -Novos Monstros Adicionado Sistema De Cassino Nova Moeda De Jogo..Apocalypse Coin (Bugs De loot em monster Removidos) Imagens: Download : http://www.4shared.com/rar/JbURldl7/novo.html? GOSTOU ??/ + REP AE PLIZ !!!!!BUGS RETIRADOS!!!!!!1 ponto -
Oláaa gente ;D Hoje eu vou mostar como criar Corpses usando o otitemeditor No tutorial estarei mostrando como criar ID, e como adicionar o item type do item pelo Dat editor Agora vamos lá, estarei usando um Server de Pokémon como base: Primeiramente Baixe os programas necessários. Download: Ot item Editor: http://www.4shared.com/file/ur8xZioc/otitemeditor037.html Dat Editor: http://www.multiupload.com/KD9NW6TMF0 Scan Ot item editor: http://www.virustotal.com/file-scan/report.html?id=c72e216f7c17f9bd81c1ea8f0d9d18d729fca5783772e3b69b0b9469bf28c957-1308245391 Scan dat Editor: http://www.virustotal.com/file-scan/report.html?id=3c5e94e59df52ef693d12b0543aa66d6f8b0dee89a88bdb1e1cd1ca5d3d13195-1306952621 E baixe o tíbia no TibiaBR http://tibiabr.com/Downloads/Tibia_8.54 Depois de baixar tudo, Extraia o otitemeditor, o Dat editor E o instale o tíbia 8.54 Procure deixar tudo na mesma pasta para facilitar E pegue o Tibia.dat E o Tibia.spr e coloque dentro da pasta do Otitemeditor Abra o Otitemeditor Lembre-se se você não colocar o Tibia.dat E o Tibia.spr não ira funcionar (USE SEMPRE O DAT E O SPR DO TIBIA SE NÃO NÃO FUNCIONARA) Clique em File / Load otb E abra o Items.otb do seu Server que geralmente fica na pasta Data / Items / Items.otb Os items que aparecerão vão ser do tíbia Mas não se preocupe Porque os itens vão funcionar como os do Pokemon. Abra o dat editor, Vá em : File / Open Procure a pasta do client do seu Server, e nos seus devidos lugares abra o Tibia.dat e Tibia.spr (USE SEMPRE O DAT E O SPR DO CLIENT QUE VOCÊ USA PARA ENTRAR NO SEU SERVER) no meu caso o de pokemon Espere carregar e as sprites do seu client irão aparecer As sprites irão aparecer no Canto esquerdo Agora clique em: File / New / Item E os corpses aparecerão Agora escolha o corpse que você deseja, eu vou usar o do Bayleef Pegue o Item Type do item (Que é está na tabelinha No centro a baixo) E Guarde. Agora vá no Otitemeditor e Clique no + Que está ao lado do Deprecated Escolha qualquer um dos números Abaixo ( Esse numero será o id do seu item) Vou usar o numero 110 (GUARDE ESSE NUMERO) Clique no numero que você escolheu E na caixinha ao lado onde esta escrito CID Ponha o numero que eu falei pra você guardar. Retire o Not moveable da caixinha ao lado do Cid. Agora clique com o botão direito no item number que você escolheu e selecione NONE. Clique em File / Save as... E salve em cima do seu otb Antigo Agora vá na pasta do seu Server Clique em: Data / Items / Items.xml E abra com o bloco de notas Copie os dados de qualquer monstro, e cole abaixo Agora pegue o item id que você criou (AQUELE SEGUNDO NUMERO QUE EU FALEI PARA GUARDAR (OU SEJA O ITEM ID) E ponha encima do id antigo do item , e mude o nome do item Para “Fainted Nomedopoke” Salve e feche. Agora vá em: Data / Monsters / Pokes . Abra o XML do Pokémon que você esta editando. E mude o corpse=" ID DO CORPO"/> Mude o id do corpse e salve. Prontoooo Novo corpse adicionado CASO NÃO SAIBA CRIAR UM NOVO MONSTRO OLHE MEU OUTRO TOPICO (ENCINANDO A CRIAR POKEMONS FORMATO .IDC) http://www.xtibia.com/forum/topic/157664-pokemons-formato-idc/ Se te ajudei dá um +REP pra min aeee Não cai o dedo GENTE TINHA UM ERRO NO TUTORIAL, JÁ FOI CONSERTADO Créditos Psycho Okama : <Eooooo FUIIIIIIIIZ1 ponto
-
Bom galera, tem alguns Gesiors que vem com um bug nas letras, é quando escreve palavras com acentos ~ ´ , a letra fica toda desconfigurada. Aqui ensinarei a concertar as letras para que possa escrever normalmente. Como concertá-lo: Vá em layout.php e coloque esse código antes do <?1 ponto
-
Like Box Com Fundo Branco
VictorWEBMaster reagiu a hellcoreot por um tópico no fórum
Olá vim postar como fazer seu like box igual do globalwar com fundo branco: Vá em www/layouts/tibiacom/layout.php Abrá e procure(ctrl+F) por if($config['site']['screenoftheday'] == 1) logo após ?> adicione isso: <div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/pt_BR/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script> <div id="LikeBox" style="background-color:#ffffff; data-width="180" data-height="300""> <div class="fb-like-box" data-href="http://www.facebook.com/pages/seulinkaqui" data-width="180" data-height="300" data-colorscheme="light" data-show-faces="true" data-stream="false" data-header="false"></div> </div> só mudar isso para sua pagina do facebook: data-href="http://www.facebook.com/pager/seulinkaqui" Para mudar a cor basta mudar onde está #ffffff (#ffffff = branco!) é a cor! <div id="LikeBox" style="background-color:#ffffff; data-width="180" data-height="300""> Esse link tem os códigos das cores AQUI ss: Pronto qualquer duvida só postar!1 ponto -
Pasta Enciclopédia com todos os links de outros tutoriais ! Lista de Tutoriais Tutorial de NPCs Bem depois de um tempinho sem fazer nada de otserver devido a falta de tempo (dinheiro, paciencia e felicidade) resolvi dar uma apertada para terminar o que ja era para ter sido feito a tempos... Então devido a pedidos de amigos no MSN, resolvi sair da ordem inicial dos tutoriais, até porque vejo mais necessario um tutorial de npc do que outros. Esse tutorial irá servir para quem gostar de fazer certo NPCs mais complexos com storages, varias missões e tudo mais. Usando como base o Jiddo system apenas para comprar e vender itens, pois não gosto de usar sistemas que facilitam Pois não criam scripters e sim preguiçosos, ainda mais quando o sistema é abandonado ai você se lasca O npc é dividido em duas partes : - Arquivo XML : Responsavel pelo visual e algumas propriedades dele (pelo jiddo system) - Arquivo Lua : Responvasel pelas falas e vendas (Lua puro) Visual do Npc Bem primeiro vamos explicar o visual de um npc, <npc name="Bonifacius" script="data/npc/scripts/default.lua" walkinterval="25" floorchange="0" access="5" level="1" maglevel="1"><health now="150" max="150"/><look type="128" head="97" body="100" legs="115" feet="114" corpse="2212"/></npc> Explicando parte a parte Name : Nome dele que aparecerá para todos. script: Arquivo lua do script dele walkinterval: De quanto em quanto milessegundos ele irá caminhar. floorchange: Se ele irá subir escadas ou cair em buracos. access: O valor de acesso dele, caso ele tenha um acesso 5 poderá usar todo os comandos de GODS. level,maglevel: É tosco, você pode fazer ele soltar magias (nunca tentei) e no caso isso contaria. Health Now: Sangue que terá max: Maximo de health (ja fizeram npc com life media) look type: Tipo de roupa dele, Caso queira ele como objeto use look typeex. head,body,legs,feet: Cor da cabeça,corpo,calça e pé do npc. corpse: Corpo caso ele morra (LOL não dá...) Esse é a base do arquivo xml do npc. Caso você queirá enfiar tosquisses pelo Jiddo System fica mais ou menos assim: <?xml version="1.0" encoding="UTF-8"?><npc name="Bonifacius" script="data/npc/scripts/default.lua" walkinterval="25" floorchange="0" access="5" level="1" maglevel="1"><health now="150" max="150"/><look type="128" head="97" body="100" legs="115" feet="114" corpse="2212"/><parameters><parameter key="module_shop" value="1"/><parameter key="shop_buyable" value="banana,2676,2;grapes,2681,3;melon,2682,8;orange,2675,5;pumpkin,2683,10;cheese,2696,5;egg,2695,2;cookie,2678,2;meat,2266,5"/><parameter key="message_greet" value="What you doing soldier ? Take your weapon and go war!"/><parameter key="message_walkaway" value="Hey Hey, where you go ?"/><parameter key="message_farewell" value="Bye bye brave soldier. Remember, peoples without head, don't transform in undeads."/><parameter key="message_alreadyfocused" value="You are drunked ? You talk really talk to me ?"/></parameters></npc> <parameters><parameter key="module_shop" value="1"/><parameter key="shop_buyable" value="banana,2676,2;grapes,2681,3;melon,2682,8;orange,2675,5;pumpkin,2683,10;cheese,2696,5;egg,2695,2;cookie,2678,2;meat,2266,5"/><parameter key="message_greet" value="What you doing soldier ? Take your weapon and go war!"/><parameter key="message_walkaway" value="Hey Hey, where you go ?"/><parameter key="message_farewell" value="Bye bye brave soldier. Remember, peoples without head, don't transform in undeads."/><parameter key="message_alreadyfocused" value="You are drunked ? You talk really talk to me ?"/></parameters> Esse é um exemplo basico de npc vendedor, que não faz muita coisa. module_shop : Quer dizer que ao falar trade ele irá abrir a janela tosca de venda de itens. shop_buyable : Isso faz tudo que tiver ai ele vender sendo a sintaxe parameter key="shop_buyable" value="nome inutil (inutil mesmo não serve para nada),id do produto,preço; Podendo você adicionar milhares e milhares, unico porém de você adicionar pelo XML é que não há possibilidade de fazer a venda por backpack (pelo menos até a versão que testei) message_farewell Mensagem de despedida Essas message tem alguns tipos explicados abaixo : greet - mensagem de boas vindasfarewell - Mensagem de despedidabuy - Mensagem de confirmação de compraonbuy - Sei la o0bought - Mensagem de compra confirmadasell - Mensagem de confirmação de vendaonsell - sei la o0sold - Mensagem venda confirmadamissingmoney - Que você ta liso (sem nada)needmoney - Que você não tem dinheiro suficientemissingitem - Falta o item necessarioneeditem - Que você não te o item ou não tem a qtd suficienteneedspace - Que falta espaço na bp para o itemneedmorespace - Que prescisa de mais alguns espaçosidletimeout - Que você demoro e perdeu a vezwalkaway - Saiu da visão deledecline - Que desistiu da açãosendtrade - Quando abre a janela de tradenoshop - Que ele não tem janela de trade para mostraroncloseshop - Que você fechou a janela de tradealreadyfocused - Que tu deu um tapa na pantera, ou seja, ele já está falando com vocêplacedinqueque - Para você ter paciencia que já será atendido Tudo isso acima deverá estar depois de message_ e as mensagens em default você poderá encontrar em npc/lib/npcsystem/npchandler.lua Se você fazer asneira lá os npcs não funfam cuidado o0 Ainda há o npc de barco, muito simples : <parameter key="travel_destinations" value="desert,1594,835,5,180;edron,931,825,6,90;"/> Sintaxe value="nome da cidade ,coordenada x,coordenada y,coordenada z ,valor;" Da para você fazer tudo do LUA no XML, porém eu acho estranho e apenas frescura do Jiddo e dos Developers do TFS (não sei developer em Português) Caso seja curioso olhe nos arquivos bankmax.xml, merchant.xml e postman.xml que estão em npc/lib Bem a parte XML já acabo, ou seja, ela é muito simples. NPCS EM LUA Aqui é a parte legal do npc na qual até certos scripters novos fazem coisas desnecessarias ou que pioram... A base do arquivo usando Jiddo System é local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) endfunction onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) endfunction onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) endfunction onThink() npcHandler:onThink() endnpcHandler:addModule(FocusModule:new()) Ou seja npcs, que aquilo que mostrei no xml é suficiente você pode direcionar para o default.lua Eu disse que npcs feitos no XML, a opção de compra por backpack não é possivel Então para faze-la em um npc Lua ficará assim : local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)local talkState = {}function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) endfunction onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) endfunction onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) endfunction onThink() npcHandler:onThink() endlocal shopModule = ShopModule:new()npcHandler:addModule(shopModule)shopModule:addBuyableItem({'health potion'}, 7618, 45, 1, 'health potion')shopModule:addBuyableItem({'mana potion'}, 7620, 50, 1, 'mana potion')shopModule:addBuyableItemContainer({'bp hp'}, 2000, 7618, 900, 1, 'backpack of health potions')shopModule:addBuyableItemContainer({'bp mp'}, 2001, 7620, 1000, 1, 'backpack of mana potions')npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new()) Nesse exemplo o npc vende health potion,mana potion e bp dos respectivos. Sendo a sintaxe shopModule:addBuyableItem({'nome inutil'}, id preço, quantidade ou sub tipo, 'nome inutil') Esse nome só serve para você não se perder, pois ao dizer trade ele aparecerá o nome do item pelo items.xml e não o que voce falou Sintaxe da backpack shopModule:addBuyableItemContainer({'nome'}, id da backpack, id, preço, sub tipo ou quantidade (caso seja agrupavel), 'nome inutil') Ai sempre virá uma bp cheia dos item especificado. Caso não saiba ao clicar com o direito no TRADE e usar buy with backpack virá com isso ai Essa é a parte facil até agora tentarei pensar aqui 25 minutos um jeito de explicar muita coisa xD NPCS de Missões Bem aqui ensinarei a fazer npcs de missões, isso mesmo até mesmo aqueles de post office, paradox (que eu até ja fiz) Como sempre ensinarei a logica, ou seja, darei conhecimento não ideias local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)local talkState = {}function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) endfunction onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) endfunction onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) endfunction onThink() npcHandler:onThink() endfunction creatureSayCallback(cid, type, msg)if(not npcHandler:isFocused(cid)) thenreturn falseendlocal talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cidif msgcontains(msg, 'rainbow') or msgcontains (msg, 'perch') thenif getPlayerStorageValue(cid,30013) == 8 thenselfSay('Yeah. But peguins, stoled my last crate of this. Please go lair of this plague and take again my itens. You go ?', cid)talkState[talkUser] = 1elseselfSay('You are a lier. Leave here!', cid)endelseif msgcontains(msg, 'mission') thenif doPlayerRemoveItem(cid,7707,1) == 1 thenselfSay('Congratulations. Give this for Willard.', cid)setPlayerStorageValue(cid,30013,10)talkState[talkUser] = 0elseselfSay('You don\'t have nothing!', cid)endelseif talkState[talkUser] == 1 thenif msgcontains(msg, 'yes') thenselfSay('Great. Later report me asking mission.', cid)setPlayerStorageValue(cid,30013,9)talkState[talkUser] = 0elseselfSay('You don\'t have nothing!', cid)endendreturn trueendnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new()) Esse npc ai é um simples de quest, você pode se basear nele para seu primeiro npc Vamos explicar umas coisas importantissimas talkState = Isso ai é a genialidade, a cada passo você pode mandar o player para um estagio. Se você leu meus tutos percebeu que ele é um vetor, mais por que ? Porque, ao ser uma variavel ele é armazenada no servidor certo ? Então se não fosse um vetor, o npc falando com dois ao mesmo tempo poderia se confudir e ferrar tudo literalmente Se você dominar o talkState dominará 50% de npcs de missões Storages = Isso também é indispensavel nos npcs, é sempre bom reservar uns para cada missão Para se ela tiver varias etapas você não se confudir, Ou usar o mesmo value para poder aproveitar no questlog (explicado no tutorial SUper Quests) O npc acima ele é 4º npc da minha quest global do meu otserver de testes. Ignore os erros de Inglês. if msgcontains(msg, 'rainbow') or msgcontains (msg, 'perch') thenif getPlayerStorageValue(cid,30013) == 8 thenselfSay('Yeah. But peguins, stoled my last crate of this. Please go lair of this plague and take again my itens. You go ?', cid)talkState[talkUser] = 1elseselfSay('You are a lier. Leave here!', cid)end Aqui ao você falar rainbow ou perch ele começa a girar essa parte do script. Ou seja no caso eh msgcontains se você falar Sou gay rainbow e você é bobo,feio e chato Ele irá entender normalmente, e rodará o script. Caso fosse msg ai sim teria quer ser certinho (até maiscula e miniscula acho que ele duvidaria) No caso ele checa o storage 30013 se tem o valor 8, caso tenha ele fala aquela frase enorme e muda seu talkstate para 1 Se não tiver o storage com valor 8, ele te ofende. Esse storage 8 é adicionado no npc anterior. Se você tiver tudo certo ele tem pergunto algo, porém isso só será checado no talkstate 1 elseif talkState[talkUser] == 1 thenif msgcontains(msg, 'yes') thenselfSay('Great. Later report me asking {mission}.', cid)setPlayerStorageValue(cid,30013,9)talkState[talkUser] = 0elseselfSay('You don\'t have nothing!', cid)end Se você falar yes, ele manda você ir no penguim hell para você pegar os treco para ele. E te coloca o storage 30013 com valor 9 O valor do storage é fico importante depois da criação do quest log, pois nele os avanços da mesma missãoSó pode ser feito pelo mesmo storage. Lembrando que depois do tfs 0.3.0 beta 1 , é possivel adicionar palavras no valorPodendo ser :setPlayerStorageValue(cid,30013,"estagio 1") E veja que ele manda você falar mission quando completar Palavras entre { } de npcs fazem ele falar em palavras negriras Vamos supor (não supositorio), que você completou ela e falo mission para ele. O que iria checar ? elseif msgcontains(msg, 'mission') thenif doPlayerRemoveItem(cid,7707,1) == 1 thenselfSay('Congratulations. Give this for Willard.', cid)setPlayerStorageValue(cid,30013,10)talkState[talkUser] = 0elseselfSay('You don\'t have nothing!', cid)end Se você fala mission, ele automaticamente remoe o item 7707 (dado na quest) e parabeniza você. Dando o storage 30013 com valor 10 O valor necessario para o npc anterior voltar a falar com você. Caso você seja caloteiro ele já te desmente. Bem simples, não ? Claro que esse npc é minisculo. Porém ja da para seguir como base. OLhe a evolução dele Assim já para ter uma ideia de um npc maior... É só seguir essa base... Vamos criar um passo a passo para que não compreendeu. NPCs tutoriais Situação : O npc Valdemar quer que você entregue uma carta a irmã dele chamada Clarice. Pense. Ele irá dar uma carta, e algo que controle se você ja recebeu a carta. Porque se você deu calote uma vez Que não se repita, ou seja, um storage value. Que será o 2411 (bem masculo) local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)local talkState = {}function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) endfunction onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) endfunction onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) endfunction onThink() npcHandler:onThink() endfunction creatureSayCallback(cid, type, msg)if(not npcHandler:isFocused(cid)) thenreturn falseendlocal talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cidif msgcontains(msg, 'mission') thenif getPlayerStorageValue(cid,2411) == -1 thenselfSay('Entregue essa carta a minha irmã Clarice.', cid)setPlayerStorageValue(cid,2411,1)doPlayerAddItem(cid,8370,1)elseselfSay('Eu ja te dei a carta, aguardo resposta', cid)endendreturn trueendnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new()) Ai checamos se ele já fez a quest. No caso se tiver -1 (que nunca fez) ele poderá começa-la. E dará a carta ao player (item 8370 nem sei o que é) Ok. Essa parte ta montada, ele dá a carta. Situação : A NPC Clarice está cantarolando em sua casa, quando você chega com uma carta de seu irmão. Ela recebe de bom grado porém prescisa provar que recebeu. Porém seu jogador não sabe que existe storage value, então Você poderá enviar outra carta ou inventar que ela irá falar com ele. local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)local talkState = {}function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) endfunction onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) endfunction onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) endfunction onThink() npcHandler:onThink() endfunction creatureSayCallback(cid, type, msg)if(not npcHandler:isFocused(cid)) thenreturn falseendlocal talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cidif msgcontains(msg, 'letter') thenif getPlayerStorageValue(cid,2411) == 1 thenselfSay('Ah você relmente tem a carta de meu amado irmão?', cid)talkState[talkUser] = 1elseselfSay('Ah seu fanfarao saia daqui', cid)endelseif talkState[talkUser] == 1 thenif msgcontains(msg, 'yes') thenif doPlayerRemoveItem(cid,8013,1) == 1 thensetPlayerStorageValue(cid,2411,2)selfSay('Obrigada. Agora eu irei falar com ele sobre o assunto', cid)talkState[talkUser] = 0elseselfSay('Você não tem a carta dele', cid)endelseselfSay('Então porque veio aqui ?', cid)endendreturn trueendnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new()) Veja que ela é a prova de erros. Primeiro ao falar letter ela checa se você tem o storage com valor 1 (Ou seja, se você falo com ele) Se não falou ela já te manda pescar, se houver, ela já mete pergunta se você tem a carta Caso não já te manda pescar Caso sim ela tenta pergunta se voce tem a carta Caso diga não ela te manda pescar também, Caso fale sim ela tenta tirar sua carta, caso você tenha ela te agradece e coloca o storage com valor 2 Caso não tenha ela diz que você não tem a carta Manda pescar é um jeito delicado de mandar você ir tomar suco no orificio... Vamos suport, que você aceitou e entregou a carta tudo certinho Você deve voltar ao Valdemar para ele te dar algo não ? Situação : Você ja deu uma de carteiro e agora quer receber sua recompensa, então ao Oscar, Porém ele não é trouxa E como ele sabe se você ja fez tudo ? Uma dica começa com S e termina com orage... local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)local talkState = {}function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) endfunction onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) endfunction onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) endfunction onThink() npcHandler:onThink() endfunction creatureSayCallback(cid, type, msg)if(not npcHandler:isFocused(cid)) thenreturn falseendlocal talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cidif msgcontains(msg, 'mission') thenif getPlayerStorageValue(cid,2411) == -1 thenselfSay('Entregue essa carta a minha irmã Clarice.', cid)setPlayerStorageValue(cid,2411,1)doPlayerAddItem(cid,8370,1)elseselfSay('Eu ja te dei a carta, aguardo resposta', cid)endelseif getPlayerStorageValue(cid,2411) == 2 thenselfSay('Parabens. Você fez o pedido certinho! Receba sua recompensa!!!', cid)setPlayerStorageValue(cid,2411,3)doPlayerAddItem(cid,2160,1)elseselfSay('Termine o serviço!', cid)endreturn trueendnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new()) Vejam que eu usei a mesma palavra missão e adicionei um else. Se ele tiver o storage com valor 2 e falar missão, obviamente ele fez tudo e como é a ultima missão Não necessita fazer perguntas retoricas (sem resposta), então ele já da sua recompensa e ja fecha seu storage com 3 Caso você não tenha storage -1 e nem 2 só pode ser 1 (no caso dessa quest) então ele manda você termina o serviço PELO AMOR DE DEUS, SEMPRE ESTRUTURE SEU SCRIPT, SE NÃO VOCÊ IRÁ SE CONFUDIR COM ESSE SHOW DE ELSE E IF. Isso é a vantagem de se usar o Jiddo System, pois diminuiu a confusão. Porém como ja disse, é coisa de preguiçoso Mais cada um com o seu né... Aqui acaba o npc de missões. Eu expliquei apenas a parte dos ifs e elseifs. Isso é simples, agora depende de sua capacidade e criatividade. Melhor maneira de aperfeiçoar ? fazendo varios!!! Eu odeio npcs, quase morri de raiva de ter que fazer esses (serio ) Espero que aproveitem xD Funções de NPcs Se você leu esse tuto até aqui, é porque não entendeu nada, ou seu interesso muito, por npcs. Lembra dos npc base ? local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) endfunction onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) endfunction onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) endfunction onThink() npcHandler:onThink() endnpcHandler:addModule(FocusModule:new()) Se você observar ele tem 4 funções ai que nem foram usadas. onCreatureAppear(cid) : Ela faz uma ação quando o player entrar em seu raio de ação onCreatureDisappear(cid) : Ela faz uma ação quando o player sai do seu raio de ação. onCreaturesay(cid) : Quando o player fala algo. onThink(cid) : Seria ao pensar ao achar, não tenho certeza do que faz, porém é uma função muito usada. onCreatureMove(creature, oldPos, newPos) : Quando a criatura se move de um lugar para outro. Pelo que você ja perceberam eu odeio npcs, então não usei muitas dessas funções. No tfs tem o npc cityguard que ataca todos os red skull que aparecem em seu raio. local target = 0local prevTarget = 0local maxChaseDistance = 20local origPos = 0local origDir = NORTHlocal lastAttack = 0local followTimeout = 10local function isSkulled(cid)local skullType = getPlayerSkullType(cid)if(skullType >= 3) thenreturn trueendreturn falseendlocal function goToOrigPos()target = 0lastAttack = 0selfFollow(0)doTeleportThing(getNpcCid(), origPos)endlocal function updateTarget()if(isPlayer(target) == FALSE) thengoToOrigPos()elseif(not isSkulled(target)) thentarget = 0selfSay("Now, behave in the future.")endif(target == 0) thenlocal list = getSpectators(getNpcPos(), 8, 8, false)for i=1, table.getn(list) dolocal _target = list[i]if(_target ~= 0) thenif(isPlayer(_target) == TRUE and isSkulled(_target)) thenif(selfFollow(_target)) thentarget = _targetif(target ~= prevTarget) thenselfSay("We do not tolerate people like you here!")endprevTarget = targetbreakendendendendendendfunction onCreatureAppear(cid)if(cid == getNpcCid()) then--Wake up callorigPos = getNpcPos()--origLook = getCreatureDir(cid)endendfunction onCreatureDisappear(cid)if(target == cid) thengoToOrigPos()endendfunction onCreatureMove(creature, oldPos, newPos)--endfunction onThink()updateTarget()if(target == 0) thenreturnendlocal playerPos = getCreaturePosition(target)local myPos = getNpcPos()if(myPos.z ~= playerPos.z) thengoToOrigPos()returnendif(math.abs(myPos.x - origPos.x) > maxChaseDistance or math.abs(myPos.y - origPos.y) > maxChaseDistance) thenselfSay("I'll catch you next time.")goToOrigPos()returnendif(lastAttack == 0) thenlastAttack = os.clock()endif(os.clock() - lastAttack > followTimeout) then--To prevent bugging the npc by going to a place where he can't reachselfSay("You got me this time, but just wait.")goToOrigPos()returnendif( (math.abs(playerPos.x - myPos.x) <= 1) and (math.abs(playerPos.y - myPos.y) <= 1)) thendoTargetCombatHealth(getNpcCid(), target, COMBAT_LIFEDRAIN, -200, -300, CONST_ME_BLOCKHIT)lastAttack = os.clock()endend Vamos estuda-lo e aprender juntos!!! function onCreatureAppear(cid)if(cid == getNpcCid()) then--Wake up callorigPos = getNpcPos()--origLook = getCreatureDir(cid)endend Quando a criatura aparece ele chama a função getNpcCid que checa o player que o npc está focado. Ai a variavel origPos vira a coordenada que ele está no momento function onCreatureDisappear(cid)if(target == cid) thengoToOrigPos()endend Quando o player sai da tela, ele verifica se o target (player que ele está focado também!?) é um player Se for ele volta para a posição anterior local function isSkulled(cid)local skullType = getPlayerSkullType(cid)if(skullType >= 3) thenreturn trueendreturn falseend Essa função seria a base do npc, ele segue apenas players com skull. Poderiamos mudar essa função para ele seguir apenas player druids ? Claro!!! Como é um tutorial mudar o nome da função iriamos que remodelar todo o script (enche o saco) vamos apenas mudar dentro da função local function isSkulled(cid)local vocType = getPlayerVocation(cid)if(vocType== 2) or (vocType == 6) thenreturn trueendreturn falseend Mudando só isso os druid iriam sofrer na mão desses npcs xD Da para fazer ele atacar apenas monstros ? (acho que sim) local function isSkulled(cid)local idType = isPlayer(cid)if (idType ~= 1) thenreturn trueendreturn falseend No caso se for diferente de 1 ele arrebenta de magia. Teste essas modificações. Porém a ideia base é entender as funções e não só modifica-las. Bem a função updateTarget faz ele apenas fixar a target (alvo) players com skull white ou red. Então deixe ela para outro dia. Vamos verificar a onThink function onThink()updateTarget()if(target == 0) thenreturnendlocal playerPos = getCreaturePosition(target)local myPos = getNpcPos()if(myPos.z ~= playerPos.z) thengoToOrigPos()returnendif(math.abs(myPos.x - origPos.x) > maxChaseDistance or math.abs(myPos.y - origPos.y) > maxChaseDistance) thenselfSay("I'll catch you next time.")goToOrigPos()returnendif(lastAttack == 0) thenlastAttack = os.clock()endif(os.clock() - lastAttack > followTimeout) then--To prevent bugging the npc by going to a place where he can't reachselfSay("You got me this time, but just wait.")goToOrigPos()returnendif( (math.abs(playerPos.x - myPos.x) <= 1) and (math.abs(playerPos.y - myPos.y) <= 1)) thendoTargetCombatHealth(getNpcCid(), target, COMBAT_LIFEDRAIN, -200, -300, CONST_ME_BLOCKHIT)lastAttack = os.clock()end Explicando cada if. - Primeiro ele checa se ele tem target, se não tiver recomeça o ontarget - Segundo se ele verifica se o player está no mesmo andar que ele (coordenada z) se não tiver volta pro começo - Terceiro ele verifica se o player está muito longe (distancia maxima especificada acima), caso esteja ele fala mais ou menos "te pego na proxima" e volta pro seu respawn. - Quarto Ele muda seu ultima attack para o tempo atual do servidor - Quinto Ele verifica se ja passou o "tempo de descanso dele) - Se o tiver na posição certa de ataque, ele mete o sabugo no player espacando ele. Até o player morrer ou fugir. Entederam a logica ? Não !? Tudo bem. Vai treinando... Sinceramente esse npc é o mais complexo que ja vi. Eu entendi ele, porém não tenho animo de refaze-lo xD Espero que tenham gostado do tutorial, eu usei esse ultimo npc para vocês conseguirem entender que npc é complicado E pegar outros como exemplo é normal e muito util. Porém nunca levem creditos por aquilo que não fizeram. Duvidas, ofensas, reclamações ou elogios postem sem medo. Eu disse o que quis aqui e ouvirei tudo também Terminei isso as 01 e 07 minutos (ou Seja 02 e 07 ) acabo o horario de verão tenho + 1 hora pra dormir. Bom proveito!! E esperem os proximos que virão1 ponto
-
[Movements] Item Com Efeito!
Vodkart reagiu a Newtonnotwen por um tópico no fórum
Tava fuçando aqui a pasta de meu ot e achei um script massa, então decidi postar. Quando você coloca o item ele fica soltando um efeito a cada certo tempo, definido por você. Créditos: Vodkart, pelo script inicial Newtonnotwen, por retirar alguns bugs e adicionar algumas funções Em data/movements/scripts adicione um arquivo equip1.lua e adicione: Editando: -Vermelho: Mensagem que irá aparecer -Verde: Cor da mensagem (/y para saber as cores) -Marrom: Efeito (/z para saber os efeitos) -Azul claro: Tempo do efeito e da mensagem (1000 = 1seg) Em movements.xml adicione: Editando: -Vermelho: Id do item -Laranja: Slot Gostou? REP+ no Vodkart!1 ponto -
Random Item
victormatos reagiu a Newtonnotwen por um tópico no fórum
Ao clicar em um item tem chance de vir aleatoriamente outros. Em actions.xml adicione: Editando: -Vermelho: Item id -Verde: nome do arquivo Em data/actions/scrips crie um arquivo.lua, nomeio para random e adicione: Editando: -Vermelho: Id do item -Verde: Quantidade -Laranja: Chance (de 0.1 a 100) -Roxo: Mensagem quando receber o item -Marrom: Mensagem quando não receber nada Obs: A chance pode ser 0.1, 0.2... (Apenas UM numero depois do ponto) Se quiser adicionar mais itens na lista faça o seguinte: Observe que dupliquei a parte laranja, depois faça: -Laranja: Parte adicionada -Vermelho: Numero alterado Para retirar: Observe que retirei uma parte (em laranja), depois faça: -Vermelho: Modifique o numero para o seu antecessor (no caso 5 para 4) Imagem: ----------------------------------------Editado Obs: Créditos foram editados por uma analise do Vodkart. Créditos: Everllord - Script Newtonnotwen - Edição e tutorial1 ponto -
Not Drop Loot
DarkSiders reagiu a SkyLigh por um tópico no fórum
Iae galera hoje venho trazer um script que não dropa loot como um aol so que sem precisar usar amuleto e também não e uma bless então vamos la Em data / talkactions / scripts / e renome algum arquivo.lua para loot e adicione function onSay(cid, words, param) local price = 1000 -- dinheiro que vai custa if getPlayerStorageValue(cid,1254) > 0 or not doPlayerRemoveMoney(cid, price) then doPlayerSendTextMessage(cid, 28, "Você, não tem dinheiro suficiente e/ou já tem Anti Drop.") return true end doPlayerSendTextMessage(cid, 27, "Parabéns você comprou Anti Drop, por " .. price .. " gp's") setPlayerStorageValue(cid, 1254, 1) return true end talkactions.xml <talkaction words="!loot" event="script" value="loot.lua"/> data/creaturescripts/scripts renome algum arquivo pra antidrop e adicione function onDeath(cid, deathList) if getPlayerStorageValue(cid, 1254) > 0 then setPlayerStorageValue(cid, 1254, 0) doCreatureSetDropLoot(cid, false) end return true end em creaturescripts.xml <event type="death" name="noDrop" script="antiDrop.lua"/> em login.lua registerCreatureEvent(cid, "noDrop") Créditos Skyligh (Por Criar E Pela Ideia E Postar) Skyforever (Ajudou Em Alguns Erros) gostou ? rep +1 ponto -
Addon Por Alavanca
diegolopes13 reagiu a 1579091 por um tópico no fórum
Função: Vim trazer esse script pro xtibia, por que procurei em alguns lugares e nao encontrei. vou mostrar um poco como funciona: Créditos: Script: Shawak (Maxi) - 99% Explicação Traduzida: Guizitog - 1% É addon por alavanca, você clica na alavanca e pega o addon... é bem simples: Em data/actions/action.xml coloque: <action actionid="4001-4042" event="script" value="addons.lua"/> Agora em data/actions/scripts, crie um arquivo chamado addons.lua e coloque isso dentro: Instruções: [ActionID]: É a ActionID que você vai ter que por na alavanca. ♫ Name: É o nome do addon. ♫ Addon Type: Tipo do addon, addon 1 ou 2. ♫ Outfit: Numero do looktype especificando: ({female,male}). ♫ Cost: Custo em dinheiro do addon. ♫ Items: Items que voce precisa pra garantir o addon, após colocar o preço vai precisar de pagar com itens também? se sim: ex.: "{{5878,100},{5890,100}}", etc. Rep ++ aí se gostou..1 ponto -
Olá, trago minha primeira spell Ice Penitence! vá em /data/spells/scripts/attack crie um arquivo e renomeie para IcePen.lua e adicione isso dentro function onCastSpell(cid, var) local pos1 = {x = getPlayerPosition(getCreatureTarget(cid)).x - 2, y = getPlayerPosition(getCreatureTarget(cid)).y , z = getPlayerPosition(getCreatureTarget(cid)).z} local pos2 = {x = getPlayerPosition(getCreatureTarget(cid)).x + 2, y = getPlayerPosition(getCreatureTarget(cid)).y , z = getPlayerPosition(getCreatureTarget(cid)).z} local pos3 = {x = getPlayerPosition(cid).x + 2, y = getPlayerPosition(cid).y , z = getPlayerPosition(cid).z} local pos4 = {x = getPlayerPosition(cid).x + -2, y = getPlayerPosition(cid).y , z = getPlayerPosition(cid).z} local min, max = 100, 300 -- dano minimo, maximo! addEvent(doSendDistanceShoot, 1000, pos1, getPlayerPosition(getCreatureTarget(cid)), 28, cid) addEvent(doSendDistanceShoot, 1000, pos2, getPlayerPosition(getCreatureTarget(cid)), 28, cid) doSendDistanceShoot(getPlayerPosition(cid), pos3, 28) doSendDistanceShoot(getPlayerPosition(cid), pos4, 28) addEvent(doTargetCombatHealth, 1000, cid, getCreatureTarget(cid), 512, - min, - max, 43) return true end spells.xml </instant> <instant name="Ice Desorder" words="ice penitence" lvl="150" mana="400" prem="1" range="5" needtarget="1" blockwalls="1" needweapon="1" exhaustion="1800" needlearn="0" event="script" value="attack/IcePen.lua"> <vocation id="2"/> <vocation id="6"/> Explicando em local min, max = 100, 300 ali é o dano minimo e dano maximo o resto presumo que vocês já sabem ~~ Créditos ~~ Eu ou Skyforever(Por quase tudo) -- mesma pessoa Vodkart( me ajudou nessa linha) addEvent(doTargetCombatHealth, 1000, cid, getCreatureTarget(cid), 512, - min, - max, 43) Imagens1 ponto
-
Tfs 0.4 Usando Plain Encryption
LuckOake reagiu a vctolivo95 por uma questão
Gostaria de saber se á algum modo de fazer o tfs 0.4 red 3777 ou 3884 usar plain encryption, pois ele só aceita sha1, mesmo mudando no config lua ele ainda usa o sha1, e preciso usar plainpara nao dar conflito quando criar conta site/ot e vice versa. vlw valendo rep+1 ponto -
tenta local TEMPO = 3 -- Intervalo de Tempo em segundos. local function doSendAutoMessage(cid, pos) local t = string.explode(param, '"') if t[1] == "outfit" then return TRUE end if (isCreature(cid) == TRUE) then npos = getThingPos(cid) if (pos.x == npos.x) and (pos.y == npos.y) and (pos.z == npos.z) then doCreatureSay(cid, t[2], TALKTYPE_ORANGE_1) for i = 1, 180 do addEvent(function() doSendAutoMessage(cid, pos) end, i*1000) end end end end function onSay(cid, words, param) local t = string.explode(param, '"') if t[1] == "outfit" then return TRUE end pos = getThingPos(cid) doCreatureSay(cid, t[2], TALKTYPE_ORANGE_1) for i = 1, 180 do addEvent(function() doSendAutoMessage(cid, pos) end, i*1000) end return TRUE end vai ficar repetindo a mensagem a cada 1 segundo e por 3 minutos.1 ponto
-
Pronto local config = { money = 2900, item = 7368, -- ID do item que vai vender count = 20, -- Quantidade outift = 128, -- o id da newtype que precisa addons = 3 -- quantidade de addons que necessita exemplo citizen com o addon 1 e 2 } function onUse(cid, item, fromPosition, itemEx, toPosition) pos = getCreaturePosition(cid) if item.itemid == 1945 then if doPlayerRemoveMoney(cid, config.money) == TRUE then if getCreatureOutfit(cid,config.outift,config.addons) then doPlayerAddItem(cid, config.item, config.count) doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, "Você acaba de comprar "..config.count.." "..getItemNameById(config.item)..".") doSendMagicEffect(pos, CONST_ME_MAGIC_BLUE) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, "Desculpe, mais você nao tem dinheiro suficiente , ou nao tem a outift que precisa.") doSendMagicEffect(pos, CONST_ME_POFF) end end end end1 ponto
-
Alterar Group No Gesior
manojown reagiu a Piabeta Kun por um tópico no fórum
vá en character.php de control+f procure o que deseja traduzir e troque! exemplo: voce vai procurar "vocation", vai dar control+f no character.php com a palavra vocation, vai procurar a linha correta que corresponde ao vocation e vai trocar por vocação! e pronto! isso ai é um trabalho manual e com coerencia!1 ponto -
Saindo Do Bar (Momentaneamente)
Andre Miles reagiu a SkyDangerous por um tópico no fórum
entrei feliz. sai triste.1 ponto -
Not Drop Loot
Piabeta Kun reagiu a Vodkart por um tópico no fórum
funciona com a função main onDeath também1 ponto -
Sistema De Não Perder Loot!
Piabeta Kun reagiu a Vodkart por uma questão
http://www.xtibia.com/forum/topic/192816-not-drop-loot/page__pid__1325475#entry13254751 ponto -
Acc Manager . Gesior
Gameober reagiu a eduardosm14 por um tópico no fórum
Abra Accountmanagement.php Aperte ctrl+f Digite posx ai Vai Ter posx posy posz Nesses ae Voce Bem a Cordenada du Templo Como Por Exemplo: posx (160) posy (54) posz (7) Se Ajudei Rep ++1 ponto -
Erro Quando Salva O Ot
PvpOt reagiu a KennyConrad por um tópico no fórum
nen se preoculpa mano esse erro é quando os players falam1 ponto -
Nascer
maper1 reagiu a Piabeta Kun por um tópico no fórum
vai em htdocs/config/config.php nessa linha $config['site']['newchar_towns'][0] = array(2); Faça isso! $config['site']['newchar_towns'][0] = array(1,2,4,5); Lembrando que os numeros acima representam os das cidades que devem ser escolhere para morar!1 ponto -
download atualizado.1 ponto
-
1) Precisa de autoafirmação, o que indica baixa autoestima 2) Tenta forçar sem sucesso os outros a pensarem o mesmo 3) Não sabe responder uma pergunta com uma resposta eficiente e simples 4) Fala sobre religião como se estivesse certo sobre a sua opinião 5) Acredita somente na lógica como filosofia 6) Quando perde um argumento, começa a corrigir a escrita dos outros (sendo que nem mesmo sabe escrever) 7) Quer debater sobre inteligência e copia um artigo inteiro da Wikipédia sem nem mesmo tirar os "[editar]" 8) Diz que um gênio sabe de tudo e diz que é um gênio, mas aposto que mal sabe trocar uma lâmpada 9) Não tem absolutamente NENHUM BOM SENSO Agindo assim você não vai ser ninguém na vida meu jovem, fica a dica. Seja mais humano e menos robozinho da wikipédia.1 ponto
-
Marcelo96 se voc estiver usando wi-fi vai ter que liberar a porta 7171 do Roteador wi-fi. Procure o modelo do seu Roteador, pois cada um libera diferente. Depois de voc liberar a porta 7171 entre em: http://www.meuip.com.br/ e coloque esse ip no Config do seu OT ai você tenta entrar, se estiver offline é porq você não liberou a porta 7171 Espero ter ajudado bjs1 ponto
-
Baiak Infinity By Mayron
ArmoredRider reagiu a Mayronfla por um tópico no fórum
Concerteza! so q eu n sei colocar scan pois so novo aki! Quem puder por vlw.1 ponto -
então usa assim function onTimer() function doBroadSave(delay) if delay ~= 0 then doBroadcastMessage("[Global server save] O server será desligado em "..delay.." Minuto"..(delay > 1 and "s" or "")) addEvent(doBroadSave, 60000, delay -1) else doSaveServer() doShutdown() end end doBroadSave(5) return true end <globalevent name="globalSave" time="17:00" event="script" value="globalSave.lua"/>1 ponto
-
Concordo plenamente rsrsrs Nem se esquenta com isso, REP é o de menos, o importante é que o seu pedido obteve sucesso. Errando que se aprende, ninguém nasceu sabendo nada, levei muita porrada pra aprende o pouco que sei hoje rsrs até outro dia.1 ponto
-
[Gesior Acc] Gesior Account Maker 0.3.6 Fala galera eu estava andando pelo XTibia e não encontrei de jeito nenhum o Gesior ACC Maker atualizado, então resolvi compartilhar ele com a comunidade XTibiana... =) ChangeLog: OBS: Ele é compatível com todos os Servidores TFS! Imagem: Downloads: 4Shared: Clique aqui. SpeedyShare: Clique aqui. RapidShare: Clique aqui. Tutorial de instalação! Os créditos vão para a CipSoft e o pessoal da OTland que criaram o WebSite. Abraços, Doidin.1 ponto
-
1 ponto
-
está aqui o sistema para quem quiser: http://otland.net/f81/updated-block-ips-0-3-6-a-93613/1 ponto
-
Sistema De Idiomas
tonix23 reagiu a Nostradamus por um tópico no fórum
Muito bom, aliás, o que seu é ruim Arkilus? ;P1 ponto