Histórico de Curtidas
-
Enijota deu reputação a WooX em Classic-Yurots [8.60] - Push Cruzado + Cast com SetasClassic Yurots
V 8.60
Eu acompanhei de perto o desenvolvimento deste servidor e sabia que sairia coisa boa dali, mas só quando obtive acesso aos arquivos que pude entender a dimensão do negocio, sendo assim, eu posso afirmar que este é um dos se não o melhor datapack baseado no antigo YurOTS. O datapack está limpo, você não vai encontrar um script em qualquer uma das pastas que não esteja em uso no servidor, alem disto muito tempo foi gasto reescrevendo e revisando os scripts do servidor para garantir máxima performance.
Os mais novos em OpenTibia talvez não saibam, mas os famosos Baiaks e Styllers de hoje em dia foram baseados neste mapinha que teve seu inicio já na versão 7.5 e seu declínio nas versões 8.4 onde foi visto pela ultima vez devido ao surgimento de derivados do mesmo (Baiak e Styller). Devido ao fato dos mapas Baiak e Styller serem derivados do YurOTS, se você tem um projeto de mapa Baiak ou Styller, este é um excelente datapack para você usar como base.
Por que o servidor está sendo postado?
Este servidor foi desenvolvido ao longo de 2 anos pelo Wesley (conhecido aqui no fórum como @KOLISAO), alguns meses atrás o servidor foi finalizado e colocado online, embora hoje em dia, sem contato com times de jogadores, é difícil popular um servidor novo e sem nome logo na abertura, com isso a inauguração não foi como esperado e conseguiu uma média de apenas 30 jogadores. Frustado por 2 anos de muito trabalho não dar o resultado esperado, ele decidiu desistir do servidor, foi então que eu fiz uma proposta em troca do servidor e obtive acesso ao mesmo.
O que eu não sabia na época era que outras duas pessoas alem de mim tiveram acesso a todos os arquivos, uma dessas pessoas é um amigo do próprio Wesley na vida real, ele conversou com este amigo e deletou os arquivos do computador dele. A segunda pessoa em questão, eu não tenho certeza de como obteve estes arquivos, mas ele atualmente está vendendo estes arquivos sem autorização.
Quando fiquei ciente disto, entrei em contato com o Wesley e o informei sobre o que estava acontecendo, ele ficou surpreso e revoltado por alguém estar lucrando em cima de seus esforços. Neste momento pedi permissão a ele para postar o servidor aqui no fórum, e ele me concedeu.
Informações sobre o servidor
Como dito anteriormente, muito tempo foi gasto neste servidor e tudo foi feito com o maior cuidado possivel. Vou deixar aqui as informações sobre o que contem no servidor, informações que foram divulgadas pelo próprio Wesley na data de inauguração.
Vídeo com algumas Quests do servidor
Outras informações podem ser encontradas no tópico de show-off do período em que o servidor ainda estava em desenvolvimento.
Extra + Créditos
Juntamente com o servidor estarei postando a source e o site do mesmo, porem o site será postado em um tópico diferente devido a esta não ser a área correta do fórum para isso. A source do servidor é OTX2, foram feitas pequenas modificações na source para melhor formatação em partes do datapack, como QuestLog e outros.
Edit 29/11
Além disto, a source também possui 2 sistemas muito procurados que até o presente momentos não eram públicos, sendo estes Push Cruzado e Cast com Setas. Ambos os sistemas já estão instalados na source, porem futuramente irei postar ambos os códigos juntamente com tutorial de instalação para os que quiserem adicionar por si mesmos.
Créditos
Como já mencionei diversas vezes neste tópico, o responsável pelo desenvolvimento do servidor e site foi o @KOLISAO, portanto todos os créditos nesta parte vão para ele.
Eu fui o responsável por adicionar o Push Cruzado na source e fazer uma pequena modificação no Cast com Setas.
Obs: quando eu obtive acesso aos arquivos o Cast com Setas já estava instalado na source, eu não tenho informação se o código foi desenvolvido por ele ou por um terceiro.
Links para Download
Servidor
Download - Scan
Source
Download - Scan
Distro compilada para Windows
32x - TheOTXServer.exe - Scan
64x - TheOTXServer_64.exe - Scan
DLLs
dll.zip - Scan
Site
-
Enijota deu reputação a Rusherzin em Um probleminha com o Ajax... [atualizar página sem refresh]Tu precisas ver no teu createaccount.php qual função ele está executando em cada campo para descobrir o que o AJAX está recebendo como resposta do php. No gesior que eu tenho aqui, por exemplo, a função Javascript para a account name é checkAccount() e ela se comunica com o arquivo ajax_check_account.php, dentro da própria pasta de páginas do site.
-
Enijota deu reputação a Rusherzin em (Resolvido)Anel que não perde exp'sTenta assim. Dá para usar o math.random numa boa sim.
function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) if isPlayer(cid) == true then if (getPlayerSlotItem(cid, 9).itemid == 11387) then if (math.random(1, 100) >= 51) then pos = getCreaturePos(cid) doCreatureSetDropLoot(cid, false) doPlayerSetLossPercent(cid, PLAYERLOSS_SKILLS, 0) doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, 0) doPlayerSetLossPercent(cid, PLAYERLOSS_MANA, 0) doSendMagicEffect(pos, 49) end end end return true end
-
Enijota deu reputação a Rusherzin em (Resolvido)!Monster InfoTirando a parte de dizer onde eles ficam, o resto eu sei fazer sem dar muito trabalho.
<action itemid="IDITEM" event="script" value="monsterinfo.lua"/> function onUse(cid, item, fromPosition, itemEx, toPosition) if not isMonster(itemEx.uid) then return false end local races = {[1] = "venom", [2] = "blood", [3] = "undead", [4] = "fire", [5] = "energy"} local name = getCreatureName(itemEx.uid) local monsterinfo = getMonsterInfo(name) local lootarray = monsterinfo['loot'] local mname = "Name: "..name.."\n" local loot = (#lootarray >= 1) and "Loot:" or "Loot: \n - Empty \n" local health = "Health: "..monsterinfo['health'].."/"..monsterinfo['healthMax'].."\n" local experience = "Experience: "..monsterinfo['experience'].."\n" local race = "Race: "..races[monsterinfo['race']].."\n" local attackable = (monsterinfo['attackable'] == true) and "Attackable: Yes \n" or "Attackable: No \n" local summonable = (monsterinfo['summonable'] == true) and "Summonable: Yes \n" or "Summonable: No \n" local hostile = (monsterinfo['hostile'] == true) and "Hostile: Yes \n" or "Hostile: No \n" local illusionable = (monsterinfo['illusionable'] == true) and "Illusionable: Yes \n" or "Illusionable: No \n" for i=1, #lootarray do local lchance = ((lootarray[i]['chance'] * getConfigValue('rateLoot')) / 1000).."%" local litem = getItemNameById(lootarray[i]['id']) loot = loot.."\n - "..litem.." ["..lchance.."]" or litem.." - ["..lchance.."]" end local output = mname..health..experience..race..hostile..attackable..summonable..illusionable..loot doShowTextDialog(cid, item.itemid, output) return true end Esse código retorna as seguintes informações:
Nome
Vida / Vida Máxima
Experiência
Raça
Hostil (sim/não)
Atacável (sim/não)
Sumonável (sim/não)
Ilusionável (sim/não)
Lista de loot (com a chance de drop levando em conta o rateLoot do servidor)
-
Enijota deu reputação a Rusherzin em Ajuda com code de baú [action id, por vocation]²Não testei esse código, mas fiz rapidinho aqui no site mesmo:
local cfg = { -- vocs id qtd id qtd [1] = {{4,8}, {{2430, 1}, {2380, 1}}}, [2] = {{3,7}, {{2173, 1}, {2380, 1}}}, [3] = {{1,5}, {{2189, 1}, {2380, 1}}}, [4] = {{2,6}, {{8857, 1}, {7380, 5}}} } function onUse(cid, item) local voc = getPlayerVocation(cid) if getPlayerStorageValue(cid, 38493) < 1 then for i,v in ipairs(cfg) do if voc == v[1][1] or voc == v[1][2] then for p=1, #v[2] do doPlayerAddItem(cid, v[2][p][1], v[2][p][2]) end doPlayerSendTextMessage(cid, 25, "Congratulations!!") doPlayerSetStorageValue(cid, 38493, 1) end end else doPlayerSendCancel(cid, "It's empty.") end return true end Adicionei ao código uma parte que tu pode adicionar a quantidade de cada item. Se não entender como configurar o, só perguntar aqui, mas eu comentei para que ficasse mais fácil de entender a tabela.
-
Enijota recebeu reputação de Weslley Kiyo em (Resolvido)Ajuda com code de baú personalizado (action, por vocation)porra.. agradecido demais meu mano! que o universo retribua teu bom grado rs
100% !
Resolvido. rs
-
Enijota deu reputação a Weslley Kiyo em (Resolvido)Ajuda com code de baú personalizado (action, por vocation)local cfg = { knight = {2430}, paladin = {2173}, sorcerer = {2189}, druid = {8857}, } function onUse(cid, item) if getPlayerStorageValue(cid, 38493) < 1 then if getPlayerVocation(cid) == 4 or getPlayerVocation(cid) == 8 then if doPlayerAddItem(cid, cfg.knight[1], 1) then doPlayerSendTextMessage(cid, 25, "Congratulations!!") doPlayerSetStorageValue(cid, 38493, 1) else doPlayerSendTextMessage(cid,25,"ERROR! Please contact the administrator.") end elseif getPlayerVocation(cid) == 1 or getPlayerVocation(cid) == 5 then if doPlayerAddItem(cid, cfg.sorcerer[1], 1) then doPlayerSendTextMessage(cid, 25, "Congratulations!!") doPlayerSetStorageValue(cid, 38493, 1) else doPlayerSendTextMessage(cid,25,"ERROR! Please contact the administrator.") end elseif getPlayerVocation(cid) == 2 or getPlayerVocation(cid) == 6 then if doPlayerAddItem(cid, cfg.druid[1], 1) then doPlayerSendTextMessage(cid, 25, "Congratulations!!") doPlayerSetStorageValue(cid, 38493, 1) else doPlayerSendTextMessage(cid,25,"ERROR! Please contact the administrator.") end elseif getPlayerVocation(cid) == 3 or getPlayerVocation(cid) == 7 then if doPlayerAddItem(cid, cfg.paladin[1], 1) then doPlayerSendTextMessage(cid, 25, "Congratulations!!") doPlayerSetStorageValue(cid, 38493, 1) else doPlayerSendTextMessage(cid,25,"ERROR! Please contact the administrator.") end end elseif getPlayerStorageValue(cid, 38493) >= 1 then doPlayerSendCancel(cid, "It's empty.") end return true end