

lithium
Cavaleiro-
Total de itens
190 -
Registro em
-
Última visita
Tudo que lithium postou
-
usem o items.otb do zorzin e só deleta o que tem na pasta do map editor e copiar o do zorzin se não vai dar erro sempre -.-
-
rox a lot SQL fixed, Zorzin Otserver o melhor server da história do otserver
-
@Quilante tu que não sabe mecher no vocations.xml e não use caps lock eu só não vo te xingar aqui por que não quero ser alertado mais você sabe o que você é não precisa te dizer, só uma coisa tu pensa que é facil fazer um server como esse? pra tu ver nem os gringos por exemplo: Xidaozu e Talaturen conseguiram nem chega perto desse server duvido que você consiga compilar alguma coisa pelo menos portando não venha xingar o cara que sofreu muito pra fazer e não cobro nada pra ninguém você deveria agradecer por ele ter postado ele pra gente, você devia ter o mínimo de consciência meu camarada -.-
-
windows XP original aqui XD
-
meu processador é AMD SEMPROM 2500+ ^^ gosto mais de processadores AMD do que pentium
-
eu uso photoshop mais tenho fireworks támbem fireworks é muito dificil de usar ^^
-
eu uso Kaspersky dessa lista ai os unicos que prestam é o Kaspersky e o NOD32 o resto é antivírus lixo não pega nada quase
-
@Jvchequer você pode por exemplo coloca uma parte do mapa pvp outra parte non-pvp e outra pvp-enforced se quiser ^^
-
@passatempo e esse bug não é do ot zorzin e sim da svn esse bug ja foi ccorigido na svn e certamente o zorzin vai concerta-lo ná proxima versão Pedidos: Colocar o account manager no SQL PVP Arena Combat/PVP Zoning NPC autowalk Houses com dinheiro descontado pelo Bank System
-
code muito bom o Jiddo sempre faz codes muito interresantes ^^
-
gogogo ao code primeiramente, em tile.h, antes de: #ifdef __PVP_ARENA__ #ifndef __PVP_ARENA_H__ #define __PVP_ARENA_H__ #include "tile.h" #include "position.h" #include <list> enum PvPArenaFlags_t { ARENA_FLAG_NONE = 0, ARENA_FLAG_NOSUMMONS = 2, ARENA_FLAG_MULTICOMBAT = 4, ARENA_FLAG_NO_FIELDS = 8, }; class PvPArena { public: PvPArena(); ~PvPArena(); int flags; Position exitPos; virtual bool canAdd(const Thing*); std::list<Creature*> arenaMembers; static bool loadArenas(); void removeCreature(Creature* cr, bool death = false); void addCreature(Creature* cr, bool isLogin = false); }; #endif //__PVP_ARENA_H__ #endif //__PVP_ARENA__ cole o seguinte em pvparena.cpp: #ifdef __PVP_ARENA__ #include "pvparena.h" #include "player.h" #include "configmanager.h" extern ConfigManager g_config; #include "game.h" extern Game g_game; #include "tools.h" #include <libxml/xmlmemory.h> #include <libxml/parser.h> PvPArena::PvPArena() { exitPos = Position(0, 0, 7); flags = 0; arenaMembers.clear(); } PvPArena::~PvPArena() { arenaMembers.clear(); } bool PvPArena::canAdd(const Thing* thing) { if(!thing) return false; if(const Creature* creature = thing->getCreature()) { if(!creature->isAttackable()) return true; if(flags & ARENA_FLAG_NOSUMMONS && creature->getMonster() != NULL) return false; else if(!(flags & ARENA_FLAG_MULTICOMBAT) && arenaMembers.size() > 2 && creature->getPlayer()) { std::list<Creature*>::iterator cit = std::find(arenaMembers.begin(), arenaMembers.end(), creature); if(cit == arenaMembers.end()) return false; } } else if(const Item* item = thing->getItem()) { if(!(flags & ARENA_FLAG_NO_FIELDS) && item->isMagicField()) return false; } return true; } bool PvPArena::loadArenas() { //system("PAUSE"); std::string filename = g_config.getString(ConfigManager::DATA_DIRECTORY) + "pvparenas.xml"; xmlDocPtr doc = xmlParseFile(filename.c_str()); if(!doc) return false; xmlNodePtr root, arenanode, tilenode; root = xmlDocGetRootElement(doc); if(xmlStrcmp(root->name,(const xmlChar*)"pvparenas") != 0){ xmlFreeDoc(doc); return false; } arenanode = root->children; while (arenanode){ if(xmlStrcmp(arenanode->name,(const xmlChar*)"pvparena") == 0) { PvPArena* newArena = new PvPArena(); int x, y, z; if(readXMLInteger(arenanode,"exitx",x) && readXMLInteger(arenanode,"exity",y) && readXMLInteger(arenanode,"exitz",z)) { newArena->exitPos = Position(x, y, z); } else { puts("ERROR: Missing/incomplete exit pos for pvparena! Skipping..."); delete newArena; arenanode = arenanode->next; continue; } std::string strValue; int intValue; if(readXMLString(arenanode,"allowsummons",strValue) && strValue == "no") newArena->flags |= ARENA_FLAG_NOSUMMONS; if(readXMLString(arenanode,"multi-combat",strValue) && strValue == "yes") newArena->flags |= ARENA_FLAG_MULTICOMBAT; if(readXMLString(arenanode,"allowfields",strValue) && strValue == "no") newArena->flags |= ARENA_FLAG_NO_FIELDS; tilenode = arenanode->children; while(tilenode) { if(xmlStrcmp(tilenode->name,(const xmlChar*)"tiles") == 0) { int tox, toy, toz; int fromx, fromy, fromz; if(readXMLInteger(tilenode,"tox",tox) && readXMLInteger(tilenode,"toy",toy) && readXMLInteger(tilenode,"toz",toz) && readXMLInteger(tilenode,"fromx",fromx) && readXMLInteger(tilenode,"fromy",fromy) && readXMLInteger(tilenode,"fromz",fromz)) { if(tox < fromx) std::swap(tox, fromx); if(toy < fromy) std::swap(toy, fromy); if(toz < fromz) std::swap(toz, fromz); for(int dx = fromx; dx <= tox; dx++) { for(int dy = fromy; dy <= toy; dy++) { for(int dz = fromz; dz <= toz; dz++) { if(Tile* t = g_game.getTile(dx, dy, dz)) { t->pvparena = newArena; t->setFlag(TILESTATE_PVP); t->setFlag(TILESTATE_NOSKULLS); } } } } } else puts("ERROR: incomplete tile range! Skipping..."); } tilenode = tilenode->next; } } arenanode = arenanode->next; } xmlFreeDoc(doc); return true; } void PvPArena::removeCreature(Creature* cr, bool death) { if(!cr) return; if(!cr->isAttackable()) return; std::list<Creature*>::iterator cit = std::find(arenaMembers.begin(), arenaMembers.end(), cr); if(cit != arenaMembers.end()) arenaMembers.erase(cit); if(death) { if(Player* pr = cr->getPlayer()) { if(g_game.internalTeleport(cr, exitPos) == RET_NOERROR) g_game.addMagicEffect(exitPos, NM_ME_ENERGY_AREA); pr->changeHealth(pr->getMaxHealth()); } else { g_game.removeCreature(cr); } } } void PvPArena::addCreature(Creature* cr, bool isLogin) { if(!cr) return; if(!cr->isAttackable()) return; // cant login on a pvp arena if(isLogin && cr->getPlayer()) { if(g_game.internalTeleport(cr, cr->getMasterPos()) == RET_NOERROR) { g_game.addMagicEffect(cr->getMasterPos(), NM_ME_ENERGY_AREA); return; } } arenaMembers.push_back(cr); } #endif //__PVP_ARENA__ adicione aos parametros ALT+P -D__PVP_ARENA__ agora é so dar rebuild all CTRL+F11 Créditos: Nfries88 Como usar este código 1) Primeiramente, crie um novo arquivo na sua pasta DATA nomeado pvparenas.xml. (copiei qualquer arquivo xml apague tudo e renomei ele para pvparena.xml) 2) abra esse arquivo apague tudo se tiver algo. 3) cole isso <pvparenas> <!-- pvp arena tag here --> </pvparenas> 4a)Para criar uma arena nova, crie uma Tag como esta: <pvparena exitx="x" exity="y" exitz="z" /> Substitua x, y, e z para as cordenadas para onde os players são teleportados quando perdem. 4b) para disabilitar o summon na arena adicione apenas: allowsummons="no" antes do/> no Tag acima. 4c) para disabilitar os fields na arena adicione apenas: allowfields="no" antes do/> no Tag acima. 4d) Para permitir mais de dois combatentes nesta arena, adicionar apenas multi-combat="yes" antes do/> no Tag acima. 4e) Para ajustar os tiles da arena, crie uma Tag como está: <tiles fromx="x1" fromy="y1" fromz="z1" tox="x2" toy="y2" toz="z2" /> Substituir x1, y1, e z1 com as coordenadas do noroeste mais o andar mais baixo. Substituir x2, y2, e z2 com as coordenadas do do sudeste mais o andar mais alto. Créditos: Nfries88 Comentários Please
-
@tibiaa4e sim ta 100% ^^ eu testei ele aqui
-
Com esse code você pode fazer areas de pvp tipo uma parte do map pvp e outra non-pvp ^^ Vamos ao code gogogo =] no final de game.cpp adicione #ifdef __COMBAT_ZONES__ bool Game::loadCombatZones() { xmlDocPtr doc = xmlParseFile(std::string(g_config.getString(ConfigManager::DATA_DIRECTORY) + "pvpzones.xml").c_str()); if(!doc) return false; xmlNodePtr root, zone, tiles; root = xmlDocGetRootElement(doc); if(xmlStrcmp(root->name,(const xmlChar*)"zones")) { puts("MALFORMED PVP ZONES XML FILE!"); return false; } zone = root->children; while(zone) { if(!xmlStrcmp(zone->name,(const xmlChar*)"zone")) { tileflags_t pvplvl = TILESTATE_NONE; std::string strlvl; if(!readXMLString(zone, "pvp", strlvl)) { puts("ERROR: pvp zone missing pvp level!"); continue; } toLowerCaseString(strlvl); if(strlvl == "none" || strlvl == "no" || strlvl == "nopvp" || strlvl == "0") pvplvl = TILESTATE_NOPVP; else if(strlvl == "yes" || strlvl == "normal" || strlvl == "pvp" || strlvl == "1") pvplvl = TILESTATE_PVP; else if(strlvl == "enforced" || strlvl == "e" || strlvl == "pvp-enforced" || strlvl == "2") pvplvl = TILESTATE_PVP_ENFORCED; else { printf("ERROR: invalid pvp level: %s\n", strlvl.c_str()); continue; } tiles = zone->children; while(tiles) { if(!xmlStrcmp(tiles->name,(const xmlChar*)"tile")) { int x, y, z; if(readXMLInteger(tiles,"x",x) && readXMLInteger(tiles,"y",y) && readXMLInteger(tiles,"z",z)) { Tile* t = map->getTile(x, y, z); if(t) t->setFlag(pvplvl); } } else if(!xmlStrcmp(tiles->name,(const xmlChar*)"tiles")) { int tox, toy, toz, fromx, fromy, fromz; if(readXMLInteger(tiles,"tox",tox) && readXMLInteger(tiles,"toy",toy) && readXMLInteger(tiles,"toz",toz) && readXMLInteger(tiles,"fromx",fromx) && readXMLInteger(tiles,"fromy",fromy) && readXMLInteger(tiles,"fromz",fromz)) { if(tox < fromx) std::swap(tox, fromx); if(toy < fromy) std::swap(toy, fromy); if(toz < fromz) std::swap(toz, fromz); for(int x = fromx; x <= tox; x++) { for(int y = fromy; y <= toy; y++) { for(int z = fromz; z <= toz; z++) { Tile* t = map->getTile(x, y, z); if(t) t->setFlag(pvplvl); } } } } } tiles = tiles->next; } } zone = zone->next; } return true; } #endif //__COMBAT_ZONES__ em game.h, substitua: #ifndef __COMBAT_ZONES__ WorldType_t getWorldType() const {return worldType;} #else WorldType_t getWorldType(const Creature* attacker = NULL, const Creature* target = NULL) const { if(!attacker || !target) return worldType; if(attacker->getPlayer() && target->getPlayer()) { if(worldType == WORLD_TYPE_NO_PVP) { if(attacker->getTile()->hasFlag(TILESTATE_PVP_ENFORCED) && target->getTile()->hasFlag(TILESTATE_PVP_ENFORCED)) return WORLD_TYPE_PVP_ENFORCED; else if(attacker->getTile()->hasFlag(TILESTATE_PVP) && target->getTile()->hasFlag(TILESTATE_PVP)) return WORLD_TYPE_PVP; } else { if(attacker->getTile()->hasFlag(TILESTATE_NOPVP) || target->getTile()->hasFlag(TILESTATE_NOPVP)) return WORLD_TYPE_NO_PVP; } } return worldType; } bool loadCombatZones(); #endif //__COMBAT_ZONES__ em tile.h depois de: TILESTATE_HOUSE = 2 adcione: #ifdef __COMBAT_ZONES__ , TILESTATE_NOPVP = 4, TILESTATE_PVP = 8, TILESTATE_PVP_ENFORCED = 16, #endif //__COMBAT_ZONES__ em combat.cpp, substituir: if(g_game.getWorldType() == WORLD_TYPE_NO_PVP){ por: if(g_game.getWorldType( #ifdef __COMBAT_ZONES__ attacker, target #endif //__COMBAT_ZONES__ ) == WORLD_TYPE_NO_PVP){ em player.cpp, na função Player::getGainedExperience, substituir: if(g_game.getWorldType() == WORLD_TYPE_PVP_ENFORCED){ por: if(g_game.getWorldType( #ifdef __COMBAT_ZONES__ attacker, this #endif //__COMBAT_ZONES__ ) == WORLD_TYPE_PVP_ENFORCED){ em otserv.cpp, depois de: if(!g_game.loadMap(g_config.getString(ConfigManage r::MAP_FILE), g_config.getString(ConfigManager::MAP_KIND))){ return -1; } adicione: #ifdef __COMBAT_ZONES__ if(g_game.loadCombatZones()) puts(":: Loaded Combat Zones!"); #endif //__COMBAT_ZONES__ adicione aos parametros ALT+P -D__COMBAT_ZONES__ agora é so dar rebuild all CTRL+F11 Créditos: Nfries88 copie qualquer arquivo .XML renomei para pvpzones, apague tudo que estiver escrito nele e cole isso, e coloque o dentro da pasta data. <?xml version="1.0" encoding="UTF-8"?> <zones> <!--zone pvp="normal"> <tiles fromx="" fromy="" fromz="" tox="" toy="" toz="" /> </zone--> </zones> em "zone pvp=" você pode usar "normal" = pvp "non"=non "pvp enforced"=pvp enforced
-
@ranks lol pois aqui ele ta funcionando normal deve ser por que vocês usam internet explorer no firefox funciona normal ^^ e sobre o erro é o items otb que vocês tão usando errado vocês tem que usar o items.otb do zorzin é so pegar la na pasta e copiar o items.otb e colar na pasta do map editor ^^
-
@up não ta quebrado não o link vocês que não sabem baixar -.-
-
[7.9]cake System,bread E Pumpkin 100%
tópico respondeu ao tibiaa4e de lithium em Actions e Talkactions
action muito boa ta pro ja supera-se o colex ^^ vo add aqui no zorzin ot -
@bruno1989 aqui a estabilidade ta ótima 100% uptime, 8 horas on já ^^, deve ser teu hardware que é ruim ou algum problema no teu pc
-
quem tiver com problemas nas hotkeys e só colocar yes nessa parte no config.lua ^^ -- Atirar diretamente runas nos players pelo Battle? (yes/no) directly_shoot_battle = "yes"
-
muito bom zorzin features very rox é o melhor você se esqueceu de posta-lo lá no otfans, meus parabéns versão very rox =], agora eu entendo por que demoro tanto pra termina-lo
-
não entendi o que o xidaozu fez que ele tinha colocado essas features no 0.7.6 ele deve ter corrigido algums bugs ^^ @ranks lol tu não meche em nada no vocations tu vai la no config.lua em rate_skill = ai tu coloca o skill que você quiser ^^
-
estou aqui trazendo para vocês a SVN em SQL e XML enquanto não sai a oficial. Mudanças: a maioria dos items agora tem seus ataques,defesas e peso configurados no items.XML respawn rate agora você pode aumentar a velocidade do respawn no config.lua em rate_spawn e você pode configurar funções do respawn como distância em que o monstro pode caminhar e etc em despawnrange e despawnradius e muitas outras correções de erros e funções novas de actions. Download Binary/Sources XML:http://lix.in/300f73 Download Binary/Sources SQL:http://lix.in/315f21 eu coloquei os links em um sistema de proteção para que o link não quebre quando forem baixar basta clicar em continue. Créditos pela compilação: Lithium Comentários Please =]
-
o melhor 7.8x é esse recomendo
-
prefiro o The Forgotten Server muito melhor que o evolutions com seu bug nas casas cargas e etc que nem lembro o forgotten é perfeito pena que a maioria não sabe usar SQL eu sei então isso não é problema meu aprendam SQL ou sofram com servers bugados =] Atenciosamente, //Lithium
-
@pekeboi é um sistema de npc perfeito igual o do tibia real
-
eu já sabia disso mais me esquecia de postar ou usar
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.