Histórico de Curtidas
-
Hadggar recebeu reputação de L3K0T em Harry Potter Sprites - FREEBom primeiramente por que estou postando?, bom obvio é que tenho direitos autorais sobre elas, e hoje permito que vocês a usem, ou seja é free for use, eu paguei 500 reais, nessas sprites, e bom tive muitos problemas com o spriter, @geraldoo.maranhao, e bom primeiramente antes disso, eu estava desenvolvendo um projeto também baseado em harry potter, e nem sabia da existencia do projeto dele, e bom ele me acusou de ter ripado as sprites dele, por eu ter conseguido em uma pagina umas das sprites q o mesmo tinha copiado, e nem eu sabia que ele usava, então o mesmo me acusou de plagio e etc, depois com o tempo comprei as sprites dele, e ele sempre prestando um atendimento horrível, me tratando super mal, e me acusando de plagio etc, o próprio tinha postado no otland, e super acusaram ele de plagio, ou seja né, bem surreal, mas bem queria deixar meu feedback até mesmo sobre o profissional que ele é, e dizer que não recomendaria, pela pessoa meia perturbada, e pela falta de profissionalismo que ele possui, seja no atendimento ou entrega.
um pouco do que possui no pacote:
Resolvi postar, por ter desistido totalmente do projeto, e esta trabalhando em um totalmente distinto do antigo, focado na plataforma mobile, e bom espero que possa ser útil para alguém, já que meus 500 reais não voltam mais, e também estou postando, por que o mesmo estava me vendendo o pacote por 1.000, eu comprei 500 reais, e ele agora esta vendendo por 500 tudo, até as que eu comprei, antes de eu confirmar a comprar com o mesmo, ele jurou que iria apagar e não iria revender, mais um motivo de indignação.
Download - Mediafire (link quebrado)
Download - Tibia King
Scan - VirusTotal
-
Hadggar recebeu reputação de b3499063 em [NPC Guard] Ataca Skulls e Monsters, InvasoresOpa Galera, hoje vou trazer para vocês um NPC que ataca players pk é monstros invasores, analizem no forum e não achei nem um funcionando , testei em 8.54 é 8.60 e funcionou perfeitamente então vamos la.
Primeiramente vá em /data/npc/script/ é crie um arquivo chamado defender.lua é lá dentro adicione :
local level = 10 ----- change this to make the npc hit more/less---------------------|damage_min = (level * 2 + maglevel * 3) * min_multiplier | local maglevel = 10 ----- change this to make the npc hit more/less -----------------|damage_max = (level * 2 + maglevel * 3) * max_multiplier | local min_multiplier = 2.1 ----- change this to make the npc hit more/less ----------|damage_formula = math.random(damage_min,damage_max) | local max_multiplier = 4.2 ----- change this to make the npc hit more/less --------------------------------------------------------------------- local check_interval = 5 ----- change this to the time between checks for a creature (the less time the more it will probably lag :S) local radiusx = 7 ----- change this to the amount of squares left/right the NPC checks (default 7 so he checks 7 squares left of him and 7 squares right (the hole screen) local radiusy = 5 ----- change this to the amount of squares left/right the NPC checks (default 5 so he checks 5 squares up of him and 5 squares down (the hole screen) local Attack_message = "An Invader, ATTACK!!!" ----- change this to what the NPC says when he sees a monster(s) local town_name = "Archgard" ----- the name of the town the NPC says when you say "hi" local Attack_monsters = TRUE ----- set to TRUE for the npc to attack monsters in his area or FALSE if he doesnt local Attack_swearers = TRUE ----- set to TRUE for the npc to attack players that swear near him or FALSE if he doesnt local Attack_pkers = TRUE ----- set to TRUE for the npc to attack players with white and red skulls or FALSE if he doesnt local health_left = 10 ----- set to the amount of health the npc will leave a player with if they swear at him (ie at 10 he will hit the player to 10 health left) local swear_message = "Take this!!!" ----- change this to what you want the NPC to say when he attackes a swearer local swear_words = {"shit", "fuck", "dick", "cunt"} ----- if "Attack_swearers" is set to TRUE then the NPC will attack anyone who says a word in here. Remember to put "" around each word and seperate each word with a comma (,) local hit_effect = CONST_ME_MORTAREA ----- set this to the magic effect the creature will be hit with, see global.lua for more effects local shoot_effect = CONST_ANI_SUDDENDEATH ----- set this to the magic effect that will be shot at the creature, see global.lua for more effects local damage_colour = TEXTCOLOR_RED ----- set this to the colour of the text that shows the damage when the creature gets hit ------------------end of config------------------ local check_clock = os.clock() ----- leave this local focus = 0 ----- leave this function msgcontains(txt, str) return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)')) end function onCreatureSay(cid, type, msg) msg = string.lower(msg) health = getCreatureHealth(cid) - health_left if ((string.find(msg, '(%a*)hi(%a*)'))) and getDistanceToCreature(cid) < 4 then selfSay('Hello ' .. creatureGetName(cid) .. '! I am a defender of '..town_name..'.') doNpcSetCreatureFocus(cid) focus = 0 end if msgcontains(msg, 'time') then selfSay('The time is ' .. getWorldTime() .. '.') end if messageIsInArray(swear_words, msg) then if Attack_swearers == TRUE then selfSay('' .. swear_message ..' ') doCreatureAddHealth(cid,-health) doSendMagicEffect(getThingPos(cid),17) doSendAnimatedText(getThingPos(cid),health,180) doNpcSetCreatureFocus(cid) focus = 0 end end end function getMonstersfromArea(pos, radiusx, radiusy, stack) local monsters = { } local starting = {x = (pos.x - radiusx), y = (pos.y - radiusy), z = pos.z, stackpos = stack} local ending = {x = (pos.x + radiusx), y = (pos.y + radiusy), z = pos.z, stackpos = stack} local checking = {x = starting.x, y = starting.y, z = starting.z, stackpos = starting.stackpos} repeat creature = getThingfromPos(checking) if creature.itemid > 0 then if isCreature(creature.uid) == TRUE then if isPlayer(creature.uid) == FALSE then if Attack_monsters == TRUE then table.insert (monsters, creature.uid) check_clock = os.clock() end elseif isPlayer(creature.uid) == TRUE then if Attack_pkers == TRUE then if getPlayerSkullType(creature.uid) > 0 then table.insert (monsters, creature.uid) check_clock = os.clock() end end end end end if checking.x == pos.x-1 and checking.y == pos.y then checking.x = checking.x+2 else checking.x = checking.x+1 end if checking.x > ending.x then checking.x = starting.x checking.y = checking.y+1 end until checking.y > ending.y return monsters end function onThink() if (Attack_monsters == TRUE and Attack_pkers == TRUE) or (Attack_monsters == TRUE and Attack_pkers == FALSE) or (Attack_monsters == FALSE and Attack_pkers == TRUE) then if (os.clock() - check_clock) > check_interval then monster_table = getMonstersfromArea(getCreaturePosition(getNpcCid( )), radiusx, radiusy, 253) if #monster_table >= 1 then selfSay('' .. Attack_message ..' ') for i = 1, #monster_table do doNpcSetCreatureFocus(monster_table[i]) local damage_min = (level * 2 + maglevel * 3) * min_multiplier local damage_max = (level * 2 + maglevel * 3) * max_multiplier local damage_formula = math.random(damage_min,damage_max) doSendDistanceShoot(getCreaturePosition(getNpcCid( )), getThingPos(monster_table[i]), shoot_effect) doSendMagicEffect(getThingPos(monster_table[i]),hit_effect) doSendAnimatedText(getThingPos(monster_table[i]),damage_formula,damage_colour) doCreatureAddHealth(monster_table[i],-damage_formula) check_clock = os.clock() focus = 0 end elseif table.getn(monster_table) < 1 then focus = 0 check_clock = os.clock() end end end focus = 0 end Depois vá em /data/npc/ é la crie um arquivo defender.xml é lá adicione:
<?xml version="1.0"?> <npc name="Defender" script="defender.lua" access="5" lookdir="2" autowalk="25"> <mana now="800" max="800"/> <health now="200" max="200"/> <look type="131" head="116" body="94" legs="78" feet="115" addons="3"/> </npc> local level = 10 -- Quanto o NPC irar tirar. local maglevel = 10 -- Quanto o NPC Irar tirar. local min_multiplier = 2.1 -- Quanto o NPC Irar tirar. local max_multiplier = 4.2 -- Quanto o NPC Irar tirar. local Attack_message = "An Invader, ATTACK!!!" -- A mensagem queo NPC irar falar quanto detectar um invasor. Creditos: Knekarn Eu (Por Postar aki no forum) -
Hadggar recebeu reputação de ernaix69 em [TalkAction] Sistema de Jail !Opa galera blz? hoje vou trazer um sistema para vocês de jail, então vamos la !
Algumas Funções !
Funções:
*Exemplo, GM quer prender um player que ta fazeno algu de errado, ai ele fala !jail ,4(no exemplo ele ficara 4 minutos preso), éo nome do fulano, !jail 4,fulano ,!jail 15,fulano ou !jail 30,fulano.
* Verificação jogador o tempo de prisão (mostra data unjail)
* auto unjail jogadores
* Kick todos os jogadores da prisão depois de acidente / restart [teletransporte para jogador templo]
Primeiramente vá em \data\talkactions e abra o talkactions.xml é lá adicione:
<talkaction words="!jail" script="jailsystem.lua"/> <talkaction words="!unjail" script="jailsystem.lua"/> <talkaction words="/jail" script="jailsystem.lua"/> <talkaction words="/unjail" script="jailsystem.lua"/> Agora vá em \data\talkactions\scripts é crie um arquivo chamado jailsystem.lua é la adicione :
-- Default jail time in seconds -- default_jail = 30 -- The permission you need to jail someone -- grouprequired = 4 -- StorageValue that the player gets -- jailedstoragevalue_time = 1338 jailedstoragevalue_bool = 1339 -- Set the position of the jail: -- jailpos = { x = 1037, y = 1004, z =7 } -- Set the position once unjailed: -- unjailpos = { x = 1029, y = 1005, z =7 } -- auto kicker, dont edit jail_list = {} jail_list_work = 0 function checkJailList(param) addEvent(checkJailList, 1000, {}) for targetID,player in ipairs(jail_list) do if isPlayer(player) == TRUE then if getPlayerStorageValue(player, jailedstoragevalue_time) < os.time() then doTeleportThing(player, unjailpos, TRUE) setPlayerStorageValue(player, jailedstoragevalue_time, 0) setPlayerStorageValue(player, jailedstoragevalue_bool, 0) table.remove(jail_list,targetID) doPlayerSendTextMessage(player,MESSAGE_STATUS_CONSOLE_ORANGE,'You were kicked from jail! See you later :)') end else table.remove(jail_list,targetID) end end end function onSay(cid, words, param) if jail_list_work == 0 then jail_list_work = addEvent(checkJailList, 1000, {}) end if param == '' and (words == '!unjail' or words == '/unjail') then if getPlayerStorageValue(cid, jailedstoragevalue_time) > os.time() then doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You are jailed until ' .. os.date("%H:%M:%S", getPlayerStorageValue(cid, jailedstoragevalue_time)) .. ' (now is: ' .. os.date("%H:%M:%S", os.time()) .. ').') else if getPlayerStorageValue(cid, jailedstoragevalue_bool) == 1 then table.insert(jail_list,cid) doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You will be kicked from jail in one second.') else doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You are not jailed.') end end return TRUE end local jail_time = -1 for word in string.gmatch(tostring(param), "(%w+)") do if tostring(tonumber(word)) == word then jail_time = tonumber(word) end end local isplayer = getPlayerByName(param) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(param, string.len(jail_time)+1)) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(param, string.len(jail_time)+2)) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(param, string.len(jail_time)+3)) end end end if jail_time ~= -1 then jail_time = jail_time * 60 else jail_time = default_jail end if words == '!jail' or words == '/jail' then if getPlayerGroupId ( cid ) >= grouprequired then if isPlayer(isplayer) == TRUE then doTeleportThing(isplayer, jailpos, TRUE) setPlayerStorageValue(isplayer, jailedstoragevalue_time, os.time()+jail_time) setPlayerStorageValue(isplayer, jailedstoragevalue_bool, 1) table.insert(jail_list,isplayer) doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You jailed '.. getCreatureName(isplayer) ..' until ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (now is: ' .. os.date("%H:%M:%S", os.time()) .. ').') doPlayerSendTextMessage ( isplayer, MESSAGE_INFO_DESCR, 'You have been jailed by '.. getCreatureName(cid) ..' until ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (now is: ' .. os.date("%H:%M:%S", os.time()) .. ').') return TRUE else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Player with this name doesn\'t exist or is offline.") return FALSE end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You don't have access to unjail other players.") return FALSE end elseif words == '!unjail' or words == '/unjail' then if getPlayerGroupId ( cid ) >= grouprequired then if isPlayer(isplayer) == TRUE then doTeleportThing(isplayer, unjailpos, TRUE) setPlayerStorageValue(isplayer, jailedstoragevalue_time, 0) setPlayerStorageValue(isplayer, jailedstoragevalue_bool, 0) table.remove(jail_list,targetID) doPlayerSendTextMessage(isplayer,MESSAGE_STATUS_CONSOLE_ORANGE,getCreatureName(cid) .. ' let you go out from jail! See you later :)') doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You unjailed '.. getCreatureName(isplayer) ..'.') else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Player with this name doesn\'t exist or is offline.") return FALSE end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You don't have access to unjail other players.") return FALSE end end return FALSE end Algumas configurações
grouprequired = 4 -- aki séra até o grupo que poderar usar no caso group 4 pra baixo.
jailpos = { x = 1037, y = 1004, z =7 } -- aki séra a posição para aonde o player irar quando for preso.
unjailpos = { x = 1029, y = 1005, z =7 }- -aki séra para aonde ele for quando ele n tiver mais preso, no caso unjail.
Creditos: Gesior.pl EU. Lembre-se eu testei em tibia 8.54 é 8.60 é funcionou perfeitamente !
-
Hadggar recebeu reputação de Anivia em Harry Potter Sprites - FREEBom primeiramente por que estou postando?, bom obvio é que tenho direitos autorais sobre elas, e hoje permito que vocês a usem, ou seja é free for use, eu paguei 500 reais, nessas sprites, e bom tive muitos problemas com o spriter, @geraldoo.maranhao, e bom primeiramente antes disso, eu estava desenvolvendo um projeto também baseado em harry potter, e nem sabia da existencia do projeto dele, e bom ele me acusou de ter ripado as sprites dele, por eu ter conseguido em uma pagina umas das sprites q o mesmo tinha copiado, e nem eu sabia que ele usava, então o mesmo me acusou de plagio e etc, depois com o tempo comprei as sprites dele, e ele sempre prestando um atendimento horrível, me tratando super mal, e me acusando de plagio etc, o próprio tinha postado no otland, e super acusaram ele de plagio, ou seja né, bem surreal, mas bem queria deixar meu feedback até mesmo sobre o profissional que ele é, e dizer que não recomendaria, pela pessoa meia perturbada, e pela falta de profissionalismo que ele possui, seja no atendimento ou entrega.
um pouco do que possui no pacote:
Resolvi postar, por ter desistido totalmente do projeto, e esta trabalhando em um totalmente distinto do antigo, focado na plataforma mobile, e bom espero que possa ser útil para alguém, já que meus 500 reais não voltam mais, e também estou postando, por que o mesmo estava me vendendo o pacote por 1.000, eu comprei 500 reais, e ele agora esta vendendo por 500 tudo, até as que eu comprei, antes de eu confirmar a comprar com o mesmo, ele jurou que iria apagar e não iria revender, mais um motivo de indignação.
Download - Mediafire (link quebrado)
Download - Tibia King
Scan - VirusTotal
-
Hadggar recebeu reputação de Cat em Harry Potter Sprites - FREEBom primeiramente por que estou postando?, bom obvio é que tenho direitos autorais sobre elas, e hoje permito que vocês a usem, ou seja é free for use, eu paguei 500 reais, nessas sprites, e bom tive muitos problemas com o spriter, @geraldoo.maranhao, e bom primeiramente antes disso, eu estava desenvolvendo um projeto também baseado em harry potter, e nem sabia da existencia do projeto dele, e bom ele me acusou de ter ripado as sprites dele, por eu ter conseguido em uma pagina umas das sprites q o mesmo tinha copiado, e nem eu sabia que ele usava, então o mesmo me acusou de plagio e etc, depois com o tempo comprei as sprites dele, e ele sempre prestando um atendimento horrível, me tratando super mal, e me acusando de plagio etc, o próprio tinha postado no otland, e super acusaram ele de plagio, ou seja né, bem surreal, mas bem queria deixar meu feedback até mesmo sobre o profissional que ele é, e dizer que não recomendaria, pela pessoa meia perturbada, e pela falta de profissionalismo que ele possui, seja no atendimento ou entrega.
um pouco do que possui no pacote:
Resolvi postar, por ter desistido totalmente do projeto, e esta trabalhando em um totalmente distinto do antigo, focado na plataforma mobile, e bom espero que possa ser útil para alguém, já que meus 500 reais não voltam mais, e também estou postando, por que o mesmo estava me vendendo o pacote por 1.000, eu comprei 500 reais, e ele agora esta vendendo por 500 tudo, até as que eu comprei, antes de eu confirmar a comprar com o mesmo, ele jurou que iria apagar e não iria revender, mais um motivo de indignação.
Download - Mediafire (link quebrado)
Download - Tibia King
Scan - VirusTotal
-
Hadggar recebeu reputação de KiraConquest em Harry Potter Sprites - FREEBom primeiramente por que estou postando?, bom obvio é que tenho direitos autorais sobre elas, e hoje permito que vocês a usem, ou seja é free for use, eu paguei 500 reais, nessas sprites, e bom tive muitos problemas com o spriter, @geraldoo.maranhao, e bom primeiramente antes disso, eu estava desenvolvendo um projeto também baseado em harry potter, e nem sabia da existencia do projeto dele, e bom ele me acusou de ter ripado as sprites dele, por eu ter conseguido em uma pagina umas das sprites q o mesmo tinha copiado, e nem eu sabia que ele usava, então o mesmo me acusou de plagio e etc, depois com o tempo comprei as sprites dele, e ele sempre prestando um atendimento horrível, me tratando super mal, e me acusando de plagio etc, o próprio tinha postado no otland, e super acusaram ele de plagio, ou seja né, bem surreal, mas bem queria deixar meu feedback até mesmo sobre o profissional que ele é, e dizer que não recomendaria, pela pessoa meia perturbada, e pela falta de profissionalismo que ele possui, seja no atendimento ou entrega.
um pouco do que possui no pacote:
Resolvi postar, por ter desistido totalmente do projeto, e esta trabalhando em um totalmente distinto do antigo, focado na plataforma mobile, e bom espero que possa ser útil para alguém, já que meus 500 reais não voltam mais, e também estou postando, por que o mesmo estava me vendendo o pacote por 1.000, eu comprei 500 reais, e ele agora esta vendendo por 500 tudo, até as que eu comprei, antes de eu confirmar a comprar com o mesmo, ele jurou que iria apagar e não iria revender, mais um motivo de indignação.
Download - Mediafire (link quebrado)
Download - Tibia King
Scan - VirusTotal
-
Hadggar recebeu reputação de LeoTK em Harry Potter Sprites - FREEBom primeiramente por que estou postando?, bom obvio é que tenho direitos autorais sobre elas, e hoje permito que vocês a usem, ou seja é free for use, eu paguei 500 reais, nessas sprites, e bom tive muitos problemas com o spriter, @geraldoo.maranhao, e bom primeiramente antes disso, eu estava desenvolvendo um projeto também baseado em harry potter, e nem sabia da existencia do projeto dele, e bom ele me acusou de ter ripado as sprites dele, por eu ter conseguido em uma pagina umas das sprites q o mesmo tinha copiado, e nem eu sabia que ele usava, então o mesmo me acusou de plagio e etc, depois com o tempo comprei as sprites dele, e ele sempre prestando um atendimento horrível, me tratando super mal, e me acusando de plagio etc, o próprio tinha postado no otland, e super acusaram ele de plagio, ou seja né, bem surreal, mas bem queria deixar meu feedback até mesmo sobre o profissional que ele é, e dizer que não recomendaria, pela pessoa meia perturbada, e pela falta de profissionalismo que ele possui, seja no atendimento ou entrega.
um pouco do que possui no pacote:
Resolvi postar, por ter desistido totalmente do projeto, e esta trabalhando em um totalmente distinto do antigo, focado na plataforma mobile, e bom espero que possa ser útil para alguém, já que meus 500 reais não voltam mais, e também estou postando, por que o mesmo estava me vendendo o pacote por 1.000, eu comprei 500 reais, e ele agora esta vendendo por 500 tudo, até as que eu comprei, antes de eu confirmar a comprar com o mesmo, ele jurou que iria apagar e não iria revender, mais um motivo de indignação.
Download - Mediafire (link quebrado)
Download - Tibia King
Scan - VirusTotal
-
Hadggar recebeu reputação de Zyros em setCreatureName(cid, name, description)vlw deu tudo certo, estou usando 8.54 vlw
-
Hadggar deu reputação a chavoz em (Resolvido)New Pokemon Bar OTCLIENTOi galera!
Primero que nada me disculpo mi portugués (traductor)
Eu to creando isso:
Mas eu nao consigo fazer que o "Health Bars" tenha funcao...
eu ja crei um comando pra ver % de vida no pokemon do jogador
Eu não tenho conhecimento suficiente da OTC para fazer isso.
Me Pregunto sí alguien me entendio, y si es asi, por favor ayudeme.
-
Hadggar deu reputação a Guilherme em [C++] Opcode versão 8.54+Por: BananaFight > DragonElement
Adaptação pra source 8.54+
LEMBRE-SE, ISSO É NA SOURCE DO SERVIDOR
Vamos ao código.
protocolgame.h
Embaixo de
void AddShopItem(NetworkMessage_ptr msg, const ShopInfo item); Adicione
void parseExtendedOpcode(NetworkMessage& msg); void sendExtendedOpcode(uint8_t opcode, const std::string& buffer); protocolgame.cpp
Embaixo de
uint32_t key[4] = {msg.GetU32(), msg.GetU32(), msg.GetU32(), msg.GetU32()}; enableXTEAEncryption(); setXTEAKey(key); Adicione
// notifies to otclient that this server can receive extended game protocol opcodes if(operatingSystem >= CLIENTOS_OTCLIENT_LINUX) sendExtendedOpcode(0x00, std::string()); Embaixo de
void ProtocolGame::AddShopItem(NetworkMessage_ptr msg, const ShopInfo item) { const ItemType& it = Item::items[item.itemId]; msg->AddU16(it.clientId); if(it.isSplash() || it.isFluidContainer()) msg->AddByte(fluidMap[item.subType % 8]); else if(it.stackable || it.charges) msg->AddByte(item.subType); else msg->AddByte(0x01); msg->AddString(item.itemName); msg->AddU32(uint32_t(it.weight * 100)); msg->AddU32(item.buyPrice); msg->AddU32(item.sellPrice); } Adicione
void ProtocolGame::parseExtendedOpcode(NetworkMessage& msg) { uint8_t opcode = msg.GetByte(); std::string buffer = msg.GetString(); // process additional opcodes via lua script event addGameTask(&Game::parsePlayerExtendedOpcode, player->getID(), opcode, buffer); } void ProtocolGame::sendExtendedOpcode(uint8_t opcode, const std::string& buffer) { // extended opcodes can only be send to players using otclient, cipsoft's tibia can't understand them NetworkMessage_ptr msg = getOutputBuffer(); if(msg) { TRACK_MESSAGE(msg); msg->AddByte(0x32); msg->AddByte(opcode); msg->AddString(buffer); } } Embaixo de
case 0x1E: // keep alive / ping response parseReceivePing(msg); break;
Adicione
case 0x32: // otclient extended opcode parseExtendedOpcode(msg); break; enums.h
Embaixo de
enum GuildLevel_t { GUILDLEVEL_NONE = 0, GUILDLEVEL_MEMBER, GUILDLEVEL_VICE, GUILDLEVEL_LEADER }; Substitua o OperatingSystem por este
enum OperatingSystem_t { CLIENTOS_LINUX = 0x01, CLIENTOS_WINDOWS = 0x02, CLIENTOS_OTCLIENT_LINUX = 0x0A, CLIENTOS_OTCLIENT_WINDOWS = 0x0B, CLIENTOS_OTCLIENT_MAC = 0x0C, };/
player.h
Embaixo de
void sendCreatureShield(const Creature* creature) Adicione
void sendExtendedOpcode(uint8_t opcode, const std::string& buffer) {if(client) client->sendExtendedOpcode(opcode, buffer);} luascript.cpp
Embaixo de
void LuaScriptInterface::registerFunctions() { Adicione
//doSendPlayerExtendedOpcode(cid, opcode, buffer) lua_register(m_luaState, "doSendPlayerExtendedOpcode", LuaScriptInterface::luaDoSendPlayerExtendedOpcode); Embaixo de
SHIFT_OPERATOR(int32_t, LeftShift, <<) SHIFT_OPERATOR(int32_t, RightShift, >>) SHIFT_OPERATOR(uint32_t, ULeftShift, <<) SHIFT_OPERATOR(uint32_t, URightShift, >>) #undef SHIFT_OPERATOR Adicione
int32_t LuaScriptInterface::luaDoSendPlayerExtendedOpcode(lua_State* L) { //doSendPlayerExtendedOpcode(cid, opcode, buffer) std::string 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; } luascript.h
Embaixo de
virtual void registerFunctions(); Adicione
static int32_t luaDoSendPlayerExtendedOpcode(lua_State* L); creatureevent.h
.
Substitua
CREATURE_EVENT_PREPAREDEATH Por isso
CREATURE_EVENT_PREPAREDEATH, CREATURE_EVENT_EXTENDED_OPCODE // otclient additional network opcodes Embaixo de
uint32_t executePrepareDeath(Creature* creature, DeathList deathList); Adicione
uint32_t executeExtendedOpcode(Creature* creature, uint8_t opcode, const std::string& buffer); creatureevent.cpp
Embaixo de
else if(tmpStr == "death") m_type = CREATURE_EVENT_DEATH; Adicione
else if(tmpStr == "extendedopcode") m_type = CREATURE_EVENT_EXTENDED_OPCODE; Embaixo de
case CREATURE_EVENT_DEATH: return "onDeath"; Adicione
case CREATURE_EVENT_EXTENDED_OPCODE: return "onExtendedOpcode"; Embaixo de
case CREATURE_EVENT_DEATH: return "cid, corpse, deathList"; Adicione
case CREATURE_EVENT_EXTENDED_OPCODE: return "cid, opcode, buffer"; Embaixo de
std::cout << "[Error - CreatureEvent::executeFollow] Call stack overflow." << std::endl; return 0; } } Adicione
uint32_t CreatureEvent::executeExtendedOpcode(Creature* creature, uint8_t opcode, const std::string& buffer) { //onExtendedOpcode(cid, opcode, buffer) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(creature->getPosition()); std::stringstream scriptstream; scriptstream << "local cid = " << env->addThing(creature) << std::endl; scriptstream << "local opcode = " << (int)opcode << std::endl; scriptstream << "local buffer = " << buffer.c_str() << 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->setEvent(desc); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(creature->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(creature)); lua_pushnumber(L, opcode); lua_pushlstring(L, buffer.c_str(), buffer.length()); bool result = m_interface->callFunction(3); m_interface->releaseEnv(); return result; } } else { std::cout << "[Error - CreatureEvent::executeRemoved] Call stack overflow." << std::endl; return 0; } } game.h
Embaixo de
int32_t getLightHour() {return lightHour;} void startDecay(Item* item); Adicione
void parsePlayerExtendedOpcode(uint32_t playerId, uint8_t opcode, const std::string& buffer);
game.cpp
Embaixo de
player->sendTextMessage(MSG_INFO_DESCR, buffer); }
Adicione
void Game::parsePlayerExtendedOpcode(uint32_t playerId, uint8_t opcode, const std::string& buffer) { Player* player = getPlayerByID(playerId); if(!player || player->isRemoved()) return; CreatureEventList extendedOpcodeEvents = player->getCreatureEvents(CREATURE_EVENT_EXTENDED_OPCODE); for(CreatureEventList::iterator it = extendedOpcodeEvents.begin(); it != extendedOpcodeEvents.end(); ++it) (*it)->executeExtendedOpcode(player, opcode, buffer); } /creaturescripts/creaturescrips.xml
<event type="extendedopcode" name="ExtendedOpcode" event="script" value="extendedopcode.lua"/>
/creaturescripts/extendedopcode.lua
OPCODE_LANGUAGE = 1 function onExtendedOpcode(cid, opcode, buffer) if opcode == OPCODE_LANGUAGE then -- otclient language if buffer == 'en' or buffer == 'pt' then -- example, setting player language, because otclient is multi-language... --doCreatureSetStorage(cid, CREATURE_STORAGE_LANGUAGE, buffer) end else -- other opcodes can be ignored, and the server will just work fine... end end Créditos : MaXwEllDeN 100% por adaptar o código
-
Hadggar deu reputação a Luan Zero em Sprites NTOQuem é tu? Elas já estão in-game, pra quem eu vendi por não usarem proteção alguns lixos riparam, então eu vim postar, e pra quem eu fiz nem servidor mais tem, apesar que elas estão em diversos servidores, 2018 é ano de coisa nova, e de um modo diferente do ano passado.
-
Hadggar deu reputação a
PedroSTTem Bike systemOlá galera , do TibiaKing , venho trazer pra vocês um bike sistem por movements.
QUAL A DIFERENÇA DESSE SISTEMA PARA O ANTIGO ? ( POR ACTIONS)
Esse sistema evita aquele famoso bug do player dar use na bike e jogar pra outro amigo dar use , fazendo os dois terem bike.
COMO ESSE SISTEMA FUNCIONA ??
Funciona por movements , ao equipar( no slot do ring[configurável]) ganha a outfit e a speed ( configuráveis)
XML
<movevent type="Equip" itemid="2195" slot="ring" event="script" value="bike.lua"/> <movevent type="DeEquip" itemid="2195" slot="ring" event="script" value="bike.lua"/> SCRIPT
local bike = {lookType = 100, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0} --- Esse vai ser Homen local bike1 = {lookType = 101, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0} --- Esse vai ser mulher local speed = 20 --- Velocidade que a bike dará local storage = 3421 function onEquip(cid, item, slot) if not isPlayer(cid) and not isPremium(cid) then -- tire o primeiro not, atras do isPlayer para ativar o premium doPlayerSendCancel(cid, "Only premium members are allowed to mount.") return true end if getPlayerSex(cid) == 1 then -- Homem doChangeSpeed(cid, speed) doSetCreatureOutfit(cid, bike, -1) doSendMagicEffect(getPlayerPosition(cid), 18) setPlayerStorageValue(cid, storage, 1) elseif getPlayerSex(cid) == 0 then -- Girl doChangeSpeed(cid, speed) doSetCreatureOutfit(cid, bike1, -1) doSendMagicEffect(getPlayerPosition(cid), 18) setPlayerStorageValue(cid, storage, 1) end return true end function onDeEquip(cid, item, slot) doRemoveCondition(cid, CONDITION_OUTFIT) doChangeSpeed(cid, -speed) doSendMagicEffect(getPlayerPosition(cid), 18) setPlayerStorageValue(cid, storage, 0) end
-
Hadggar recebeu reputação de bra em [TalkAction] Sistema de Jail !Opa galera blz? hoje vou trazer um sistema para vocês de jail, então vamos la !
Algumas Funções !
Funções:
*Exemplo, GM quer prender um player que ta fazeno algu de errado, ai ele fala !jail ,4(no exemplo ele ficara 4 minutos preso), éo nome do fulano, !jail 4,fulano ,!jail 15,fulano ou !jail 30,fulano.
* Verificação jogador o tempo de prisão (mostra data unjail)
* auto unjail jogadores
* Kick todos os jogadores da prisão depois de acidente / restart [teletransporte para jogador templo]
Primeiramente vá em \data\talkactions e abra o talkactions.xml é lá adicione:
<talkaction words="!jail" script="jailsystem.lua"/> <talkaction words="!unjail" script="jailsystem.lua"/> <talkaction words="/jail" script="jailsystem.lua"/> <talkaction words="/unjail" script="jailsystem.lua"/> Agora vá em \data\talkactions\scripts é crie um arquivo chamado jailsystem.lua é la adicione :
-- Default jail time in seconds -- default_jail = 30 -- The permission you need to jail someone -- grouprequired = 4 -- StorageValue that the player gets -- jailedstoragevalue_time = 1338 jailedstoragevalue_bool = 1339 -- Set the position of the jail: -- jailpos = { x = 1037, y = 1004, z =7 } -- Set the position once unjailed: -- unjailpos = { x = 1029, y = 1005, z =7 } -- auto kicker, dont edit jail_list = {} jail_list_work = 0 function checkJailList(param) addEvent(checkJailList, 1000, {}) for targetID,player in ipairs(jail_list) do if isPlayer(player) == TRUE then if getPlayerStorageValue(player, jailedstoragevalue_time) < os.time() then doTeleportThing(player, unjailpos, TRUE) setPlayerStorageValue(player, jailedstoragevalue_time, 0) setPlayerStorageValue(player, jailedstoragevalue_bool, 0) table.remove(jail_list,targetID) doPlayerSendTextMessage(player,MESSAGE_STATUS_CONSOLE_ORANGE,'You were kicked from jail! See you later :)') end else table.remove(jail_list,targetID) end end end function onSay(cid, words, param) if jail_list_work == 0 then jail_list_work = addEvent(checkJailList, 1000, {}) end if param == '' and (words == '!unjail' or words == '/unjail') then if getPlayerStorageValue(cid, jailedstoragevalue_time) > os.time() then doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You are jailed until ' .. os.date("%H:%M:%S", getPlayerStorageValue(cid, jailedstoragevalue_time)) .. ' (now is: ' .. os.date("%H:%M:%S", os.time()) .. ').') else if getPlayerStorageValue(cid, jailedstoragevalue_bool) == 1 then table.insert(jail_list,cid) doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You will be kicked from jail in one second.') else doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You are not jailed.') end end return TRUE end local jail_time = -1 for word in string.gmatch(tostring(param), "(%w+)") do if tostring(tonumber(word)) == word then jail_time = tonumber(word) end end local isplayer = getPlayerByName(param) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(param, string.len(jail_time)+1)) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(param, string.len(jail_time)+2)) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(param, string.len(jail_time)+3)) end end end if jail_time ~= -1 then jail_time = jail_time * 60 else jail_time = default_jail end if words == '!jail' or words == '/jail' then if getPlayerGroupId ( cid ) >= grouprequired then if isPlayer(isplayer) == TRUE then doTeleportThing(isplayer, jailpos, TRUE) setPlayerStorageValue(isplayer, jailedstoragevalue_time, os.time()+jail_time) setPlayerStorageValue(isplayer, jailedstoragevalue_bool, 1) table.insert(jail_list,isplayer) doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You jailed '.. getCreatureName(isplayer) ..' until ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (now is: ' .. os.date("%H:%M:%S", os.time()) .. ').') doPlayerSendTextMessage ( isplayer, MESSAGE_INFO_DESCR, 'You have been jailed by '.. getCreatureName(cid) ..' until ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (now is: ' .. os.date("%H:%M:%S", os.time()) .. ').') return TRUE else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Player with this name doesn\'t exist or is offline.") return FALSE end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You don't have access to unjail other players.") return FALSE end elseif words == '!unjail' or words == '/unjail' then if getPlayerGroupId ( cid ) >= grouprequired then if isPlayer(isplayer) == TRUE then doTeleportThing(isplayer, unjailpos, TRUE) setPlayerStorageValue(isplayer, jailedstoragevalue_time, 0) setPlayerStorageValue(isplayer, jailedstoragevalue_bool, 0) table.remove(jail_list,targetID) doPlayerSendTextMessage(isplayer,MESSAGE_STATUS_CONSOLE_ORANGE,getCreatureName(cid) .. ' let you go out from jail! See you later :)') doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You unjailed '.. getCreatureName(isplayer) ..'.') else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Player with this name doesn\'t exist or is offline.") return FALSE end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You don't have access to unjail other players.") return FALSE end end return FALSE end Algumas configurações
grouprequired = 4 -- aki séra até o grupo que poderar usar no caso group 4 pra baixo.
jailpos = { x = 1037, y = 1004, z =7 } -- aki séra a posição para aonde o player irar quando for preso.
unjailpos = { x = 1029, y = 1005, z =7 }- -aki séra para aonde ele for quando ele n tiver mais preso, no caso unjail.
Creditos: Gesior.pl EU. Lembre-se eu testei em tibia 8.54 é 8.60 é funcionou perfeitamente !
-
Hadggar recebeu reputação de Cain Jorge em [Sprites] Minato NTO BrasilAinda bem que gostou ! embreve postarei mais .
-
Hadggar recebeu reputação de Cain Jorge em [Sprites] Minato NTO BrasilOpa galera blz , malz sé publiquei na area errada ,-,. hoje vou trazer para vocês as sprites do minato do nto brasil que então foram mt bem elaboradas , eu tirei do meu server para publicar aki para vocês não sei se fiz certo , mais enfim resolvi traze-las para vocês, talvez estarei postano a do madara que tenho e mts outras, acredito que pocas pessoas conseguem as sprites do NTO Brasil é todos preucuram, então vamos la. Aki a imagem das sprites:
Mt Show neh?
Downloads: http://www.4shared.com/rar/Q05kDr7nba/Minato_Outfits_Do_NTO_Brasil.html? Scan: https://www.virustotal.com/pt/file/5167e4544d2b6dc2c892b0bb844d4b6d5da220eff587e66fc3464032777a21a1/analysis/1405371523/ Creditos: ScreMMO (EU) Gostou ? REP+
-
Hadggar deu reputação a Pedro. em [ShowOFF] Remake Evolutions Serverupdatezinho c fotinhas in-game!
-
Hadggar deu reputação a Pedro. em [ShowOFF] Remake Evolutions ServerValeu nenê!
futuramente qndo tiver com 1 maquina, vou tirar fotos in-game!
OLD Hydra
New Hydra
OLD Dragon
New Dragon
-
Hadggar deu reputação a Pedro. em [ShowOFF] Remake Evolutions Serveracho que a unica coisa que sei fazer é mapear mesmo, porque sou um desgraçado ruim da porra em script, sei nem o que é um if pqp!
enfim, curto bastante olds servers tipo Alissow (evolution), Thyrania, SadTeam (karmia), então achei esse projeto do @Comedinha e resolvi edita-lo xd
postarei screens e futuramente pretendo abrir o servidor =)
Rotworm OLD
New Rotworms
OLD Demons
New Demons
OLD Caminho DH
New Caminho DH
-
Hadggar deu reputação a Nogard em Nogard Graphic Gallery
-
Hadggar deu reputação a Nogard em PokémonChangeSlots
-
Hadggar deu reputação a Vodkart em [MODS] [8.6] Fire Storm Event - AutomáticoEvento for fun para colocar no seu ot, quem é atingido pelo fogo morre, o último a sobreviver ganha.
O evento é automático, mas também possui um comando para dar inicio ao evento, só usar /firestart minutos
exemplo: /firestart 1
Fire_Storm_Event.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Fire Storm Event" version="8.6" author="Vodkart" contact="" enabled="yes"> <config name="fire_config"><![CDATA[ Fire = { storages = {172354, 172355}, -- storage Count players = {min = 2, max = 50}, -- min, max players no evento minLevel = 20, -- level minimo para entrar no event rewards = {{2160,10},{2494,1}}, -- premios que vai receber timeToStartEvent = 30, -- segundos para começar o evento CheckTime = 5, -- time to check event teleport = {{x=158, y=53, z=7}, {x=189 , y=58, z=7}}, -- posição do teleport, posição para onde o jogador vai arena = {{x=186,y=54,z=7},{x=193,y=60,z=7}} -- posição começo e final da area } Fire_Days = { ["Monday"] = {"13:00","18:00","20:00","22:00"}, ["Tuesday"] = {"13:00","18:00","20:00","22:00"}, ["Wednesday"] = {"13:00","18:00","20:00","22:00"}, ["Thursday"] = {"13:00","18:00","20:00","22:00"}, ["Friday"] = {"13:00","18:00","20:00","22:00"}, ["Saturday"] = {"13:00","18:00","20:00","22:00"}, ["Sunday"] = {"13:00","18:00","20:00","22:00"} } function removeFireTp() local t = getTileItemById(Fire.teleport[1], 1387).uid return t > 0 and doRemoveItem(t) and doSendMagicEffect(Fire.teleport[1], CONST_ME_POFF) end function ZerarStorFire() setGlobalStorageValue(Fire.storages[1], 0) setGlobalStorageValue(Fire.storages[2], 0) end function getPlayersInFireEvent() local t = {} for _, pid in pairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), Fire.arena[1], Fire.arena[2]) then t[#t+1] = pid end end return t end function getFireRewards(cid, items) local backpack = doPlayerAddItem(cid, 1999, 1) -- backpackID for _, i_i in ipairs(items) do local item, amount = i_i[1],i_i[2] if isItemStackable(item) or amount == 1 then doAddContainerItem(backpack, item, amount) else for i = 1, amount do doAddContainerItem(backpack, item, 1) end end end end function doFireInArea(n) if #getPlayersInFireEvent() > 1 then for i = 1, n do local pos = {x=math.random(Fire.arena[1].x, Fire.arena[2].x), y=math.random(Fire.arena[1].y,Fire.arena[2].y), z=Fire.arena[1].z} local m = getTopCreature(pos).uid doSendDistanceShoot({x = pos.x - math.random(4, 6), y = pos.y - 5, z = pos.z}, pos, CONST_ANI_FIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_HITBYFIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_FIREAREA) if m ~= 0 and isPlayer(m) then doSendMagicEffect(getCreaturePosition(m), CONST_ME_FIREAREA) doCreatureSay(m, "Ooh Burn Burn", TALKTYPE_ORANGE_1) local corpse = doCreateItem(3058, 1, getPlayerPosition(m)) doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(m) .. ". He was killed by Fire Field.") doSendMagicEffect(getPlayerPosition(m), CONST_ME_POFF) doTeleportThing(m, getTownTemplePosition(getPlayerTown(m))) doPlayerSendTextMessage(m, MESSAGE_EVENT_ADVANCE, "[Fire Storm Event] You died burned out.") end end local x = 2700-(200*n) addEvent(doFireInArea, x <= 0 and 500 or x, n+1) elseif #getPlayersInFireEvent() == 1 then local cid = getPlayersInFireEvent()[1] doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) getFireRewards(cid, Fire.rewards) doBroadcastMessage("Fire Storm Event have finished. The winner is ".. getCreatureName(cid).. ". Congratulations.", MESSAGE_EVENT_ADVANCE) ZerarStorFire() else doBroadcastMessage("No one Won the Fire Storm Event.", MESSAGE_EVENT_ADVANCE) ZerarStorFire() end end function CheckFireEvent(delay) if getGlobalStorageValue(Fire.storages[1]) ~= (Fire.players.max+1) then if delay > 0 and getGlobalStorageValue(Fire.storages[1]) < Fire.players.max then doBroadcastMessage("[Fire Stortm Event] Starting in " .. delay .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING) elseif delay == 0 and getGlobalStorageValue(Fire.storages[1]) < Fire.players.min then for _, cid in pairs(getPlayersInFireEvent()) do doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end removeFireTp() doBroadcastMessage("The Fire Storm event could not start because of to few players participating.\n At least " .. Fire.players.min .. " players is needed!", MESSAGE_STATUS_WARNING) ZerarStorFire() elseif delay == 0 and getGlobalStorageValue(Fire.storages[1]) >= Fire.players.min then removeFireTp() doBroadcastMessage("Good Lucky! The event will start on "..Fire.timeToStartEvent.." seconds. get ready!") addEvent(doFireInArea, Fire.timeToStartEvent*1000, 1) end addEvent(CheckFireEvent, 60000, delay-1) end end ]]></config> <globalevent name="Storm_Fire_Start" interval="60" event="script"><![CDATA[ domodlib('fire_config') function onThink(interval, lastExecution) if Fire_Days[os.date("%A")] then local hrs = tostring(os.date("%X")):sub(1, 5) if isInArray(Fire_Days[os.date("%A")], hrs) and getGlobalStorageValue(Fire.storages[2]) <= 0 then local tp = doCreateItem(1387, 1, Fire.teleport[1]) doItemSetAttribute(tp, "aid", 45111) CheckFireEvent(Fire.CheckTime) setGlobalStorageValue(Fire.storages[1], 0) end end return true end]]></globalevent> <event type="login" name="Storm_Fire_Login" event="script"><![CDATA[ domodlib('fire_config') function onLogin(cid) registerCreatureEvent(cid, "FireStormBatle") if isInRange(getPlayerPosition(cid), Fire.arena[1], Fire.arena[2]) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end return true end]]></event> <event type="combat" name="FireStormBatle" event="script"><![CDATA[ domodlib('fire_config') if isPlayer(cid) and isPlayer(target) and isInRange(getPlayerPosition(cid), Fire.arena[1], Fire.arena[2]) then doPlayerSendCancel(cid, "You may not attack this player.") return false end return true ]]></event> <movevent type="StepIn" actionid ="45111" event="script"><![CDATA[ domodlib('fire_config') function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerAccess(cid) > 3 then return doTeleportThing(cid, Fire.teleport[2]) end if getPlayerLevel(cid) < Fire.minLevel then doTeleportThing(cid, fromPosition, true) doPlayerSendCancel(cid, "You need to be at least level " .. Fire.minLevel .. ".") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end if getGlobalStorageValue(Fire.storages[1]) <= Fire.players.max then doTeleportThing(cid, Fire.teleport[2]) setGlobalStorageValue(Fire.storages[1], getGlobalStorageValue(Fire.storages[1])+1) doBroadcastMessage(getPlayerName(cid) .. " entered the fire stortm event! Currently " .. getGlobalStorageValue(Fire.storages[1]) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED) if getGlobalStorageValue(Fire.storages[1]) == Fire.players.max then setGlobalStorageValue(Fire.storages[1], getGlobalStorageValue(Fire.storages[1])+1) removeFireTp() doBroadcastMessage("The event will start on "..Fire.timeToStartEvent.." seconds. get ready!") addEvent(doFireInArea, Fire.timeToStartEvent*1000, 1) end end return true end]]></movevent> <talkaction words="/firestart;!firestart" access="5" event="buffer"><![CDATA[ domodlib('fire_config') if getGlobalStorageValue(Fire.storages[2]) > 0 then doPlayerSendCancel(cid, "The event is already starting.") return true elseif not param or not tonumber(param) then doPlayerSendCancel(cid, "Use only numbers.") return true end local param = tonumber(param) <= 0 and 1 or tonumber(param) local tp = doCreateItem(1387, 1, Fire.teleport[1]) doItemSetAttribute(tp, "aid", 45111) CheckFireEvent(tonumber(param)) setGlobalStorageValue(Fire.storages[1], 0) setGlobalStorageValue(Fire.storages[2], 1) ]]></talkaction> <globalevent name="FireDebug-Start" type="start" event="buffer"><![CDATA[ domodlib('fire_config') ZerarStorFire() return true]]></globalevent> </mod>
A configuração está explicita na lib do mods... valeu!
fire lua.rar
-
Hadggar recebeu reputação de Weslley Kiyo em Servidor Global (o 8.60 mais completo)Muito bom, ótimo trabalho hahaha!
-
Hadggar deu reputação a Weslley Kiyo em Servidor Global (o 8.60 mais completo)Obrigado!
Pessoal, Infelizmente tive uns problemas pessoais e acabei dando uma pausa no projeto, mas o mesmo não acabou.
Estou voltando agora com o projeto e estou acrescentando Archivements ao servidor. Também revisando alguns npcs e arrumando o mapa em sí.
-
Hadggar deu reputação a Weslley Kiyo em Servidor Global (o 8.60 mais completo)Sabe, tenho ódio de ver os servidores anunciando (100% global, o mais completo)... Bem, hoje venho mostrar a vocês, que de fato, o mais atual está por vir. O servidor ainda está em desenvolvimento mas posso dizer que já é o mais completo
Todas as falas dos npcs retirado do tibiawiki (Ao digitar job, name, etc...) Todas as missões e quests retirado do tibiawiki (Com questlog) Servidor 8.60 com mapa 10.37 e muitas adições de áreas da versão 11.0 que possui suporte à 8.60 Todos os monstros atualizados para melhor balanceamento de loot/damage Todas as houses foram refeitas para evitar bugs em paredes e nomes das mesmas.
Imagens \/ \/
"O trabalho é árduo, porém o resultado pode ser gratificante"
-
Hadggar deu reputação a Vodkart em Npc Auction Versão 1.0 [Atualizado]Versões: Foi feito para servidores que não tem o market system, mas funciona desde o 8.54 até 9.6+
Suporta: servidores Sqlite e MySql
Sobre: O Npc basicamente funciona da seguinte maneira, você "deposita" alguns items neste npc e durante "X" dias ele vende para você, claro que o npc irá cobrar "Y" preço pelo serviço...
Para mais informações acessem o link que explica com imagens: http://tibiaking.com...mo-auction-npc/
Basta fazer o download, executar a query que é pedida e depois disso colocar os arquivos em seus respectivas pastas.
##ATUALIZADO Versão 1.0##
- Agora a Lib foi ajustada e bugs removidos
- Itens de type "others" e "ammunition" arrumados
- O Npc agora devolve seus itens quando quiser
- Os itens vão para o depot quando não vende o item
- Nova aba de "all" que mostra todos os itens em uma janela, independente da seleção do tipo de item;
obs: Antes de instalar a lib leia o arquivo txt, porque tem 2 tipos de lib, um é usado 'db.executeQuery' e o outro 'db,query'(fiz isso para o pessoal que não sabe alterar as funções)
Npc Auction 1.0.rar