CarlosHenrq

Desenvolvedor
  • Total de itens

    591
  • Registro em

  • Última visita

  • Days Won

    31

Reputação

109 Especialista

Sobre CarlosHenrq

  • Rank
    Desenvolvedor de Projetos
  • Data de Nascimento 16-02-1994

M?todos de Contato

Informa??o do Perfil

  • Sexo:
    Homem

Últimos Visitantes

5.345 visualizações
  1. @pensador Vai uma aqui pra você pensar... Porque usar percentheal e @heal juntos?
  2. vip

    @ChampzRO Muda pra getstrlen, eu sempre confundo todos os comandos. Normalmente acontece quando a função não existe ou tem erro na função.
  3. vip

    @ChampzRO Sempre esqueço de usar o callfunc ewe Olha dinovo o post e tenta =)
  4. vip

    @ChampzRO Você precisa converter esses segundos restantes no tempo e não o que você está fazendo, falta lógica nisso ai. Eu tenho uma função chamada "calc_time" de 2011 que pode ser encontrada no script [Evento] Arena de Eventos 1.9.2 function script calc_time { set @t,getarg(0)-gettimetick(2); if(@t%60) set @ret$,(@t%60)+" segundo(s)"; if(@t/60%60) set [email protected]$,(@t/60%60)+" minuto(s) "[email protected]$; if(@t%86400/3600) set @ret$,(@t%86400/3600)+" hora(s) "[email protected]$; if(@t%2592000/86400) set @ret$,(@t%2592000/86400)+" dia(s) "[email protected]$; if(@t/2592000) set @ret$,(@t/2592000)+" mes(es) "[email protected]$; return @ret$; } Adicione ela ao script que eu coloquei ali e tente dessa forma aqui, modifiquei ela com 2 linhas pra facilitar os testes neste caso aqui x) - script TesteVIP -1,{ OnInit: bindatcmd "test",strnpcinfo(3)+"::OnAtcommand"; end; OnAtcommand: @vipRestante$ = callfunc("calc_time", #official_time_vip); if(getstrlen(@vipRestante$) == 0) dispbottom "Você não possui mais tempo vip!"; else dispbottom "Você possui \""[email protected]$+"\" restante de tempo vip."; end; } function script calc_time { set @t,getarg(0)-gettimetick(2); if(@t <= 0) return ""; if(@t%60) set @ret$,(@t%60)+" segundo(s)"; if(@t/60%60) set @ret$,(@t/60%60)+" minuto(s) "[email protected]$; if(@t%86400/3600) set @ret$,(@t%86400/3600)+" hora(s) "[email protected]$; if(@t%2592000/86400) set @ret$,(@t%2592000/86400)+" dia(s) "[email protected]$; if(@t/2592000) set @ret$,(@t/2592000)+" mes(es) "[email protected]$; return @ret$; }
  5. vip

    @ChampzRO Porque você não usa daquela forma ali que eu coloquei? - script TesteVIP -1,{ OnInit: bindatcmd "test",strnpcinfo(3)+"::OnAtcommand"; end; OnAtcommand: @vipRestante = #official_time_vip - gettimetick(2); if(@vipRestante < 0) dispbottom "Seu periodo vip já terminou!"; else dispbottom "Você possui "[email protected]+" segundos de vip."; end; } Para usar com strings, você precisa concatenar elas. No caso das mensagens de npc, você usa com o +. A String inicia e termina com as " (aspas)... Se você definir o final dela e "somar" uma variável ou outro texto, ele vai entender perfeitamente... Veja... "oi eu sou o " + strcharinfo(0) + "!!!!"; Você está indicando que são 3 strings na soma. "oi eu sou o " strcharinfo(0) "!!!!" Para juntar os 3, nas linguagens de NPC você pode usar o + entre eles que vai exibir tudo junto x)
  6. vip

    @ChampzRO Do jeito que eu coloquei, ele vai calcular o tempo restante, mas não vai exibir. Com o valor ali, você pode exibir da forma que quiser. Procure os comandos para exibição de mensagem e faça os 2 funcionarem juntos...
  7. vip

    Você pode usar... @vipRestante = #official_time_vip - gettimetick(2); Menor igual a 0: Não tem mais vip sobrando. Maior que 0: O Personagem é vip e possui o resultado em segundos. @vipRestante irá retornar os segundos que faltam para acabar o vip... =)
  8. Mudamos para apenas 1 solução e passamos a benefícios por cada feudo então. A Cidade de prontera é o lugar dos cavaleiros, templários e sacerdotes basicamente, correto? Então, somente estes receberiam algum tipo de beneficio. Veja, em prontera, os cavaleiros e templários devem ser respeitados, então estes poderiam receber uma % de vida em mapas onde prontera influencia. A Cidade de Geffen é o lugar dos magos, bruxos e sábios... basicamente estas classes receberiam benefícios mágicos ou algo assim... A Cidade de Payon é o lugar dos arqueiros, caçadores... eles poderiam receber mais destreza e agilidade... A Cidade de Aldebaran... é o lugar dos mercadores... aqui aplicamos regras de economia... talvez somente nos mercadores e não nos NPCs... Algo dessa forma acho que fica mais coerente e interessante. Os beneficios devem ser aplicados a somente membros da guilda que tenham protegido o castelo e etc... etc...
  9. Pra resolver o problema de monopólio... de ter que ficar pagando taxas, não poderia ser dado desconto aos membros da guilda? Tipo, Para não pagarem imposto para a guilda, eles receberem descontos (baixos até tipo 10% baseado na economia do castelo) em NPCs e lojinhas de mercadores? Em teoria, o lider do castelo ajuda a região trazendo riqueza (economia) e os presentes na área são obrigados a reduzir seus valores a conforme a somatória de economia de castelo. São 5 castelos por feudo, da guerra 1.0 Logo... 10% / 5 = 2% de desconto a cada 100 de economia por castelo. Se 5 guildas diferentes controlarem os castelos, são 2% de desconto para cada uma. Se uma controlar os 5, então são 10%... se todas estiverem 100 de economia claro. Só uma ideia >......>
  10. @Vermillion Amei essa ideia :v As guildas que controlam feudos podem receber % das taxas de vendas em determinadas cidades ou descontos em vendas dos mercadores... curti :v
  11. Eu já trabalhei neste mapa. e fica +- dessa forma ai mesmo mas da pra otimizar x)
  12. Imagine um mapa 10x10 da forma abaixo: 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 Agora leia a sintaxe do comando... *setcell("<map name>", <x1>, <y1>, <x2>, <y2>, <type>, <flag>) Each map cell has several 'flags' that specify the properties of that cell. These include terrain properties (walkability, shootability, presence of water), skills (basilica, land protector, ...) and other (NPC nearby, no vending, ...). Each of these can be 'on' or 'off'. Together they define a cell's behavior. This command lets you alter these flags for all map cells in the specified (x1,y1)-(x2,y2) rectangle. 'type' defines which flag to modify. Possible options include cell_walkable, cell_shootable, cell_basilica. For a full list, see constants.conf. 'flag' can be false (clear flat) or true (set flag). Bom, x1 e y1 são os valores iniciais e x2 e y2 respectivamente são os valores finais. Se você der setcell com x1=3 e y1=3, e colocar x2=5, y=5 o mapa será definido com as celulas nas posições... 0 1 2 3 4 5 6 7 8 9 1 2 3 x x x 4 x x x 5 x x x 6 7 8 9 O Basílica é pra pra proteção, então sim você precisa definir o mapa inteiro como pvp e usar o basílica para colocar nas áreas que você não deseja o pvp.
  13. vip

    Você tem uma var chamada "#official_time_vip" que deve estar na tabela "global_acc_reg_num_db" ou algo desse gênero.
  14. vip

    @ChampzRO O VIP deve ser adicionado via comandos de NPC até onde me lembro. /*====================================================== * Adiciona tempo vip. [Shiraz / brAthena] * ex: add_time_vip(dias, horas, minutos, segundos); *-----------------------------------------------------*/ BUILDIN(add_time_vip) { int time_s[4], i; TBL_PC *sd; if(!(sd = script->rid2sd(st))) return false; for(i = 0; i < 4; i++) time_s[i] = script_getnum(st,2+i); pc->add_time_vip(sd, time_s); return true; } Faça um npc desse aqui oh: prontera,150,150,5 script TesteVIP 123,{ // Adiciona o vip por 5min add_time_vip(0, 0, 5, 0); end; }
  15. Inverter as cores no gimp não funciona? Tipo, inverte, remove e devolve a inversão... acho que fica mais de boa