Перейти к содержанию
Авторизация  
Space

Gvg Эвент Trasken Tauti

Рекомендуемые сообщения

Всем привет. Настроил все эвенты в конфиге Team vs Team, CTF и др. но не нашёл настройку GvG Эвента.

Настройка в ядре? Или я ошибаюсь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем привет. Настроил все эвенты в конфиге Team vs Team, CTF и др. но не нашёл настройку GvG Эвента.

Настройка в ядре? Или я ошибаюсь?

сборка Trasken?

скорее всего конфиг ГвГ выведен в event.ini (или что то подобное)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да сборка Trasken Tauti. Увы нету в конфиге.

 

# -------------------------------------------------------------------------------------------------------------------

# Coffer Of Shadows

# -------------------------------------------------------------------------------------------------------------------

# Рейт на цену сундучков (по умолчанию для х1 - 50к)

CofferOfShadowsPriceRate = 1.

# Рейт на награды, вещественное число (раньше было эквивалентно RateDropItems)

CofferOfShadowsRewardRate = 1.

 

# -------------------------------------------------------------------------------------------------------------------

# Мастер заточки

# -------------------------------------------------------------------------------------------------------------------

# Шанс заточки Staff of Master Yogi

MasterYogiEnchantChance = 66

# Максимальная заточка Staff of Master Yogi

MasterYogiEnchantMaxWeapon = 28

# Безопасная заточка Staff of Master Yogi

MasterYogiSafeEnchant = 3

 

# -------------------------------------------------------------------------------------------------------------------

# April Fool's

# -------------------------------------------------------------------------------------------------------------------

# Шанс дропа веспер хербов (по умолчанию 50 - 5%)

AprilFollsDropChance = 50

 

# -------------------------------------------------------------------------------------------------------------------

# Последний герой

# -------------------------------------------------------------------------------------------------------------------

# Включен ли эвент

LastHeroEnabled=true

# Награда - ID вещи

LastHero_bonus_id = 4037

# Количество вещей за каждого убитого

# Если число не целое, то при выдаче награды производится округление в большую сторону.

LastHero_bonus_count = 1.

# Домножать на лвл убитого?

LastHero_rate = True

# Количество вещей, получаемых выжившим(ми) чаром(ами) по окончании эвента

LastHero_bonus_count_final = 5.

# Домножать на лвл награждаемого?

LastHero_rate_final = True

# Время до старта

LastHero_time = 10

# Шанс запуска, проверяется каждый час

LastHero_ChanceToStart = 20

 

# -------------------------------------------------------------------------------------------------------------------

# Команда против команды

# -------------------------------------------------------------------------------------------------------------------

# Включен ли эвент

TvTEnabled=true

# ID вещи за каждого убитого

TvT_bonus_id = 4037

# Количество вещи за каждого убитого

# Если число не целое, то при выдаче награды производится округление в большую сторону.

TvT_bonus_count = 2.

# Домножать на лвл чара?

TvT_rate = true

# Время до старта

TvT_time = 10

# Шанс запуска, проверяется каждый час

TvT_ChanceToStart = 20

 

# -------------------------------------------------------------------------------------------------------------------

# Захват флага

# -------------------------------------------------------------------------------------------------------------------

# Включен ли эвент

CtFEnabled=true

# ID вещи за каждого убитого

CtF_bonus_id = 57

# Количество вещи за каждого убитого

# Если число не целое, то при выдаче награды производится округление в большую сторону.

CtF_bonus_count = 1.

# Домножать на лвл чара?

CtF_rate = false

# Время до старта

CtF_time = 5

# Шанс запуска, проверяется каждый час

CtF_ChanceToStart = 15

 

# -------------------------------------------------------------------------------------------------------------------

# Эвент с тыквами

# -------------------------------------------------------------------------------------------------------------------

# Шанс дропа пыльцы

TFH_POLLEN_CHANCE = 20.

 

# -------------------------------------------------------------------------------------------------------------------

# Медальки

# -------------------------------------------------------------------------------------------------------------------

# Шанс дропа простых медалек

MEDAL_CHANCE = 10.

# Щанс дропа сверкающих медалек

GLITTMEDAL_CHANCE = 0.1

 

# -------------------------------------------------------------------------------------------------------------------

# День L2

# -------------------------------------------------------------------------------------------------------------------

 

# Шанс выпадения букв, double, по умолчанию = 1.

L2DAY_LETTER_CHANCE = 1.

 

# -------------------------------------------------------------------------------------------------------------------

# День Святого Валентина

# -------------------------------------------------------------------------------------------------------------------

# Шанс выпадения сердечек, double, по умолчанию 5. = 5%

EVENT_CHANGE_OF_HEART_CHANCE = 5.

 

# -------------------------------------------------------------------------------------------------------------------

# Задания .gettask

# -------------------------------------------------------------------------------------------------------------------

BountyHuntersEnabled = false

 

# -------------------------------------------------------------------------------------------------------------------

# Saving Snowman

# -------------------------------------------------------------------------------------------------------------------

# Стоимость участия в лотерее, для х1 рекомендуется цена в 50к аден.

SavingSnowmanLoteryPrice = 50000

# Вероятность появления санты на санях (целое число)

# по умолчанию 2/1000 - санта появляется на каждом 500м мобе.

# 1000 - 100% шанс

SavingSnowmanRewarderChance = 2

 

# -------------------------------------------------------------------------------------------------------------------

# 8 Марта

# -------------------------------------------------------------------------------------------------------------------

# Шанс дропа частей для крафта (по умолчанию 10 = 1%)

March8DropChance = 10.

# Рейт стоимости рецептов. По умолчанию: 50к аден для х1

March8PriceRate = 1.

 

# -------------------------------------------------------------------------------------------------------------------

# Trick Of Transmutation

# -------------------------------------------------------------------------------------------------------------------

# Шанс дропа ключей с мобов (по умолчанию 10. = 1%)

TRICK_OF_TRANS_CHANCE = 10.

 

 

Где может находится еще настройка?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот нашёл тут небольшую настройку:

 

D:\server\gameserver\data\scripts\events\GvG

 

файл GvG.java

 

 

package events.GvG;

 

import instances.GvGInstance;

 

import trs.commons.dbutils.DbUtils;

import trs.commons.lang.reference.HardReference;

import trs.commons.lang.reference.HardReferences;

import trs.commons.threading.RunnableImpl;

import trs.commons.util.Rnd;

 

import trs.gameserver.Announcements;

import trs.gameserver.ThreadPoolManager;

import trs.gameserver.data.xml.holder.InstantZoneHolder;

import trs.gameserver.data.xml.holder.ResidenceHolder;

import trs.gameserver.database.DatabaseFactory;

import trs.gameserver.instancemanager.ServerVariables;

import trs.gameserver.model.general.Player;

import trs.gameserver.model.base.TeamType;

import trs.gameserver.model.entity.olympiad.Olympiad;

import trs.gameserver.model.entity.residence.Castle;

import trs.gameserver.scripts.Functions;

import trs.gameserver.scripts.ScriptFile;

import trs.gameserver.templates.InstantZone;

import trs.gameserver.utils.Location;

 

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

 

import java.sql.Connection;

import java.sql.PreparedStatement;

 

import java.util.Calendar;

import java.util.List;

import java.util.concurrent.CopyOnWriteArrayList;

import java.util.concurrent.ScheduledFuture;

 

/**

* Глобальный класс предварительного этапа GvG турнира

*

* @author pchayka

*/

public class GvG extends Functions implements ScriptFile

{

private static final Logger _log = LoggerFactory.getLogger(GvG.class);

public static final Location TEAM1_LOC = new Location(139736, 145832, -15264); // Team location after teleportation

public static final Location TEAM2_LOC = new Location(139736, 139832, -15264);

public static final Location RETURN_LOC = new Location(43816, -48232, -822);

public static final int[] everydayStartTime =

{

21, 30, 00

}; // hh mm ss

private static boolean _active = false;

private static boolean _isRegistrationActive = false;

private static int _minLevel = 1;

private static int _maxLevel = 99;

private static int _groupsLimit = 100; // Limit of groups can register

private static int _minPartyMembers = 2; // self-explanatory

private static long regActiveTime = 10 * 60 * 1000L; // Timelimit for registration

private static ScheduledFuture<?> _globalTask;

private static ScheduledFuture<?> _regTask;

private static ScheduledFuture<?> _countdownTask1;

private static ScheduledFuture<?> _countdownTask2;

private static ScheduledFuture<?> _countdownTask3;

private static List<HardReference<Player>> leaderList = new CopyOnWriteArrayList<HardReference<Player>>();

 

public static class RegTask extends RunnableImpl

{

@Override

public void runImpl() throws Exception

{

prepare();

}

}

 

public static class Countdown extends RunnableImpl

{

int _timer;

 

public Countdown(int timer)

{

_timer = timer;

}

 

@Override

public void runImpl() throws Exception

{

Announcements.getInstance().announceToAll("GvG: До конца приема заявок на турнир осталось " + Integer.toString(_timer) + " мин.");

}

}

 

@Override

public void onLoad()

{

_log.info("Loaded Event: GvG");

initTimer();

}

 

@Override

public void onReload()

{

}

 

@Override

public void onShutdown()

{

}

 

private static void initTimer()

{

long day = 24 * 60 * 60 * 1000L;

Calendar ci = Calendar.getInstance();

 

ci.set(Calendar.HOUR_OF_DAY, everydayStartTime[0]);

ci.set(Calendar.MINUTE, everydayStartTime[1]);

ci.set(Calendar.SECOND, everydayStartTime[2]);

 

long delay = ci.getTimeInMillis() - System.currentTimeMillis();

 

if (delay < 0)

{

delay = delay + day;

}

 

if (_globalTask != null)

{

_globalTask.cancel(true);

}

 

_globalTask = ThreadPoolManager.getInstance().scheduleAtFixedRate(new Launch(), delay, day);

}

 

public static class Launch extends RunnableImpl

{

@Override

public void runImpl()

{

activateEvent();

}

}

 

private static boolean canBeStarted()

{

for (Castle c : ResidenceHolder.getInstance().getResidenceList(Castle.class))

{

if ((c.getSiegeEvent() != null) && c.getSiegeEvent().isInProgress())

{

return false;

}

}

 

return true;

}

 

private static boolean isActive()

{

return _active;

}

 

public static void activateEvent()

{

if (!isActive() && canBeStarted())

{

_regTask = ThreadPoolManager.getInstance().schedule(new RegTask(), regActiveTime);

 

if (regActiveTime > 2 * 60 * 1000L) // display countdown announcements only when timelimit for registration is more than 3 mins

{

if (regActiveTime > 5 * 60 * 1000L)

{

_countdownTask3 = ThreadPoolManager.getInstance().schedule(new Countdown(5), regActiveTime - 300 * 1000);

}

 

_countdownTask1 = ThreadPoolManager.getInstance().schedule(new Countdown(2), regActiveTime - 120 * 1000);

_countdownTask2 = ThreadPoolManager.getInstance().schedule(new Countdown(1), regActiveTime - 60 * 1000);

}

 

ServerVariables.set("GvG", "on");

_log.info("Event 'GvG' activated.");

Announcements.getInstance().announceToAll("Регистрация на GvG турнир началась! Community Board(Alt+ B) -> Эвенты -> GvG (регистрация группы, описание)");

Announcements.getInstance().announceToAll("Заявки принимаются в течение " + regActiveTime / 60000 + " минут");

 

_active = true;

_isRegistrationActive = true;

}

}

 

/**

* Cancels the event during registration time

*/

public static void deactivateEvent()

{

if (isActive())

{

stopTimers();

ServerVariables.unset("GvG");

_log.info("Event 'GvG' canceled.");

Announcements.getInstance().announceToAll("GvG: Турнир отменен");

 

_active = false;

_isRegistrationActive = false;

 

leaderList.clear();

}

}

 

/**

* Shows groups and their leaders who's currently in registration list

*/

public void showStats()

{

Player player = getSelf();

 

if (!player.getPlayerAccess().IsEventGm)

{

return;

}

 

if (!isActive())

{

player.sendMessage("GvG event is not launched");

return;

}

 

StringBuilder string = new StringBuilder();

String refresh = "<button value=\"Refresh\" action=\"bypass -h scripts_events.GvG.GvG:showStats\" width=60 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">";

String start = "<button value=\"Start Now\" action=\"bypass -h scripts_events.GvG.GvG:startNow\" width=60 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">";

int i = 0;

 

if (!leaderList.isEmpty())

{

for (Player leader : HardReferences.unwrap(leaderList))

{

if (!leader.isInParty())

{

continue;

}

 

string.append("*").append(leader.getName()).append("*").append(" | group members: ").append(leader.getParty().getMemberCount()).append("\n\n");

 

i++;

}

 

show("There are " + i + " group leaders who registered for the event:\n\n" + string + "\n\n" + refresh + "\n\n" + start, player, null);

}

else

{

show("There are no participants at the time\n\n" + refresh, player, null);

}

}

 

public void startNow()

{

Player player = getSelf();

 

if (!player.getPlayerAccess().IsEventGm)

{

return;

}

 

if (!isActive() || !canBeStarted())

{

player.sendMessage("GvG event is not launched");

return;

}

 

prepare();

}

 

/**

* Handles the group applications and apply restrictions

*/

public void addGroup()

{

Player player = getSelf();

 

if (player == null)

{

return;

}

 

if (!_isRegistrationActive)

{

player.sendMessage("GvG турнир неактивен.");

return;

}

 

if (leaderList.contains(player.getRef()))

{

player.sendMessage("Вы уже зарегистрировались на GvG турнир");

return;

}

 

if (!player.isInParty())

{

player.sendMessage("Вы не состоите в группе и не можете подать заявку");

return;

}

 

if (!player.getParty().isLeader(player))

{

player.sendMessage("Только лидер группы может подать заявку");

return;

}

 

if (player.getParty().isInCommandChannel())

{

player.sendMessage("Чтобы участвовать в турнире вы должны покинуть Командный Канал");

return;

}

 

if (leaderList.size() >= _groupsLimit)

{

player.sendMessage("Достигнут лимит количества групп для участия в турнире. Заявка отклонена");

return;

}

 

List<Player> party = player.getParty().getPartyMembers();

String[] abuseReason =

{

"не находится в игре", "не находится в группе", "состоит в неполной группе. Минимальное кол-во членов группы - 6.", "не является лидером группы, подававшей заявку", "не соответствует требованиям уровней для турнира", "использует ездовое животное, что противоречит требованиям турнира", "находится в дуэли, что противоречит требованиям турнира", "принимает участие в другом эвенте, что противоречит требованиям турнира", "находится в списке ожидания Олимпиады или принимает участие в ней",

"находится в состоянии телепортации, что противоречит требованиям турнира", "находится в Dimensional Rift, что противоречит требованиям турнира", "обладает Проклятым Оружием, что противоречит требованиям турнира", "не находится в мирной зоне", "находится в режиме обозревания",

};

 

for (Player eachmember : party)

{

int abuseId = checkPlayer(eachmember, false);

 

if (abuseId != 0)

{

player.sendMessage("Игрок " + eachmember.getName() + " " + abuseReason[abuseId - 1]);

return;

}

}

 

leaderList.add(player.getRef());

player.getParty().broadcastMessageToPartyMembers("Ваша группа внесена в список ожидания. Пожалуйста, не регистрируйтесь в других ивентах и не участвуйте в дуэлях до начала турнира. Полный список требований турнира в Community Board (Alt+ B)");

}

 

private static void stopTimers()

{

if (_regTask != null)

{

_regTask.cancel(false);

 

_regTask = null;

}

 

if (_countdownTask1 != null)

{

_countdownTask1.cancel(false);

 

_countdownTask1 = null;

}

 

if (_countdownTask2 != null)

{

_countdownTask2.cancel(false);

 

_countdownTask2 = null;

}

 

if (_countdownTask3 != null)

{

_countdownTask3.cancel(false);

 

_countdownTask3 = null;

}

}

 

private static void prepare()

{

checkPlayers();

shuffleGroups();

 

if (isActive())

{

stopTimers();

ServerVariables.unset("GvG");

 

_active = false;

_isRegistrationActive = false;

}

 

if (leaderList.size() < 2)

{

leaderList.clear();

Announcements.getInstance().announceToAll("GvG: Турнир отменен из-за недостатка участников");

return;

}

 

Announcements.getInstance().announceToAll("GvG: Прием заявок завершен. Запуск турнира.");

start();

}

 

/**

* @param player

* @param doCheckLeadership

* @return Handles all limits for every group member. Called 2 times: when

* registering group and before sending it to the instance

*/

private static int checkPlayer(Player player, boolean doCheckLeadership)

{

if (!player.isOnline())

{

return 1;

}

 

if (!player.isInParty())

{

return 2;

}

 

if (doCheckLeadership && ((player.getParty() == null) || !player.getParty().isLeader(player)))

{

return 4;

}

 

if ((player.getParty() == null) || (player.getParty().getMemberCount() < _minPartyMembers))

{

return 3;

}

 

if ((player.getLevel() < _minLevel) || (player.getLevel() > _maxLevel))

{

return 5;

}

 

if (player.isMounted())

{

return 6;

}

 

if (player.isInDuel())

{

return 7;

}

 

if (player.getTeam() != TeamType.NONE)

{

return 8;

}

 

if ((player.getOlympiadGame() != null) || Olympiad.isRegistered(player))

{

return 9;

}

 

if (player.isTeleporting())

{

return 10;

}

 

if (player.getParty().isInDimensionalRift())

{

return 11;

}

 

if (player.isCursedWeaponEquipped())

{

return 12;

}

 

if (!player.isInPeaceZone())

{

return 13;

}

 

if (player.isInObserverMode())

{

return 14;

}

 

return 0;

}

 

/**

* @return Shuffles groups to separate them in two lists of equals size

*/

private static void shuffleGroups()

{

if (leaderList.size() % 2 != 0) // If there are odd quantity of groups in the list we should remove one of them to make it even

{

int rndindex = Rnd.get(leaderList.size());

Player expelled = leaderList.remove(rndindex).get();

 

if (expelled != null)

{

expelled.sendMessage("При формировании списка участников турнира ваша группа была отсеяна. Приносим извинения, попробуйте в следующий раз.");

}

}

 

// Перемешиваем список

for (int i = 0; i < leaderList.size(); i++)

{

int rndindex = Rnd.get(leaderList.size());

 

leaderList.set(i, leaderList.set(rndindex, leaderList.get(i)));

}

}

 

private static void checkPlayers()

{

for (Player player : HardReferences.unwrap(leaderList))

{

if (checkPlayer(player, true) != 0)

{

leaderList.remove(player.getRef());

continue;

}

 

for (Player partymember : player.getParty().getPartyMembers())

{

if (checkPlayer(partymember, false) != 0)

{

player.sendMessage("Ваша группа была дисквалифицирована и снята с участия в турнире так как один или более членов группы нарушил условия участия");

leaderList.remove(player.getRef());

break;

}

}

}

}

 

public static void updateWinner(Player winner)

{

Connection con = null;

PreparedStatement statement = null;

 

try

{

con = DatabaseFactory.getInstance().getConnection();

statement = con.prepareStatement("INSERT INTO event_data(charId, score) VALUES (?,1) ON DUPLICATE KEY UPDATE score=score+1");

 

statement.setInt(1, winner.getObjectId());

statement.execute();

}

catch (Exception e)

{

e.printStackTrace();

}

finally

{

DbUtils.closeQuietly(con, statement);

}

}

 

private static void start()

{

int instancedZoneId = 504;

InstantZone iz = InstantZoneHolder.getInstance().getInstantZone(instancedZoneId);

 

if (iz == null)

{

_log.warn("GvG: InstanceZone : " + instancedZoneId + " not found!");

return;

}

 

for (int i = 0; i < leaderList.size(); i += 2)

{

Player team1Leader = leaderList.get(i).get();

Player team2Leader = leaderList.get(i + 1).get();

GvGInstance r = new GvGInstance();

 

r.setTeam1(team1Leader.getParty());

r.setTeam2(team2Leader.getParty());

r.init(iz);

r.setReturnLoc(GvG.RETURN_LOC);

 

for (Player member : team1Leader.getParty().getPartyMembers())

{

Functions.unRide(member);

Functions.unSummonPet(member, true);

member.setTransformation(0);

member.setInstanceReuse(instancedZoneId, System.currentTimeMillis());

member.dispelBuffs();

member.teleToLocation(Location.findPointToStay(GvG.TEAM1_LOC, 0, 150, r.getGeoIndex()), r);

}

 

for (Player member : team2Leader.getParty().getPartyMembers())

{

Functions.unRide(member);

Functions.unSummonPet(member, true);

member.setTransformation(0);

member.setInstanceReuse(instancedZoneId, System.currentTimeMillis());

member.dispelBuffs();

member.teleToLocation(Location.findPointToStay(GvG.TEAM2_LOC, 0, 150, r.getGeoIndex()), r);

}

 

r.start();

}

 

leaderList.clear();

_log.info("GvG: Event started successfuly.");

}

}

 

 

 

Мне нужно изменить приз. ID валюты и количество....

Изменено пользователем Space

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

возможно настройка приза в БД

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сэр, вас не смущает

 

/**
* Глобальный класс [color=#ff0000]предварительного[/color] этапа GvG турнира
*
* @author pchayka
*/

Изменено пользователем BrainEater
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

возможно настройка приза в БД

 

Увы нету :cray:

 

 

сэр, вас не смущает

 

/**
* Глобальный класс [color=#ff0000]предварительного[/color] этапа GvG турнира
*
* @author pchayka
*/

 

а что меня должно смущать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сам же эвент, вроде в инстансах лежит.

 

import instances.GvGInstance;

Изменено пользователем BrainEater
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сам же эвент, вроде в инстансах лежит.

 

 

<!DOCTYPE list SYSTEM "instances.dtd">

<list>

<!-- GvG -->

<instance id="504" name="GvG Instance" maxChannels="20" collapseIfEmpty="10" timelimit="30" dispelBuffs="false"

respawn="60">

<level min="80" max="85"/>

<return loc="43816 -48232 -822"/>

<collapse on-party-dismiss="false" timer="60"/>

<teleport loc="-23768 -8968 -5412"/>

<remove itemId="0" count="0" necessary="false"/>

<give itemId="0" count="0"/>

<quest id="0"/>

<reuse resetReuse="* * * * *" setUponEntry="true" sharedReuseGroup="0"/>

<geodata map="24_22"/>

<spawns/>

<doors>

<door id="24220030" opened="true"/>

<door id="24220031" opened="true"/>

<door id="24220032" opened="true"/>

<door id="24220033" opened="true"/>

<door id="24220034" opened="true"/>

<door id="24220035" opened="true"/>

<door id="24220036" opened="true"/>

<door id="24220037" opened="true"/>

<door id="24220038" opened="true"/>

<door id="24220035" opened="true"/>

<door id="24220039" opened="true"/>

<door id="24220040" opened="true"/>

<door id="24220041" opened="true"/>

<door id="24220042"/>

<door id="24220043" opened="true"/>

<door id="24220044" opened="true"/>

<door id="24220045" opened="true"/>

<door id="24220046" opened="true"/>

<door id="24220047" opened="true"/>

<door id="24220048" opened="true"/>

<door id="24220049" opened="true"/>

<door id="24220050" opened="true"/>

<door id="24220060" opened="true"/>

</doors>

<zones>

<zone name="[gvg_battle_zone]" active="true"/>

<zone name="[gvg_1_peace]" active="true"/>

<zone name="[gvg_2_peace]" active="true"/>

</zones>

</instance>

</list>

 

 

 

 

<give itemId="0" count="0"/>

 

Это приз? Или я ошибся?

Изменено пользователем Space

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

private void reward(Party party)

{

for (Player member : party.getPartyMembers())

{

member.sendMessage("Ваша группа выиграла GvG турнир, лидер группы добавлен в рейтинг победителей.");

member.setFame(member.getFame() + 500, "GvG"); // fame

Functions.addItem(member, 13067, 30); // Fantasy Isle Coin

}

}

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

private void reward(Party party)

{

for (Player member : party.getPartyMembers())

{

member.sendMessage("Ваша группа выиграла GvG турнир, лидер группы добавлен в рейтинг победителей.");

member.setFame(member.getFame() + 500, "GvG"); // fame

Functions.addItem(member, 13067, 30); // Fantasy Isle Coin

}

}

 

Это где?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

/**
* Инстанс для GvG турнира
*
* @author pchayka
*/
public class GvGInstance

 

поиск по слову reward

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

D:\server\gameserver\data\scripts\events\GvG.java

 

Здесь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

dist\gameserver\data\scripts\instances

 

Спасибо BrainEater нашёл настройку

 

private void reward(Party party)

{

for (Player member : party.getPartyMembers())

{

member.sendMessage("Ваша группа выиграла GvG турнир, лидер группы добавлен в рейтинг победителей.");

member.setFame(member.getFame() + 500, "GvG"); // fame

Functions.addItem(member, 13067, 30); // Fantasy Isle Coin

}

}

 

+++ накидал. Большое спасибо:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...