Hello all!
I finish this system for current revision.
Full version features:
Code updated.
Solved problem, which crushing map server after @reloadfactiondb command.
Corrected Faction Aura bonus ( SC_FACTION_AURA ).
Now saving faction leader and relics of each faction.
Now aura of each faction in faction_db.txt ( faction_aura_db.txt was deleted )
Multi - alliance support.
Voting for faction leader ( some people's suggestion ).
Logging Faction chat.
...
The full version will not free. All news later
You can still use 'factionmonster' with event label, but monster would be MD_PLANT(0x40) mode, for example, so this monster cant walk.
factionmonster("prt_fild08",0,0,"Red Team",2135,1,pvpteam,"NPC::OnLabel");
OnLabel: <,,,>
You can use Account-Bound Items mod...just little modify it.
Also, i could make source mod for Guild pack based on Account-Bound Items mod + guild's house rental, for ex.
Items from Guild Pack would be transfered to Guild storage if character leaves the guild, etc...
Привет.
1. При смене ехе файла кроме изменения пакетной версии и рекомпиляции ничего делать не нужно.
2. Нет, вместо локальных IP адресов устанавливаются внешние IP адреса той машины, на которой запускается эмулятор.
3. Файл содержит в себе пакеты для каждой пакетной версии. Если ты используешь ехе, например, 2012-04-10, то пакетная версия в mmo.h будет 20120410, а сами пакеты для этого ехе (если их нет в packet_db.txt) искать среди файлов здесь, после чего вставить в packet_db.txt и рекомпилировать сервер.
4. Патчеры на вики можно посмотреть. В основном патчи создаются с помощью GRF архиваторов, типа gryff или grf builder...
5. Ну если сервер реньювал, то достаточно пропатчить его с помощью rsu-kro-renewal-lite.exe. На сервере, как уже говорилось, должны быть установлены внешние IP адреса. Ну и более детальная настройка уже на твой вкус и цвет : рейты, команды и т.п.
Ответов на твои вопросы здесь на форуме (и wiki) предостаточно, единственный минус - они все на английском.
Ну код зависит от того, где именно ты хочешь его вставить...
Допустим, так:
...
if(sd && sd->sc.count && sd->sc.data[sC_PROTECT])
{
struct TimerData* timer = (struct TimerData*)get_timer(sd->sc.data[id]->timer);
if( timer && (timer->tick - gettick()) < 300000 )
clif_displaymessage(fd, "на вашем персонаже осталось протекта меньше чем на 5 минут");
}
...
Пробуй по такому примеру распределить ID персонажей в массивы:
.@k = 0;
for(.@i=0; .@i< getarraysize($@mapusersid); .@i+=2)
{
$@sns_group1[.@k] = $@mapusersid[.@i];
$@sns_group2[.@k] = $@mapusersid[.@i+1];
.@k++;
}
Только этим не отделаешься и скриптик придётся подредактировать.
EDIT:
Как то так...
function script nashest36 {
mapusersid("pvp_n_1-5");
leaveparty($@mapusersid[0],getarraysize($@mapusersid));
.@k = 0;
for(.@i=0; .@i<getarraysize($@mapusersid); .@i+=2)
{
$@sns_group1[.@k] = $@mapusersid[.@i];
$@sns_group2[.@k] = $@mapusersid[.@i+1];
.@k++;
}
sleep 2000;
set $@random,rand(1,100);
createparty("Blue "+$@random,$@sns_group1);
set $@sns_pt1,getarraysize($@sns_group1);
createparty("Red "+$@random,$@sns_group2);
set $@sns_pt2,getarraysize($@sns_group2);
sleep 2000;
if (getmapusers("pvp_n_1-5")>3)
{
inviteparty($@sns_group1[0],getarraysize($@sns_group1);
inviteparty($@sns_group2[0],getarraysize($@sns_group2);
}
for (.@i=0; .@i < getarraysize($@sns_group1); .@i++)
{
warpchar "pvp_n_1-5",66,100,$@sns_group1[.i];
warpchar "pvp_n_1-5",136,100,$@sns_group2[.i];
}
pvpon "pvp_n_1-5";
}
pvp_n_1-5,99,103,5 script Stenka_test 800,{
callfunc "nashest36";
close;
}
Исходников команд inviteparty и createparty у меня нет, поэтому правил интуитивно.
Эм, ну так и
Формулируй вопросы конкретно.
К тому же, команды
не являются стандартными в rA, какие функции и каким образом они их выполняют нам не известно =\