• Страница 1 из 1
  • 1
Модератор форума: [east_side]_trane, drifter-dron, valych, admin  
pawno урок группы
adminДата: Понедельник, 26.03.2012, 13:49:10 | Сообщение # 1

Группа: Администраторы
Сообщений: 3869
И так решил заново выкладывать уроки в раз два дня.
Этот урок будет посвещен к группе :)
верху мода:
Code
#include <zcmd> // http://forum.sa-mp.com/showthread.php?t=91354 - обновление инклуда смотрите по этой теме
#define MAX_GROUPS 100 // макс.кол-во групп

enum ginfo
{
  grname[75],
  leader,
  active
};

enum pginfo
{
  gid,
  order,
  invited,
  attemptjoin
};

new group[MAX_PLAYERS][pginfo];
new groupinfo[MAX_GROUPS][ginfo];


Ищем public OnGameModeInit() и туда вставляем:
Code
for(new x; x<MAX_PLAYERS; x++)
  {
   group[x][gid] = -1;
   group[x][order] = -1;
   group[x][invited] = -1;
   group[x][attemptjoin] = -1;
  }

Примерно так должен быть public:
Code
public OnGameModeInit()
{
  for(new x; x<MAX_PLAYERS; x++)
  {
   group[x][gid] = -1;
   group[x][order] = -1;
   group[x][invited] = -1;
   group[x][attemptjoin] = -1;
  }
  return 1;
}

Ищем public OnPlayerConnect(playerid) и туда вставляем:
Code
group[playerid][gid] = -1;
  group[playerid][invited] = -1;
  group[playerid][attemptjoin] = -1;

Примерно так должен быть public:
Code
public OnPlayerConnect(playerid)
{
  group[playerid][gid] = -1;
  group[playerid][invited] = -1;
  group[playerid][attemptjoin] = -1;
  return 1;
}

Ищем public OnPlayerDisconnect(playerid, reason) и туда вставляем:
Code
LeaveGroup(playerid, 2);

Примерно так должен быть public:
Code
public OnPlayerDisconnect(playerid, reason)
{
     LeaveGroup(playerid, 2);
  return 1;
}

После этого в любое место всталяем:
Code
COMMAND:groupcreate(playerid, params[])
{
    if(group[playerid][gid] != -1) return SendClientMessage(playerid, 0xFF0000, "Оставьте вашу группу с {FFFFFF}/groupleave{FF0000} Перед созданием новой!");
    if(strlen(params) > 49 || strlen(params) < 3) return SendClientMessage(playerid, 0xFF0000, "Использование: {FFFFFF}/groupcreate{FF0000} (Название группы 3-50 символ)!");
  if(IsGroupTaken(params)) return SendClientMessage(playerid, 0xFF0000, "Название группы уже используется!");
  CreateGroup(params, playerid);
    return 1;
}

COMMAND:groupleave(playerid, params[])
{
  if(group[playerid][gid] == -1) return SendClientMessage(playerid, 0xFF0000, "Вы не в группе, чтобы оставить одну!");
   LeaveGroup(playerid, 0);
   return 1;
}

COMMAND:groupinvite(playerid, params[])
{
  if(group[playerid][order] != 1) return SendClientMessage(playerid, 0xFF0000, "Вы не являетесь лидером группы, вы не можете пригласить людей!");
  new cid;
  if(isnull(params)) return SendClientMessage(playerid, 0xFF0000, "Использование: {FFFFFF}/Groupinvite{FF0000} (игрока id)");
  cid = strval(params);
  if(!IsPlayerConnected(cid)) return SendClientMessage(playerid, 0xFF0000, "id игрока не в сети!");
  if(group[cid][gid] == group[playerid][gid]) return SendClientMessage(playerid, 0xFF0000, "Игрок уже в вашей группе!");
   if(group[cid][invited] == group[playerid][gid]) return SendClientMessage(playerid, 0xFF0000, "Игрок уже пригласил в свою группу!");
  if(group[cid][attemptjoin] == group[playerid][gid]) return GroupJoin(cid, group[playerid][gid]);
  group[cid][invited] = group[playerid][gid];
   new string[125], pname[24];
   GetPlayerName(playerid, pname, 24);
   format(string, sizeof(string), "Вы были приглашены в группу , присоединиться к группе {FFFFFF}%s(%d){FFCC66} приглошение от {FFFFFF}%s(%d). /groupjoin %d", groupinfo[group[playerid][gid]][grname], group[playerid][gid], pname, playerid, group[playerid][gid]);
  SendClientMessage(cid, 0xFFCC66, string);
   GetPlayerName(cid, pname, 24);
  format(string, sizeof(string), "Вы пригласили {FFFFFF}%s(%d){FFCC66} вашей группе!", pname, cid);
  SendClientMessage(playerid, 0xFFCC66, string);
   return 1;
}

COMMAND:groupleader(playerid, params[])
{
  if(group[playerid][order] != 1) return SendClientMessage(playerid, 0xFF0000, "Вы не являетесь лидером группы, вы не можете изменить лидером!");
  new cid;
  if(isnull(params)) return SendClientMessage(playerid, 0xFF0000, "Использование: {FFFFFF}/Groupleader{FF0000} (игрока id)");
  cid = strval(params);
  if(!IsPlayerConnected(cid)) return SendClientMessage(playerid, 0xFF0000, "id игрока не в сети!");
  if(cid == playerid)  return SendClientMessage(playerid, 0xFF0000, "Вы уже лидер группы.");
  if(group[playerid][gid] != group[cid][gid]) return SendClientMessage(playerid, 0xFF0000, "Игрок не находится в вашей группе!");
  ChangeMemberOrder(group[playerid][gid], 1);
  group[playerid][order] = GroupMembers(group[playerid][gid]);
  return 1;
}

COMMAND:groupjoin(playerid, params[])
{
  if(group[playerid][gid] != -1) return SendClientMessage(playerid, 0xFF0000, "Вы уже находитесь в группе! Оставьте ваш текущий до прихода другого!");
  new grid;
  if( (isnull(params) && group[playerid][invited] != -1 ) || ( strval(params) == group[playerid][invited] && group[playerid][invited] != -1) ) return GroupJoin(playerid, group[playerid][invited]);
  if(isnull(params)) return SendClientMessage(playerid, 0xFF0000, "Использование: {FFFFFF}/groupjoin{FF0000} (id группы)");
  grid = strval(params);
  if(!groupinfo[grid][active]) return SendClientMessage(playerid, 0xFF0000, "В группу в которую вы пытались присоединиться не существует!");
  group[playerid][attemptjoin] = grid;
  new string[125], pname[24];
  GetPlayerName(playerid, pname, 24);
  format(string, sizeof(string), "Вы отправили заявку на приглошение к группе %s(ID:%d)", groupinfo[grid][grname], grid);
  SendClientMessage(playerid, 0xFFCC66, string);
  format(string, sizeof(string), "{FFFFFF}%s(%d) {FFCC66} отправили заявку на приглошение к группе. Введите /groupinvite %d принять", pname, playerid, playerid);
  SendMessageToLeader(grid, string);
  return 1;
}

COMMAND:groupkick(playerid, params[])
{
  if(group[playerid][order] != 1) return SendClientMessage(playerid, 0xFF0000, "Вы не являетесь лидером группы, вы не можете принять заявку!");
  new cid;
  if(isnull(params)) return SendClientMessage(playerid, 0xFF0000, "Использование: {FFFFFF}/Groupkick{FF0000} (id игрока)");
  cid = strval(params);
  if(!IsPlayerConnected(cid)) return SendClientMessage(playerid, 0xFF0000, "id игрока не в сети!");
  if(cid == playerid)  return SendClientMessage(playerid, 0xFF0000, "Вы не можете убрать ,  себя с группы.");
  if(group[playerid][gid] != group[cid][gid]) return SendClientMessage(playerid, 0xFF0000, "Игрок не находится в вашей группе!");
  LeaveGroup(cid, 1);
  return 1;
}

COMMAND:groupmessage(playerid, params[])
{
  if(group[playerid][gid] == -1) return SendClientMessage(playerid, 0xFF0000, "Вы не в группе, вы не можете группировать сообщения!");
  if(isnull(params)) return SendClientMessage(playerid, 0xFF0000, "Использование: {FFFFFF}/gm{FF0000} (сообщения)");
  new pname[24], string[140+24];
  GetPlayerName(playerid, pname, 24);
  format(string, sizeof(string), "%s(%d): %s", pname, playerid, params);
  SendMessageToAllGroupMembers(group[playerid][gid], string);
  return 1;
}

COMMAND:grouplist(playerid, params[])
{
     if(isnull(params) && group[playerid][gid] == -1) return SendClientMessage(playerid, 0xFF0000, "Использование: {FFFFFF}/grouplist{FF0000} (группа)");
  if(isnull(params))
  {
    DisplayGroupMembers(group[playerid][gid], playerid);
      return 1;
  }
   new grid = strval(params);
    if(!groupinfo[grid][active]) return SendClientMessage(playerid, 0xFF0000, "id группы вы ввели не активен!");
     DisplayGroupMembers(grid, playerid);
  return 1;
}

COMMAND:groups(playerid, params[])
{
     ListGroups(playerid);
     return 1;
}

COMMAND:grl(playerid, params[])
  return cmd_groupleave(playerid, params);

COMMAND:grc(playerid, params[])
  return cmd_groupcreate(playerid, params);

COMMAND:gri(playerid, params[])
  return cmd_groupinvite(playerid, params);

COMMAND:grlead(playerid, params[])
  return cmd_groupleader(playerid, params);

COMMAND:grj(playerid, params[])
  return cmd_groupjoin(playerid, params);

COMMAND:grk(playerid, params[])
  return cmd_groupkick(playerid, params);

COMMAND:gm(playerid, params[])
  return cmd_groupmessage(playerid, params);

COMMAND:grlist(playerid, params[])
  return cmd_grouplist(playerid, params);

stock DisplayGroupMembers(groupid, playerid)
{
     new amount[2], string[200], shortstr[55], pname[24];
     format(string, sizeof(string), "Группа членов %s(ID:%d)", groupinfo[groupid][grname], groupid);
  SendClientMessage(playerid, 0xFFFFFF, string);
  string = "";
  for(new x; x<MAX_PLAYERS; x++)
  {
      if(group[x][gid] == groupid)
      {
          amount[0] ++;
          amount[1] ++;
          GetPlayerName(x, pname, 24);
          if(groupinfo[groupid][leader] != x) format(shortstr, sizeof(shortstr), "%s(%d),", pname, x);
          if(groupinfo[groupid][leader] == x) format(shortstr, sizeof(shortstr), "[Лидер]%s(%d),", pname, x);
          if(amount[1] == 1) format(string, sizeof(string), "%s", shortstr);
          if(amount[1] != 1) format(string, sizeof(string), "%s %s", string, shortstr);
    if(amount[0] == 6)
          {
              strdel(string, strlen(string)-1, strlen(string));
     SendClientMessage(playerid, 0xFFCC66, string);
        string = "";
        amount[0] = 0;
          }
      }
  }
  strdel(string, strlen(string)-1, strlen(string));
  if(amount[0] != 0) SendClientMessage(playerid, 0xFFCC66, string);
  return 1;
}

stock ListGroups(playerid)
{
  new amount[2], string[200], shortstr[55];
  SendClientMessage(playerid, 0xFFFFFF, "Текущий групп:");
  for(new x=0; x<MAX_GROUPS; x++)
  {
   if(groupinfo[x][active])
   {
     amount[0] ++;
     amount[1] ++;
     format(shortstr, sizeof(shortstr), "%s(ID:%d)", groupinfo[x][grname], x);
    if(amount[1] == 1) format(string, sizeof(string), "%s", shortstr);
          if(amount[1] != 1) format(string, sizeof(string), "%s %s", string, shortstr);
    if(amount[0] == 4)
    {
        SendClientMessage(playerid, 0xFFCC66, string);
        string = "";
        amount[0] = 0;
    }
   }
  }
  if(amount[1] == 0) SendClientMessage(playerid, 0xFFFF00, "Есть в настоящее время нет активных групп!");
  if(amount[1] != 0) SendClientMessage(playerid, 0xFFCC66, string);
  return 1;
}

stock SendMessageToLeader(groupi, message[])
     return SendClientMessage(groupinfo[groupi][leader], 0xFFCC66, message);

stock GroupJoin(playerid, groupi)
{
  group[playerid][gid] = groupi;
  group[playerid][order] = GroupMembers(groupi);
     group[playerid][attemptjoin] = -1;
     group[playerid][invited] = -1;
     new pname[24], string[130];
  GetPlayerName(playerid, pname, 24);
     format(string, sizeof(string), "%s присоединился к вашей группе!", pname);
     SendMessageToAllGroupMembers(groupi, string);
  format(string, sizeof(string), "Вы присоединились к группе %s(ID:%d)", groupinfo[groupi][grname] ,groupi);
  SendClientMessage(playerid, 0xFFCC66, string);
  return 1;
}

stock FindNextSlot()
{
  new id;
  while(groupinfo[id][active]) id ++;
  return id;
}

stock IsGroupTaken(grpname[])
{
  for(new x; x<MAX_GROUPS; x++) if(!strcmp(grpname, groupinfo[x][grname], true) && strlen(groupinfo[x][grname]) != 0) return 1;
  return 0;
}

stock GroupInvite(playerid, groupid)
     return group[playerid][invited] = groupid;

stock CreateGroup(grpname[], owner)
{
  new slotid = FindNextSlot();
  groupinfo[slotid][leader] = owner;
  format(groupinfo[slotid][grname], 75, "%s", grpname);
  groupinfo[slotid][active] = 1;
  group[owner][gid] = slotid;
  group[owner][order] = 1;
  new string[120];
  format(string, sizeof(string), "Вы создали группу %s(ID:%d)", grpname, slotid);
  SendClientMessage(owner, 0xFFCC66, string);
  return slotid;
}

stock LeaveGroup(playerid, reason)
{
  new groupid = group[playerid][gid], orderid = group[playerid][order], string[100], pname[24];
  group[playerid][gid] = -1;
  group[playerid][order] = -1;
  GroupCheck(groupid, orderid);
  GetPlayerName(playerid, pname, 24);
  if(reason == 0)
  {
    format(string, sizeof(string), "{FFFFFF}%s(%d){FFCC66} оставил свою группу!", pname, playerid);
    SendClientMessage(playerid, 0xFFCC66, "Вы оставили вашу группу");
   }
  if(reason == 1)
  {
   format(string, sizeof(string), "{FFFFFF}%s(%d){FFCC66} оставил свою группу (выгнали лидера)!", pname, playerid);
         SendClientMessage(playerid, 0xFFCC66, "Вы выгнали из группы!");
  }
     if(reason == 2) format(string, sizeof(string), "{FFFFFF}%s(%d){FFCC66} оставил свою группу (отключен)!", pname, playerid);
  SendMessageToAllGroupMembers(groupid, string);
  return 1;
}

stock GroupCheck(groupid, orderid)
{
  new gmems = GroupMembers(groupid);
  if(!gmems) groupinfo[groupid][active] = 0;
  if(gmems != 0) ChangeMemberOrder(groupid, orderid);
  return 1;
}

stock GroupMembers(groupid)
{
     if(!groupinfo[groupid][active]) return 0;
  new groupmembers;
  for(new i; i<MAX_PLAYERS; i++) if(group[i][gid] == groupid) groupmembers++;
  return groupmembers;
}

stock ChangeMemberOrder(groupid, orderid)
{
  for(new x; x<MAX_PLAYERS; x++)
  {
   if(group[x][gid] != groupid || group[x][order] < orderid) continue;
   group[x][order] --;
   if(group[x][order] == 1)
   {
    groupinfo[groupid][leader] = x;
    new string[128], pname[24];
    GetPlayerName(x, pname, 24);
    format(string, sizeof(string), "{FFFFFF}%s(%d){FFCC66} был назначен новый руководитель группы!", pname, x);
    SendMessageToAllGroupMembers(groupid, string);
   }
  }
  return 1;
}

stock SendMessageToAllGroupMembers(groupid, message[])
{
  if(!groupinfo[groupid][active]) return 0;
  for(new x; x<MAX_PLAYERS; x++) if(group[x][gid] == groupid) SendClientMessage(x, 0xFFCC66, message);
  return 1;
}

Автор : 26_RUSSS


zm-jail.ru

Разработка сайта samp-pawno.ru


 
СообщениеИ так решил заново выкладывать уроки в раз два дня.
Этот урок будет посвещен к группе :)
верху мода:
Code
#include <zcmd> // http://forum.sa-mp.com/showthread.php?t=91354 - обновление инклуда смотрите по этой теме
#define MAX_GROUPS 100 // макс.кол-во групп

enum ginfo
{
  grname[75],
  leader,
  active
};

enum pginfo
{
  gid,
  order,
  invited,
  attemptjoin
};

new group[MAX_PLAYERS][pginfo];
new groupinfo[MAX_GROUPS][ginfo];


Ищем public OnGameModeInit() и туда вставляем:
Code
for(new x; x<MAX_PLAYERS; x++)
  {
   group[x][gid] = -1;
   group[x][order] = -1;
   group[x][invited] = -1;
   group[x][attemptjoin] = -1;
  }

Примерно так должен быть public:
Code
public OnGameModeInit()
{
  for(new x; x<MAX_PLAYERS; x++)
  {
   group[x][gid] = -1;
   group[x][order] = -1;
   group[x][invited] = -1;
   group[x][attemptjoin] = -1;
  }
  return 1;
}

Ищем public OnPlayerConnect(playerid) и туда вставляем:
Code
group[playerid][gid] = -1;
  group[playerid][invited] = -1;
  group[playerid][attemptjoin] = -1;

Примерно так должен быть public:
Code
public OnPlayerConnect(playerid)
{
  group[playerid][gid] = -1;
  group[playerid][invited] = -1;
  group[playerid][attemptjoin] = -1;
  return 1;
}

Ищем public OnPlayerDisconnect(playerid, reason) и туда вставляем:
Code
LeaveGroup(playerid, 2);

Примерно так должен быть public:
Code
public OnPlayerDisconnect(playerid, reason)
{
     LeaveGroup(playerid, 2);
  return 1;
}

После этого в любое место всталяем:
Code
COMMAND:groupcreate(playerid, params[])
{
    if(group[playerid][gid] != -1) return SendClientMessage(playerid, 0xFF0000, "Оставьте вашу группу с {FFFFFF}/groupleave{FF0000} Перед созданием новой!");
    if(strlen(params) > 49 || strlen(params) < 3) return SendClientMessage(playerid, 0xFF0000, "Использование: {FFFFFF}/groupcreate{FF0000} (Название группы 3-50 символ)!");
  if(IsGroupTaken(params)) return SendClientMessage(playerid, 0xFF0000, "Название группы уже используется!");
  CreateGroup(params, playerid);
    return 1;
}

COMMAND:groupleave(playerid, params[])
{
  if(group[playerid][gid] == -1) return SendClientMessage(playerid, 0xFF0000, "Вы не в группе, чтобы оставить одну!");
   LeaveGroup(playerid, 0);
   return 1;
}

COMMAND:groupinvite(playerid, params[])
{
  if(group[playerid][order] != 1) return SendClientMessage(playerid, 0xFF0000, "Вы не являетесь лидером группы, вы не можете пригласить людей!");
  new cid;
  if(isnull(params)) return SendClientMessage(playerid, 0xFF0000, "Использование: {FFFFFF}/Groupinvite{FF0000} (игрока id)");
  cid = strval(params);
  if(!IsPlayerConnected(cid)) return SendClientMessage(playerid, 0xFF0000, "id игрока не в сети!");
  if(group[cid][gid] == group[playerid][gid]) return SendClientMessage(playerid, 0xFF0000, "Игрок уже в вашей группе!");
   if(group[cid][invited] == group[playerid][gid]) return SendClientMessage(playerid, 0xFF0000, "Игрок уже пригласил в свою группу!");
  if(group[cid][attemptjoin] == group[playerid][gid]) return GroupJoin(cid, group[playerid][gid]);
  group[cid][invited] = group[playerid][gid];
   new string[125], pname[24];
   GetPlayerName(playerid, pname, 24);
   format(string, sizeof(string), "Вы были приглашены в группу , присоединиться к группе {FFFFFF}%s(%d){FFCC66} приглошение от {FFFFFF}%s(%d). /groupjoin %d", groupinfo[group[playerid][gid]][grname], group[playerid][gid], pname, playerid, group[playerid][gid]);
  SendClientMessage(cid, 0xFFCC66, string);
   GetPlayerName(cid, pname, 24);
  format(string, sizeof(string), "Вы пригласили {FFFFFF}%s(%d){FFCC66} вашей группе!", pname, cid);
  SendClientMessage(playerid, 0xFFCC66, string);
   return 1;
}

COMMAND:groupleader(playerid, params[])
{
  if(group[playerid][order] != 1) return SendClientMessage(playerid, 0xFF0000, "Вы не являетесь лидером группы, вы не можете изменить лидером!");
  new cid;
  if(isnull(params)) return SendClientMessage(playerid, 0xFF0000, "Использование: {FFFFFF}/Groupleader{FF0000} (игрока id)");
  cid = strval(params);
  if(!IsPlayerConnected(cid)) return SendClientMessage(playerid, 0xFF0000, "id игрока не в сети!");
  if(cid == playerid)  return SendClientMessage(playerid, 0xFF0000, "Вы уже лидер группы.");
  if(group[playerid][gid] != group[cid][gid]) return SendClientMessage(playerid, 0xFF0000, "Игрок не находится в вашей группе!");
  ChangeMemberOrder(group[playerid][gid], 1);
  group[playerid][order] = GroupMembers(group[playerid][gid]);
  return 1;
}

COMMAND:groupjoin(playerid, params[])
{
  if(group[playerid][gid] != -1) return SendClientMessage(playerid, 0xFF0000, "Вы уже находитесь в группе! Оставьте ваш текущий до прихода другого!");
  new grid;
  if( (isnull(params) && group[playerid][invited] != -1 ) || ( strval(params) == group[playerid][invited] && group[playerid][invited] != -1) ) return GroupJoin(playerid, group[playerid][invited]);
  if(isnull(params)) return SendClientMessage(playerid, 0xFF0000, "Использование: {FFFFFF}/groupjoin{FF0000} (id группы)");
  grid = strval(params);
  if(!groupinfo[grid][active]) return SendClientMessage(playerid, 0xFF0000, "В группу в которую вы пытались присоединиться не существует!");
  group[playerid][attemptjoin] = grid;
  new string[125], pname[24];
  GetPlayerName(playerid, pname, 24);
  format(string, sizeof(string), "Вы отправили заявку на приглошение к группе %s(ID:%d)", groupinfo[grid][grname], grid);
  SendClientMessage(playerid, 0xFFCC66, string);
  format(string, sizeof(string), "{FFFFFF}%s(%d) {FFCC66} отправили заявку на приглошение к группе. Введите /groupinvite %d принять", pname, playerid, playerid);
  SendMessageToLeader(grid, string);
  return 1;
}

COMMAND:groupkick(playerid, params[])
{
  if(group[playerid][order] != 1) return SendClientMessage(playerid, 0xFF0000, "Вы не являетесь лидером группы, вы не можете принять заявку!");
  new cid;
  if(isnull(params)) return SendClientMessage(playerid, 0xFF0000, "Использование: {FFFFFF}/Groupkick{FF0000} (id игрока)");
  cid = strval(params);
  if(!IsPlayerConnected(cid)) return SendClientMessage(playerid, 0xFF0000, "id игрока не в сети!");
  if(cid == playerid)  return SendClientMessage(playerid, 0xFF0000, "Вы не можете убрать ,  себя с группы.");
  if(group[playerid][gid] != group[cid][gid]) return SendClientMessage(playerid, 0xFF0000, "Игрок не находится в вашей группе!");
  LeaveGroup(cid, 1);
  return 1;
}

COMMAND:groupmessage(playerid, params[])
{
  if(group[playerid][gid] == -1) return SendClientMessage(playerid, 0xFF0000, "Вы не в группе, вы не можете группировать сообщения!");
  if(isnull(params)) return SendClientMessage(playerid, 0xFF0000, "Использование: {FFFFFF}/gm{FF0000} (сообщения)");
  new pname[24], string[140+24];
  GetPlayerName(playerid, pname, 24);
  format(string, sizeof(string), "%s(%d): %s", pname, playerid, params);
  SendMessageToAllGroupMembers(group[playerid][gid], string);
  return 1;
}

COMMAND:grouplist(playerid, params[])
{
     if(isnull(params) && group[playerid][gid] == -1) return SendClientMessage(playerid, 0xFF0000, "Использование: {FFFFFF}/grouplist{FF0000} (группа)");
  if(isnull(params))
  {
    DisplayGroupMembers(group[playerid][gid], playerid);
      return 1;
  }
   new grid = strval(params);
    if(!groupinfo[grid][active]) return SendClientMessage(playerid, 0xFF0000, "id группы вы ввели не активен!");
     DisplayGroupMembers(grid, playerid);
  return 1;
}

COMMAND:groups(playerid, params[])
{
     ListGroups(playerid);
     return 1;
}

COMMAND:grl(playerid, params[])
  return cmd_groupleave(playerid, params);

COMMAND:grc(playerid, params[])
  return cmd_groupcreate(playerid, params);

COMMAND:gri(playerid, params[])
  return cmd_groupinvite(playerid, params);

COMMAND:grlead(playerid, params[])
  return cmd_groupleader(playerid, params);

COMMAND:grj(playerid, params[])
  return cmd_groupjoin(playerid, params);

COMMAND:grk(playerid, params[])
  return cmd_groupkick(playerid, params);

COMMAND:gm(playerid, params[])
  return cmd_groupmessage(playerid, params);

COMMAND:grlist(playerid, params[])
  return cmd_grouplist(playerid, params);

stock DisplayGroupMembers(groupid, playerid)
{
     new amount[2], string[200], shortstr[55], pname[24];
     format(string, sizeof(string), "Группа членов %s(ID:%d)", groupinfo[groupid][grname], groupid);
  SendClientMessage(playerid, 0xFFFFFF, string);
  string = "";
  for(new x; x<MAX_PLAYERS; x++)
  {
      if(group[x][gid] == groupid)
      {
          amount[0] ++;
          amount[1] ++;
          GetPlayerName(x, pname, 24);
          if(groupinfo[groupid][leader] != x) format(shortstr, sizeof(shortstr), "%s(%d),", pname, x);
          if(groupinfo[groupid][leader] == x) format(shortstr, sizeof(shortstr), "[Лидер]%s(%d),", pname, x);
          if(amount[1] == 1) format(string, sizeof(string), "%s", shortstr);
          if(amount[1] != 1) format(string, sizeof(string), "%s %s", string, shortstr);
    if(amount[0] == 6)
          {
              strdel(string, strlen(string)-1, strlen(string));
     SendClientMessage(playerid, 0xFFCC66, string);
        string = "";
        amount[0] = 0;
          }
      }
  }
  strdel(string, strlen(string)-1, strlen(string));
  if(amount[0] != 0) SendClientMessage(playerid, 0xFFCC66, string);
  return 1;
}

stock ListGroups(playerid)
{
  new amount[2], string[200], shortstr[55];
  SendClientMessage(playerid, 0xFFFFFF, "Текущий групп:");
  for(new x=0; x<MAX_GROUPS; x++)
  {
   if(groupinfo[x][active])
   {
     amount[0] ++;
     amount[1] ++;
     format(shortstr, sizeof(shortstr), "%s(ID:%d)", groupinfo[x][grname], x);
    if(amount[1] == 1) format(string, sizeof(string), "%s", shortstr);
          if(amount[1] != 1) format(string, sizeof(string), "%s %s", string, shortstr);
    if(amount[0] == 4)
    {
        SendClientMessage(playerid, 0xFFCC66, string);
        string = "";
        amount[0] = 0;
    }
   }
  }
  if(amount[1] == 0) SendClientMessage(playerid, 0xFFFF00, "Есть в настоящее время нет активных групп!");
  if(amount[1] != 0) SendClientMessage(playerid, 0xFFCC66, string);
  return 1;
}

stock SendMessageToLeader(groupi, message[])
     return SendClientMessage(groupinfo[groupi][leader], 0xFFCC66, message);

stock GroupJoin(playerid, groupi)
{
  group[playerid][gid] = groupi;
  group[playerid][order] = GroupMembers(groupi);
     group[playerid][attemptjoin] = -1;
     group[playerid][invited] = -1;
     new pname[24], string[130];
  GetPlayerName(playerid, pname, 24);
     format(string, sizeof(string), "%s присоединился к вашей группе!", pname);
     SendMessageToAllGroupMembers(groupi, string);
  format(string, sizeof(string), "Вы присоединились к группе %s(ID:%d)", groupinfo[groupi][grname] ,groupi);
  SendClientMessage(playerid, 0xFFCC66, string);
  return 1;
}

stock FindNextSlot()
{
  new id;
  while(groupinfo[id][active]) id ++;
  return id;
}

stock IsGroupTaken(grpname[])
{
  for(new x; x<MAX_GROUPS; x++) if(!strcmp(grpname, groupinfo[x][grname], true) && strlen(groupinfo[x][grname]) != 0) return 1;
  return 0;
}

stock GroupInvite(playerid, groupid)
     return group[playerid][invited] = groupid;

stock CreateGroup(grpname[], owner)
{
  new slotid = FindNextSlot();
  groupinfo[slotid][leader] = owner;
  format(groupinfo[slotid][grname], 75, "%s", grpname);
  groupinfo[slotid][active] = 1;
  group[owner][gid] = slotid;
  group[owner][order] = 1;
  new string[120];
  format(string, sizeof(string), "Вы создали группу %s(ID:%d)", grpname, slotid);
  SendClientMessage(owner, 0xFFCC66, string);
  return slotid;
}

stock LeaveGroup(playerid, reason)
{
  new groupid = group[playerid][gid], orderid = group[playerid][order], string[100], pname[24];
  group[playerid][gid] = -1;
  group[playerid][order] = -1;
  GroupCheck(groupid, orderid);
  GetPlayerName(playerid, pname, 24);
  if(reason == 0)
  {
    format(string, sizeof(string), "{FFFFFF}%s(%d){FFCC66} оставил свою группу!", pname, playerid);
    SendClientMessage(playerid, 0xFFCC66, "Вы оставили вашу группу");
   }
  if(reason == 1)
  {
   format(string, sizeof(string), "{FFFFFF}%s(%d){FFCC66} оставил свою группу (выгнали лидера)!", pname, playerid);
         SendClientMessage(playerid, 0xFFCC66, "Вы выгнали из группы!");
  }
     if(reason == 2) format(string, sizeof(string), "{FFFFFF}%s(%d){FFCC66} оставил свою группу (отключен)!", pname, playerid);
  SendMessageToAllGroupMembers(groupid, string);
  return 1;
}

stock GroupCheck(groupid, orderid)
{
  new gmems = GroupMembers(groupid);
  if(!gmems) groupinfo[groupid][active] = 0;
  if(gmems != 0) ChangeMemberOrder(groupid, orderid);
  return 1;
}

stock GroupMembers(groupid)
{
     if(!groupinfo[groupid][active]) return 0;
  new groupmembers;
  for(new i; i<MAX_PLAYERS; i++) if(group[i][gid] == groupid) groupmembers++;
  return groupmembers;
}

stock ChangeMemberOrder(groupid, orderid)
{
  for(new x; x<MAX_PLAYERS; x++)
  {
   if(group[x][gid] != groupid || group[x][order] < orderid) continue;
   group[x][order] --;
   if(group[x][order] == 1)
   {
    groupinfo[groupid][leader] = x;
    new string[128], pname[24];
    GetPlayerName(x, pname, 24);
    format(string, sizeof(string), "{FFFFFF}%s(%d){FFCC66} был назначен новый руководитель группы!", pname, x);
    SendMessageToAllGroupMembers(groupid, string);
   }
  }
  return 1;
}

stock SendMessageToAllGroupMembers(groupid, message[])
{
  if(!groupinfo[groupid][active]) return 0;
  for(new x; x<MAX_PLAYERS; x++) if(group[x][gid] == groupid) SendClientMessage(x, 0xFFCC66, message);
  return 1;
}

Автор : 26_RUSSS

Автор - admin
Дата добавления - 26.03.2012 в 13:49:10
[HHT]DRONДата: Понедельник, 26.03.2012, 14:54:15 | Сообщение # 2

Группа: Пользователи
Сообщений: 91
в раз два дня?
хороший урок мне понравился,для ДМ мода подойдет?

Добавлено (26.03.2012, 14:54:15)
---------------------------------------------
в чем суть скрипта?кто подскажет как можно сделать что бы у игроков над головой в виде 3D текста было название группы?и как сделать чтобы они не пропадали после выхода из игры?


[HHT]DRON
109.68.190:242:7868
 
Сообщениев раз два дня?
хороший урок мне понравился,для ДМ мода подойдет?

Добавлено (26.03.2012, 14:54:15)
---------------------------------------------
в чем суть скрипта?кто подскажет как можно сделать что бы у игроков над головой в виде 3D текста было название группы?и как сделать чтобы они не пропадали после выхода из игры?


Автор - [HHT]DRON
Дата добавления - 26.03.2012 в 14:54:15
adminДата: Понедельник, 26.03.2012, 15:01:14 | Сообщение # 3

Группа: Администраторы
Сообщений: 3869
суть в скрипта что можно брать себе друзей , знакомых в группу.. ну а если что-то еще надо вам то делайте))


zm-jail.ru

Разработка сайта samp-pawno.ru


 
Сообщениесуть в скрипта что можно брать себе друзей , знакомых в группу.. ну а если что-то еще надо вам то делайте))

Автор - admin
Дата добавления - 26.03.2012 в 15:01:14
[HHT]DRONДата: Понедельник, 26.03.2012, 15:04:23 | Сообщение # 4

Группа: Пользователи
Сообщений: 91
ладно спасибо,хороший урок.Можешь урок создание банка для ДМ/ТДМ мода написать?А то у меня не получается сделать,да и найти подходящий не могу все какие то замудренные,мне просто надо пополнить счет,снять со счета и посмотреть баланс,ну и что бы сохранялись данные

[HHT]DRON
109.68.190:242:7868
 
Сообщениеладно спасибо,хороший урок.Можешь урок создание банка для ДМ/ТДМ мода написать?А то у меня не получается сделать,да и найти подходящий не могу все какие то замудренные,мне просто надо пополнить счет,снять со счета и посмотреть баланс,ну и что бы сохранялись данные

Автор - [HHT]DRON
Дата добавления - 26.03.2012 в 15:04:23
adminДата: Вторник, 27.03.2012, 07:03:34 | Сообщение # 5

Группа: Администраторы
Сообщений: 3869
[HHT]DRON, вот что делал я заберай


zm-jail.ru

Разработка сайта samp-pawno.ru


 
Сообщение[HHT]DRON, вот что делал я заберай

Автор - admin
Дата добавления - 27.03.2012 в 07:03:34
  • Страница 1 из 1
  • 1
Поиск:
Загрузка страницы, займет меньше минуты...
Загрузка...

Статистика Форума
Последнии темы Читаемые темы Лучшие пользователи Новые пользователи
Система телефонов поломалась
Не в себе
фильм скалайн
Трансформеры 3
форсаж 6
Ищу [FS]Для админок на сервер
нужны координаты карты для отметки зон...
Помогите найти мод
pawno урок автоматические ворота
обращение к скриптерам.
Вопросы по скриптингу
Ваши ошибки при компиляции GM/FS

Вопросы по скриптингу

(1081)

Считаем до 1000

(274)

Ваши ошибки при компиляция gm

(260)

Набор в команду

(80)

Ваши ошибки при компиляции GM/FS

(71)

вопроосы по скриптингу от 22.04.2013

(64)

Баннеробмен

(64)

несколько команд на samp 0.3 c

(64)

Оценки сайта samp-pawno.ru

(55)

Заказ хостинга

(51)

Набор в команду(форум)

(45)

Урок №61 по созданию системы авто для GodFather

(45)

admin

(3869)

[east_side]_trane

(443)

TWiX

(316)

valych

(501)

drifter-dron

(477)

danik_rok

(317)

Dimka_71rus

(360)

Drifter96

(300)

MaNb9K

(220)

[MTA]MaPeR5518

(181)

Dima_Tkach

(107)

Nik_Ull

(184)

system32xzxz

(Четверг 09:25:24)

torbin169

(Суббота 23:09:29)

kuchuk_00

(Суббота 17:10:14)

artem_boyko_3

(Суббота 15:57:37)

greggelbak

(Среда 18:29:37)

vladisvlavs

(Среда 13:51:57)

add02102002

(Понедельник 22:37:15)

Диман221

(Понедельник 18:12:45)

almas051004

(Воскресенье 11:05:32)

megasuccessms

(Суббота 14:15:36)

nawe

(Пятница 22:25:23)

swoysb

(Пятница 14:55:29)

Вверх
23:43:33
ОбновитьСмайлыУправление мини-чатом
ЧАТ-PAWNO
2010-2025

vkontakte :samp-pawno.ru: