parabéns code muito bom
espero que funcione vo testar aqui!
- Fórum
- OTServ
- Recursos
- Linguagens de Programação
- [7.9] Prison System
info
Grupo: Banidos
Registrado: 03/10/06
Posts: 227
Reputação: 0
Bom trabalho, vou falar com o ta4e pra eles colocarem isso na próxima versão do Zorzin.
Parabens mas min diga uma coisa.
para colocar o player na prision utiliza algun comando? como faz?
esse code eh pro player ser enviado pra prisao automaticamente qndo ele mata + q o numero maximo permitido... tp, eh pra em vez de banir, soh prender o player...
hm, gostei da ideia... vo fazer um comando pra mandar players pra cadeia tbm ![]()
posta o código do evolutions pow
@Dr0p
pega as sources do evolutions e procura os __XID_CVS_MODS__ q são relacionados com o skull system ![]()
@topico
code atualizado: agora com comando para enviar players para a prisão.
info
Grupo: Campones
Registrado: 25/02/07
Posts: 84
Reputação: 0

Ótimo code!
Como sempre se superando! hehehe
Testado 100% na versão 0.7.6a e 0.7.7 do evolutions.
Abraços!
se eu pegar o code deles, provavelmente vai dar erro, porque eu to usando o cvs ![]()
mais eu vejo aqui
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.");
}
[quote]#else[/quote]
g_bans.addPlayerBan(getName(), std::time(NULL) + g_config.getNumber(ConfigManager::BAN_TIME), "excessive unjustifed player killing");
kickPlayer();
#endif
akele #else, eh assim msm? ou eh else? e vc coloko o "#" sem querer?
e tpw, nao tem q add nada la em "alt+p" ?
pq fiz aki e tals, naum diz q deu erro, porem ele diz q desconhece o comando o !leave~ e o /arrest... =/
ai eu add la em "alt+p" o: /arrest PLAYER, CORDENADAS funfa certin, porem o evolutions 0.7.6a, tem um bug, la no config.lua esta 3 injust pra red, sendo q o char soh pega red com 4 injust, msm coisa com ban, esta 6 e soh eh ban com 7 ![]()
Bom voltando ao assunto ;X... com o "#else", o char mata 7 injust, e eh ban...
com o "else" o char vai matando e matando nao pega ban e nao eh teleportado para o local la no config.lua (1000 1000 6, map evo, seria em cima do templo (soh pra test), ai eu falo /arrest blabla.. o char eh teleportado para a cordenada escolhida, fik red e tals.. mais ai eu vo la com o xar e falo "!leaveprison" e diz assim: "You are not in the prison."
Se vc puder me ajudar, eu agradeço =D
PS: poderia me mandar uma mp/pm ? agradeço =)
//Suboras
suboras,
1. o #else tá certo. akilo significa q se nao tiver definido o prison system o char vai ser banido...
#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
2. lá em Parameters tem que add soh -D__LEWS_PRISON__
3. vc tem q por os comandos lá no commands.xml q ta na pasta data e pra usar o Arrest é soh /arrest nomedoplayer
axo q eh soh...
qq coisa posta ae dnv ![]()
Rox MLK.. xD
Eu devo ter feito algo errado...
PS: nao deu nenhum erro..
~
e eu tava testando no evo 0.7.6a
Testado no 0.7.7...
APROVADO XD
Rox.. vlws =*
//Suboras
info
Grupo: Campones
Registrado: 06/04/07
Posts: 61
Reputação: 0

ow aki eu to usando o
Evolutions 0.7.8 XML
e nun ta dando certo
pq?
abraços
info
Grupo: Artesão
Registrado: 26/06/06
Posts: 115
Reputação: +1
Char no Tibia: Kasugol

Somente 7.9??ou 7.92 funfa tb???





info
Grupo: Campones
Registrado: 03/03/07
Posts: 16
Reputação: 0
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:
//CONFIGMANAGER.H
//declare the integer:
//PLAYER.CPP
//where you have "if(redSkullTicks >= g_config.getNumber(ConfigManager::BAN_UNJUST) * g_config.getNumber(ConfigManager::FRAG_TIME)){", replace:
//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:
//CONFIG.LUA
//add this:
//COMMANDS.XML
//Code by Lews.
Edit: comando para mandar players para a prisão adicionado (/arrest nomedoplayer).
Editado Março 4 por Lews