Перейти к содержанию

Поиск сообщества

Показаны результаты для тегов 'Мануал'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Информационный раздел
    • Новости портала
    • Техническая поддержка
    • Приватный форум
  • CRMP 0.3е
    • Помощь по Скриптингу
    • Ошибки
    • Готовые сервера
    • Дополнительные скрипты
    • Мануалы/Уроки
    • Модификации
    • Поиск
    • Архив Вопросов/Проблем/Ошибок
    • Файловый архив
    • Другое
  • SAMP/CRMP 0.3.7
    • Помощь по Скриптингу
    • Ошибки
    • Готовые сервера
    • Плагины
    • Поиск
    • Документация
  • Другое
    • Флейм

Поиск результатов в...

Поиск результатов, которые содержат...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Найдено: 385 результатов

  1. Ко всем stock'ам: stock IsADiesel(carid) { new diesel = GetVehicleModel(carid); { if(diesel==403||diesel==406||diesel==407||diesel== 408||diesel==416//ниже ид машин которые заправляются дизелем ||diesel==423||diesel==427||diesel==428||diesel==431||diesel==432 ||diesel==433||diesel==437||diesel==443||diesel==444||diesel==455 ||diesel==456||diesel==486||diesel==498||diesel==499||diesel==508 ||diesel==514||diesel==515||diesel==524||diesel==532||diesel==544 ||diesel==552||diesel==556||diesel==557||diesel==573||diesel==578 ||diesel==588||diesel==609) { return 1; } } return 0; } //80 FUEL stock IsA80Fuel(carid) { new vofuell = GetVehicleModel(carid); { if(vofuell==404||vofuell==412||vofuell==422||vofuell==438||vofuell==440//ниже ид машин которые заправляются 80 ||vofuell==466||vofuell==467||vofuell==474||vofuell==478||vofuell==483 ||vofuell==485||vofuell==504||vofuell==518||vofuell==525||vofuell==529 ||vofuell==530||vofuell==531||vofuell==536||vofuell==542||vofuell==543 ||vofuell==545||vofuell==568||vofuell==572||vofuell==574||vofuell==575 ||vofuell==576||vofuell==583||vofuell==600||vofuell==604||vofuell==605) { return 1; } } return 0; } //92 FUEL stock IsA92Fuel(carid) { new dvfuell = GetVehicleModel(carid); { if(dvfuell==401||dvfuell==405||dvfuell==409||dvfuell==413||dvfuell==414//ниже ид машин которые заправляются 92 ||dvfuell==418||dvfuell==419||dvfuell==420||dvfuell==421||dvfuell==424 ||dvfuell==426||dvfuell==434||dvfuell==436||dvfuell==439||dvfuell==442 ||dvfuell==445||dvfuell==448||dvfuell==457||dvfuell==458||dvfuell==459 ||dvfuell==461||dvfuell==462||dvfuell==463||dvfuell==468||dvfuell==470 ||dvfuell==471||dvfuell==475||dvfuell==479||dvfuell==480||dvfuell==482 ||dvfuell==489||dvfuell==490||dvfuell==491||dvfuell==492||dvfuell==495 ||dvfuell==496||dvfuell==500||dvfuell==505||dvfuell==507||dvfuell==516 ||dvfuell==517||dvfuell==521||dvfuell==522||dvfuell==523||dvfuell==526 ||dvfuell==527||dvfuell==528||dvfuell==533||dvfuell==534||dvfuell==535 ||dvfuell==540||dvfuell==546||dvfuell==547||dvfuell==549||dvfuell==550 ||dvfuell==551||dvfuell==554||dvfuell==555||dvfuell==558||dvfuell==561 ||dvfuell==566||dvfuell==579||dvfuell==580||dvfuell==581||dvfuell==582 ||dvfuell==585||dvfuell==586||dvfuell==589||dvfuell==596||dvfuell==597 ||dvfuell==598||dvfuell==599||dvfuell==601||dvfuell==602||dvfuell==603) { return 1; } } return 0; } //95 FUEL stock IsA95Fuel(carid) { new dpfuell = GetVehicleModel(carid); { if(dpfuell==400||dpfuell==402||dpfuell==411||dpfuell==415||dpfuell==429||dpfuell==451//ниже ид машин которые естественно заправляются дизелем95 ||dpfuell==477||dpfuell==494||dpfuell==502||dpfuell==503||dpfuell==506 ||dpfuell==541||dpfuell==559||dpfuell==560||dpfuell==562||dpfuell==565||dpfuell==567 ||dpfuell==587) { return 1; } } return 0; } В OnPlayerDialogResponse: if(dialogid == 380) { if(response) { if(listitem == 0) { if(IsPlayerConnected(playerid)) { new vehicle = GetPlayerVehicleID(playerid); if(SBizzInfo[8][sbProducts] == 0)//8 бизнесс у меня заправка { GameTextForPlayer(playerid, "~r~Out Of Stock", 5000, 1); return 1; } if(IsADiesel(vehicle)) { if(SBizzInfo[8][sbLocked] == 0)//8 бизнесс у меня заправка { if(IsAtGasStation(playerid)) { GameTextForPlayer(playerid,"~w~~n~~n~~n~~n~~n~~n~~ n~~n~~n~A‹¦OMO—…‡’ €AЊPA‹‡•E¦C•,ЊOѓO„ѓ…¦E ЊO„A‡Y†C¦A...",2000,3); TogglePlayerControllable(playerid, 0); SetTimer("Fillup",RefuelWait,0); Refueling[playerid] = 1; } } else { SendClientMessage(playerid, COLOR_LIGHTRED, "Заправочная станция закрыта"); return 1; } } else { SendClientMessage(playerid, COLOR_LIGHTRED, "Ваш автомобиль не подходит под данную категорию"); SendClientMessage(playerid, COLOR_LIGHTRED, "Посмотреть категорию своего автомобиля (/ifuel)"); return 1; } } return 1; } /// else if(listitem == 1) { if(IsPlayerConnected(playerid)) { new vehicle = GetPlayerVehicleID(playerid); if(SBizzInfo[8][sbProducts] == 0)//8 бизнесс у меня заправка { GameTextForPlayer(playerid, "~r~Out Of Stock", 5000, 1); return 1; } if(IsA80Fuel(vehicle)) { if(SBizzInfo[8][sbLocked] == 0)//8 бизнесс у меня заправка { if(IsAtGasStation(playerid)) { GameTextForPlayer(playerid,"~w~~n~~n~~n~~n~~n~~n~~ n~~n~~n~A‹¦OMO—…‡’ €AЊPA‹‡•E¦C•,ЊOѓO„ѓ…¦E ЊO„A‡Y†C¦A...",2000,3); TogglePlayerControllable(playerid, 0); SetTimer("Fillup",RefuelWait,0); Refueling[playerid] = 1; } } else { SendClientMessage(playerid, COLOR_LIGHTRED, "Заправочная станция закрыта"); return 1; } } else { SendClientMessage(playerid, COLOR_LIGHTRED, "Ваш автомобиль не подходит под данную категорию"); SendClientMessage(playerid, COLOR_LIGHTRED, "Посмотреть категорию своего автомобиля (/ifuel)"); return 1; } } return 1; } /// else if(listitem == 2) { if(IsPlayerConnected(playerid)) { new vehicle = GetPlayerVehicleID(playerid); if(SBizzInfo[8][sbProducts] == 0)//8 бизнесс у меня заправка { GameTextForPlayer(playerid, "~r~Out Of Stock", 5000, 1); return 1; } if(IsA92Fuel(vehicle)) { if(SBizzInfo[8][sbLocked] == 0)//8 бизнесс у меня заправка { if(IsAtGasStation(playerid)) { GameTextForPlayer(playerid,"~w~~n~~n~~n~~n~~n~~n~~ n~~n~~n~A‹¦OMO—…‡’ €AЊPA‹‡•E¦C•,ЊOѓO„ѓ…¦E ЊO„A‡Y†C¦A...",2000,3); TogglePlayerControllable(playerid, 0); SetTimer("Fillup",RefuelWait,0); Refueling[playerid] = 1; } } else { SendClientMessage(playerid, COLOR_LIGHTRED, "Заправочная станция закрыта"); return 1; } } else { SendClientMessage(playerid, COLOR_LIGHTRED, "Ваш автомобиль не подходит под данную категорию"); SendClientMessage(playerid, COLOR_LIGHTRED, "Посмотреть категорию своего автомобиля (/ifuel)"); return 1; } } return 1; } /// else if(listitem == 3) { if(IsPlayerConnected(playerid)) { new vehicle = GetPlayerVehicleID(playerid); if(SBizzInfo[8][sbProducts] == 0)//8 бизнесс у меня заправка { GameTextForPlayer(playerid, "~r~Out Of Stock", 5000, 1); return 1; } if(IsA95Fuel(vehicle)) { if(SBizzInfo[8][sbLocked] == 0)//8 бизнесс у меня заправка { if(IsAtGasStation(playerid)) { GameTextForPlayer(playerid,"~w~~n~~n~~n~~n~~n~~n~~ n~~n~~n~A‹¦OMO—…‡’ €AЊPA‹‡•E¦C•,ЊOѓO„ѓ…¦E ЊO„A‡Y†C¦A...",2000,3); TogglePlayerControllable(playerid, 0); SetTimer("Fillup",RefuelWait,0); Refueling[playerid] = 1; } } else { SendClientMessage(playerid, COLOR_LIGHTRED, "Заправочная станция закрыта"); return 1; } } else { SendClientMessage(playerid, COLOR_LIGHTRED, "Ваш автомобиль не подходит под данную категорию"); SendClientMessage(playerid, COLOR_LIGHTRED, "Посмотреть категорию своего автомобиля (/ifuel)"); return 1; } } return 1; } /// } } В OnPlayerCommandText: if(strcmp(cmd, "/ifuel", true) == 0) { if(IsPlayerConnected(playerid)) { if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { new carid; carid = gLastCar[playerid]; new toplivo[32]; if(IsADiesel(carid)) { toplivo = "Дизельный двигатель"; } else if(IsA80Fuel(carid)) { toplivo = "Топливо 80"; } else if(IsA92Fuel(carid)) { toplivo = "Топливо 92"; } else if(IsA95Fuel(carid)) { toplivo = "Топливо 95"; } format(string, sizeof(string), "** Вид топлива: %s", toplivo); SendClientMessage(playerid, COLOR_GREY, string); } else { SendClientMessage(playerid, COLOR_GREY, "Вы должны быть в автомобиле"); return 1; } } return 1; }[/size][/font][/color] [color=#000000][font=Verdana, Arial, Tahoma, Calibri, Geneva, sans-serif][size=3]if(strcmp(cmd, "/fill", true) == 0) { if(IsPlayerConnected(playerid)) { if(IsAtGasStation(playerid))//если игрок на бензоправке, то даем ему диалог { ShowPlayerDialog(playerid,380,DIALOG_STYLE_LIST,"Выбор бензина","Дизельное топливо\n80 Бензин\n92 Бензин\n95 Бензин","Ок","Отмена"); } } return 1; } Автор не я,взято с другого портала.
  2. #Jack.Black

    TextDraw (State99)

    Стандартный TextDraw название сервера State99 В начало мода new Text:gStateText; В public OnGameModeInit() gStateText = TextDrawCreate(88.000000, 426.000000, "State 99"); TextDrawAlignment(gStateText, 2); TextDrawBackgroundColor(gStateText, 255); TextDrawFont(gStateText, 2); TextDrawLetterSize(gStateText, 0.450000, 1.800000); TextDrawColor(gStateText, 0xFFFFFFff); TextDrawSetOutline(gStateText, 1); TextDrawSetProportional(gStateText, 1); В public OnPlayerConnect(playerid) TextDrawShowForPlayer(playerid,gStateText);
  3. Artem_Volt

    Spawn новичков

    И так в этой теме я расскажу как поменять spawn новичков в SAMP. Думаю для новичков будет полезно. Находим паблик: SetPlayerSpawn или OnPlayerSpawn Вставляем туда: else if(PlayerInfo[playerid][pLevel] >= 1 && PlayerInfo[playerid][pLevel] <= 3) // Если у игрока более 1-го и менее 3-го уровня то он будет появляться тут: { SetPlayerPos(playerid,1657.7761,-1842.0952,13.5463);// Координаты: 1.зайдите в игру. 2.Найдите то место где хотите чтобы появлялись игроки. 3. Прописываем /save. 4.Идем Мои документыGTA San Andreas User FilesSAMP в нем есть файл savedpositions.txt. В нем находятся координаты которые вы сохранили. Копируем их и вставляем сюда. SetPlayerFacingAngle(playerid, 37.0911);// Направление куда будет смотреть игрок SetPlayerInterior(playerid,0);// Интерьер в котором появиться игрок 0 - это улица SetPlayerVirtualWorld(playerid, 0);// Виртуальный мир } Объясню более понятно что копировать из savedpositions.txt: AddPlayerClass(96,1154.0748,-1770.1941,16.5938,3.7851,0,0,0,0,0,0); - там будет примерно так. 96 - это одежда/скин в которой будет появляться игрок. 1154.0748,-1770.1941,16.5938 - это то самое местоположение где будет появляться игрок. 3.7851 - это поворот головы, ну то есть куда будет смотреть игрок. Автор-Я
  4. Начнем! 1. Ко всем переменным new Text: Online;//Переменная текстдрава new online;//Человек онлайн 2. К forward' ам: forward Online(); 3. В public OnPlayerConnect TextDrawShowForPlayer(playerid,Online);//Показываем текстдрав online++;//При коннекте к значению переменной прибавляем единицу Online();//Вызываем паблик, который изменит текстдрав 4. В public OnPlayerDisconnect online--;//Убираем единицу Online();//Вызываем паблик, который изменит текстдрав 5. В public OnGameModeInit Online = TextDrawCreate(25.000000, 434.000000, "Online");//Сам текстдрав TextDrawLetterSize(Online,0.3,1.3);//размер шрифта TextDrawFont(Online,3);//стиль шрифта TextDrawColor(Online,COLOR_WHITE);//цвет TextDrawSetOutline(Online,1); 6. Создаем новый public public Online()//Будет менять текстдрав { new string[32]; format(string, 32, "Online %d", online); TextDrawSetString(Online,string); for (new i=0; i < MAX_PLAYERS; i++) TextDrawShowForPlayer(i,Online); return 1; } Скриншот: При желании можно поменять цвет, размер, позицию и текст! Как это работает: Игрок заходит на сервер, значение переменной становится на единицу больше. Значение переменной равнозначно количеству игроков онлайн, так как при коннекте она прибавляется на 1, а при дисконнекте убавляется на 1. Также при коннекте сделан вызов паблика Online, в результате которого это все и работает. Сам паблик только меняет текст Textdraw' а и показывает его игрокам. Принцип работы, думаю, описан! Автор: Max_Mister
  5. Всем привет, уважаемые пользователи Gsgames.ru Делаем подключение объектов через Include. Хочу предоставить вам Include который облегчит нагрузку на сервере и придаст более оптимизацию. Скачиваем (http://rghost.ru/46703453) Include вставляем в папку с сервером pawno/include. Открываете Include через блокнот, Далее >> вставляем наши объекты (Не забудьте удалить их с вашего мода). Ко всем #include добавляем#include <objects> И добавляем наше подключение:public OnGameModeInit() { ObjectLoad(); return true; } Автор: DmX aka Siman
  6. Так как я заметил что этот вопрос стал довольно распространен на форуме и четкого и ясного ответа так и не было получено то я решил создать данную тему. Итак начнем! Для начала нам нужно расставить автомобили и сохранить их позиции чтобы потом вставить полученный код в наш мод. Для этого можно воспользоваться двумя вариантами: 1) Через samp-debug.exe 2) На сервере 3) Через MTA Map Editor Я расскажу как ставить авто первым способом. Файл samp-debug.exe находится в папке с самой игрой. Находим и запускаем его. В появившемся окне выбираем Launch debug. Ждем пока игра загрузится... Потом пишем команду /vsel и ищем нужное авто клавишами Shift и Пробел. Подтверждаем выбор клавишей Enter. Авто появилось и вы были автоматически посажены в него. Теперь едем туда куда надо поставить авто. Встаем точно на нужном месте и пишем не выходя из машины команду /save. При желании и чтобы не запутаться можно добавлять комментарии. Для этого пишем команду так: /save [комментарий]. Ну вот мы сохранили позицию. Теперь нам нужно скопировать полученную строку и вставить ее в наш мод. Все сохраненные позиции лежат в файле savedpositions.txt. Найти его на Windows 7 так: заходим в Документы и ищем папку GTA San Andreas User Files, в ней папка CR-MP, в ней папка Generation C и в этой папке лежит наш файл. Открываем его и копируем последнюю строку. Теперь открываем наш мод и идем в public OnGameModeInit() Вставляем туда нашу строку. Сейчас мы добавили обычное авто на котором сможет ездить каждый. Чтобы привязать авто нам нужно сначала объявить переменную, которая будет отвечать за данный автомобиль. В начало мода ко всем переменным добавим new car; Теперь преобразуем нашу строку которую мы вставляли в OnGameModeInit. Например у нас была строка AddStaticVehicle(456,1782.6366,2248.6348,15.8375,359.2723,102,65); То после преобразования она будет выглядеть так: car = AddStaticVehicle(456,1782.6366,2248.6348,15.8375,359.2723,102,65); Что мы сделали или в чем смысл преобразования. Мы привязали объявленную нами ранее переменную car к нашему автомобилю. Для этого мы перед нашей строкой поставили название переменной и между названием и строкой поставили знак =. Но сейчас на авто все равно смогут ездить все. Теперь нам нужно создать действие при посадке игрока в наше авто. Идем в public OnPlayerStateChange и ищем строку if(newstate == PLAYER_STATE_DRIVER) и добавляем туда код: if(GetPlayerVehicleID(playerid) == car) // сравниваем ид авто в котором находится игрок с ид автомобиля который привязан к переменной car { if(PlayerInfo[playerid][pMember] == FRAK_ID || PlayerInfo[playerid][pLeader] == FRAK_ID) { } // если игрок состоит во фракции или он лидер этой фракции то ничего не делаем else // а если нет { RemovePlayerFromVehicle(playerid); // выкидываем его из машины } } Готово! Если что-то не получается пишите. Да и FRAK_ID заменяем на ид своей фракции которая вам нужна.
  7. Вот ссылка на скачку жду ваших + http://rghost.ru/45295137 Вот еще 1 скрипт меню авто
  8. Маскировка Пароля! Важно. Функцыя работает с врсии Sa-MP 0.3d. Пример использования! Находим: ShowPlayerDialog(playerid, ваш ид диалога, DIALOG_STYLE_INPUT, "Регистрация", straut, "Далее", "");Источник: **** И меняем на: ShowPlayerDialog(playerid, ваш ид диалога, DIALOG_STYLE_PASSWORD, "Регистрация", straut, "Далее", "");Источник: ****[/color] [color=#000000] Для стабильной работы возьмити диалог: DIALOG_STYLE_PASSWORD.
  9. Добрый день дорогие пользователи форума! Представляю вам Анти чит на собейт.Думаю,что в FS заливать не стоит,се ровно в мод вписывать будете. Нам потребуется стандартные цвета,на всякий случай: COLOR_GREY 0xAFAFAFAA COLOR_GREEN 0x33AA33AA COLOR_RED 0xAA3333AA COLOR_YELLOW 0xFFFF00AA COLOR_WHITE 0xFFFFFFFF В new new ammos[MAX_PLAYERS]; new deaths[MAX_PLAYERS]; new fires[MAX_PLAYERS]; new kills[MAX_PLAYERS]; new moneys[MAX_PLAYERS]; new waiting[MAX_PLAYERS]; new weapons[MAX_PLAYERS]; new Float:position_x[MAX_PLAYERS]; new Float:position_y[MAX_PLAYERS]; public OnPlayerRequestSpawn(playerid) { moneys[playerid] = 50000; waiting[playerid] = false; return 1; } public OnPlayerUpdate(playerid) { new keys, updown, leftright; GetPlayerKeys(playerid, keys, updown, leftright); new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); new Float:health; GetPlayerHealth(playerid, health); if(playerid != -1){ if(position_x[playerid] != x || position_y[playerid] != y){ if(keys != 0 || updown != 0 || leftright != 0 || IsPlayerInAnyVehicle(playerid)){ waiting[playerid] = false; } } else{ waiting[playerid] = true; } if(waiting[playerid]){ new Float:temp_x = position_x[playerid] - x; new Float:temp_y = position_y[playerid] - y; if(temp_x < 0){ temp_x = temp_x * -1; } if(temp_y < 0){ temp_y = temp_y * -1; } if(temp_x > 0.1 || temp_y > 0.1){ if(temp_x < 10 && temp_y < 10){ SetPlayerHealth(playerid, health - 5); } } } } position_x[playerid] = x; position_y[playerid] = y; return 1; } public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { if(moneys[playerid] + 100 < GetPlayerMoney(playerid)){ new message[256]; GetPlayerName(playerid, message, sizeof(message)); strcat(message, " has been kicked. - Money Cheating"); SendClientMessageToAll(0xFFFF00AA, message); Kick(playerid); } if(oldkeys & KEY_FIRE){ if(GetPlayerAmmo(playerid) != 65535){ if(fires[playerid] == 0){ weapons[playerid] = GetPlayerWeapon(playerid); ammos[playerid] = GetPlayerAmmo(playerid); } fires[playerid]++; if(fires[playerid] > 10){ if(weapons[playerid] == GetPlayerWeapon(playerid) && ammos[playerid] == GetPlayerAmmo(playerid)){ new message[256]; GetPlayerName(playerid, message, sizeof(message)); strcat(message, " has been kicked. - Ammo Cheating"); SendClientMessageToAll(0xFFFF00AA, message); Kick(playerid); } fires[playerid] = 0; } if(weapons[playerid] != GetPlayerWeapon(playerid)){ fires[playerid] = 0; } } } } public OnPlayerDeath(playerid, killerid, reason) { kills[killerid]++; deaths[playerid]++; new playercash; playercash = GetPlayerMoney(playerid); if(playercash > 0){ moneys[killerid] = GetPlayerMoney(killerid) + playercash; } return 1; } :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Автор:CeZaR ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  10. ByMeR_OK

    Система Квартир

    Сегодня я расскажу как зделать систему квартир на сервере ищем в моде enum pInfoи выше вставляем enum fInfo { fOwned, fOwner[MAX_PLAYER_NAME], Float:fEntrancex, Float:fEntrancey, Float:fEntrancez, Float:fExitx, Float:fExity, Float:fExitz, fInt, fVirtWorld, fValue, fLock, fRent, fRentabil, fTakings, fDate, fLevel }; new FlatsInfo[27][fInfo]; new FlatPickup[sizeof(FlatsInfo)]; new Text3D: Flat3D[sizeof(FlatsInfo)]; new flathouse1[2]; new flathouse2[2]; new flathouse3[2];Потом идём в public SetPlayerSpawn и ищем там new house = PlayerInfo[playerid][pPhousekey];после этого вставляем new flat = PlayerInfo[playerid][pFlatKey];в этомже паблике немного ниже вставляем if(flat != 255) { if(SpawnChange[playerid]) //If 1, then you get to your house, else spawn somewhere else { SetPlayerToTeamColor(playerid); SetPlayerInterior(playerid,FlatsInfo[flat][fInt]); SetPlayerPos(playerid, FlatsInfo[flat][fExitx], FlatsInfo[flat][fExity],FlatsInfo[flat][fExitz]); // Warp the player SetPlayerVirtualWorld(playerid,flat+9999); return 1; } }теперь создадим stock stock UpdateFlat(idx) { new text[600]; if(FlatsInfo[idx][fOwned] == 0) { format(text,sizeof(text),"{FF6347} * Квартира * {FFFFFF}\nНомер: {7CFC00}%d{FFFFFF}\nЦена: {7CFC00}%d{FFFFFF}\nУровень: {7CFC00}%d{FFFFFF}\n\nЧтобы купить квартиру, введите {7CFC00}/buyflat{FFFFFF}",idx,FlatsInfo[idx][fValue],FlatsInfo[idx][fLevel]); Update3DTextLabelText(Flat3D[idx], 0xFFFFFFFF, text); DestroyPickup(FlatPickup[idx]); FlatPickup[idx] = CreatePickup(1273, 23, FlatsInfo[idx][fEntrancex], FlatsInfo[idx][fEntrancey], FlatsInfo[idx][fEntrancez], FlatsInfo[idx][fVirtWorld]); } else if(FlatsInfo[idx][fOwned] == 1) { format(text,sizeof(text),"{FF6347} * Квартира * {FFFFFF}\nНомер: {7CFC00}%d{FFFFFF}\nВладелец: {7CFC00}%s",idx,FlatsInfo[idx][fOwner]); Update3DTextLabelText(Flat3D[idx], 0xFFFFFFFF, text); DestroyPickup(FlatPickup[idx]); FlatPickup[idx] = CreatePickup(1272, 23, FlatsInfo[idx][fEntrancex], FlatsInfo[idx][fEntrancey], FlatsInfo[idx][fEntrancez], FlatsInfo[idx][fVirtWorld]); } }теперь ищем public LoadPropertyи после встовляем public LoadFlats() { new arrCoords[17][64]; new strFromFile2[256]; new File: file = fopen("flats.cfg", io_read); if (file) { new idx; while (idx < sizeof(FlatsInfo)) { fread(file, strFromFile2); split(strFromFile2, arrCoords, ','); FlatsInfo[idx][fOwned] = strval(arrCoords[0]); strmid(FlatsInfo[idx][fOwner], arrCoords[1], 0, strlen(arrCoords[1]), 255); FlatsInfo[idx][fEntrancex] = floatstr(arrCoords[2]); FlatsInfo[idx][fEntrancey] = floatstr(arrCoords[3]); FlatsInfo[idx][fEntrancez] = floatstr(arrCoords[4]); FlatsInfo[idx][fExitx] = floatstr(arrCoords[5]); FlatsInfo[idx][fExity] = floatstr(arrCoords[6]); FlatsInfo[idx][fExitz] = floatstr(arrCoords[7]); FlatsInfo[idx][fInt] = strval(arrCoords[8]); FlatsInfo[idx][fVirtWorld] = strval(arrCoords[9]); FlatsInfo[idx][fValue] = strval(arrCoords[10]); FlatsInfo[idx][fLock] = strval(arrCoords[11]); FlatsInfo[idx][fRent] = strval(arrCoords[12]); FlatsInfo[idx][fRentabil] = strval(arrCoords[13]); FlatsInfo[idx][fTakings] = strval(arrCoords[14]); FlatsInfo[idx][fDate] = strval(arrCoords[15]); FlatsInfo[idx][fLevel] = strval(arrCoords[16]); printf("Квартира: [%d] | Владелец: [%s]",idx,FlatsInfo[idx][fOwner]); idx++; } fclose(file); } return 1; }После,в public OnGameModeInit после всех машин и т.д вы увидите вот такую надпись Дом продаётсяу всех по разному,ну что в этом духе,ну так вот после этого встовляем for(new f = 0; f < sizeof(FlatsInfo); f++) { new text[600]; if(FlatsInfo[f][fOwned] == 0) { format(text,sizeof(text),"{FF6347} * Квартира * {FFFFFF}\nНомер: {7CFC00}%d{FFFFFF}\nЦена: {7CFC00}%d{FFFFFF}\nУровень: {7CFC00}%d{FFFFFF}\n\nЧтобы купить квартиру, введите {7CFC00}/buyflat{FFFFFF}",f,FlatsInfo[f][fValue],FlatsInfo[f][fLevel]); Flat3D[f] = Create3DTextLabel(text,0xFFFFFFFF,FlatsInfo[f][fEntrancex], FlatsInfo[f][fEntrancey], FlatsInfo[f][fEntrancez]+1,10,FlatsInfo[f][fVirtWorld],1); FlatPickup[f] = CreatePickup(1272, 23, FlatsInfo[f][fEntrancex], FlatsInfo[f][fEntrancey], FlatsInfo[f][fEntrancez], FlatsInfo[f][fVirtWorld]); pickups++; } else if(FlatsInfo[f][fOwned] == 1) { format(text,sizeof(text),"{FF6347} * Квартира * {FFFFFF}\nНомер: {7CFC00}%d{FFFFFF}\nВладелец: {7CFC00}%s",f,FlatsInfo[f][fOwner]); Flat3D[f] = Create3DTextLabel(text,0xFFFFFFFF,FlatsInfo[f][fEntrancex], FlatsInfo[f][fEntrancey], FlatsInfo[f][fEntrancez]+1,10,FlatsInfo[f][fVirtWorld],1); FlatPickup[f] = CreatePickup(1272, 23, FlatsInfo[f][fEntrancex], FlatsInfo[f][fEntrancey], FlatsInfo[f][fEntrancez], FlatsInfo[f][fVirtWorld]); pickups++; } }в public DateProp добавить сразу после } for(new h = 0; h < sizeof(FlatsInfo); h++) { if (strcmp(playername, FlatsInfo[h][fOwner], true) == 0) { FlatsInfo[h][fDate] = curdate; OnPropUpdate(); } }потом идём в public OnPropUpdate()и в конце будет Sbizz.cfg или Bizz.cfg у всех по разному,после этого встовляем idx = 0; while (idx < sizeof(FlatsInfo)) { new coordsstring[256]; format(coordsstring, sizeof(coordsstring), "%d,%s,%f,%f,%f,%f,%f,%f,%d,%d,%d,%d,%d,%d,%d,%d,%d\n", FlatsInfo[idx][fOwned], FlatsInfo[idx][fOwner], FlatsInfo[idx][fEntrancex], FlatsInfo[idx][fEntrancey], FlatsInfo[idx][fEntrancez], FlatsInfo[idx][fExitx], FlatsInfo[idx][fExity], FlatsInfo[idx][fExitz], FlatsInfo[idx][fInt], FlatsInfo[idx][fVirtWorld], FlatsInfo[idx][fValue], FlatsInfo[idx][fLock], FlatsInfo[idx][fRent], FlatsInfo[idx][fRentabil], FlatsInfo[idx][fTakings], FlatsInfo[idx][fDate], FlatsInfo[idx][fLevel]); if(idx == 0) { file2 = fopen("flats.cfg", io_write); } else { file2 = fopen("flats.cfg", io_append); } fwrite(file2, coordsstring); idx++; fclose(file2); }Далее добавим команды в public OnPlayerCommandText: if(strcmp(cmd, "/flat", true) == 0) { GetPlayerName(playerid, playername, sizeof(playername)); if(PlayerInfo[playerid][pFlatKey] != 255 && strcmp(playername, FlatsInfo[PlayerInfo[playerid][pFlatKey]][fOwner], true) == 0) { ShowPlayerDialog(playerid,50,DIALOG_STYLE_LIST,"Квартира"," - Открыть/Закрыть\n - Продать","Далее","Выход"); } else { SendClientMessage(playerid,COLOR_GREY, "Ошибка: У вас нет квартиры."); return 1; } } if(strcmp(cmd, "/sellflat", true) == 0) { if(IsPlayerConnected(playerid)) { GetPlayerName(playerid, playername, sizeof(playername)); if(PlayerInfo[playerid][pFlatKey] == 255) { SendClientMessage(playerid, COLOR_WHITE, "Ошибка: У вас нет квартиры."); return 1; } if(PlayerInfo[playerid][pFlatKey] != 255 && strcmp(playername, FlatsInfo[PlayerInfo[playerid][pFlatKey]][fOwner], true) == 0) { new flat = PlayerInfo[playerid][pFlatKey]; FlatsInfo[flat][fLock] = 1; FlatsInfo[flat][fOwned] = 0; GetPlayerName(playerid, sendername, sizeof(sendername)); strmid(FlatsInfo[flat][fOwner], "-", 0, strlen("-"), 255); GivePlayerMoney(playerid,FlatsInfo[flat][fValue]); PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0); format(string, sizeof(string), "~w~Congratulations~n~ You have sold your property for ~n~~g~$%d", FlatsInfo[flat][fValue]); GameTextForPlayer(playerid, string, 10000, 3); PlayerInfo[playerid][pFlatKey] = 255; //OnPlayerSave(playerid); UpdateFlat(flat); return 1; } else { SendClientMessage(playerid, COLOR_WHITE, "Ошибка: У вас нет квартиры."); return 1; } } return 1; } if(strcmp(cmd, "/buyflat", true) == 0) { if(IsPlayerConnected(playerid)) { new Float:oldposx, Float:oldposy, Float:oldposz; GetPlayerName(playerid, playername, sizeof(playername)); GetPlayerPos(playerid, oldposx, oldposy, oldposz); for(new h = 0; h < sizeof(FlatsInfo); h++) { if(PlayerToPoint(2.0, playerid, FlatsInfo[h][fEntrancex], FlatsInfo[h][fEntrancey], FlatsInfo[h][fEntrancez]) && FlatsInfo[h][fOwned] == 0 && GetPlayerVirtualWorld(playerid) == FlatsInfo[h][fVirtWorld]) { if(PlayerInfo[playerid][pLevel] < FlatsInfo[h][fLevel]) { format(string, sizeof(string), "Ошибка: Вам нужен %d уровень, чтобы купить эту квартиру.", FlatsInfo[h][fLevel]); SendClientMessage(playerid, COLOR_GRAD5, string); return 1; } if((PlayerInfo[playerid][pPhousekey] != 255 && strcmp(playername, HouseInfo[PlayerInfo[playerid][pPhousekey]][hOwner], true) == 0) || (PlayerInfo[playerid][pFlatKey] != 255 && strcmp(playername, FlatsInfo[PlayerInfo[playerid][pFlatKey]][fOwner], true) == 0)) { SendClientMessage(playerid, COLOR_WHITE, "Ошибка: У вас уже есть дом / квартира."); return 1; } if(GetPlayerMoney(playerid) > FlatsInfo[h][fValue]) { PlayerInfo[playerid][pFlatKey] = h; FlatsInfo[h][fOwned] = 1; GetPlayerName(playerid, sendername, sizeof(sendername)); strmid(FlatsInfo[h][fOwner], sendername, 0, strlen(sendername), 255); GivePlayerMoney(playerid,-FlatsInfo[h][fValue]); PlayerPlayMusic(playerid); SetPlayerInterior(playerid,FlatsInfo[h][fInt]); SetPlayerVirtualWorld(playerid,h+9999); SetPlayerPos(playerid,FlatsInfo[h][fExitx],FlatsInfo[h][fExity],FlatsInfo[h][fExitz]); GameTextForPlayer(playerid, "~w~Welcome Flat~n~You can exit at any time by moving to this door and typing /exit", 5000, 3); PlayerInfo[playerid][pInt] = FlatsInfo[h][fInt]; SendClientMessage(playerid, COLOR_WHITE, "Вы купили квартиру!"); SendClientMessage(playerid, COLOR_WHITE, "Используйте /flat для управления ею!"); DateProp(playerid); //OnPlayerSave(playerid); UpdateFlat(h); return 1; } else { SendClientMessage(playerid, COLOR_WHITE, "Ошибка: У вас не хватает денег!"); return 1; } } } } return 1; }После ищем команду /enter и встовляем в неё for(new i = 0; i < sizeof(FlatsInfo); i++) { if (PlayerToPoint(3, playerid,FlatsInfo[i][fEntrancex], FlatsInfo[i][fEntrancey], FlatsInfo[i][fEntrancez]) && GetPlayerVirtualWorld(playerid) == FlatsInfo[i][fVirtWorld]) { //printf("Found House :%d",i); if(PlayerInfo[playerid][pFlatKey] == i || FlatsInfo[i][fLock] == 0) { SetPlayerVirtualWorld(playerid,i+9999); SetPlayerInterior(playerid,FlatsInfo[i][fInt]); SetPlayerPos(playerid,FlatsInfo[i][fExitx],FlatsInfo[i][fExity],FlatsInfo[i][fExitz]); GameTextForPlayer(playerid, "~w~Welcome Kvartira", 5000, 1); PlayerInfo[playerid][pInt] = FlatsInfo[i][fInt]; } else { GameTextForPlayer(playerid, "~r~Locked", 5000, 1); } } }После ищем команду /exit и встовляем туда for(new i = 0; i < sizeof(FlatsInfo); i++) { if(GetPlayerVirtualWorld(playerid) == i+9999) { if (PlayerToPoint(3, playerid,FlatsInfo[i][fExitx], FlatsInfo[i][fExity], FlatsInfo[i][fExitz])) { SetPlayerInterior(playerid,3); SetPlayerVirtualWorld(playerid,FlatsInfo[i][fVirtWorld]); SetPlayerPos(playerid,FlatsInfo[i][fEntrancex],FlatsInfo[i][fEntrancey],FlatsInfo[i][fEntrancez]); } } }Потом в public OnDialogResponse добавим if(dialogid == 50) { if(response) { if(listitem == 0) { for(new i = 0; i < sizeof(FlatsInfo); i++) { if ((PlayerToPoint(3, playerid,FlatsInfo[i][fEntrancex], FlatsInfo[i][fEntrancey], FlatsInfo[i][fEntrancez]) && GetPlayerVirtualWorld(playerid) == FlatsInfo[i][fVirtWorld]) || (PlayerToPoint(3, playerid,FlatsInfo[i][fExitx], FlatsInfo[i][fExity], FlatsInfo[i][fExitz]) && GetPlayerVirtualWorld(playerid) == i+9999)) { if(PlayerInfo[playerid][pFlatKey] == i) { if(FlatsInfo[i][fLock] == 1) { FlatsInfo[i][fLock] = 0; SendClientMessage(playerid, COLOR_WHITE, "Квартира открыта"); PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0); return 1; } if(FlatsInfo[i][fLock] == 0) { FlatsInfo[i][fLock] = 1; SendClientMessage(playerid, COLOR_WHITE, "Квартира закрыта"); PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0); return 1; } } else { SendClientMessage(playerid, COLOR_GREY, "Это не ваша квартира."); return 1; } } } } else if(listitem == 1) { OnPlayerCommandText(playerid, "/sellflat"); } } else { return 1; } }Потом в public OnPlayerPickUpPickup(playerid, pickupid) добавить if(pickupid == flathouse1[0]) // Квартирный Дом напротив Репортеров (Вход) { SetPlayerPos(playerid, 972.3107,-8.6146,1001.1484); SetPlayerInterior(playerid, 3); PlayerInfo[playerid][pInt] = 3; SetPlayerVirtualWorld(playerid,1); } else if(pickupid == flathouse1[1]) // Квартирный Дом напротив Репортеров (Выход) { SetPlayerPos(playerid, -1966.0192,434.3174,35.1719); SetPlayerInterior(playerid, 0); PlayerInfo[playerid][pInt] = 0; SetPlayerVirtualWorld(playerid,0); } else if(pickupid == flathouse2[0]) // Квартирный Дом напротив Небоскрёпа ЛС (Вход) { SetPlayerPos(playerid, 972.3107,-8.6146,1001.1484); SetPlayerInterior(playerid, 3); PlayerInfo[playerid][pInt] = 3; SetPlayerVirtualWorld(playerid,2); } else if(pickupid == flathouse2[1]) // Квартирный Дом напротив Небоскрёпа ЛС (Выход) { SetPlayerPos(playerid, 329.7834,-1513.7047,36.0391); SetPlayerInterior(playerid, 0); PlayerInfo[playerid][pInt] = 0; SetPlayerVirtualWorld(playerid,0); } else if(pickupid == flathouse3[0]) // Квартирный Дом у Банка ЛС (Вход) { SetPlayerPos(playerid, 972.3107,-8.6146,1001.1484); SetPlayerInterior(playerid, 3); PlayerInfo[playerid][pInt] = 3; SetPlayerVirtualWorld(playerid,3); } else if(pickupid == flathouse3[1]) // Квартирный Дом у Банка ЛС (Выход) { SetPlayerPos(playerid, 1378.8137,-1088.7667,27.0466); SetPlayerInterior(playerid, 0); PlayerInfo[playerid][pInt] = 0; SetPlayerVirtualWorld(playerid,0); }Потом добавим пикапы: flathouse1[0] = CreatePickup(1318, 2, -1962.0586,434.1953,35.1719, 0); pickups++; // Квартирный Дом напротив Репортеров (Вход) flathouse1[1] = CreatePickup(1318, 2, 975.1188,-8.6426,1001.1484, 1); pickups++; // Квартирный Дом напротив Репортеров (Выход) flathouse2[0] = CreatePickup(1318, 2, 328.1443,-1512.3280,36.0325, 0); pickups++; // Квартирный Дом напротив Небоскрёпа ЛС (Вход) flathouse2[1] = CreatePickup(1318, 2, 975.1188,-8.6426,1001.1484, 2); pickups++; // Квартирный Дом напротив Небоскрёпа ЛС (Выход) flathouse3[0] = CreatePickup(1318, 2, 1382.1489,-1088.8043,28.2124, 0); pickups++; // Квартирный Дом у Банка ЛС (Вход) flathouse3[1] = CreatePickup(1318, 2, 975.1188,-8.6426,1001.1484, 3); pickups++; // Квартирный Дом у Банка ЛС (Выход)Чуть не забыл ко всем форвардам добавить forward LoadFlats();и в Public OnGameModeInit добавить LoadFlats();После в enum pInfo добавить pFlatKey,Потом в public OnPlayerRegister(playerid, password[]) dini_IntSet(string, "Flatkey", PlayerInfo[playerid][pFlatKey]);После в public OnPlayerLogin PlayerInfo[playerid][pFlatKey] = dini_Int(string2,"Flatkey");немного ниже в этомже паблике добавить PlayerInfo[playerid][pFlatKey] = 255;и под конец в public OnPlayerConnect добавить PlayerInfo[playerid][pFlatKey] = 255;вот и всё ))Автор Вырезки: Mr_Dave Вырезано из мода Diamond_City Может кому пригодится И вот сам файл с квартирками =) flats.cfg
×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.