Postado Julho 13, 2014 10 anos Boa noite Galera Passei a noite passando esse sistema de MOD para Arquivos Separados, Achei alguem erros de cid,pid, varieveis e os concertei. Vamos la: Testado 59x TFS : 0.4 rev 3777 Refazendo o Tutorial *.* Na Pasta LIB Caminha: /data/lib/ Crie um arquivo.lua chamado RushLib.lua e Adicione :Nesse Arquivo Estão as Configurações Apenas Leia os Comentarios inseridos nele. --data/lib function doPlayerRemoveLethalConditions(cid) local tmp = {1, 2, 4, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 32768, 65536} for i = 1, #tmp do if(hasCondition(cid, tmp)) then doRemoveCondition(cid, tmp) end end return true end t = { a = 32145, -- nao modifique se nao souber oq esta fazendo g = 32146, -- nao modifique se nao souber oq esta fazendo l = 32147, -- nao modifique se nao souber oq esta fazendo u = 32148, -- nao modifique se nao souber oq esta fazendo h = 32149, -- nao modifique se nao souber oq esta fazendo wv = 32150, -- nao modifique se nao souber oq esta fazendo c = 0, -- nao modifique se nao souber oq esta fazendo q = "Rush Event has been started! Enjoy and have fun!", --mensagem que vai ser exibida quando o evento começar f = 5447, -- nao modifique se nao souber oq esta fazendo f_1 = 5448, -- nao modifique se nao souber oq esta fazendo f_2 = 5449, -- nao modifique se nao souber oq esta fazendo d_1 = {x = 986, y = 1116, z = 6}, -- posição do tempo vermelho ao começar evento d_2 = {x = 986, y = 1116, z = 6}, -- posição do tempo azul ao começar evento x = "Event won't start bacause too few people were willing to participate", --mensagem que vai ser exibida quando o evento não começar w = {x = 986, y = 1114, z = 7}, --posição da sala de espera, onde os players vão ficar antes de começar lvl = 100, --level minimo para participar do evento v = 25, --a quantidade de frags que será necessária para o time ganhar mn = 4, --quantidade minima de players para começar o evento m = 40, --maximo de players dentro do evento o = "Event was completed, RED TEAM has won Rush Event!", --mensagem exibida quando o time vermelho ganhar y = "Event was completed, BLUE TEAM has won Rush Event!", --mensagem exibida quando o time azul ganhar i_1 = 2160, --id do premio (agora é crystal coin = 2160) i_2 = 10, --quantidade do premio (agora esta 10 crystal coins) t = 5, --tempo para começar o evento (agora esta is 5 minutos) r = 1 --tempo em que os resultados da batalha serão mostrados aos players (agora esta 1 minutos) } Em Creaturescripts/ No Arquivo CreatureScripts.xml Adicione as Tags <event type="combat" name="RushCombat" event="script" value="RushCreature.lua"/> <event type="attack" name="RushAttack" event="script" value="RushCreature.lua"/> <event type="preparedeath" name="RushDead" event="script" value="RushCreature.lua"/> <event type="outfit" name="RushOutfit" event="script" value="RushCreature.lua"/> Em CreatureScripts/Scripts Crie um Arquivo.lua e renomeie para RushCreature.lua e Adicione: --creature/scripts/login.lua --registerCreatureEvent(cid, "RushCombat") --registerCreatureEvent(cid, "RushAttack") --registerCreatureEvent(cid, "RushDead") --registerCreatureEvent(cid, "RushOutfit") --creaturescripts/creature.xml --<event type="combat" name="RushCombat" event="script" value="RushCreature.lua"/> --<event type="attack" name="RushAttack" event="script" value="RushCreature.lua"/> --<event type="preparedeath" name="RushDead" event="script" value="RushCreature.lua"/> --<event type="outfit" name="RushOutfit" event="script" value="RushCreature.lua"/> function onCombat(cid, target) if(getGlobalStorageValue(t.a) == 1) then if isPlayer(cid) and isPlayer(target) then if getPlayerStorageValue(cid, t.f) == 1 and getPlayerStorageValue(target, t.f) == 1 then if getPlayerStorageValue(cid, t.f_1) == getPlayerStorageValue(target, t.f_1) then return doPlayerSendCancel(cid, "Sorry, you cannot attack your own team.") and false end end end end return true end function onOutfit(cid, old, current) if(getGlobalStorageValue(t.a) == 1) then if getPlayerGroupId(cid) > 3 then return true end if getPlayerStorageValue(cid, t.h) == 0 then if getPlayerStorageValue(cid, t.f) > -1 then doPlayerSendCancel(cid, "You cannot change your outfit during the event.") return false end end end return true end function onAttack(cid, target) if(getGlobalStorageValue(t.a) == 1) then if isPlayer(cid) and isPlayer(target) then if getPlayerStorageValue(cid, t.f) == 1 and getPlayerStorageValue(target, t.f) == 1 then if getPlayerStorageValue(cid, t.f_1) == getPlayerStorageValue(target, t.f_1) then return doPlayerSendCancel(cid, "Sorry, you cannot attack your own team.") and false end end end end return true end function onPrepareDeath(cid, deathList) if(not isPlayer(cid)) then return true end if getGlobalStorageValue(t.a) == 1 then local strings = {""} local j, position, corpse = 1, 1, 0 for _, pid in ipairs(deathList) do if isCreature(pid) == true then strings[position] = j == 1 and "" or strings[position] .. ", " strings[position] = strings[position] .. getCreatureName(pid) .. "" j = j + 1 else strings[position] = j == 1 and "" or strings[position] .. ", " strings[position] = strings[position] .."a field item" j = j + 1 end end for i, str in ipairs(strings) do if(str:sub(str:len()) ~= ",") then str = str .. "." end desc = "You recognize " desc = desc .. "" .. getCreatureName(cid) .. ". He was killed by " .. str end if(getPlayerSex(cid) == 1) then corpse = doCreateItem(3058, getCreaturePosition(cid)) else corpse = doCreateItem(3065, getCreaturePosition(cid)) end doItemSetAttribute(corpse, "description", desc) if((getPlayerStorageValue(cid, t.g) % 2) == 1) then setGlobalStorageValue(t.u, getGlobalStorageValue(t.u)+1) else setGlobalStorageValue(t.l, getGlobalStorageValue(t.l)+1) end local red = getGlobalStorageValue(t.l) local blue = getGlobalStorageValue(t.u) if blue < t.v or red < t.v then if(isPlayer(cid) == false) then return true end if((getPlayerStorageValue(cid, t.g) % 2) == 1) then doTeleportThing(cid, t.d_1) doSendMagicEffect(getCreaturePosition(cid), 10) doCreatureAddHealth(cid, getCreatureMaxHealth(cid), MAGIC_EFFECT_UNKNOWN, COLOR_UNKNOWN, true) doCreatureAddMana(cid, getCreatureMaxMana(cid)) doPlayerRemoveLethalConditions(cid) if getCreatureSkullType(cid) == SKULL_WHITE then doCreatureSetSkullType(cid, 0) end else doTeleportThing(cid, t.d_2) doSendMagicEffect(getCreaturePosition(cid), 10) doCreatureAddHealth(cid, getCreatureMaxHealth(cid), MAGIC_EFFECT_UNKNOWN, COLOR_UNKNOWN, true) doCreatureAddMana(cid, getCreatureMaxMana(cid)) doPlayerRemoveLethalConditions(cid) if getCreatureSkullType(cid) == SKULL_WHITE then doCreatureSetSkullType(cid, 0) end end end if blue >= t.v then doBroadcastMessage(t.y, MESSAGE_STATUS_WARNING) setGlobalStorageValue(t.h, 1) for _, pid in ipairs(getPlayersOnline()) do if(getPlayerStorageValue(pid, t.f_1) == 1) then doPlayerAddItem(pid, i_1, i_2) end end elseif red >= t.v then doBroadcastMessage(t.o, MESSAGE_STATUS_WARNING) setGlobalStorageValue(t.h, 1) for _, pid in ipairs(getPlayersOnline()) do if(getPlayerStorageValue(pid, t.f_2) == 1) then doPlayerAddItem(pid, i_1, i_2) end end end if getGlobalStorageValue(t.h) == 1 then setGlobalStorageValue(t.a, 0) setGlobalStorageValue(t.h, 0) setGlobalStorageValue(t.wv, -1) setPlayerStorageValue(cid, t.f, -1) setPlayerStorageValue(cid, t.g, 0) setPlayerStorageValue(cid, t.l, 0) setPlayerStorageValue(cid, t.u, 0) setPlayerStorageValue(cid, t.f_1, -1) setPlayerStorageValue(cid, t.f_2, -1) setPlayerStorageValue(cid, t.h, -1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), true) doSendMagicEffect(getCreaturePosition(cid), 10) doCreatureAddHealth(cid, getCreatureMaxHealth(cid), MAGIC_EFFECT_UNKNOWN, COLOR_UNKNOWN, true) doCreatureAddMana(cid, getCreatureMaxMana(cid)) doPlayerRemoveLethalConditions(cid) for _, pid in ipairs(getPlayersOnline()) do if(getPlayerStorageValue(pid, t.f_1) == 1 or getPlayerStorageValue(pid, t.f_2) == 1) then setPlayerStorageValue(pid, t.f, -1) doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid))) doSendMagicEffect(getCreaturePosition(pid), CONST_ME_TELEPORT) setPlayerStorageValue(pid, t.g, 0) setPlayerStorageValue(pid, t.l, 0) setPlayerStorageValue(pid, t.u, 0) setPlayerStorageValue(pid, t.f_1, -1) setPlayerStorageValue(pid, t.f_2, -1) setPlayerStorageValue(pid, t.h, -1) doCreatureAddHealth(pid, getCreatureMaxHealth(pid), MAGIC_EFFECT_UNKNOWN, COLOR_UNKNOWN, true) doCreatureAddMana(pid, getCreatureMaxMana(pid)) doPlayerRemoveLethalConditions(pid) end end return false end return false end return true end Em CreatureScripts/Scripts/ Localize o Arquivo Chamado Login.lua abra-o e Adiciona antes do RETURN TRUE o seguinte : registerCreatureEvent(cid, "RushCombat") registerCreatureEvent(cid, "RushAttack") registerCreatureEvent(cid, "RushDead") registerCreatureEvent(cid, "RushOutfit") Em GlobalEvents/ Abra o Arquivo chamado GlobalEvents.xml e Adicione s Seguinte Tag : <globalevent name="Recognition" interval="1500" event="script" value="RushGlobalRecognition.lua"/> Em CreatureScripts/Scripts/ Crie um arquivo.lua chamado RushGlobalRecognition.lua e Adicione : --globalevents/globalevents.xml --<globalevent name="Recognition" interval="150000" event="script" value="RushGlobalRecognition.lua"/> function onThink(interval, lastExecution, thinkInterval) if(getGlobalStorageValue(t.a) == 1) then for _, pid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(pid, t.f) == 1 then if(getPlayerStorageValue(pid, t.f_1) == 0) then doSendAnimatedText(getCreaturePosition(pid), "RED TEAM", TEXTCOLOR_RED) elseif(getPlayerStorageValue(pid, t.f_1) == 1) then doSendAnimatedText(getCreaturePosition(pid), "BLUE TEAM", TEXTCOLOR_LIGHTBLUE) end end end return true end return true end Em TalkActions/ Abra o TalkActions.xml e Adicione as Seguintes Tags: <talkaction words="!start" event="script" access="5" value="RushTalkOpen.lua"/> <talkaction words="!rush" event="script" value="RushTalkJoin.lua"/> Em TalkActions/Scripts/ Crie um arquivo.lua chamado RushTalkOpen e Adicione : --globalevents/globalevents.xml --<globalevent name="RushStart" time="15:53" event="script" value="RushGlobalOpen.lua"/> function onTime(interval, lastExecution) setGlobalStorageValue(t.g, 1) setGlobalStorageValue(t.u, 0) setGlobalStorageValue(t.l, 0) setGlobalStorageValue(t.a, 1) setGlobalStorageValue(t.c, 0) setGlobalStorageValue(t.wv, 0) doBroadcastMessage("Attention! Immediately register to Rush Event, event will start for ".. t.t .." minutes. All players can join to event typing this command: !rush", MESSAGE_STATUS_WARNING) addEvent(function() doBroadcastMessage("Rush event, started in 2 minutes. If you want to join, type this command: !rush", MESSAGE_STATUS_WARNING) end, (t.t - 2) * 1000 * 60) addEvent(function() doBroadcastMessage("Rush event, started in a minute. If you want to join, type this command: !rush", MESSAGE_STATUS_WARNING) end, (t.t - 1) * 1000 * 60) addEvent(start, t.t * 1000 * 60, cid) end function results() if(getGlobalStorageValue(t.a) == 1) then local red = getGlobalStorageValue(t.l) local blue = getGlobalStorageValue(t.u) doBroadcastMessage("Rush Events, results:\nRed Team scored: ".. red .." frags.\nBlue Team scored: ".. blue .." frags.\nMatch is under way to ".. t.v .." frags.", MESSAGE_STATUS_WARNING) addEvent(results, t.r * 1000 * 60) end end function start(cid) if(getGlobalStorageValue(t.a) == 1 and getGlobalStorageValue(t.c) >= t.mn) then doBroadcastMessage(t.q, MESSAGE_STATUS_WARNING) setGlobalStorageValue(t.wv, 1) addEvent(results, t.r * 1000 * 60) for _, pid in ipairs(getPlayersOnline()) do local myOutfit = getCreatureOutfit(pid) local red = {lookType = myOutfit.lookType, lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94, lookTypeEx = 0, lookAddons = myOutfit.lookAddons} local blue = {lookType = myOutfit.lookType, lookHead = 86, lookBody = 86, lookLegs = 86, lookFeet = 86, lookTypeEx = 0, lookAddons = myOutfit.lookAddons} if getPlayerStorageValue(pid, t.f) == 1 then doCreatureAddHealth(pid, getCreatureMaxHealth(pid)) doCreatureAddMana(pid, getCreatureMaxMana(pid)) if((getPlayerStorageValue(pid, t.g) % 2) == 1) then doCreatureChangeOutfit(pid, red) setPlayerStorageValue(pid, t.h, 0) doTeleportThing(pid, t.d_1) setPlayerStorageValue(pid, t.f, 1) setPlayerStorageValue(pid, t.f_1, 0) setPlayerStorageValue(pid, t.f_2, 1) doSendMagicEffect(getCreaturePosition(pid), 10) doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, "You are in RED TEAM!\nThis battle will continue up to ".. t.v .." frags!") else doCreatureChangeOutfit(pid, blue) setPlayerStorageValue(pid, t.h, 0) doTeleportThing(pid, t.d_2) setPlayerStorageValue(pid, t.f, 1) setPlayerStorageValue(pid, t.f_1, 1) setPlayerStorageValue(pid, t.f_2, 0) doSendMagicEffect(getCreaturePosition(pid), 10) doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, "You are in BLUE TEAM!\nThis battle will continue up to ".. t.v .." frags!") end end end elseif(getGlobalStorageValue(t.c) < t.mn) then doBroadcastMessage(t.x, MESSAGE_STATUS_WARNING) setGlobalStorageValue(t.a, 0) for _, pid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(pid, t.f) == 1 then setPlayerStorageValue(pid, t.f, -1) doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid))) doSendMagicEffect(getCreaturePosition(pid), CONST_ME_TELEPORT) end end end end Em TalkActions/Scripts/ Crie um arquivo.lua chamado RushTalkJoin.lua e adicione : --talkactions/talkactions.xml --<talkaction words="!rush" event="script" value="RushTalkJoin.lua"/> function onSay(cid, words, param, channel) if getGlobalStorageValue(t.a) == 1 and getGlobalStorageValue(t.wv) ~= 1 then if getPlayerLevel(cid) >= t.lvl then if getPlayerStorageValue(cid, t.f) == -1 then if getTilePzInfo(getPlayerPosition(cid)) == true then if getGlobalStorageValue(t.c) < t.m then setGlobalStorageValue(t.c, getGlobalStorageValue(t.c)+1) if getGlobalStorageValue(t.c) == t.m then doPlayerSendCancel(cid, "Event is full [" .. getGlobalStorageValue(t.c) .. " players]!") else doBroadcastMessage("" .. getPlayerName(cid) .. " has joined to Rush Event! Actually we have: " .. getGlobalStorageValue(t.c) .. " players!", 19) end setPlayerStorageValue(cid, t.f, 1) setPlayerStorageValue(cid, t.h, -1) doTeleportThing(cid, t.w) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT) setPlayerStorageValue(cid, t.g, getGlobalStorageValue(t.g)) setGlobalStorageValue(t.g, tonumber(getGlobalStorageValue(t.g))+1) else doPlayerSendCancel(cid, "Event is full [" .. getGlobalStorageValue(t.c) .. " players]!") return true end else doPlayerSendCancel(cid, "You must be in protection zone.") return true end else doPlayerSendCancel(cid, "You are already registered in this event.") return true end else doPlayerSendCancel(cid, "Your level is too low to participate in this event.") return true end else doPlayerSendCancel(cid, "At the moment there are no records for this event.") return true end return true end Prontinho sistema Instalado ! Apenas Configure as Variaveis no Arquivo Rushlib.lua, o primeiro do Tutorial. Comando para Abrir o Evento !start Comando para Participar do Evento !rush OBSERVAÇÃO: NUNCA FECHAR O SERVIDOR COM O EVENTO ABERTO, SEMPRE ESPERE O EVENTO FINALIZAR CASO FAZER ISSO BUGARÁ AS STORAGES. Creditos ? Eu Achei em outro Forum e o Mod estava falando que era do ChaitoSoft não tenho Certeza mais Segue. ChaitoSoft ( Provavelmente Roksas) Emerson = 40% - Pois eu Achei Alguns Bugs e Removi e Por Ter Feitos em Varios Arquivos. MAP:https://www.mediafire.com/?cxoqqth3s9heqzx SCAN:https://www.virustotal.com/en/file/279eee03261c0d329177ee5ad54e3a746da366fd5a3da491daeaf3204f6e3315/analysis/1405238306/ Map.rar Editado Julho 14, 2014 10 anos por Emersonssss (veja o histórico de edições) Skype : emersonaaron Se Te ajudei não me REP+ isso não muda nada! kkkkkkkkkkkk
Postado Julho 13, 2014 10 anos Retire os diretórios de instalação dentro dos codes, vai ter gente não sabendo instalar e colocando junto. :angry2: #Clique na imagem#
Postado Julho 13, 2014 10 anos Autor um bug é q ele não conta os frags . Revise os Codigos e os diretorios pois eu testei muitas vezes e funcionou perfeitamente, você deixou de instalar algo! Retire os diretórios de instalação dentro dos codes, vai ter gente não sabendo instalar e colocando junto. :angry2: Isso já não tenho nada ver, ja fiz isso para que quando a pessoa copiar saber os xml Skype : emersonaaron Se Te ajudei não me REP+ isso não muda nada! kkkkkkkkkkkk
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.