-
Total de itens
166 -
Registro em
-
Última visita
Tudo que America postou
-
[Encerrado] [SPELL] DANDO DEBUG ALGUEM AJUDA
tópico respondeu ao davidopina de America em Tópicos Sem Resposta
Me manda sua SPR e DAT que eu edito um aqui... e mando pronto -
[Encerrado] [SPELL] DANDO DEBUG ALGUEM AJUDA
tópico respondeu ao davidopina de America em Tópicos Sem Resposta
baixa outro '-' -
[Encerrado] [SPELL] DANDO DEBUG ALGUEM AJUDA
tópico respondeu ao davidopina de America em Tópicos Sem Resposta
só ir em modules/cliententergame/entergame.lua e trocar á versão do cliente que você baixou exemplo tu da CTRL+F e procura por 1097 e trocar pela sua versão no caso 800. -
[Encerrado] [SPELL] DANDO DEBUG ALGUEM AJUDA
tópico respondeu ao davidopina de America em Tópicos Sem Resposta
quais erros? usou um OTClient? como eu disse? Você terá que usar um OTClient que aceite SPR Extendida. para alterar as SPR vai em data/things e joga sua SPR e DAT la. -
[Encerrado] [SPELL] DANDO DEBUG ALGUEM AJUDA
tópico respondeu ao davidopina de America em Tópicos Sem Resposta
quais erros? usou um OTClient? como eu disse? -
[Encerrado] [SPELL] DANDO DEBUG ALGUEM AJUDA
tópico respondeu ao davidopina de America em Tópicos Sem Resposta
Sim -
[Encerrado] [SPELL] DANDO DEBUG ALGUEM AJUDA
tópico respondeu ao davidopina de America em Tópicos Sem Resposta
Sim pode -
[Encerrado] [SPELL] DANDO DEBUG ALGUEM AJUDA
tópico respondeu ao davidopina de America em Tópicos Sem Resposta
Já Tentou Extender á SPR e DAT? e por OTClient? -
Se você considerou isso um insulto irei me desculpar mais o seu senso de entendimento está muito ruim... não fiz uma crítica á você apenas um comentário, eu estou á 8 Anos mexendo com tíbia então não me recordo de todos isso inclui você, as pessoas só irão mexer em um PokéCamp por esse taboo criado pela sociedade até porque o PDA Pode ficar um ano ligado sem nem se quer dar crash, basta saber usar. Grande Abraço e novamente me perdoe caso me expressei mal.
-
é um prazer eu posso não frequentar aqui tanto quanto no passado mais ainda é meu lar, xD. Abraço Bennyyw.
-
Eu estava lendo o comentário e achei bem engraçado, isso tudo não passa de um taboo criado pela sociedade em qual falam mal do PDA, mal sabem vocês "Membros/Novos" que DXP e PokeCamp é PDA, rs á unica diferença é que foram adaptados ou como gosto de chamar "gambiarriados" eu lembro no passado á nostalgia que era você não deve conhecer mais na época do brun123 como era nostálgico e gostoso mexer com o PDA, Descobrir algo novo alguma gambiarra nova na quele servidor, mal sabem á nova geração como foi o passado... Sinto falta de tudo isso mais o tempo passa e não volta atrás, todas ás bases que existem hoje nem uma se compara ao PDA sejá ela PokéLight, DXP, PokéCamp, Dash, nada é como velho PDA, recordações boas vieram enquanto eu estava escrevendo esse comentário... só finalizando todas ás bases em que você citou todas elas não são limpas e possuem gambiarra até mais que o PDA, á mais limpa (OS) (OpenSource) é o DashV6, mesmo assim não é como o PDA. Grande Abraço.
-
Deixo na mão da comunidade eu não tenho tempo para terminar o sistema em lua isso fica nas mãos de quem quiser utilizar, abraço.
-
Aqui é somente uma galeria ou eu poderia fazer um pedido? Se não for o local para isso me desculpe. Sign - América / Escudo - Capitão América Tamanho - Padrão do Fórum (Xtibia) Se atender esse pedido fico grato, muito bonito seu trabalho parabéns.
-
Eu estava dando uma navegada na sessão de códigos e vi que o único sistema de TV que tinha estava faltando partes então resolvi pegar e terminar o código espero que esteja funcional, provavelmente estará muito melhor que o já postado aqui pela metade. Luascript.cpp adicione: //doSendPlayerExtendedOpcode(cid, opcode, buffer) lua_register(m_luaState, "doSendPlayerExtendedOpcode", LuaScriptInterfaceluaDoSendPlayerExtendedOpcode); //getCreatureNoMove(cid) lua_register(m_luaState, "getCreatureNoMove", LuaScriptInterfaceluaGetCreatureNoMove); //doCreatureSetNoMove(cid, block) lua_register(m_luaState, "doCreatureSetNoMove", LuaScriptInterfaceluaDoCreatureSetNoMove); //doInviteToPrivateChannel(cid, msg) lua_register(m_luaState, "doInviteToPrivateChannel", LuaScriptInterfaceluaDoInviteToPrivateChannel); //doRemoveIntoPrivateChannel(cid, msg) lua_register(m_luaState, "doRemoveIntoPrivateChannel", LuaScriptInterfaceluaDoRemoveIntoPrivateChannel); //doDeletePrivateChannel(cid) lua_register(m_luaState, "doDeletePrivateChannel", LuaScriptInterfaceluaDoDeletePrivateChannel); //getCreatureHideHealth(cid) lua_register(m_luaState, "getCreatureHideHealth", LuaScriptInterfaceluaGetCreatureHideHealth); //doCreatureSetHideHealth(cid, hide) lua_register(m_luaState, "doCreatureSetHideHealth", LuaScriptInterfaceluaDoCreatureSetHideHealth); //doCreatePrivateChannel(cid) lua_register(m_luaState, "doCreatePrivateChannel", LuaScriptInterfaceluaDoCreatePrivateChannel); //doRemovePlayerTv(cid, id) lua_register(m_luaState, "removePlayerTv", LuaScriptInterfaceluaDoRemovePlayerTv); //getAllsTv() lua_register(m_luaState, "getTvs", LuaScriptInterfaceluaGetAllsTvs); //setPlayerTv(cid, player) lua_register(m_luaState, "setPlayerTv", LuaScriptInterfaceluaSetPlayerTv); //doSendChannelstTv(cid) lua_register(m_luaState, "doSendChannelsTv", LuaScriptInterfaceluaDoSendChannelsTv); Ainda em Luascript.cpp adicione: int32_t LuaScriptInterfaceluaGetCreatureHideHealth(lua_State* L){ //getCreatureHideHealth(cid) ScriptEnviroment* env = getEnv(); if(Creature* creature = env->getCreatureByUID(popNumber(L))) lua_pushboolean(L, creature->getHideHealth()); else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1;}int32_t LuaScriptInterfaceluaDoCreatureSetHideHealth(lua_State* L){ //doCreatureSetHideHealth(cid, hide) bool hide = popNumber(L); ScriptEnviroment* env = getEnv(); if(Creature* creature = env->getCreatureByUID(popNumber(L))) { creature->setHideHealth(hide); g_game.addCreatureHealth(creature); lua_pushboolean(L, true); } else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1;} int32_t LuaScriptInterfaceluaDoRemoveIntoPrivateChannel(lua_State* L){ //doRemoveIntoPrivateChannel(cid, string) stdstring name = popString(L); uint32_t cid = popNumber(L); ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(cid)) { if(g_game.playerChannelExclude(player->getID(), name)) lua_pushboolean(L, true); else lua_pushboolean(L, false); } else { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); } return 1;}int32_t LuaScriptInterfaceluaDoDeletePrivateChannel(lua_State* L){ //doDeletePrivateChannel(cid) uint32_t cid = popNumber(L); ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(cid)) { if(g_chat.deleteChannel(player, g_chat.getPrivateChannel(player)->getId())) lua_pushboolean(L, true); else lua_pushboolean(L, false); } else { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); } return 1;}int32_t LuaScriptInterfaceluaDoInviteToPrivateChannel(lua_State* L){ //doCreatePrivateChannel(cid) stdstring name = popString(L); uint32_t cid = popNumber(L); ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(cid)) { if(g_game.playerChannelInvite(player->getID(), name)) lua_pushboolean(L, true); else lua_pushboolean(L, false); } else { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); } return 1;}int32_t LuaScriptInterfaceluaDoCreatePrivateChannel(lua_State* L){ //doCreatePrivateChannel(cid) //std::string loot = popString(L); uint32_t cid = popNumber(L); ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(cid)) { if(g_game.playerCreatePrivateChannel(player->getID())) lua_pushboolean(L, true); else lua_pushboolean(L, false); } else { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); } return 1;} int32_t LuaScriptInterfaceluaDoSendPlayerExtendedOpcode(lua_State* L){//doSendPlayerExtendedOpcode(cid, opcode, buffer)stdstring buffer = popString(L);int opcode = popNumber(L);ScriptEnviroment* env = getEnv();if(Player* player = env->getPlayerByUID(popNumber(L))) {player->sendExtendedOpcode(opcode, buffer);lua_pushboolean(L, true);}lua_pushboolean(L, false);return 1;}int32_t LuaScriptInterfaceluaDoCreatureSetNoMove(lua_State* L){ //doCreatureSetNoMove(cid, block) bool block = popNumber(L); ScriptEnviroment* env = getEnv(); if(Creature* creature = env->getCreatureByUID(popNumber(L))) { creature->setNoMove(block); lua_pushboolean(L, true); } else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1;}int32_t LuaScriptInterfaceluaGetCreatureNoMove(lua_State* L){ //getCreatureNoMove(cid) ScriptEnviroment* env = getEnv(); if(Creature* creature = env->getCreatureByUID(popNumber(L))) lua_pushboolean(L, creature->getNoMove()); else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1;}int32_t LuaScriptInterfaceluaGetAllsTvs(lua_State* L){//getAllsTvs(cid)ScriptEnviroment* env = getEnv();Player* player = env->getPlayerByUID(popNumber(L));if (!player) {errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND));lua_pushboolean(L, false);return 1;} Tvlistiterator it; it = player->tv.begin(); lua_newtable(L);uint32_t tableplayers = 1;for(uint32_t i = 1; it != player->tv.end(); ++it, ++i){ Player* players = env->getPlayerByUID(*it); if (players) {lua_pushnumber(L, tableplayers);lua_pushnumber(L, env->addThing(players)); pushTable(L); tableplayers = tableplayers+1;}}return 1; }int32_t LuaScriptInterfaceluaSetPlayerTv(lua_State* L){ScriptEnviroment* env = getEnv();Player* player_tv = env->getPlayerByUID(popNumber(L));Creature* creature = env->getCreatureByUID(popNumber(L));if (!creature) {errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND));lua_pushboolean(L, false);}Player* player = creature->getPlayer();if (!player) {errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND));lua_pushboolean(L, false);return 1;}if (!player_tv) {errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND));lua_pushboolean(L, false);return 1;}player_tv->tv.push_back(player->getID());SpectatorVeciterator it;SpectatorVec list = g_game.getSpectators(player->getPosition());Player* tmpPlayer = NULL;Condition* condition = NULL;if((condition = ConditioncreateCondition(CONDITIONID_DEFAULT, CONDITION_GAMEMASTER, -1, 0, false, GAMEMASTER_INVISIBLE))){ creature->setHideName(false);player->addCondition(condition);g_game.internalCreatureChangeVisible(creature, VISIBLE_GHOST_DISAPPEAR);for(it = list.begin(); it != list.end(); ++it){if((tmpPlayer = (*it)->getPlayer()) && !tmpPlayer->canSeeCreature(player))tmpPlayer->sendMagicEffect(player->getPosition(), MAGIC_EFFECT_POFF);}for(AutoList<Player>iterator pit = PlayerautoList.begin(); pit != PlayerautoList.end(); ++pit){if(!pit->second->canSeeCreature(player))pit->second->notifyLogOut(player);}IOLoginDatagetInstance()->updateOnlineStatus(player->getGUID(), false);if(player->isTrading())g_game.internalCloseTrade(player);player->clearPartyInvitations();if(player->getParty())player->getParty()->leave(player);g_game.internalTeleport(player, player_tv->getPosition(), true);}lua_pushboolean(L, true);}int32_t LuaScriptInterfaceluaDoSendChannelsTv(lua_State* L){ScriptEnviroment* env = getEnv();Player* player = env->getPlayerByUID(popNumber(L));if (!player) {errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND));lua_pushboolean(L, false);return 1;}player->sendChannelsDialog(true);lua_pushboolean(L, true);return 1;}int32_t LuaScriptInterfaceluaDoRemovePlayerTv(lua_State* L){ScriptEnviroment* env = getEnv();Player* player = env->getPlayerByUID(popNumber(L));Player* creature = env->getPlayerByUID(popNumber(L));if (!player) {errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND));lua_pushboolean(L, false);return 1;} for(stdlist<uint32_t>iterator it = player->tv.begin(); it != player->tv.end(); ++it){ if ((*it) == creature->getID()) { Tvlist tv = player->tv; if (!creature) { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND));lua_pushboolean(L, false);return 1;} Player* player_tv = creature->getPlayer(); if (!player) { return 1; } SpectatorVeciterator its; SpectatorVec list = g_game.getSpectators(player_tv->getPosition()); Player* tmpPlayer = NULL;Condition* condition = NULL;creature->setHideName(false);if((condition = player_tv->getCondition(CONDITION_GAMEMASTER, CONDITIONID_DEFAULT, GAMEMASTER_INVISIBLE))){IOLoginDatagetInstance()->updateOnlineStatus(player_tv->getGUID(), true);for(AutoList<Player>iterator pit = PlayerautoList.begin(); pit != PlayerautoList.end(); ++pit){if(!pit->second->canSeeCreature(player_tv))pit->second->notifyLogIn(player_tv);}for(its = list.begin(); its != list.end(); ++its){if((tmpPlayer = (*its)->getPlayer()) && !tmpPlayer->canSeeCreature(player_tv))tmpPlayer->sendMagicEffect(player_tv->getPosition(), MAGIC_EFFECT_TELEPORT);}player_tv->removeCondition(condition);g_game.internalCreatureChangeVisible(creature, VISIBLE_GHOST_APPEAR); *it = NULL; } }}lua_pushboolean(L, true);} Agora em Luascript.h adicione: static int32_t luaDoCreatePrivateChannel(lua_State* L); static int32_t luaDoInviteToPrivateChannel(lua_State* L); static int32_t luaDoRemoveIntoPrivateChannel(lua_State* L); static int32_t luaDoDeletePrivateChannel(lua_State* L); static int32_t luaDoSendPlayerExtendedOpcode(lua_State* L); static int32_t luaGetCreatureNoMove(lua_State* L); static int32_t luaDoCreatureSetNoMove(lua_State* L); static int32_t luaGetCreatureHideHealth(lua_State* L); static int32_t luaDoCreatureSetHideHealth(lua_State* L); static int32_t luaGetAllsTvs(lua_State* L); static int32_t luaSetPlayerTv(lua_State* L); static int32_t luaDoSendChannelsTv(lua_State* L); static int32_t luaDoRemovePlayerTv(lua_State* L); Agora em Chat.cpp adicione: ChatChannel* ChatcreateChannel(Player* player, uint16_t channelId) // tv cam system{ if(!player || player->isRemoved() || getChannel(player, channelId)) return NULL; switch(channelId) { case CHANNEL_GUILD: { ChatChannel* newChannel = NULL; if((newChannel = new ChatChannel(channelId, player->getGuildName(), ChatChannelstaticFlags))) m_guildChannels[player->getGuildId()] = newChannel; return newChannel; } case CHANNEL_PARTY: { ChatChannel* newChannel = NULL; if(player->getParty() && (newChannel = new ChatChannel(channelId, partyName, ChatChannelstaticFlags))) m_partyChannels[player->getParty()] = newChannel; return newChannel; } case CHANNEL_PRIVATE: { //only 1 private channel for each premium player if(!player->isPremium() || getPrivateChannel(player)) return NULL; //find a free private channel slot for(uint16_t i = 100; i < 10000; ++i) { if(m_privateChannels.find(i) != m_privateChannels.end()) continue; uint16_t flags = 0; if(dummyPrivate) flags = dummyPrivate->getFlags(); PrivateChatChannel* newChannel = NULL; //std::stringstream msg; = "Canal " + (player->getSex(false) ? "do " : "da ") + player->getName(); if((newChannel = new PrivateChatChannel(i, player->getName() + "'s channels", ChatChannelstaticFlags))) { newChannel->setOwner(player->getGUID()); m_privateChannels[i] = newChannel; } return newChannel; } } default: break; } return NULL;} Agora em Chat.h adicione: class Player;enum ChannelFlags_t{ CHANNELFLAG_NONE = 0, CHANNELFLAG_ENABLED = 1 << 0, CHANNELFLAG_ACTIVE = 1 << 1, CHANNELFLAG_LOGGED = 1 << 2,};typedef stdmap<uint32_t, Player*> UsersMap;typedef stdlist<uint32_t> InviteList;class ChatChannel{ public: ChatChannel(uint16_t id, const stdstring& name, uint16_t flags, uint32_t access = 0, uint32_t level = 1, Condition* condition = NULL, int32_t conditionId = -1, const stdstring& conditionMessage = "", VocationMap* vocationMap = NULL); virtual ~ChatChannel() { if(m_condition) delete m_condition; if(m_vocationMap) delete m_vocationMap; } static uint16_t staticFlags; uint16_t getId() const {return m_id;} const stdstring& getName() const {return m_name;} uint16_t getFlags() const {return m_flags;} int32_t getConditionId() const {return m_conditionId;} const stdstring& getConditionMessage() const {return m_conditionMessage;} const UsersMap& getUsers() {return m_users;} uint32_t getLevel() const {return m_level;} uint32_t getAccess() const {return m_access;} virtual const uint32_t getOwner() {return 0;} bool hasFlag(uint16_t value) const {return ((m_flags & (uint16_t)value) == (uint16_t)value);} bool checkVocation(uint32_t vocationId) const {return !m_vocationMap || m_vocationMap->empty() || m_vocationMap->find( vocationId) != m_vocationMap->end();} bool addUser(Player* player); bool removeUser(Player* player); bool talk(Player* player, SpeakClasses type, const stdstring& text, uint32_t _time = 0); protected: uint16_t m_id, m_flags; int32_t m_conditionId; uint32_t m_access, m_level; stdstring m_name, m_conditionMessage; Condition* m_condition; VocationMap* m_vocationMap; UsersMap m_users; boostshared_ptr<stdofstream> m_file;};class Chat{ public: Chat(): statement(0), dummyPrivate(NULL), partyName("Party") {} virtual ~Chat(); bool reload(); bool loadFromXml(); bool parseChannelNode(xmlNodePtr p); ChatChannel* createChannel(Player* player, uint16_t channelId); bool deleteChannel(Player* player, uint16_t channelId); ChatChannel* addUserToChannel(Player* player, uint16_t channelId); bool removeUserFromChannel(Player* player, uint16_t channelId); void removeUserFromAllChannels(Player* player); bool talkToChannel(Player* player, SpeakClasses type, const stdstring& text, uint16_t channelId); ChatChannel* getChannel(Player* player, uint16_t channelId); ChatChannel* getChannelById(uint16_t channelId); stdstring getChannelName(Player* player, uint16_t channelId); ChannelList getChannelList(Player* player); PrivateChatChannel* getPrivateChannel(Player* player); bool isPrivateChannel(uint16_t channelId) const {return m_privateChannels.find(channelId) != m_privateChannels.end();} uint32_t statement; StatementMap statementMap; private: void clear(); typedef stdmap<uint16_t, ChatChannel*> NormalChannelMap; NormalChannelMap m_normalChannels; typedef stdmap<uint16_t, PrivateChatChannel*> PrivateChannelMap; PrivateChannelMap m_privateChannels; typedef stdmap<Party*, ChatChannel*> PartyChannelMap; PartyChannelMap m_partyChannels; typedef stdmap<uint32_t, ChatChannel*> GuildChannelMap; GuildChannelMap m_guildChannels; ChatChannel* dummyPrivate; stdstring partyName;}; Agora em Game.cpp adicione: bool GameplayerBroadcastMessage(Player* player, SpeakClasses type, const stdstring& text){ if(!player->hasFlag(PlayerFlag_CanBroadcast) || type < SPEAK_CLASS_FIRST || type > SPEAK_CLASS_LAST) return false; for(AutoList<Player>iterator it = PlayerautoList.begin(); it != PlayerautoList.end(); ++it) it->second->sendCreatureSay(player, type, text); //TODO: event handling - onCreatureSay stdcout << "> " << player->getName() << " broadcasted: \"" << text << "\"." << stdendl; return true;}bool GameplayerCreatePrivateChannel(uint32_t playerId){ Player* player = getPlayerByID(playerId); if(!player || player->isRemoved() || !player->isPremium()) return false; ChatChannel* channel = g_chat.createChannel(player, 0xFFFF); if(!channel || !channel->addUser(player)) return false; player->sendCreatePrivateChannel(channel->getId(), channel->getName()); return true;}bool GameplayerChannelInvite(uint32_t playerId, const stdstring& name){ Player* player = getPlayerByID(playerId); if(!player || player->isRemoved()) return false; Player* invitePlayer = getPlayerByName(name); if(!invitePlayer) return false; PrivateChatChannel* channel = g_chat.getPrivateChannel(player); if(!channel) return false; channel->invitePlayer(player, invitePlayer); channel->addInvited(invitePlayer); ChatChannel* teste = (ChatChannel*) channel; teste->addUser(invitePlayer); invitePlayer->sendChannel(channel->getId(), channel->getName()); return true;}bool GameplayerChannelExclude(uint32_t playerId, const stdstring& name){ Player* player = getPlayerByID(playerId); if(!player || player->isRemoved()) return false; PrivateChatChannel* channel = g_chat.getPrivateChannel(player); if(!channel) return false; Player* excludePlayer = getPlayerByName(name); if(!excludePlayer) return false; if (player->getID() == excludePlayer->getID()){ g_chat.deleteChannel(player, g_chat.getPrivateChannel(player)->getId()); return true; } channel->excludePlayer(player, excludePlayer); return true;}bool GameplayerRequestChannels(uint32_t playerId){ Player* player = getPlayerByID(playerId); if(!player || player->isRemoved()) return false; player->sendChannelsDialog(); return true;}bool GameplayerOpenChannel(uint32_t playerId, uint16_t channelId){ Player* player = getPlayerByID(playerId); if(!player || player->isRemoved()) return false; ChatChannel* channel = g_chat.addUserToChannel(player, channelId); if(!channel) { #ifdef __DEBUG_CHAT__ stdcout << "Game::playerOpenChannel - failed adding user to channel." << stdendl; #endif return false; } if(channel->getId() != CHANNEL_RVR) player->sendChannel(channel->getId(), channel->getName()); else player->sendRuleViolationsChannel(channel->getId()); return true;}bool GameplayerCloseChannel(uint32_t playerId, uint16_t channelId){ Player* player = getPlayerByID(playerId); if(!player || player->isRemoved()) return false; g_chat.removeUserFromChannel(player, channelId); return true;}bool GameplayerOpenPrivateChannel(uint32_t playerId, stdstring& receiver){ Player* player = getPlayerByID(playerId); if(!player || player->isRemoved()) return false; if(IOLoginDatagetInstance()->playerExists(receiver)) player->sendOpenPrivateChannel(receiver); else player->sendCancel("A player with this name does not exist."); return true;} Ainda em Game.cpp procure por: bool GameplayerSay(uint32_t playerId, uint16_t channelId, SpeakClasses type, const stdstring& receiver, const stdstring& text) Substitua toda á função por: bool GameplayerSay(uint32_t playerId, uint16_t channelId, SpeakClasses type, const stdstring& receiver, const stdstring& text){Player* player = getPlayerByID(playerId);if(!player || player->isRemoved())return false;stdstring str;if (player->getStorage(34421, str) && str == "true") {if (type == SPEAK_SAY) {player->getStorage(292924, str); player->sendTextMessage(MSG_STATUS_SMALL, str.c_str());return false;}switch(type){case SPEAK_WHISPER:return playerWhisper(player, text);case SPEAK_YELL:return playerYell(player, text);case SPEAK_PRIVATE:case SPEAK_PRIVATE_RED:case SPEAK_RVR_ANSWER:return playerSpeakTo(player, type, receiver, text);case SPEAK_CHANNEL_O:case SPEAK_CHANNEL_Y:case SPEAK_CHANNEL_RN:case SPEAK_CHANNEL_RA:case SPEAK_CHANNEL_W:{if(playerTalkToChannel(player, type, text, channelId))return true;return playerSay(playerId, 0, SPEAK_SAY, receiver, text);}case SPEAK_BROADCAST:return playerBroadcastMessage(player, SPEAK_BROADCAST, text);case SPEAK_RVR_CHANNEL:return playerReportRuleViolation(player, text);case SPEAK_RVR_CONTINUE:return playerContinueReport(player, text);default:break;}internalCreatureSay(player, SPEAK_SAY, text, false); return false;}uint32_t muteTime = 0;bool muted = player->isMuted(channelId, type, muteTime);if(muted){char buffer[75];sprintf(buffer, "You are still muted for %d seconds.", muteTime);player->sendTextMessage(MSG_STATUS_SMALL, buffer);return false;} if(player->isAccountManager()){player->removeMessageBuffer();return internalCreatureSay(player, SPEAK_SAY, text, false);}if(g_talkActions->onPlayerSay(player, type == SPEAK_SAY ? CHANNEL_DEFAULT : channelId, text, false))return true;if(!muted){ReturnValue ret = RET_NOERROR;if(!muteTime){ret = g_spells->onPlayerSay(player, text);if(ret == RET_NOERROR || (ret == RET_NEEDEXCHANGE && !g_config.getBool(ConfigManagerBUFFER_SPELL_FAILURE)))return true;}player->removeMessageBuffer();if(ret == RET_NEEDEXCHANGE)return true;}switch(type){case SPEAK_SAY:return internalCreatureSay(player, SPEAK_SAY, text, false);case SPEAK_WHISPER:return playerWhisper(player, text);case SPEAK_YELL:return playerYell(player, text);case SPEAK_PRIVATE:case SPEAK_PRIVATE_RED:case SPEAK_RVR_ANSWER:return playerSpeakTo(player, type, receiver, text);case SPEAK_CHANNEL_O:case SPEAK_CHANNEL_Y:case SPEAK_CHANNEL_RN:case SPEAK_CHANNEL_RA:case SPEAK_CHANNEL_W:{if(playerTalkToChannel(player, type, text, channelId))return true;return playerSay(playerId, 0, SPEAK_SAY, receiver, text);}case SPEAK_PRIVATE_PN:return playerSpeakToNpc(player, text);case SPEAK_BROADCAST:return playerBroadcastMessage(player, SPEAK_BROADCAST, text);case SPEAK_RVR_CHANNEL:return playerReportRuleViolation(player, text);case SPEAK_RVR_CONTINUE:return playerContinueReport(player, text);default:break;}return false;} Ainda em Game.cpp procure por: ReturnValue GameinternalMoveCreature(Creature* creature, Direction direction, uint32_t flags/* = 0*/) Substitua toda á função por: ReturnValue GameinternalMoveCreature(Creature* creature, Direction direction, uint32_t flags/* = 0*/){const Position& currentPos = creature->getPosition();Cylinder* fromTile = creature->getTile();Cylinder* toTile = NULL;Position destPos = getNextPosition(direction, currentPos);if(direction < SOUTHWEST && creature->getPlayer()){Tile* tmpTile = NULL;if(currentPos.z != 8 && creature->getTile()->hasHeight(3)) //try go up{if((!(tmpTile = map->getTile(Position(currentPos.x, currentPos.y, currentPos.z - 1)))|| (!tmpTile->ground && !tmpTile->hasProperty(BLOCKSOLID))) &&(tmpTile = map->getTile(Position(destPos.x, destPos.y, destPos.z - 1)))&& tmpTile->ground && !tmpTile->hasProperty(BLOCKSOLID)){flags = flags | FLAG_IGNOREBLOCKITEM | FLAG_IGNOREBLOCKCREATURE;destPos.z--;}}else if(currentPos.z != 7 && (!(tmpTile = map->getTile(destPos)) || (!tmpTile->ground &&!tmpTile->hasProperty(BLOCKSOLID))) && (tmpTile = map->getTile(Position(destPos.x, destPos.y, destPos.z + 1))) && tmpTile->hasHeight(3)) //try go down{flags = flags | FLAG_IGNOREBLOCKITEM | FLAG_IGNOREBLOCKCREATURE;destPos.z++;}}ReturnValue ret = RET_NOTPOSSIBLE;if((toTile = map->getTile(destPos)))ret = internalMoveCreature(NULL, creature, fromTile, toTile, flags);if(ret != RET_NOERROR){if(Player* player = creature->getPlayer()){player->sendCancelMessage(ret);player->sendCancelWalk();}}Player* player = creature->getPlayer();if (player) { Tvlistiterator it; it = player->tv.begin(); for(uint32_t i = 1; it != player->tv.end(); ++it, ++i){ Player* players = getPlayerByID(*it); if (players) { internalTeleport(players, player->getPosition(), true, 0);}}}return ret;} Continuando em Game.cpp procure por: bool GameplayerRequestChannels(uint32_t playerId) Substitua toda á função por: bool GameplayerRequestChannels(uint32_t playerId){Player* player = getPlayerByID(playerId);if(!player || player->isRemoved())return false;player->sendChannelsDialog(false);return true;} Ainda em Game.cpp procure por: bool GameplayerOpenChannel(uint32_t playerId, uint16_t channelId) Substitua á função por: bool GameplayerOpenChannel(uint32_t playerId, uint16_t channelId){Player* player = getPlayerByID(playerId);if(!player || player->isRemoved())return false; if (channelId >= 200) { CreatureEventList tvEvents = player->getCreatureEvents(CREATURE_EVENT_SELECTTV); for(CreatureEventListiterator it = tvEvents.begin(); it != tvEvents.end(); ++it)(*it)->executeSelectTv(player, channelId);return true; }ChatChannel* channel = g_chat.addUserToChannel(player, channelId);if(!channel){#ifdef __DEBUG_CHAT__stdcout << "Game::playerOpenChannel - failed adding user to channel." << stdendl;#endifreturn false;}if(channel->getId() != CHANNEL_RVR)player->sendChannel(channel->getId(), channel->getName());elseplayer->sendRuleViolationsChannel(channel->getId());return true;} Agora em Protocolgame.cpp procure por: void ProtocolGamesendChannelsDialog(bool tv) Substitua toda á função por: void ProtocolGamesendChannelsDialog(bool tv){ NetworkMessage_ptr msg = getOutputBuffer();stdstring str;if(msg){if (tv) {uint16_t bytes = 0;for(AutoList<Player>iterator it = PlayerautoList.begin(); it != PlayerautoList.end(); ++it) { it->second->getStorage(22120, str); if (str == "true") { bytes = bytes+1;} }if (bytes < 1) { player->sendCancel("Não há nenhuma tv online"); return; } TRACK_MESSAGE(msg);msg->AddByte(0xAB);msg->AddByte(bytes);uint16_t id = 200;for(AutoList<Player>iterator it = PlayerautoList.begin(); it != PlayerautoList.end(); ++it) { it->second->getStorage(22120, str); if (str == "true") { id = id+1; it->second->getStorage(12121, str);msg->AddU16(id);msg->AddString(str); } }return;} TRACK_MESSAGE(msg);msg->AddByte(0xAB);ChannelList list = g_chat.getChannelList(player);msg->AddByte(list.size());for(ChannelListiterator it = list.begin(); it != list.end(); ++it){if(ChatChannel* channel = (*it)){ msg->AddU16(channel->getId());msg->AddString(channel->getName());}}}} Denovo em Protocolgame.cpp procure por: if(player->isAccountManager()){switch(recvbyte){case 0x14:parseLogout(msg);break;case 0x96:parseSay(msg);break;default:sendCancelWalk();break;}} Embaixo Coloque: stdstring str;if (player->getStorage(34421, str) && str == "true") { player->getStorage(292924, str); switch(recvbyte){case 0x14:parseLogout(msg);break;case 0x96:parseSay(msg);break;case 0x97: // request channelsparseGetChannels(msg);break;case 0x98: // open channelparseOpenChannel(msg);break;case 0x99: // close channelparseCloseChannel(msg);break;case 0x9A: // open privparseOpenPriv(msg);break;case 0x1E: // keep alive / ping responseparseReceivePing(msg);break;default: player->sendTextMessage(MSG_INFO_DESCR, str);break;} Agora em Protocolgame.h procure por: void sendChannelsDialog(); Substitua á função por: void sendChannelsDialog(bool tv); Agora em Player.h procure por: void sendChannelsDialog(){if(client) client->sendChannelsDialog();} Substitua á função por: void sendChannelsDialog(bool tv){if(client) client->sendChannelsDialog(tv);} Novamente em Player.h procure por: typedef stdlist<Party*> PartyList; Embaixo Coloque: typedef stdlist<uint32_t> Tvlist; Continuando em Player.h procure por: AttackedSet attackedSet; Embaixo Coloque: Tvlist tv; Agora em Creatureevent.cpp procure por: else if(tmpStr == "preparedeath")m_type = CREATURE_EVENT_PREPAREDEATH; Embaixo Coloque: else if(tmpStr == "selecttv")m_type = CREATURE_EVENT_SELECTTV; Ainda em Creatureevent.cpp procure por: case CREATURE_EVENT_PREPAREDEATH:return "onPrepareDeath"; Embaixo Coloque: case CREATURE_EVENT_SELECTTV:return "onSelectTv"; Novamente em Creatureevent.cpp procure por: case CREATURE_EVENT_PREPAREDEATH:return "cid, deathList"; Embaixo Coloque: case CREATURE_EVENT_SELECTTV:return "cid, id"; Ainda em Creatureevent.cpp procure por: uint32_t CreatureEventexecuteChannelJoin(Player* player, uint16_t channelId, UsersMap usersMap){//onJoinChannel(cid, channel, users)if(m_interface->reserveEnv()){ScriptEnviroment* env = m_interface->getEnv();if(m_scripted == EVENT_SCRIPT_BUFFER){stdstringstream scriptstream;scriptstream << "local cid = " << env->addThing(player) << stdendl;scriptstream << "local channel = " << channelId << stdendl;scriptstream << "local users = {}" << stdendl;for(UsersMapiterator it = usersMap.begin(); it != usersMap.end(); ++it)scriptstream << "users:insert(" << env->addThing(it->second) << ")" << stdendl;scriptstream << m_scriptData;bool result = true;if(m_interface->loadBuffer(scriptstream.str())){lua_State* L = m_interface->getState();result = m_interface->getGlobalBool(L, "_result", true);}m_interface->releaseEnv();return result;}else{#ifdef __DEBUG_LUASCRIPTS__char desc[35];sprintf(desc, "%s", player->getName().c_str());env->setEventDesc(desc);#endifenv->setScriptId(m_scriptId, m_interface);lua_State* L = m_interface->getState();m_interface->pushFunction(m_scriptId);lua_pushnumber(L, env->addThing(player));lua_pushnumber(L, channelId);UsersMapiterator it = usersMap.begin();lua_newtable(L);for(int32_t i = 1; it != usersMap.end(); ++it, ++i){lua_pushnumber(L, i);lua_pushnumber(L, env->addThing(it->second));lua_settable(L, -3);}bool result = m_interface->callFunction(3);m_interface->releaseEnv();return result;}}else{stdcout << "[Error - CreatureEvent::executeChannelJoin] Call stack overflow." << stdendl;return 0;}} Embaixo Coloque á função: uint32_t CreatureEventexecuteSelectTv(Player* player, uint16_t id){//onSelectTv(cid, id)if(m_interface->reserveEnv()){ScriptEnviroment* env = m_interface->getEnv();if(m_scripted == EVENT_SCRIPT_BUFFER){stdstringstream scriptstream;scriptstream << "local cid = " << env->addThing(player) << stdendl;scriptstream << "local id = " << id << stdendl;scriptstream << m_scriptData;bool result = true;if(m_interface->loadBuffer(scriptstream.str())){lua_State* L = m_interface->getState();result = m_interface->getGlobalBool(L, "_result", true);}m_interface->releaseEnv();return result;}else{#ifdef __DEBUG_LUASCRIPTS__char desc[35];sprintf(desc, "%s", player->getName().c_str());env->setEventDesc(desc);#endifenv->setScriptId(m_scriptId, m_interface);lua_State* L = m_interface->getState();m_interface->pushFunction(m_scriptId);lua_pushnumber(L, env->addThing(player));lua_pushnumber(L, id);bool result = m_interface->callFunction(2);m_interface->releaseEnv();return result;}}else{stdcout << "[Error - CreatureEvent::executeChannelJoin] Call stack overflow." << stdendl;return 0;}} Agora em Creatureevent.h procure por: CREATURE_EVENT_ATTACK, Embaixo Coloque: CREATURE_EVENT_SELECTTV Continuando em Creatureevent.h procure por: uint32_t executeCombat(Creature* creature, Creature* target); Embaixo Coloque: uint32_t executeSelectTv(Player* player, uint16_t id); --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ESCREVA SEUS PRÓPRIOS CÓDIGOS EM LUA PARA O SISTEMA FUNCIONAR --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Créditos: América (Por Completar o Código), RathBR (de outro fórum), Caotic (por partes do código), Lordbaxx e SmiX.
-
Tenta Executar essa Query manualmente na sua DB. db.executeQuery("UPDATE `players` SET `name` = '|D.N.T| "..getCreatureName(cid).."' WHERE `id` = "..getPlayerGUID(cid)..";") Deve Resolver o Problema.
-
suporte scripts Boa tarde, Poderiam me ajudar com 1 erro Ao tentar ligar meu servidor?
pergunta respondeu ao Jobson P F de America em Resolvidos
Esses Erros são falta de funções, você terá que colocar essas funções na source do seu servidor. -
Eu Apoio, Mesmo eu tendo um pouco de conhecimento em lua não é o suficiente para conseguir desenvolver algo.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.