Jump to content
  • Chmurka
  • Boróweczka
  • Jabłuszko
  • Limonka
  • Czekoladka
  • Węgielek
Sign in to follow this  
whnl

[Rozwiązane] błąd przy kompilacji error 010: invalid function or declaration

Recommended Posts

 

Spoiler

 

Cytat

 





#pragma semicolon 1
#include <SourceMod>
#include <SteamWorks>

Handle DB = INVALID_HANDLE;

int ServerPort = 0;
int ServerID = 0;
int PlayerBuy[66];
int PlayerBuyCache[66];

char TextSMS[64];
char ServerIP[64];
char ShopURL[64];

public Plugin myinfo =
{
    name = "Online Shop [v1.3.5]",
    author = "Sloenthran",
    description = "Online Shop",
    url = "sloenthran.pl"
};

public void OnPluginStart()
{
    char Error[256];
    char Query[256];

    CreateConVar("onlineshop_url", "svgo.pl/sklepcs", "Online Shop WEB URL");
    
    AutoExecConfig(true, "OnlineShop");
    
    ServerPort = GetConVarInt(FindConVar("hostport"));
    
     GetConVarString(FindConVar("ip"), ServerIP, sizeof(ServerIP));
     GetConVarString(FindConVar("onlineshop_url"), ShopURL, sizeof(ShopURL));
    
    RegConsoleCmd("sm_sklepsms", GlobalMenu);
    RegConsoleCmd("say", CheckSay);
    RegConsoleCmd("team_say", CheckSay);
    
    DB = SQL_Connect("OnlineShop", true, Error, sizeof(Error));
    
    if(DB == INVALID_HANDLE)
    {
        LogToFile("addons/sourcemod/logs/OnlineShop.txt", "[MySQL OnPluginStart #1]: %s", Error);
        SetFailState("Not connect to MySQL server!");
    }
    
    Format(Query, sizeof(Query), "SELECT `id` FROM `servers` WHERE `ip`='%s' AND `port`='%i' LIMIT 1", ServerIP, ServerPort);
    
    Handle QueryDB = SQL_Query(DB, Query);
    
    if(QueryDB != INVALID_HANDLE)
    {
        if(SQL_FetchRow(QueryDB))
        {
            ServerID = SQL_FetchInt(QueryDB, 0);
        }
    } else { SQL_GetError(DB, Error, sizeof(Error)); LogToFile("addons/sourcemod/logs/OnlineShop.txt", "[MySQL OnPluginStart #2] %s", Error); }
        
    Format(Query, sizeof(Query), "SELECT `value` FROM `settings` WHERE `name`='text_sms' LIMIT 1");
    
    QueryDB = SQL_Query(DB, Query);
    
    if(QueryDB != INVALID_HANDLE)
    {
        if(SQL_FetchRow(QueryDB))
        {
            SQL_FetchString(QueryDB, 0, TextSMS, sizeof(TextSMS));
        }
    } else { SQL_GetError(DB, Error, sizeof(Error)); LogToFile("addons/sourcemod/logs/OnlineShop.txt", "[MySQL OnPluginStart #3] %s", Error); }
}

public void OnClientPutInServer(User)
{
    PlayerBuy[User] = false;
    PlayerBuyCache[User] = 0;
    GiveFlag(User);
}

public void GiveFlag(int User)
{
    char Error[256];
    
    if(IsClientInGame(User))
    {
        char SID[64];
        char Query[256];
        
        GetClientAuthId(User, AuthId_Engine, SID, sizeof(SID));
        
        Format(Query, sizeof(Query), "SELECT `flags` FROM `premium` WHERE `server`='%i' AND `nick`='%s'", ServerID, SID); Handle QueryDB = SQL_Query(DB, Query);
            
        if(QueryDB != INVALID_HANDLE)
        {
            if(SQL_FetchRow(QueryDB))
            {
                char Flags[64];
                
                SQL_FetchString(QueryDB, 0, Flags, sizeof(Flags));
                
                int FlagsInt = ReadFlagString(Flags);
                
                SetUserFlagBits(User, FlagsInt);    
            }
        }
    } else { SQL_GetError(DB, Error, sizeof(Error)); LogToFile("addons/sourcemod/logs/OnlineShop.txt", "[MySQL GiveFlag] %s", Error); }
}

/////////////////////////////////////////////////// Menu //////////////////////////////////////////////////////

public Action GlobalMenu(int User, int Arg)
{
    Handle OpenMenu = CreateMenu(HandleGlobalMenu);
    SetMenuTitle(OpenMenu, "*Online Shop by Sloenthran*");
    AddMenuItem(OpenMenu, "1", "Zakup usługę");
    AddMenuItem(OpenMenu, "2", "Moje usługi");
    SetMenuPagination(OpenMenu, 7);
    SetMenuExitButton(OpenMenu, true);
    DisplayMenu(OpenMenu, User, 250);
}

public int HandleGlobalMenu(Handle MenuID, MenuAction Data, int User, int Info)
{
    if(Data == MenuAction_Select)
    {
        char Item[16];

        GetMenuItem(MenuID, Info, Item, sizeof(Item));
        
        if(StrEqual(Item, "1")) { BuyMenu(User, 0); }
        else if(StrEqual(Item, "2")) { MyServiceMenu(User, 0); }
    } else if(Data == MenuAction_End) { CloseHandle(MenuID); }
}

////////////////////////////////////////////////// End Menu ///////////////////////////////////////////////////

////////////////////////////////////////////////// Buy Menu ///////////////////////////////////////////////////

public void BuyMenu(int User, int Arg)
{
    char Query[256];
    
    Handle OpenMenu = CreateMenu(BuyMenuHandle);
    
    SetMenuTitle(OpenMenu, "*Online Shop by Sloenthran*\nWybierz usługę");
    
    Format(Query, sizeof(Query), "SELECT `id`, `name` FROM `buy` WHERE `server`='%i' OR `server`='0'", ServerID);
    
    Handle QueryDB = SQL_Query(DB, Query);
    
    if(QueryDB != INVALID_HANDLE)
    {
        while(SQL_FetchRow(QueryDB))
        {
            char Name[64];
            char PremiumName[128];
            char PremiumID[16];
            
            int ID = SQL_FetchInt(QueryDB, 0);
            
            SQL_FetchString(QueryDB, 1, Name, sizeof(Name));
            
            Format(PremiumName, sizeof(PremiumName), "%s", Name);
            Format(PremiumID, sizeof(PremiumID), "%i", ID);
            
            AddMenuItem(OpenMenu, PremiumID, PremiumName);
        }
    } else { char Error[256]; SQL_GetError(DB, Error, sizeof(Error)); LogToFile("addons/sourcemod/logs/OnlineShop.txt", "[MySQL BuyMenu] %s", Error); }

    AddMenuItem(OpenMenu, "back", "Powrót");
    SetMenuPagination(OpenMenu, 7);
    SetMenuExitButton(OpenMenu, true);
    DisplayMenu(OpenMenu, User, 250);
}

public int BuyMenuHandle(Handle MenuID, MenuAction Data, int User, int Info)
{
    if(Data == MenuAction_Select)
    {
        char Item[16];

        GetMenuItem(MenuID, Info, Item, sizeof(Item));
        
        if(StrEqual(Item, "back"))
        {
            GlobalMenu(User, 0);
        }
        else
        {
            char Query[256];
            
            Handle OpenMenu = CreateMenu(DaysMenuHandle);
    
            SetMenuTitle(OpenMenu, "*Online Shop by Sloenthran*\nWybierz ilość dni");
            
            Format(Query, sizeof(Query), "SELECT `id`, `days` FROM `service` WHERE `buy_id`='%s'", Item); Handle QueryDB = SQL_Query(DB, Query);
            
            if(QueryDB != INVALID_HANDLE)
            {
                while(SQL_FetchRow(QueryDB))
                {    
                    char PremiumName[128];
                    char PremiumID[16];
            
                    int ID = SQL_FetchInt(QueryDB, 0);
                    int Days = SQL_FetchInt(QueryDB, 1);
            
                    Format(PremiumName, sizeof(PremiumName), "%i", Days);
                    Format(PremiumID, sizeof(PremiumID), "%i", ID);
            
                    AddMenuItem(OpenMenu, PremiumID, PremiumName);
                }
            } else { char Error[256]; SQL_GetError(DB, Error, sizeof(Error)); LogToFile("addons/sourcemod/logs/OnlineShop.txt", "[MySQL BuyMenuHandle] %s", Error); }
            
            SetMenuPagination(OpenMenu, 7);
            SetMenuExitButton(OpenMenu, true);
            AddMenuItem(OpenMenu, "back", "Powrót");
            DisplayMenu(OpenMenu, User, 250);
        }
    } else if(Data == MenuAction_End) { CloseHandle(MenuID); }
}

public int DaysMenuHandle(Handle MenuID, MenuAction Data, int User, int Info)
{
    if(Data == MenuAction_Select)
    {
        char Item[16];

        GetMenuItem(MenuID, Info, Item, sizeof(Item));
        
        if(StrEqual(Item, "back"))
        {
            BuyMenu(User, 0);
        }
        else
        {
            char Error[256];
            char Query[256];
            
            PlayerBuyCache[User] = StringToInt(Item);
            
            Format(Query, sizeof(Query), "SELECT `price_id`, `days`, `buy_id` FROM `service` WHERE `id`='%s'", Item); Handle QueryDB = SQL_Query(DB, Query);
            
            if(QueryDB != INVALID_HANDLE)
            {
                if(SQL_FetchRow(QueryDB))
                {
                    char Name[64];
                    
                    int Price = SQL_FetchInt(QueryDB, 0); int Days = SQL_FetchInt(QueryDB, 1); int BuyID = SQL_FetchInt(QueryDB, 2);
            
                    SQL_FetchString(QueryDB, 1, Name, sizeof(Name));
                    
                    Format(Query, sizeof(Query), "SELECT `vat`, `number` FROM `price` WHERE `id`='%i'", Price); QueryDB = SQL_Query(DB, Query);
            
                    if(QueryDB != INVALID_HANDLE)
                    {
                        if(SQL_FetchRow(QueryDB))
                        {
                            char VAT[16];
                    
                            SQL_FetchString(QueryDB, 0, VAT, sizeof(VAT));
                    
                            int Number = SQL_FetchInt(QueryDB, 1);
                            
                            Format(Query, sizeof(Query), "SELECT `name` FROM `buy` WHERE `id`='%i'", BuyID); QueryDB = SQL_Query(DB, Query);
                            
                            if(QueryDB != INVALID_HANDLE)
                            {
                                if(SQL_FetchRow(QueryDB))
                                {
                                    SQL_FetchString(QueryDB, 0, Name, sizeof(Name));
                                    
                                    Format(Query, sizeof(Query), "*Online Shop by Sloenthran*\n Aby zakupić %s [%i dni] wyślij SMS-a o treści %s na numer %i\nNastępnie naciśnij na OK i podaj kod zwrotny w wiadomości na czacie.\nCałkowity koszt SMS-a wynosi %s", Name, Days, TextSMS, Number, VAT);
                            
                                    Handle OpenMenu = CreateMenu(ConfirmMenuHandle);
                                    SetMenuTitle(OpenMenu, Query);
                                    AddMenuItem(OpenMenu, "ok", "OK");
                                    SetMenuPagination(OpenMenu, 7);
                                    SetMenuExitButton(OpenMenu, true);
                                    AddMenuItem(OpenMenu, "back", "Powrót");
                                    DisplayMenu(OpenMenu, User, 250);
                                }
                            } else { SQL_GetError(DB, Error, sizeof(Error)); LogToFile("addons/sourcemod/logs/OnlineShop.txt", "[MySQL DaysMenuHandle #1] %s", Error); }
                        }
                    } else { SQL_GetError(DB, Error, sizeof(Error)); LogToFile("addons/sourcemod/logs/OnlineShop.txt", "[MySQL  DaysMenuHandle #2] %s", Error); }
                }
            } else { SQL_GetError(DB, Error, sizeof(Error)); LogToFile("addons/sourcemod/logs/OnlineShop.txt", "[MySQL  DaysMenuHandle #3] %s", Error); }
        }
    } else if(Data == MenuAction_End) { CloseHandle(MenuID); }
}

public int ConfirmMenuHandle(Handle MenuID, MenuAction Data, int User, int Info)
{
    if(Data == MenuAction_Select)
    {
        char Item[16];

        GetMenuItem(MenuID, Info, Item, sizeof(Item));
        
        if(StrEqual(Item, "ok")) { PlayerBuy[User] = true; }
        else { BuyMenu(User, 0); }
    } else if(Data == MenuAction_End) { CloseHandle(MenuID); }
}

////////////////////////////////////////////////// End Buy Menu ///////////////////////////////////////////////

////////////////////////////////////////////////// My Services ////////////////////////////////////////////////

public Action MyServiceMenu(int User, int Arg)
{
    char SID[64];
    char Error[256];
    char Query[256];
    char CharID[16];
                
    GetClientAuthId(User, AuthId_Engine, SID, sizeof(SID));
    
    Format(Query, sizeof(Query), "SELECT `time`, `premium_id` FROM `premium_cache` WHERE `nick`='%s' AND `server`='%i'", SID, ServerID); Handle QueryDB = SQL_Query(DB, Query);
    
    if(QueryDB != INVALID_HANDLE)
    {
        Handle OpenMenu = CreateMenu(HandleMyServiceMenu);
        
        while(SQL_FetchRow(QueryDB))
        {
            int Time = SQL_FetchInt(QueryDB, 0); int PremiumID = SQL_FetchInt(QueryDB, 1);
            
            Format(Query, sizeof(Query), "SELECT `name` FROM `buy` WHERE `id`='%i'", PremiumID); QueryDB = SQL_Query(DB, Query);
            
            if(QueryDB != INVALID_HANDLE)
            {
                while(SQL_FetchRow(QueryDB))
                {
                    char Name[128];
                    char PremiumName[256];
                
                    SQL_FetchString(QueryDB, 0, Name, sizeof(Name));
                
                    int Diff = Time - GetTime();
                    int Days = Diff / 86400;
                
                    Diff = Diff - (Days * 86400);
                
                    int Hours = Diff / 3600;
                
                    Diff = Diff - (Hours * 3600);
                
                    int Minutes = Diff / 60;
                    int Seconds = Diff - (Minutes * 60);
                    
                    if(Days > 10000) { Format(PremiumName, sizeof(PremiumName), "%s [Na zawsze]", Name); }
                    else { Format(PremiumName, sizeof(PremiumName), "%s [%i dni, %i godzin, %i minut, %i sekund]", Name, Days, Hours, Minutes, Seconds); }
                    
                    Format(CharID, sizeof(CharID), "%i", PremiumID);
                
                    AddMenuItem(OpenMenu, CharID, PremiumName);
                }
            } else { SQL_GetError(DB, Error, sizeof(Error)); LogToFile("addons/sourcemod/logs/OnlineShop.txt", "[MySQL] %s", Error); }
        }
        
        SetMenuPagination(OpenMenu, 7);
        SetMenuExitButton(OpenMenu, true);
        AddMenuItem(OpenMenu, "back", "Powrót");
        DisplayMenu(OpenMenu, User, 250);
    } else { SQL_GetError(DB, Error, sizeof(Error)); LogToFile("addons/sourcemod/logs/OnlineShop.txt", "[MySQL] %s", Error); }
}

public int HandleMyServiceMenu(Handle MenuID, MenuAction Data, int User, int Info)
{
    if(Data == MenuAction_Select)
    {
        char Item[16];

        GetMenuItem(MenuID, Info, Item, sizeof(Item));
        
        if(StrEqual(Item, "back"))
        {
            GlobalMenu(User, 0);
        }
        else
        {
            char Query[256];
            
            Handle OpenMenu = CreateMenu(DaysMenuHandle);
    
            SetMenuTitle(OpenMenu, "*Online Shop by Sloenthran*\nWybierz ilość dni");
            
            Format(Query, sizeof(Query), "SELECT `id`, `days` FROM `service` WHERE `buy_id`='%s'", Item); Handle QueryDB = SQL_Query(DB, Query);
            
            if(QueryDB != INVALID_HANDLE)
            {
                while(SQL_FetchRow(QueryDB))
                {    
                    char PremiumName[128];
                    char PremiumID[16];
            
                    int ID = SQL_FetchInt(QueryDB, 0);
                    int Days = SQL_FetchInt(QueryDB, 1);
            
                    Format(PremiumName, sizeof(PremiumName), "%i", Days);
                    Format(PremiumID, sizeof(PremiumID), "%i", ID);
            
                    AddMenuItem(OpenMenu, PremiumID, PremiumName);
                }
            } else { char Error[256]; SQL_GetError(DB, Error, sizeof(Error)); LogToFile("addons/sourcemod/logs/OnlineShop.txt", "[MySQL HandleMySerivceMenu] %s", Error); }
            
            SetMenuPagination(OpenMenu, 7);
            SetMenuExitButton(OpenMenu, true);
            AddMenuItem(OpenMenu, "back", "Powrót");
            DisplayMenu(OpenMenu, User, 250);
        }
        
    } else if(Data == MenuAction_End) { CloseHandle(MenuID); }
}

////////////////////////////////////////////////// End My Services ////////////////////////////////////////////

////////////////////////////////////////////////// Steam Works ////////////////////////////////////////////////

public Action CheckSay(User, Arg)
{    
    if(PlayerBuy[User])
    {
        char Code[32];
        char URL[256];
        char SID[64];
        char PremiumID[64];
    
        Format(PremiumID, sizeof(PremiumID), "%i", PlayerBuyCache[User]);
        
        GetCmdArgString(Code, sizeof(Code));
        GetClientAuthId(User, AuthId_Engine, SID, sizeof(SID));
        
        PlayerBuy[User] = false;
        
        Format(URL, sizeof(URL), "http://%s/index.php?pages=server_buy&sid=%s&premium=%s&serverid=%i", ShopURL, SID, PremiumID, ServerID);
        
        Handle HTTPRequest = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, URL);
        SteamWorks_SetHTTPRequestNetworkActivityTimeout(HTTPRequest, 10);
        SteamWorks_SetHTTPRequestGetOrPostParameter(HTTPRequest, "code", Code);
        SteamWorks_SetHTTPRequestHeaderValue(HTTPRequest, "Online Shop", "Sloenthran");
        SteamWorks_SetHTTPRequestContextValue(HTTPRequest, 10);
        SteamWorks_SetHTTPCallbacks(HTTPRequest, ReturnQueryHTTP);

         if (!SteamWorks_SendHTTPRequest(HTTPRequest)) { CloseHandle(HTTPRequest); LogToFile("addons/sourcemod/logs/OnlineShop.txt", "[SteamWorks] Cannot send HTTP request!"); return Plugin_Handled; }

          SteamWorks_PrioritizeHTTPRequest(HTTPRequest);
        
        return Plugin_Handled;    
    }
    return Plugin_Continue;
}

public int ReturnQueryHTTP(Handle Request, bool Fail, bool CheckSucess, EHTTPStatusCode Status, any Data)
{
    if(!CheckSucess) { LogToFile("addons/sourcemod/logs/OnlineShop.txt", "[SteamWorks] HTTP request error!"); CloseHandle(Request); return; }
    
    if(Status == k_EHTTPStatusCode200OK) {
        int BodySize;
        char BodyBuffer[10000];
        
        if(!SteamWorks_GetHTTPResponseBodySize(Request, BodySize)) { LogToFile("addons/sourcemod/logs/OnlineShop.txt", "[SteamWorks] Not get response size!"); CloseHandle(Request); return; }
        if(BodySize > 10000) { LogToFile("addons/sourcemod/logs/OnlineShop.txt", "[SteamWorks] Response size is to big!"); CloseHandle(Request); return; }
        if(!SteamWorks_GetHTTPResponseBodyData(Request, BodyBuffer, BodySize)) { LogToFile("addons/sourcemod/logs/OnlineShop.txt", "[SteamWorks] Not get response data!"); CloseHandle(Request); return; }

        char StringBreak[2][64];
        ExplodeString(BodyBuffer, "|", StringBreak, sizeof(StringBreak), sizeof(StringBreak[]));
        
        int PlayerNumber = GetMaxClients();
        
        for (int Number = 1; Number <= PlayerNumber; Number++)
        {
            if(IsClientInGame(Number))
            {
                char SID[64];
                
                GetClientAuthId(Number, AuthId_Engine, SID, sizeof(SID));
                
                if(StrEqual(SID, StringBreak[1]))
                {
                    if(StrEqual(StringBreak[0], "ok"))
                    {
                        GiveFlag(Number);
                        
                        PrintToChat(Number, "[OnlineShop] Podany przez Ciebie kod jest poprawny!");
                    }
                    else if(StrEqual(StringBreak[0], "extension")){ PrintToChat(Number, "[OnlineShop] Kod był poprawny więc ważność Twojej usługi została przedłużona!"); }
                    else { PrintToChat(Number, "[OnlineShop] Kod zwrotny, który podałeś jest błędny!"); }
                    
                    PlayerBuyCache[Number] = 0;
                    break;
                }
            }
        }
        
        CloseHandle(Request);
    } else { LogToFile("addons/sourcemod/logs/OnlineShop.txt", "[SteamWorks] Bad status code (%d)!", Status); CloseHandle(Request); return; }
}

////////////////////////////////////////////////// End Steam Works ////////////////////////////////////////////

 

wyskakuje mi błąd // online_shop.sp(1) : error 010: invalid function or declaration
jak to naprawic?

By MAGNET,

Dodałem spoiler dla poprawienia czytelności tematu

Share this post


Link to post
Share on other sites

U mnie kompiluje się bez problemu. Error wskazuje na 1linijkę i mówi nam o tym, że funkcja jest źle zdeklarowania, ale to nie możliwe. Może zrobiłeś jakąś literówkę. Pobierz od nowa najnowszego sourcemod'a i include SteamWorks.

  • Lubię to! 2

Share this post


Link to post
Share on other sites

miałem pierw problem ze steam works a nowego właśnie pobrałem na starszej wersji sm do samo ;/

Share this post


Link to post
Share on other sites

Pobrałem przed chwilą sourcemod'a https://www.sourcemod.net/downloads.php?branch=stable
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! i https://github.com/KyleSanderson/SteamWorks/tree/master/Pawn/includes
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!, przy kompilacji wyskakują tylko ostrzeżenia o złej tabulacji.

  • Lubię to! 1

Share this post


Link to post
Share on other sites

dzięki do zamknięcia dodam link do waszego forum na swoje strony za pomoc dzięki wielkie. to sp co wysłałeś udało mi się skompilować błąd musiał być w formatowaniu znaków w dokumencie.

Edited by whnl
  • Kocham to! 1

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

Nasza historia

Na początku byliśmy małą grupą internetowych znajomych, którzy stwierdzili, że potrzebne jest solidne forum, na którym znajdą się ludzie z dużą wiedzą programistyczną ukierunkowaną na CS:GO. Pomysł powstał na początku 2018 roku, a parę miesięcy później, 19 kwietnia, powstała ta strona internetowa. Jako alternatywna odpowiedź na inne tego typu miejsca, poważnie podeszliśmy do tematu, najpierw tłumacząc angielską dokumentację SourceMod'a na język polski, a potem pisząc rozległe poradniki i wypełniając forum najpotrzebniejszymi rzeczami dla właścicieli serwerów i programistów. Cała nasza Ekipa jest dumna z pracy jaką w to włożyliśmy i cieszymy się że zbierają się wokół nas zarówno ludzie znający tematy sourcepawn'a i konfiguracji, jak i również nowe twarze w tym "biznesie", którym z chęcią niesiemy wiedzę oraz pomoc w rozwiązywaniu problemów.

Największe modyfikacje serwerowe

×
×
  • Create New...