Код:
Описание скрипта будет таким: /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; }