Автор: 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
Не понял... Точнее возможно неправильно понял.
Тут просто добавь выбор "Сколько будет выйгрышных чисел" а там уже пусть назначает. Ну массивом либо переменными. Единственное - понадобится доп. переменная для определения кол-ва выйгрышных чисел, чтобы сравнивать числа игрока с 1 или 2 или 3 числами. А вообще: зачем админу назначать выйгрышные числа? Пусть рандомно назначаются? Да и вообще, немного не понял суть. То бишь игроку просто надо ткнуть на нпц и все? Подробнее бы описал, было бы понятнее..
У тебя L_dedannounce только тут и используется... Зачем тогда лейбл? Мб проще тогда сразу тут и вписать анонс?
Автор: Кеник: Дата: 12.13.2010
я ж говорю я нуб в скриптенге
выигрышное число может быть к примеру 3,может быть к примеру 3 и 5 (т.е. нпц бросил 3 или 5 и пошел анонс что он выиграл),может быть и 1 4 6 (нпц бросил 1,4 или 6 и игрок победил в противном случае анонс что проиграл
неспорю можно указать ГМ у количество выигрышных чисел а уж сами числа при которых будет победа пусть определяет рандом при этом нужен анонс для игроков какие числа будут выигрышными,да игроку надо только тыкнуть,в менюшке будет отоброжаться только начать игру
с лейблами у меня тоже неочем,я дуб дубом давайте начнем писать этого нпц вместе с разъяснениями
Автор: 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;