Код:
Описание скрипта будет таким:
/donate - положить в общак ( деньги,маты,наркотики )
/vzat - взять с общака (деньги,маты,наркотики )

Ну чтож начнем!
Ко всем define добавим:
#define DIALOG_OBSHAK 74
#define DIALOG_OBSHAK_ 75
#define DIALOG_OBSHAK_VZAT 76
#define DIALOG_OBSHAK_POLOZH 77
#define Player PlayerInfo


Ну теперь ко всем new добавим:
new Nazvanie[MAX_PLAYERS][25];


И еще добавим один enum
enum oInfo
{
oMoney,
oMats,
oDrugs,
};
new ObshakInfo[20][oInfo];


Теперь добавляем в public OnGameModeint вот что:
LoadObshak();
SaveObshak();


Ну теперь дорогие друзья добавим две команды в public OnPlayerCommandText:
первая команда:
if (strcmp(cmd, "/vzat", true) == 0)
{
new x_nr[256];
x_nr = strtok(cmdtext, idx);
tmp = strtok(cmdtext, idx);
new kolvo = strval(tmp);
if(kolvo == 0) return 1;
if(kolvo < 0) return 1;
new fam;
GetPlayerName(playerid, sendername, sizeof(sendername));
if(Player[playerid][pLeader] >0) fam = Player[playerid][pLeader];
else fam = Player[playerid][pMember];
if(strcmp(x_nr,"money",true) == 0)
{
if(ObshakInfo[fam-1][oMoney] < kolvo) return SendClientMessage(playerid, COLOR_GREY, "В общаке нет столько денег");
ObshakInfo[fam-1][oMoney] -= kolvo;
GivePlayerMoney(playerid,kolvo);
format(string,sizeof(string),"Лидер %s[%d] взял из общака %d$.В общаке: %d$",sendername,playerid,kolvo,ObshakInfo[fam-1][oMoney]);
SendTeamMessage(fam, TEAM_AZTECAS_COLOR, string);
SaveObshak();
return 1;
}
if(strcmp(x_nr,"mats",true) == 0)
{
if(ObshakInfo[fam-1][oMats] < kolvo) return SendClientMessage(playerid, COLOR_GREY, "В общаке нет столько материалов");
ObshakInfo[fam-1][oMats] -= kolvo;
Player[playerid][pMats] += kolvo;
format(string,sizeof(string),"Лидер %s[%d] взял из общака %d материалов.В общаке: %d матов",sendername,playerid,kolvo,ObshakInfo[fam-1][oMats]);
SendTeamMessage(fam, TEAM_AZTECAS_COLOR, string);
SaveObshak();
return 1;
}
if(strcmp(x_nr,"drugs",true) == 0)
{
if(ObshakInfo[fam-1][oDrugs] < kolvo) return SendClientMessage(playerid, COLOR_GREY, "В общаке нет столько наркотиков");
ObshakInfo[fam-1][oDrugs] -= kolvo;
Player[playerid][pDrugs] += kolvo;
format(string,sizeof(string),"Лидер %s[%d] взял из общака %d наркотиков.В общаке: %d нарко",sendername,playerid,kolvo,ObshakInfo[fam-1][oDrugs]);
SendTeamMessage(fam, TEAM_AZTECAS_COLOR, string);
SaveObshak();
return 1;
}
}


И вторую команду тоже добавим:
if (strcmp(cmd, "/donate", true) == 0)
{
new x_nr[256];
x_nr = strtok(cmdtext, idx);
tmp = strtok(cmdtext, idx);
new kolvo = strval(tmp);
if(kolvo == 0) return 1;
if(kolvo < 0) return 1;
new fam;
GetPlayerName(playerid, sendername, sizeof(sendername));
if(Player[playerid][pLeader] >0) fam = Player[playerid][pLeader];
else fam = Player[playerid][pMember];
if(kolvo == 0) return 1;
if(kolvo < 0) kolvo = -1 * kolvo;
if(strcmp(x_nr,"money",true) == 0)
{
if(GetPlayerMoney(playerid) < kolvo) return SendClientMessage(playerid, COLOR_GREY, "У тебя нет столько денег");
ObshakInfo[fam-1][oMoney] += kolvo;
GivePlayerMoney(playerid,-kolvo);
format(string,sizeof(string),"Игрок %s[%d] положил в общак %d$.В общаке: %d$",sendername,playerid,kolvo,ObshakInfo[fam-1][oMoney]);
SendTeamMessage(fam, TEAM_AZTECAS_COLOR, string);
SaveObshak();
return 1;
}
if(strcmp(x_nr,"mats",true) == 0)
{
if(Player[playerid][pMats] < kolvo) return SendClientMessage(playerid, COLOR_GREY, "У тебя нет столько материалов");
ObshakInfo[fam-1][oMats] += kolvo;
Player[playerid][pMats] -= kolvo;
format(string,sizeof(string),"Игрок %s[%d] положил в общак %d материалов.В общаке: %d матов",sendername,playerid,kolvo,ObshakInfo[fam-1][oMats]);
SendTeamMessage(fam, TEAM_AZTECAS_COLOR, string);
SaveObshak();
return 1;
}
if(strcmp(x_nr,"drugs",true) == 0)
{
if(Player[playerid][pDrugs] < kolvo) return SendClientMessage(playerid, COLOR_GREY, "У тебя нет столько наркотиков");
ObshakInfo[fam-1][oDrugs] += kolvo;
Player[playerid][pDrugs] -= kolvo;
format(string,sizeof(string),"Игрок %s[%d] положил в общак %d наркотиков.В общаке: %d нарко",sendername,playerid,kolvo,ObshakInfo[fam-1][oDrugs]);
SendTeamMessage(fam, TEAM_AZTECAS_COLOR, string);
SaveObshak();
return 1;
}
}


Ну и теперь создадим диолог добавляем в public OnDialogResponse:
else if(dialogid == DIALOG_OBSHAK)
{
if(response)
{
if(listitem == 0)
{
format(Nazvanie[playerid],25,"money");
ShowPlayerDialog(playerid,DIALOG_OBSHAK_,DIALOG_STYLE_LIST,"Деньги","Взять\nПоложить","Ок","Назад");
return 1;
}
if(listitem == 1)
{
format(Nazvanie[playerid],25,"drugs");
ShowPlayerDialog(playerid,DIALOG_OBSHAK_,DIALOG_STYLE_LIST,"Наркотики","Взять\nПоложить","Ок","Назад");
return 1;
}
if(listitem == 2)
{
format(Nazvanie[playerid],25,"mats");
ShowPlayerDialog(playerid,DIALOG_OBSHAK_,DIALOG_STYLE_LIST,"Материалы","Взять\nПоложить","Ок","Назад");
return 1;
}
}
}
//------------------------------------------------------------------------------
else if(dialogid == DIALOG_OBSHAK_)
{
if(response)
{
if(listitem == 0)
{
if(Player[playerid][pLeader] == 0) return SendClientMessage(playerid,COLOR_GREY,"Доступно только лидерам!");
ShowPlayerDialog(playerid,DIALOG_OBSHAK_VZAT,DIALOG_STYLE_INPUT,"Взять","Сколько выхотите взять?","Ок","Назад");
return 1;
}
if(listitem == 1)
{
ShowPlayerDialog(playerid,DIALOG_OBSHAK_POLOZH,DIALOG_STYLE_INPUT,"Положить","Сколько выхотите положить?","Ок","Назад");
return 1;
}
}
}
else if(dialogid == DIALOG_OBSHAK_VZAT)
{
if(response)
{
format(string,sizeof(string),"/vzat %s %d",Nazvanie[playerid],strval(inputtext));
OnPlayerCommandText(playerid,string);
}
}
else if(dialogid == DIALOG_OBSHAK_POLOZH)
{
if(response)
{
format(string,sizeof(string),"/donate %s %d",Nazvanie[playerid],strval(inputtext));
OnPlayerCommandText(playerid,string);
}
}


Ну и теперь в конец мода ставим вот это:
forward LoadObshak();
forward SaveObshak();
public SaveObshak()
{
new idx;
new File: file2;
while (idx < 15)
{
new coordsstring[256];
format(coordsstring, sizeof(coordsstring), "%d|%d|%d\r\n",
ObshakInfo[idx][oMoney],
ObshakInfo[idx][oDrugs],
ObshakInfo[idx][oMats]);
if(idx == 0)
{
file2 = fopen("Obshak.txt", io_write);
}
else
{
file2 = fopen("Obshak.txt", io_append);
}
fwrite(file2, coordsstring);
idx++;
fclose(file2);
}
return 1;
}[/color]
[color=#ff0000]public LoadObshak()
{
new arrCoords[32][64];
new strFromFile2[256];
new File: file = fopen("Obshak.txt", io_read);
if (file)
{
new idx;
while (idx < 15)
{
fread(file, strFromFile2);
split(strFromFile2, arrCoords, '|');
ObshakInfo[idx][oMoney] = strval(arrCoords[0]);
ObshakInfo[idx][oDrugs] = strval(arrCoords[1]);
ObshakInfo[idx][oMats] = strval(arrCoords[2]);
idx++;
}
fclose(file);
printf("Общак загружен");
}
return 1;
}