Доступ к готовым решениям

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

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

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

Мануал Динамическое голосование [Как на Samp-Rp]

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

Gressie

Мастер
Автор и разработчик: Rex_Doberman
Скрины:


И так, под волной энтузиазма я решил опять скопировать что-нибудь у "старого,не много зажравшегося друга" Flazy и Co пару примочек. Данная системка позволит нам создавать Голосования во время игры, что очень удобно. Тем самым вы можете легко проводить: Выборы Мэра, опросы и Конкурсы.

Как происходит голосование:
  • Администратор добавляет вопрос
  • Администратор конфигурирует ответы на вопрос
  • Администратор расставляет Пикапы Голосования на тер-рии штата
  • Человек встает на пикап и делает свой выбор
  • Администратор выводит результаты голосования и удаляет все пикапы одной командой

ВНИМАНИЕ! ДЛЯ РАБОТОСПОСОБНОСТИ ТРЕБУЕТСЯ:
  • SPD защита встроенная в мод
  • Поддержка в моде ZCMD
  • Поддержка streamer plugin



Приступим:

1.Ко всем new добавляем:

PHP:
new LPick[20];
new idgols;
enum IGolos
{
Variant[128],
Golosov,
};
new Golosovan[10][IGolos];
new Text3D:GLT[20];
enum GG
{
NameGolos[128],
bool:goloson,
};
new pickupalla;
new GL2[GG];
В enum pInfo добавим:
PHP:
progolos,
и в OnPlayerConnect допишем
PHP:
PlayerInfo[playerid][progolos] = 0;
2.Добавляем новые команды в конец мода (требуется ZCMD):

PHP:
COMMAND:addgolosov(playerid,params[])
{
if(GL2[goloson] == true) return SendClientMessage(playerid,COLOR_GREY,"Голосование уже созданно");
SPD(playerid,32,1,"Создание голосования","Введите вопрос для голосования:","Далее","Отмена");
pickupalla = 0;
return 1;
}
COMMAND:addgpickup(playerid,params[])
 {
 if(GL2[goloson] == false) return SendClientMessage(playerid,COLOR_GREY,"Ошибка!");
 new Float:pox,Float:poy,Float:poz;
 new z = pickupalla;
 GetPlayerPos(playerid,pox,poy,poz);
 LPick[z] = CreateDynamicPickup(19134,23,pox,poy,poz);
 GLT[z] = CreateDynamic3DTextLabel("Внимание! Голосование",0x03c03cBB, pox, poy, poz + 0.63,10);
 pickupalla++;
 return 1;
 }
 
COMMAND:stopgolos(playerid,params[])                                            //Подсчет результатов и очистка буфера
 {
 new str[256];

 SendClientMessage(playerid,COLOR_WHITE,"Голосование остоновлено");
 SendClientMessageToAll(COLOR_WHITE,"По итогам Голосования:");
 for(new i;i<idgols;i++)
 {
 format(str,sizeof(str),"%s набирает %d голосов",Golosovan[i][Variant],Golosovan[i][Golosov]);
 SendClientMessageToAll(COLOR_WHITE,str);
 }
 for(new j;j<20;j++)                                                            // Уничтожение пикапов
 {
 DestroyDynamicPickup(LPick[j]);
 DestroyDynamic3DTextLabel(GLT[j]);
 }
 for(new g;g<GetMaxPlayers();g++)                                               //Обнуление голосования
 {
 PlayerInfo[g][progolos] = false;
 }
 idgols = 0;
 pickupalla = 0;
 return 1;
 }
3. В public OnDialogResponse(...)
PHP:
case 35:
 {
   if(!response) return 1;
     new str[256];
     for(new h;h<10;h++)
 {
 new str2[64];
 format(str2,sizeof(str2),"%s\n",Golosovan[h][Variant]);
 strcat(str,str2,128);
 }
 SPD(playerid,34,2,GL2[NameGolos],str,"Выбор","Отмена");

 }
	case 34:
 {
  if(!response) return 1;
  if(PlayerInfo[playerid][progolos] == true) return SendClientMessage(playerid,COLOR_GREY,"Вы не можете проголосовать больше одного раза");
  Golosovan[listitem][Golosov] ++;
  PlayerInfo[playerid][progolos] = true;
  SendClientMessage(playerid,COLOR_GREY,"Ваш голос защитан, Спасибо");
 }
	case 32:
	{
	if(!strlen(inputtext)) return 1;
	strmid(GL2[NameGolos],inputtext,0,128,256);
	format(string,sizeof(string),"Успешно.Название голосования - %s.",inputtext);
	SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
	GL2[goloson] = true;
	SPD(playerid,33,1,"Создание вариантов ответа","Введите Вариант №1","Далее","");
	}
	case 33:
	{
	if(!strlen(inputtext)) return 1;
    strmid(Golosovan[idgols][Variant],inputtext,0,128,256);
    SPD(playerid,33,1,"Создание вариантов ответа","Введите следующий вариант","Далее","");
    idgols++;
	}
В public OnPlayerPickUpDynamicPickup(playerid, pickupid) добавляем:
PHP:
new str[512];
for(new i; i < 20; i++)
{
if(pickupid == LPick[i])
 {
   if(PlayerInfo[playerid][progolos] == true) return SendClientMessage(playerid,COLOR_GREY,"Вы не можете проголосовать больше одного раза");
   new str[256];
   format(str,sizeof(str),"%s",GL2[NameGolos]);
   SPD(playerid,35,0,"Голосования",str,"Далее","Отмена");
 }
 }
Для МОДЕРАТОРОВ не нашёл категорию [Мануал] прошу поставить :)
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу