Secret Experience

Secret Experience (https://secretexperience.net/index.php)
-   [Lineage] Java Mods (https://secretexperience.net/forumdisplay.php?f=636)
-   -   [L2JFree] Vote para o próximo Auto Event (https://secretexperience.net/showthread.php?t=10311)

KaL 02-07-2009 10:10 PM

Vote para o próximo Auto Event
 
Este Mod habilita a votação dos players para qual será o próximo Auto Event ( TvT ou CTF ). Não há necessidade de alteração no mesmo.

Vá na pasta src/main/java/com/l2jfree/gameserver/model/entity/events e crie o arquivo EventVoteVariable.java
Código:

/*
 * This program is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later
 * version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program. If not, see <http://www.gnu.org/licenses/>.
 */
package com.l2jfree.gameserver.model.entity.events;


/**
 *
 * @author Rizel
 *
 */

public class EventVoteVariable
{
        public int                                                                _voteCountCTF = 0;
        public int                                                                _voteCountTvT = 0;
        private int                                                                _voteCount = 0;
       
        public int getVoteCount(String name)
        {
               
                if (name == "tvt")
                {
                        _voteCount = _voteCountTvT;
                }
               
                if (name == "ctf")
                {
                        _voteCount = _voteCountCTF;
                }
               
                return  _voteCount;
        }
       
        public void increaseVoteCount(String name)
        {
                if (name == "tvt")
                {
                        _voteCountTvT = _voteCountTvT+1;
                }
               
                if (name == "ctf")
                {
                        _voteCountCTF = _voteCountCTF+1;
                }
        }
}

Ainda nesta pasta, crie o arquivo StartEvent.java
Código:

/*
 * This program is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later
 * version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program. If not, see <http://www.gnu.org/licenses/>.
 */
package com.l2jfree.gameserver.model.entity.events;


import com.l2jfree.tools.random.Rnd;
import com.l2jfree.gameserver.model.entity.events.TvT;
import com.l2jfree.gameserver.model.entity.events.CTF;
import com.l2jfree.gameserver.model.entity.events.EventVoteVariable;
/**
 *
 * @author Rizel
 *
 */

public class StartEvent
{
       
        public static void startEvent()
        {
                EventVoteVariable e = new EventVoteVariable();
               
               
                if (e.getVoteCount("tvt") > e.getVoteCount("ctf"))
                {
                TvT.loadData();
                TvT.autoEvent();
                }

                if (e.getVoteCount("ctf") > e.getVoteCount("tvt"))
                {
                CTF.loadData();
                CTF.autoEvent();
                }

                if (e.getVoteCount("tvt") == e.getVoteCount("ctf"))
                {
                        if (Rnd.get(1) == 1)
                                {
                                TvT.loadData();
                                TvT.autoEvent();
                                }
                        else
                                {
                                CTF.loadData();
                                CTF.autoEvent();
                                }
        }
        }
}

Vá na pasta src/main/java/com/l2jfree/gameserver/handler/voicedcommandhandler e crie o arquivo EventVote.java

Código:

/*
 * This program is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later
 * version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program. If not, see <http://www.gnu.org/licenses/>.
 */
package com.l2jfree.gameserver.handler.voicedcommandhandlers;


import com.l2jfree.Config;
import com.l2jfree.gameserver.handler.IVoicedCommandHandler;
import com.l2jfree.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfree.gameserver.model.entity.events.EventVoteVariable;
import java.util.StringTokenizer;
/**
 *
 * @author Rizel
 */
public class EventVote implements IVoicedCommandHandler
{
        private static final String[] VOICED_COMMANDS = {"vote_tvt", "vote_ctf"};
       
        /**
        *
        * @see net.sf.l2j.gameserver.handler.IVoicedCommandHandler#useVoicedCommand(java.lang.String, net.sf.l2j.gameserver.model.actor.instance.L2PcInstance, java.lang.String)
        */
        public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
        {
                EventVoteVariable e = new EventVoteVariable();
                if(command.startsWith("vote_tvt"))
            {
                               
                                if (activeChar._voteEvent == false)
                                {
                                        e.increaseVoteCount("tvt");
                                        activeChar._voteEvent = true;
                                        activeChar.sendMessage("You succesfully voted for the TvT event. TvT: " + e.getVoteCount("tvt") + " CTF: " + e.getVoteCount("ctf") + ".");
                                }
                                else
                                {
                                        activeChar.sendMessage("You have already voted for an event.");       
                                }
                                return true;
                               
            }
               
               
                if(command.startsWith("vote_ctf"))
            {
                                if (activeChar._voteEvent == false)
                                {
                                        e.increaseVoteCount("ctf");
                                        activeChar._voteEvent = true;
                                        activeChar.sendMessage("You succesfully voted for the CTF event. TvT: " + e.getVoteCount("tvt") + " CTF: " + e.getVoteCount("ctf") + ".");
                                }
                               
                                else
                                {
                                        activeChar.sendMessage("You have already voted for an event.");       
                                }
                                return true;
            }
                               
                               

                return false;
                }
               
               
       
       
        /**
        *
        * @see net.sf.l2j.gameserver.handler.IVoicedCommandHandler#getVoicedCommandList()
        */
        public String[] getVoicedCommandList()
        {
                return VOICED_COMMANDS;
        }
}

Vá na pasta src/main/java/com/l2jfree/gameserver/handler e abra o arquivo VoicedCommandHandler.java e adicione esta linha :

Código:

_datatable = new FastMap<String, IVoicedCommandHandler>();
                registerVoicedCommandHandler(new CastleDoors());
                registerVoicedCommandHandler(new Hellbound());
                registerVoicedCommandHandler(new Banking());
+                registerVoicedCommandHandler(new EventVote());

Vá na pasta src/main/java/com/l2jfree/gameserver/model/entity/events/TvT.java e adicione esta linha :

Código:

public static void cleanTvT()
        {
                _log.info("TvT : Cleaning players.");
                for (L2PcInstance player : _players)
                {
                        if (player != null)
                        {
                                removePlayer(player);
                                if (_savePlayers.contains(player.getName()))
                                        _savePlayers.remove(player.getName());
                                player._inEventTvT = false;
+                                player._voteEvent = false;
                        }
                }

Vá na pasta src/main/java/com/l2jfree/gameserver/model/entity/CTF.java e adicione esta linha :

Código:

public static void cleanCTF()
        {
                _log.info("CTF : Cleaning players.");
                for (L2PcInstance player : _players)
                {
                        if (player != null)
                        {
                                if (player._haveFlagCTF)
                                        removeFlagFromPlayer(player);
                                else
                                        player.getInventory().destroyItemByItemId("", CTF._FLAG_IN_HAND_ITEM_ID, 1, player, null);
                                player._haveFlagCTF = false;
                                removePlayer(player);
                                if (_savePlayers.contains(player.getName()))
                                        _savePlayers.remove(player.getName());
                                player._inEventCTF = false;
+                                player._voteEvent = false;
                        }
                }

Vá na pasta src/main/java/com/l2jfree/gameserver/model/actor/instance/L2PcInstance.java e adicione esta linha :

Código:

        /** TvT Engine parameters */
        public String                                                        _teamNameTvT, _originalTitleTvT;
        public int                                                                _originalNameColorTvT, _countTvTkills, _countTvTdies, _originalKarmaTvT;
        public boolean                                                        _inEventTvT                                = false;
+        public boolean                                                        _voteEvent                                = false;

Datapack :
Vá na pasta gameserver/data/cron e crie o arquivo nextevent.py
Código:

import sys
from com.l2jfree.gameserver.model.entity.events import StartEvent
StartEvent.startEvent()

Agora abra o database, vá na tabela globaltasks e crie esta nova linha :
Código:

4        jython        TYPE_FIXED_SHEDULED          0        300000        3600000        nextevent.py
Obs.: Onde está azul, é o tempo de duração da votação.
Onde está verde, é o intervalo entre uma votação e outra.
Ambos setados em Milisegundos.

Como funciona o Mod :

InGame, o player digita .vote_tvt para votar no TvT, ou .vote_ctf para votar no CTF.
Após o tempo de votação ( azul ), será feita a contagem dos votos, e o evento vencedor será iniciado.
Em caso de empate, o evento é sorteado.

Creditos : Rizel

Aquilis 29-11-2009 12:40 AM

Funciona msm?

l2blackice 30-11-2009 02:37 PM

sera que vc nao tem para l2jarchid

vicfelipe 29-01-2010 10:27 AM

Já utilizei em packs apartir do emu e funciona, creio que funcione também no archid.


Horários baseados na GMT -3. Agora são 01:11 AM.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.