Ir para conteúdo

Featured Replies

Postado

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 por Emersonssss (veja o histórico de edições)

Skype : emersonaaron Se Te ajudei não me REP+ isso não muda nada! kkkkkkkkkkkk

  • Respostas 33
  • Visualizações 3.1k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

Postado
  • 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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo