И так решил заново выкладывать уроки в раз два дня. Этот урок будет посвещен к группе верху мода:
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 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; }
в раз два дня? хороший урок мне понравился,для ДМ мода подойдет?
Добавлено (26.03.2012, 14:54:15) --------------------------------------------- в чем суть скрипта?кто подскажет как можно сделать что бы у игроков над головой в виде 3D текста было название группы?и как сделать чтобы они не пропадали после выхода из игры?
ладно спасибо,хороший урок.Можешь урок создание банка для ДМ/ТДМ мода написать?А то у меня не получается сделать,да и найти подходящий не могу все какие то замудренные,мне просто надо пополнить счет,снять со счета и посмотреть баланс,ну и что бы сохранялись данные [HHT]DRON 109.68.190:242:7868