Histórico de Curtidas
-
deathstar007 deu reputação a luanluciano93 em (Resolvido)Shop bug !Em globalevents/globalevents.xml adicionem a tag:
<globalevent name="website_shop" interval="30000" script="shop.lua" desc="Auto Shop System."/> Crie um arquivo lua com o nome shop.lua em globalevents/scripts/... e coloque esse código dentro:
SHOP_MSG_TYPE = MESSAGE_STATUS_CONSOLE_BLUE SQL_interval = 30 -- ### END OF CONFIG ### function onThink(interval, lastExecution) local result_plr = db.getResult("SELECT * FROM `z_ots_comunication` WHERE `type` = 'login';") if(result_plr:getID() ~= -1) then while(true) do id = tonumber(result_plr:getDataInt("id")) action = tostring(result_plr:getDataString("action")) delete = tonumber(result_plr:getDataInt("delete_it")) cid = getCreatureByName(tostring(result_plr:getDataString("name"))) if isPlayer(cid) == TRUE then local itemtogive_id = tonumber(result_plr:getDataInt("param1")) local itemtogive_count = tonumber(result_plr:getDataInt("param2")) local container_id = tonumber(result_plr:getDataInt("param3")) local container_count = tonumber(result_plr:getDataInt("param4")) local add_item_type = tostring(result_plr:getDataString("param5")) local add_item_name = tostring(result_plr:getDataString("param6")) local received_item = 0 local full_weight = 0 if add_item_type == 'container' then container_weight = getItemWeightById(container_id, 1) if isItemRune(itemtogive_id) == TRUE then items_weight = container_count * getItemWeightById(itemtogive_id, 1) else items_weight = container_count * getItemWeightById(itemtogive_id, itemtogive_count) end full_weight = items_weight + container_weight else full_weight = getItemWeightById(itemtogive_id, itemtogive_count) if isItemRune(itemtogive_id) == TRUE then full_weight = getItemWeightById(itemtogive_id, 1) else full_weight = getItemWeightById(itemtogive_id, itemtogive_count) end end local free_cap = getPlayerFreeCap(cid) if full_weight <= free_cap then if add_item_type == 'container' then local new_container = doCreateItemEx(container_id, 1) doItemSetAttribute(new_container, "description", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].') doItemSetAttribute(new_container, "tid", id) local iter = 0 while iter ~= container_count do local new_item = doCreateItemEx(itemtogive_id, itemtogive_count) doItemSetAttribute(new_item, "description", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].') doItemSetAttribute(new_item, "tid", id) doAddContainerItemEx(new_container, new_item) iter = iter + 1 end received_item = doPlayerAddItemEx(cid, new_container) else local new_item = doCreateItemEx(itemtogive_id, itemtogive_count) doItemSetAttribute(new_item, "description", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].') doItemSetAttribute(new_item, "tid", id) received_item = doPlayerAddItemEx(cid, new_item) end if received_item == RETURNVALUE_NOERROR then doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from OTS SHOP.') doPlayerSave(cid) db.query("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";") db.query("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";") else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. Please make place for this item in your backpack/hands and wait about '.. SQL_interval ..' seconds to get it.') end else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. It weight is '.. full_weight ..' oz., you have only '.. free_cap ..' oz. free capacity. Put some items in depot and wait about '.. SQL_interval ..' seconds to get it.') end end if not(result_plr:next()) then break end end result_plr:free() end return true end Créditos: Gesior.pl
-
deathstar007 deu reputação a Victor2101 em Editando A Exp No PokeTibia !Olá pessoal do tibia king , vou estar ensinando hoje como editar a exp do servidor poketibia !
Existem dois lugares para que vocês possam editar bem a exp no servidor , 1° no Config.lua (Geral) , o outro no Scripting Do Pokemon (Individual)
Como dito acima , o Config.lua é (Geral) , faz com que tudo aumente a exp . Agora o Scripting Do Pokemon (Individual) você terá que editar um , por um , até chegar no resultado esperado .
Bom Vamos Ao Que Interessa :
1° Método :
Config.lua (geral)
1- Abra à pasta de seu server com o config.lua , como bloco de notas e procure por rateExperience = vai ter um valor na frente então se você quiser aumentar a experiencia você aumenta este valor se quiser diminuir a experiencia diminui este valor . Exemplo = 999 (Exp Do Servidor) x 100 (Exp Do Pokemon ) = 99900 A Exp que vai dar . 2° Metodo : Script do pokemon (individual) 1- Vá em data/monster/pokes/selvagens abra a script do pokemon que você quer aumentar ou diminuir a exp que ele da como bloco de notas . 2- Aonde está experience="valor" você diminui ou aumenta a experiencia que esse pokemon vai dar . OBS : Irei explicar como funcionar este outro método , o sistema de experiencia ele pega o valor que está na script do pokemon e multiplica pelo valor da rateExperience no config.lua então se na script do pokemon ele da 300 de experiencia e no config a experiencie estiver em 2 vai multiplicar 300x2 = 600 OBS 2 : Qualquer dúvida comente ai em baixo que irei te responder só isto . VÍDEO FEITO POR MIM ! http://www.youtube.com/watch?v=54y4YUtCIDQ Lembrando que eu testei essa formula no poketibia erondino ! -
deathstar007 deu reputação a Absolute em [Chuva de Items] New EventOlá TKzianos de plantão rs!
Trago hoje um evento criado pelo mestre Collor e modificado por mim! É o evento RAIN ITEMS! O Nome já diz tudo, nada melhor para os players do que chover items não é? rs.
Como funciona?
Em dias marcados irá ocorrer uma chuva de determinados items (configuráveis).
Os Items irão cair em X posições que você irá configurar no sistema.
Os players terão de ser ágeis para coletar o item em sua backpack.
Vamos ao que interessa!
Em data/mods crie um arquivo com o nome de w-rainItems.xml e dentro coloque o seguinte conteúdo:
<?xml version="1.0" encoding="UTF-8"?> <mod name="Rain Item" version="1.0.0" author="Collor/Abs" contact="lu.lukinha" enabled="yes"> <config name="config_rain_item"> <![CDATA[ configRainItem = { days = { ['Monday'] = {'11:00:20', '19:00:20'}, ['Tuesday'] = {'11:00:20', '19:00:20'}, ['Wednesday'] = {'11:00:20', '19:00:20'}, ['Thursday'] = {'11:00:20', '19:00:20'}, ['Friday'] = {'11:00:10', '19:00:20'}, ['Saturday'] = {'11:00:00', '19:00:20'}, ['Sunday'] = {'11:00:20', '19:00:30'} }, items = { 2644, -- king 9778, -- yalaha mask 8865, -- dark lords cape 8890, -- robe of the underworld 3983, -- bast skirt 9933, -- firewalker boots 7735, -- star wand 2640, -- softy 9693, -- addon 8306, -- remover 2506, -- dragon scale helmet 8888, -- master archers armor 9777, -- yalahari leg piece 8850, -- chain bolter 6433, -- necromancer shield 8903, -- spellbook of lost souls 2496, -- horned helmet 9776, -- yalahari armor 2469, -- dragon scale legs 6391, -- nightmare shield 8925, -- solar 7422, -- jade hammer 2390, -- mls 7722, -- stamina 8300, -- upgrade 8266, -- koshei 2346 -- 100pkt }, positions = { {x=997, y=981, z=7}, {x=998, y=981, z=7}, {x=999, y=981, z=7}, {x=1000, y=981, z=7}, {x=1001, y=981, z=7}, {x=1002, y=981, z=7}, {x=997, y=982, z=7}, {x=998, y=982, z=7}, {x=999, y=982, z=7}, {x=1000, y=982, z=7}, {x=1001, y=982, z=7}, {x=1002, y=982, z=7}, {x=997, y=983, z=7}, {x=998, y=983, z=7}, {x=999, y=983, z=7}, {x=1000, y=983, z=7}, {x=1001, y=983, z=7}, {x=997, y=984, z=7}, {x=999, y=984, z=7}, {x=1000, y=984, z=7}, {x=1001, y=984, z=7}, {x=1002, y=984, z=7}, {x=994, y=985, z=7}, {x=995, y=985, z=7}, {x=996, y=985, z=7}, {x=997, y=985, z=7}, {x=998, y=985, z=7}, {x=999, y=985, z=7}, {x=1000, y=985, z=7}, {x=1001, y=985, z=7}, {x=1002, y=985, z=7}, {x=1003, y=985, z=7}, {x=1004, y=985, z=7}, {x=1005, y=985, z=7}, {x=1006, y=985, z=7}, {x=994, y=986, z=7}, {x=995, y=986, z=7}, {x=996, y=986, z=7}, {x=997, y=986, z=7}, {x=998, y=986, z=7}, {x=999, y=986, z=7}, {x=1000, y=986, z=7}, {x=1001, y=986, z=7}, {x=1002, y=986, z=7}, {x=1003, y=986, z=7}, {x=1004, y=986, z=7}, {x=1005, y=986, z=7}, {x=1006, y=986, z=7}, {x=996, y=987, z=7}, {x=996, y=988, z=7}, {x=996, y=989, z=7}, {x=996, y=990, z=7}, {x=996, y=991, z=7}, {x=996, y=992, z=7}, {x=996, y=993, z=7}, {x=1003, y=987, z=7}, {x=1003, y=988, z=7}, {x=1003, y=989, z=7}, {x=1003, y=990, z=7}, {x=1003, y=991, z=7}, {x=1003, y=992, z=7}, {x=1003, y=993, z=7}, {x=996, y=994, z=7}, {x=997, y=994, z=7}, {x=998, y=994, z=7}, {x=1001, y=994, z=7}, {x=1002, y=994, z=7}, {x=1003, y=994, z=7}, {x=996, y=995, z=7}, {x=997, y=995, z=7}, {x=998, y=995, z=7}, {x=999, y=995, z=7}, {x=1000, y=995, z=7}, {x=1001, y=995, z=7}, {x=1002, y=995, z=7}, {x=1003, y=995, z=7}, {x=996, y=996, z=7}, {x=997, y=996, z=7}, {x=998, y=996, z=7}, {x=1001, y=996, z=7}, {x=1002, y=996, z=7}, {x=1003, y=996, z=7}, {x=996, y=997, z=7}, {x=997, y=997, z=7}, {x=998, y=997, z=7}, {x=999, y=997, z=7}, {x=1000, y=997, z=7}, {x=1001, y=997, z=7}, {x=1002, y=997, z=7}, {x=1003, y=997, z=7}, {x=996, y=998, z=7}, {x=997, y=998, z=7}, {x=998, y=998, z=7}, {x=999, y=998, z=7}, {x=1001, y=998, z=7}, {x=1002, y=998, z=7}, {x=1003, y=998, z=7}, {x=996, y=999, z=7}, {x=998, y=999, z=7}, {x=999, y=999, z=7}, {x=1001, y=999, z=7}, {x=1002, y=999, z=7}, {x=1003, y=999, z=7}, {x=996, y=1000, z=7}, {x=997, y=1000, z=7}, {x=998, y=1000, z=7}, {x=999, y=1000, z=7}, {x=1001, y=1000, z=7}, {x=1002, y=1000, z=7}, {x=1003, y=1000, z=7}, {x=996, y=1001, z=7}, {x=997, y=1001, z=7}, {x=998, y=1001, z=7}, {x=999, y=1001, z=7}, {x=1000, y=1001, z=7}, {x=1001, y=1001, z=7}, {x=1002, y=1001, z=7}, {x=1003, y=1001, z=7}, {x=996, y=1002, z=7}, {x=997, y=1002, z=7}, {x=998, y=1002, z=7}, {x=999, y=1002, z=7}, {x=1000, y=1002, z=7}, {x=1001, y=1002, z=7}, {x=1002, y=1002, z=7}, {x=1003, y=1002, z=7}, {x=998, y=1003, z=7}, {x=999, y=1003, z=7}, {x=1000, y=1003, z=7}, {x=1001, y=1003, z=7}, {x=1002, y=1003, z=7}, {x=1003, y=1003, z=7}, {x=990, y=998, z=7}, {x=991, y=998, z=7}, {x=991, y=999, z=7}, {x=992, y=999, z=7}, {x=991, y=1000, z=7}, {x=992, y=1000, z=7}, {x=993, y=1000, z=7}, {x=994, y=1000, z=7}, {x=995, y=1000, z=7}, {x=982, y=1001, z=7}, {x=983, y=1001, z=7}, {x=984, y=1001, z=7}, {x=985, y=1001, z=7}, {x=986, y=1001, z=7}, {x=987, y=1001, z=7}, {x=988, y=1001, z=7}, {x=989, y=1001, z=7}, {x=990, y=1001, z=7}, {x=991, y=1001, z=7}, {x=992, y=1001, z=7}, {x=993, y=1001, z=7}, {x=994, y=1001, z=7}, {x=995, y=1001, z=7}, {x=983, y=1002, z=7}, {x=984, y=1002, z=7}, {x=988, y=1002, z=7}, {x=989, y=1002, z=7}, {x=990, y=1002, z=7}, {x=991, y=1002, z=7}, {x=992, y=1002, z=7}, {x=993, y=1002, z=7}, {x=994, y=1002, z=7}, {x=995, y=1002, z=7}, {x=984, y=1003, z=7}, {x=985, y=1003, z=7}, {x=986, y=1003, z=7}, {x=987, y=1003, z=7}, {x=988, y=1003, z=7}, {x=989, y=1003, z=7}, {x=990, y=1003, z=7}, {x=991, y=1003, z=7}, {x=992, y=1003, z=7}, {x=993, y=1003, z=7}, {x=984, y=1004, z=7}, {x=985, y=1004, z=7}, {x=986, y=1004, z=7}, {x=987, y=1004, z=7}, {x=988, y=1004, z=7}, {x=984, y=1005, z=7}, {x=985, y=1005, z=7}, {x=986, y=1005, z=7}, {x=987, y=1005, z=7}, {x=988, y=1005, z=7}, {x=983, y=1006, z=7}, {x=984, y=1006, z=7}, {x=985, y=1006, z=7}, {x=986, y=1006, z=7}, {x=987, y=1006, z=7}, {x=988, y=1006, z=7}, {x=980, y=1007, z=7}, {x=981, y=1007, z=7}, {x=982, y=1007, z=7}, {x=983, y=1007, z=7}, {x=984, y=1007, z=7}, {x=985, y=1007, z=7}, {x=986, y=1007, z=7}, {x=987, y=1007, z=7}, {x=988, y=1007, z=7}, {x=980, y=1008, z=7}, {x=981, y=1008, z=7}, {x=982, y=1008, z=7}, {x=983, y=1008, z=7}, {x=980, y=1009, z=7}, {x=981, y=1009, z=7}, {x=982, y=1009, z=7}, {x=983, y=1009, z=7}, {x=1004, y=998, z=7}, {x=1005, y=998, z=7}, {x=1006, y=998, z=7}, {x=1006, y=999, z=7}, {x=1002, y=993, z=7}, {x=1002, y=987, z=7}, {x=1002, y=988, z=7}, {x=996, y=984, z=7} }, delayTime = 1, -- pomiedzy broadcastem a zrzuceniem itemu amountOfPos = 20, storage = 51836 -- set free storage } ]]> </config> <lib name="lib_rain_item"> <![CDATA[ domodlib("config_rain_item") function throwItem() local i, itemPos = 1, {} repeat local pos = configRainItem.positions[math.random(#configRainItem.positions)] if isInArray(itemPos, pos) then pos = configRainItem.positions[math.random(#configRainItem.positions)] else itemPos[i] = pos i = i + 1 end until i == configRainItem.amountOfPos for _, pos in pairs(itemPos) do doSendDistanceShoot({x = pos.x - math.random(4, 6), y = pos.y - 5, z = pos.z}, pos, CONST_ANI_FIRE) for __, effect in pairs({34, 55, 56}) do doSendMagicEffect(pos, effect) end addEvent(doCreateItem, 100, configRainItem.items[math.random(#configRainItem.items)], 1, pos) doSetStorage(configRainItem.storage, -1) end end ]]> </lib> <globalevent name="Rain_Item_Days" interval="1000" event="script"> <![CDATA[ domodlib("lib_rain_item") local daysOpen = {} for k, v in pairs(configRainItem.days) do table.insert(daysOpen, k) end function onThink(interval) if isInArray(daysOpen, os.date('%A')) then if isInArray(configRainItem.days[os.date('%A')], os.date('%X', os.time())) then if getStorage(configRainItem.storage) ~= 1 then doBroadcastMessage('Rain Items will start in '..configRainItem.delayTime..' min. Go to temple or depot!') doSetStorage(configRainItem.storage, 1) addEvent(throwItem, configRainItem.delayTime * 60 * 1000) end end end return true end ]]> </globalevent> <talkaction words="!startrain" access="5" event="script"> <![CDATA[ domodlib("lib_rain_item") function onSay(cid, words, param) if getStorage(configRainItem.storage) > 0 then return doPlayerSendCancel(cid, 'Rain Item is already running.') end doBroadcastMessage('Rain Items will start in ' .. configRainItem.delayTime .. ' min. Go to temple or depot!') doSetStorage(configRainItem.storage, 1) addEvent(throwItem, configRainItem.delayTime * 60 * 1000) return true end ]]> </talkaction> <globalevent name="Rain_Item_Start" type="startup" event="script"> <![CDATA[ domodlib("lib_rain_item") function onStartup() doSetStorage(configRainItem.storage, -1) return true end ]]> </globalevent> </mod> Configurando:
1-
days = {
['Monday'] = {'11:00:20', '19:00:20'}, = Aqui são os dias e horário que ocorrerão o evento, no caso do exemplo está Segunda Feira ás 11 horas e as 19 horas.
Você deverá alterar o dia e a hora conforme desejar, o dia em inglês claro. Não sabe inglês faz cursinho na openenglish sqn.
2-
items = {
2644, -- king = 2644 é o ID do item que irá chover. O -- king não é anda apenas um exemplo pode deixar com o nome, o que vale é o ID!
3-
positions = {
{x=997, y=981, z=7}, = Mais do que claro, é as posições do mapa onde irá cair os items!
Nota: Caso queira iniciar o evento manualmente fora de hora execute o comando !startrain com seu ADM.
É isso aí galera, caso haja algum dúvida perguntem aqui no tópico!
Não gostou? Não critica, só olha e tenta fazer melhor
Absolute.
-
deathstar007 deu reputação a Danihcv em [TUTORIAL] Resolvendo qualquer erro na data baseOpa, galerinha do TK, pro meu primeiro tutorial resolvi fazer uma solução de um problema que desde que cheguei no TK, vejo que ocorre com uma certa frequência. Os erros da data base.
Neste tutorial vou ensinar a resolver os erros do tipo No such table, Insert into, No such column, ... has no column named... etc.
1°) NO SUCH TABLE
Bom, para o erro No such table, basta vc visualizar qual table está faltando. Para isso basta ler o erro na distro:
No caso da imagem, está faltando a table: player_statements
Para resolver este e qualquer outro problema deste tipo, caso sua data base seja sqlite,
basta abrir sua data base pelo Sqlite Studio(download: http://sqlitestudio.pl/?act=download) e clicar em Open SQL query editor:
Mas caso sua data base seja Mysql abra pelo phpMyadmin, ou por outro editor de sua preferencia.
1.1°) EXECUTANDO OS COMANDOS PARA RESOLVER O PROBLEMA
Bom, dependendo da table que estiver faltando, vc irá colocar seu respectivo comando, segue abaixo TODOS os comandos básicos necessários para que sua data base fique Ok! : (VC VAI PEGAR O COMANDO REFERENTE À TABLE QUE VC QUER!!!)
account_viplist
Sqlite
accounts
Sqlite
bans
Sqlite
environment_killers
Sqlite
global_storage
Sqlite
guild_invites
Sqlite
guild_kills
Sqlite
guild_ranks
Sqlite
guild_wars
Sqlite
guilds
Sqlite
house_auctions
Sqlite
house_data
Sqlite
house_lists
Sqlite
houses
Sqlite
killers
Sqlite
market_history
Sqlite
market_offers
Sqlite
player_deaths
Sqlite
player_depotitems
Sqlite
player_inboxitems
Sqlite
player_items
Sqlite
player_killers
Sqlite
player_namelocks
Sqlite
player_skills
Sqlite
player_spells
Sqlite
player_statements
Sqlite
player_storage
Sqlite
player_viplist
Sqlite
players
Sqlite
server_config
Sqlite
server_motd
Sqlite
server_record
Sqlite
server_reports
Sqlite
tile_items
Sqlite
tile_store
Sqlite
tiles
Sqlite
announcements
Sqlite
pagsegurotransacoes
Sqlite
player_advances
Sqlite
reports
Sqlite
thanks
Sqlite
z_bug_logs
Sqlite
z_featured_article
Sqlite
z_forum
Sqlite
z_helpdesk
Sqlite
z_monsters
Sqlite
z_network_box
Sqlite
z_news_tickers
Sqlite
z_ots_comunication
Sqlite
z_polls
Sqlite
z_polls_answers
Sqlite
z_poll_votes
Sqlite
z_shop_history_item
Sqlite
z_shop_history_pacc
Sqlite
z_shop_offer
Sqlite
z_spells
Sqlite
z_news_big
Sqlite
2°) No such column / "NOME DA TABLE" has no column named "NOME DA COLUMN QUE FALTA" / Insert into
Bom, para resolver esse problema vc deve identificar em qual TABLE está essa coluna que falta. Para isso, basta ler o erro como na imagem:
No caso da imagem, está faltando a column WORLD_ID dentro da table MARKET_OFFERS. Para resolver, vc deve executar excluir a sua table MARKET_OFFERS existante em sua data base, e em seguida, executar o domando da da market_offers, encontrado acima, logicamente isso só se aplica ao caso da imagem, depende do seu caso, vc deve excutar o comando da table que estiver sendo referida no erro. Mas antes de executá-lo vc deve excluir a sua table EXISTENTE, para então executar o comando.
ESTA FORMA DE RESOLUÇÃO SE APLICA AOS TRÊS CASOS: NO SUCH COLUMN, ...HAS NO COLUMN NAMED... e INSERT INTO.
Bom galera, é isso.
SE ENCONTRAREM, OU SE DEPARAREM COM ALGUM ERRO, BASTA ME PEDIR AJUDA QUE EU DAREI TOTAL SUPORTE PARA VOCÊS!
SE ESTIVR FALTANDO MAIS ALGUMA TABLE QUE EU NÃO COLOQUEI AQUI, PF ME INFORMEM E EU ATUALIZAREI O TÓPICO!!!
Lembrem-se, se eu te ajudei, por favor, deem REP++ pois foi meio trabolhoso fazer este tutorial todo...
ESTOU A DISPOSIÇÃO DE TODOS! Tanto por PM quanto por SKYPE, e até mesmo por aqui, pois vou checar este tópico regularmente!!
Espero ter ajudado!!
Abraços.
-
deathstar007 deu reputação a Samu DS em New cliente em breveBom pessoal estou aqui para mostrar a vocês um cliente browser que estou desenvolvendo para Ot Pokémon, bom vou dar algumas informações dele, bom ele será para site ou seja você ira colocar ele em algum site para se jogar ele será leve e será jogado por um navegador, isto irá poupar muitos roubos de sprites de seu serve bom não sei quando irei postar pois estou com a vida corrida com um projeto que esto fazendo praticamente sozinho, mas assim que eu terminar irei postar aqui para download junto com o site e um breve tutorial.
-
deathstar007 deu reputação a Avuenja em [OTC] Background animadoOlá pessoal, achei um tutorial muito legal na net, e resolvi trazer para vocês... Ele ensina como colocar background animado no OTClient.
Entendendo as limitações do OTC
Todos nós sabemos que o OTC só aceita imagens em .pgn e a maioria das imagens animadas são gif ou flash, então como vamos colocar imagens animadas no nosso cliente...
Introdução
Passeando pelas profundezas da internet andei lendo que o novo firefox 3 aceitara uma extensão de imagem nova, e qual é essa extensão o APNG isso mesmo Animated Portable Networks Graphics
então pensei vamos explorar isso.. encontrei um programa que se chama APNG Anime Maker e e ele que vamos utilizar
1º Passo
Baixe o Programa AQUI
( ele funciona por frames então vc tera que ter todas as imagens de sua animação 1 por 1 em qualquer arquivo mas desde que elas tenham o mesmo tamanho (1024x719 padrão OTC) para n dar conflito visual).
depois de baixar o programa e ter todas as imagens agora fica facil então vamos seguir.
2º Passo.
Abra o APNG
Menu Principal
OPEN > Abre as suas imagens SAVE > Salva a sua imagem em formato png (porem com a animação) CLEAN > Limpa todas as imagens Move Up / Move down > altera a ordem das imagens Menu Lateral
Delay > tempo para cada imagens ficar em exibição em ms ou fps Offset / Increment > não sei pra que serve =p os outros menus tbm n mas n vamos usar eu acho rsrs Após adicionar todas as suas imagens em frames e classificar a ordem e tempo de exibição delas salve o arquivo no botão SAVE e coloque dentro da pasta \data\images com nome de background e teste
-
deathstar007 deu reputação a Avuenja em Mini Funções | OTCNome: Block Mods Descrição: bloquear mods para que só funcionem no seu server Autor: Eduardo Vicente (Banana Fight) Instalação
modules\client_entergame\entergame.lua
Embaixo de EnterGame.In, Você adiciona esta linha.
function returnServer() return enterGame:getChildById('serverHostTextEdit'):getText() end Agora você tem a escolha de "Esconder" seu código em um arquivo, Eu escolhi o gamelib, Então vamos para
modules\gamelib\game.lua
Lá no final desse arquivo você adiciona isso
function checkServerMod() if returnServer() ~= 'go.thunderot.com.br' then x = 'no' else x = 'yes' end return x end Processo de instalação pronto.
Como Usar Dentro do seu Mod
no arquivo .lua, existe uma função como está :
function toggle() if ThunderButton:isOn() then ThunderWindow:hide() ThunderButton:setOn(false) else ThunderWindow:show() ThunderButton:setOn(true) end end E ela você vai editar ficando assim :
function toggle() if checkServerMod() == 'yes' then if ThunderButton:isOn() then[ ThunderWindow:hide() ThunderButton:setOn(false) else ThunderWindow:show() ThunderButton:setOn(true) end end end -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Nome: Play Music Descrição: toca musica quando ativado Autor: Eduardo Vicente (Banana Fight) Instalação
Gamelib/game.lua, lá no final adiciona isso:
function playMusic(fileName, value) g_sounds.getChannel(1):play(fileName) end Como Usar Dentro do seu Mod
playMusic('Nome da musica')
OBS: Só funciona com arquivos .ogg O a musica deve estar dentro da pasta de onde a função esta sendo usada em playMusic('') Deixe apenas o nome da musica = playMusic('attack') -
deathstar007 deu reputação a Wend em [OTC] Barra de HP no OTclientOiie
Trazendo um Tutorial Hoje Bem simples, mais que uns Membros estão precisando
Ele vai ensinar Para quando você soltar seu Pokemon o "HP" do Pokemon aparecer Logo abaixo do "HP" do Player..
Tipo assim como na imagem::
Você esta com essa Mesma Dúvida?
Segue tutorial ae::
1* vá no Seu data\lib e abra o some functions.lua
Logo no começo do arquivo dê 2 vezes enter para pular 2 Linha, e coloque isso no começo do Arquivo::
2* vá no data\movements\scripts e abra o arquivo portrait.lua
Procure por::
if not getItemAttribute(item.uid, "poke") then e depois do end Adicione isso AQ::
ai procure por if not getItemAttribute(item.uid, "poke") then De novo, e depois do end adicione isso::
3* vá em data\creaturescripts\scripts e abra o arquivo exp2.0.lua e procure por:: valor = math.abs(valor) --alterado v1.9 if isSummon(attacker) then e Substitua por esse::
4* vá em data\actions\scripts e abra o revive.lua Procure por:: doCureStatus(cid, "all", true) e substitua por esse::
5* vá em data\actions\scripts e abra o potion.lua procure por:: if math.floor(turn/10) == turn/10 then doSendMagicEffect(getThingPos(cid), effect) end e substitua por esse;:
6* vá em data\npc\scripts e abra o arquivo heal.lua e adicione isso lá no final do arquivo:: obs: antes dos "end"
Autor:: AnnaFeeh Stilo Maldoso -
deathstar007 deu reputação a Will Oliveira em [MOD] Otclient auto-updaterO que faz?
Esse auto-updater, conta com as funções de: Checar se existe novos updates na inicialização do 'OTC', baixa os updates em diretórios especificados pelo administrador, baixa e extrai arquivos '.ZIP', reinicia o' OTC' apos terminar o download do patch, múltiplos patchs.
Instalação:
1 - Crie no diretório raiz de seu site um arquivo '.txt' chamado de 'Update.txt', preencha o arquivo como o arquivo a seguir: http://pastebin.com/cdwnD6qg
Obs: nesse pastebin já tem as instruções de como adicionar novos updates.
2 - Baixe o 'Updater Patcher.rar' extraia na pasta raiz do seu otclient.
3 - Depois de ter baixado o 'Updater Mod.rar', extraia e coloque a pasta do mod na pasta 'mods' do seu otclient
configure o caminho para o executavel do 'updater patcher' no arquivo .lua.
4 - Agora você precisa ir na pasta raiz do seu 'otclient 'e configurar o arquivo 'Config.ini' com os seguites dados:
[Geral] WebSite=http://dragonhertsserver.pusku.com/ - o seu website vai aqui é o site onde fica o 'update.txt' Client=otclient - nome do executavel do seu otclient SiteFile=Update.txt - o nome do arquivo que fica no site marcando os updates 5 - Depois de tudo configurado é só abrir o 'otclient' normalmente que o 'patcher' vai executar junto. use sempre link de download direto para adicionar um novo update.
Download:
Updater Mod: http://www.mediafire.com/download/8xc6boa8xpdh3mu/Updater+Mod.rar
Updater Patcher: http://www.mediafire.com/download/ynnqy1iba8qqeyq/Update+patcher.rar
Vídeo que mostra como o mod funciona:
Obs: Se você tem um servidor é quer usar o updater, crie um instalador definindo já o diretório do seu client para o player não precisar configurar o arquivos '.lua'
Obs²: Em arquivos compactados use sempre a extenção '.ZIP'
Obs³: É preciso o NET framework para rodar.
Créditos:
vyctor17
-
deathstar007 deu reputação a ZORAN em OTClient pararecido com PXG! [Download]Primeiramente: Peço desculpas se errei o lugar porque pra min um Client de algum server e um ultilitario então peço desculpas se errei novamente o lugar.
Segundamente: Aqui estou postando um Client parecido com o da PXG Logo digo não fui eu que fiz e ele e beta então pode a ver rejeição em alguns servers eu testei ele no servidor de poketibia do gabrielTxu 3.0 a 3.2 e as vezes a vara de pescar não funciona então quem quiser pegar como base para seu Client pode usar a vontade. Por isso que estou postando e uma base não um pronto para usar entendido então não me venha reclamar dizendo que enganei vocês.
Aqui esta uma print:
Aqui esta o Download do Client:
CLICK AQUI
SCAN:
CLICK AQUI
Me agradecer não cai o dedo Vlws.
Um grande abraço e fiquem com Deus.
-
deathstar007 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. -
deathstar007 deu reputação a Avuenja em Pronto para usar | OTCHoje vim trazer um tutorial de como remover o terminal, modules manager, e deixar o ip automático.
Vamos ao tutorial :
Parte Um
Removendo módulos indesejados
Dentro do diretório
\otclient-master\modules\client Você irá abrir o arquivo "client.otmod"
Dentro dele vai ter as seguintes linhas :
load-later: - client_styles - client_locales - client_topmenu - client_background - client_options - client_entergame - client_terminal - client_modulemanager - client_serverlist //- client_stats Essas linhas são os módulos que vão carregar quando o client for aberto, então é só tirar os que você não quer que abra.
Parte Dois
Como deixar o ip automático
Dentro do diretório
\otclient-master modules\client_entergame Você irá abrir o arquivo "entergame.lua"
Dentro da função "Init", você vai procurar por:
if g_app.isRunning() and not g_game.isOnline() then enterGame:show() end E embaixo dessa função você adiciona essa linha :
EnterGame.setUniqueServer('127.0.0.1', 7171, 854, 270, 210) Como configurar essa função:
EnterGame.setUniqueServer(Ip do server, Porta (7171), Versão do server, Largura da janela, Altura da Janela)
Créditos
BananaFight -
deathstar007 deu reputação a Waldragon em [Tutorial] Como trocar o ip do OT CLIENTFala ae galerinha na paz? Espero que sim .. Vejo que muitas pessoas tem duvidas
De como trocar o ip do OT CLIENT , então estou trazendo esse tutorial para vocês..
Passo a passo...
1° Primeiramente abra a pasta do seu servidor e click em Config.lua .
2° Depois aperte ctrl+F e localize a palavra ip .
3° Aperte Enter umas 5 vezes, em seguida vai localizar ip = "aqui vai esta algum IP"
Ai e só substitui o IP que estava em " " pelo seu IP...
Agora a parte do OT CLIENT
1° Abra a pasta do seu Ot Client , vá em modules/client_entergame.
2° Agora abra o arquivo entergame.lua .
Em seguida aperte ctrl+F e escreva em localizar 7171 .
3° Agora aperte duas vezes Enter que vai localizar essa frase...
EnterGame.setUniqueServer('Aqui vai esta algum IP', 7171, 854, 270, 210)
Ai e só você trocar esse IP que estava ali pelo IP que você colocou no config.lua..
Espero ter ajudado ....