SA-MP Forums Archive
Modular Programming Help y_hooks - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Modular Programming Help y_hooks (/showthread.php?tid=675316)



Modular Programming Help y_hooks - kloning1 - 09.05.2020

Hi, everyone, im a newbie scripting, i wanna learn to using a modular programming.
first, im learn to convert a example login register from BlueG
BlueG Example Script Cache

i got error like this
Code:
core/player/core.pwn(3) : error 010: invalid function or declaration
core/player/core.pwn(6) : error 010: invalid function or declaration
core/player/core.pwn(8) : error 021: symbol already defined: "GetPlayerName"
core/player/core.pwn(11) : error 021: symbol already defined: "mysql_format"
core/player/core.pwn(13) : error 010: invalid function or declaration
core/player/core.pwn(16) : error 010: invalid function or declaration
... and much more like invalid function or declaration
code at core/player/core.pwn
Code:
#include <YSI\y_hooks>

hook OnPlayerConnect(playerid) { // this is line 3
    g_RaceCheck[playerid]++;
    static const empty_data[E_PLAYER_DATA];
    pinfo[playerid] = empty_data; // line 6

    GetPlayerName(playerid, pinfo[playerid][pName], MAX_PLAYER_NAME); // 8

    new query[110];
    mysql_format(g_SQL, query, sizeof query, "SELECT `id`, `username`, `password`, `salt` FROM `players` WHERE `username` = '%e' LIMIT 1", pinfo[playerid][pName]); // line 11
    mysql_tquery(g_SQL, query, "OnPlayerDataCheck", "dd", playerid, g_RaceCheck[playerid]);
    return 1; // line 13
}

hook OnPlayerDisconnect(playerid, reason) { // 16
    g_RaceCheck[playerid]++;
    OnPlayerDataSave(playerid, reason);

    if(cache_is_valid(pinfo[playerid][CacheID]) {
        cache_delete(pinfo[playerid][CacheID]);
        pinfo[playerid][CacheID] = MYSQL_INVALID_CACHE;
    }
    if(pinfo[playerid][pLoginTimer]) {
        KillTimer(pinfo[playerid][pLoginTimer]);
        pinfo[playerid][pLoginTimer] = 0;
    }
    pinfo[playerid][pIsLogged] = false;
    return 1;
}
so, the question.
1. why i got a error, how to fix this error.
2. what difference if am using a \ or / on #include "core\player\core.pwn" or ... "core/player/core.pwn"


Re: Modular Programming Help y_hooks - Calisthenics - 09.05.2020

1. Can you post the main file that includes core.pwn? What version of YSI?
2. https://github.com/pawn-lang/compile...File-Inclusion


Re: Modular Programming Help y_hooks - kloning1 - 09.05.2020

Quote:
Originally Posted by Calisthenics
View Post
1. Can you post the main file that includes core.pwn? What version of YSI?
2. https://github.com/pawn-lang/compile...File-Inclusion
core/player.pwn
Code:
#include "core/player/player.pwn"
at main.pwn (gamemodes)
Code:
#include <a_samp>
#incluee <a_mysql>

#include "core/player.pwn"

main() {}
Im using YSI 5.1 without sampctl

modular
Code:
 gamemodes
main.pwn
   - core
     player.pwn
      - player
        core.pwn
I just added it to try to compile it


Re: Modular Programming Help y_hooks - Calisthenics - 09.05.2020

For YSI 5:
pawn Code:
#include <YSI_Coding\y_hooks>
I use \ for path name and / for file name
pawn Code:
#include "modules\server/database.pwn"
#include "modules\server/log.pwn"
#include "modules\server/settings.pwn"



Re: Modular Programming Help y_hooks - kloning1 - 09.05.2020

Quote:
Originally Posted by Calisthenics
View Post
For YSI 5:
pawn Code:
#include <YSI_Coding\y_hooks>
I use \ for path name and / for file name
pawn Code:
#include "modules\server/database.pwn"
#include "modules\server/log.pwn"
#include "modules\server/settings.pwn"
Where i need add this
pawn Code:
#include <YSI_Coding\y_hooks>
on a core at core\player/core.pwn or core/player.pwn


Re: Modular Programming Help y_hooks - Calisthenics - 09.05.2020

Depends how you include the files, it can complain about files with same name (includes core.pwn only once and ignores other files with same name).

pawn Code:
#include "core\player/player.pwn"
Quote:
Originally Posted by kloning1
View Post
Where i need add this
pawn Code:
#include <YSI_Coding\y_hooks>
on a core at core\player/core.pwn or core/player.pwn
In the file where you use y_hooks (core\player/core.pwn)