Jump to content

pan

Community Contributors
  • Content Count

    355
  • Joined

  • Last visited

  • Days Won

    13

Everything posted by pan

  1. Tomara que dê mesmo, quero ver esse projeto pronto c: Um bom manual de scripting é a própria referência utilizada pelos desenvolvedores, todos os comandos estão listados com exemplos, está em: doc/script_commands.txt
  2. That's a good idea, and it wouldn't be difficult to implement either. I've changed the names of those config options. Open src/map/battle.c and find: { "case_sensitive_aegisnames", &battle_config.case_sensitive_aegisnames, 1, 0, 1, },Add below:{ "guild_castle_invite", &battle_config.guild_castle_invite, 0, 0, 1, },{ "guild_castle_expulsion", &battle_config.guild_castle_expulsion, 0, 0, 1, },Open src/map/battle.h and find:int case_sensitive_aegisnames;Add below: int guild_castle_invite; int guild_castle_expulsion;Finally open src/map/guild.c and find (@guild_invite): if( tsd->status.guild_id > 0 || tsd->guild_invite > 0 || ((map->agit_flag || map->agit2_flag) && map->list[tsd->bl.m].flag.gvg_castle)Replace it with: if( tsd->status.guild_id > 0 || tsd->guild_invite > 0 || ((map->agit_flag || map->agit2_flag) && map->list[tsd->bl.m].flag.gvg_castle && !battle_config.guild_castle_invite)Find (@guild_leave): if( sd->status.account_id != account_id || sd->status.char_id != char_id || sd->status.guild_id != guild_id || ((map->agit_flag || map->agit2_flag) && map->list[sd->bl.m].flag.gvg_castle)Replace it with: if( sd->status.account_id != account_id || sd->status.char_id != char_id || sd->status.guild_id != guild_id // Can't leave inside castles || ((map->agit_flag || map->agit2_flag) && map->list[sd->bl.m].flag.gvg_castle && !battle_config.guild_castle_expulsion)Find (@guild_expulsion): if ((tsd = map->id2sd(account_id)) && tsd->status.char_id == char_id && ((map->agit_flag || map->agit2_flag) && map->list[tsd->bl.m].flag.gvg_castle)Replace it with: if ((tsd = map->id2sd(account_id)) && tsd->status.char_id == char_id && ((map->agit_flag || map->agit2_flag) && map->list[sd->bl.m].flag.gvg_castle && !battle_config.guild_castle_expulsion)In your conf/battle/guild.conf add:// Can guild members invite/expel members inside guild castles in WoE/GvG? (Note 1)// default noguild_castle_invite: noguild_castle_expulsion: no
  3. Entendo, acredito que seja possível sim fazer npcs ficarem visíveis só para alguns jogadores, mas é necessário modificar a source para fazer isso. Da para você procurar o BrowEdit para fazer mapas ele é bem simples de ser utilizado c:
  4. pan

    NidRod

    Bom, isso não tem nada a ver com a source do emulador na verdade, é um 'problema' de database/script. Adicione em algum arquivo de npc o seguinte comando: <mapa>,<x>,<y>,<xs>,<ys>%TAB%boss_monster%TAB%<nome>%TAB%<mob id>,<quantidade>,<delay1>,<delay2>,<evento> <mapa>,0,0,0,0%TAB%boss_monster%TAB%<nome>%TAB%<mob id>,1,86400000,0,0Nota: 1000 * 60 * 60 * 24 = 86400000ms = 24h Só substitua <mapa> pelo mapa que você precisa e <nome> pelo nome que você quer que o mob tenha. Se você quiser que seja o nome padrão da database troque <nome> por --en-- Utilizar boss_monster ao invés de monster torna possível encontrar o mob usando o Convex Mirror, um item vip.
  5. Nossa cara, tem que avisar em um bug report, esse dano está totalmente incorreto... skillratio += (300 + 40 * skill_lv)/8;Fico pensando quem foi o gênio que pensou em dividir por 8 isso dai.Você sempre pode utilizar a source do Hercules com os scripts do cronus, não vai ter nenhum problema de incompatibilidade, já que eles estão seguindo a nossa source.
  6. Esse servidor comum é oficial? Será que eles não fizeram alguma alteração nas mecânicas deles? Se você quiser alterar o dano da skill é só abrir src/map/battle.c e procurar por: case AS_SONICBLOW: skillratio += 300 + 40 * skill_lv; break;Esse skillratio é a porcentagem de aumento no ataque de seu personagem no uso da habilidade, no total@pre-re/skill_db.txt136,-1,8,1,-1,0,0,10,-8,no,0,0,0,weapon,0, AS_SONICBLOW,Sonic BlowO ataque é modifcado no total e não em cada hit pois o 'number of hits' (9º campo) é negativo, então o dano das lâminas somará o skillratio. E comparando com o iROwiki (que as vezes não bate com informações do kRO, que é emulado pelo Hercules) ele parece estar incorreto, devendo estar:case AS_SONICBLOW: skillratio += 400 + 40 * skill_lv; break; http://irowiki.org/wiki/Sonic_BlowTalvez seja necessário preencher um bug no tracker para avisar a equipe de desenvolvedores quanto a isso.
  7. Seria um trabalho tremendo para fazer tudo isso em cima de algo já existente como o RO, ainda mais por causa das limitações inerentes a ter um client já pré-programado, mas em termos de server-side não seria algo tão difícil. É mais difícil, mas acho melhor fazer algo do zero ou mesmo usando uma plataforma já existente de desenvolvimento, como o RPGMaker, justamente para poder fazer algo que é mesmo seu, entende? Poder trabalhar com cut-scenes, criar mecânicas, todo o processo de fazer um jogo. As vezes até mesmo um single-player, que é bem melhor para criar e desenvolver modos de história. Você tem uma boa ideia e acho que daria para trabalhar bem nela, mas utilizar o RO como plataforma seria desperdício, será que não seria melhor ir em um fórum especializado em desenvolvimento de jogos para ter suporte adequado para melhorar e por todo esse projeto em prática? A seção portuguesa daqui do Hercules não é muito ativa, talvez se você quisesse continuar com o RO como base e com auxilio de uma maior, você poderia ir para o brA ou até mesmo o Cronus que possuem comunidades imensas, ou possuíam, não sei como andam as coisas. Quanto a história do RO acho que eles até queriam contar alguma coisa no começo, mas desistiram no meio do caminho misturando várias mitologias e coisas totalmente aleatórias, tipo gunslinger shuashaushaushaushau
  8. It's not in the source, if you want to alter any type of requirement most of times you just need to alter skill_require_db.txt in your db folder 232,0,0,20,0,0,0,99,0,0,none,0,7137,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AM_CANNIBALIZE#ƒoƒCƒIƒvƒ‰ƒ“ƒg#7137 is the id of the item that's used and the one next to it is the quantity that's required.// Structure of Database:// SkillID,HPCost,MaxHPTrigger,SPCost,HPRateCost,SPRateCost,ZenyCost,RequiredWeapons,RequiredAmmoTypes,RequiredAmmoAmount,RequiredState,SpiritSphereCost,RequiredItemID1,RequiredItemAmount1,...,RequiredItemID10,RequiredItemAmount10
  9. Nenhuma pergunta é idiota, pode ficar tranquilo c: Uma boa lição é sempre ter um backup de seu servidor e de suas databases antes de fazer qualquer modificação. Para configurar o flux é só abrir config/application.php e editar as informações, o arquivo é bem auto-explicativo. Não tem tanta necessidade de ativar os plugins mas aqui está um link explicando como compilar eles: http://herc.ws/wiki/Building_HPM_Plugin_for_MSVC só seguir essas instruções e ao invés de passar as coisas do "dance.c" passe as do plugin que você quer instalar.
  10. O getitemcount só verificaria se há o item no inventório e não se ele está na lista dos equipados, não? Continuará sim, você deve fazer uma verificação no OnUnequipScript de seu item.OnUnequipScript: <" OnUnequip Script (can also be multi-line) ">Adicione isso em algum script:function script podeContinuar { // O jogador não pode continuar nesse mapa se tirar o equipamento if( strcharinfo(3) == "mapa" ) warp "prontera",150,150; end;}Coloque assim no seu OnUnequipScriptOnUnequipScript: <"podeContinuar();">
  11. E se não me engano ainda a estrutura do brAthena é diferente da do Hercules, mas parece que você está tentando utilizar algumas status changes que não existem no seu emulador. Você também tentou utilizar um sprite inexistente em um npc Um mapflag que não é suportado pelo brA (parece) Em algum script você tentou criar duas chat rooms em um npc só, o que não é possível, antes de fazer outra é sempre necessário deletar a primeira Muitos scripts estão executando sem nenhum jogador anexado, e utilizando funções que dependem disso. São erros bem básicos de script... Da próxima vez que for usar esse fórum esteja utilizando Hercules, não temos como adivinhar o que o brA suporta ou deixa de suportar.
  12. With WeeMapCache it's a lot more easier to test maps as well... especially you can see if the .gat of the map is actually available through this software. I never used this feature to test out maps as I've always used WeeMap so... don't think it's really a needed feature anymore? =/ @Tepoo Please reply with something more valuable instead of "-1 dumb idea" as this point wouldn't be taken into account as it doesn't justify a reason to keep the "use_grf" setting from your perspective. Why use a 3rd party tool or even code one when you can just use your grf to do tests? Also removing this feature wouldn't delete any files that are already being used in the source as they are used by mapcache as well. Our codebase won't change much, actually. It's something that works and nobody needs to download other tools to test.
  13. Qual data de hexed você está usando?
  14. Well, that's one very constructive and nice post. @topic I'm pretty sure most people use mapcache, but I guess there still are people that prefer to read directly from a grf file and it sure is better to do custom map tests with use_grf on. So I don't think that's a good idea to drop this option.
  15. Quais configurações de diff você está usando? Se estiver com o 'read data folder first' tudo que estiver na sua pasta data sobrepujará os arquivos dos grfs, por exemplo se tem um clientinfo.xml na pasta é ele que será lido e não o da grf. Esse PACKETVER é igual a versão de seu hexed? Se não for você deve muda-lo e recompilar ou então seu emulador não se comportará corretamente com alguns packets.
  16. O problema as vezes é mais na compatibilidade dos luas do bRO para os do kRO, não sei em que ponto ela está, mas se começarem muitos erros ficaria melhor descompilar, pegar só as coisas traduzidas e passar a mão para os do kRO...
  17. Não precisa nem usar OnTouch só o OnPCLoadMapEvent + a mapflag loadevent que já dá para fazer todas as checagens com um getequipid c: OnPCLoadMapEvent: if(getequipid(EQI_HEAD_TOP) != .id_capacete) warp "prontera",150,150; end;OnInit: set .id_capacete, algum_id; end;nome_mapa mapflag loadevent // Só com essa mapflag o OnPCLoadMapEvent será habilitado no mapaEDIT:Adicionei uma descrição do getequipid para melhorar um pouquinho a resposta
  18. It's doable, but using the client as a text editor would be awful... If you're having trouble to position a npc in the map just go to that place and type /where it'll give you your coordinates in-game. I'm not sure if you're aware of but there's an atcommand called @reloadscript.
  19. Da sempre para você utilizar um padrão de OnTouch no npc e algum efeito da lista do doc/effect_list.txt, todas as skills estão computadas ali. Se não me engano algum desses efeitos deve tornar isso possível: 102. Hammerfall183. Self Destruction241. Violent Gale (Visual Effect)432. Solar, Lunar and Stellar Perception (Visual Effect)Para usar o Ontouch:<map name>,<x>,<y>,<facing>%TAB%script%TAB%<NPC Name>%TAB%<sprite id>,<triggerX>,<triggerY>,{<code>}Os triggers que definem quais serão as dimensões da área em que o script será ativado. O X e o Y definem a distância do npc até as linhas das bordas do polígono que será formado, é como se o NPC estivesse no ponto (0,0) de um plano cartesiano e o tamanho dos quadrantes seria definido pelos triggers. Então se você definisse 2 e 2 você teria quatro quadrantes em torno de seu NPC sendo 2x2 cada um, além das linhas que definem o plano (que nesse caso são contadas também ao contrário da matemática), totalizando em uma área de 5x5.Por exemplo se eles forem 3 e 3, uma área de 7x7 será passível a ativação de seu OnTouch. EDIT: A sugestão do EvilPuncker falando do NPC_EARTHQUAKE é melhor que a minha dos efeitos... Acho que dará mais certo EDIT2: Com base nessa resposta eu reescrevi o artigo do wiki, acho que lá está mais completa a descrição, mas está em inglês: http://herc.ws/wiki/OnTouch
  20. How do you guys find this leaked stuff? Great topic btw. Thank you! I'll starting reading this code right away, I love reading new code samples like this one c:
  21. This definitely would help a lot +1 but maybe put this in a conf file as I'm pretty sure many server owners would prefer to keep their online counts as is.
  22. Tem que mexer nas tabelas a sintaxe padrão do MySQL não aceita mais TYPE no lugar de ENGINE desde a 5.0, então substitua todos os TYPE=MyISAM;porENGINE=MyISAM;Dei uma lida nas inserções e criações de tabelas copiei e modifiquei os problemas: http://pastebin.com/kDD6Lqke tenta utilizar essas queries para fazer as tabelas do PvpMaster e veja se funciona.Não se esqueça de modificar: set $@sound,3; Paraset $@sound,1;Se você não tiver os arquivos na sua pasta wav ou os sons podem dar gravity no seu client. Ah e não se esqueça de mudar a linha que tem "Announce" para "announce" o parser do Hercules é sensível à caixa (alta ou baixa). Não testei nada disso, mas espero que funcione
  23. Thank you for your attention c: I've made some changes and modified some files, I already made a pull request: https://github.com/HerculesWS/Hercules/pull/251
  24. Não da para colocar diretamente, como eu disse no outro post tem que converter usando o conversor c:
  25. IMHO it would be just another waste of resources :x but If you want people to stop bypassing your client-side manner it's possible to encrypt your grf, then, at least, it'd be way more difficult to bypass... Or you could ask for a plugin in the plugin request area
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.