char_create - автоматическое создание и удаление персонажей

Дополнения к OpenKore, расширяющиее её функциональность, называются плагинами.

Модератор: 4epT

EternalHarvest
Разработчик
Сообщения: 819
Зарегистрирован: Пн окт 27, 2008 9:49 pm

char_create - автоматическое создание и удаление персонажей

Сообщение EternalHarvest »

На основе плагина char_recreate.

Параметры в конфиге (в скобках - значения по умолчанию):
charRecreate_create (0): 0 - не создавать персонажей; 1 - создавать
charRecreate_delete (0): 0 - не удалять персонажей; 1 - удалить один раз (сбрасывается в 0); 2 - удалять всегда
charRecreate_stats (5 5 5): три цифры, str agi dex (например: 9 9 9)
charRecreate_names (vocal 6 12): "vocal MINLEN MAXLEN" - случайное имя указанной длины; список имён через запятую - случайное из них
charRecreate_email: почта для удаления
charRecreate_nodelay (0): 0 - пауза в 10 секунд перед удалением ("маскировка" под клиент), 1 - без паузы

char_create.pl

Код: Выделить всё

package char_create;
# by EternalHarvest (rofan.ru) 

# Character creation and deletion
# Config options:
# charRecreate_create    0 to never create, 1 to create (if no character in current slot)
# charRecreate_delete    0 to never delete, 1 to delete once, 2 to delete always
# charRecreate_email     email for deleting
# charRecreate_stats     STR AGI DEX (example: 9 9 9)
# charRecreate_names     vocal MINLEN MAXLEN | comma-separated list
# charRecreate_nodelay   1 to bypass delay when deleting character

use strict;
use Globals;
use Log qw/message/;

my $configPrefix = 'charRecreate_';

Plugins::register ('char_create', 'Character creation and deletion', \&unload);
my $hooks = Plugins::addHooks (['charSelectScreen', \&charSelect, undef]);
sub unload {Plugins::delHooks ($hooks);}

my $justCreated = 0;

sub charSelect {
	my (undef, $args) = @_;
	
	my $charId = 0 + $config{'char'};
	if ($chars[$charId]) {
		if (!$justCreated && $config{$configPrefix.'delete'}) {
			message "Deleting character...\n", 'connection';
			
			sleep 10 unless $config{$configPrefix.'nodelay'};
			
			Misc::configModify ($configPrefix.'delete', '0') unless $config{$configPrefix.'delete'} == 2;
			
			$messageSender->sendCharDelete ($chars[$charId]{charID}, $config{$configPrefix.'email'});
			$AI::temp::delIndex = $charId;
			$args->{return} = 2;
		} else {
			$args->{autoLogin} = 1;
			$justCreated = 0;
		}
	} elsif ($config{$configPrefix.'create'}) {
		message "Creating character...\n", 'connection';
		
		my $name;
		if ($config{$configPrefix.'names'} =~ /^vocal\s+(\d+)\s+(\d+)$/) {
			$name = ucfirst Utils::vocalString (1 + $1 + int rand $2 - $1);
		} elsif ($config{$configPrefix.'names'}) {
			my @names = split /,/, $config{$configPrefix.'names'};
			$name = $names[int rand scalar @names];
			$name =~ s/^\s+|\s+$//g;
		} else {
			$name = ucfirst Utils::vocalString (6 + int rand 6);
		}
		
		my @st = $config{$configPrefix.'stats'} =~ /^(\d)\s*(\d)\s*(\d)$/ ? ($1, $2, $3) : (5, 5, 5);
		
		$messageSender->sendCharCreate (
			$charId, $name, $st[0], $st[1], 10-$st[2], 10-$st[0], $st[2], 10-$st[1],
			5 + int rand 15, 5 + int rand 15
		);
		$args->{return} = 2;
		$justCreated = 1;
	}
	
	$timeout{charlogin}{time} = time;
}
Последний раз редактировалось EternalHarvest Вт мар 17, 2009 2:25 am, всего редактировалось 3 раза.
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Re: Модификация char_create

Сообщение 4epT »

сам делал? или спёр где? :twisted:
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Аватара пользователя
Святой Инквизитор
Грамотный
Сообщения: 455
Зарегистрирован: Вт окт 28, 2008 3:57 am
Сервер RO:: DarkRO
Откуда: Далёкая и тёмная страна Украина
Контактная информация:

Re: Модификация char_create

Сообщение Святой Инквизитор »

Написал же модификация)))
Изображение Изображение
Настрою конфиг, напишу макрос - не дорого.
Стучать в асю (есть в профиле).
EternalHarvest
Разработчик
Сообщения: 819
Зарегистрирован: Пн окт 27, 2008 9:49 pm

Re: Модификация char_create

Сообщение EternalHarvest »

Ну в изначальном виде он умел удалять только при каждом перезаходе. Ещё после удаления был глюк, перезаходить надо было, чтоб создать чара в том же слоте. Переписал под свои нужды.

Добавлено спустя 1 минуту 11 секунд:
4epT писал(а):или спёр где? :twisted:
Что такая реакция сразу? Если я просто скопирую откуда-нибудь, я напишу об этом. Только зачем, если обычно можно просто ссылку дать?
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Re: Модификация char_create

Сообщение 4epT »

да не, я ниче против не имею.. я вообще что-то тебя с другим спутал...

мне понравилось простое решение со статами :)

для общего развития поясни что делает строчка:
substr ($name, 0, 1) =~ tr/a-z/A-Z/;

проверяет чтобы не было лишних символов??
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
EternalHarvest
Разработчик
Сообщения: 819
Зарегистрирован: Пн окт 27, 2008 9:49 pm

Re: Модификация char_create

Сообщение EternalHarvest »

4epT писал(а):для общего развития поясни что делает строчка:
substr ($name, 0, 1) =~ tr/a-z/A-Z/;
Делает первую букву ника заглавной.
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Re: Модификация char_create

Сообщение 4epT »

хм.. у меня как-то по проще было.. если восстановлю свой винт, то скину
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Аватара пользователя
Kissa2k
Профессионал
Сообщения: 1304
Зарегистрирован: Пн дек 04, 2006 8:33 pm

Re: Модификация char_create

Сообщение Kissa2k »

Угу, функция ucfirst
Аватара пользователя
Reras
Грамотный
Сообщения: 418
Зарегистрирован: Пн апр 30, 2007 6:51 am
Сервер RO:: Raggame
Откуда: Москва
Контактная информация:

Re: Модификация char_create

Сообщение Reras »

4epT
Я ниче никому не пересылал. Как договаривались.
Могу немного порекламить производителя Черта и его рекламного бота за ДОРОГО :ROFL:
Классная штука.
zigahh
Новичок
Сообщения: 2
Зарегистрирован: Чт янв 22, 2009 4:16 pm

Re: Модификация char_create

Сообщение zigahh »

а как сделать чтобы имя перса создавалось не рандомное а допустим из некоего списка???
Funt
Грамотный
Сообщения: 233
Зарегистрирован: Чт дек 14, 2006 10:21 pm
Откуда: Прекрасный город на Неве...

Re: Модификация char_create

Сообщение Funt »

М...Ну в двух словах описать довольно трудно...
Нужно прочитать файл,проверить каждое имя на наличие ошибок(например присутвие спец символов),затем попробывать создать чара с этим именем,если уже существует,то удалить его из списка и бла бла бла ;)
Самый лучший сервер-Земля!Огромная карта,6милиардов игроков,терпеливый админ...Вот тока бота для этого сервера не существует :(
dvdc
Бывалый
Сообщения: 556
Зарегистрирован: Вс ноя 05, 2006 1:43 pm
Контактная информация:

Re: Модификация char_create

Сообщение dvdc »

Или... написать функцию, которая создавала бы "правильные" имена, согласно негласно принятым правилам онлайновых мультиплеерных РПГ :) ну типа там Rimurgar, Dragomir, Alaran, Belazar, и прочие прочие прочие :)
блин, так получилось что я php знаю настолько хорошо, что генератор таких имён могу написать за минуту. вот бы имплементировать php в перле )))

кстати, плагин неплохой, рабочий, но загадочный )) оптимизировать его надо бы...
EternalHarvest
Разработчик
Сообщения: 819
Зарегистрирован: Пн окт 27, 2008 9:49 pm

Re: Модификация char_create

Сообщение EternalHarvest »

dvdc писал(а):блин, так получилось что я php знаю настолько хорошо, что генератор таких имён могу написать за минуту. вот бы имплементировать php в перле )))
В перле чего только нет: "Integrating PHP and Perl" (PHP::Interpreter). Но вот только зачем?..
dvdc писал(а):но загадочный )) оптимизировать его надо бы...
В чём же загадочность и где требуется оптимизация?
Новую версию выложу, она немного полегче для восприятия может будет...
dvdc
Бывалый
Сообщения: 556
Зарегистрирован: Вс ноя 05, 2006 1:43 pm
Контактная информация:

Re: Модификация char_create

Сообщение dvdc »

EternalHarvest
не, это всё игрушки. я не могу использовать объекты php в перле )) перловский интерпретатор рухнет.
EternalHarvest
Разработчик
Сообщения: 819
Зарегистрирован: Пн окт 27, 2008 9:49 pm

Re: Модификация char_create

Сообщение EternalHarvest »

Новая версия. Изменения:

1. Параметр charRecreate переименован в charRecreate_delete.
2. Можно отключить автоматическое создание персонажей.
3. Можно задать список имён, или длину имени для случайной генерации.
4. Добавлена пауза перед удалением персонажа.
Ответить