Ir para conteúdo
Entre para seguir isso  
lews

Prison System

Recommended Posts

lews    0
lews

Esse code é pra mandar pra prisão o cara q matar mta gente. O pk pode sair da cadeia falando !leaveprison quando sumir a red skull.

Quando o player estiver na cadeia, o masterPos (temple) dele é a cadeia. Portanto vc pode por monstros e áreas non-pz lá.

 

Feito no Evolutions 0.7.6a (SVN de 03 de fevereiro de 2007) por Lews.

 

Obs.: se você não tem os mods que fazer o player ser banido ao matar mta gente, use do xidaozu (evolutions). =P

 

O resto pra baixo vai em ingles msm...

 

 

//CONFIGMANAGER.CPP

//on the loadfile add:

#ifdef __LEWS_PRISON__

m_confInteger[PRISONX] = getGlobalNumber(L, "prisonx", 100);

m_confInteger[PRISONY] = getGlobalNumber(L, "prisony", 100);

m_confInteger[PRISONZ] = getGlobalNumber(L, "prisonz", 7);

m_confInteger[LEAVEPRISONX] = getGlobalNumber(L, "leaveprisonx", 100);

m_confInteger[LEAVEPRISONY] = getGlobalNumber(L, "leaveprisony", 100);

m_confInteger[LEAVEPRISONZ] = getGlobalNumber(L, "leaveprisonz", 7);

#endif

 

//CONFIGMANAGER.H

//declare the integer:

#ifdef __LEWS_PRISON__

PRISONX,

PRISONY,

PRISONZ,

LEAVEPRISONX,

LEAVEPRISONY,

LEAVEPRISONZ,

#endif

 

//PLAYER.CPP

//where you have "if(redSkullTicks >= g_config.getNumber(ConfigManager::BAN_UNJUST) * g_config.getNumber(ConfigManager::FRAG_TIME)){", replace:

g_bans.addPlayerBan(getName(), std::time(NULL) + g_config.getNumber(ConfigManager::BAN_TIME), "excessive unjustifed player killing");

kickPlayer();
//with this:

#ifdef __LEWS_PRISON__

Position prisonPos;

prisonPos.x = g_config.getNumber(ConfigManager::PRISONX);

prisonPos.y = g_config.getNumber(ConfigManager::PRISONY);

prisonPos.z = g_config.getNumber(ConfigManager::PRISONZ);



if(g_game.internalTeleport(this, prisonPos) == RET_NOERROR){

    g_game.addMagicEffect(prisonPos, NM_ME_ENERGY_AREA);

    this->masterPos = prisonPos;

    this->removeCondition(CONDITION_INFIGHT);

    this->sendTextMessage(MSG_STATUS_WARNING, "You were arrested. Say !leaveprison to leave.");

}

#else

g_bans.addPlayerBan(getName(), std::time(NULL) + g_config.getNumber(ConfigManager::BAN_TIME), "excessive unjustifed player killing");

kickPlayer();

#endif

 

//COMANDS.CPP

//on the table of commands add:

#ifdef __LEWS_PRISON__

{"!leaveprison", &Commands::leavePrison},

{"/arrest", &Commands::sendToPrison},

#endif

 

//at the end of the file add:

#ifdef __LEWS_PRISON__

bool Commands::leavePrison(Creature* creature, const std::string& cmd, const std::string& param)

{

    Player* player = creature->getPlayer();

    Position prisonPos;

    prisonPos.x = g_config.getNumber(ConfigManager::PRISONX);

    prisonPos.y = g_config.getNumber(ConfigManager::PRISONY);

    prisonPos.z = g_config.getNumber(ConfigManager::PRISONZ);



    if(player && player->masterPos == prisonPos){

        //if(player->redSkullTicks > 0){

        if(player->skull == SKULL_RED){



            std::ostringstream info;

            info << "You can leave in " <<  tickstr(player->redSkullTicks) << ".";



            player->sendTextMessage(MSG_STATUS_CONSOLE_BLUE, info.str().c_str());

            return false;

        }

        else {

            Position leaveprisonPos;

            leaveprisonPos.x = g_config.getNumber(ConfigManager::LEAVEPRISONX);

            leaveprisonPos.y = g_config.getNumber(ConfigManager::LEAVEPRISONY);

            leaveprisonPos.z = g_config.getNumber(ConfigManager::LEAVEPRISONZ);

               Tile* tile = g_game.getTile(leaveprisonPos.x, leaveprisonPos.y, leaveprisonPos.z);        

            if(tile && tile->creatures.size() != 0){

                leaveprisonPos.x++;

            }

            if(g_game.internalTeleport(player, leaveprisonPos) == RET_NOERROR){

                g_game.addMagicEffect(leaveprisonPos, NM_ME_ENERGY_AREA);

                player->masterPos = leaveprisonPos;

            }

            return true;

        }

    }

    else {

         player->sendTextMessage(MSG_STATUS_CONSOLE_BLUE, "You are not in the prison.");

         return false;

    }

}



bool Commands::sendToPrison(Creature* creature, const std::string& cmd, const std::string& param)

{

    Player* caster = creature->getPlayer();

    Position prisonPos;

    prisonPos.x = g_config.getNumber(ConfigManager::PRISONX);

    prisonPos.y = g_config.getNumber(ConfigManager::PRISONY);

    prisonPos.z = g_config.getNumber(ConfigManager::PRISONZ);

	std::string name;

	std::istringstream in(param.c_str());



	std::getline(in, name, ',');

	in >> prisonPos.x >> prisonPos.y >> prisonPos.z;	



	Tile* tile = g_game.getTile(prisonPos.x, prisonPos.y, prisonPos.z);  

	if(tile && tile->creatures.size() != 0){

  prisonPos.x++;

	}



	if(Player* player = g_game.getPlayerByName(name)){

  if(g_game.internalTeleport(player, prisonPos) == RET_NOERROR){

  	g_game.addMagicEffect(prisonPos, NM_ME_ENERGY_AREA);

  	player->redSkullTicks = (g_config.getNumber(ConfigManager::BAN_UNJUST) * g_config.getNumber(ConfigManager::FRAG_TIME));

  	g_game.changeSkull(player, SKULL_RED);

  	player->masterPos = prisonPos;

  	player->removeCondition(CONDITION_INFIGHT);

  	

  	std::stringstream warning;

         warning << "You were arrested by " << caster->getName() <<". Say !leaveprison to leave.";

  	player->sendTextMessage(MSG_STATUS_WARNING, warning.str());

  	return true;

  }

	}

    

	return false;

}

#endif

 

//COMANDS.H

//declare the command:

#ifdef __LEWS_PRISON__

bool leavePrison(Creature* creature, const std::string& cmd, const std::string& param);

bool sendToPrison(Creature* creature, const std::string& cmd, const std::string& param);

#endif

 

//CONFIG.LUA

//add this:

-- the coordinate that the player will be teleported if prison system is enabled

prisonx = 100

prisony = 100

prisonz = 7



-- the coordinate that the player will be teleported when he leaves the prison

leaveprisonx = 100

leaveprisony = 100

leaveprisonz = 7

 

//COMMANDS.XML

<command cmd="!leaveprison"    access="0" />

<command cmd="/arrest"  	access="3" />

 

//Code by Lews.

 

 

Edit: comando para mandar players para a prisão adicionado (/arrest nomedoplayer).

Compartilhar este post


Link para o post
Sakz    0
Sakz

Parece se bom, mas tipo...

os creditos sao 100 % pra vc?

se nao poe eles!

 

se sao teus PARABENS!!

 

flw

Compartilhar este post


Link para o post
Jackson Zani    1
Jackson Zani

Eu tava esperando ancioso por esse code :D

Sei que tu ia conseguir eihoahioeahioea

Mais nao botasse credits pra min :( ( MINHA IDEIA )

hahahaha

To brincando Abraços Lews

E ótimo code :D

Compartilhar este post


Link para o post
bruxo    0
bruxo

Mais um trabalho de um otimo programmer do Mirage ^^, parabéns, muito bom, usaremos no server esse sist. bem elaborado.

Compartilhar este post


Link para o post
lews    0
lews

@sanu

ai ofende neh mermao =p

o jackson me deu a ideia de fazer um sistema de prisão e eu fiz...

talvez se conhecesse meu trabalho saberia q nao sou esses nb q fica roubando creditos ;)

 

@jackson

hihihi... jah falamo por msn neh? agradecimentos à vc, e nao creditos! hsuihiaSEUhsea...

 

@bruxo

óia o bruxo kerendo levantar (ainda mais) a moral do mirage \o/

Compartilhar este post


Link para o post
Dr0p    0
Dr0p

e pra quem não tem esse code de banir quem matou muita gente?

Compartilhar este post


Link para o post
lews    0
lews

@Dr0p

tem q adaptar o code pra suas sources...

 

 

@topico

topico atualizado: agora com comando para enviar players para a prisão.

Compartilhar este post


Link para o post
Dr0p    0
Dr0p

ah, eu já consegui, catei o code do evolutions e passei pra minhas sources x)

Compartilhar este post


Link para o post
Convidado Doad   
Convidado Doad

po, muito bom, agora os spammers do meu server tão fudido rsrs

Compartilhar este post


Link para o post
4jax    0
4jax

bem legau mas traduz ai so mt burro em ingles alem de eu nao saber nda de C++ =///

Compartilhar este post


Link para o post
bobwylde    0
bobwylde

primeiramente parabéns por este ótimo code! agora venho pedir uma ajuda.. ele funciona perfeitamente.. mais eu gostaria de saber em que parte dele preciso modificar para que o player somente vá para prisão com red skull e não toda vez que matar um player! sendo assim ficaria normal.. somente quando pegar red skull ele iria preso e ficaria até sair os frags.

 

se alguém puder me dar essa informação ficaria muito grato!

Compartilhar este post


Link para o post
marast666    0
marast666

Eu estou usando o Evolutions 0.7.8 e aqui compila normal, mas na hora de carregar o commands.xml, ele não identifica os comandos.

 

Se você puder corrigir isso :D

 

Obrigado

Compartilhar este post


Link para o post
Gareon    0
Gareon

o tutorial ta meio complicadinho pros nb entender mais ta bom........................................flws

Compartilhar este post


Link para o post
Vambrux    0
Vambrux

Nussaa que inovação nas Codes bem manero

 

Agora meu server vai ter Ordem!!

Compartilhar este post


Link para o post
lews    0
lews

pra qm nao tiver conseguindo, faz uma forcinha q vai =p

 

td mundo quer tudo de graça u.u

Compartilhar este post


Link para o post
marast666    0
marast666

lews

 

Aparece na hora de carregar o commands.xml:

Unknown command /arrest

Unknown command !leaveprison

 

E está tudo bem certo, cheguei a pensar nos commands da source, mas eu declarei eles na parte dos números mesmo...

 

Se puder da uma força ae!

 

Obrigado

 

 

[EDIT]

Eu não declarei no parâmetros -D__LEWS_PRISON__, desculpe unsure.gif

Compartilhar este post


Link para o post
Snaven    0
Snaven

Ow valew aew tava precisando disso .. ou melhor eu tava tentando fazer isso !

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×