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

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

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

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

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

Тип контента


Форумы

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

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

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


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

  • Начало

    Конец


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

  • Начало

    Конец


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

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

  1. Сегодня мы научимся делать вип аккаунты по времени, с автоматическим удалением по истечению времени. Перейдем в самый вверх вашего мода и впишем туда этот код: #include <a_samp> //стандартный инклуд #include <dc_cmd> //командный процесор #include <mxdate> //время и т д #include <a_mysql> //для работы с бд #include <sscanf> // #define MYSQL_HOST "localhost" // IP адресс БД. #define MYSQL_USER "ЛОГИН" // Login БД. #define MYSQL_DB "БД" // Название БД. #define MYSQL_PASS "Пароль" // Пароль БД. Теперь необходимо установить подключение к базе при включении мода, перейдем в OnGameModeInit и впишем туда этот код: mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DB, MYSQL_PASS);//устанавливаем подключение switch(mysql_ping()) { case 1: print("Соединение установлено"); // Если подключена БД. case -1: print("Нет соединения с БД"); // Если не подключена БД. } Теперь если все будет нормально то в консоли появится инфа о том что соединение установлено. Сейчас сделаем отключение от базы при выключении/перезагрузке мода, перейдем в OnGameModeExit и впишем: mysql_close(); Теперь нужно сделать проверку, переходим в OnPlayerConnect и вписываем: new query[100],name[24],string[240]sqlname[24],days;// GetPlayerName(playerid,name,sizeof(name));//узнаем имя mysql_real_escape_string(name,sqlname); format(query,sizeof(query),"SELECT * FROM `Donate` WHERE `Name` = '%s'",sqlname); mysql_query(query);//отправляем запрос mysql_store_result();//получаем ответ if(mysql_fetch_row(query) && mysql_num_rows() == 1)//если есть поле с именем игрока { mysql_get_field("Days", string); days=strval(string);//получаем время на которое выдан аккаунт if(gettime() >= days) //если срок закончился { SendClientMessage(playerid,0xFFFFFFFF,"Действие вашего VIP аккаунта закончилось"); format(string,sizeof(string),"DELETE FROM `Donate` WHERE `Name`='%s'",name); mysql_query(string);//удаляем его из бд //PlayerInfo[playerid][pDonate]=0; сюда впишите вашу випку } else//если действие аккаунта еще не закончилось { //PlayerInfo[playerid][pDonate]=1; ваша випка format(string,sizeof(string),"Действие вашего VIP аккаунта закончится %s ",date("%dd.%mm.%yyyy в %hh:%ii:%ss",days)); SendClientMessage(playerid,0xFFFFFFFF,string);//выведем информацию о том когда закончится действие аккаунта } } mysql_free_result();//очищаем Теперь построим команду для выдачи випки. Внимание команда построена на процессоре dc_cmd CMD:donate(playerid, params[]) { if(GetPVarInt(playerid,"Admin") < 5) return 1; new string[144]; if(!strlen(params[0])|| !strlen(params[1])) return SendClientMessage(playerid,0xFFFFFFFF,"{0099FF}Используйте: {FFFFFF}/donate {99D938}[playerid] [Day] ");//если параметры не указанны DonatePlayer(params[0],params[1]);//если указанны то дадим випку и занесем в бд format(string,sizeof(string),"Вам выдан Вип аккаунт на %d дней",params[1]); SendClientMessage(params[0],0xFFFFFFFF,string);//покажем сообщение игроку которому выдали //ваша випка PlayerInfo[params[0]][pDonate]=1; return true; } Теперь сделаем функцию выдачи випки, перейдем в низ вашего мода и напишем следующий код: stock DonatePlayer(playerid,days) { new query[256],name[24]; GetPlayerName(playerid,name,sizeof(name));//узнаем имя format(query, sizeof(query), "INSERT INTO `Donate` (`Name`, `Days`) VALUE ('%s','%d')",name,gettime()+86400*days);//gettime()вернет время в секундах, 86400 секунд в одних сутках, days количество дней на которое будет установлен вип аккаунт mysql_query(query);//отправим запрос return true; } Все include клик Теперь нужно создать таблицу в нашей бд: Создаем таблицу с именем Donate, делаем 2 столбца Name и Days. В первом укажем значение string(24), а во втором int(11). Автор:Last. чуть-чуть переделал я.(Vlad_Andreev)
  2. При вызове функции ShowTextDrawMost снизу под деньгами покажет TextDraw в виде разведенного моста. Время на которое будет показан TextDraw нужно указывать свое при вызове функции, по умолчанию - 5 секунд.У меня - 2 минуты. TextDraw показывается всем игрокам онлайн, а после - удаляется. Ко всем переменным: new PlayerText:Most[MAX_PLAYERS][2]; В OnPlayerConnect: Most[playerid][0] = CreatePlayerTextDraw(playerid,513.000000,119.000000,"MOSTUI:sb_0"); PlayerTextDrawBackgroundColor(playerid,Most[playerid][0],255); PlayerTextDrawFont(playerid,Most[playerid][0],4); PlayerTextDrawLetterSize(playerid,Most[playerid][0],0.500000,1.000000); PlayerTextDrawColor(playerid,Most[playerid][0],-1); PlayerTextDrawSetOutline(playerid,Most[playerid][0],0); PlayerTextDrawSetProportional(playerid,Most[playerid][0],1); PlayerTextDrawSetShadow(playerid,Most[playerid][0],1); PlayerTextDrawUseBox(playerid,Most[playerid][0],1); PlayerTextDrawBoxColor(playerid,Most[playerid][0],255); PlayerTextDrawTextSize(playerid,Most[playerid][0],79.000000,74.000000); ////////////////// Most[playerid][1] = CreatePlayerTextDraw(playerid,499.000000,112.000000, "_"); PlayerTextDrawBackgroundColor(playerid,Most[playerid][1],255); PlayerTextDrawFont(playerid,Most[playerid][1],1); PlayerTextDrawLetterSize(playerid,Most[playerid][1],0.500000, 6.599999); PlayerTextDrawColor(playerid,Most[playerid][1],70); PlayerTextDrawSetOutline(playerid,Most[playerid][1],0); PlayerTextDrawSetProportional(playerid,Most[playerid][1],1); PlayerTextDrawSetShadow(playerid,Most[playerid][1],1); PlayerTextDrawUseBox(playerid,Most[playerid][1],1); PlayerTextDrawBoxColor(playerid,Most[playerid][1],40); PlayerTextDrawTextSize(playerid,Most[playerid][1],607.000000, 0.000000); В конец мода: stock ShowTextDrawMost(time = 5) { for(new i = GetMaxPlayers(); i != -1; i--) { if(!IsPlayerConnected(i)) continue; PlayerTextDrawShow(i,Most[i][0]); PlayerTextDrawShow(i,Most[i][1]); SetTimerEx("HideTextDrawMost",time*1000,false,"i",i); } return 1; } forward HideTextDrawMost(playerid); public HideTextDrawMost(playerid) { PlayerTextDrawHide(playerid,Most[playerid][0]); PlayerTextDrawHide(playerid,Most[playerid][1]); return 1; } Теперь в команду разведения моста, вставим строчку, чтобы вызвать textdraw. ShowTextDrawMost(5);//5 - время в секундах на которое будет показан TextDraw
  3. Max_Eitzen

    TextDraw спидометра.

    Нашёл у себя свой первый проект, который я делал в iPLEOMAX. Делал его для одного сервера, ну да ладно. В общем, как всегда выкладываю pwn и itd, чтобы вы могли изменить его под себя. Полоски сбоку, которые указывают на уровень топлива в транспорте, на скриншоте стоят криво, на деле всё ровно. TD_NEWSPEED.pwn TD_NEWSPEED.zip
  4. Max_Eitzen

    TextDraw спидометра.

    Доброго времени суток всем. Когда-то давно ползал по одному из форумов samp и нашел тему о продаже текстдрава, скачал картинку, хотел сделать подобный себе на сервер, но всё руки не доходили.. И вот, от страдая от безделья решил замутить что-то. Попытался скопировать, переведя на русский язык, но т.к. я рукожоп, получилось немного криво. В общем, оценивайте. Кому нужно будет, подгоняйте под себя. Функционал не делал, здесь только TD. - оригинал из САМП - оригинал от меня Выкладываю так же исходник iTD, кто захочет может что-то изменить/добавить. TD_kek_speed.pwn kek_speed.zip
  5. Однако здравствуйте:) Хочу представить вам спидометр, который я делал для одного сервера, который потом меня кинул. Для работы используется инклуд foreach. Только для мода с основой GAMER. Огромное спасибо Red_Devils. Брал за основу его урок. Ко всем переменным: new PlayerText:Textdraw[8][MAX_PLAYERS]; Далее в OnPlayerConnect: PlayerTextDrawHide(playerid,Textdraw[0][playerid]); PlayerTextDrawHide(playerid,Textdraw[1][playerid]); PlayerTextDrawHide(playerid,Textdraw[2][playerid]); PlayerTextDrawHide(playerid,Textdraw[3][playerid]); PlayerTextDrawHide(playerid,Textdraw[4][playerid]);PlayerTextDrawHide(playerid,Textdraw[5][playerid]);PlayerTextDrawHide(playerid,Textdraw[6][playerid]);PlayerTextDrawHide(playerid,Textdraw[7][playerid]); Textdraw[0][playerid] = CreatePlayerTextDraw(playerid, 633.200073, 372.593444, "usebox"); PlayerTextDrawLetterSize(playerid, Textdraw[0][playerid], 0.000000, 6.818146); PlayerTextDrawTextSize(playerid, Textdraw[0][playerid], 452.400115, 0.000000); PlayerTextDrawAlignment(playerid, Textdraw[0][playerid], 1); PlayerTextDrawColor(playerid, Textdraw[0][playerid], 0); PlayerTextDrawUseBox(playerid, Textdraw[0][playerid], true); PlayerTextDrawBoxColor(playerid, Textdraw[0][playerid], 102); PlayerTextDrawSetShadow(playerid, Textdraw[0][playerid], 0); PlayerTextDrawSetOutline(playerid, Textdraw[0][playerid], 0); PlayerTextDrawFont(playerid, Textdraw[0][playerid], 0); Textdraw[1][playerid] = CreatePlayerTextDraw(playerid, 472.799926, 386.773437, "IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII"); PlayerTextDrawLetterSize(playerid, Textdraw[1][playerid], 0.449999, 1.600000); PlayerTextDrawAlignment(playerid, Textdraw[1][playerid], 1); PlayerTextDrawColor(playerid, Textdraw[1][playerid], -2139062017); PlayerTextDrawSetShadow(playerid, Textdraw[1][playerid], 0); PlayerTextDrawSetOutline(playerid, Textdraw[1][playerid], 1); PlayerTextDrawBackgroundColor(playerid, Textdraw[1][playerid], 51); PlayerTextDrawFont(playerid, Textdraw[1][playerid], 1); PlayerTextDrawSetProportional(playerid, Textdraw[1][playerid], 1); Textdraw[2][playerid] = CreatePlayerTextDraw(playerid, 508.799987, 371.840179, "167KM/H"); PlayerTextDrawLetterSize(playerid, Textdraw[2][playerid], 0.356398, 1.420799); PlayerTextDrawAlignment(playerid, Textdraw[2][playerid], 1); PlayerTextDrawColor(playerid, Textdraw[2][playerid], -1); PlayerTextDrawSetShadow(playerid, Textdraw[2][playerid], 0); PlayerTextDrawSetOutline(playerid, Textdraw[2][playerid], 1); PlayerTextDrawBackgroundColor(playerid, Textdraw[2][playerid], 51); PlayerTextDrawFont(playerid, Textdraw[2][playerid], 2); PlayerTextDrawSetProportional(playerid, Textdraw[2][playerid], 1); Textdraw[3][playerid] = CreatePlayerTextDraw(playerid, 473.599792, 386.773498, "IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII"); PlayerTextDrawLetterSize(playerid, Textdraw[3][playerid], 0.449999, 1.600000); PlayerTextDrawAlignment(playerid, Textdraw[3][playerid], 1); PlayerTextDrawColor(playerid, Textdraw[3][playerid], -1); PlayerTextDrawSetShadow(playerid, Textdraw[3][playerid], 0); PlayerTextDrawSetOutline(playerid, Textdraw[3][playerid], 1); PlayerTextDrawBackgroundColor(playerid, Textdraw[3][playerid], 51); PlayerTextDrawFont(playerid, Textdraw[3][playerid], 1); PlayerTextDrawSetProportional(playerid, Textdraw[3][playerid], 1); Textdraw[4][playerid] = CreatePlayerTextDraw(playerid, 463.199920, 403.946655, "BENZIN:"); PlayerTextDrawLetterSize(playerid, Textdraw[4][playerid], 0.449999, 1.600000); PlayerTextDrawAlignment(playerid, Textdraw[4][playerid], 1); PlayerTextDrawColor(playerid, Textdraw[4][playerid], -1); PlayerTextDrawSetShadow(playerid, Textdraw[4][playerid], 0); PlayerTextDrawSetOutline(playerid, Textdraw[4][playerid], 1); PlayerTextDrawBackgroundColor(playerid, Textdraw[4][playerid], 51); PlayerTextDrawFont(playerid, Textdraw[4][playerid], 1); PlayerTextDrawSetProportional(playerid, Textdraw[4][playerid], 1); Textdraw[5][playerid] = CreatePlayerTextDraw(playerid, 463.200103, 420.373352, "DVERI:"); PlayerTextDrawLetterSize(playerid, Textdraw[5][playerid], 0.449999, 1.600000); PlayerTextDrawAlignment(playerid, Textdraw[5][playerid], 1); PlayerTextDrawColor(playerid, Textdraw[5][playerid], -1); PlayerTextDrawSetShadow(playerid, Textdraw[5][playerid], 0); PlayerTextDrawSetOutline(playerid, Textdraw[5][playerid], 1); PlayerTextDrawBackgroundColor(playerid, Textdraw[5][playerid], 51); PlayerTextDrawFont(playerid, Textdraw[5][playerid], 1); PlayerTextDrawSetProportional(playerid, Textdraw[5][playerid], 1); Textdraw[6][playerid] = CreatePlayerTextDraw(playerid, 611.199707, 404.693328, "E"); PlayerTextDrawLetterSize(playerid, Textdraw[6][playerid], 0.449999, 1.600000); PlayerTextDrawAlignment(playerid, Textdraw[6][playerid], 1); PlayerTextDrawColor(playerid, Textdraw[6][playerid], -1); PlayerTextDrawSetShadow(playerid, Textdraw[6][playerid], 0); PlayerTextDrawSetOutline(playerid, Textdraw[6][playerid], 1); PlayerTextDrawBackgroundColor(playerid, Textdraw[6][playerid], 51); PlayerTextDrawFont(playerid, Textdraw[6][playerid], 1); PlayerTextDrawSetProportional(playerid, Textdraw[6][playerid], 1); Textdraw[7][playerid] = CreatePlayerTextDraw(playerid, 611.999938, 421.866821, "L"); PlayerTextDrawLetterSize(playerid, Textdraw[7][playerid], 0.449999, 1.600000); PlayerTextDrawAlignment(playerid, Textdraw[7][playerid], 1); PlayerTextDrawColor(playerid, Textdraw[7][playerid], -1); PlayerTextDrawSetShadow(playerid, Textdraw[7][playerid], 0); PlayerTextDrawSetOutline(playerid, Textdraw[7][playerid], 1); PlayerTextDrawBackgroundColor(playerid, Textdraw[7][playerid], 51); PlayerTextDrawFont(playerid, Textdraw[7][playerid], 1); PlayerTextDrawSetProportional(playerid, Textdraw[7][playerid], 1); Далее в OnPlayerDisconnect: PlayerTextDrawDestroy(playerid,Textdraw[0][playerid]); PlayerTextDrawDestroy(playerid,Textdraw[1][playerid]); PlayerTextDrawDestroy(playerid,Textdraw[2][playerid]); PlayerTextDrawDestroy(playerid,Textdraw[3][playerid]); PlayerTextDrawDestroy(playerid,Textdraw[4][playerid]);PlayerTextDrawDestroy(playerid,Textdraw[5][playerid]);PlayerTextDrawDestroy(playerid,Textdraw[6][playerid]);PlayerTextDrawDestroy(playerid,Textdraw[7][playerid]); В конец мода: forward SpeedoUpdate(); public SpeedoUpdate() { foreach(Player,i) { if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i)) { new string[50],status[32],statusL[32],statusD[32],vehicleid = GetPlayerVehicleID(i); if(VehicleInfo[vehicleid][pEngineStatus] == 1) status = "~b~E";//Двигатель else status = "~r~E"; if(VehicleInfo[vehicleid][pLightsStatus] == 1) statusL = "~b~L";//Фары else statusL = "~r~L"; if(CarInfo[vehicleid][cLock] == 1) statusD = "~r~€AKP‘T‘"; else statusD = "~g~OTKP‘T‘"; PlayerTextDrawShow(i,Textdraw[0][i]); PlayerTextDrawShow(i,Textdraw[1][i]); PlayerTextDrawShow(i,Textdraw[2][i]); PlayerTextDrawShow(i,Textdraw[3][i]); PlayerTextDrawShow(i,Textdraw[4][i]);PlayerTextDrawShow(i,Textdraw[5][i]);PlayerTextDrawShow(i,Textdraw[6][i]);PlayerTextDrawShow(i,Textdraw[7][i]); format(string,sizeof(string),"~r~%d ~g~KM/H",GetPlayerSpeed(i));//Скорость PlayerTextDrawSetString(i,Textdraw[2][i],string); format(string,sizeof(string),"~w~ЂEH€…H: ~r~%d~g~‡.",Gas[vehicleid]);//Бензин PlayerTextDrawSetString(i,Textdraw[4][i],string); format(string,sizeof(string),"%s",status); PlayerTextDrawSetString(i,Textdraw[6][i],string); format(string,sizeof(string),"%s",statusL); PlayerTextDrawSetString(i,Textdraw[7][i],string); format(string,sizeof(string),"ѓBEP…:%s",statusD); PlayerTextDrawSetString(i,Textdraw[5][i],string); switch(SpeedVehicle(i)){ case 0..1: PlayerTextDrawSetString(i,Textdraw[3][i], "~w~"); case 2..10: PlayerTextDrawSetString(i,Textdraw[3][i], "~g~II"); case 11..20: PlayerTextDrawSetString(i,Textdraw[3][i], "~g~III"); case 21..30: PlayerTextDrawSetString(i,Textdraw[3][i], "~g~IIIII"); case 31..40: PlayerTextDrawSetString(i,Textdraw[3][i], "~y~IIIIIIII"); case 41..50: PlayerTextDrawSetString(i,Textdraw[3][i], "~y~IIIIIIIII"); case 51..60: PlayerTextDrawSetString(i,Textdraw[3][i], "~y~IIIIIIIIIIII"); case 61..70: PlayerTextDrawSetString(i,Textdraw[3][i], "~y~IIIIIIIIIIIIII"); case 71..80: PlayerTextDrawSetString(i,Textdraw[3][i], "~y~IIIIIIIIIIIIIIII"); case 81..90: PlayerTextDrawSetString(i,Textdraw[3][i], "~r~IIIIIIIIIIIIIIIIIII"); case 91..120: PlayerTextDrawSetString(i,Textdraw[3][i],"~r~IIIIIIIIIIIIIIIIIIIIII"); default: PlayerTextDrawSetString(i,Textdraw[3][i], "~r~IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII");} } if(!IsPlayerInAnyVehicle(i)) { PlayerTextDrawHide(i,Textdraw[0][i]); PlayerTextDrawHide(i,Textdraw[1][i]); PlayerTextDrawHide(i,Textdraw[2][i]); PlayerTextDrawHide(i,Textdraw[3][i]); PlayerTextDrawHide(i,Textdraw[4][i]);PlayerTextDrawHide(i,Textdraw[5][i]); PlayerTextDrawHide(i,Textdraw[6][i]);PlayerTextDrawHide(i,Textdraw[7][i]); } } return true; } Таймер в OnGameModeInit: SetTimer("SpeedoUpdate",100,1);//обновляется раз в секунду Если компилятор будет ругаться на "SpeedVehicle", то в конец мода добавьте: stock SpeedVehicle(playerid, bool:return_km=true) { new Float:x, Float:y, Float:z; if(IsPlayerInAnyVehicle(playerid)) { new veh = GetPlayerVehicleID(playerid); GetVehicleVelocity(veh, x, y, z); }else GetPlayerVelocity(playerid, x, y, z); return return_km?floatround(floatsqroot(x*x+y*y+z*z)*195):floatround(floatsqroot(x*x+y*y+z*z)*121); } Автор : Predator. P.S. В подборе цветов я не очень, так что сами измените:)
  6. Aleksandr_Fedosov

    Ручные ворота

    Доброго времени суток Уважаемые форумчане я хочу вам рассказать про то как сделать ручные ворота Поясню ручные ворота - ворота, которые открываются/закрываются когда хотите вы без таймеров и комманд Буду делать на примере полиции г.Южный Ну что ж приступим: 1.Ко всем new new GateCop; Но т.к. вы добавляете первые ворота вам надо будет добавить ниже переменной ворот вот эту строку new GateMove = 0; При добавлении дальше вы будете делать так после new GateCop писать например new GatePPS и все Переходим дальше: 2.В public OnPlayerKeyStateChange добавим if(newkeys == 65536 && !IsPlayerInAnyVehicle(playerid) || newkeys == 2 && IsPlayerInAnyVehicle(playerid)) { if(PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pMember] == 1)//ID фракции пишем свой if(IsPlayerInRangeOfPoint( playerid, 15.0, 2579.8472, -2435.3928, 23.5669))//координаты закрытых ворот { if(GateMove == 0) { MoveObject(GateCop, 2579.8472, -2435.3928, 17.9227, 2.0);//координаты открытых GateMove = 1; } else if(GateMove == 1) { MoveObject(GateCop, 2579.8472, -2435.3928, 23.5669, 2.0);//координаты закрытых GateMove = 0; } } } 3.В public OnGameModeInit добавим: GateCop = CreateObject(980, 2579.85, -2435.39, 23.57, 0.00, 0.00, 90.00);//закрытые На этом все проверял на модах: Omsk RP Revival и new.pwn При желании можно заменить проверку pLeader pMember на pDonateRank если это будет VIP дом и pAdmin дом админа. Также можно сделать ворота по нику Добавив в public OnPlayerKeyStateChange заместо проверки по лидерке вот это new szName[32]; GetPlayerName(playerid,szName,32); if(!strcmp(szName,"Ваш ник",true)) Автор вырезки: Aleksandr_Tanaev Спасибо за внимание
  7. Нашел на просторах интернета динамическую систему бизнесов. Проверено на моде GTRP и new.pwn. Для начала ко всем enum добавим: enum bInfo { bBusName[64], bOwner[MAX_PLAYER_NAME], bPrice, bLock, bInterior, bVirtWorld, bPick, Text3D:bText, Float:bX, Float:bY, Float:bZ }; new BusinessInfo[250][bInfo];//250 макс. кол-во бизнесов new AllBiz;//всего бизнесов new LString[128]; enum biInfo//информация берётся из bInts { biInt, Float:biX, Float:biY, Float:biZ, biName[15], } new bInts[][biInfo]= { {4,457.304748,-88.428497,999.554687,"Название бизнеса"},//4 это инт,дальше координаты появления в интерьере и название бизнеса {5,454.973937,-110.104995,1000.077209,"Своё название"}, {15,207.737991,-109.019996,1005.132812,"Своё название"}, {5,226.293991,-7.431529,1002.210937,"Своё название"}, {4,286.800994,-82.547599,1001.515625,"Своё название"}, {5,772.111999,-3.898649,1000.728820,"Своё название"}, {15,2215.454833,-1147.475585,1025.796875,"Своё название"}, {2,1204.809936,-11.586799,1000.921875,"Своё название"}, {17,493.390991,-22.722799,1000.679687,"Своё название"}}; Далее в конец мода: stock LoadBiz() { new ids[32],str[64]; new iniOpens = ini_openFile("biz.cfg"); ini_getInteger(iniOpens, "AllBiz", AllBiz); ini_closeFile(iniOpens); if(AllBiz != 0) { for(new biz = 1; biz <= AllBiz; biz++) { format(ids,sizeof(ids),"biz/%d.ini",biz); new inihOpen = ini_openFile(ids); ini_getString(inihOpen, "bBusName", str); format(BusinessInfo[biz][bBusName],24,"%s",str); ini_getString(inihOpen, "bOwner", str); format(BusinessInfo[biz][bOwner],24,"%s",str); ini_getInteger(inihOpen, "bPrice", BusinessInfo[biz][bPrice]); ini_getInteger(inihOpen, "bLock", BusinessInfo[biz][bLock]); ini_getInteger(inihOpen, "bInterior", BusinessInfo[biz][bInterior]); ini_getInteger(inihOpen, "bVirtWorld", BusinessInfo[biz][bVirtWorld]); ini_getFloat(inihOpen, "bX", BusinessInfo[biz][bX]); ini_getFloat(inihOpen, "bY", BusinessInfo[biz][bY]); ini_getFloat(inihOpen, "bZ", BusinessInfo[biz][bZ]); ini_closeFile(inihOpen); if(!strcmp(BusinessInfo[biz][bOwner],"Nones",true))//Если нет владельца { BusinessInfo[biz][bPick] = CreatePickup(1274, 23, BusinessInfo[biz][bX], BusinessInfo[biz][bY], BusinessInfo[biz][bZ], 0);//Создаём Пикап format(LString,128,"Бизнес\n%s\nЦена: $%d", BusinessInfo[biz][bBusName], BusinessInfo[biz][bPrice]);//Форматируем BusinessInfo[biz][bText] = Create3DTextLabel(LString, 0xFFFFFFFF, BusinessInfo[biz][bX], BusinessInfo[biz][bY], BusinessInfo[biz][bZ] + 0.5, 10.0, 0, 0);//Создаём 3DText } else//Иначе { BusinessInfo[biz][bPick] = CreatePickup(1274, 23, BusinessInfo[biz][bX], BusinessInfo[biz][bY], BusinessInfo[biz][bZ],0);//Создаём Пикап format(LString, 128, "Бизнес\n%s\nВладелец: %s", BusinessInfo[biz][bBusName],BusinessInfo[biz][bOwner]);//Форматируем BusinessInfo[biz][bText] = Create3DTextLabel(LString, 0xFFFFFFFF, BusinessInfo[biz][bX], BusinessInfo[biz][bY], BusinessInfo[biz][bZ] +0.5, 10.0, 0, 0);//Создаём 3DText } } printf("Бизнесов загружено: %d",AllBiz); } return 1; } stock UpdateBusiness(b) { DestroyPickup(BusinessInfo[b][bPick]);//Удаляем Пикап if(!strcmp(BusinessInfo[b][bOwner],"Nones",true))//Если нет владельца { BusinessInfo[b][bPick] = CreatePickup(1274, 23, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ],0);//Создаём Пикап format(LString, 128, "Бизнес\n%s\nЦена: $%d", BusinessInfo[b][bBusName], BusinessInfo[b][bPrice]);//Форматируем Update3DTextLabelText(BusinessInfo[b][bText],0xFFFFFFFF,LString);//Обновляем 3DText } else//Иначе { BusinessInfo[b][bPick] = CreatePickup(1274, 23, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ], 0);//Создаём Пикап format(LString,128,"Бизнес\n%s\nВладелец: %s",BusinessInfo[b][bBusName],BusinessInfo[b][bOwner]);//Форматируем Update3DTextLabelText(BusinessInfo[b][bText],0xFFFFFFFF,LString);//Обновляем 3DText } } stock SaveBusiness(biz) { new ids[32]; format(ids,sizeof(ids),"biz/%d.ini",biz); new inihOpen; inihOpen = ini_openFile(ids); if(inihOpen == -1 || inihOpen == -2) inihOpen = ini_createFile(ids); ini_setString(inihOpen, "bBusName", BusinessInfo[biz][bBusName]); ini_setString(inihOpen, "bOwner", BusinessInfo[biz][bOwner]); ini_setInteger(inihOpen, "bPrice", BusinessInfo[biz][bPrice]); ini_setInteger(inihOpen, "bLock", BusinessInfo[biz][bLock]); ini_setInteger(inihOpen, "bInterior", BusinessInfo[biz][bInterior]); ini_setInteger(inihOpen, "bVirtWorld", BusinessInfo[biz][bVirtWorld]); ini_setFloat(inihOpen, "bZ", BusinessInfo[biz][bZ]); ini_setFloat(inihOpen, "bX", BusinessInfo[biz][bX]); ini_setFloat(inihOpen, "bY", BusinessInfo[biz][bY]); ini_closeFile(inihOpen); return 1; } В OnGameModeInit: LoadBiz(); Далее добавим несколько команд, для этого в OnPlayerCommandText добавим: if(strcmp("/benter", cmdtext, true, 6) == 0) { for(new b = 1; b <= AllBiz; b++)//Для всех Бизнесов { if(!IsPlayerInRangeOfPoint(playerid, 1.5, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ])) continue; if(strcmp(BusinessInfo[b][bOwner],GN(playerid), true) !=0 && BusinessInfo[b][bLock] == 1) return SendClientMessage(playerid,-1,"Бизнес закрыт.");//Если закрыт SetPlayerPos(playerid, bInts[BusinessInfo[b][bInterior]][biX], bInts[BusinessInfo[b][bInterior]][biY], bInts[BusinessInfo[b][bInterior]][biZ]);//Устанавливаем позицию игроку SetPlayerInterior(playerid, bInts[BusinessInfo[b][bInterior]][biInt]);//Устанавливаем интерьер игроку SetPlayerVirtualWorld(playerid, BusinessInfo[b][bVirtWorld]);//Устанавливаем виртуальный мир игроку } return true; } if(strcmp("/bexit", cmdtext, true, 5) == 0) { for(new b = 1; b <= AllBiz; b++)//Для всех Бизнесов { if(IsPlayerInRangeOfPoint(playerid, 5.0, bInts[BusinessInfo[b][bInterior]][biX], bInts[BusinessInfo[b][bInterior]][biY], bInts[BusinessInfo[b][bInterior]][biZ]) && GetPlayerVirtualWorld(playerid) == BusinessInfo[b][bVirtWorld])//Если в радиусе 5 метров от выхода((Координат входа)) { SetPlayerPos(playerid, BusinessInfo[b][bX],BusinessInfo[b][bY],BusinessInfo[b][bZ]);//Устанавливаем позицию игроку SetPlayerVirtualWorld(playerid,0);//Устанавливаем виртуальный мир игроку SetPlayerInterior(playerid,0);//Устанавливаем интерьер игроку } } return true; } if(strcmp("/buybus", cmdtext, true, 9) == 0) { for(new b = 1; b <= AllBiz; b++)//Для всех Бизнесов { if(!IsPlayerInRangeOfPoint(playerid, 1.5, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ])) continue; if(PlayerInfo[playerid][pMoney] < BusinessInfo[b][bPrice]) return SendClientMessage(playerid,-1,"У вас не достаточно наличных средств, для покупки."); //Если не достаточно денег if(strcmp(BusinessInfo[b][bOwner], "Nones",true) != 0) return SendClientMessage(playerid,-1,"Бизнес не продаётся."); //Если есть Владелец strmid(BusinessInfo[b][bOwner], GN(playerid), 0, 24, 24);//Устанавливаем Владельца UpdateBusiness(b);//Обновляем SaveBusiness(b); //Сохраняем GivePlayerMoney(playerid,-BusinessInfo[b][bPrice]); //Отнимаем сумму SendClientMessage(playerid,-1,"Поздравляем с покупкой"); return true; } SendClientMessage(playerid,-1,"Подойдите к Бизнесу который желаете купить."); return true; } if(strcmp("/sellbus", cmdtext, true, 10) == 0) { for(new b = 1; b <= AllBiz; b++)//Для всех Бизнесов { if(!IsPlayerInRangeOfPoint(playerid, 1.5, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ])) continue; if(!strcmp(BusinessInfo[b][bOwner], GN(playerid), true)) { strmid(BusinessInfo[b][bOwner], "Nones", 0, 5, 5);//Убираем владельца с Бизнеса UpdateBusiness(b);//Обновляем SaveBusiness(b);//Сохраняем GivePlayerMoney(playerid,BusinessInfo[b][bPrice]/2);//Даём игроку 1/2 стоимости Бизнеса SendClientMessage(playerid,-1,"Вы продали свой Бизнес государству. За 1/2 его стоимости."); return true; } } return true; } if(strcmp("/addbus", cmdtext, true, 13) == 0) { if(PlayerInfo[playerid][pAdministrator] == 10) { return ShowPlayerDialog(playerid,2000,DIALOG_STYLE_INPUT,"Название","Введите название:","Далее","Отмена");//Выводим Диалог } } Далее добавим диалоги, для этого в OnDialogResponse вставим: if(dialogid == 2000) { if(response)//Если продолжаем { if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 2000, DIALOG_STYLE_INPUT, "Название", "Введите название:", "Далее","Отмена");//Если не введено - повторяем SetPVarString(playerid, "b_name", inputtext);//Записываем ShowPlayerDialog(playerid, 2001, DIALOG_STYLE_INPUT, "Стоимость", "Введите стоимость Бизнеса:", "Далее", "Отмена");//Показываем Диалог с Ценой } } if(dialogid == 2001) { if(response)//Если продолжаем { if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 2001, DIALOG_STYLE_INPUT, "Стоимость", "Введите стоимость бизнеса:","Далее","Назад");//Если не введено - повторяем SetPVarInt(playerid, "b_price", strval(inputtext)); LString = ""; for(new i; i < sizeof(bInts); i++) { strcat(LString, bInts[i][biName]); strcat(LString, "\n"); } ShowPlayerDialog(playerid, 2002, DIALOG_STYLE_LIST, "Интерьер", LString, "Далее", "Назад");//Показываем Диалог с выбором Интерьера } else DeletePVar(playerid, "b_name"), ShowPlayerDialog(playerid, 2000, DIALOG_STYLE_INPUT, "Название","Введите название:", "Далее", "Отмена");//Иначе } if(dialogid == 2002) { if(response)//Если продолжаем { SetPVarInt(playerid, "b_int", listitem); ShowPlayerDialog(playerid, 2003, DIALOG_STYLE_MSGBOX, "Подтверждение", "Вы действительно желаете создать Бизнес?", "V", "X");//Подтверждаем } else DeletePVar(playerid, "b_price"), ShowPlayerDialog(playerid, 2001, DIALOG_STYLE_INPUT, "Стоимость", "Введите стоимость Бизнеса:", "Далее", "Назад");//Иначе } if(dialogid == 2003) { if(response)//Если продолжаем { AllBiz++;//КОл-во Бизнесов плюсуем new inihOpen = ini_openFile("biz.cfg"); ini_setInteger(inihOpen, "AllBiz", AllBiz); ini_closeFile(inihOpen); new Float:x[3], str[64]; GetPlayerPos(playerid, x[0], x[1], x[2]);//Получаем позицию GetPVarString(playerid, "b_name", str, 64); BusinessInfo[AllBiz][bX] = x[0];//Присваиваем Координату X BusinessInfo[AllBiz][bY] = x[1];//Присваиваем Координату Y BusinessInfo[AllBiz][bZ] = x[2];//Присваиваем Координату Z BusinessInfo[AllBiz][bPrice] = GetPVarInt(playerid, "b_price");//Присваиваем Цену BusinessInfo[AllBiz][bInterior] = GetPVarInt(playerid, "b_int");//Присваиваем Интерьер BusinessInfo[AllBiz][bVirtWorld] = AllBiz;//Присваиваем Виртуальный Мир strmid(BusinessInfo[AllBiz][bBusName], str, 0, 32, 32);//Присваиваем Имя strmid(BusinessInfo[AllBiz][bOwner], "Nones", 0, 24, 24);//Присваиваем Владельца "Nones" SaveBusiness(AllBiz);//Сохраняем BusinessInfo[AllBiz][bPick] = CreatePickup(1274,23,x[0],x[1],x[2],0);//Создаём Пикап format(LString, 128, "Бизнес\n%s\nЦена: $%d", BusinessInfo[AllBiz][bBusName], BusinessInfo[AllBiz][bPrice]);//Форматируем BusinessInfo[AllBiz][bText] = Create3DTextLabel(LString, 0xFFFFFFFF, x[0], x[1], x[2] + 0.5, 10.0, 0, 0);//Создаём 3DText GameTextForPlayer(playerid, "~w~Бизнес ~g~Создан",100,1); DeletePVar(playerid, "b_price"); DeletePVar(playerid, "b_name"); DeletePVar(playerid, "b_int"); } else DeletePVar(playerid,"b_price"), DeletePVar(playerid, "b_name"), DeletePVar(playerid, "b_int");//Иначе } В папке scriptfiles создайте файл biz.cfg и впишите туда allbiz = 0. И создайте папку biz, туда они будут сохранятся. Автор: Лев Попов Автор переделки: Basis
  8. Predator

    Анти-мат

    Добрый вечер всем пользователям cr-mp.ru! Хочу представить вам анти-мат. Начнем! Ко всем new добавим: new BadWords[2][] = { "ваши запрещенные слова","ваши запрещенные слова" }; И в OnPlayerText: for(new w; w < sizeof(BadWords); w++) if(strfind(text,BadWords[w],true) != -1) return SendClientMessage(playerid,-1,"Не ругайтесь матом!") & 0; Автор: Amfy(во всяком случае он выложил данный урок и автора не указал)
  9. Predator

    Логотип сервера

    Приветствую всех пользователей, Представляю вашему вниманию логотип сервера. Приступим! Ко всем переменным добавим: new Text:Textdraw0; new Text:Textdraw1; Далее В OnGameModeinit: Textdraw0 = TextDrawCreate(509.667083, 421.452026, "cr-mp.ru"); TextDrawLetterSize(Textdraw0, 0.452666, 2.043852); TextDrawTextSize(Textdraw0, -23.666669, 97.066665); TextDrawAlignment(Textdraw0, 1); TextDrawColor(Textdraw0, -65281); TextDrawSetShadow(Textdraw0, 0); TextDrawSetOutline(Textdraw0, 1); TextDrawBackgroundColor(Textdraw0, -2147483393); TextDrawFont(Textdraw0, 3); TextDrawSetProportional(Textdraw0, 1); Textdraw1 = TextDrawCreate(507.666625, 422.537109, "usebox"); TextDrawLetterSize(Textdraw1, 0.000000, 1.987859); TextDrawTextSize(Textdraw1, 633.000183, 0.000000); TextDrawAlignment(Textdraw1, 1); TextDrawColor(Textdraw1, 0); TextDrawUseBox(Textdraw1, true); TextDrawBoxColor(Textdraw1, -1061109505); TextDrawSetShadow(Textdraw1, 0); TextDrawSetOutline(Textdraw1, 0); TextDrawFont(Textdraw1, 0); И В onplayerconnect: TextDrawShowForPlayer(playerid,Textdraw0); TextDrawShowForPlayer(playerid,Textdraw1); Автор: TheSelton Тема закрыта! Нет активности!
  10. Выкладываю скрипт системы достижения.При выполнении достижения - вам даётся определенное кол-во денег и выполняется достижение. Начнем: В enum pInfo добавить: pDostig, pDostigg, pDostiggg, pDostigggg В public OnPlayerConnect: PlayerInfo[playerid][pDostig] = 0; PlayerInfo[playerid][pDostigg] = 0; PlayerInfo[playerid][pDostiggg] = 0; PlayerInfo[playerid][pDostigggg] = 0; В public OnPlayerUpdate, ну или в любой таймер. ( желательно секундный ): if(PlayerInfo[playerid][pDostig] == 0) { if(PlayerInfo[playerid][pDostig] == 1) return 1; if(PlayerInfo[playerid][pDrugs] > 99) SendClientMessage(playerid, -1, "Ты выполнил(а) достижение {0080FF}№1{FFFFFF}. Приз: {0080FF}1OOOO$"), PlayerInfo[playerid][pDostig] = 1, GivePlayerMoney(playerid, 10000); } if(PlayerInfo[playerid][pDostigg] == 0) { if(PlayerInfo[playerid][pDostigg] == 1) return 1; if(PlayerInfo[playerid][pMats] > 9999) SendClientMessage(playerid, -1, "Ты выполнил(а) достижение {0080FF}№2{FFFFFF}. Приз: {0080FF}55OO$"), PlayerInfo[playerid][pDostigg] = 1, GivePlayerMoney(playerid, 5500); } if(PlayerInfo[playerid][pDostiggg] == 0) { if(PlayerInfo[playerid][pDostiggg] == 1) return 1; if(PlayerInfo[playerid][pLevel] > 2) SendClientMessage(playerid, -1, "Ты выполнил(а) достижение {0080FF}№3{FFFFFF}. Приз: {0080FF}1OOOO$"), PlayerInfo[playerid][pDostiggg] = 1, GivePlayerMoney(playerid, 10000); } if(PlayerInfo[playerid][pDostigggg] == 0) { if(PlayerInfo[playerid][pDostigggg] == 1) return 1; if(PlayerInfo[playerid][pMoney] > 499999) SendClientMessage(playerid, -1, "Ты выполнил(а) достижение {0080FF}№4{FFFFFF}. Приз: {0080FF}3O.OOO$"), PlayerInfo[playerid][pDostigggg] = 1, GivePlayerMoney(playerid, 30000); } В public OnPlayerRegister format(var, 64, "Dostig=%d\n",PlayerInfo[playerid][pDostig]);fwrite(hFile, var); format(var, 64, "Dostigg=%d\n",PlayerInfo[playerid][pDostigg]);fwrite(hFile, var); format(var, 64, "Dostiggg=%d\n",PlayerInfo[playerid][pDostiggg]);fwrite(hFile, var); format(var, 64, "Dostigggg=%d\n",PlayerInfo[playerid][pDostigggg]);fwrite(hFile, var); Добавим в public OnPlayerUpdate вот это: format(var, 64, "Dostig=%d\n",PlayerInfo[playerid][pDostig]);fwrite(hFile, var); format(var, 64, "Dostigg=%d\n",PlayerInfo[playerid][pDostigg]);fwrite(hFile, var); format(var, 64, "Dostiggg=%d\n",PlayerInfo[playerid][pDostiggg]);fwrite(hFile, var); format(var, 64, "Dostigggg=%d\n",PlayerInfo[playerid][pDostigggg]);fwrite(hFile, var); В public OnPlayerLogin добавим: if( strcmp( key , "Dostig" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pDostig] = strval( val ); } if( strcmp( key , "Dostigg" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pDostigg] = strval( val ); } if( strcmp( key , "Dostiggg" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pDostiggg] = strval( val ); } if( strcmp( key , "Dostigggg" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pDostiggg] = strval( val ); } В public OnPlayerCommandText: else if(strcmp(cmd, "/dostig", true) == 0) return ShowPlayerDostigDialog(playerid); Ко всем стокам/пабликам: stock ShowPlayerDostigDialog(playerid) { new text[50], text2[50], text3[50], text4[50]; switch(PlayerInfo[playerid][pDostig]) { case 0: { text = "{FF3300}Не выполнено"; } case 1: { text = "{33AA33}Выполнено"; } } switch(PlayerInfo[playerid][pDostigg]) { case 0: { text2 = "{FF3300}Не выполнено"; } case 1: { text2 = "{33AA33}Выполнено"; } } switch(PlayerInfo[playerid][pDostiggg]) { case 0: { text3 = "{FF3300}Не выполнено"; } case 1: { text3 = "{33AA33}Выполнено"; } } switch(PlayerInfo[playerid][pDostigggg]) { case 0: { text4 = "{FF3300}Не выполнено"; } case 1: { text4 = "{33AA33}Выполнено"; } } new string[1024], s[1024]; format(s, sizeof(s), "{C3C3C3}1. %s{C3C3C3}. Тебе нужно иметь более {FF3300}1OO{C3C3C3} грамм наркотиков при себе, чтобы выполнить это достижение. Приз: {33AA33}1OOOO${C3C3C3}\n\n", text); strcat(string, s); format(s, sizeof(s), "{C3C3C3}2. %s{C3C3C3}. Тебе нужно иметь более {FF3300}1OOOO{C3C3C3} материалов, чтобы выполнить это достижение. Приз: {33AA33}55OO${C3C3C3}\n\n", text2); strcat(string, s); format(s, sizeof(s), "{C3C3C3}3. %s{C3C3C3}. Тебе нужно получить {FF3300}3{C3C3C3} уровень, чтобы выполнить это достижение. Приз: {33AA33}1OOOO${C3C3C3}\n\n", text3); strcat(string, s); format(s, sizeof(s), "{C3C3C3}4. %s{C3C3C3}. Тебе нужно получить {FF3300}5OOOOO{C3C3C3} денег, чтобы выполнить это достижение. Приз: {33AA33}3OOOO$", text4); strcat(string, s); ShowDialog(playerid, DOST_ID, DIALOG_STYLE_MSGBOX, " ", string, "Назад","Закрыть"); return 1; }
  11. Так, как у нас нету этого урока, решил его выложить. Все источники и авторы указаны ниже. Данный урок есть на официальном сайте 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. В public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) надо только вставить : if(newkeys & KEY_SPRINT && newkeys & KEY_JUMP && GetPlayerState(playerid) != 2) { ClearAnimations(playerid); ApplyAnimation(playerid, "GYMNASIUM", "gym_jog_falloff",4.1,0,1,1,0,0); } GYMNASIUM", "gym_jog_falloff это анимация , ее можна сменить на свою , у меня он падает , делайте как хотите Автор : kucklovod1998
  13. artem.sholohoff

    Система голода

    Здравствуйте! Приступим: Ко всем new: new FirstSpawn[MAX_PLAYERS]; new Float:spenHealth[MAX_PLAYERS]; К forward: forward NeedHP(playerid); К define: #define hp_time 100000 // время ставите своё #define hp_loss 3 В конец мода: public NeedHP(playerid) { new Float:health; GetPlayerHealth(playerid, health); if(spenHealth[playerid] >= health) { SendClientMessage(playerid,COLOR_RED,"Вы проголодались, Вам нужно поесть что-нибудь!"); SetPlayerHealth(playerid,health-hp_loss); spenHealth[playerid] = health; } else { spenHealth[playerid] = health; } } В OnPlayerSpawn: FirstSpawn[playerid] += 1; new Float:health; GetPlayerHealth(playerid, health); spenHealth[playerid] = health; if(FirstSpawn[playerid] == 1) SetTimerEx("NeedHP",hp_time,1,"i",playerid); Автор: Dimoxa Batler
  14. Хай пипл. Тут один (давно) интересовался, как сделать что бы было две модели авто, но с разными текстурами одновременно. И приводил пример эвакуатора с ОРМа. Ну собственно сам секрет. Используется покрасочная работа- файл с текстурой, которая заменяет только сам "корпус." Крч. Расскажу на примере того же самого эвакуатора (с ОРМ (думаю они не обидятся) ). Имеем 2 файла текстуры - towtruck1.txd & towtruck.txd . В одном все текстуры, а во втором только "корпус". Добавим в мод: new evrik; evrik = AddStaticVehicle(525,-374.4628,662.8626,12.0010,270.4307,3,3); ChangeVehiclePaintjob( evrik, 0 ); new evrik1; evrik1 = AddStaticVehicle(525,-374.3501,648.3397,12.1706,17.6243,3,3); ChangeVehiclePaintjob( evrik1, 1 ); Где ChangeVehiclePaintjob( evrik1, 1 ); ChangeVehiclePaintjob функция смены покраски. evrik1 - объявленная переменная (или хз как её). "1" - id покрасочной работы.
  15. Институт есть в Арзамасе. Автор: Artem_Bandit то есть я. Можно сделать лучше. В команду /invite проставить проверку на получение аттестата. В public OnPlayerCommandText(playerid, cmdtext[]) if(strcmp(cmd, "/testrp", true) == 0) { if(PlayerToPoint(10.0, playerid,Радиус свой)) ShowPlayerDialog(playerid, 2324, DIALOG_STYLE_LIST, "Ваши действия если вас остановит Сотрудник Полиции", "1)Избить\n2)Предоставить права\n3)Сказать:В чем дело\n4)Уехать с место КПК", "Выбрать", "Отмена");//2324 ?????? ?? ???? return 1; } if(strcmp(cmd, "/testmt", true) == 0) { if(PlayerToPoint(10.0, playerid,Радиус свой)) if(PlayerInfo[giveplayerid][pTest] != 1) return SendClientMessage(playerid, -1, "?? ?? ???????? ???????? ?? RolePlay"); ShowPlayerDialog(playerid, 7324, DIALOG_STYLE_LIST, "54X78", "1)8732\n2)4212\n3)4216\n4)2153", "???????", "??????");//2324 ?????? ?? ???? return 1; } В public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  16. Donald_Record

    Система урона машины

    Всем привет, сегодня я вам покажу как сделать систему: Урона машины. Автор системы: Y.Jeen В начало мода, ко всем new добавляем: new zavodis[MAX_VEHICLES]; new engine,lights,alarm,doors,bonnet,boot,objective; Создаем public OnVehicleDamageStatusUpdate(vehicleid, playerid) и вставляем функцию: public OnVehicleDamageStatusUpdate(vehicleid, playerid) { { GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(vehicleid,false,lights,alarm,doors,bonnet,boot,objective); zavodis[GetPlayerVehicleID(playerid)] = 0; GameTextForPlayer(playerid, "~r~ENGINE OFF", 5000, 6); } return 1; } При столкновении машина вырубается
  17. #Bazuka

    Система Донат

    Параметры вставляйте свои. Го GO!!! Думаю расписывать нечего не нужно там всё понятно по диалогом Автор: by Artem_Bandit то есть я В public OnPlayerCommandText(playerid, cmdtext[]) if(strcmp(cmd, "/donate", true) == 0) { if(IsPlayerConnected(playerid)) { new co[40]; format(co,sizeof(co),"|Счёт| %d ДО",PlayerlogInfo[playerid][lRezerv]); ShowPlayerDialog(playerid,9000,DIALOG_STYLE_LIST,co,"Купить VIP[150]ДО\nКупить респект's[1]ДО\nКупить деньги[100]ДО\nПередать ДО\nКупить слот[70]ДО\nКупить level[45]ДО\nКупить военный билет[50]ДО\nСнять Warn's[20]ДО\nКупить медицинскую карту[20]ДО\nСнять розыск[15]ДО\nКупить Neon[100]ДО\n[ТС]Купить номер[100]\nКупить категорию B[60]ДО\nОБМЕН $ на ДО","Далее","Отмена"); } return 1; } Далее идет в диалоги,наш диалог 9000 вы можете заменить на свой В public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) //============================================================================== if(dialogid == 9000)//админ доступ { if(response) { if(listitem == 0) { new ice[256]; format(ice, sizeof ice, "Вы уверены что хотите купить VIP за {57ff00}150 ДО"); return ShowPlayerDialog(playerid, 9001, DIALOG_STYLE_MSGBOX, "Покупка VIP", ice, "Отмена", "Купить"); } if(listitem == 1) { ShowPlayerDialog(playerid,9002,DIALOG_STYLE_INPUT,"Платёжная система","{ff00ae}2 ДО = 2 респектам,{7fffd4} за респекты можно купить левле\nВведи колличество ДО которые хочешь потратить на респект's","Ок","Отмена"); } if(listitem == 2) { ShowPlayerDialog(playerid,9003,DIALOG_STYLE_INPUT,"Платёжная система","{ff00ae}100 ДО = $100000,{7fffd4}\nВведи колличество ДО которые хочешь потратить на игровые деньги","Ок","Отмена"); } if(listitem == 3) { ShowPlayerDialog(playerid,9004,DIALOG_STYLE_INPUT,"Платёжная система","Введите ID игрока,которому хочешь передать ДО","Ок","Отмена"); return 1; } if(listitem == 4) { new ice[256]; format(ice, sizeof ice, "Вы уверены,что хотите купить 1 слот для бизнеса? {57ff00}За 70 ДО"); return ShowPlayerDialog(playerid, 9007, DIALOG_STYLE_MSGBOX, "Покупка слотов бизнеса", ice, "НЕТ", "Купить"); } if(listitem == 5) { if(PlayerlogInfo[playerid][lRezerv] <= 44) return SendClientMessage(playerid, COLOR_LIGHTRED,"{57ff00}У вас недостаточно {FF0000}ДО");//Если у человека нехватает донат монет то выводим ему сообщение PlayerInfo[playerid][pLevel]++;//Даём +1 к уровню игрока PlayerlogInfo[playerid][lRezerv]-= 45; SendClientMessage(playerid, COLOR_LIGHTRED,"Спасибо за покупку,вам выдали + level"); } if(listitem == 6) { if(PlayerlogInfo[playerid][lRezerv] <= 49) return SendClientMessage(playerid, COLOR_LIGHTRED,"{57ff00}У вас недостаточно {FF0000}ДО");//Если у человека нехватает донат монет то выводим ему сообщение PlayerInfo[playerid][pArmBil] = 1;//Даём +1 к уровню игрока PlayerlogInfo[playerid][lRezerv]-= 50; SendClientMessage(playerid, COLOR_LIGHTRED,"Спасибо за покупку,вам выдали военный билет"); } if(listitem == 7) { if(PlayerlogInfo[playerid][lRezerv] <= 19) return SendClientMessage(playerid, COLOR_LIGHTRED,"{57ff00}У вас недостаточно {FF0000}ДО");//Если у человека нехватает донат монет то выводим ему сообщение PlayerInfo[playerid][pWarns] -= 1;//Даём +1 к уровню игрока PlayerlogInfo[playerid][lRezerv]-= 20; SendClientMessage(playerid, COLOR_LIGHTRED,"Спасибо за покупку,вам сняли один Warn"); } if(listitem == 8) { if(PlayerlogInfo[playerid][lRezerv] <= 19) return SendClientMessage(playerid, COLOR_LIGHTRED,"{57ff00}У вас недостаточно {FF0000}ДО");//Если у человека нехватает донат монет то выводим ему сообщение PlayerInfo[playerid][pMedCard] = 1;//Даём +1 к уровню игрока PlayerlogInfo[playerid][lRezerv]-= 20; SendClientMessage(playerid, COLOR_LIGHTRED,"Спасибо за покупку,вам выдали медицинскую карту"); } if(listitem == 9) { if(PlayerlogInfo[playerid][lRezerv] <= 19) return SendClientMessage(playerid, COLOR_LIGHTRED,"{57ff00}У вас недостаточно {FF0000}ДО");//Если у человека нехватает донат монет то выводим ему сообщение WantedPoints[playerid] = 0; WantedLevel[playerid] = 0; ClearCrime(playerid); PlayerInfo[playerid][pWantedLevel] = 0; SetPlayerWantedLevel(playerid, PlayerInfo[playerid][pWantedLevel]); PlayerlogInfo[playerid][lRezerv]-= 20; SendClientMessage(playerid, COLOR_LIGHTRED,"Спасибо за покупку,вам сняли все звезды"); } if(listitem == 10) { SendClientMessage(playerid, COLOR_ORANGERED, "GPS: Покупка {ff0000}Neon показан на карте,езжайте на место за покупкой Neon"); SetPlayerCheckpoint(playerid, 2152.4531,-1852.2424,18.8309,8); CP[playerid] = 0; } if(listitem == 11) { if(PlayerlogInfo[playerid][lRezerv] <= 99) return SendClientMessage(playerid, COLOR_LIGHTRED,"{57ff00}У вас недостаточно {FF0000}ДО"); OnPlayerCommandText(playerid, "/donatenomer"); PlayerlogInfo[playerid][lRezerv]-= 100; SendClientMessage(playerid, COLOR_LIGHTRED,"Спасибо за покупку,вам выдали номер"); } if(listitem == 12) { if(PlayerlogInfo[playerid][lRezerv] <= 59) return SendClientMessage(playerid, COLOR_LIGHTRED,"{57ff00}У вас недостаточно {FF0000}ДО"); PlayerInfo[playerid][pCarLic] = 1; PlayerlogInfo[playerid][lRezerv]-= 60; SendClientMessage(playerid, COLOR_LIGHTRED,"Спасибо за покупку,вам выдали {FF0000}Категорию B"); } if(listitem == 13) { if(PlayerInfo[playerid][pCash] <= 99999) return SendClientMessage(playerid, COLOR_LIGHTRED,"{57ff00}У вас недостаточно {FF0000}Денег"); PlayerlogInfo[playerid][lRezerv] = 5; PlayerInfo[playerid][pCash]-= 100000; SendClientMessage(playerid, COLOR_LIGHTRED,"Спасибо за покупку,вы обменяли игровую валюту на ДО"); } } return 1; } //============================================================================== if(dialogid == 9001) { if(!response){ if(PlayerlogInfo[playerid][lRezerv] >= 150) { if(PlayerInfo[playerid][pDonateRank] <= 4) { PlayerlogInfo[playerid][lRezerv]-= 150; new logid = PlayerInfo[playerid][pLogsistembyan]; Savelogplayer(logid,playerid); PlayerInfo[playerid][pDonateRank] = 5; SendClientMessage(playerid, COLOR_GREEN, "Спасибо за покупку!"); if(PlayerInfo[playerid][pVaip] >= 30) { new hour,minuite,second; gettime(hour,minuite,second); new year, month,day; getdate(year, month, day); new ipplayer[32]; GetPlayerIp(playerid,ipplayer,sizeof(ipplayer)); if(!strcmp(PlayerlogInfo[playerid][lDonatper],"none",false)) { format(PlayerlogInfo[playerid][lDonatper] ,512, "{ff0005}-150{75ff0e}ДО{cadaba}Число:{78c42d}%d{cadaba}Месяц:{78c42d}%d{cadaba}Год:{78c42d}%d{cadaba}Время(мск):{78c42d}%d{cadaba}:{78c42d}%d{cadaba}:{78c42d}%d{cadaba},IP({063103}%s{cadaba}){00ffc6}Покупка VIP",day,month,year,hour,minuite,second,ipplayer); Savelogplayer(logid,playerid); } else { format(PlayerlogInfo[playerid][lDonatper10] ,512, PlayerlogInfo[playerid][lDonatper9]); format(PlayerlogInfo[playerid][lDonatper9] ,512, PlayerlogInfo[playerid][lDonatper8]); format(PlayerlogInfo[playerid][lDonatper8] ,512, PlayerlogInfo[playerid][lDonatper7]); format(PlayerlogInfo[playerid][lDonatper7] ,512, PlayerlogInfo[playerid][lDonatper6]); format(PlayerlogInfo[playerid][lDonatper6] ,512, PlayerlogInfo[playerid][lDonatper5]); format(PlayerlogInfo[playerid][lDonatper5] ,512, PlayerlogInfo[playerid][lDonatper4]); format(PlayerlogInfo[playerid][lDonatper4] ,512, PlayerlogInfo[playerid][lDonatper3]); format(PlayerlogInfo[playerid][lDonatper3] ,512, PlayerlogInfo[playerid][lDonatper2]); format(PlayerlogInfo[playerid][lDonatper2] ,512, PlayerlogInfo[playerid][lDonatper]); format(PlayerlogInfo[playerid][lDonatper] ,512, "{ff0005}-150{75ff0e}ДО{cadaba}Число:{78c42d}%d{cadaba}Месяц:{78c42d}%d{cadaba}Год:{78c42d}%d{cadaba}Время(мск):{78c42d}%d{cadaba}:{78c42d}%d{cadaba}:{78c42d}%d{cadaba},IP({063103}%s{cadaba}){00ffc6}Покупка VIP.",day,month,year,hour,minuite,second,ipplayer); Savelogplayer(logid,playerid); } } }else{SendClientMessage(playerid, COLOR_RED, "У вас уже есть VIP!");} }else{SendClientMessage(playerid, COLOR_RED, "У вас не достаточно денег для покупки!");} } return true; } //============================================================================== if(dialogid == 9002){ if(response){ if(!strlen(inputtext))return ShowPlayerDialog(playerid,9002,DIALOG_STYLE_INPUT,"Платёжная система","{ff00ae}2 ДО = 2 респектам,{7fffd4} за респекты можно купить левле\nВВеди колличество ДО которые хочешь потратить на респект's","Ок","Отмена"); if(strlen(inputtext) == 0)return ShowPlayerDialog(playerid,9002,DIALOG_STYLE_INPUT,"Платёжная система","{ff00ae}2 ДО = 2 респектам,{7fffd4} за респекты можно купить левле\nВВеди колличество ДО которые хочешь потратить на респект's","Ок","Отмена"); respectforplayer[playerid] = strval(inputtext); new ice[256]; format(ice, sizeof ice, "Вы уверены что хотите купить %d респект's\nЗа %d ДО\nС вас будет списано %d ДО",respectforplayer[playerid]*2,respectforplayer[playerid],respectforplayer[playerid]); return ShowPlayerDialog(playerid, 9906, DIALOG_STYLE_MSGBOX, "Покупка респектов", ice, "НЕТ", "ДА"); } return true; } //============================================================================== if(dialogid == 9003){ if(response){ if(!strlen(inputtext))return ShowPlayerDialog(playerid,9003,DIALOG_STYLE_INPUT,"Платёжная система","{ff00ae}1 ДО = $100000,{7fffd4}\nВВеди колличество ДО которые хочешь потратить на игровые деньги","Ок","Отмена"); if(strlen(inputtext) == 0)return ShowPlayerDialog(playerid,9003,DIALOG_STYLE_INPUT,"Платёжная система","{ff00ae}1 ДО = $100000,{7fffd4}\nВВеди колличество ДО которые хочешь потратить на игровые деньги","Ок","Отмена"); respectforplayer[playerid] = strval(inputtext); new ice[256]; format(ice, sizeof ice, "Вы уверены что хотите купить $%d\nЗа %d ДО\nС вас будет списано %d ДО",respectforplayer[playerid]*100000,respectforplayer[playerid],respectforplayer[playerid]); return ShowPlayerDialog(playerid, 9912, DIALOG_STYLE_MSGBOX, "Покупка денег", ice, "НЕТ", "ДА"); } return true; } //============================================================================== if(dialogid == 9004){ if(response){ if(!strlen(inputtext)) return ShowPlayerDialog(playerid,9004,DIALOG_STYLE_INPUT,"Платёжная система","ВВеди ид игрока которому хочешь передать ДО","Ок","Отмена"); ShowPlayerDialog(playerid,9005,DIALOG_STYLE_INPUT,"Платёжная система","ВВеди количество ДО которые хочешь передать","Ок","Отмена"); playeridooooo[playerid] = strval(inputtext); } return true; } //============================================================================== if(dialogid == 9005){ if(response){ if(!strlen(inputtext)) return ShowPlayerDialog(playerid,9005,DIALOG_STYLE_INPUT,"Платёжная система","ВВеди количество ДО которые хочешь передать","Ок","Отмена"); new ice[256]; moneyplayeridooooo[playerid] = strval(inputtext); format(ice, sizeof ice, "Вы уверены что хотите перевести [%d] ДО, на [%d]",strval(inputtext),playeridooooo[playerid]); return ShowPlayerDialog(playerid, 9006, DIALOG_STYLE_MSGBOX, "Перевод ДО", ice, "НЕТ", "ДА"); } return true; } if(dialogid == 9006) { if(!response) { if(moneyplayeridooooo[playerid] >= 1) { if(PlayerlogInfo[playerid][lRezerv] >= moneyplayeridooooo[playerid]) { new getplayerid = playeridooooo[playerid]; if(zagruzka[getplayerid] == 0){OnPlayerCommandText(playerid,"/перезагрузка");return 1;} if(PlayerInfo[playerid][pVaip] >= 30) { new sendernamer[MAX_PLAYER_NAME]; new giveplayer[MAX_PLAYER_NAME]; GetPlayerName(getplayerid, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendernamer, sizeof(sendernamer)); if(playeridooooo[playerid] == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_GREY, "Игрок не найден!"); { new hour,minuite,second; gettime(hour,minuite,second); new year, month,day; getdate(year, month, day); new ipplayer[32]; GetPlayerIp(playerid,ipplayer,sizeof(ipplayer)); if(!strcmp(PlayerlogInfo[playerid][lDonatper],"none",false)) { format(PlayerlogInfo[playerid][lDonatper] ,512, "{ff0005}-%d{75ff0e}ДО{cadaba}Число:{78c42d}%d{cadaba}Месяц:{78c42d}%d{cadaba}Год:{78c42d}%d{cadaba}Время(мск):{78c42d}%d{cadaba}:{78c42d}%d{cadaba}:{78c42d}%d{cadaba},IP({063103}%s{cadaba}){00ffc6}Перевод денег.На: %s",moneyplayeridooooo[playerid],day,month,year,hour,minuite,second,ipplayer,giveplayer); } else { format(PlayerlogInfo[playerid][lDonatper10] ,512, PlayerlogInfo[playerid][lDonatper9]); format(PlayerlogInfo[playerid][lDonatper9] ,512, PlayerlogInfo[playerid][lDonatper8]); format(PlayerlogInfo[playerid][lDonatper8] ,512, PlayerlogInfo[playerid][lDonatper7]); format(PlayerlogInfo[playerid][lDonatper7] ,512, PlayerlogInfo[playerid][lDonatper6]); format(PlayerlogInfo[playerid][lDonatper6] ,512, PlayerlogInfo[playerid][lDonatper5]); format(PlayerlogInfo[playerid][lDonatper5] ,512, PlayerlogInfo[playerid][lDonatper4]); format(PlayerlogInfo[playerid][lDonatper4] ,512, PlayerlogInfo[playerid][lDonatper3]); format(PlayerlogInfo[playerid][lDonatper3] ,512, PlayerlogInfo[playerid][lDonatper2]); format(PlayerlogInfo[playerid][lDonatper2] ,512, PlayerlogInfo[playerid][lDonatper]); format(PlayerlogInfo[playerid][lDonatper] ,512, "{ff0005}-%d{75ff0e}ДО{cadaba}Число:{78c42d}%d{cadaba}Месяц:{78c42d}%d{cadaba}Год:{78c42d}%d{cadaba}Время(мск):{78c42d}%d{cadaba}:{78c42d}%d{cadaba}:{78c42d}%d{cadaba},IP({063103}%s{cadaba}){00ffc6}Перевод денег.На: %s",moneyplayeridooooo[playerid],day,month,year,hour,minuite,second,ipplayer,giveplayer); } if(PlayerInfo[getplayerid][pVaip] >= 30) { new ipplayers[32]; GetPlayerIp(getplayerid,ipplayers,sizeof(ipplayers)); if(!strcmp(PlayerlogInfo[getplayerid][lDonatper],"none",false)) { format(PlayerlogInfo[getplayerid][lDonatper] ,512, "{00ff00}+%d{75ff0e}ДО{cadaba}Число:{78c42d}%d{cadaba}Месяц:{78c42d}%d{cadaba}Год:{78c42d}%d{cadaba}Время(мск):{78c42d}%d{cadaba}:{78c42d}%d{cadaba}:{78c42d}%d{cadaba},IP({063103}%s{cadaba}){00ffc6}Перевод денег.От: %s",moneyplayeridooooo[playerid],day,month,year,hour,minuite,second,ipplayer,sendernamer); } else { format(PlayerlogInfo[getplayerid][lDonatper10] ,512, PlayerlogInfo[getplayerid][lDonatper9]); format(PlayerlogInfo[getplayerid][lDonatper9] ,512, PlayerlogInfo[getplayerid][lDonatper8]); format(PlayerlogInfo[getplayerid][lDonatper8] ,512, PlayerlogInfo[getplayerid][lDonatper7]); format(PlayerlogInfo[getplayerid][lDonatper7] ,512, PlayerlogInfo[getplayerid][lDonatper6]); format(PlayerlogInfo[getplayerid][lDonatper6] ,512, PlayerlogInfo[getplayerid][lDonatper5]); format(PlayerlogInfo[getplayerid][lDonatper5] ,512, PlayerlogInfo[getplayerid][lDonatper4]); format(PlayerlogInfo[getplayerid][lDonatper4] ,512, PlayerlogInfo[getplayerid][lDonatper3]); format(PlayerlogInfo[getplayerid][lDonatper3] ,512, PlayerlogInfo[getplayerid][lDonatper2]); format(PlayerlogInfo[getplayerid][lDonatper2] ,512, PlayerlogInfo[getplayerid][lDonatper]); format(PlayerlogInfo[getplayerid][lDonatper] ,512, "{00ff00}+%d{75ff0e}ДО{cadaba}Число:{78c42d}%d{cadaba}Месяц:{78c42d}%d{cadaba}Год:{78c42d}%d{cadaba}Время(мск):{78c42d}%d{cadaba}:{78c42d}%d{cadaba}:{78c42d}%d{cadaba},IP({063103}%s{cadaba}){00ffc6}Перевод денег.От: %s",moneyplayeridooooo[playerid],day,month,year,hour,minuite,second,ipplayer,sendernamer); } PlayerlogInfo[playerid][lRezerv]-= moneyplayeridooooo[playerid]; PlayerlogInfo[getplayerid][lRezerv]+= moneyplayeridooooo[playerid]; new tuce[256]; format(tuce, sizeof(tuce), "На ваш счёт было зачислино:%d ДО!",moneyplayeridooooo[playerid]); SendClientMessage(getplayerid, COLOR_BLUE, tuce); format(tuce, sizeof(tuce), "С вашего счёта было списано:%d ДО!",moneyplayeridooooo[playerid]); SendClientMessage(playerid, COLOR_BLUE, tuce); new logid2 = PlayerInfo[getplayerid][pLogsistembyan]; Savelogplayer(logid2,getplayerid); new logid = PlayerInfo[playerid][pLogsistembyan]; Savelogplayer(logid,playerid); return true; } } } SendClientMessage(playerid, COLOR_RED, "Ошибка! Данные аккаунта не найдены, и/или ида такого нету!"); return true; }else{SendClientMessage(playerid, COLOR_RED, "У вас нет такой суммы ДО!");} }else{SendClientMessage(playerid, COLOR_RED, "0 нельзя!");} } return true; } //============================================================================== if(dialogid == 9007){ if(!response){ if(PlayerlogInfo[playerid][lRezerv] >= 70) { if(PlayerInfo[playerid][pSlots] <= 8) { PlayerlogInfo[playerid][lRezerv]-= 70; new logid = PlayerInfo[playerid][pLogsistembyan]; Savelogplayer(logid,playerid); PlayerInfo[playerid][pSlots]++; SendClientMessage(playerid, COLOR_GREEN, "Спасибо за покупку!"); if(PlayerInfo[playerid][pVaip] >= 30) { new hour,minuite,second; gettime(hour,minuite,second); new year, month,day; getdate(year, month, day); new ipplayer[32]; GetPlayerIp(playerid,ipplayer,sizeof(ipplayer)); if(!strcmp(PlayerlogInfo[playerid][lDonatper],"none",false)) { format(PlayerlogInfo[playerid][lDonatper] ,512, "{ff0005}-30{75ff0e}ДО{cadaba}Число:{78c42d}%d{cadaba}Месяц:{78c42d}%d{cadaba}Год:{78c42d}%d{cadaba}Время(мск):{78c42d}%d{cadaba}:{78c42d}%d{cadaba}:{78c42d}%d{cadaba},IP({063103}%s{cadaba}){00ffc6}Покупка слота для бизнеса",day,month,year,hour,minuite,second,ipplayer); Savelogplayer(logid,playerid); } else { format(PlayerlogInfo[playerid][lDonatper10] ,512, PlayerlogInfo[playerid][lDonatper9]); format(PlayerlogInfo[playerid][lDonatper9] ,512, PlayerlogInfo[playerid][lDonatper8]); format(PlayerlogInfo[playerid][lDonatper8] ,512, PlayerlogInfo[playerid][lDonatper7]); format(PlayerlogInfo[playerid][lDonatper7] ,512, PlayerlogInfo[playerid][lDonatper6]); format(PlayerlogInfo[playerid][lDonatper6] ,512, PlayerlogInfo[playerid][lDonatper5]); format(PlayerlogInfo[playerid][lDonatper5] ,512, PlayerlogInfo[playerid][lDonatper4]); format(PlayerlogInfo[playerid][lDonatper4] ,512, PlayerlogInfo[playerid][lDonatper3]); format(PlayerlogInfo[playerid][lDonatper3] ,512, PlayerlogInfo[playerid][lDonatper2]); format(PlayerlogInfo[playerid][lDonatper2] ,512, PlayerlogInfo[playerid][lDonatper]); format(PlayerlogInfo[playerid][lDonatper] ,512, "{ff0005}-30{75ff0e}ДО{cadaba}Число:{78c42d}%d{cadaba}Месяц:{78c42d}%d{cadaba}Год:{78c42d}%d{cadaba}Время(мск):{78c42d}%d{cadaba}:{78c42d}%d{cadaba}:{78c42d}%d{cadaba},IP({063103}%s{cadaba}){00ffc6}Покупка слота для бизнеса",day,month,year,hour,minuite,second,ipplayer); Savelogplayer(logid,playerid); } } }else{SendClientMessage(playerid, COLOR_RED, "У вас уже 10 слотов, больше нельзя!");} }else{SendClientMessage(playerid, COLOR_RED, "У вас не достаточно денег для покупки!");} } return true; } if(dialogid == 9906){ if(!response){ if(respectforplayer[playerid] >= 2) { if(PlayerlogInfo[playerid][lRezerv] >= respectforplayer[playerid]) { new str[64]; PlayerInfo[playerid][pExp] += respectforplayer[playerid]*2; PlayerlogInfo[playerid][lRezerv] -= respectforplayer[playerid]; format(str, sizeof(str), "С вас было списано: [%d] ДО", respectforplayer[playerid]); SendClientMessage(playerid, COLOR_GREEN, str); if(PlayerInfo[playerid][pVaip] >= 30) { new hour,minuite,second; gettime(hour,minuite,second); new year, month,day; getdate(year, month, day); new ipplayer[32]; GetPlayerIp(playerid,ipplayer,sizeof(ipplayer)); if(!strcmp(PlayerlogInfo[playerid][lDonatper],"none",false)) { format(PlayerlogInfo[playerid][lDonatper] ,512, "{ff0005}-[%d]{75ff0e}ДО{cadaba}Число:{78c42d}%d{cadaba}Месяц:{78c42d}%d{cadaba}Год:{78c42d}%d{cadaba}Время(мск):{78c42d}%d{cadaba}:{78c42d}%d{cadaba}:{78c42d}%d{cadaba},IP({063103}%s{cadaba}){00ffc6}Покупка респектов.",respectforplayer[playerid],day,month,year,hour,minuite,second,ipplayer); new logid = PlayerInfo[playerid][pLogsistembyan]; Savelogplayer(logid,playerid); } else { format(PlayerlogInfo[playerid][lDonatper10] ,512, PlayerlogInfo[playerid][lDonatper9]); format(PlayerlogInfo[playerid][lDonatper9] ,512, PlayerlogInfo[playerid][lDonatper8]); format(PlayerlogInfo[playerid][lDonatper8] ,512, PlayerlogInfo[playerid][lDonatper7]); format(PlayerlogInfo[playerid][lDonatper7] ,512, PlayerlogInfo[playerid][lDonatper6]); format(PlayerlogInfo[playerid][lDonatper6] ,512, PlayerlogInfo[playerid][lDonatper5]); format(PlayerlogInfo[playerid][lDonatper5] ,512, PlayerlogInfo[playerid][lDonatper4]); format(PlayerlogInfo[playerid][lDonatper4] ,512, PlayerlogInfo[playerid][lDonatper3]); format(PlayerlogInfo[playerid][lDonatper3] ,512, PlayerlogInfo[playerid][lDonatper2]); format(PlayerlogInfo[playerid][lDonatper2] ,512, PlayerlogInfo[playerid][lDonatper]); format(PlayerlogInfo[playerid][lDonatper] ,512, "{ff0005}-%d{75ff0e}ДО{cadaba}Число:{78c42d}%d{cadaba}Месяц:{78c42d}%d{cadaba}Год:{78c42d}%d{cadaba}Время(мск):{78c42d}%d{cadaba}:{78c42d}%d{cadaba}:{78c42d}%d{cadaba},IP({063103}%s{cadaba}){00ffc6}Покупка респектов.",respectforplayer[playerid],day,month,year,hour,minuite,second,ipplayer); new logid = PlayerInfo[playerid][pLogsistembyan]; Savelogplayer(logid,playerid); } } return true; }else{SendClientMessage(playerid, COLOR_RED, "У вас не достаточно денег для покупки!");} }else{SendClientMessage(playerid, COLOR_RED, "0 нельзя!");} } return true; } if(dialogid == 9912){ if(!response){ if(respectforplayer[playerid] >= 100) { if(PlayerlogInfo[playerid][lRezerv] >= respectforplayer[playerid]) { new str[64]; PlayerlogInfo[playerid][lRezerv] -= respectforplayer[playerid]; GiveMoney(playerid, respectforplayer[playerid]*100000); format(str, sizeof(str), "С вас было списано: [%d] ДО", respectforplayer[playerid]); SendClientMessage(playerid, COLOR_GREEN, str); if(PlayerInfo[playerid][pVaip] >= 30) { new hour,minuite,second; gettime(hour,minuite,second); new year, month,day; getdate(year, month, day); new ipplayer[32]; GetPlayerIp(playerid,ipplayer,sizeof(ipplayer)); if(!strcmp(PlayerlogInfo[playerid][lDonatper],"none",false)) { format(PlayerlogInfo[playerid][lDonatper] ,512, "{ff0005}-[%d]{75ff0e}ДО{cadaba}Число:{78c42d}%d{cadaba}Месяц:{78c42d}%d{cadaba}Год:{78c42d}%d{cadaba}Время(мск):{78c42d}%d{cadaba}:{78c42d}%d{cadaba}:{78c42d}%d{cadaba},IP({063103}%s{cadaba}){00ffc6}Покупка игровых денег.",respectforplayer[playerid],day,month,year,hour,minuite,second,ipplayer); new logid = PlayerInfo[playerid][pLogsistembyan]; Savelogplayer(logid,playerid); } else { format(PlayerlogInfo[playerid][lDonatper10] ,512, PlayerlogInfo[playerid][lDonatper9]); format(PlayerlogInfo[playerid][lDonatper9] ,512, PlayerlogInfo[playerid][lDonatper8]); format(PlayerlogInfo[playerid][lDonatper8] ,512, PlayerlogInfo[playerid][lDonatper7]); format(PlayerlogInfo[playerid][lDonatper7] ,512, PlayerlogInfo[playerid][lDonatper6]); format(PlayerlogInfo[playerid][lDonatper6] ,512, PlayerlogInfo[playerid][lDonatper5]); format(PlayerlogInfo[playerid][lDonatper5] ,512, PlayerlogInfo[playerid][lDonatper4]); format(PlayerlogInfo[playerid][lDonatper4] ,512, PlayerlogInfo[playerid][lDonatper3]); format(PlayerlogInfo[playerid][lDonatper3] ,512, PlayerlogInfo[playerid][lDonatper2]); format(PlayerlogInfo[playerid][lDonatper2] ,512, PlayerlogInfo[playerid][lDonatper]); format(PlayerlogInfo[playerid][lDonatper] ,512, "{ff0005}-[%d]{75ff0e}ДО{cadaba}Число:{78c42d}%d{cadaba}Месяц:{78c42d}%d{cadaba}Год:{78c42d}%d{cadaba}Время(мск):{78c42d}%d{cadaba}:{78c42d}%d{cadaba}:{78c42d}%d{cadaba},IP({063103}%s{cadaba}){00ffc6}Покупка игровых денег.",respectforplayer[playerid],day,month,year,hour,minuite,second,ipplayer); new logid = PlayerInfo[playerid][pLogsistembyan]; Savelogplayer(logid,playerid); } } return true; }else{SendClientMessage(playerid, COLOR_RED, "У вас не достаточно денег для покупки!");} }else{SendClientMessage(playerid, COLOR_RED, "0 нельзя!");} } return true; }
  18. artem.sholohoff

    GPS

    Ко всем new new CP[MAX_PLAYERS]; В public OnPlayerConnect(playerid) CP[playerid] = 0; Ко всем #define, места вы можете добавить по своему, я указал диалог только для одного места! #define GPS_NAMES "[1] Важные места\n[2] Отключить GPS" Потом сама команда if(strcmp(cmd, "/gps", true) == 0) { if(IsPlayerConnected(playerid)) { ShowPlayerDialog(playerid, 10000, DIALOG_STYLE_LIST, "- GPS -", GPS_NAMES, "Выбрать", "Отмена"); return 1; } } ко всем диалогам if(dialogid == 10000) { if(response) { switch (listitem) { case 0: ShowPlayerDialog (playerid, 10001, DIALOG_STYLE_LIST, " Важные места", "[1] Автошкола\n", "Выбрать", "<< Назад"); case 1: { DisablePlayerCheckpoint(playerid); CP[playerid] = 0; SendClientMessage(playerid, COLOR_WHITE, "::: GPS навигатор отключен! ::: "); } } } else { return 1; } } else if(dialogid == 10001) { if(response) { switch (listitem) { case 0: DynamicGPSMarker(playerid, -2041.6616,-66.7263,35.1752); } } else ShowPlayerDialog(playerid, 10000, DIALOG_STYLE_LIST, "- GPS -", GPS_NAMES, "Выбрать", "Отмена"); return 1; } в конец мода stock DynamicGPSMarker(playerid, Float:x, Float:y, Float:z, Float:size = 5.0) { SendClientMessage(playerid,COLOR_LIGHTBLUE,"GPS активирован, ваша цель отмечена на карте маркером"); SetPlayerCheckpoint(playerid, x,y,z,size); CP[playerid] = 10; return true; } Открываем GPS Выбираем место Ваша точка указана на карте Отключаем GPS Автор системы Scooter
  19. Суть заключается в том что игроку присылается сообщение,вы приглашены во фракцию,и игрок может отказаться или принять приглашение Ко всем new добавим: new pInvite[MAX_PLAYERS]; в public OnPlayerConnect(playerid) добавим: pInvite[playerid] = 999; Заменяем свою команду /invite на эту: if(strcmp(cmd, "/invite", true) == 0) { if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "ИСПОЛЬЗОВАНИЕ: /invite [id_игрока/ЧастьИмени]"); new para1; new ftext[20]; para1 = ReturnUser(tmp); if (PlayerInfo[playerid][pLeader] == 0) return SendClientMessage(playerid, COLOR_GRAD1, "Вы не лидер !"); if(IsPlayerConnected(para1)) { if(para1 != INVALID_PLAYER_ID) { if (PlayerInfo[para1][pMember] != 0) return SendClientMessage(playerid, COLOR_GREY, "Этот игрок состоит во фракции!"); if(PlayerInfo[playerid][pLeader] == 1) { ftext = "Ваше название фракции"; } else if(PlayerInfo[playerid][pLeader] == 2) { ftext = "Ваше название фракции и т.д."; } GetPlayerName(para1, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string), "[Администрация]: Вы были приглашены в %s, Лидером %s", ftext, sendername); SendClientMessage(para1, COLOR_WHITE, string); SendClientMessage(para1, COLOR_WHITE, "Введите /accept team чтобы принять приглашение"); SendClientMessage(para1, COLOR_WHITE, "Введите /cancel team чтобы отвергнуть приглашение"); format(string, sizeof(string), "Вы пригласили игрока %s в %s.", giveplayer,ftext); SendClientMessage(playerid, COLOR_WHITE, string); pInvite[para1] = playerid; } } } return 1; } Внимание если у вас не стандартная команда то добавьте pInvite[para1] = playerid; Код который отправляет на респавн убрать а также убрать смену скина,если у вас больше фракций чем в стандартном ГФ(да полюбому больше) то добавляем в команду /invite так else if(PlayerInfo[playerid][pLeader] == ID фраки) { ftext = "Название"; } в команду /accept добавить else if(strcmp(x_job,"team",true) == 0) { if(pInvite[playerid] < 999) { if(IsPlayerConnected(pInvite[playerid])) { if (gTeam[playerid]==TEAM_GREEN && PlayerInfo[playerid][pMember] == 0 && PlayerInfo[playerid][pFMember] == 255) { if(PlayerInfo[pInvite[playerid]][pLeader] == 1) { PlayerInfo[playerid][pTeam] = 2; gTeam[playerid] = 2; ChosenSkin[playerid] = 280; SetPlayerSkin(playerid, 280); } else if(PlayerInfo[pInvite[playerid]][pLeader] == 2) { PlayerInfo[playerid][pTeam] = 2; gTeam[playerid] = 2; ChosenSkin[playerid] = 286; SetPlayerSkin(playerid, 286); } PlayerInfo[playerid][pMember] = PlayerInfo[pInvite[playerid]][pLeader]; PlayerInfo[playerid][pRank] = 1; SetPlayerInterior(playerid,0); new rand = random(sizeof(gInviteSpawns)); SetPlayerPos(playerid, gInviteSpawns[rand][0], gInviteSpawns[rand][1], gInviteSpawns[rand][2]); // Warp the player SetPlayerFacingAngle(playerid, gInviteSpawns[rand][3]); SetPlayerCameraPos(playerid,gInviteSpawns[rand][0] + 3, gInviteSpawns[rand][1], gInviteSpawns[rand][2]); SetPlayerCameraLookAt(playerid,gInviteSpawns[rand][0], gInviteSpawns[rand][1], gInviteSpawns[rand][2]); TogglePlayerControllable(playerid, 0); SelectChar[playerid] = 255; SelectCharID[playerid] = PlayerInfo[playerid][pMember]; SelectCharPlace[playerid] = 1; PlayerInfo[playerid][pModel] = ChosenSkin[playerid]; PlayerInfo[playerid][pChar] = ChosenSkin[playerid]; new str[64]; GetPlayerName(pInvite[playerid], sendername, sizeof(sendername)); format(str,sizeof(str),"* %s принял ваше приглашение!",sendername); SendClientMessage(pInvite[playerid], COLOR_WHITE, str); SendClientMessage(playerid, COLOR_LIGHTRED, "Используйте next для выбора скина."); SendClientMessage(playerid, COLOR_LIGHTRED, "Если вы нашли скин, который хотите использовать введите done."); pInvite[playerid] = 999; return 1; } else { SendClientMessage(playerid, COLOR_GREY, "Вы состоите во фракции"); return 1; } } return 1; } else { SendClientMessage(playerid, COLOR_GREY, "Никто вас не приглашал вступить в Фракцию/Банду/Мафию"); return 1; } } в команду /cancel добавить: else if(strcmp(x_job,"team",true) == 0) { pInvite[playerid] = 999; new str[64]; GetPlayerName(pInvite[playerid], sendername, sizeof(sendername)); format(str,sizeof(str),"* %s не принял ваше приглашение!",sendername); SendClientMessage(pInvite[playerid], COLOR_WHITE, str); } Автор: Сергей68
  20. Доброго времени суток господа! Сейчас будем делать систему, которая показывает в паспорте прописку человека (можете подогнать под себя, например в статистику и т.д.). В начало мода добавляем: forward GetZonaName ( Float: x, Float: y ); forward GetCityName ( Float: x, Float: y ); enum SAZONE_MAIN { SAZONE_NAME[128], Float:SAZONE_AREA[6] }; new gSAZonesCity[][SAZONE_MAIN] = { {"Los Santos", {44.60, -2892.90, -242.90, 2997.00, -768.00, 900.00}}, {"Whetstone", {-2997.40, -2892.90, -242.90, -1213.90, -1115.50, 900.00}} }; new gSAZones[][SAZONE_MAIN] = { // название ( Xmin, Ymin, Zmin, Xmax, Ymax, Zmax) {"The Big Ear", {-410.00, 1403.30, -3.00, -137.90, 1681.20, 200.00}}, {"Yellow Bell Station", {1377.40, 2600.40, -21.90, 1492.40, 2687.30, 78.00}} }; Далее добавим паблики: // районы public GetZonaName ( Float: x, Float: y ) { for ( new i = 0; i != sizeof ( gSAZones ); i++ ) { if ( x >= gSAZones[i][SAZONE_AREA][0] && x <= gSAZones[i][SAZONE_AREA][3] && y >= gSAZones[i][SAZONE_AREA][1] && y <= gSAZones[i][SAZONE_AREA][4]) { return i; } } return 1; } // города public GetCityName ( Float: x, Float: y) { for ( new i = 0; i != sizeof ( gSAZonesCity ); i++ ) { if ( x >= gSAZonesCity[i][SAZONE_AREA][0] && x <= gSAZonesCity[i][SAZONE_AREA][3] && y >= gSAZonesCity[i][SAZONE_AREA][1] && y <= gSAZonesCity[i][SAZONE_AREA][4] ) { return i; } } return 1; } Теперь добавляем в /showpass: if ( PlayerInfo[playerid][pPhousekey] != 999) { new Float: x, Float: y; new h = PlayerInfo[playerid][pPhousekey]; // Заменяем на свой HouseInfo при необходимости ( есть ли дом у игрока ) x = HouseInfo[h][hEntrancex]; // Заменяем на свой HouseInfo при необходимости ( координаты входа в дом по оси X ) y = HouseInfo[h][hEntrancey]; // Заменяем на свой HouseInfo при необходимости ( координаты входа в дом по оси Y ) new ids = GetCityName ( x, y ); new id = GetZonaName ( x, y ); format ( string, sizeof ( string), "Место прописки: г. %s, р-он %s, д. %d", gSAZonesCity[ids][SAZONE_NAME], gSAZones[id][SAZONE_NAME], PlayerInfo[playerid][pPhousekey] ); // Добавляем свое вместо PlayerInfo[playerid][pPhousekey] SendClientMessage ( giveplayerid, COLOR_YELLOW2, string ); } Автор: lonin P.S: координаты менять на свои!!!
  21. Здравствуйте форумчане выкладываю мануал который может быть полезен для каждого проекта Для начала создадим define и enum #define GARAGE_X 2315.6699//координаты появления в гаражей по оси X#define GARAGE_Y -198.7284//координаты появления в гаражей по оси Y #define GARAGE_Z 2.0088//координаты появления в гаражей по оси Z #define GARAGE_A 180.0000//координаты появления в гаражей по оси A #define GARAGE_INT 15//интерьер в гараже,можете не менять enum gInfo { gOwner[32],//владелец gPrice,//цена gLock,//открыть или закрыт Float:gX,//координаты пикапа по оси X Float:gY,//координаты пикапа по оси Y Float:gZ,//координаты пикапа по оси Z Float:gA//координаты пикапа по оси A }; new Garage[200][gInfo];//200 максимальное кол-во гаражей new AllGarage;//всего гаражей new Text3D:Text3DCar[200];//3д текст над гаражами далее в конце мода создадим 2 стока(загрузки и сохранение гаражей) stock LoadGarage(){ new ids[32],str[64]; new iniOpens = ini_openFile("garage/garage.cfg"); ini_getInteger(iniOpens, "AllGarage", AllGarage); ini_closeFile(iniOpens); if(AllGarage != 0) { for(new garage = 1; garage <= AllGarage; garage++) { format(ids,sizeof(ids),"garage/%d.ini",garage); new inigOpen = ini_openFile(ids); ini_getFloat(inigOpen, "gX", Garage[garage][gX]); ini_getFloat(inigOpen, "gY", Garage[garage][gY]); ini_getFloat(inigOpen, "gZ", Garage[garage][gZ]); ini_getFloat(inigOpen, "gA", Garage[garage][gA]); ini_getString(inigOpen, "gOwner", str); format(Garage[garage][gOwner],24,"%s",str); ini_getInteger(inigOpen, "gPrice", Garage[garage][gPrice]); ini_getInteger(inigOpen, "gLock", Garage[garage][gLock]); ini_closeFile(inigOpen); if(!strcmp("None", Garage[garage][gOwner], true)) { format(str,sizeof(str),"Гараж номер %d]\nПродаётся цена %d]",garage,Garage[garage][gPrice]); CreatePickup(1274, 1, Garage[garage][gX], Garage[garage][gY], Garage[garage][gZ]); } else { format(str,sizeof(str),"Гараж номер %d]\nВладелец %s]",garage,Garage[garage][gOwner]); CreatePickup(1239, 1, Garage[garage][gX], Garage[garage][gY], Garage[garage][gZ]); } Text3DCar[garage] = CreateDynamic3DTextLabel(str, 0xCE9A00FF, Garage[garage][gX], Garage[garage][gY], Garage[garage][gZ],15.0); } } return 1; } stock SaveGarage(garage) { new ids[32]; format(ids,sizeof(ids),"garage/%d.ini",garage); new iniggOpen; iniggOpen = ini_openFile(ids); if(iniggOpen == -1 || iniggOpen == -2) iniggOpen = ini_createFile(ids); ini_setFloat(iniggOpen, "gZ", Garage[garage][gZ]); ini_setFloat(iniggOpen, "gX", Garage[garage][gX]); ini_setFloat(iniggOpen, "gY", Garage[garage][gY]); ini_setFloat(iniggOpen, "gA", Garage[garage][gA]); ini_setString(iniggOpen, "gOwner", Garage[garage][gOwner]); ini_setInteger(iniggOpen, "gPrice", Garage[garage][gPrice]); ini_setInteger(iniggOpen, "gLock", Garage[garage][gLock]); ini_closeFile(iniggOpen); return 1; } теперь в public OnGameModeInit() LoadGarage();//загрузка гаражей ну и осталось только команды,в public OnPlayerCommandText(playerid, cmdtext[]) if(strcmp(cmd,"/ga",true)==0){ new temp[256]; temp = strcharsplit(cmdtext, idx); if(!strlen(temp)) return SendClientMessage(playerid,COLOR_WHITE," Используйте: /ga [buy(купить) sell(продать) lock(закрыть) enter(войти) exit(выйти)"); if(strcmp(temp,"buy",true)==0) { for(new gar = 1; gar <= AllGarage;gar++) { if(IsPlayerInRangeOfPoint(playerid, 2.5,Garage[gar][gX],Garage[gar][gY],Garage[gar][gZ])) { if(!strcmp("None", Garage[gar][gOwner], true)) { if(GetPlayerMoney(playerid) > Garage[gar][gPrice]) { strmid(Garage[gar][gOwner], GN(playerid), 0, strlen(GN(playerid)), 255); GivePlayerMoney(playerid,-Garage[gar][gPrice]); format(temp,sizeof(temp),"Гараж номер:[%d]\nВладелец:[%s]",gar,Garage[gar][gOwner]); UpdateDynamic3DTextLabelText(Text3DCar[gar], 0xCE9A00FF, temp); SaveGarage(gar); return SendClientMessage(playerid,COLOR_WHITE," Вы успешно купили гараж"); } else return SendClientMessage(playerid,COLOR_WHITE," У вас нету денег на покупку"); } else return SendClientMessage(playerid,COLOR_WHITE," Гараж уже кем то куплен"); } } } else if(strcmp(temp,"sell",true)==0) { for(new gar = 1; gar <= AllGarage;gar++) { if(IsPlayerInRangeOfPoint(playerid, 2.5,Garage[gar][gX],Garage[gar][gY],Garage[gar][gZ])) { if(!strcmp(GN(playerid), Garage[gar][gOwner], true)) { strmid(Garage[gar][gOwner], "None", 0, strlen("None"), 255); GivePlayerMoney(playerid,Garage[gar][gPrice]/2); Garage[gar][gLock] = 1; SaveGarage(gar); format(temp,sizeof(temp),"Гараж номер:[%d]\nПродаеться Цена:[%d$]",gar,Garage[gar][gPrice]); UpdateDynamic3DTextLabelText(Text3DCar[gar], 0xCE9A00FF, temp); return SendClientMessage(playerid,COLOR_WHITE," Вы успешно продали свой гараж"); } else return SendClientMessage(playerid,COLOR_WHITE," Гараж не принадледит вам"); } } } else if(strcmp(temp,"lock",true)==0) { for(new gar = 1; gar <= AllGarage;gar++) { if(IsPlayerInRangeOfPoint(playerid, 2.5,Garage[gar][gX],Garage[gar][gY],Garage[gar][gZ]) || (IsPlayerInRangeOfPoint(playerid, 20.0,GARAGE_X,GARAGE_Y,GARAGE_Z) && gar == GetPlayerVirtualWorld(playerid))) { if(!strcmp(GN(playerid), Garage[gar][gOwner], true)) { if(Garage[gar][gLock] == 1) { Garage[gar][gLock] = 0; SaveGarage(gar); return SendClientMessage(playerid,COLOR_WHITE," Гараж открыт"); } else { Garage[gar][gLock] = 1; SaveGarage(gar); return SendClientMessage(playerid,COLOR_WHITE," Гараж закрыт"); } } else return SendClientMessage(playerid,COLOR_WHITE," Гараж не принадлежит вам"); } } } else if(strcmp(temp,"enter",true)==0) { for(new gar = 1; gar <= AllGarage;gar++) { if(IsPlayerInRangeOfPoint(playerid, 2.5,Garage[gar][gX],Garage[gar][gY],Garage[gar][gZ])) { if(Garage[gar][gLock] == 1) return SendClientMessage(playerid,COLOR_WHITE," Гараж закрыт"); if(IsPlayerInAnyVehicle(playerid)) { new carid = GetPlayerVehicleID(playerid); SetVehiclePos(carid, GARAGE_X,GARAGE_Y,GARAGE_Z+1.0); SetPlayerPos(playerid,GARAGE_X,GARAGE_Y,GARAGE_Z+1.0); LinkVehicleToInterior(carid, GARAGE_INT); SetVehicleVirtualWorld(carid, gar); SetVehicleZAngle(carid, GARAGE_A); SetPlayerInterior(playerid,GARAGE_INT); SetPlayerVirtualWorld(playerid,gar); PutPlayerInVehicle(playerid,carid,0); } else { SetPlayerPos(playerid,GARAGE_X,GARAGE_Y,GARAGE_Z+1.0); SetPlayerInterior(playerid,GARAGE_INT); SetPlayerVirtualWorld(playerid,gar); } break; } } } else if(strcmp(temp,"exit",true)==0) { if(GetPlayerVirtualWorld(playerid) == 0) return SendClientMessage(playerid,COLOR_WHITE," Вы не находитесь в гараже "); for(new gar = 1; gar <= AllGarage;gar++) { if(IsPlayerInRangeOfPoint(playerid, 20.0,GARAGE_X,GARAGE_Y,GARAGE_Z) && gar == GetPlayerVirtualWorld(playerid)) { if(IsPlayerInAnyVehicle(playerid)) { new carid = GetPlayerVehicleID(playerid); LinkVehicleToInterior(carid, 0); SetVehicleVirtualWorld(carid, 0); SetPlayerInterior(playerid,0); SetPlayerVirtualWorld(playerid,0); SetVehiclePos(carid, Garage[gar][gX],Garage[gar][gY],Garage[gar][gZ]+5.0); SetVehicleZAngle(carid, Garage[gar][gA]); SetPlayerPos(playerid,Garage[gar][gX],Garage[gar][gY],Garage[gar][gZ]+1.0); PutPlayerInVehicle(playerid,carid,0); } else { SetPlayerPos(playerid,Garage[gar][gX],Garage[gar][gY],Garage[gar][gZ]+1.0); SetPlayerInterior(playerid,0); SetPlayerVirtualWorld(playerid,0); } break; } } } return true; } if(strcmp(cmd,"/newga",true)==0) { if(Player[playerid][pAdmin] <= 4) return SendClientMessage(playerid, -1, "У вас нет прав на использование этой команды!"); tmp = strcharsplit(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "Используйте: /newga [Сумма]"); new money = strval(tmp); tmp = strcharsplit(cmdtext, idx); AllGarage++; new Float:X,Float:Y,Float:Z; GetPlayerPos(playerid, X,Y,Z); format(Garage[AllGarage][gOwner],24,"None"); Garage[AllGarage][gPrice] = money; Garage[AllGarage][gLock] = 1; Garage[AllGarage][gX] = X; Garage[AllGarage][gY] = Y; Garage[AllGarage][gZ] = Z; Garage[AllGarage][gA] = 90; if(!strcmp("None", Garage[AllGarage][gOwner], true)) { format(string,sizeof(string),"Гараж номер %d\nПродаеться цена %d]",AllGarage,Garage[AllGarage][gPrice]); CreatePickup(1274, 1, Garage[AllGarage][gX], Garage[AllGarage][gY], Garage[AllGarage][gZ]); } Text3DCar[AllGarage] = CreateDynamic3DTextLabel(string, 0xCE9A00FF, Garage[AllGarage][gX], Garage[AllGarage][gY], Garage[AllGarage][gZ],10.0); SaveGarage(AllGarage); return 1; } поясню по командам,чтобы создать гараж введите /newga цена,все действия с гаражом проходят через команду /ga то есть если мы хотим купить гараж вводим /ga buy и т.д. Координаты появления в гараже меняйте на свои,так как они поставлены под мой маппинг гаража Осталось только в папке scriptfiles создать папку и в папке файлик,ссылку я оставлю ниже garage.rar Автор вырезки : Basis
  22. Vlad_Miroshnicov

    Команда /bag ZCMD

    Здравствуйте всем С вами Я Vlad_Andreev. Сегодня я хочу показать вам свою команду /bag. Ну так начнём) Данная команда предназначена для #include Команда CMD:bag(playerid,params[])//Команда можете заменить на своё { new string[100];//переменная if(IsPlayerConnected(playerid))//Зашли вы на сервер или нет { if(sscanf(params,"s[128]", params[0])) return SendClientMessage(playerid, 0xFF0000AA, "Используй Команду /bag [Текст].");//Проверка { format(string, sizeof(string), "[ID:%d] %s Заметил Баг: %s",playerid, sendername(playerid), params[0]);//Пишите Администрации что вы нашли баг SendClientMessage(playerid, COLOR_LIGHTBLUE, string);//цвет SendClientMessage(playerid, COLOR_RED, "Спасибо вам за оказанную услугу сервера, Администрация, её обязательно рассмотрят. Ожидайте ответа.");//функция после того как вы напишите что нашли баг log("bag", string);//Название текстового документа куда будут поступать от пользователя текст } } return 1; } Функция Сохранения+Дата время log(filename[],string[]) { new year, month,day; new hour,minuite,second; new stringer[100]; new str[500]; gettime(hour,minuite,second); getdate(year, month, day); format(stringer,sizeof(stringer), "Files/Logs/%s.log",filename);//Поток куда будут сохранятся new File:file = fopen(stringer, io_append); format(str,sizeof(str), "[LOG/BAG]: %s [%i/%i/%i][%i:%i:%i]\r\n",string,day,month,year,hour,minuite,second);//Дата время минуты секунды и т д for(new io=0; io { fputchar(file, str[io], false); } fclose(file); } Автор данной команды я Vlad_Andreev Ссылка чтобы скачать куда будут сохраняться ТЕКСТ, закинуть в scriptfiles
  23. #Bazuka

    Спидометр

    К 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(); В конец мода.
  24. #Bazuka

    Спидометр

    Первая моя работа с чего.то начинают люди вот потом будет очень подробно расписано о диалогах и с чем их будет Pawno осознаю уже Спидометр первый,думаю пойдет Автор: Лично я
  25. #Bazuka

    [Метро]

    Это моя личная первая работа не знал с чего начать сам делал с нуля,ну с чего-то все начинают. К всем New new Arzamas; new Arzamas1; new YouCity1; new YouCity; new Beyatov; new Beyatov1; В public OnGameModeInit() YouCity1 = CreatePickup(1318,23,604.7800,711.0667,12.0859,-1); YouCity = CreatePickup(1318,23,1823.5417,-2242.3850,11.2394,0); Beyatov = CreatePickup(1318,23,602.8683,706.5071,12.0859,-1); Beyatov1 = CreatePickup(1318,23,1856.2887,2251.1890,15.6172,0); Arzamas = CreatePickup(1318,23,602.5826,702.4211,12.0859,-1); Arzamas1 = CreatePickup(1318,23,203.7445,828.6365,13.3831,0); В public OnGameModeInit() AddStaticPickup(1239, 2, 1824.7411,-2244.7537,11.0209); В public OnGameModeInit() Create3DTextLabel("{11E9F4}Метро\n {FF0000}Главный Центр",0x00FFFFAA,1823.7743,-2245.0413,14.0500,40.0,0,1); Create3DTextLabel("{11E9F4}Южный",COLOR_GOLD,604.7800,711.0667,12.0859,40.0,0,1); Create3DTextLabel("{11E9F4}Арзамас",COLOR_GOLD,602.5875,702.4209,12.0859,40.0,0,1); Create3DTextLabel("{11E9F4}Батырево",COLOR_GOLD,602.8472,706.4666,12.0859,40.0,0,1); Create3DTextLabel("{11E9F4}Купить билет\n {FF0000}/buybil",COLOR_GOLD,1824.7411,-2244.7537,11.0209,40.0,0,1); В public OnGameModeInit() CreateDynamicObject(19447, 605.34, 709.34, 11.00, 0.00, 90.00, -21.00); CreateDynamicObject(19447, 601.92, 700.38, 11.00, 0.00, 90.00, -21.00); CreateDynamicObject(19463, 606.93, 708.71, 12.72, 0.00, 0.00, -21.00); CreateDynamicObject(19463, 606.34, 716.52, 12.72, 0.00, 0.00, -21.00); CreateDynamicObject(19463, 603.49, 699.72, 12.72, 0.00, 0.00, -21.00); CreateDynamicObject(19463, 607.45, 713.56, 12.72, 0.00, 0.00, 69.00); CreateDynamicObject(19463, 600.47, 701.38, 12.72, 0.00, 0.00, -21.00); CreateDynamicObject(19463, 603.82, 701.44, 12.72, 0.00, 0.00, 69.00); CreateDynamicObject(1533, 604.87, 712.64, 11.06, 0.00, 0.00, 249.00); CreateDynamicObject(10121, 605.55, 713.05, 11.56, 0.00, 0.00, -111.00); CreateDynamicObject(10121, 607.75, 712.23, 11.56, 0.00, 0.00, 68.00); CreateDynamicObject(10121, 606.55, 713.37, 11.56, 0.00, 0.00, 159.00); CreateDynamicObject(10121, 608.51, 712.61, 11.56, 0.00, 0.00, 159.00); CreateDynamicObject(1533, 604.34, 711.26, 11.06, 0.00, 0.00, 249.00); CreateDynamicObject(1533, 602.51, 706.70, 11.06, 0.00, 0.00, 249.00); CreateDynamicObject(1533, 603.04, 708.08, 11.06, 0.00, 0.00, 249.00); CreateDynamicObject(10121, 603.62, 708.28, 11.56, 0.00, 0.00, -111.00); CreateDynamicObject(10121, 604.00, 709.26, 11.56, 0.00, 0.00, -111.00); CreateDynamicObject(19417, 603.41, 708.91, 12.90, 0.00, 0.00, -21.00); CreateDynamicObject(19466, 603.49, 708.97, 12.84, 0.00, 0.00, -21.00); CreateDynamicObject(10121, 602.15, 704.73, 11.56, 0.00, 0.00, -111.00); CreateDynamicObject(10121, 601.41, 702.80, 11.56, 0.00, 0.00, -111.00); CreateDynamicObject(10121, 603.90, 701.78, 11.56, 0.00, 0.00, 68.00); CreateDynamicObject(10121, 604.66, 703.69, 11.56, 0.00, 0.00, 69.00); CreateDynamicObject(19371, 604.30, 711.25, 15.29, 0.00, 0.00, -21.00); CreateDynamicObject(19371, 602.44, 706.53, 15.29, 0.00, 0.00, -22.00); CreateDynamicObject(19463, 604.04, 709.80, 15.29, 0.00, 16.00, -21.00); CreateDynamicObject(19463, 600.62, 700.87, 15.29, 0.00, 16.00, -21.00); CreateDynamicObject(19463, 602.79, 702.17, 15.29, 0.00, 16.00, 69.00); CreateDynamicObject(19463, 606.42, 713.68, 15.29, 0.00, 16.00, -111.00); CreateDynamicObject(19463, 606.67, 708.74, 15.29, 0.00, -16.00, -21.00); CreateDynamicObject(19463, 603.23, 699.76, 15.29, 0.00, -16.00, -21.00); CreateDynamicObject(19463, 605.61, 709.18, 14.94, 0.00, 90.00, -21.00); CreateDynamicObject(19463, 602.06, 700.29, 14.94, 0.00, 90.00, -21.00); CreateDynamicObject(1533, 601.87, 702.29, 11.06, 0.00, 0.00, -21.00); CreateDynamicObject(4597, 1823.57, -2233.22, 9.96, 0.00, 0.00, 180.00); CreateDynamicObject(19466, 1822.54, -2242.84, 13.05, 0.00, 90.00, 90.00); CreateDynamicObject(19466, 1824.62, -2242.84, 13.05, 0.00, 90.00, 90.00); CreateDynamicObject(19466, 1824.61, -2244.28, 13.05, 0.00, 90.00, 90.00); CreateDynamicObject(19466, 1822.52, -2244.29, 13.05, 0.00, 90.00, 90.00); CreateDynamicObject(1986, 1824.63, -2232.73, 9.63, 0.00, 0.00, 0.00); В public OnPlayerPickUpPickup(playerid, pickupid) if(pickupid == YouCity1) { SetPlayerInterior(playerid, 0); SetPlayerPos(playerid, 1823.1112,-2245.1965,11.0209); } if(pickupid == YouCity) { if(PlayerInfo[playerid][pMetro] != 1)//Проверка на билет return SendClientMessage(playerid, -1, "У вас нет билета");//-1 значит,что билета нет SetPlayerInterior(playerid, 0); SetPlayerPos(playerid, 606.5397,710.6315,12.0859); } if(pickupid == Beyatov) { SetPlayerInterior(playerid, 0); SetPlayerPos(playerid, 1858.3896,2251.1362,15.6172); } if(pickupid == Beyatov1) { SetPlayerInterior(playerid, 0); SetPlayerPos(playerid, 604.9130,706.0921,12.0859); } if(pickupid == Arzamas) { SetPlayerInterior(playerid, 0); SetPlayerPos(playerid, 203.9170,826.8352,12.8115); } if(pickupid == Arzamas1) { SetPlayerInterior(playerid, 0); SetPlayerPos(playerid, 603.6325,704.3224,12.0859); } В enum pInfo pMetro, В public OnPlayerRegister(playerid, password[]) format(var, 32, "Metro=%d\n",PlayerInfo[playerid][pMetro]);fwrite(hFile, var); Каждый код будет быть у всех другой MYSQL,mxINI Автор: Artem_Bandit Идея лично моя не где не брал,сам всё с нуля делал Забыл команда сама: В public OnPlayerCommandText(playerid, cmdtext[]) if(strcmp(cmd, "/buybil", true) == 0) { if(IsPlayerConnected(playerid)) { if(playerid != INVALID_PLAYER_ID) { if(PlayerToPoint(10.0, playerid,1824.7411,-2244.7537,11.0209)) format(string, sizeof(string), "Вы купили билет", sendername); PlayerInfo[playerid][pMetro] = 1; GiveMoney(playerid, -400); SendClientMessage(playerid, COLOR_WHITE, string); } } return true; }
×

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

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