Jump to content

pan

Community Contributors
  • Content Count

    355
  • Joined

  • Last visited

  • Days Won

    13

Posts 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. 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,0
    Nota: 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 Blow
    O 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_Blow

    Talvez 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. acho q sim, por isso recomendei o OnTouch, mas só testando mesmo pra saber :) btw eu usaria getitemcount ao invés de getequipid :P

    O getitemcount só verificaria se há o item no inventório e não se ele está na lista dos equipados, não?

    Caso o usuário retire o item, ele continuará no mapa?

    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 OnUnequipScript
    OnUnequipScript: <"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.

    [Aviso]: status_readdb_sc_conf: Invalid status type SC_MOONSTAR specified.

    [Aviso]: status_readdb_sc_conf: Invalid status type SC_SUPER_STAR specified.

    Você também tentou utilizar um sprite inexistente em um npc

    [Erro]: status_set_viewdata (NPC): No view data for class 5txt

    Um mapflag que não é suportado pelo brA (parece)

    [Erro]: npc_parse_mapflag: mapflag nÒo reconhecida 'restricted' arquivo 'npc/out

    ros/pvp_sem_custom.txt', linha '223'.

    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

    [Erro]: chat_createnpcchat: NPC 'Presenþa' já tem uma sala de chat, não é possív

    el criar um novo!

    Muitos scripts estão executando sem nenhum jogador anexado, e utilizando funções que dependem disso.

    [Erro]: script_rid2sd: erro fatal! nenhum jogador anexado!

    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.  

     

    @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.

    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.

     

     

    i'm with this +1

    but before do it hercules have to provide tool to do it.

    even if WeeMap exist.

    i think so.

    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. -1

     

    dumb idea.

    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.


  14. 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.


  15. 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...


  16. 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 mapa
    EDIT:

    Adicionei uma descrição do getequipid para melhorar um pouquinho a resposta


  17. 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.


  18. 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.

    ontouch.jpg

     

    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


  19. 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;
    por
    ENGINE=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;	
    Para
    set $@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 :)

  20. 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.