Ir ao conteúdo
  • Cadastre-se

C# de novo


Nerun

Posts recomendados

Naquele mesmo jogo, existe um comando que faz referência ao trecho de código para apagar tosos os spawners com determinado SpawnID.

public static void Initialize()
{
Commands.Register( "SpawnGen", AccessLevel.Administrator, new CommandEventHandler( SpawnGen_OnCommand ) );
}

[Usage( "SpawnGen [<filename>]|[remove <region>|<rect>]|[save <region>|<rect>]" )]
[Description( "Generates spawners from Data/Monsters/*.map" )]
private static void SpawnGen_OnCommand( CommandEventArgs e )
{
if ( e.ArgString == null || e.ArgString == "" )
{
 e.Mobile.SendMessage( "Usage: SpawnGen [<filename>]|[remove <region>|<rect>|<ID>]|[save <region>|<rect>|<ID>]" );
}
else if ( e.Arguments[0].ToLower() == "remove" && e.Arguments.Length == 2 )
{
 Remove( e.Mobile, e.Arguments[1].ToLower() );
}
else if ( e.Arguments[0].ToLower() == "remove" && e.Arguments.Length == 5 )
{
 int x1 = Utility.ToInt32( e.Arguments[1] );
 int y1 = Utility.ToInt32( e.Arguments[2] );
 int x2 = Utility.ToInt32( e.Arguments[3] );
 int y2 = Utility.ToInt32( e.Arguments[4] );
 Remove( e.Mobile, x1, y1, x2, y2 );
}
else if ( e.ArgString.ToLower() == "remove" )
{
 Remove( e.Mobile, ""  );
}
else if ( e.Arguments[0].ToLower() == "save" && e.Arguments.Length == 2 )
{
 Save( e.Mobile, e.Arguments[1].ToLower() );
}
// Remove by ID ------------------
else if ( e.Arguments[0].ToLower() == "remove" && e.Arguments.Length == 1 )
{
 int ID = Utility.ToInt32( e.Arguments[1] );
 Remove( ID );
}
else if ( e.Arguments[0].ToLower() == "save" && e.Arguments.Length == 1 )
{
 int ID = Utility.ToInt32( e.Arguments[1] );
 Save( ID );
}
// End Remove by ID --------------
else if ( e.Arguments[0].ToLower() == "save" && e.Arguments.Length == 5 )
{
 int x1 = Utility.ToInt32( e.Arguments[1] );
 int y1 = Utility.ToInt32( e.Arguments[2] );
 int x2 = Utility.ToInt32( e.Arguments[3] );
 int y2 = Utility.ToInt32( e.Arguments[4] );
 Save( e.Mobile, x1, y1, x2, y2 );
}
else if ( e.ArgString.ToLower() == "save" )
{
 Save( e.Mobile, "" );
}
else
{
 Parse( e.Mobile, e.ArgString );
}
}

Como vocês podem ver, o comando tem várias opções, você pode digitar:

[spawngen save

[spawngen save <x1 y1 x2 y2>

[spawngen save <região>

[spawngen save <id>

[spawngen remove

[spawngen remove <x1 y1 x2 y2>

[spawngen remove <região>

[spawngen remove <id>

Mas o que me interessa aqui é o [spawngen remove id (sendo id um número inteiro).

Então durante o jogo o cara digita isso no prompt, por exemplo:

[spawngen remove 10

Então todos os spawners com SpawnID = 10 teriam que ser deletados, entenderam?

Então o trecho:

else if ( e.Arguments[0].ToLower() == "remove" && e.Arguments.Length == 1 )
{
int ID = Utility.ToInt32( e.Arguments[1] );
Remove( ID );
}

Teria que mandar a ID para o trecho (que aparece mais pra frente no código):

private static void Remove( int ID )
{
World.Broadcast( 0x35, true, "Spawns are being removed, please wait." );
DateTime startTime = DateTime.Now;
int count = 0;
ArrayList itemsremove = new ArrayList();

foreach ( Item itemremove in World.Items.Values )
{
 if ( itemremove is Spawner && ((Spawner)itemremove).SpawnID == ID )
 {
  itemsremove.Add( itemremove );
  count +=1;
 }
}

foreach ( Item itemremove2 in itemsremove )
{
 itemremove2.Delete();
}

DateTime endTime = DateTime.Now;
World.Broadcast( 0x35, true, "{0} spawns have been removed in {1:F1} seconds.", count, (endTime - startTime).TotalSeconds );
}

Este trecho então deletaria o item. O trecho acima funciona, no entanto, o trecho com o else if... não... ele não está mandando a ID pra este trecho, para que ele possa identificar os spawners com esta ID...

Alguma ajuda?

Link para o comentário
Compartilhar em outros sites

Não funcionou com 2, mas funcionou com 3. Acredito que seja porque já existe uma opção exatamente igual á esta, com "remove" e lenght = 2.

Quando eu coloquei 3 na verdade não funcionou, porque eu fiz assim:

[spawngen remove 1

mas quando eu fiz assim:

[spawngen remove 1 teste

Funcionou, ele removeu todos os spawners com SpawnID = 1, e ignorou a segunda entrada que eu coloquei ("teste", no caso). De forma que eu poderia ter colocado qualquer palavra/número depois do ID, porque seria ignorada.

Não é exatamente o que eu queria, mas serve. Vou ver se preciso do outro comando com lenght = 2, se não recisar deleto ele e pronto.

Muito obrigado meu camarada! :D

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!