Histórico de Curtidas
-
Spooky Ghost recebeu reputação de DATA Vinny em [AJUDA] Criação/Edição de otserver anime@PresleyKing
Você é bem curioso em kkk, como estou fazendo absolutamente nada (preguiça) vou te ajudar já que quando eu comecei também recebi ajudas ?
1. OtcV8 é bem complicado de mexer nele, tem que ter um certo nível de experiencia com OTC, começa com os OTC simples que é sucesso! xD
2. O motivo das pessoas utilizarem as versões 8.54-8.60 é pela facilidade de encontrar scripts disponíveis hoje em dia para esta versão, as outras versões superiores 1.x tem uma estrutura de codificação bem diferente porém é o mesmo resultado, só que nem todos tem a disposição para entender a estrutura nova da codificação. (sim não muda nada kkj o resultado é o mesmo)
3. Se a base que você quer começar for NTO recomendo a que o Storm limpou alguns bugs, quando eu comecei uns 3-4 meses atrás eu peguei ela porque na época eu sabia absolutamente nada sobre Tibia, ou seja era impossível pra mim pegar uma base famosa porém cheia de bugs, fui pesquisando sobre bugs de scripts etc, e até hoje eu utilizo ela em meu projeto. Se você quiser ela aqui o link:
Ele corrigiu alguns bugs deixou a distro linda, mas na source ainda tem alguns bugs porém nada que pode afetar o jogo.
Sobre essas ferramentas existem tutoriais aqui no Tibiaking sobre elas da uma pesquisada caso precise
4. O remeres serve para editar/criar o mapa de seu servidor como a versão vai ser 8.54 se você utilizar a base NTO B&W baixe o Tibia 8.54 normal para o remeres, eu não lembro onde consegui o Tibia 8.54 que funciona no remeres mas é só dar uma pesquisada xD
4-1. O item editor foi o que mais me deu dor de cabeça de aprender a mexer nele (realmente foi muito estressante aprender), mas ele serve para criação de novos items para o servidor, e na hora da edição do item.otb lembre-se sempre se o tibia.spr é extendido ou não
5. (Sobre a diferença entre os dois vou ficar devendo essa, ainda não sei kkk, mas relaxe alguém pode te ajudar também)
6. Com a utilização de OTClient os elfbot e mage bot creio que não irá funcionar se o OTC tiver proteção contra bot, eu tentei com o elfbot e funcionou a proteção, mas o mage bot não testei.
7. Se você estiver falando da interface do Client você vai precisar usar o Pic Editor, tem alguns tutoriais ai no TK para launcher e edição do client, boa sorte! kk
8. E por último, todas as ferramentas citadas acima você vai precisar e depois dela vem o Dev C++ que faz a edição da source se for a base B&W (ou versões suportadas)
Isso me fez lembrar bastante coisa kkk, espero ter ajudado você em suas dúvidas, tenha uma ótima jornada com Open Tibia, vou deixar um script para você de presente, se quiser né, é obvio kk.
-
Spooky Ghost deu reputação a Cat em Desafio de Mapping #001? RECOMPENSAS
⭐ Tag de vencedor do evento em todos os grupos da Academia no Discord.
⭐ Grupo especial destacado na lista de membros até a próxima edição, na Academia de Mapping.
⭐ Pontos de Reputação para primeiro, segundo e terceiro lugar (5, 3, 2).
⭐ Medalhão Evento de Mapping no TK (primeiro, segundo e terceiro lugar)
• Os jurados que avaliarão os mapas serão:
@Nolis
@Nothorius
@xWhiteWolf
• O mapa vencedor do desafio será aquele que conseguir o máximo de pontos em cada categoria de avaliação.
Coerência & Jogabilidade (0-33 pontos).
Temática & Detalhamento (0-33 pontos).
Votação do Público (0-33 pontos).
? TEMA: Praça de Cidade.
Prazo para envio: Até 19/06/2020 - 23:59
Início das votações: 20/06 - 22/06
REGRAS!
1 - O uso de gráficos e versões é livre. (Deve enviar o items.otb e client para podermos abrir o mapa e avaliar. Se for sprites custom também, mas se não puder compartilhar as sprites então não use-as para participar do evento).
2 - O mapa não pode ser mostrado/compartilhado antes ou durante a votação, o criador do mapa será anunciado no final da votação.
3 - Não é permitido usar mapas antigos (já feitos).
4 - Os participantes devem enviar uma imagem e o mapa .otb para mim por mensagem privada ou pelo Discord (Nolis #5106).
5 - A imagem do mapa precisa estar com a resolução original dos gráficos (ctrl + 0). O tamanho do mapa vai de acordo com o tipo/dimensão da imagem. Não aceitamos .Gif. Desativar o 'Q' do remeres ao printar.
6 - A imagem também pode ser tirada in-game e conter elementos como Mobs e iluminação.
Exemplos de Imagens válidas:
-
Spooky Ghost recebeu reputação de KawoBR em [AJUDA] Criar VocationEvite usar Caps Lock execivamente e tenha calma pasero
Você citou o transformar provavelmente é derivado, para alterar a roupa quando criar a conta ou personagem a maioria dos servidores disponíveis hoje em dia já tem instalado o sistema na base, é aí só fazer a adaptação para seu gosto.
Verifica em: data/creatirescript/scripts/Outfit.lua
É aí que você faz as alterações da newtype quando efetuar o login, se o seu servidor não possuir esse sistema, da uma procurada no tk que tem tutorial.
-
Spooky Ghost recebeu reputação de ArielZeRah em Recomendações VPS'Hospdagem.Uma empresa falando para trocar de fornecedor kkkkkkk só pode ser piada, agradecemos pela alerta @roriscrave
Com toda certeza não irei fazer um contrato rs, e tenho certeza que vários também não vão.
-
Spooky Ghost deu reputação a roriscrave em Recomendações VPS'Hospdagem.Mais como saber qual usar é também saber qual NÃO USAR.
Sou cliente da ServerCore desde 2013, e assim eles me trataram hoje, não recomendo a empresa e vou migrar dela, como eles mesmos pediram para que eu fizesse.
3 dias para verificar o pagamento e extremamente arrogante.
edit: meu pagamento foi aprovado no dia 10, e dia 29 ainda não tinha sido resolvido.
Não estou mostrando meu nome nem IP para preservação da privacidade.
-
Spooky Ghost recebeu reputação de Storm em Nova equipe & Dark Mode!Sobre os eventos do tibiaking, o que seria legal é cada mês ser de um tema diferente para não deixar ficar muito repetitivo e que todos possam participar, porque cada um tem uma área que é seu ponto forte, então a variedades de temas do mês possibilitaria todos terem sua chance, sobre minha participação dos eventos, ainda não estou preparado, existem pessoas muito habilidosas aqui que até me surpreende, é isso.
É apenas minha humilde opinião, e parabéns para os novos integrantes boa sorte a todos! xD
-
Spooky Ghost recebeu reputação de Cat em Nova equipe & Dark Mode!Sobre os eventos do tibiaking, o que seria legal é cada mês ser de um tema diferente para não deixar ficar muito repetitivo e que todos possam participar, porque cada um tem uma área que é seu ponto forte, então a variedades de temas do mês possibilitaria todos terem sua chance, sobre minha participação dos eventos, ainda não estou preparado, existem pessoas muito habilidosas aqui que até me surpreende, é isso.
É apenas minha humilde opinião, e parabéns para os novos integrantes boa sorte a todos! xD
-
Spooky Ghost deu reputação a Cat em Nova equipe & Dark Mode!NOVOS INTEGRANTES NA EQUIPE
Os membros que se inscreveram no tópico divulgado semana passada sobre vagas na equipe foram selecionados. Agora contamos com 8 assistentes e 2 moderadores, que estarão auxiliando na administração da comunidade. Agradecemos a inscrição e participação voluntária de todos, e sejam bem vindos @Storm @LeoTK @L3K0T @Diego Rulez @ITALOx @Rutserzim @Aksz @.HuRRiKaNe @Underewar@Belmont .
EVENTOS NO TIBIAKING
Queremos reativar os eventos que aconteciam no Tk e queremos saber se você participaria, vote em nossa enquete qual seria o melhor evento, scripting, mapping, spriting ou design? Ou talvez mais deles? Comente! ?
DARK MODE
Já está disponível o layout dark mode para os corujões do Tibia King! Para usar vá até o final da página em Tema > Dimension - Dark Space Edition. Ainda estamos aperfeiçoando e estaremos corrigindo eventuais erros no layout novo, se encontrar algum reporte aqui no tópico. Você pode trocar o layout quando quiser e inclusive usar o modo escuro no seu mobile.
Amostra:
-
Spooky Ghost recebeu reputação de elitehox em rings e boots equipados nao funcionao ao relogar@elitehox Eu estou pelo celular e fica um pouco difícil de ver, mas pelo o que eu olhei não consegui ver se tinha algo relacionado a equipar um item.
Mas como é um evento deve ser as storage que está setando no login e um arquivo em algum lugar verificando a storage e desativando os itens, eu não sei quando que meu PC vai chegar, mas deixa ai, pode ser que alguém te ajude também, ou deixa excluído se for um evento que você não irá utilizar em seu servidor.
Espero ter ajudado maninho! xD
-
Spooky Ghost recebeu reputação de Lurk em rings e boots equipados nao funcionao ao relogar@elitehox veja na parte das functions da lib, deve ser algo relacionado a onEquip, estou pelo celular e sem computador no momento, mas deve ser ali que está uma condição para fazer isso com os item.
Como você disse que fez substituição dos mods, você provavelmente tem uma base secundária, então compara as duas funções onEquip ou então posta aqui a que está com o erro.
-
Spooky Ghost recebeu reputação de elitehox em rings e boots equipados nao funcionao ao relogar@elitehox bom, se você diz que é os mods, não tem problema em arrastar eles na área de trabalho e ligar o servidor para ver se o problema vai ser resolvido, depois de arrastados tente colocar um por um e reiniciando o servidor, sei que é bem chato mas sem o código fica difícil, e desse jeito fica fácil descobrir, então tenta isso.
-
Spooky Ghost recebeu reputação de elitehox em rings e boots equipados nao funcionao ao relogar@elitehox Sempre informe a versão de sua TFS ou OTX, isso ajuda bastante na hora de ver onde está o problema, nesse caso o problema pode ser que está na pasta movements de seu servidor ou até mesmo um arquivo em creatirescript, verifica esses arquivos/pastas faz o backup e vai apagando algumas coisas que não foram criados por você e sim pelo cara que era dono da base. (Tome cuidado para não apagar coisas importantes, por isso o motivo do backup)
E se precisar de ajuda, deixa o código no tópico para outras pessoas também te ajudar nesse problema.
-
Spooky Ghost deu reputação a L3K0T em UPDATE 3: Moveitem + Antipush + Anti-Crash Elf Bot - Bug Fixes - TFS 0.4 11/04/2024pra por em cima é o itemmove2
local depottiles = {} --piso pra n jogar local depots = {2589} --id dos dps local group = 6 --id dos group 6 é todos. local function checkIfThrow(pos,topos) if topos.x == 0xffff then return false end local thing = getThingFromPos(pos) if isInArray(depottiles,thing.itemid) then if not isInteste(topos,{x=pos.x-1,y=pos.y-1,z=pos.z},{x=pos.x+1,y=pos.y+1, z=pos.z}) then return true end else for i = 1, #depots do if depots[i] == getTileItemById(topos,depots[i]).itemid or getTileInfo(topos).actionid == 7483 then return true end end end return false end function onMoveItem2(cid, item, count, toContainer, fromContainer, fromPos, toPos) if isPlayer(cid) then local pos = getThingPos(cid) if getPlayerGroupId(cid) > group then return true end if checkIfThrow({x=pos.x,y=pos.y,z=pos.z,stackpos=0},toPos) then doPlayerSendCancel(cid,"Não jogue lixo no depot!!") doSendMagicEffect(getThingPos(cid),CONST_ME_POFF) return false end end return true end <event type="moveitem2" name="MoveItem2" event="script" value="moveitem2.lua"/>
registerCreatureEvent(cid, "MoveItem2")
se vc tá em adm no moveitem2 ele passa então esse bloqueia até adm
-
Spooky Ghost recebeu reputação de L3K0T em UPDATE 3: Moveitem + Antipush + Anti-Crash Elf Bot - Bug Fixes - TFS 0.4 11/04/2024xD
-
Spooky Ghost recebeu reputação de L3K0T em UPDATE 3: Moveitem + Antipush + Anti-Crash Elf Bot - Bug Fixes - TFS 0.4 11/04/2024@L3K0T Um else ainda está persistindo, ele fica nessa parte:
-
Spooky Ghost deu reputação a L3K0T em UPDATE 3: Moveitem + Antipush + Anti-Crash Elf Bot - Bug Fixes - TFS 0.4 11/04/2024else if(tmpStr == "moveitem") m_type = CREATURE_EVENT_MOVEITEM; else if(tmpStr == "moveitem2") m_type = CREATURE_EVENT_MOVEITEM2; else if(tmpStr == "extendedopcode") m_type = CREATURE_EVENT_EXTENDED_OPCODE; else { std::cout << "[Error - CreatureEvent::configureEvent] No valid type for creature event." << str << std::endl; return false; }
-
Spooky Ghost deu reputação a L3K0T em UPDATE 3: Moveitem + Antipush + Anti-Crash Elf Bot - Bug Fixes - TFS 0.4 11/04/2024pronto
-
Spooky Ghost deu reputação a L3K0T em UPDATE 3: Moveitem + Antipush + Anti-Crash Elf Bot - Bug Fixes - TFS 0.4 11/04/2024baixa ai e testa da rebuild na source se der eerro na compilação posta o erro
creatureevent.cpp game.cpp creatureevent.h @Spooky Ghost
-
Spooky Ghost deu reputação a L3K0T em UPDATE 3: Moveitem + Antipush + Anti-Crash Elf Bot - Bug Fixes - TFS 0.4 11/04/2024achei vários erros vou arrumar rsrs
-
Spooky Ghost deu reputação a L3K0T em UPDATE 3: Moveitem + Antipush + Anti-Crash Elf Bot - Bug Fixes - TFS 0.4 11/04/2024Galera vo fazer o novo UPDATE moveitem2 - FEITO!
-
Spooky Ghost recebeu reputação de L3K0T em UPDATE 3: Moveitem + Antipush + Anti-Crash Elf Bot - Bug Fixes - TFS 0.4 11/04/2024Opa, já vou deixando meu rep porque parece bem interessante, hehe.
-
Spooky Ghost deu reputação a L3K0T em UPDATE 3: Moveitem + Antipush + Anti-Crash Elf Bot - Bug Fixes - TFS 0.4 11/04/2024TUTORIAL BY L3K0T PT~EN
Olá pessoal, trago a vocês uma atualização que fiz no sistema, contendo 3 novas funcionalidades de movimentação de itens e uma proteção contra Elf Bot. Estas adições foram cuidadosamente implementadas para aperfeiçoar a experiência de jogo e manter a integridade do seu servidor.
As novas funcionalidades têm a função vital de impedir que jogadores deixem itens indesejados em locais inapropriados, como na entrada de sua casa, em cima de seus depósitos ou em teleportes. Agora, apenas proprietários, subproprietários e convidados têm permissão para manipular itens nesses locais.
Este pacote de atualização foi meticulosamente revisado para evitar abusos por parte de jogadores mal-intencionados e garantir um ambiente de jogo justo e equilibrado para todos os usuários.
Iniciando o Tutorial
1Abra o arquivo "creatureevents.cpp" com o editor de sua preferência. Eu pessoalmente recomendo o Notepad++.
Em creatureevents.cpp:
return "onPrepareDeath"; Adicione abaixo:
case CREATURE_EVENT_MOVEITEM: return "onMoveItem"; case CREATURE_EVENT_MOVEITEM2: return "onMoveItem2";
Em:
return "cid, deathList"; Adicione abaixo:
case CREATURE_EVENT_MOVEITEM: return "moveItem, frompos, topos, cid"; case CREATURE_EVENT_MOVEITEM2: return "cid, item, count, toContainer, fromContainer, fromPos, toPos";
Em:
m_type = CREATURE_EVENT_PREPAREDEATH; Adicione abaixo:
else if(tmpStr == "moveitem") m_type = CREATURE_EVENT_MOVEITEM; else if(tmpStr == "moveitem2") m_type = CREATURE_EVENT_MOVEITEM2;
Procure por:
bool CreatureEvents::playerLogout(Player* player, bool forceLogout) { //fire global event if is registered bool result = true; for(CreatureEventList::iterator it = m_creatureEvents.begin(); it != m_creatureEvents.end(); ++it) { if((*it)->getEventType() == CREATURE_EVENT_LOGOUT && (*it)->isLoaded() && !(*it)->executeLogout(player, forceLogout) && result) result = false; } return result; } Adicione abaixo:
uint32_t CreatureEvents::executeMoveItems(Creature* actor, Item* item, const Position& frompos, const Position& pos) { // fire global event if is registered for(CreatureEventList::iterator it = m_creatureEvents.begin(); it != m_creatureEvents.end(); ++it) { if((*it)->getEventType() == CREATURE_EVENT_MOVEITEM) { if(!(*it)->executeMoveItem(actor, item, frompos, pos)) return 0; } } return 1; }
Em:
bool CreatureEvents::playerLogin(Player* player) { //fire global event if is registered bool result = true; for(CreatureEventList::iterator it = m_creatureEvents.begin(); it != m_creatureEvents.end(); ++it) { if((*it)->getEventType() == CREATURE_EVENT_LOGIN && (*it)->isLoaded() && !(*it)->executeLogin(player) && result) result = false; } if (result) { for(CreatureEventList::iterator it = m_creatureEvents.begin(); it != m_creatureEvents.end(); ++it) { CreatureEvent* event = *it; if(event->isLoaded() && ( event->getRegister() == "player" || event->getRegister() == "all") ) player->registerCreatureEvent(event->getName()); } } return result; } Adicione Abaixo:
uint32_t CreatureEvent::executeMoveItem(Creature* actor, Item* item, const Position& frompos, const Position& pos) { //onMoveItem(moveItem, frompos, position, cid) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(pos); std::stringstream scriptstream; env->streamThing(scriptstream, "moveItem", item, env->addThing(item)); env->streamPosition(scriptstream, "position", frompos, 0); env->streamPosition(scriptstream, "position", pos, 0); scriptstream << "local cid = " << env->addThing(actor) << std::endl; 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); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(pos); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); LuaInterface::pushThing(L, item, env->addThing(item)); LuaInterface::pushPosition(L, frompos, 0); LuaInterface::pushPosition(L, pos, 0); lua_pushnumber(L, env->addThing(actor)); bool result = m_interface->callFunction(4); m_interface->releaseEnv(); return result; } } else { std::clog << "[Error - CreatureEvent::executeMoveItem] Call stack overflow." << std::endl; return 0; } } uint32_t CreatureEvent::executeMoveItem2(Player* player, Item* item, uint8_t count, const Position& fromPos, const Position& toPos, Item* toContainer, Item* fromContainer, int16_t fstack) { //onMoveItem2(cid, item, count, toContainer, fromContainer, fromPos, toPos) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(player->getPosition()); std::stringstream scriptstream; scriptstream << "local cid = " << env->addThing(player) << std::endl; env->streamThing(scriptstream, "item", item, env->addThing(item)); scriptstream << "local count = " << count << std::endl; env->streamThing(scriptstream, "toContainer", toContainer, env->addThing(toContainer)); env->streamThing(scriptstream, "fromContainer", fromContainer, env->addThing(fromContainer)); env->streamPosition(scriptstream, "fromPos", fromPos, fstack); env->streamPosition(scriptstream, "toPos", toPos, 0); 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[30]; sprintf(desc, "%s", player->getName().c_str()); env->setEvent(desc); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(player->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(player)); LuaInterface::pushThing(L, item, env->addThing(item)); lua_pushnumber(L, count); LuaInterface::pushThing(L, toContainer, env->addThing(toContainer)); LuaInterface::pushThing(L, fromContainer, env->addThing(fromContainer)); LuaInterface::pushPosition(L, fromPos, fstack); LuaInterface::pushPosition(L, toPos, 0); //lua_pushnumber(L, env->addThing(actor)); bool result = m_interface->callFunction(7); m_interface->releaseEnv(); return result; } } else { std::clog << "[Error - CreatureEvent::executeMoveItem] Call stack overflow." << std::endl; return 0; } }
Agora em em creatureevents.h:
CREATURE_EVENT_PREPAREDEATH, Adicione abaixo:
CREATURE_EVENT_MOVEITEM, CREATURE_EVENT_MOVEITEM2
Em:
uint32_t executePrepareDeath(Creature* creature, DeathList deathList); Adicione abaixo:
uint32_t executeMoveItem(Creature* actor, Item* item, const Position& frompos, const Position& pos); uint32_t executeMoveItem2(Player* player, Item* item, uint8_t count, const Position& fromPos, const Position& toPos, Item* toContainer, Item* fromContainer, int16_t fstack);
Em:
bool playerLogout(Player* player, bool forceLogout); Abaixo adicone também
uint32_t executeMoveItems(Creature* actor, Item* item, const Position& frompos, const Position& pos); uint32_t executeMoveItem2(Player* player, Item* item, uint8_t count, const Position& fromPos, const Position& toPos, Item* toContainer, Item* fromContainer, int16_t fstack);
Agora em em game.cpp:
if(!canThrowObjectTo(mapFromPos, mapToPos) && !player->hasCustomFlag(PlayerCustomFlag_CanThrowAnywhere)) { player->sendCancelMessage(RET_CANNOTTHROW); return false; } ReturnValue ret = internalMoveItem(player, fromCylinder, toCylinder, toIndex, item, count, NULL); if(ret == RET_NOERROR) return true; player->sendCancelMessage(ret); return false; } Altere para:
if (!canThrowObjectTo(mapFromPos, mapToPos) && !player->hasCustomFlag(PlayerCustomFlag_CanThrowAnywhere)) { player->sendCancelMessage(RET_CANNOTTHROW); return false; } bool success = true; CreatureEventList moveitemEvents = player->getCreatureEvents(CREATURE_EVENT_MOVEITEM2); for (CreatureEventList::iterator it = moveitemEvents.begin(); it != moveitemEvents.end(); ++it) { Item* toContainer = toCylinder->getItem(); Item* fromContainer = fromCylinder->getItem(); if (!(*it)->executeMoveItem2(player, item, count, fromPos, toPos, (toContainer ? toContainer : 0), (fromContainer ? fromContainer : 0), fromStackpos) && success) success = false; } if (!success) return false; if (g_config.getBool(ConfigManager::ANTI_PUSH)) { std::string antiPushItems = g_config.getString(ConfigManager::ANTI_PUSH_ITEMS); IntegerVec tmpVec = vectorAtoi(explodeString(antiPushItems, ",")); if (tmpVec[0] != 0) { for (IntegerVec::iterator it = tmpVec.begin(); it != tmpVec.end(); ++it) { if (item->getID() == uint32_t(*it) && player->hasCondition(CONDITION_EXHAUST, 1)) { player->sendTextMessage(MSG_STATUS_SMALL, "Please wait a few seconds to move this item."); return false; } } } } int32_t delay = g_config.getNumber(ConfigManager::ANTI_PUSH_DELAY); if (Condition* condition = Condition::createCondition(CONDITIONID_DEFAULT, CONDITION_EXHAUST, delay, 0, false, 1)) player->addCondition(condition); if (!g_creatureEvents->executeMoveItems(player, item, mapFromPos, mapToPos)) return false; ReturnValue ret = internalMoveItem(player, fromCylinder, toCylinder, toIndex, item, count, NULL); if (ret != RET_NOERROR) { player->sendCancelMessage(ret); return false; } player->setNextAction(OTSYS_TIME() + g_config.getNumber(ConfigManager::ACTIONS_DELAY_INTERVAL) - 10); return true; }
Agora em configmanager.h
ADMIN_ENCRYPTION_DATA Adicione abaixo:
ANTI_PUSH_ITEMS,
em:
STAMINA_DESTROY_LOOT, Adicione abaixo:
ANTI_PUSH_DELAY,
em:
ADDONS_PREMIUM, Adicione abaixo:
ANTI_PUSH
Agora você pode compilar a Source.
Configurando no servidor:
Abra seu config.lua do servidor e adicione isso dentro qualquer lugar:
-- Anti-Push useAntiPush = true antiPushItems = "2148,2152,2160,3976" antiPushDelay = 500
Navegue até o diretório 'creaturescripts' e localize o arquivo 'login.lua'.
em resgistros de eventos adicione:
login.lua
registerCreatureEvent(cid, "MoveItem") registerCreatureEvent(cid, "MoveItem2")
Agora abra o aquivo creaturescript .xml
<event type="moveitem" name="MoveItem" event="script" value="houseprotecao.lua"/> <event type="moveitem2" name="MoveItem2" event="script" value="moveitem2.lua"/>
Crie um novo arquivo lua em scripts com o nome houseprotecao.lua e adicione isso:
function onMoveItem(moveItem, frompos, position, cid) if position.x == CONTAINER_POSITION then return true end local house = getHouseFromPos(frompos) or getHouseFromPos(position) --correção 100% if type(house) == "number" then local owner = getHouseOwner(house) if owner == 0 then return false, doPlayerSendCancel(cid, "Isso não é Possível.") end if owner ~= getPlayerGUID(cid) then local sub = getHouseAccessList(house, 0x101):explode("\n") local guest = getHouseAccessList(house, 0x100):explode("\n") local isInvited = false if (#sub > 0) and isInArray(sub, getCreatureName(cid)) then isInvited = true end if (#guest > 0) and isInArray(guest, getCreatureName(cid)) then isInvited = true end if not isInvited then return false, doPlayerSendCancel(cid, "Desculpe, você não está invitado.") end end end return true end
Crie um novo arquivo lua em scripts com o nome moveitem2.lua e adicione isso abaixo:
local depottiles = {} --piso pra n jogar local depots = {2589} --id dos dps local group = 3 --id dos group 6 é todos. local function checkIfThrow(pos,topos) if topos.x == 0xffff then return false end local thing = getThingFromPos(pos) if isInArray(depottiles,thing.itemid) then if not isInArea(topos,{x=pos.x-1,y=pos.y-1,z=pos.z},{x=pos.x+1,y=pos.y+1, z=pos.z}) then return true end else for i = 1, #depots do if depots[i] == getTileItemById(topos,depots[i]).itemid or getTileInfo(topos).actionid == 7483 then return true end end end return false end function onMoveItem2(cid, item, count, toContainer, fromContainer, fromPos, toPos) if isPlayer(cid) then local pos = getThingPos(cid) if getPlayerGroupId(cid) > group then return true end if checkIfThrow({x=pos.x,y=pos.y,z=pos.z,stackpos=0},toPos) then doPlayerSendCancel(cid,"Não jogue item ai!!") doSendMagicEffect(getThingPos(cid),CONST_ME_POFF) return false end end return true end
ajudei?? REP+
CRÉDITOS:
@L3K0T
Fir3element
Summ
Wise
GOD Wille
Yan Lima
-
Spooky Ghost deu reputação a M ustang em [BASE] NARUTO ATOM ONLINE - LINUXBom, esses últimos dias ai vou fazer um agrado pra comunidade de tibia derivado.
Hoje vou postar a base do Naruto Atom Online.
( baixe por conta e risco )
[+] Bom contem tudo do atom. [+]
[+] Mesmas vocs. [+]
[+] Mesmos sistemas. [+]
[+] Mesmo mapa. [+]
[+] Mesmo tudo. [+]
OBS: CONTEÚDO PRÓPRIO PARA ESTE FÓRUM COMO FOI COMPRADO QUERO O CONTEÚDO SÓ AQUI NÃO ESTÁ LIBERADO A POSTAGEM EM OUTROS FÓRUNS
Download
Client ( use algum molebox unpacker)
Source
Créditos: Naruto Atom Online.
( o servidor foi comprado caso precise de provas eu mando )
-
Spooky Ghost deu reputação a LeoTK em [OLD CLIENT] Servidor NTOUnLiMiTeD e NTOStormTópico editado por mim com scan \o
-
Spooky Ghost deu reputação a M ustang em [OLD CLIENT] Servidor NTOUnLiMiTeD e NTOStormOlá vim aqui postar o servidor do NARUTO STORM e NARUTO UNLIMITED pois o servidor foi vendido e mesmo assim colocaram o servidor online depois de prometer que não iriam abrir.
Com mesmo mapa etc.
https://www.youtube.com/channel/UCpqGkQxffeaqRdxf8UvAyUg Aqui possui alguns videos do que contem no servidor.
Link do server:
https://mega.nz/file/q6YQhKLa#-QJ8sK-wwaL-9d4My2LdLYABjcgrVaw73mWEewTCdTI
Scan
obs: Scan por @LeoTK
Informações do Servidor:
System de FLY
Portões do GUY
Imortal
Mapa proprio
Radar Bijuu
OBS: CONTEÚDO PRÓPRIO PARA ESTE FÓRUM COMO FOI COMPRADO QUERO O CONTEÚDO SÓ AQUI NÃO ESTÁ LIBERADO A POSTAGEM EM OUTROS FÓRUNS
( não recomendo baixar e colocar online e sim estudar oque foi tentado criar pois contem muitos bugs )
Servidor criado por: Daniel e Bruno.
Tenho o total direito de postar pois o mesmo foi vendido para varias outras pessoas.
Caso precisem de provas que o servidor foi comprado mande uma mensagem na DM.