Поиск сообщества
Показаны результаты для тегов 'Система'.
Найдено: 11 результатов
-
Добрый день форумчане cr-mp.ru Нужна срочно система чтобы игроки не могли заходить на сервер без мод-пака! Заранее спасибо!
-
Вопрос Информация о входе и выходе игроков
Artemka0210191 опубликовал вопрос в Вопросы по программированию
Всем привет, хотел бы в мод вписать систему оповещения администрации, о входе/выходе игроков с причиной выхода. Как это можно реализовать? -
Здравствуйте, где-то на видео я видел одну систему... Описание: Игрок задает в репорт вопрос, администратор прописывает команду (/rep и дает ответ на вопрос). Потом у него появляется текстдрав с надписью : "Добавить ответ в базу?". Он нажимает "да". После того, как в следующий раз игрок напишет такой же вопрос, ответ будет дан сразу через бота. Как такое можно сделать!? Где создать базу? Помогите.
- 3 ответа
-
- система
- сохранения
- (и ещё 6 )
-
Добрый день!Таков вопрос,хочy из копий amazing вырезать только системy домов и авто то есть при покyпке машины то требовало дом,квартирy и в дрyгой мод вставить! Возможно ли это?
-
Ищу систему семьи как на Amazing RolePlay. Командный процесс dc_cmd.Помогите пожалуйста
- 3 ответа
-
- crmp mysql
- система
-
(и ещё 1 )
C тегом:
-
Всем доброе время суток, уважаемые пользователи. =) Столкнулся с очень не простой для меня проблемой, с системой даты рождения. Сама суть проблемы в том, что какое-либо я число не вводил, выдаёт ошибку и просит ввести верное число. Скину два кода, изначальный и второй код, который пытался сделать хоть как, но только чтобы работало. case 2992: if(response) { if(!strlen(inputtext)) return SPD(playerid,2992,DIALOG_STYLE_INPUT,"{DFFFB5}Возраст", "{BEBEBE}Введите свою дату рождения:\n(От {FFFF00}01/01/1980 {BEBEBE}до {FFFF00}31/12/1998{BEBEBE})", "Далее", "Выход"); if(strlen(inputtext) < 01/01/1980 || strlen(inputtext) > 31/12/1998) return SPD(playerid,2992,DIALOG_STYLE_INPUT,Error,"{BEBEBE}Год рождения должен быть от {FFFF00}01/01/1980 {BEBEBE}до {FFFF00}31/12/1998 {BEBEBE}", "Далее", "Выход"); for(new i = strlen(inputtext); i != 0; --i) switch(inputtext[i]) { case 'А'..'Я', 'а'..'я', ' ': return SPD(playerid,2992,DIALOG_STYLE_MSGBOX, Error,"{FF6347}Дата рождения не должена состоять из латиници!","Повтор",""); } //--------------------------------------- format(string, sizeof(string), "Files/Players/%s.ini", GN(playerid)); if(fexist(string)) { format(string, sizeof(string), "Files/Players/%s.ini", GN(playerid)); new File = ini_openFile(string); ini_setString(File,"pDataRog",inputtext); ini_closeFile(File); } PINFO[playerid][pPasport] = 1; new cenaecs; switch(PINFO[playerid][pLVL]) { case 1,2: cenaecs = 250; case 3,4,5: cenaecs = 5000; default: cenaecs = 5000; } PINFO[playerid][pCash]-=cenaecs; format(string, sizeof(string), "~r~-$%i",cenaecs); OnPlayerLogin(playerid,inputtext); return true; } Второй код будет попроще: case 2992: if(response) { if(!strval(inputtext)) return SPD(playerid,2992,DIALOG_STYLE_INPUT,"{DFFFB5}Возраст", "{BEBEBE}Введите свою дату рождения:\n(От {FFFF00}1/1/1970 {BEBEBE}до {FFFF00}31/12/1998 {BEBEBE}лет)", "Далее", "Выход"); if(strval(inputtext) < 1/1/1980 || strval(inputtext) > 31/12/1998) return SPD(playerid,2992,DIALOG_STYLE_INPUT,Error,"{BEBEBE}Год рождения должен быть от {FFFF00}1/1/1970 {BEBEBE}до {FFFF00}31/12/1998 {BEBEBE}", "Далее", "Выход"); PINFO[playerid][pDataRog] = strval(inputtext); PINFO[playerid][pPasport] = 1; return true;
-
Так, как у нас нету этого урока, решил его выложить. Все источники и авторы указаны ниже. Данный урок есть на официальном сайте www.sa-mp.com Автор статьи: newbienoob Что нам понадобиться в этой статье: - Mysql plugin - Whirlpool Начнем: 1. Ко всем include: #include <a_samp> #include <a_mysql> 2. Ко всем define: #define host "localhost" //ваш хост mysql. По умолчанию localhost #define user "root" //имя пользователя mysql #define db "server" //название базы данных #define pass "" //Ваш пароль mysql #define dregister 6287 //диалог регистрации #define dlogin 6288 // диалог авторизации 3. К глобальным переменным: static mysql, //переменная будет использоваться для управления в базе Name[MAX_PLAYERS][24], //для хранения имени игрока. IP[MAX_PLAYERS][16] //для хранения игрока ip. ; native WP_Hash(buffer[], len, const str[]); enum PDATA { ID, //для хранения игрока ID из базы данных, поэтому мы можем использовать его в любом месте позже Password[129],//загрузка пароля игрока в этот varible из базы данных Admin, //загрузка игрока на уровне администратора из базы данных в этой переменной VIP, //загрузка уровня VIP игрока из базы данных в этой переменной Money, //загрузка денег игрока из базы данных в этой переменной Float:posX, //загрузка X позиции игрока из базы данных в этой переменной Float:posY, //загрузка Y позиции игрока из базы данных в этой переменной Float:posZ //загрузка Z позиции игрока из базы данных в этой переменной } new pInfo[MAX_PLAYERS][PDATA]; //Переменная для хранения всего, что перечислили выше 4. В public OnGameModeInit(): mysql_log(LOG_ERROR | LOG_WARNING | LOG_DEBUG); //включаем отладку, так мы можем выявить проблемы(если есть) mysql = mysql_connect(host, user, db, pass); //подключение сервера к базе данных. if(mysql_errno(mysql) != 0) print("Не удалось подключиться к базе данных!"); //ошибка о подключении к БД, проверьте правильно ли вы ввели свои данные 5. В public OnPlayerConnect(playedid): new query[128]; //запрос GetPlayerName(playerid, Name[playerid], 24); //Получение имени игрока GetPlayerIp(playerid, IP[playerid], 16); //Получение IP игрока mysql_format(mysql, query, sizeof(query),"SELECT `Password`, `ID` FROM `players` WHERE `Username` = '%e' LIMIT 1", Name[playerid]); mysql_tquery(mysql, query, "OnAccountCheck", "i", playerid); 6. В конце скрипта создаем public: forward OnAccountCheck(playerid); public OnAccountCheck(playerid) { new rows, fields; cache_get_data(rows, fields, mysql); if(rows) //если есть строка {//затем cache_get_field_content(0, "PASS", pInfo[playerid][Password], mysql, 129); //загружаем пароль игрока в pInfo[playerid][Password], используемый в регистрации pInfo[playerid][ID] = cache_get_field_content_int(0, "ID"); //загрузка ID игрока в pInfo[playerid][ID] printf("%s", pInfo[playerid][Password]); ShowPlayerDialog(playerid, dlogin, DIALOG_STYLE_INPUT, "Авторизация", "Для того чтобы начать игру, необходимо авторизоваться", "Вход", "Выйти"); //Обнаружили аккаунт, показываем данный диалог } else //если аккаунта нет { ShowPlayerDialog(playerid, dregister, DIALOG_STYLE_INPUT, "регистрация", "Для того, чтобы начать игру, Вам необходимо зарегистрироваться.", "регистрация", "Выйти"); //То показываем этот диалог регистрации аккаунта } return 1; } forward OnAccountLoad(playerid); forward OnAccountRegister(playerid); public OnAccountLoad(playerid) { pInfo[playerid][Admin] = cache_get_field_content_int(0, "Admin"); pInfo[playerid][VIP] = cache_get_field_content_int(0, "VIP"); pInfo[playerid][Money] = cache_get_field_content_int(0, "Money"); pInfo[playerid][posX] = cache_get_field_content_float(0, "PosX"); pInfo[playerid][posY] = cache_get_field_content_float(0, "PosY"); pInfo[playerid][posZ] = cache_get_field_content_float(0, "PosZ"); GivePlayerMoney(playerid, pInfo[playerid][Money]);//деньги SendClientMessage(playerid, -1, "Успешный вход!"); //Успешный вход в аккаунт return 1; } public OnAccountRegister(playerid) { pInfo[playerid][ID] = cache_insert_id(); //загружает ID игрока в переменную, после того, как он зарегистрировался. printf("New account registered. ID: %d", pInfo[playerid][ID]); return 1; } 7. В public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]): switch(dialogid) { case dlogin: //диалоговое окно входа в систему { if(!response) return Kick(playerid); //если нажал выйти - кикает new hpass[129]; //для хэширования паролей new query[100]; // для форматирования нашего запроса WP_Hash(hpass, 129, inputtext); //хеширования inputtext if(!strcmp(hpass, pInfo[playerid][Password])) { mysql_format(mysql, query, sizeof(query), "SELECT * FROM `players` WHERE `Username` = '%e' LIMIT 1", Name[playerid]); mysql_tquery(mysql, query, "OnAccountLoad", "i", playerid); } else { ShowPlayerDialog(playerid, dlogin, DIALOG_STYLE_INPUT, "Авторизация", "Чтобы начать игру необходимо вести пароль", "Вход", "Выйти"); } } case dregister: //диалог регистрации { if(!response) return Kick(playerid); //если нажали выйти, мы будем кикать их if(strlen(inputtext) < 6) return ShowPlayerDialog(playerid, dregister, DIALOG_STYLE_INPUT, "Регистрация", "Для того, чтобы играть, Вам необходимо зарегистрироваться.\nВаш пароль должен быть не менее 6 символов!", "Регистрация", "Выйти"); //strlen проверяет длину строки, если игрок вводит свой пароль, который ниже, чем 6 символов, то выводим данное сообщение new query[300]; WP_Hash(pInfo[playerid][Password], 129, inputtext); mysql_format(mysql, query, sizeof(query), "INSERT INTO `players` (`Username`, `Password`, `IP`, `Admin`, `VIP`, `Money`, `PosX` ,`PosY`, `PosZ`) VALUES ('%e', '%s', '%s', 0, 0, 0, 0.0, 0.0, 0.0)", Name[playerid], pInfo[playerid][Password], IP[playerid]); mysql_tquery(mysql, query, "OnAccountRegister", "i", playerid); } } 8. В public OnPlayerDisconnect(playerid, reason): new query[128], Float:pos[3]; //query[128] для форматирования нашего запроса и Float:pos[3] Для получения и сохранения позиции игрока GetPlayerPos(playerid, pos[0], pos[1], pos[2]); //добавление позиции игрока, когда они покидают сервер mysql_format(mysql, query, sizeof(query), "UPDATE `players` SET `Admin`=%d, `VIP`=%d, `Money`=%d, `posX`=%f, `posY`=%f, `posZ`=%f WHERE `ID`=%d",\ pInfo[playerid][Admin], pInfo[playerid][VIP], pInfo[playerid][Money], pos[0], pos[1], pos[2], pInfo[playerid][ID]); //Обновляем таблицу игроков mysql_tquery(mysql, query, "", ""); 9. В public OnPlayerSpawn(playerid): SetPlayerPos(playerid, pInfo[playerid][posX], pInfo[playerid][posY], pInfo[playerid][posZ]); //Установка позиции игрока к последнему сохранению позиций. Перевод комментариев может быть не точным, а также может отсутствовать совсем. Кто шарит по английски, смотрите оригинальную тему. Пишите свои поправки в тему, исправлю. Оригинальная статья: Нажимай, чтобы посмотреть
- 12 ответов
-
- 11
-
-
Ко всем forward forward SaveEnters(); forward LoadEnters(); Ко всем define #define MAX_ENTERS 200 Если нету, то добавить #define COLOR_LIGHTBLUE 0x33CCFFAA #define COLOR_GREY 0xAFAFAFAA Ко всем enum или после глобальных переменных enum eInfo { eEnPickup, eExPickup, Float:eEnter_x, Float:eEnter_y, Float:eEnter_z, Float:eExit_x, Float:eExit_y, Float:eExit_z, eEnInterior, eExInterior, }; new EnterInfo[MAX_ENTERS][eInfo]; new editenter[MAX_PLAYERS]; new enterpickup[sizeof(EnterInfo)]; new exitpickup[sizeof(EnterInfo)]; В public OnGameModeInit LoadEnters(); for(new i = 0; i < sizeof(EnterInfo); i++) { if(EnterInfo[i][eEnter_x] != 0 && EnterInfo[i][eEnter_x] != 0 && EnterInfo[i][eExit_x] != 0 && EnterInfo[i][eExit_y] != 0) { enterpickup[i] = AddStaticPickup(EnterInfo[i][eEnPickup], 2, EnterInfo[i][eEnter_x], EnterInfo[i][eEnter_y], EnterInfo[i][eEnter_z], 0); exitpickup[i] = AddStaticPickup(EnterInfo[i][eExPickup], 2, EnterInfo[i][eExit_x], EnterInfo[i][eExit_y], EnterInfo[i][eExit_z], 0); } } В public OnGameModeExit for(new i = 0; i < sizeof(EnterInfo); i++) { if(EnterInfo[i][eEnter_x] != 0 && EnterInfo[i][eEnter_x] != 0 && EnterInfo[i][eExit_x] != 0 && EnterInfo[i][eExit_y] != 0) { DestroyPickup(enterpickup[i]); DestroyPickup(exitpickup[i]); } } SaveEnters(); В public OnPlayerCommandText if(strcmp(cmd,"/newenter",true)==0) { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Вы не администратор."); for(new i = 0; i < sizeof(EnterInfo); i++) { if(EnterInfo[i][eEnter_x] == 0 || EnterInfo[i][eEnter_y] == 0) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); EnterInfo[i][eEnter_x] = x; EnterInfo[i][eEnter_y] = y; EnterInfo[i][eEnter_z] = z; enterpickup[i] = CreatePickup(1318, 2, x, y, z); SendClientMessage(playerid, 0x33AA33FF, "* Новый вход создан. Для дальнейшего редактирования входа используйте: /editenter."); format(string, sizeof(string), "* Ид входа: %d", i); SendClientMessage(playerid, 0x33AA33FF, string); break; } } return 1; } if(strcmp(cmd,"/editenter",true)==0) { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFFFFFFFF, "Вы не администратор."); ShowPlayerDialog(playerid, 800, 1, "Управление входом/выходом", "Введите ид входа:", "Дальше", "Отмена"); return 1; } В public OnDialogResponse if(dialogid == 800) { if(response) { new id = strval(inputtext); if(id > -1 && id < sizeof(EnterInfo)) { editenter[playerid] = id; ShowPlayerDialog(playerid, 801, 2, "Управление входом/выходом", "Установить вход дома\nУстановить выход дома\nУстановить пикап входа\nУстановить пикап выхода\nУстановить интерьер при входе\nУстновить интерьер при выходе\nУдалить вход и выход", "Выбор", "Отмена"); } else { ShowPlayerDialog(playerid, 799, 0, "Управление входом/выходом", "Неверный ид входа", "Ок", ""); } } return 1; } if(dialogid == 801) { if(response) { switch(listitem) { case 0: { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); EnterInfo[editenter[playerid]][eEnter_x] = x; EnterInfo[editenter[playerid]][eEnter_y] = y; EnterInfo[editenter[playerid]][eEnter_z] = z; EnterInfo[editenter[playerid]][eEnInterior] = GetPlayerInterior(playerid); if(EnterInfo[editenter[playerid]][eEnPickup] == 0) { EnterInfo[editenter[playerid]][eEnPickup] = 1318; } if(enterpickup[editenter[playerid]] != 0) { DestroyPickup(enterpickup[editenter[playerid]]); } enterpickup[editenter[playerid]] = CreatePickup(EnterInfo[editenter[playerid]][eEnPickup], 2, x, y, z); format(string, sizeof(string), "* Вход %d установлен.", editenter[playerid]); SendClientMessage(playerid, 0x33AA33FF, string); SaveEnters(); } case 1: { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); EnterInfo[editenter[playerid]][eExit_x] = x; EnterInfo[editenter[playerid]][eExit_y] = y; EnterInfo[editenter[playerid]][eExit_z] = z; EnterInfo[editenter[playerid]][eExInterior] = GetPlayerInterior(playerid); if(EnterInfo[editenter[playerid]][eExPickup] == 0) { EnterInfo[editenter[playerid]][eExPickup] = 1318; } if(exitpickup[editenter[playerid]] != 0) { DestroyPickup(exitpickup[editenter[playerid]]); } exitpickup[editenter[playerid]] = CreatePickup(EnterInfo[editenter[playerid]][eExPickup], 2, x, y, z); format(string, sizeof(string), "* Выход %d установлен.", editenter[playerid]); SendClientMessage(playerid, 0x33AA33FF, string); SaveEnters(); } case 2: { ShowPlayerDialog(playerid, 802, 1, "Управление входом/выходом", "Введите ид пикапа входа", "Ок", "Отмена"); } case 3: { ShowPlayerDialog(playerid, 803, 1, "Управление входом/выходом", "Введите ид пикапа выхода", "Ок", "Отмена"); } case 4: { ShowPlayerDialog(playerid, 805, 1, "Управление входом/выходом", "Введите интерьер при входе", "Ок", "Отмена"); } case 5: { ShowPlayerDialog(playerid, 806, 1, "Управление входом/выходом", "Введите интерьер при выходе", "Ок", "Отмена"); } case 6: { format(string, sizeof(string), "Вы действительно хотите удалить вход и выход под идом %d?", editenter[playerid]); ShowPlayerDialog(playerid, 804, 0, "Управление входом/выходом", string, "Да", "Нет"); } } } return 1; } if(dialogid == 802) { if(response) { new newid = strval(inputtext); if(newid > 0) { EnterInfo[editenter[playerid]][eEnPickup] = newid; if(enterpickup[editenter[playerid]] != 0) { DestroyPickup(enterpickup[editenter[playerid]]); } enterpickup[editenter[playerid]] = CreatePickup(newid, 2, EnterInfo[editenter[playerid]][eEnter_x], EnterInfo[editenter[playerid]][eEnter_y], EnterInfo[editenter[playerid]][eEnter_z]); format(string, sizeof(string), "* Пикап входа %d установлен: %d.", editenter[playerid], newid); SendClientMessage(playerid, 0x33AA33FF, string); SaveEnters(); } else { ShowPlayerDialog(playerid, 799, 0, "Управление входом/выходом", "Неверный ид пикапа", "Ок", ""); } } return 1; } if(dialogid == 803) { if(response) { new newid = strval(inputtext); if(newid > 0) { EnterInfo[editenter[playerid]][eExPickup] = newid; if(exitpickup[editenter[playerid]] != 0) { DestroyPickup(exitpickup[editenter[playerid]]); } exitpickup[editenter[playerid]] = CreatePickup(newid, 2, EnterInfo[editenter[playerid]][eExit_x], EnterInfo[editenter[playerid]][eExit_y], EnterInfo[editenter[playerid]][eExit_z]); format(string, sizeof(string), "* Пикап выхода %d установлен: %d.", editenter[playerid], newid); SendClientMessage(playerid, 0x33AA33FF, string); SaveEnters(); } else { ShowPlayerDialog(playerid, 799, 0, "Управление входом/выходом", "Неверный ид пикапа", "Ок", ""); } } return 1; } if(dialogid == 805) { if(response) { new inter = strval(inputtext); EnterInfo[editenter[playerid]][eEnInterior] = inter; format(string, sizeof(string), "* Интерьер входа %d установлен: %d.", editenter[playerid], inter); SendClientMessage(playerid, 0x33AA33FF, string); SaveEnters(); } return 1; } if(dialogid == 806) { if(response) { new inter = strval(inputtext); EnterInfo[editenter[playerid]][eExInterior] = inter; format(string, sizeof(string), "* Интерьер выхода %d установлен: %d.", editenter[playerid], inter); SendClientMessage(playerid, 0x33AA33FF, string); SaveEnters(); } return 1; } if(dialogid == 804) { if(response) { EnterInfo[editenter[playerid]][eEnter_x] = 0; EnterInfo[editenter[playerid]][eEnter_y] = 0; EnterInfo[editenter[playerid]][eEnter_z] = 0; EnterInfo[editenter[playerid]][eExit_x] = 0; EnterInfo[editenter[playerid]][eExit_y] = 0; EnterInfo[editenter[playerid]][eExit_z] = 0; EnterInfo[editenter[playerid]][eEnPickup] = 0; EnterInfo[editenter[playerid]][eEnPickup] = 0; if(enterpickup[editenter[playerid]] != 0) { DestroyPickup(enterpickup[editenter[playerid]]); } if(exitpickup[editenter[playerid]] != 0) { DestroyPickup(exitpickup[editenter[playerid]]); } format(string, sizeof(string), "Вход и выход под идом %d удален", editenter[playerid]); ShowPlayerDialog(playerid, 799, 0, "Управление входом/выходом", string, "Ок", ""); SaveEnters(); return 1; } } В public OnPlayerKeyStateChange if(newkeys == 1024) { for(new i = 0; i < sizeof(EnterInfo); i++) { if(IsPlayerInRangeOfPoint(playerid, 1.0, EnterInfo[i][eEnter_x], EnterInfo[i][eEnter_y], EnterInfo[i][eEnter_z])) { SetPlayerInterior(playerid, EnterInfo[i][eEnInterior]); SetPlayerPos(playerid, EnterInfo[i][eExit_x], EnterInfo[i][eExit_y], EnterInfo[i][eExit_z]); break; } else if(IsPlayerInRangeOfPoint(playerid, 1.0, EnterInfo[i][eExit_x], EnterInfo[i][eExit_y], EnterInfo[i][eExit_z])) { SetPlayerInterior(playerid, EnterInfo[i][eExInterior]); SetPlayerPos(playerid, EnterInfo[i][eEnter_x], EnterInfo[i][eEnter_y], EnterInfo[i][eEnter_z]); break; } } } В конец мода public LoadEnters() { new arrCoords[10][64]; new strFromFile2[256]; new File: file = fopen("enters.cfg", io_read); if (file) { new idx; while (idx < sizeof(EnterInfo)) { fread(file, strFromFile2); split(strFromFile2, arrCoords, '|'); EnterInfo[idx][eEnPickup] = strval(arrCoords[0]); EnterInfo[idx][eExPickup] = strval(arrCoords[1]); EnterInfo[idx][eEnter_x] = floatstr(arrCoords[2]); EnterInfo[idx][eEnter_y] = floatstr(arrCoords[3]); EnterInfo[idx][eEnter_z] = floatstr(arrCoords[4]); EnterInfo[idx][eExit_x] = floatstr(arrCoords[5]); EnterInfo[idx][eExit_y] = floatstr(arrCoords[6]); EnterInfo[idx][eExit_z] = floatstr(arrCoords[7]); EnterInfo[idx][eEnInterior] = strval(arrCoords[8]); EnterInfo[idx][eExInterior] = strval(arrCoords[9]); idx++; } fclose(file); } return 1; } public SaveEnters() { new idx; new File: file2; while (idx < sizeof(EnterInfo)) { new coordsstring[256]; format(coordsstring, sizeof(coordsstring), "%d|%d|%f|%f|%f|%f|%f|%f|%d|%d\n", EnterInfo[idx][eEnPickup], EnterInfo[idx][eExPickup], EnterInfo[idx][eEnter_x], EnterInfo[idx][eEnter_y], EnterInfo[idx][eEnter_z], EnterInfo[idx][eExit_x], EnterInfo[idx][eExit_y], EnterInfo[idx][eExit_z], EnterInfo[idx][eEnInterior], EnterInfo[idx][eExInterior]); if(idx == 0) { file2 = fopen("enters.cfg", io_write); } else { file2 = fopen("enters.cfg", io_append); } fwrite(file2, coordsstring); idx++; fclose(file2); } return 1; } P.S: ServerUnknown вывелось из-за неверной команды) Автор: Calipso
- 1 ответ
-
- 4
-
-
- входов/выходов
- динамических
- (и ещё 8 )
-
Полоска голода "улетает" слишком быстро. Помогите увеличить длительность голода. С меня "спасибо" :) #include <a_samp> #define FILTERSCRIPT forward ShowGolod(); new Text:GolodInfo[MAX_PLAYERS]; new PlayerGolod[MAX_PLAYERS]; new GolodShow[MAX_PLAYERS]; new Float:PlayerHP[MAX_PLAYERS][3]; public OnFilterScriptInit() { print("\n--------------------------------------"); print(" Golod by Razor for gnr-samp.ru"); print("--------------------------------------\n"); SetTimer("ShowGolod", 15000, 1); return 1; } public OnFilterScriptExit() { return 1; } public OnPlayerSpawn(playerid) { PlayerGolod[playerid]=30; return 1; } public OnPlayerDisconnect(playerid, reason) { if(GolodShow[playerid]==1) { GolodShow[playerid]=0; TextDrawDestroy(GolodInfo[playerid]); } return 1; } public OnPlayerDeath(playerid, killerid, reason) { return 1; } public ShowGolod() { new string[256]; for(new i; i<MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { if(GolodShow[i]==1) { GolodShow[i]=0; TextDrawHideForPlayer(i, GolodInfo[i]); TextDrawDestroy(GolodInfo[i]); } if(PlayerGolod[i]==0) { new Float:hp; GetPlayerHealth(i, hp); SetPlayerHealth(i, hp-1); if(PlayerHP[i][0]==0.0) { GetPlayerHealth(i, PlayerHP[i][0]); PlayerHP[i][1]=0.0; } else if(PlayerHP[i][1]==0.0) { GetPlayerHealth(i, PlayerHP[i][1]); PlayerHP[i][2]=0.0; } else if(PlayerHP[i][2]==0.0) { GetPlayerHealth(i, PlayerHP[i][2]); PlayerHP[i][0]=0.0; } if(PlayerHP[i][0]<PlayerHP[i][1] && PlayerHP[i][0]!=0.0) { PlayerGolod[i]=30; PlayerHP[i][0]=0.0; PlayerHP[i][1]=0.0; PlayerHP[i][2]=0.0; } if(PlayerHP[i][1]<PlayerHP[i][2] && PlayerHP[i][1]!=0.0) { PlayerGolod[i]=30; PlayerHP[i][0]=0.0; PlayerHP[i][1]=0.0; PlayerHP[i][2]=0.0; } if(PlayerHP[i][2]<PlayerHP[i][0] && PlayerHP[i][2]!=0.0) { PlayerGolod[i]=30; PlayerHP[i][0]=0.0; PlayerHP[i][1]=0.0; PlayerHP[i][2]=0.0; } } else { PlayerGolod[i]--; if(PlayerHP[i][0]==0.0) { GetPlayerHealth(i, PlayerHP[i][0]); PlayerHP[i][1]=0.0; } else if(PlayerHP[i][1]==0.0) { GetPlayerHealth(i, PlayerHP[i][1]); PlayerHP[i][2]=0.0; } else if(PlayerHP[i][2]==0.0) { GetPlayerHealth(i, PlayerHP[i][2]); PlayerHP[i][0]=0.0; } if(PlayerHP[i][0]<PlayerHP[i][1] && PlayerHP[i][0]!=0.0) { PlayerGolod[i]=30; PlayerHP[i][0]=0.0; PlayerHP[i][1]=0.0; PlayerHP[i][2]=0.0; } if(PlayerHP[i][1]<PlayerHP[i][2] && PlayerHP[i][1]!=0.0) { PlayerGolod[i]=30; PlayerHP[i][0]=0.0; PlayerHP[i][1]=0.0; PlayerHP[i][2]=0.0; } if(PlayerHP[i][2]<PlayerHP[i][0] && PlayerHP[i][2]!=0.0) { PlayerGolod[i]=30; PlayerHP[i][0]=0.0; PlayerHP[i][1]=0.0; PlayerHP[i][2]=0.0; } } string = "~b~888888888888888888888888888888"; strins(string, "~l~", PlayerGolod[i]+3); GolodInfo[i] = TextDrawCreate(547.000000,25.000000,string); TextDrawAlignment(GolodInfo[i],0); TextDrawBackgroundColor(GolodInfo[i],0x000000ff); TextDrawFont(GolodInfo[i],3); TextDrawLetterSize(GolodInfo[i],0.099999,1.000000); TextDrawColor(GolodInfo[i],0x000000ff); TextDrawSetOutline(GolodInfo[i],1); TextDrawSetProportional(GolodInfo[i],1); TextDrawSetShadow(GolodInfo[i],1); TextDrawShowForPlayer(i, GolodInfo[i]); GolodShow[i]=1; } else if(GolodShow[i]==1) { GolodShow[i]=0; TextDrawHideForPlayer(i, GolodInfo[i]); TextDrawDestroy(GolodInfo[i]); } } return 1; }
-
К new. new Text:Textdraw0[MAX_PLAYERS]; new Text:Textdraw1[MAX_PLAYERS]; new Text:Textdraw2[MAX_PLAYERS]; new Text:Textdraw3[MAX_PLAYERS]; new Text:Textdraw4[MAX_PLAYERS]; new Text:Textdraw5[MAX_PLAYERS]; В public OnPlayerStateChange(playerid, newstate, oldstate) OnPlayerStateChange']if(oldstate == PLAYER_STATE_DRIVER) { TextDrawHideForPlayer(playerid, Textdraw0[playerid]); TextDrawHideForPlayer(playerid, Textdraw1[playerid]); TextDrawHideForPlayer(playerid, Textdraw2[playerid]); TextDrawHideForPlayer(playerid, Textdraw3[playerid]); TextDrawHideForPlayer(playerid, Textdraw4[playerid]); TextDrawHideForPlayer(playerid, Textdraw5[playerid]); } Ко всем forward forward LoadTextdraws(); В public OnGameModeInit() LoadTextdraws(); В конец мода.
- 11 ответов
-
- всё для crmp
- pawno
- (и ещё 7 )
-
Многие просят вырезать систему авто с мода gamer. Сегодня решил попробовать вырезать. Вырезал не так что попадется, а компилировал как скрипт. Так что думаю ничего не упустил. В коде есть закомментированные строки, их нужно включить когда вошьете авторынок в свой мод. Если не включите, не пойми что у вас там случиться. Если возникнут проблемы при компиляции пишите в данную тему. Автор вырезки: Amfy auto.pwn
- 27 ответов
-
- 12
-
-
- форум crmp
- система
- (и ещё 7 )