lews 0 Postado Março 4, 2007 Share Postado Março 4, 2007 (editado) 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). Editado Março 4, 2007 por Lews Link para o comentário Compartilhar em outros sites More sharing options...
lithium 3 Postado Março 4, 2007 Share Postado Março 4, 2007 parabéns code muito bom espero que funcione vo testar aqui! Link para o comentário Compartilhar em outros sites More sharing options...
Sky Hunter 0 Postado Março 4, 2007 Share Postado Março 4, 2007 Bom trabalho, vou falar com o ta4e pra eles colocarem isso na próxima versão do Zorzin. Link para o comentário Compartilhar em outros sites More sharing options...
XPaulo 0 Postado Março 4, 2007 Share Postado Março 4, 2007 Parabens mas min diga uma coisa. para colocar o player na prision utiliza algun comando? como faz? Link para o comentário Compartilhar em outros sites More sharing options...
lews 0 Postado Março 4, 2007 Autor Share Postado Março 4, 2007 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 Link para o comentário Compartilhar em outros sites More sharing options...
Dr0p 0 Postado Março 4, 2007 Share Postado Março 4, 2007 posta o código do evolutions pow Link para o comentário Compartilhar em outros sites More sharing options...
lews 0 Postado Março 4, 2007 Autor Share Postado Março 4, 2007 @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. Link para o comentário Compartilhar em outros sites More sharing options...
Jackson Zani 0 Postado Março 4, 2007 Share Postado Março 4, 2007 Ótimo code! Como sempre se superando! hehehe Testado 100% na versão 0.7.6a e 0.7.7 do evolutions. Abraços! Link para o comentário Compartilhar em outros sites More sharing options...
Dr0p 0 Postado Março 5, 2007 Share Postado Março 5, 2007 se eu pegar o code deles, provavelmente vai dar erro, porque eu to usando o cvs mais eu vejo aqui Link para o comentário Compartilhar em outros sites More sharing options...
suboras 0 Postado Março 11, 2007 Share Postado Março 11, 2007 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 Link para o comentário Compartilhar em outros sites More sharing options...
lews 0 Postado Março 11, 2007 Autor Share Postado Março 11, 2007 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 Link para o comentário Compartilhar em outros sites More sharing options...
suboras 0 Postado Março 12, 2007 Share Postado Março 12, 2007 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 Link para o comentário Compartilhar em outros sites More sharing options...
God Anthyrax 0 Postado Junho 29, 2007 Share Postado Junho 29, 2007 ow aki eu to usando o Evolutions 0.7.8 XML e nun ta dando certo pq? abraços Link para o comentário Compartilhar em outros sites More sharing options...
GM Volcano 1 Postado Julho 1, 2007 Share Postado Julho 1, 2007 Somente 7.9??ou 7.92 funfa tb??? Link para o comentário Compartilhar em outros sites More sharing options...
kafetao 0 Postado Agosto 19, 2007 Share Postado Agosto 19, 2007 funcionou no meu evolutions 7.8 ver 7.92 Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados