
lkrazy
Membro
-
Registro em
-
Última visita
Histórico de Curtidas
-
lkrazy deu reputação a matsantos em [Resolvido] ao comprar itens no shop.Column not found: 1054 Unknown column 'product' in 'field list'' in
diz que ta faltando a coluna product
executa isso na sua database
se não mudar nada , usa essa
-
lkrazy deu reputação a Kemmlly em [AJUDA] Erro Mysql Query para salvar charCrie um chá pelo site, escolha uma vocação mas n entre no jogo, vá no banco de dados e procure o player e olhe sua vocação se está definido corretamente, se sim, acredito que n seja quey e sim algum script, se não, vá na página create character procure a função vocations e mande pra mim q edito pra você .
-
lkrazy deu reputação a Kemmlly em (Resolvido)[Pedido] NPC Task System@Xaraziinho
["cyclops"] = {monster_race={"cyclops","cyclops smith","cyclops drone"}, storage_start = 200204, storage = 91004,count = 500,exp = 50000,money = 30000},
800 era o dinheiro q iria receber
-
lkrazy deu reputação a Kemmlly em Ajuda com shop do serverMande o seu shop.lua
-
lkrazy deu reputação a Augusto em Cursos em Video Aula PHP+MySQLPHP+MySQL
Galera, estava procurando material relacionado a PHP (básico para eu começar a brincar) e encontrei várias video aulas sobre o assunto, abordando tambem MySQL, ajudando tambem bastante quem esta desenvolvendo sites pra OtServ. O autor se preocupou em desenvolver um método de ensino tanto para pessoas que ja conhecem a linguagem, como para leigas (como eu). Então, vale a pena.
4shared - Parte 1 - Parte 2
Tamanho: 1.2GB
Duração: 9 Horas.
Idioma: Portugues.
Crétidos: BaixeBr.org
-
lkrazy deu reputação a vankk em Modern AAC Table Shop_CREATE TABLE IF NOT EXISTS `shop_history` ( `id` int(11) NOT NULL AUTO_INCREMENT, `product` int(11) NOT NULL, `session` varchar(256) NOT NULL, `player` varchar(256) NOT NULL, `date` int(10) NOT NULL, `processed` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=31 ; CREATE TABLE IF NOT EXISTS `shop_offer` ( `id` int(11) NOT NULL AUTO_INCREMENT, `points` int(11) NOT NULL DEFAULT '0', `category` int(11) NOT NULL DEFAULT '1', `type` int(11) NOT NULL DEFAULT '1', `item` int(11) NOT NULL DEFAULT '0', `count` int(11) NOT NULL DEFAULT '0', `description` text NOT NULL, `name` varchar(256) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ; CREATE TABLE IF NOT EXISTS `shop_donation_history` ( `id` int(11) NOT NULL AUTO_INCREMENT, `method` varchar(256) NOT NULL, `receiver` varchar(256) NOT NULL, `buyer` varchar(256) NOT NULL, `account` varchar(256) NOT NULL, `points` int(11) NOT NULL, `date` int(10) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
-
lkrazy deu reputação a emersontb em Ajuda website poketibia erroVocê não definiu o id account_id no arquivo ou no banco de dados !
-
lkrazy deu reputação a Vodkart em erro ao passar com o pokemon em cima do piso premiumfunction onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerPremiumDays(cid) >= 1 then doSendMagicEffect(getThingPos(cid), 12) doPlayerSendTextMessage(cid, 25, "Seja Bem-vindo ".. getPlayerName(cid) .." !") else doTeleportThing(cid, fromPosition, true) doSendMagicEffect(getThingPos(cid), 2) doPlayerSendTextMessage(cid, 25, "Apenas Players Vip's podem passa.") end return true end
-
lkrazy deu reputação a Kemmlly em Erro Simples com Background Modern AACEsse erro não faz sentido nenhum, o 127.0.0.1 e o localhost são exatamente o mesmo caminho e apontam para os mesmos arquivos. Talvez seja cash, limpe o histórico e tente novamente, se não funcionar me manda seu layout.php e me diz o nome de sua imagem background e o formato dela.
-
lkrazy deu reputação a murluka em Outlands Pxg DownloadOutland completa para PDA.
DOWNLOAD: http://www.4shared.com/rar/VaQnQ718/Outlands_26112013.html?
O 4shared já faz o scan.
Outlands
Poison
Ghost
Fire (East)
Bug
Normal
Fly
Electric
Earth
Fight
Dragon
Os leveis dos ataques dos pokémons de Kanto estão como a do Pxg.
Outlands feitas com itens do server do Bolz (PDA).
Coloquei prints de algumas Outlands, não deu pra por de todas (forum doido).
SE GOSTOU, DÁ UM GOSTEI E DEIXE SEU COMENTÁRIO
Créditos:
murluka
-
lkrazy deu reputação a kpdo em [Pokemon Kpdo] Pokemon kpdo exaioros By CaterOlá caros amigos do forum estou aqui postando o pack completo do pokemon kpdo que atualmente se econtra online a 3 anos, eu sou o administrador do atual servidor pokemon kpdo, irei primeiramente falar o motivo de eu estar postando.
Um dos meus EX-staffs roubou os arquivos que eu passei e resolveu vender a terceiros o que eu achei muito anti-ético então resolvi postar open source, pois o que o mesmo fez comigo foi muito errado então não restou a nao deixar gratuito para que o mesmo não lucre nas minha costa.
Download:
Client+Servidor: Mega
Scan: O scan pega o client como um falso positivo por ter injeção de dll injection da barra do meu cliente porém vale lembrar que não tem virus, assim como o pack é um falso positivo.
Link do Scan: VirusTotal
Os sistemas que o jogo tem são:
Sistema de som Cool down e poke bar. Duel System Tv Cam System Sistema de torneio Sistema de Duelos com aposta Pokemons da 1 até a 5 geração e seus devidos shinys. Sistema de shinys Muitas quests TM system etc.
Creditos:
Renan(Admin) Equipe staff kpdo atual e EX staffs; www.exaioros.com -
lkrazy recebeu reputação de wougoplex em Ajuda Como Adicionar Pokemon Sai da Ball Etc!!!Dá uma olhada nesse Tópico.
Ajudei ? +REP
-
lkrazy deu reputação a extaN em [PEDIDO] Npc Saffari ZoneCrie um arquivo xml na pasta de npcs e coloque isso:
<?xml version="1.0" encoding="UTF-8"?> <npc name="Saffari" script="npcsaffari.lua" walkinterval="350000" floorchange="0" speed="0"> <health now="100" max="100"/> <look type="662" head="114" body="95" legs="58" feet="0"/> <parameters> <parameter key="message_greet" value="Ola. O saffari é um ótimo local para capturar pokemons! Para mais informações diga {travel}." /> <parameter key="message_farewell" value="Tchau." /> <parameter key="message_walkaway" value="Tchau." /> </parameters> </npc> Depois na pasta scripts crie um arquivo .lua chamada npcsaffari.lua e coloque isso la:
local lugar = {x=, y=, z=} -- Altera as cord aq < local item = 2152 local quantidade = 20 local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 santaNPC(cid, message, keywords, parameters, node) if(getPlayerItemCount(cid, 12617, 20) return false end if(not npcHandler:isFocused(cid)) then return false end if (parameters.present == true) then if(doPlayerRemoveItem(cid,item,quantidade) == true) then doTeleportThing(cid, lugar) npcHandler:say('Voce foi teleportado para o saffari.',cid) else npcHandler:say('Voce não tem o dinheiro suficiente para ser teleportado',cid) end npcHandler:resetNpc() return true end end npcHandler:setMessage(MESSAGE_GREET, "Ola|PLAYERNAME|. Eu posso te levar para o saffari,fale {saffari}.") local noNode = KeywordNode:new({'no'}, santaNPC, {present = false}) local yesNode = KeywordNode:new({'yes'}, santaNPC, {present = true}) local node = keywordHandler:addKeyword({'saffari'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Para ir para o saffari você devera pagar 2k, voce tem certeza? Se sim digite {yes}'}) node:addChildKeywordNode(yesNode) node:addChildKeywordNode(noNode) npcHandler:addModule(FocusModule:new()) PS: Coloque as cordenadas do local para onde ira ser teletransportado.
Sou novo na área de scripts, não sei se ele vai pegar. O script n foi testado, qualquer problema fale aq no post, n me mande msg
Te ajudei ?? REP+
-
lkrazy deu reputação a AgaSsI em [Sistema] Auto Lootcreaturescripts.xml
<event type="login" name="aloot_reg" event="script" value="aloot.lua"/> <event type="kill" name="aloot_kill" event="script" value="aloot.lua"/> creaturescripts/scritps aloot.lua
function onLogin(cid) registerCreatureEvent(cid, "aloot_kill") return true end local stor = 7575 function autoloot(cid, target, pos) local function doStack(cid, itemid, new) local count = getPlayerItemCount(cid, itemid) if (count > 100) then count = count - math.floor(count / 100) * 100 end local newCount = count + new if (count ~= 0) then local find = getPlayerItemById(cid, true, itemid, count).uid if (find > 0) then doRemoveItem(find) else newCount = new end end local item = doCreateItemEx(itemid, newCount) doPlayerAddItemEx(cid, item, true) end local function scanContainer(cid, uid, list) for k = (getContainerSize(uid) - 1), 0, -1 do local tmp = getContainerItem(uid, k) if (isInArray(list, tmp.itemid)) then if isItemStackable(tmp.itemid) and (getPlayerItemCount(cid, tmp.itemid) > 0) then doStack(cid, tmp.itemid, tmp.type) else local item = doCreateItemEx(tmp.itemid, tmp.type) doPlayerAddItemEx(cid, item, true) end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Looted ' .. tmp.type .. ' ' .. getItemNameById(tmp.itemid) .. '.') doRemoveItem(tmp.uid) elseif isContainer(tmp.uid) then scanContainer(cid, tmp.uid, list) end end end local items = {} for i = getTileInfo(pos).items, 1, -1 do pos.stackpos = i table.insert(items, getThingFromPos(pos)) end if (#items == 0) then return end local corpse = -1 for _, item in ipairs(items) do local name = getItemName(item.uid):lower() if name:find(target:lower()) then corpse = item.uid break end end if (corpse ~= -1) and isContainer(corpse) then scanContainer(cid, corpse, tostring(getPlayerStorageValue(cid, stor)):gsub('_', ''):explode(',')) end end function onKill(cid, target, lastHit) if not isPlayer(target) then local infos = getPlayerStorageValue(cid, stor) if (infos == -1) then return true end local list = tostring(infos):explode(',') if (#list == 0) then return true end addEvent(autoloot, 150, cid, getCreatureName(target), getCreaturePosition(target)) end return true end talkactios.xml
<talkaction words="/aloot" hide="yes" event="script" value="aloot.lua"/> Talkaction/scrips
local stor, limit = 7575, 5 --storage, limit to add. local allow_container = false --empty! not looted with items, atleast for now. function onSay(cid, words, param) local expl = param:explode(':') local action, rst = expl[1], expl[2] if (action:lower() == 'check') then local infos, list = getPlayerStorageValue(cid, stor), {} if (infos ~= -1) then list = tostring(infos):explode(',') end local txt = 'Autoloot List:\n' if (#list > 0) then for k, id in ipairs(list) do id = id:gsub('_', '') if tonumber(id) then txt = txt .. getItemNameById(tonumber(id)) .. ((k < #list) and '\n' or '') end end else txt = 'Empty' end doPlayerPopupFYI(cid, txt) elseif (action:lower() == 'add') then local infos, list = getPlayerStorageValue(cid, stor), {} if (infos ~= -1) then list = tostring(infos):gsub('_', ''):explode(',') end if (#list >= limit) then return doPlayerSendCancel(cid, 'You already have ' .. limit .. ' autolooting items.') end local item = tonumber(rst) if not item then item = getItemIdByName(rst, false) if not item then return doPlayerSendCancel(cid, 'not valid item.') end end if not allow_container and isItemContainer(item) then return doPlayerSendCancel(cid, 'this item can not be autolooted.') end local attrs = getItemInfo(item) if not attrs then return doPlayerSendCancel(cid, 'not valid item.') elseif not attrs.movable or not attrs.pickupable then return doPlayerSendCancel(cid, 'this item can not be autolooted.') end if isInArray(list, item) then return doPlayerSendCancel(cid, 'already added.') end table.insert(list, tostring(item)) local new = '' for v, id in ipairs(list) do new = new .. '_' .. id:gsub('_' ,'') .. ((v < #list) and ',' or '') end doPlayerSetStorageValue(cid, stor, tostring(new)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Item >>' .. getItemNameById(item) .. '<< has been added to the autoloot list.') elseif (action:lower() == 'remove') then local infos, list = getPlayerStorageValue(cid, stor), {} if (infos ~= -1) then list = tostring(infos):gsub('_', ''):explode(',') end if (#list == 0) then return doPlayerSendCancel(cid, 'You dont have any item added.') end if (#list >= limit) then return doPlayerSendCancel(cid, 'You already have ' .. limit .. ' autolooting items.') end local item = tonumber(rst) if not item then item = getItemIdByName(rst, false) if not item then return doPlayerSendCancel(cid, 'not valid item.') end end if not isInArray(list, item) then return doPlayerSendCancel(cid, 'This item is not in the list.') end local new = '' for v, id in ipairs(list) do if (tonumber(id) ~= item) then new = new .. '_' .. id:gsub('_' ,'') .. ((v < #list) and ',' or '') end end doPlayerSetStorageValue(cid, stor, tostring(new)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Item >>' .. getItemNameById(item) .. '<< removed from the autoloot list.') end return true end Usando
/aloot check
Cheka a Lista dos Loots
/aloot add:itemid ou nome do item
Exemplo
/aloot add:worm
/aloot add:2170
16:42 Item >>worm<< has been added to the autoloot list.
Para remover
/aloot remove:worm
/aloot remove:2170
Exemplo Testado:
16:41 Looted 2 gold coin.
16:41 Looted 1 cheese.
CREDITOS: eduardobean
é isso pessoal gosto da + Rep
-
lkrazy deu reputação a emersontb em Como Fazer BackUp da DataBase ?Se estiver usando o PHPAdmin:
Seleciona sua database <, depois clique em Exportar !!
-
lkrazy deu reputação a Ayron5 em [Npc] Que vende Stones (itens) por diamondsAntes de tudo quero deixar claro que pesquisei no fórum, Não encontrei. Resolvi fazer o meu
Este NPC faz oq o titulo diz vende Stone ou Item por Diamond. Npc simples e configurável Testado em Poketibia 8.54 tfs 0.3.6
Em data/npc, coloque um novo arquivo com o nome Ditem.xml e cole isso dentro:
Na pasta data/npc/script, crie um arquivo chamado "Ditem.lua" e cole isso:
Para adicionar mais itens:
1º - adiciona o nome do item para o player falar o nome dele, caso queira comprar -
selfSay('Eu vendo Fire stone, Water stone, Leaf stone. Diga qual voce quer adquirir.', cid) 2º - Após o ultimo
talkState[talkUser] = 3 Vc adiciona isso -
elseif(msgcontains(msg, '----NOME DO ITEM----') or msgcontains(msg, '---nome do item---')) then selfSay('O item Custa 3 Diamonds, Voce vai querer?', cid) talkState[talkUser] = 4 ----- Aqui coloca 4 pq ja tem a 3 3º - Na parte de -- Confirmação da Compra -- Depois de um
talkState[talkUser] = 0 end Adicione -- elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 4) then ---Coloque 4 por causa da ---talkState[talkUser] = 4--- if(doPlayerRemoveItem(cid, 2145, 3) == true) then ----Item q sera removido no caso 2145 Diamonds e 3 é a quantidade. selfSay('Thanks!', cid) doPlayerAddItem(cid, 11447, 1) ----- 11447 é o item q será entregue no caso é a fire stone, o 1 é a quantidade de itens. talkState[talkUser] = 0 else selfSay('Voce nao tem diamonds suficiente.', cid) talkState[talkUser] = 0 end Bom é isso espero ajudar alguém rsrsrs
-
lkrazy deu reputação a wevertonvrb em [Ajuda] Como Aumentar o Limite de Fishing fighterno vocations.xml
muda o fishing coloque 1.2 e testa vai mexendo aumentando ou diminuindo ate que fique um limite que você queira
-
lkrazy deu reputação a Reds em Script de Comprar Item por Comando.function onSay(cid, words, param)
moeda = getPlayerItemCount(cid, 2149)
if moeda >= 50 then
doPlayerRemoveItem(cid, 2149, 50)
doPlayerAddItem(cid,iddoitemqueganha,quantiedaddqueganha)
return TRUE
else
doPlayerSendCancel(cid, "Voce nao tem dinheiro.")
return FALSE
end
end
nao testei
-
lkrazy deu reputação a Reds em [Ajuda] Ao editar o mapa com RME buga o depot.abre as propriedades dele e coloca um id
-
lkrazy deu reputação a Gabrieltxu em Criando Client com launcherVocê já jogou GrandChase, League of Legends? Se já, Você deve ter reparado que quando você abre esses jogos, aparece uma janela com promoções, opções do jogo, um botão para abrir o jogo. Alem disso, essa janela baixa atualizações, mostra o progresso, atualiza o seu jogo e habilita você abrir o jogo. Isso é um Launcher, e é isso que eu estou disponibilizando para a comunidade! Um meio fácil, simples de mostrar promoções, video, tweets e qualquer tipo de Media que possa ser inserida em um site. Um meio fácil e simples de atualizar o seu próprio jogo. Um Launcher que é totalmente que a interface é totalmente configurável com um sistema de Skins.
Está interessado? Baixe Já o Launcher e aprenda no meu post como configura-lo!
Download:http://www.mediafire...xmohk7hy8rgniep
Oque ele é?
O Launcher funciona de uma forma Simples.Ele abre o site que irá mostrar as propagandas, media, etc. Depois, ele compara os arquivos do computador do player com os arquivos no servidor. Caso existam arquivos novos ou caso algum arquivo foi modificado ou até deletado, o Launcher baixa esses arquivos e coloca/substituiu eles no lugar certo ou deleta o arquivo caso ele não exista mais no servidor. Enquanto está baixando, o Launcher mostra para o player qual arquivo está baixando, quantos por cento do total da atualização já foi concluída com uma barra de progresso. Quando a atualização acaba, o Launcher mostra uma mensagem para o player e habilita um botão para que o player possa abrir o jogo. Simples assim
Como Usar
Descompacte o arquivo UpdateFiles.7z em qualquer lugar. Abra a pasta UpdateFiles, depois, abra a pasta Launcher. Todos esses arquivos são o Launcher. Esses são os arquivos que devem estar no computador do player, como o client do tibia. Use instaladores e crie um atalho(area de trabalho, barra de iniciação rapida) com o nome e ícone do seu server.Importante: Antes de entregar o launcher ao player, certifique-se de configura-lo e configurar o servidor.
Configurando o Launcher
O launcher.exe é a parte principal do Launcher. Você o configura de duas maneiras: Launcher.ini e Skin.ini. No Launcher.ini você configura as principais configurações do Launcher.exe. No Skin.ini, você configura a interface grafica(sistema de skins) do Launcher, e as imagens que são usadas nela.
Launcher.ini
O launcher.ini é encontrado na mesma pasta que o launcher.exe.
[General] ; Titulo da janela do Launcher, que aparece na barra de tarefas, etc Title=Launcher! ;É o link da pagina que vai aparecer dentro do Launcher. Dentro do rentangulo da pagina. ViewSite=www.google.com.br ;É o site de Download dos arquivos. DownloadSite=www.google.com.br ;Seu id unico. ELe serve para abrir apenas uma instancia do Launcher. MutexID=idunico ;Nome do executavel do Launcher. Não editar. LauncherExe=Launcher.exe ;Nome do executavel do seu jogo. Ex: tibia.exe, etc. executable=pbr.exe ;Mensagem que aparece quando a atualização está completa FinishMsg=Atualização completa Esse é o arquivo de configuração. Mas como disse Jack Stripador, vamos por partes: Title: É o titulo do launcher. o Titulo da janela, que aparece na barra de tarefas e tal. ViewSite: É o link da pagina que vai aparecer dentro do Launcher. DownloadSite: É o link de download dos arquivos: Ex: www.seusite.com.br/UpdateFiles/ MutexID: É um id unico seu. Ele serve para que existe apenas uma instancia do Launcher aberta no computador do player. LauncherExe: É o nome do executavel. altere isso caso você mude o nome do launcher.Recomendo que não altere, inves disso, crie no instalador um atalho com o nome do seu server que aponte para o Launcher.exe. Executable: É executável do seu client. FinishMsg: É a mensagem que aparece quando a atualização está completa. Ela aparece em um label dentro do programa, no mesmo lugar que aparece o nome do arquivo que está sendo baixado no momento. [General] ;Posição X(horizontal) e Y(horizontal) em pixels do Botão OK/Enter(o butão que abre O Cliente quando a atualização está completa) EnterBtnX=100 EnterBTnY=250[/b][/font][/color] [b];Posição X(horizontal) e Y(horizontal) em pixels do Botão Minimizar MinimizeBtnX=350 MinimizeBTnY=40[/b] [b];Posição X(horizontal) e Y(horizontal) em pixels do Botão Fechar CloseBtnX=450 CloseBtnY=10[/b] [b];Posição X(horizontal) e Y(horizontal) em pixels da barra de progresso(que mostra o progresso do download) ProgressX=10 ProgressY=300 ;Tamanho em X(horizontal) e Y(horizontal) em pixels da barra de progresso(que mostra o progresso do download) ProgressWidth=100 ProgressHeight=20 ;A cor da barra de progresso cheia ProgressColor=16776960 ;A cor de fundo da barra de progresso ProgressBackColor=16776960[/b] [b];Posição X(horizontal) e Y(horizontal) em pixels do retangulo da pagina de internet(viewsite) ScreenX=10 ScreenY=10 ;Tamanho em X(horizontal) e Y(horizontal) em pixels do retangulo da pagina de internet(viewsite) ScreenWidth=200 ScreenHeight=200[/b] [b];Posição X(horizontal) e Y(horizontal) em pixels do label(texto) que mostra os arquivos sendo baixados e mostra a actualizedMsg FileLbX=200 FileLby=200 ;Tamanho em X(horizontal) e Y(horizontal) em pixels do label(texto) que mostra os arquivos sendo baixados e mostra a actualizedMsg FileLbWidth=100 FileLbHeight=20[/b] [b]
lembrando que o tamanho dos butões(em x e y) é configurado a partir das imagens da skin.
Imagens:
Na pasta Skin, existe a pasta IMG, essa pasta tem as imagens que são usadas no Launcher e fazem parte da skin,Por exemplo, botões, fundo do launcher.
você deve substituir essas imagens para ter seu proprio design. Elas são:
background.png: É o fundo do Launcher, a imagem que fica atraz, pode ser transparente.
close.png: É a imagem do butão de fechar.
minimize.png: é a imagem do butão de minimizar.
enteron.png: É a imagem do butão Enter quando o client está atualizado e pronto para ser aberto.
enteroff.png: É a imagem do butão enter quando o client está desatualizado.
loadbackground.png: É a imagem de fundo de quando o launcher está carregando, pode ser transparente(efeito dahora )
Brinque a vontade com as skins! Assim você ficará mais familiarizado com a interface gráfica.
Servidor
O sistema de Update do Launcher é muito simples. Ele apenas faz uma copia do servidor. O computador do player sempre está igual ao servidor. Caso mude algo no servidor, no computador do player essa mudança irá ser baixada e atualizada.
Configurando
Primeiro, coloque todos os arquivos(como uma pasta chamada client que contem o seu client tibia e os arquivos dele) que devem ser atualizados dentro da pasta update que fica dentro da pasta UpdateFiles. Todo arquivo ou pastas que devam ser atualizada devem ser estar dentro da pasta Update.
Depois, certifique-se de configurar o launcher da maneira que quiser. Depois, execute O gendata.exe. A seguir, copie a pasta UpdateFiles para a pasta Htdocs dentro da pasta do XAMP. Pronto, o servidor está pronto.
Lembre-se que caso exista algum arquivo no computador do player que esteja dentro da mesma pasta do Launcher e não foi configurado no servidor com o gendata, ele foi vai ser deletado. Isso serve para deletar arquivos que não são mais usados.
A pasta "updatefiles" vai estar acessivel pela internet por esse link "www.seusite.com.br/updatefiles/.
Esse link você deve botar no DownloadSite no launcher.ini.
O sistema de download do Launcher é como se você bota-se o seu client para download no seu proprio site usando o seu proprio servidor para o download. Geralmente, você coloca o arquivo na htdocs, e depois bota no site o link(www.seusite.com.br/arquivo.exe). O launcher funciona da mesma forma, só que é automatizado. Você usa o gendata, coloca a UpdateFiles dentro da htdocs e coloca no downloadsite(launcher.ini) do launcher: www.seusite.com.br/updatefiles/ . Assim, ele sabe a pasta que estão os arquivos e faz o download de cada um.
Esse modelo é muito simples, e muito util. Cada vez que você quiser modificar o Launcher no computador do player(caso eu atualize o launcher ou você mude alguma configuração) é so modificar os arquivos da pasta Launcher dentro da UpdateFiles e usar o gendata denovo. Para atualizar os arquivos do Client, apenas mude o que tem dentro da pasta client que fica dentro da pasta Update e execute o GenData.
Lembre-se de atualizar o instalador do jogo cada vez que modificar/atualizar o launcher.
Os arquivos, quando são baixados do servidor, são colocados na pasta do Launcher no computador do Player. Por exemplo, os arquivos dentro da pasta Client, ficam dentro de uma pasta Client na pasta do Launcher no computador do Player.Todas as pastas e arquivos dentro da pasta Update vão para a mesma pasta do Launcher.
Caso exista um arquivo novo que não exista no computador do player, o launcher baixa esse arquivo novo. Caso um arquivo não exista mais no servidor(foi removido da pasta update) o launcher deleta no computador do Player.
O launcher e o gendata aceitam qualquer tipo de arquivos e pastas. Quer dizer, caso você crie pastas dentro de pastas, o launcher irá criar essas pastas no computador do player e irá colocar o arquivo no lugar certo. Assim, o launcher é funcional para qualquer tipo de update, alem de jogos e tibia.
Creditos: cristofermartins e Gabrieltxu
Skin.ini O skin.ini é encontrado na pasta skin, dentro da pasta que se encontra o launcher.exe.O skin.ini faz parte do sistema de Skins. Você pode construir varias skins, e quando quiser coloca-las no Launcher, você apenas modifica o skin.ini ou as imagens da pasta IMG. Ou Até substituir a pasta Skin inteira, trocando a skin por completo.