Question

Вот код мода (я немного странный я все для себя помечаю):

 

Спойлер

#include <a_samp>

#include <mysql>

#include <a_players>

#include <a_vehicles>



// Данные для подключения к БД

new MySQL:sqlHandle;



#define DB_HOST "localhost"

#define DB_USER "root"

#define DB_PASS "password"

#define DB_NAME "samp_db"



// Координаты спавна (ЖДЛС)

#define SPAWN_X 1741.41

#define SPAWN_Y -1861.38

#define SPAWN_Z 13.57

#define SPAWN_ANGLE 270.0



// ID транспортных средств (скутеров)

new scooter[3];



// Статус аренды скутеров

new bool scooterRented[3];

new rentedByPlayer[MAX_PLAYERS];



// Цена аренды скутера

#define RENT_PRICE 500



// Спидометр

new Text:Speedometer[MAX_PLAYERS];



// Статус двигателя

new bool engineStatus[MAX_PLAYERS];



// Инвентарь

new Text:InventoryTextDraw[MAX_PLAYERS];

new bool inventoryVisible[MAX_PLAYERS];

new Text:InventorySlots[MAX_PLAYERS][36];



public OnGameModeInit()

{

    sqlHandle = mysql_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);

    if (sqlHandle == MYSQL_INVALID_HANDLE)

    {

        print("Не удалось подключиться к базе данных.");

        return 0;

    }

    print("Успешное подключение к базе данных.");



    // Создание объектов вокруг точки спавна

    CreateObject(1237, SPAWN_X + 5, SPAWN_Y, SPAWN_Z, 0.00.00.0); // Пример объекта

    CreateObject(1237, SPAWN_X - 5, SPAWN_Y, SPAWN_Z, 0.00.00.0); // Еще один пример объекта



    // Создание скутеров

    scooter[0] = CreateVehicle(462, SPAWN_X + 2, SPAWN_Y, SPAWN_Z, SPAWN_ANGLE, -1, -1600);

    scooter[1] = CreateVehicle(462, SPAWN_X + 4, SPAWN_Y, SPAWN_Z, SPAWN_ANGLE, -1, -1600);

    scooter[2] = CreateVehicle(462, SPAWN_X + 6, SPAWN_Y, SPAWN_Z, SPAWN_ANGLE, -1, -1600);



    // Инициализация статуса аренды скутеров

    for (new i = 0; i < 3; i++) {

        scooterRented = false;

        rentedByPlayer = -1;

    }

 

    // Инициализация спидометра и статуса двигателя

    for (new i = 0; i < MAX_PLAYERS; i++) {

        Speedometer = TextDrawCreate(320.0447.0"");

        TextDrawLetterSize(Speedometer, 0.31.2);

        TextDrawTextSize(Speedometer, 100.020.0);

        TextDrawFont(Speedometer, 1);

        TextDrawAlignment(Speedometer, 2);

        TextDrawColor(Speedometer, 0xFFFFFFFF);

        TextDrawSetOutline(Speedometer, 1);

        TextDrawSetProportional(Speedometer, 1);

        TextDrawHideForPlayer(i, Speedometer);

        engineStatus = false;

        inventoryVisible = false;

    }

 

    SetTimer("CheckRentedVehicles"30000true);

 

    // Инициализация инвентаря для всех игроков

    for (new i = 0; i < MAX_PLAYERS; i++)

    {

        InitializeInventory(i);

    }

 

    return 1;

}

 

public OnGameModeExit()

{

    mysql_close(sqlHandle);

    return 1;

}

 

public OnPlayerConnect(playerid)

{

    ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Логин""Введите ваш логин:""OK""Cancel");

    return 1;

}

 

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])

{

    if (dialogid == 1 && response)

    {

        new query[128];

        format(query, sizeof(query), "SELECT password, money FROM users WHERE username='%s'", inputtext);

        mysql_tquery(sqlHandle, query, "OnLoginCheck""d", playerid);

    }

    else if (dialogid == 2 && response)

    {

        new query[256];

        format(query, sizeof(query), "INSERT INTO users (username, password, money) VALUES ('%s', '%s', 1000)", inputtext, inputtext);

        mysql_tquery(sqlHandle, query);

        SendClientMessage(playerid, -1"Вы успешно зарегистрированы!");

        SpawnPlayer(playerid);

        GivePlayerMoney(playerid, 1000); // Выдача 1000$ при регистрации

    }

    else if (dialogid == 3)

    {

        new vehicleid = GetPlayerVehicleID(playerid);

 

        for (new i = 0; i < 3; i++)

        {

            if (vehicleid == scooter)

            {

                if (response)

                {

                    new playerMoney = GetPlayerMoney(playerid);

 

                    if (playerMoney >= RENT_PRICE)

                    {

                        GivePlayerMoney(playerid, -RENT_PRICE); // Списать деньги

                        SendClientMessage(playerid, -1"Вы арендовали скутер.");

                        scooterRented = true// Скутер арендован

                        rentedByPlayer = playerid; // Привязать аренду к игроку

                    }

                    else

                    {

                        SendClientMessage(playerid, -1"У вас недостаточно денег для аренды.");

                        RemovePlayerFromVehicle(playerid);

                    }

                }

                else

                {

                    RemovePlayerFromVehicle(playerid);

                }

                break;

            }

        }

    }

    return 1;

}

 

forward OnLoginCheck(playerid, connection, resultid, extraid);

public OnLoginCheck(playerid, connection, resultid, extraid)

{

    if (mysql_num_rows(resultid) == 0)

    {

        ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Регистрация""Введите ваш новый пароль:""OK""Cancel");

    }

    else

    {

        new dbPass[255], playerPass[255];

        new money;

        mysql_fetch_field_row(dbPass, "password", resultid);

        mysql_fetch_field_row_int(money, "money", resultid);

        inputtext[playerid][strlen(inputtext[playerid])] = '\0'// Add null terminator

        inputtext[playerid][sizeof(inputtext[playerid])-1] = '\0'// Ensure it's null terminated

        if (!strcmp(dbPass, inputtext[playerid], false))

        {

            SendClientMessage(playerid, -1"Успешный вход!");

            SpawnPlayer(playerid);

            GivePlayerMoney(playerid, money); // Выдача денег игроку

        }

        else

        {

            SendClientMessage(playerid, -1"Неправильный пароль.");

            Kick(playerid);

        }

    }

    return 1;

}

 

public OnPlayerSpawn(playerid)

{

    SetPlayerPos(playerid, SPAWN_X, SPAWN_Y, SPAWN_Z);

    SetPlayerFacingAngle(playerid, SPAWN_ANGLE);

    return 1;

}

 

public OnPlayerDisconnect(playerid, reason)

{

    for (new i = 0; i < 3; i++)

    {

        if (rentedByPlayer == playerid)

        {

            scooterRented = false;

            rentedByPlayer = -1;

            SetVehiclePos(scooter, SPAWN_X + 2 + 2 * i, SPAWN_Y, SPAWN_Z);

            SetVehicleZAngle(scooter, SPAWN_ANGLE);

        }

    }

    return 1;

}

 

public OnPlayerStateChange(playerid, newstate, oldstate)

{

    if (newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)

    {

        new vehicleid = GetPlayerVehicleID(playerid);

 

        // Проверка, является ли транспорт скутером

        for (new i = 0; i < 3; i++)

        {

            if (vehicleid == scooter)

            {

                // Если скутер уже арендован

                if (scooterRented && rentedByPlayer != playerid)

                {

                    SendClientMessage(playerid, -1"Этот скутер уже арендован.");

                    RemovePlayerFromVehicle(playerid);

                }

                else

                {

                    ShowPlayerDialog(playerid, 3, DIALOG_STYLE_MSGBOX, "Аренда скутера""Хотите арендовать этот скутер за 500$?""Арендовать""Отказаться");

                }

             

  break;

            }

        }

    }

 

    if (newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)

    {

        TextDrawShowForPlayer(playerid, Speedometer[playerid]);

        UpdateSpeedometer(playerid);

        else

    {

        TextDrawHideForPlayer(playerid, Speedometer[playerid]);

    }

    return 1;

}

 

public OnPlayerExitVehicle(playerid, vehicleid)

{

    TextDrawHideForPlayer(playerid, Speedometer[playerid]);

    return 1;

}

 

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)

{

    // Проверка на кнопку N (завести/заглушить двигатель)

    if ((newkeys & KEY_NO) && IsPlayerInAnyVehicle(playerid))

    {

        new vehicleid = GetPlayerVehicleID(playerid);

        engineStatus[playerid] = !engineStatus[playerid];

        if (engineStatus[playerid])

        {

            SendClientMessage(playerid, -1"Вы завели двигатель.");

        }

        else

        {

            SendClientMessage(playerid, -1"Вы заглушили двигатель.");

        }

    }

 

    // Проверка на кнопку L (закрыть/открыть транспорт)

    if ((newkeys & KEY_LOOK_RIGHT) && IsPlayerInAnyVehicle(playerid))

    {

        new vehicleid = GetPlayerVehicleID(playerid);

        for (new i = 0; i < 3; i++)

        {

            if (vehicleid == scooter)

            {

                if (rentedByPlayer == playerid)

                {

                    ToggleVehicleLocked(vehicleid);

                    SendClientMessage(playerid, -1"Транспорт закрыт/открыт.");

                }

                else

                {

                    SendClientMessage(playerid, -1"Этот транспорт не ваш.");

                }

                break;

            }

        }

    }

 

    // Проверка на кнопку Y (инвентарь)

    if (newkeys & KEY_Y)

    {

        if (inventoryVisible[playerid])

        {

            HideInventory(playerid);

        }

        else

        {

            ShowInventory(playerid);

        }

    }

 

    return 1;

}

 

// Обновление спидометра

forward UpdateSpeedometer(playerid);

public UpdateSpeedometer(playerid)

{

    if (IsPlayerInAnyVehicle(playerid))

    {

        new Float:speed;

        GetVehicleSpeed(GetPlayerVehicleID(playerid), &speed);

        new str[32];

        format(str, sizeof(str), "Скорость: %.2f км/ч", speed * 3.6);

        TextDrawSetString(Speedometer[playerid], str);

        TextDrawShowForPlayer(playerid, Speedometer[playerid]);

    }

    else

    {

        TextDrawHideForPlayer(playerid, Speedometer[playerid]);

    }

    SetTimerEx("UpdateSpeedometer"1000false"d", playerid);

    return 1;

}

 

// Таймер проверки арендованных транспортных средств

public CheckRentedVehicles()

{

    for (new i = 0; i < MAX_PLAYERS; i++)

    {

        if (IsPlayerConnected(i))

        {

            for (new j = 0; j < 3; j++)

            {

                if (GetPlayerVehicleID(i) == scooter[j] && rentedByPlayer[j] != i)

                {

                    Kick(i);

                    break;

                }

            }

        }

    }

    return 1;

}

 

// Получить скорость транспортного средства

stock GetVehicleSpeed(vehicleid, &Float:speed)

{

    new Float:x, Float:y, Float:z;

    GetVehicleVelocity(vehicleid, x, y, z);

    speed = floatsqroot(x*x + y*y + z*z) * 100;

}

 

// Переключение блокировки транспортного средства

stock ToggleVehicleLocked(vehicleid)

{

    new locked = GetVehicleParamsEx(vehicleid);

    if (locked & VEHICLE_PARAMS_EX_DOORS)

    {

        SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_UNSET, VEHICLE_PARAMS_UNSET, VEHICLE_PARAMS_UNSET, VEHICLE_PARAMS_UNSET, VEHICLE_PARAMS_UNSET, VEHICLE_PARAMS_UNSET, VEHICLE_PARAMS_UNLOCKED);

    }

    else

    {

        SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_UNSET, VEHICLE_PARAMS_UNSET, VEHICLE_PARAMS_UNSET, VEHICLE_PARAMS_UNSET, VEHICLE_PARAMS_UNSET, VEHICLE_PARAMS_UNSET, VEHICLE_PARAMS_LOCKED);

    }

}

 

// Обработка команды /inventory

public OnPlayerCommandText(playerid, cmdtext[])

{

    if (!strcmp("/inventory", cmdtext, true))

    {

        if (inventoryVisible[playerid])

        {

            HideInventory(playerid);

        }

        else

        {

            ShowInventory(playerid);

        }

        return 1;

    }

    return 0;

}

 

// Инициализация инвентаря

stock InitializeInventory(playerid)

{

    InventoryTextDraw[playerid] = TextDrawCreate(320.0240.0"Inventory");

    TextDrawLetterSize(InventoryTextDraw[playerid], 0.51.5);

    TextDrawAlignment(InventoryTextDraw[playerid], 2);

    TextDrawBackgroundColor(InventoryTextDraw[playerid], 255);

    TextDrawFont(InventoryTextDraw[playerid], 2);

    TextDrawSetOutline(InventoryTextDraw[playerid], 1);

    TextDrawSetProportional(InventoryTextDraw[playerid], 1);

    TextDrawSetShadow(InventoryTextDraw[playerid], 0);

 

    for (new i = 0; i < 36; i++)

    {

        new Float:x = 250.0 + (i % 6) * 50.0;

        new Float:y = 150.0 + (i / 6) * 50.0;

        InventorySlots[playerid] = TextDrawCreate(x, y, " ");

        TextDrawLetterSize(InventorySlots[playerid], 1.01.0);

        TextDrawAlignment(InventorySlots[playerid], 2);

        TextDrawBackgroundColor(InventorySlots[playerid], 0x000000FF);

        TextDrawFont(InventorySlots[playerid], 2);

        TextDrawSetOutline(InventorySlots[playerid], 1);

        TextDrawSetProportional(InventorySlots[playerid], 1);

        TextDrawSetShadow(InventorySlots[playerid], 0);

    }

}

 

// Показ инвентаря

stock ShowInventory(playerid)

{

    TextDrawShowForPlayer(playerid, InventoryTextDraw[playerid]);

    for (new i = 0; i < 36; i++)

    {

        TextDrawShowForPlayer(playerid, InventorySlots[playerid]);

    }

    inventoryVisible[playerid] = true;

}

 

// Скрытие инвентаря

stock HideInventory(playerid)

{

    TextDrawHideForPlayer(playerid, InventoryTextDraw[playerid]);

    for (new i = 0; i < 36; i++)

    {

        TextDrawHideForPlayer(playerid, InventorySlots[playerid]);

    }

    inventoryVisible[playerid] = false;

}

 

// Перезапуск спидометра при входе в транспорт

public OnPlayerStateChange(playerid, newstate, oldstate)

{

    if (newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)

    {

        TextDrawShowForPlayer(playerid, Speedometer[playerid]);

        UpdateSpeedometer(playerid);

    }

    else

    {

        TextDrawHideForPlayer(playerid, Speedometer[pla

yerid]);

    }

    return 1;

}

 

public OnGameModeInit()

{

    // Инициализация инвентаря для всех игроков

    for (new i = 0; i < MAX_PLAYERS; i++)

    {

        InitializeInventory(i);

    }

 

    return 1;

}

 

 

Вот такие ошибки:

filegiged.pwn.old.pwn(24) : error 001: expected token: ";", but found "-identifier-"

filegiged.pwn.old.pwn(34) : error 021: symbol already defined: "bool"

filegiged.pwn.old.pwn(38) : error 021: symbol already defined: "bool"

filegiged.pwn.old.pwn(44) : warning 217: loose indentation

filegiged.pwn.old.pwn(47) : warning 217: loose indentation

filegiged.pwn.old.pwn(49) : warning 217: loose indentation

filegiged.pwn.old.pwn(52) : warning 217: loose indentation

filegiged.pwn.old.pwn(53) : warning 217: loose indentation

filegiged.pwn.old.pwn(56) : warning 217: loose indentation

filegiged.pwn.old.pwn(57) : warning 217: loose indentation

filegiged.pwn.old.pwn(58) : warning 217: loose indentation

filegiged.pwn.old.pwn(61) : warning 217: loose indentation

filegiged.pwn.old.pwn(62) : error 017: undefined symbol "scooterRented"

filegiged.pwn.old.pwn(62) : warning 215: expression has no effect

filegiged.pwn.old.pwn(62) : error 001: expected token: ";", but found "]"

filegiged.pwn.old.pwn(62) : error 029: invalid expression, assumed zero

filegiged.pwn.old.pwn(62) : fatal error 107: too many error messages on one line

 

Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPha

se

 

 

7 Errors.

 

 

Я начинающий скриптер, ничего почти не умею, я не знаю как решить эти проюлемы

Edited by Cawfee

Share this post


Link to post
Share on other sites

5 answers to this question

  • 1

@PoierDoras Сделай сам код в ведёшь когда ты пишешь сюда там с верху на д буквами есть < > нажми туда и вставь туда код и отправь мне

Share this post


Link to post
Share on other sites
  • 0

@PoierDoras покажи строчки в файле pawno\include\mysql.inc

Share this post


Link to post
Share on other sites
  • 0

@tivan666ban /**

 * MySQL plugin @MYSQL_PLUGIN_VERSION@

 */

 

 

#if defined mysql_included

 #endinput

#endif

#define mysql_included

 

 

/**

 * Common error codes

 *

 * Client: http://dev.mysql.com/doc/refman/5.5/en/error-messages-client.html

 * Server: http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html

 */

 

#define ER_DBACCESS_DENIED_ERROR 1044

#define ER_ACCESS_DENIED_ERROR 1045

#define ER_UNKNOWN_TABLE 1109

#define ER_SYNTAX_ERROR 1149

#define CR_SERVER_GONE_ERROR 2006

#define CR_SERVER_LOST 2013

#define CR_COMMAND_OUT_OF_SYNC 2014

#define CR_SERVER_LOST_EXTENDED 2055

 

 

enum E_ORM_ERROR

{

 ERROR_INVALID,

 ERROR_OK,

 ERROR_NO_DATA

};

 

enum E_MYSQL_GLOBAL_OPTION

{

 DUPLICATE_CONNECTIONS,

 DUPLICATE_CONNECTION_WARNING

};

 

enum E_MYSQL_OPTION

{

 AUTO_RECONNECT,

 MULTI_STATEMENTS,

 POOL_SIZE,

 SERVER_PORT,

 SSL_ENABLE,

 SSL_KEY_FILE,

 SSL_CERT_FILE,

 SSL_CA_FILE,

 SSL_CA_PATH,

 SSL_CIPHER

};

 

enum E_MYSQL_FIELD_TYPE

{

 MYSQL_TYPE_INVALID = -1,

 MYSQL_TYPE_DECIMAL = 0,

 MYSQL_TYPE_TINY,

 MYSQL_TYPE_SHORT,

 MYSQL_TYPE_LONG,

 MYSQL_TYPE_FLOAT,

 MYSQL_TYPE_DOUBLE,

 MYSQL_TYPE_NULL,

 MYSQL_TYPE_TIMESTAMP,

 MYSQL_TYPE_LONGLONG,

 MYSQL_TYPE_INT24,

 MYSQL_TYPE_DATE,

 MYSQL_TYPE_TIME,

 MYSQL_TYPE_DATETIME,

 MYSQL_TYPE_YEAR,

 MYSQL_TYPE_NEWDATE,

 MYSQL_TYPE_VARCHAR,

 MYSQL_TYPE_BIT,

 MYSQL_TYPE_TIMESTAMP2,

 MYSQL_TYPE_DATETIME2,

 MYSQL_TYPE_TIME2,

 MYSQL_TYPE_JSON = 245,

 MYSQL_TYPE_NEWDECIMAL = 246,

 MYSQL_TYPE_ENUM = 247,

 MYSQL_TYPE_SET = 248,

 MYSQL_TYPE_TINY_BLOB = 249,

 MYSQL_TYPE_MEDIUM_BLOB = 250,

 MYSQL_TYPE_LONG_BLOB = 251,

 MYSQL_TYPE_BLOB = 252,

 MYSQL_TYPE_VAR_STRING = 253,

 MYSQL_TYPE_STRING = 254,

 MYSQL_TYPE_GEOMETRY = 255

};

 

enum E_MYSQL_EXECTIME_UNIT

{

 MILLISECONDS,

 MICROSECONDS

};

 

#define MYSQL_DEFAULT_HANDLE MySQL:1

#define MYSQL_INVALID_HANDLE MySQL:0

#define MYSQL_INVALID_CACHE Cache:0

#define MYSQL_INVALID_ORM ORM:0

 

 

 

// ORM functions

native ORM:orm_create(const table[], MySQL:handle = MYSQL_DEFAULT_HANDLE);

native orm_destroy(ORM:id);

 

native E_ORM_ERROR:orm_errno(ORM:id);

 

native orm_apply_cache(ORM:id, row_idx, result_idx = 0);

 

native orm_select(ORM:id, const callback[] = "", const format[] = "", {ORM, Float, _}:...);

native orm_update(ORM:id, const callback[] = "", const format[] = "", {ORM, Float, _}:...);

native orm_insert(ORM:id, const callback[] = "", const format[] = "", {ORM, Float, _}:...);

native orm_delete(ORM:id, const callback[] = "", const format[] = "", {ORM, Float, _}:...);

 

native orm_load(ORM:id, const callback[] = "", const format[] = "", {ORM, Float, _}:...) = orm_select;

native orm_save(ORM:id, const callback[] = "", const format[] = "", {ORM, Float, _}:...);

 

native orm_addvar_int(ORM:id, &var, const columnname[]);

native orm_addvar_float(ORM:id, &Float:var, const columnname[]);

native orm_addvar_string(ORM:id, var[], var_maxlen, const columnname[]);

 

native orm_clear_vars(ORM:id);

native orm_delvar(ORM:id, const columnname[]);

native orm_setkey(ORM:id, const columnname[]);

 

 

// MySQL functions

native MySQL:mysql_connect(const host[], const user[], const password[], const database[], MySQLOpt:option_id = MySQLOpt:0);

native MySQL:mysql_connect_file(const file_name[] = "mysql.ini");

native mysql_close(MySQL:handle = MYSQL_DEFAULT_HANDLE);

 

native mysql_unprocessed_queries(MySQL:handle = MYSQL_DEFAULT_HANDLE);

native mysql_global_options(E_MYSQL_GLOBAL_OPTION:type, value);

 

native MySQLOpt:mysql_init_options();

native mysql_set_option(MySQLOpt:option_id, E_MYSQL_OPTION:type, ...);

 

native mysql_pquery(MySQL:handle, const query[], const callback[] = "", const format[] = "", {MySQL, Float,_}:...);

native mysql_tquery(MySQL:handle, const query[], const callback[] = "", const format[] = "", {MySQL, Float,_}:...);

native Cache:mysql_query(MySQL:handle, const query[], bool:use_cache = true);

native mysql_tquery_file(MySQL:handle, const file_path[], const callback[] = "", const format[] = "", {MySQL, Float,_}:...);

native Cache:mysql_query_file(MySQL:handle, const file_path[], bool:use_cache = false);

 

native mysql_errno(MySQL:handle = MYSQL_DEFAULT_HANDLE);

native mysql_error(destination[], max_len = sizeof(destination), MySQL:handle = MYSQL_DEFAULT_HANDLE);

native mysql_escape_string(const source[], destination[], max_len = sizeof(destination), MySQL:handle = MYSQL_DEFAULT_HANDLE);

native mysql_format(MySQL:handle, output[], max_len, const format[], {MySQL, Float,_}:...);

native mysql_set_charset(const charset[], MySQL:handle = MYSQL_DEFAULT_HANDLE);

native mysql_get_charset(destination[], max_len = sizeof(destination), MySQL:handle = MYSQL_DEFAULT_HANDLE);

native mysql_stat(destination[], max_len = sizeof(destination), MySQL:handle = MYSQL_DEFAULT_HANDLE);

 

 

 

// Cache functions

native cache_get_row_count(&destination);

native cache_get_field_count(&destination);

native cache_get_result_count(&destination);

native cache_get_field_name(field_index, destination[], max_len = sizeof(destination));

native E_MYSQL_FIELD_TYPE:cache_get_field_type(field_index);

native cache_set_result(result_index);

 

stock cache_num_rows()

{

 new row_count;

 cache_get_row_count(row_count);

 return row_count;

}

stock cache_num_fields()

{

 new field_count;

 cache_get_field_count(field_count);

 return field_count;

}

stock cache_num_results()

{

 new result_count;

 cache_get_result_count(result_count);

 return result_count;

}

 

 

// overload macros for cache_get_value natives

#define cache_get_value(%1) (_:MSCGV0:MSCGV1:MSCGV2:cache_get_ovrld_value(%1))

#define MSCGV0:MSCGV1:MSCGV2:cache_get_ovrld_value(%1,"%2",%3) cache_get_value_name(%1,#%2,%3)

#define MSCGV1:MSCGV2:cache_get_ovrld_value(%1,%8string%9:%2,%3) cache_get_value_name(%1,%2,%3)

#define MSCGV2:cache_get_ovrld_value(%1,%2,%3) cache_get_value_index(%1,%2,%3)

 

#define cache_get_value_int(%1) (_:MSCGVI0:MSCGVI1:MSCGVI2:cache_get_value_int_ovrld(%1))

#define MSCGVI0:MSCGVI1:MSCGVI2:cache_get_value_int_ovrld(%1,"%2",%3) cache_get_value_name_int(%1,#%2,%3)

#define MSCGVI1:MSCGVI2:cache_get_value_int_ovrld(%1,%8string%9:%2,%3) cache_get_value_name_int(%1,%2,%3)

#define MSCGVI2:cache_get_value_int_ovrld(%1,%2,%3) cache_get_value_index_int(%1,%2,%3)

 

#define cache_get_value_float(%1) (_:MSCGVF0:MSCGVF1:MSCGVF2:cache_get_value_float_ovrld(%1))

#define MSCGVF0:MSCGVF1:MSCGVF2:cache_get_value_float_ovrld(%1,"%2",%3) cache_get_value_name_float(%1,#%2,%3)

#define MSCGVF1:MSCGVF2:cache_get_value_float_ovrld(%1,%8string%9:%2,%3) cache_get_value_name_float(%1,%2,%3)

#define MSCGVF2:cache_get_value_float_ovrld(%1,%2,%3) cache_get_value_index_float(%1,%2,%3)

 

#define cache_get_value_bool(%1) cache_get_value_int(%1)

 

#define cache_is_value_null(%1) (_:MSCIVN0:MSCIVN1:MSCIVN2:cache_is_value_null_ovrld(%1))

#define MSCIVN0:MSCIVN1:MSCIVN2:cache_is_value_null_ovrld(%1,"%2",%3) cache_is_value_name_null(%1,#%2,%3)

#define MSCIVN1:MSCIVN2:cache_is_value_null_ovrld(%1,%8string%9:%2,%3) cache_is_value_name_null(%1,%2,%3)

#define MSCIVN2:cache_is_value_null_ovrld(%1,%2,%3) cache_is_value_index_null(%1,%2,%3)

 

 

native cache_get_value_index(row_idx, column_idx, destination[], max_len = sizeof(destination));

native cache_get_value_index_int(row_idx, column_idx, &destination);

native cache_get_value_index_float(row_idx, column_idx, &Float:destination);

native cache_get_value_index_bool(row_idx, column_idx, &bool:destination) = cache_get_value_index_int;

native cache_is_value_index_null(row_idx, column_idx, &bool:destination);

 

native cache_get_value_name(row_idx, const column_name[], destination[], max_len = sizeof(destination));

native cache_get_value_name_int(row_idx, const column_name[], &destination);

native cache_get_value_name_float(row_idx, const column_name[], &Float:destination);

native cache_get_value_name_bool(row_idx, const column_name[], &bool:destination) = cache_get_value_name_int;

native cache_is_value_name_null(row_idx, const column_name[], &bool:destination);

 

native Cache:cache_save();

native cache_delete(Cache:cache_id);

native cache_set_active(Cache:cache_id);

native cache_unset_active();

native bool:cache_is_any_active();

native bool:cache_is_valid(Cache:cache_id);

 

native cache_affected_rows();

native cache_insert_id();

native cache_warning_count();

 

native cache_get_query_exec_time(E_MYSQL_EXECTIME_UNIT:unit = MICROSECONDS);

native cache_get_query_string(destination[], max_len = sizeof(destination));

 

 

// Forward declarations

forward OnQueryError(errorid, const error[], const callback[], const query[], MySQL:handle);

 

 

// Deprecated functions

 

#if !defined E_LOGLEVEL

enum E_LOGLEVEL

{

 NONE = 0,

 DEBUG = 1,

 INFO = 2,

 WARNING = 4,

 ERROR = 8,

 

 ALL = ERROR | WARNING | INFO | DEBUG

};

#endif

 

#pragma deprecated Configuring log levels is now done through the "log-config.yml" file

stock mysql_log(E_LOGLEVEL:loglevel = ERROR | WARNING)

{

 #pragma unused loglevel

}

 

 

 

Если что сори, что может я такой тупой, я прям ничего не знаю о Павно и ничего не умею, я учус и хочу научиться делать мода и сделать свой хороший мод

Share this post


Link to post
Share on other sites
  • 0

залей код на пасту или под спойлер в код, это не читабельно :bravo:

Share this post


Link to post
Share on other sites
  • 0

Share this post


Link to post
Share on other sites
This topic is now closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By d7.KrEoL
      Datalink filterscript - передача тактической информации об игроках на карту sampmap.ru
      Скачать файл Данный скрипт позволяет передавать информацию об игроках на тактическую карту проекта sampmap. Управление функциями через RCON команды, сам скрипт хоть и полностью готов к использованию, но скорее является примером, на его основе можно писать свои системы для взаимодействия с тактической картой.
      Тактическая карта проекта sampmap - это подобие даталинк системы, которая позволяет координировать действия отряда, либо просто отслеживать местоположение игроков в режиме радара. Для каждого переданного в datalink систему (на тактическую карту) игрока выводится его основная информация о скорости, азимуте, высоте, величине и направлении вектора скорости, а так же принадлежность свой/чужой
      Несколько скринов:
       
       
      Архивы:
       
      Исходники:
       
      Команды (ркон) для dlink:
      Помимо серверной версии скрипта существуют так же клиентские для обычного клиента с moonloader и для RakSAMP Lite бота. Все эти скрипты распространяются по открытой лицензии MIT, здесь находится git с исходниками. Проект открыт для ваших предложений относительно кода, или дальнейшего развития, вы можете оставить свои предложения на официальной странице github.






      Добавил d7.KrEoL Добавлено 09.12.2024 Категория Скрипты Автор d7.KrEoL  
    • By d7.KrEoL
      Данный скрипт позволяет передавать информацию об игроках на тактическую карту проекта sampmap. Управление функциями через RCON команды, сам скрипт хоть и полностью готов к использованию, но скорее является примером, на его основе можно писать свои системы для взаимодействия с тактической картой.
      Тактическая карта проекта sampmap - это подобие даталинк системы, которая позволяет координировать действия отряда, либо просто отслеживать местоположение игроков в режиме радара. Для каждого переданного в datalink систему (на тактическую карту) игрока выводится его основная информация о скорости, азимуте, высоте, величине и направлении вектора скорости, а так же принадлежность свой/чужой
      Несколько скринов:
       
       
      Архивы:
       
      Исходники:
       
      Команды (ркон) для dlink:
      Помимо серверной версии скрипта существуют так же клиентские для обычного клиента с moonloader и для RakSAMP Lite бота. Все эти скрипты распространяются по открытой лицензии MIT, здесь находится git с исходниками. Проект открыт для ваших предложений относительно кода, или дальнейшего развития, вы можете оставить свои предложения на официальной странице github.






    • By Мемен Томорли
      Как сделать табличку после бана аккаунта? Типо как на малиновке, когда тебя банят, выдают табличку(скрин приложил), и при входе на сервер такую же табличку давало??