Equipe Equipe Raiz Global (Leia tudo)
-
Quem Está Navegando 0 membros estão online
Nenhum usuário registrado visualizando esta página.
-
Conteúdo Similar
-
Por Johncore
Open Source MMORPG emulador de Tibia escrito em C++.
Baseado no TFS 1.3 e Otx3.2
Otg Server é uma Datapack limpa sem mapa / scripts do tibia global,
Base ideal pra quem gosta de customizar
Loga no clientes: 1100, Otcv8, Otc Menah e 12.40
Informações:
- MAPA TFS Clean
- Imbuements
- Prey
- Reward Daily
- Boosted Creature
- Auto Loot
- Store
Imagens :
Downloads
Servidor + Database + Source:
»» PROJETO OFFICIAL:
https://github.com/otg-br/otg-server
GRUPO WHATSAPP OTG SERVER:
https://chat.whatsapp.com/EWV3dVvS6nt1em7q23FGu7
Créditos :
The Forgotten Server
Otg contribuidores
Johncore
Erick Nunes
Mattyx
Matheus Roberto
Cjaker
Leu
Marson Schneider
Rafhael Oliveira
-
Por tiroleivi
Global v30 - OTX - 10.99
Especificações :
- Warzone 1, 2 e 3
- Task system, com bosses e ranks;
- Bank System
- Gray Beach City completa 100% (incluindo Subsolo)
- NewVenore 100%
- New AB 100%
- Monstros 100%
- Trainer Offline 100%
- Trainer Online 100%
- Todas montarias;
- Taming system funcionando 100%;
- Database completa
- Wrath of Emperor Quest
- War System 100%
- Market System 100%
- Roshamull Completa100% (incluindo subsolo)
- Oramond Full
- Zao 100%
- Sem bug de pegar items com o browse field
- POI 100%
- Varios bugs de mapas removidos
- Blood Herb Quest 100%
- Npc Addoner, (e tem os npc originais fica a seu critério)
- Chayenne Realm Quest
- Pythius The Rotten Quest 100%
OBs: é o mesmo ot Global TFS 1.2 v30 do : Qwizer, a diferença é que esse aqui está em OTX na Vs.10.99, foi removido erros da Database, e esta sem erro na distro rodando 99,9%.
Imagens :
Downloads :
OTServ + Database : Download // Scann
Xampp 1.7.3 : Download // Scann
Web_Site : Download // Scann
Source : Download // Scann
Tibia Clientes : Download
Remere's Map Editor : Download // Scann
Créditos :
Tiroleivi
TibiaStaff
Qwizer (pelo OT)
-
Por Nogard
Não deixe seu evento de Natal para última hora, faltam apenas 4 dias.
Aproveite as sprites com desconto no site: https://otsprites.com
-
Por Heyron
Elysia OT (Global Full 8.60) IP: elysiaot-global.servegame.com ✔︎ Login pelo Account Manager 1/1, não temos site. ✔︎ Login zerado é Cast System. XP (Rates): Stages = Sim Experience = 50.0 Skill = 15.0 Magic = 5.0 Loot = 1.0 Spawn = 1.0 Protection Level: 30 ✔︎ Sem itens VIP. ✔︎ Premiação ao upar nível 20, 50 e 80. ✔︎ Itens iniciais por vocação. ✔︎ Free Bless até o level 50. ✔︎ Danos de spells balanceados. ✔︎ Sem fast attack ou ataque rápido (padrão 2seg). ✔︎ Sem itens infinitos, exceto munição de Paladin. Jogue agora! IP: elysiaot-global.servegame.com Versão: 8.60 -
Por Imperius
O propósito é criar uma nova função em creaturescripts que será acionada toda vez que um novo report (CTRL + R) for aberto.
Eu implementei para enviar uma notificação no grupo do Telegram, contendo os dados do report.
Isso garantirá que os GMs tenham acesso aos reports dos jogadores mesmo quando não estiverem logados, e também evitará que algum report seja perdido caso o jogador saia do servidor.
A parte do Telegram é apenas um exemplo. Você pode ajustar o script para executar outras ações desejadas.
creatureevent.cpp:
Dentro deste arquivo, localize a função:
uint32_t CreatureEvent::executeChannelLeave(Player* player, uint16_t channelId, UsersMap usersMap)
abaixo dela, adicione:
uint32_t CreatureEvent::executeOpenRuleViolation(Player* player, std::string message) { if (!m_interface->reserveEnv()) { std::clog << "[Error - CreatureEvent::executeOpenRuleViolation] Call stack overflow." << std::endl; return 0; } ScriptEnviroment* env = m_interface->getEnv(); env->setScriptId(m_scriptId, m_interface); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(player)); lua_pushstring(L, message.c_str()); bool result = m_interface->callFunction(2); m_interface->releaseEnv(); return result; }
Após, procure por:
std::string CreatureEvent::getScriptEventName() const
abaixo de:
case CREATURE_EVENT_CHANNEL_LEAVE: return "onLeaveChannel";
adicione:
case CREATURE_EVENT_OPEN_RULE_VIOLATION: return "onOpenRuleViolation";
Agora, procure por:
std::string CreatureEvent::getScriptEventParams() const
abaixo de:
case CREATURE_EVENT_CHANNEL_LEAVE: return "cid, channel, users";
adicione:
case CREATURE_EVENT_OPEN_RULE_VIOLATION: return "cid, message";
Procure por:
bool CreatureEvent::configureEvent(xmlNodePtr p)
abaixo de:
else if(tmpStr == "leavechannel") m_type = CREATURE_EVENT_CHANNEL_LEAVE;
adicione:
else if(tmpStr == "openruleviolation") m_type = CREATURE_EVENT_OPEN_RULE_VIOLATION;
creatureevent.h:
Dentro deste arquivo, localize:
enum CreatureEventType_t
adicione "CREATURE_EVENT_OPEN_RULE_VIOLATION" como o último item de enum CreatureEventType_t
Exemplo:
enum CreatureEventType_t { // ... CREATURE_EVENT_OPEN_RULE_VIOLATION };
Agora, procure por:
uint32_t executeChannelLeave(Player* player, uint16_t channelId, UsersMap usersMap);
abaixo dela, adicione:
uint32_t executeOpenRuleViolation(Player* player, std::string message);
game.cpp:
Dentro deste arquivo, localize:
bool Game::playerReportRuleViolation(Player* player, const std::string& text)
e substitua por:
bool Game::playerReportRuleViolation(Player* player, const std::string& text) { //Do not allow reports on multiclones worlds since reports are name-based if(g_config.getNumber(ConfigManager::ALLOW_CLONES)) { player->sendTextMessage(MSG_INFO_DESCR, "Rule violation reports are disabled."); return false; } cancelRuleViolation(player); boost::shared_ptr<RuleViolation> rvr(new RuleViolation(player, text, time(NULL))); ruleViolations[player->getID()] = rvr; ChatChannel* channel = g_chat.getChannelById(CHANNEL_RVR); if(!channel) return false; for(UsersMap::const_iterator it = channel->getUsers().begin(); it != channel->getUsers().end(); ++it) it->second->sendToChannel(player, SPEAK_RVR_CHANNEL, text, CHANNEL_RVR, rvr->time); CreatureEventList joinEvents = player->getCreatureEvents(CREATURE_EVENT_OPEN_RULE_VIOLATION); for(CreatureEventList::iterator it = joinEvents.begin(); it != joinEvents.end(); ++it) (*it)->executeOpenRuleViolation(player, text); return true; }
Agora é só compilar a source.
depois em "data > creaturescripts > creaturescripts.xml", adicione:
<event type="login" name="loginNotifyRuleViolation" script="notifyRuleViolation.lua"/> <event type="openruleviolation" name="openNotifyRuleViolation" script="notifyRuleViolation.lua"/>
em "data > creaturescripts > scripts", crie um arquivo notifyRuleViolation.lua e adicione:
function onOpenRuleViolation(cid, message) local config = { token = "", -- Token do seu BOT no Telegram chatId = "" -- ID do chat do Telegram que será enviado a notificação. } local message = "Player: "..getCreatureName(cid).."\n\nReport:\n"..message.."" message = string.gsub(message, "\n", "%%0A") local url = "https://api.telegram.org/bot"..config.token.."/sendMessage" local data = "chat_id="..config.chatId.."&text="..message.."" local curl = io.popen('curl -d "'..data..'" "'..url..'"'):read("*a") return true end function onLogin(cid) registerCreatureEvent(cid, "openNotifyRuleViolation") return true end
Demonstração:
1. Jogador abre um novo report (CTRL + R)
2. notifyRuleViolation.lua, definido em creaturescripts.xml, é acionado para enviar uma notificação ao grupo do Telegram.
-
-
Estatísticas dos Fóruns
96845
Tópicos519605
Posts
Posts Recomendados
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.