Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Рандом-Кейс

Статус
В этой теме нельзя размещать новые ответы.

free.time_

Умник
Всеееем привет, дорогие читатели, делать было нечего и решил я создать рандом кейсы как в CS:GO.
В чем вся суть системы, ее можно использовать как и в донат услугах, мероприятиях, или просто для CS:DM серверов было бы очень не плохо!
У нас есть три кейса: Chroma Case, Chroma 2 Case и Falchion Case, все эти кейсы выпадают рандомно, в каждом из кейсов есть по 4 предмета, один из которых тоже выпадает рандомом.

Знаю, есть мелкие проблемы с оптимизацией, прошу простить.
Приступим..

И так, я сделал систему по пикапу и по команде, что вы вставите к себе решать вам.
Начнем.
Создаем переменную в начале мода:
PHP:
new gotocase;
Далее идем в паблик который запускается вместе с сервером(OnGameModeInit)
PHP:
gotocase = CreatePickup(19132,23,-1966.3043,120.4312,27.6875);
Тут мы создаем пикап и присваиваем его к переменной gotocase
Далее идем в паблик, который вызывается когда ты на пикапе(OnPlayerPickUpPickup), добавим это:
PHP:
if(pickupid == gotocase)
	{
	    switch(random(3))
	    {
	        case 0: SetPVarInt(playerid, "Case", 1);
	        case 1: SetPVarInt(playerid, "Case", 2);
	        case 2: SetPVarInt(playerid, "Case", 3);
		}
 		Case(playerid);
	}
У нас стоит проверка, если мы стоим на пикапе которому присвоили gotocase, то запускаем рандом выбор кейса и переходим к стоку.
Все.
Для стандартных CMD:
PHP:
if(strcmp(cmdtext, "/case", true) == 0)
	{
	    switch(random(3))
	    {
	        case 0: SetPVarInt(playerid, "Case", 1);
	        case 1: SetPVarInt(playerid, "Case", 2);
	        case 2: SetPVarInt(playerid, "Case", 3);
		}
	    Case(playerid);
	}
Описание выше, тоже самое
Для DC_CMD и прочих:
PHP:
	CMD:casee(playerid, params[])
	{
        switch(random(3))
	    {
	        case 0: SetPVarInt(playerid, "Case", 1);
	        case 1: SetPVarInt(playerid, "Case", 2);
	        case 2: SetPVarInt(playerid, "Case", 3);
		}
	    Case(playerid);
	}
Все.

Далее идем в конец мода и создаем stock Case(playerid):
PHP:
stock Case(playerid)
{
    new rulesdialog[700],string[144];
	if(GetPVarInt(playerid, "Case") == 1)
	{
    	SendClientMessage(playerid, 0x5AB200FF,"Вы купили ключ к Falchion Case");
    	format(string,sizeof(string), "Поздравляем, вы получили доступ к {ffd200}Falchion Case\n\n"),strcat(rulesdialog,string);
    	strcat(rulesdialog, "{ffffff}Этот кейс вы получили за выигрышь в мероприятии или донат покупка.\n");
    	format(string,sizeof(string), "{ffffff}В данном кейсе имеется:\n\n"),strcat(rulesdialog,string);
    	strcat(rulesdialog, "{63ff00}- Бронежилет.\n\n");
    	strcat(rulesdialog, "{63ff00}- M4A1 +9000 патронов.\n");
    	strcat(rulesdialog, "{63ff00}- Все скиллы и лицензии.\n\n");
    	strcat(rulesdialog, "{63ff00}- Права админа(хелпера) 1 лвл.\n\n");
    	strcat(rulesdialog, "{ffffff}Если вам не выпало то, что вы хотели, просим не винить в этом администрацию.\n");
    	strcat(rulesdialog, "{ffffff}Если вы согласны с условиями нажмините `Начать`.");
	}
	else if(GetPVarInt(playerid, "Case") == 2)
	{
    	SendClientMessage(playerid, 0x5AB200FF,"Вы купили ключ к Chroma 2 Case");
    	format(string,sizeof(string), "Поздравляем, вы получили доступ к {ffd200}Chroma 2 Case\n\n"),strcat(rulesdialog,string);
    	strcat(rulesdialog, "{ffffff}Этот кейс вы получили за выигрышь в мероприятии или донат покупка.\n");
    	format(string,sizeof(string), "{ffffff}В данном кейсе имеется:\n\n"),strcat(rulesdialog,string);
    	strcat(rulesdialog, "{63ff00}- AK47 +9000 патронов.\n\n");
    	strcat(rulesdialog, "{63ff00}- Права админа 2 уровень.\n");
    	strcat(rulesdialog, "{63ff00}- 10000г наркотиков.\n\n");
    	strcat(rulesdialog, "{63ff00}- Скин CJ\n\n");
    	strcat(rulesdialog, "{ffffff}Если вам не выпало то, что вы хотели, просим не винить в этом администрацию.\n");
    	strcat(rulesdialog, "{ffffff}Если вы согласны с условиями нажмините `Начать`.");
	}
	else if(GetPVarInt(playerid, "Case") == 3)
	{
    	SendClientMessage(playerid, 0x5AB200FF,"Вы купили ключ к Chroma Case");
    	format(string,sizeof(string), "Поздравляем, вы получили доступ к {ffd200}Chroma Case\n\n"),strcat(rulesdialog,string);
    	strcat(rulesdialog, "{ffffff}Этот кейс вы получили за выигрышь в мероприятии или донат покупка.\n");
    	format(string,sizeof(string), "{ffffff}В данном кейсе имеется:\n\n"),strcat(rulesdialog,string);
    	strcat(rulesdialog, "{63ff00}- Detonate +100\n\n");
    	strcat(rulesdialog, "{63ff00}- Права админа 3 уровень.\n");
    	strcat(rulesdialog, "{63ff00}- Обнуления розыска.\n\n");
    	strcat(rulesdialog, "{63ff00}- Снятие всех варнов.\n\n");
    	strcat(rulesdialog, "{ffffff}Если вам не выпало то, что вы хотели, просим не винить в этом администрацию.\n");
    	strcat(rulesdialog, "{ffffff}Если вы согласны с условиями нажмините `Начать`.");
	}
    return ShowPlayerDialog(playerid, 1001, DIALOG_STYLE_MSGBOX,"{63cb00}Рандом-Кейс", rulesdialog, "Начать", "");
}
Тут у нас стоит проверка на то, какой кейс нам выпал в рандоме, и вызывает ShowPlayerDialog.
Вызов есть а диалога нет?:cf: Не хорошо, надо добавить!
Идем в OnDialogResponse(паблик вызывается при ShowPlayerDialog)
PHP:
		case 1001:
		{
			new string[60], newstring[25];
		    if(GetPVarInt(playerid, "Case") == 1)
		    {
		    	switch(random(4))
		    	{
					case 0: GivePlayerWeapon(playerid, 31, 9000), SetPVarString(playerid,"Priz","M4A1 + 9000 патронов");
					case 1: SetPlayerArmour(playerid, 300.0), SetPVarString(playerid,"Priz","Бронежилет");
					case 2:
					{
  		 				pTemp[playerid][pGunSkill][0] = 100;
				 		pTemp[playerid][pGunSkill][1] = 100;
						pTemp[playerid][pGunSkill][2] = 100;
						pTemp[playerid][pGunSkill][3] = 100;
						pTemp[playerid][pGunSkill][4] = 100;
						pTemp[playerid][pGunSkill][5] = 100;
						// сис-мы лицензий у меня нет, выставите свою переменную
						SetPVarString(playerid,"Priz","Все скиллы и лицензии");
					}
					case 3:  Player[playerid][pAdmin] = 1, SetPVarString(playerid,"Priz","Права администратора");
				}
			}
			if(GetPVarInt(playerid, "Case") == 2)
		    {
		    	switch(random(4))
		    	{
					case 0: GivePlayerWeapon(playerid, 30, 9000), SetPVarString(playerid,"Priz","AK47 +9000 патронов");
					case 1: Player[playerid][pAdmin] = 2, SetPVarString(playerid,"Priz","Права админа 2 уровень.");
					case 2: Player[playerid][pNarko] = 10000, SetPVarString(playerid,"Priz","10000г наркотиков.");
					case 3: SetPlayerSkin(playerid, 0), SetPVarString(playerid,"Priz","Скин CJ");
				}
			}
			if(GetPVarInt(playerid, "Case") == 3)
		    {
		    	switch(random(4))
		    	{
					case 0: GivePlayerWeapon(playerid, 30, 9000), SetPVarString(playerid,"Priz","Detonate");
					case 1: Player[playerid][pAdmin] = 3, SetPVarString(playerid,"Priz","Права админа 3 уровень");
					case 2: Player[playerid][pDante] = 1, SetPVarString(playerid,"Priz","Обнуления розыска");
					case 3: Player[playerid][pWarn] = 0;, SetPVarString(playerid,"Priz","Снятие всех варнов");
				}
			}
			GetPVarString(playerid,"Priz",newstring,sizeof(newstring));
			format(string,sizeof(string), "Поздравляем!\n\nВы выиграли %s!",newstring);
			return ShowPlayerDialog(playerid, 0 , DIALOG_STYLE_MSGBOX, "{63cb00}Выигрыш", string, "Принять", "");
		}
Тут у нас уже рандом приз выдает, в зависимости от того, какой у нас кейс.

Ребят, добавлял призы на скорую руку, смотря на то, что мой мод new.pwn, в нем даже нет Админки, Нарко, Варнов, Скилов.
Переменные были придуманы мною, попрошу вас проявить оригинальность и добавить свои призы.

Чтобы добавить не 4 приза, а 5 делаем вот что:
везде где
PHP:
switch(random(4))
в OnDialogResponse
Заменяем на
PHP:
switch(random(5))
Там где у нас
PHP:
case 3: Player[playerid][pWarn] = 0;, SetPVarString(playerid,"Priz","Снятие всех варнов");
Или подобная ерунда, добавляем ниже:
PHP:
case 4: Твой приз, SetPVarString(playerid,"Priz","Текст");
С кейсами тот же фокус, только надо добавить +1 проверку
PHP:
if(GetPVarInt(playerid, "Case") == 4)






Если у вас есть предложения по улучшению системы, или вы нашли баг, пишите.
Пикап находится в том самом месте которое на скринах, ЖДСФ, советую поменять координаты на свою.

На создание системы ушло 20-25 минут.

Надеюсь вы оцените старания.:)
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу