Tudo que MarceLoko postou
-
porta 80
Bom dia! Estou com problemas em liberar minha porta 80. Uso windows 8.1 Adicionei regra no firewall Liberei a porta no router Modifiquei meu regedit Não há ISS ativo Usei portas alternativas com sucesso, entretanto a necessidade do usuário especificar a porta me incomoda. E a máscara do noip não serve, pois utilizo o mesmo ip para o site e para o client. No ápice da minha leiguice tentei usar a mesma porta para o site e o login, mas como é obvio fui mal sucedido. Creio não ter errado em nenhum passo de todo o conteúdo que vi afinal, apenas a porta 80 continua me travando o site portchecktool.com denuncia: "Reason: Connection timed out." e todas as outras portas estão abertas. Agradecerei a ajuda, Abraço!
- Listão de Tutoriais Web
-
getPlayerNameById, getPlayerIdByName e getPlayerID
Bom dia! Trago estas três funções .lua que utiliza o player ID da database para retornar o Nome, vice-versa e o próprio ID Não consigo lhes dar exemplos de utilização, entretanto eu as utilizo. Estou certo que pode servir para alguém. • getPlayerNameById(id) • getPlayerIdByName(name) • getPlayerID(cid) Créditos a mim mesmo. Abraço!
-
A Importância do OTServer
Boa noite! Fiquei muito contente de ler esta reflexão que se encaixa no meu modo de pensar. Eu estou atualmente passando por este aprendizado citado. Entretanto, discordo totalmente quanto à sua proposição. Reflita comigo, muitos aqui passaram e progrediram. Qual a fonte deles? Não era uma 'instituição' com o objetivo de transmitir este conhecimento, e sim seu próprio esforço. No meu ver, a criação guiada tira o espaço da inspiração. Se torna mais do mesmo. E o acesso à informações está em um nível jamais imaginado! Este fórum por qual nos comunicamos conta com toneladas de conteúdo PRONTO (criar não significa fazer do zero), além de dezenas de tutoriais. O alicerce já está pronto, cabe ao indivíduo criar sua história. Abraço!!!
-
.com.br em localhost
Bom dia! Adquiri um dominio .com.br pelo registro.br Entretanto, não sei como proceder para fazer com que se conecte a minha propria máquina, pelo meu ip Se alguem puder me ajudar agradecerei! Abraço!!
-
(Resolvido)Ordenar tabela
Boa noite, tenho a seguinte tabela: {{1,30},{2,35},{3,55},{4,20},{5,70}} eu quero que ela se ordene conforme o valor de table[2]: {{5,70},{3,55},{2,35},{1,30},{4,20}} de preferencia que seja {; n=5}, independente do tamanho da primeira table.sort oferece um comp, entretanto não acho a maneira ideal de construir a função. Agradeço quem ajudar! Abraço.
-
Qual versão de otserv que mais atrai atualmente? E distro?
Particularmente, eu acredito no poder da versão 8.6, época de ouro do game. Em quesito de funcionalidades do servidor você não terá problemas, todas as principais características estão presentes no TFS. Procure sobre os bugs e dê uma olhada no changelog que as revs 8.6 e 9.6 do TFS 0.4 possuem e tire suas proprias conclusões. Não pare por aí, faça seus próprios testes. Minha opnião: Prefira Windows se o assunto for um servidor pequeno ou de amigos, ou mesmo para a fase inicial de desenvolvimento. Prefira Linux se estiver falando de um servidor de médio/grande porte. As razões estão mais que claras nos bilhões de sites que comparam os sistemas operacionais.
-
Som otclient
boa noite! devido meu nível leigo em programação, estou tendo dificuldades em compreender o mecanismo do sound system do otclient gostaria de algumas informações à respeito como por exemplo: qual o funcionamento geral do sistema? posso setar musicas em determinadas áreas? -> posso controlar diretamente de scripts do servidor? que tipos de arquivos posso usar? posso usar streaming de rádios por ex Jovem Pan? como proceder para incluir meus áudios? desde já agradeço!
-
Erro script (passiva para player)
Você também pode criar uma combat fora da function e simplesmente chamar doCombat mas precisa adicionar um exhausted próprio
-
(Resolvido)NoDamageParty
Tenha certeza que você configurou o .xml de maneira correta, colocando o event name da mesma maneira que no login.lua Além disso, se você usar um exevo gran mas vis em um player sem pt e outro na mesma pt, o que acontece? Além disso tudo, faça uma modificação: if isPlayer(attacker) and getPlayerParty(attacker) == getPlayerParty(cid) then doBroadcastMessage("negado") return false
-
(Resolvido)NoDamageParty
são 2 creeaturescripts function onStatsChange(cid, attacker, type, combat, value) if value > 0 and type == STATSCHANGE_HEALTHLOSS or (getCreatureCondition(cid, CONDITION_MANASHIELD) and type == STATSCHANGE_MANALOSS) then if isPlayer(attacker) and getPlayerParty(attacker) == getPlayerParty(cid) then return false end end return true end function onTarget(cid, target) if getPlayerParty(cid) == getPlayerParty(target) then doPlayerSendDefaultCancel(cid, "Ataque apenas inimigos") return false end return true end em login.lua: registerCreatureEvent(cid, "noDmg") registerCreatureEvent(cid, "Target") Talvez tenha alguma diferença de funções, funciona pra 8.6 Abraço
-
Quest
local itemsk = {2431,2400} local itemss = {2187, 7590, 8918, 2293, 2000, 2002, 2004} local itemsd = {2183, 7590, 8918, 2002, 2004} local itemsp = {7368, 8472, 2004} reward = { [{1, 5}] = itemss, [{2, 6}] = itemsd, [{3, 7}] = itemsp, [{4, 8}] = itemsk } function onUse(cid, item, fromPosition, itemEx, toPosition) if (getPlayerStorageValue(cid,41000)) == -1 and (getPlayerStorageValue(cid,1001)~=-1) then for voc, k in pairs(reward) do if (isInArray(voc, getPlayerVocation(cid))) then for i = 1, #k do local id = doCreateItemEx(k[i],1) if(doPlayerAddItemEx(cid, id) ~= RETURNVALUE_NOERROR) then return doPlayerSendCancel(cid, RETURNVALUE_NOTPOSSIBLE), false end end end setPlayerStorageValue(cid,41000,1) end end return true end neste codigo, você pode escolher os itens por vocação local items = {2431,2400,2421} function onUse(cid, item, fromPosition, itemEx, toPosition) if (getPlayerStorageValue(cid,41000)) == -1 and (getPlayerStorageValue(cid,1001)~=-1) then for i=1, #items do local id = doCreateItemEx(items[i],1) if(doPlayerAddItemEx(cid, id) ~= RETURNVALUE_NOERROR) then return doPlayerSendCancel(cid, RETURNVALUE_NOTPOSSIBLE), false end end setPlayerStorageValue(cid,41000,1) end end return true end este é mais simples e dá o mesmo item a todos em actions.xml <action actionid="action id que vc escolher pelo map edtior" event="script" value="nome do arquivo.lua"/> lembrando que pode ter algum erro Abraço
-
Sistema Elevador
Bom dia!! Trago um sistema de elevador como presente pelo ano que se iniciará! Use The Forgotten Server 0.3.6 crying damson. Se uma boa alma adaptá-lo a TFS 1.0, agradecerei e incluirei ao post! Crie no mapa um local assim: Não importa a quantidade de andares, só importa que deve partir do térreo z=7, e não deve ser feito no subterrâneo. Crie um arquivo talkactions/scripts/elevador.lua function onSay(cid, words, param, channel) pos = getPlayerPosition(cid) pos.stackpos = 0 floor_id = getThingfromPos(pos).itemid z = (pos.z - 7) * -1 -- verifica se está no piso do elevador if floor_id == 417 and getPlayerStorageValue(cid,42000)==-1 then -- verifica se existe o parametro numero do andar, se não existir termina o codigo if (not isNumber(param)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Digite o numero do andar.") return false end numeroDeAndares = tonumber(param) - z -- teleporte a andares superiores if numeroDeAndares > 0 then new_pos = {x=pos.x,y=pos.y,z=pos.z-numeroDeAndares,stackpos=0} if getThingfromPos(new_pos).itemid == 416 then doSendAnimatedText(pos, "SUBINDO!!!", 180) setPlayerStorageValue(cid,42000,1) for i=1, numeroDeAndares do addEvent(doTeleportThing,500*i,cid, {x=pos.x,y=pos.y,z=pos.z-i}, true) end addEvent(checkAndar,500,cid,param) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Andar invalido.") return false end -- teleporte a andar inferiores elseif numeroDeAndares < 0 then setPlayerStorageValue(cid,42000,1) doSendAnimatedText(pos, "DESCENDO!!!", 180) for i=1, numeroDeAndares*-1 do addEvent(doTeleportThing,500*i,cid, {x=pos.x,y=pos.y,z=pos.z+i}, true) end addEvent(checkAndar,500,cid,param) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce esta neste andar.") return false end elseif floor_id ~= 417 then doCreatureSay(cid, words .." ".. param) end return true end function checkAndar(cid, param) pos = getPlayerPosition(cid) z = (pos.z - 7) * -1 if tonumber(param) == z then doSendMagicEffect({x=pos.x,y=pos.y,z=pos.z}, CONST_ME_TELEPORT) doSendAnimatedText({x=pos.x,y=pos.y,z=pos.z}, "Andar "..tonumber(param), 180) setPlayerStorageValue(cid,42000,-1) else addEvent(checkAndar,500,cid,param) end end Adicione em talkactions/talkactions.xml a linha: No arquivo actions/scripts/others/doors.lua Substitua a linha 16 por: Pronto! É só entrar no piso do elevador e dizer: andar X X = o numero do andar, sendo 0 = térreo Peço sugestões de melhoria do código! Espero que seja útil a alguém! Abraço, feliz ano novo a todos!
-
(Resolvido)[PROBLEMA] Area of Effect
Funcionou perfeitamente!! Entretanto o servidor cai em todos os exori Acho que deve ser algum problema na distro.. estou usando o TFS 0.3.6... devo ter causado Crash no servidor Vou mudar pro TFS 1.0 e creio que esse tipo de problema não existirá. Há muitas mudanças no tfs 1.0 no quesito de scripts?
-
(Resolvido)[PROBLEMA] Area of Effect
perfeito, vou tentar!
-
(Resolvido)[PROBLEMA] Area of Effect
um novo problema: tenho dois times definidos por storages já fiz o script que nao deixa players do mesmo time se atacarem (onTarget) entretanto, runas de area, exori grans etc acerta também players do mesmo time. existe alguma maneira de bloquear esse efeito sem utilizar um compensador? (por exemplo adicionar a vida retirada no mesmo instante) desde ja, agradeço!
-
(Resolvido)problema com tabelas
realmente, imagino ser a forma mais simples obrigado! por exemplo, se eu precisar guardar uma string, simplesmente converter toNumber("ola") daria certo? http://otland.net/threads/lib-serializing-and-deserializing-many-values-into-from-single-storage-value.177284/ esse topico contém uma função parecida, mas guarda de outra maneira, além de aceitar outros tipos de valores. entretanto, minha demanda atual foi atendida, fica como conhecimento
-
(Resolvido)problema com tabelas
pensei ser um metodo que transforma a tabela em algo que seja possivel guardar em storages, ela simplesmente guarda as informações em um arquivo texto? enfim. imagine um evento. cada player interessado em participar, fala !entrar a talkaction adiciona o valor "cid" a uma tabela que deve ser visivel a QUALQUER script de qualquer parte. essa tabela deve conter os cid de todos os participantes, portanto eu devo ser capaz de manipular esta tabela da maneira que bem desejar, usando table.insert, table.remove ou qualquer outra coisa, assim como #tabela essa tabela só deve ter os valores resetados se eu definir algum script que a faça, ou quando o servidor for desligado. acho que isso é tudo. testarei ambas as funções (mock e tarjei) agora. eu digo tabela, mas qualquer meio de registrar o que eu preciso é valido, assim como disse databases é minha proxima opção
-
(Resolvido)problema com tabelas
http://otland.net/threads/lua-array-serialization-deserialization-into-from-single-storage-value.189180/ olhe isso e me diga o que pensa na verdade, nao sei bem se esta será minha solução, mas foi o que entendi no meu pequeno conhecimento
-
(Resolvido)problema com tabelas
Eu encontrei uma solução: existe uma maneira de transformar as tabelas em um formato que as proprias storages possam guardar entretanto, ainda nao testei. Começarei a mexer neste instante. --[[ Colocar strings em storages penso ser algo simples transformar a string em número deve resolver ]]-- meu problema pode ser resolvido usando a database, entretanto meu conhecimento não me permite fazê-lo.
-
(Resolvido)problema com tabelas
certo, até essa parte tudo bem. entretanto, 3 players puxam a alavanca, por exemplo se em uma talkaction, eu quiser que todas as cids sejam enviadas em textos eu não consigo. nenhum valor aparece. esse é meu problema
-
(Resolvido)problema com tabelas
bom dia! estou tendo dificuldades para criar uma tabela que esteja durante toda a execução do ot por exemplo crio uma tabela players_id = {} e conforme cada player puxa uma alavanca, o script faz um table.insert(players_id,cid) e essa tabela cheia de creatureIDs deve estar disponivel a qualquer script de qualquer tipo (actions, cevents, movements etc) a tabela deve ser reseta apenas quando o servidor é fechado, a nao ser que algum script faça isso, declarando que ela é {} novamente não tenho certeza exata quanto ao meu problema, mas imagino que esteja em saber o local que devo declará-la por exemplo, criei um .lua de configuração (assim como o config.lua, chamarei de marcelo.lua) no inicio do marcelo.lua declarei players_id = {} mas noto que sempre que inserto um valor, ele nao é fixado na tabela, pois atraves de outro script verifico que a tabela sempre contém 0 elementos, nao importa quantos players eu coloco imagino que por ser declarada fora de uma função, ela sempre será nula fora do escopo de uma função que a modifique porém não sei como devo proceder, então sei que minha explicação foi confusa, se algum ponto falhei, tentarei tornar mais claro desde já agradeço!!
-
(Resolvido)duvida sobre tabelas
tenho uma duvida por exemplo a tabela: t = {12,231,13,512} (sao 4 valores, #t = 4 ) nao importa a quantidade de valores ou quais sao os valores se eu usar a função table.remove(t,3) a tabela se tornará: {12,231,nil,512} ou {12,231,512} ? Se a resposta certa for a tabela de 4 elementos, como posso proceder para transformar a tabela em 3 elementos?
-
monstros
obrigado!! quanto ao ataque a apenas membros de uma guild ou de uma party nao pode ser feito diretamente via .xml, estou certo?
- monstros