Перейти к содержанию
Авторизация  
Marvellous

Динамическая система банкоматов MYSQL r39.2

Рекомендуемые сообщения

Marvellous

Дорогие пользователи портала CR-MP

 

Недавно я выкладывал [FS] скрипт,но многие просили меня сделать мануал,так как у многих не выходило перенести в мод!

И так думаю начнем!

 

***В начало мода***

#define TABLE_ATM               "atm"
#define MAX_ATM                 50 //количество разрешено
new BigSTR[1024]; // Для больших запросов
new TOTALATM;
enum atm
{
    aID,
    Float:aX,
    Float:aY,
    Float:aZ,
    Float:arX,
    Float:arY,
    Float:arZ,
};
new ATMInfo[MAX_ATM][atm];
new ATM[MAX_ATM];
new ATMIcon[MAX_ATM];
new Text3D:ATMText[MAX_ATM] = {Text3D:-1, ...};

***К любым stock'aм или в начало тоже можно***

stock LoadATM()
{
    new time = GetTickCount();
    format(BigSTR, sizeof BigSTR, "SELECT * FROM `"TABLE_ATM"` ORDER BY `aID` ASC", true);
    new Cache:result = mysql_query(connects, BigSTR, true);
    new rows = cache_get_row_count();
    if(!rows) return print("stock LoadATM() - not loaded.");
    TOTALATM = rows;
    for(new idx = 1; idx <= rows; idx++)
    {
        ATMInfo[idx][aID] = cache_get_row_int(idx-1,0, connects);
        ATMInfo[idx][aX] = cache_get_row_float(idx-1,1, connects);
        ATMInfo[idx][aY] = cache_get_row_float(idx-1,2, connects);
        ATMInfo[idx][aZ] = cache_get_row_float(idx-1,3, connects);
        ATMInfo[idx][arX] = cache_get_row_float(idx-1,4, connects);
        ATMInfo[idx][arY] = cache_get_row_float(idx-1,5, connects);
        ATMInfo[idx][arZ] = cache_get_row_float(idx-1,6, connects);
        ATM[idx] = CreateObject(2754, ATMInfo[idx][aX], ATMInfo[idx][aY], ATMInfo[idx][aZ], ATMInfo[idx][arX], ATMInfo[idx][arY], ATMInfo[idx][arZ]);
        SetObjectMaterialText(ATM[idx], "\nБанкомат\n        \n        \n        \n        \n        ",2,OBJECT_MATERIAL_SIZE_256x256,"Tahoma", 48, 1, 0xFF000000,0xFFFFFF00, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
        ATMIcon[idx] = CreateDynamicMapIcon(ATMInfo[idx][aX],ATMInfo[idx][aY],ATMInfo[idx][aZ]-20,56,0);
        ATMText[idx] = CreateDynamic3DTextLabel("{FFFFFF}*** Банкомат ***\n\n{AFAFAF}Чтобы воспользоваться\nуслугами\nнажмите ALT",COLOR_LIGHTBLUE, ATMInfo[idx][aX],ATMInfo[idx][aY],ATMInfo[idx][aZ]+2,15.0);
      }
    printf("[ Загрузка ... ] %d - банкомата успешно загружено (%d мс)", TOTALATM,GetTickCount()- time);
    cache_delete(result);
    return true;
} 

*** в OnGameModeINit ***

LoadATM(); 

*** Ко всем командам ***

CMD:addatm(playerid)
{
    if(PlayerInfo[playerid][pAdmin] < 6) return SendClientMessage(playerid,COLOR_GREY,"Ошибка: Вы не уполномочены использовать данную команду!");
    ShowPlayerDialog(playerid, 100, 0, "Добавить ATM", "Вы хотите начать установку банкомата?", "Да", "Нет");
    return true;
}

CMD:delatm(playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] < 6) return SendClientMessage(playerid,COLOR_GREY,"Ошибка: Вы не уполномочены использовать данную команду!");
    for(new i = 1; i <= TOTALATM; i++)
    {
        if(IsPlayerInRangeOfPoint(playerid, 2.0, ATMInfo[i][aX],ATMInfo[i][aY],ATMInfo[i][aZ]))
        {
            ATMInfo[i][aX] = 0.0;
            ATMInfo[i][aY] = 0.0;
            ATMInfo[i][aZ] = 0.0+9999;
            format(BigSTR, sizeof BigSTR, "DELETE FROM `"TABLE_ATM"` WHERE aID = '%d'",i);
            mysql_function_query(connects, BigSTR, false, "", "");
            DestroyObject(ATM[i]);
            DestroyDynamicMapIcon(ATMIcon[i]);
            DestroyDynamic3DTextLabel(ATMText[i]);
            SendClientMessage(playerid, -1, "Банкомат удален.");
        }
    }
    return true;
}

*** Ко всем своим диалогам ***

    case 100:
        {
            if(!response) return true;
            new Float:x, Float:y, Float:z, Float:angle;
            GetPlayerPos(playerid, x, y, z);
            GetPlayerFacingAngle(playerid, angle);
            x += floatsin(-angle, degrees);
            y += floatcos(-angle, degrees);
            new atm1;
            SendClientMessage(playerid, COLOR_LIGHTRED, "Чтобы выйти, нажмите: ESC и чтобы сохранить, нажмите курсором: СОХРАНИТЬ");
            atm1 = CreateObject(2754, x, y, z-0.35, 0.0, 0.0, 0.0);
            SetPVarInt(playerid, "LoadATM", atm1+1);
            EditObject(playerid, atm1);
        }

*** public OnPlayerEditObject ***

if(GetPVarInt(playerid, "LoadATM") > 0)
    {
        if(!playerobject)
        {
            if(!IsValidObject(objectid)) return true;
            MoveObject(objectid, fX, fY, fZ, 10.0, fRotX, fRotY, fRotZ);
        }
        if(response == EDIT_RESPONSE_FINAL)
        {
            TOTALATM++;
            ATMInfo[TOTALATM][aX] = fX;
            ATMInfo[TOTALATM][aY] = fY;
            ATMInfo[TOTALATM][aZ] = fZ;
            ATMInfo[TOTALATM][arX] = fRotX;
            ATMInfo[TOTALATM][arY] = fRotY;
            ATMInfo[TOTALATM][arZ] = fRotZ;
            SendClientMessage(playerid,COLOR_YELLOW,"Вы установили банкомат");
            DestroyObject(GetPVarInt(playerid, "LoadATM")-1);
            ATM[TOTALATM] = CreateObject(2754, fX, fY, fZ, fRotX, fRotY, fRotZ);
            SetObjectMaterialText(ATM[TOTALATM], "\nБанкомат\n        \n        \n        \n        \n        ",2,OBJECT_MATERIAL_SIZE_256x256,"Tahoma", 48, 1, 0xFF000000,0xFFFFFF00, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
             ATMIcon[TOTALATM] = CreateDynamicMapIcon(fX, fY, fZ-20,52,0);
            ATMText[TOTALATM] = CreateDynamic3DTextLabel("{FFFFFF}*** Банкомат ***\n\n{AFAFAF}Чтобы воспользоваться\nуслугами\nнажмите ALT",COLOR_LIGHTBLUE,  fX, fY, fZ+2,15.0);
            DeletePVar(playerid, "LoadATM");
            CancelEdit(playerid);
            format(BigSTR, sizeof BigSTR,"INSERT INTO `"TABLE_ATM"` (aID, aX, aY, aZ, arX, arY, arZ)VALUES (%d,'%f','%f','%f','%f', '%f', '%f')",
            TOTALATM,ATMInfo[TOTALATM][aX],ATMInfo[TOTALATM][aY],ATMInfo[TOTALATM][aZ], ATMInfo[TOTALATM][arX], ATMInfo[TOTALATM][arY], ATMInfo[TOTALATM][arZ]);
            mysql_function_query(connects, BigSTR, false, "","");
        }
        if(response == EDIT_RESPONSE_CANCEL)
        {
            DeletePVar(playerid, "LoadATM");
            SendClientMessage(playerid, COLOR_LIGHTRED, "Установка банкомата отменена");
            DestroyObject(objectid);
            CancelEdit(playerid);
        }
        return true;
    }  

И самое важное это сделать импорт базы данных! Смотрите что бы не было ошибок

CREATE TABLE IF NOT EXISTS  `atm` (
 `aID` INT( 11 ) NOT NULL AUTO_INCREMENT ,
 `aX` FLOAT NOT NULL ,
 `aY` FLOAT NOT NULL ,
 `aZ` FLOAT NOT NULL ,
 `arX` FLOAT NOT NULL ,
 `arY` FLOAT NOT NULL ,
 `arZ` FLOAT NOT NULL ,
PRIMARY KEY (  `aID` )
)  

Если будут какие то ошибки пишите,так как у меня они так же были,но после исправил и проверил!

Только после выдал всю систему вам!

 

Автор: Я

 

Копировать на другие порталы строго запрещено!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Daniil_Gold

@Marvellous,1)Не ты писал...

Видел я уже такое на др.форуме. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Marvellous

@Daniil_Gold, Покажи для начала что бы утверждать! Данную систему я вырезал с своего мода,который писал пол года! Так же подобная система есть и на sampe,но она отличается от моей на много! Что бы что то говорить,нужно доказать,так что предъяви доказательства! 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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