Назад

[Ученик] Ragen

Автор: Ragen: Дата: 12.13.2010

Приветствую учителей и соратников мне бы хотелось написать нпц,но там нужны переменные и рандом 2уровня с которыми я очень плохо дружу
Суть нпц:
1 гм пишет нпцу ник следующего человека который может нажать на него и побродить по нужной менюшке,и указывает выигрышные числа (на основе кубика от 1 до 6)Загвоздка: выигрышных чисел может быть 1,2 или 3
2 персонаж которому разрешено нажать на нпца может только разово пройти по этой менюшке
3 персонаж нажав на нпц запускает запуск рандомного броска кубика нпцом
4 анонс "нпц бросил такойто номер (ник) проиграл\победил"
5 обнуление всего и вся после анонса

при желании из этого можно еще че нибудь получше придумать но пока тока вот такие наброски

prontera,150,261,4	script	Дед мороз	810,{ 

dedmoroz:
if (getgmlevel() >= 80) goto dedadmin;
mes "[Дед мороз]";
mes "Привет,тебе сейчас запрещенно бросать";
mes "Жди команды";
close;
dedadmin:
mes "[Дед мороз]";
mes "^FF0000~Привет GM " + strcharinfo(0) + ", Хочешь начать игру?~^000000";
mes "^FF0000~Просто скажи мне что сделать!~^000000";
switch(select("Назначить ник игрока:назначить выигрышные числа:Прекратить игру:Выход")) {
case 1:
next;
mes "[Дед мороз]";
mes "^FF0000~назначай ник игрока~^000000";
$nick;
emotion 33;
set @my_name_var, 1;
close2;
goto L_dedannounce;
case 2:
next;
mes "[Дед мороз]";
mes "^FF0000~Назначь числа для победы^000000";
// незнаю как назначить выигрышные числа
next;
goto dedadmin;
case 3:
next;
mes "[Дед мороз]";
goto dedstop;
case 4:
next;
mes "[Дед мороз]";
mes "Выходи...";
close;
}
L_dedannounce:
mapannounce "Лока","Дед мороз: ник следующего игрока: ________",0;


L_dedstart:
mapannounce "Лока","Начинаем!",0;
set $@number,rand(1,6);
mapannounce "Лока","Дед мороз: Я бросил: "+$@number+"!",0;

L_dedstop:
//обнуление назначенных цыфр и игроков
close;
}


Сразу говорю писать я неумею поэтому тыкайте мне носом как котенка Х) хочу учиться

Автор: Ragen: Дата: 12.13.2010

я ж говорю я нуб в скриптенге

Цитата:Загвоздка: выигрышных чисел может быть 1,2 или 3

Не понял... Точнее возможно неправильно понял.

выигрышное число может быть к примеру 3,может быть к примеру 3 и 5 (т.е. нпц бросил 3 или 5 и пошел анонс что он выиграл),может быть и 1 4 6 (нпц бросил 1,4 или 6 и игрок победил в противном случае анонс что проиграл

Тут просто добавь выбор "Сколько будет выйгрышных чисел" а там уже пусть назначает. Ну массивом либо переменными. Единственное - понадобится доп. переменная для определения кол-ва выйгрышных чисел, чтобы сравнивать числа игрока с 1 или 2 или 3 числами. А вообще: зачем админу назначать выйгрышные числа? Пусть рандомно назначаются? Да и вообще, немного не понял суть. То бишь игроку просто надо ткнуть на нпц и все? Подробнее бы описал, было бы понятнее..

неспорю можно указать ГМ у количество выигрышных чисел а уж сами числа при которых будет победа пусть определяет рандом при этом нужен анонс для игроков какие числа будут выигрышными,да игроку надо только тыкнуть,в менюшке будет отоброжаться только начать игру

У тебя L_dedannounce только тут и используется... Зачем тогда лейбл? Мб проще тогда сразу тут и вписать анонс?

с лейблами у меня тоже неочем,я дуб дубом давайте начнем писать этого нпц вместе с разъяснениями

Автор: Кеник: Дата: 12.13.2010

я ж говорю я нуб в скриптенге

Все мы нубы, кто бы чего не говорил.

выигрышное число может быть к примеру 3,может быть к примеру 3 и 5 (т.е. нпц бросил 3 или 5 и пошел анонс что он выиграл),может быть и 1 4 6 (нпц бросил 1,4 или 6 и игрок победил в противном случае анонс что проиграл


неспорю можно указать ГМ у количество выигрышных чисел а уж сами числа при которых будет победа пусть определяет рандом при этом нужен анонс для игроков какие числа будут выигрышными,да игроку надо только тыкнуть,в менюшке будет отоброжаться только начать игру

Ну как вариант:
Игрок тыкает на нпц. Скрипт рандомно выбирает сколько будет выйгрышных чисел, затем сообщает об этом игроку. После этого игрок выбирает (читай вводит) выйгрышные числа, после нпц рандомно выбирает свое число и если оно совпадает с выйгрышным - анонс, что игрок победил, иначе проигрыш. Ну и после игры например кулдаун поставить, чтоб не стояли и не тыкали по 20 раз в минуту. (Тогда админу не понадобится вводить имя игрока [А вдруг у него в нике а русская? Или просто спец. символы?)] да и само участие админа не требуется.

Либо еще вариант:
Если уж так хочется, чтоб админ делал что-нибудь. Админ выбирает кол-во выйгрышных чисел, затем назначает их. Ну и игрока назначает. После игрок подходит к нпц и ему предлагают выбрать число от 1 до 6. Ну и в зависимости от того что выберет - или проигрыш или выйгрыш. Тут и игрок не тупо по нпц кликает, а все-таки принимает участие и админ не без дела х)

Либо свой вариант предложи. Просто я изначально в логику не вник как-то =\

с лейблами у меня тоже неочем,я дуб дубом давайте начнем писать этого нпц вместе с разъяснениями

Ну я предложил просто все что в лейбле вставить в тело скрипта после close2; вместо отправки на лейбл. х)

Автор: Ragen: Дата: 12.13.2010

рандомно количество выигрышных чисел неподходит
знач получается следующее
админ выбрал количество выигрышных чисел
админ выбрал ник персонажа
игрок выбрал свои победные числа(загадал их) при чем количесво должно ровняься тому что указал админ
игрок нажал "играть"

Автор: Кеник: Дата: 12.13.2010

Ну вот. Меню админа у тебя уже прописано. Там же пусть назначается переменная, которая обозначает кол-во чисел (пусть будет x). Тогда в куске кода для игрока надо сделать switch(x){
case 1:
//Игрок вводит 1 число.
break;
case 2:
//Игрок вводит 2 числа
break;
case 3:
//Игрок вводит 3 числа.
break;
}
Ну я это примерно так вижу х)

Автор: Мяфк: Дата: 12.13.2010

Ну переменная, в которой админ задаёт кол-во чисел, допустим:
Меню админа:
mes "Админ введи кол-во чисел.";
input kolvo;
next;
mes "Админ введи имя игрока";
input name;
close;

Меню игрока:
if (name == strcharinfo(0)) {
switch(kolvo);
case 1:
mes "Введи 1 число";
input chislo1;
//проверка на то что бы число не было больше 6 к примеру
case 2:
mes "Введи 2 числа";
input chislo1;
//проверка на то что бы число не было больше 6 к примеру
input chislo2;
//проверка на то что бы число не было больше 6 к примеру
case 3:
mes "Введи 3 числа";
input chislo1;
//проверка на то что бы число не было больше 6 к примеру
input chislo2;
//проверка на то что бы число не было больше 6 к примеру
input chislo3;
//проверка на то что бы число не было больше 6 к примеру

Автор: Кеник: Дата: 12.14.2010

Я об этом и писал ;)

Автор: Ragen: Дата: 12.14.2010

Прошу прощения я сильно заболел редко за компом бываю
как это должно выглядеть если лейблов в начале ненадо?

Автор: Кеник: Дата: 12.14.2010

Про лейбл я имел ввиду:

вместо

case 1: 
next;
mes "[Дед мороз]";
mes "^FF0000~назначай ник игрока~^000000";
$nick;
emotion 33;
set @my_name_var, 1;
close2;
goto L_dedannounce;

...

L_dedannounce:
mapannounce "Лока","Дед мороз: ник следующего игрока: ________",0;


написать просто:

case 1: 
next;
mes "[Дед мороз]";
mes "^FF0000~назначай ник игрока~^000000";
$nick;
emotion 33;
set @my_name_var, 1;
close2;
mapannounce "Лока","Дед мороз: ник следующего игрока: ________",0;
break;