[HELP] y_ini register dialog error - path
#1

Quote:

#include <YSI\y_ini>

Quote:

public OnPlayerConnect(playerid)
{
if(fexist(UserPath(playerid)))
{
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_WHITE" Type your password below to login.","Login","Quit");
}
else
{
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,""COL_WHITE"Registering...",""C OL_WHITE"Type your password below to register a new account.","Register","Quit");
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
return 1;
}

When i try to compile this i get this error:
Quote:

D:\Server\samp037_svr_R2-1-1_win32\gamemodes\Untitled.pwn(136) : error 017: undefined symbol "UserPath"
D:\Server\samp037_svr_R2-1-1_win32\gamemodes\Untitled.pwn(13 : error 017: undefined symbol "UserPath"
D:\Server\samp037_svr_R2-1-1_win32\gamemodes\Untitled.pwn(139) : error 017: undefined symbol "DIALOG_LOGIN"
D:\Server\samp037_svr_R2-1-1_win32\gamemodes\Untitled.pwn(143) : error 017: undefined symbol "DIALOG_REGISTER"

That can be compiled, but without the previous:
Quote:

// Register system //

#define DIALOG_REGISTER 1
#define DIALOG_LOGIN 2
#define DIALOG_SUCCESS_1 3
#define DIALOG_SUCCESS_2 4

#define PATH "/users/%s.ini"

enum pInfo
{
pPass,
pCash,
pAdmin,
pKills,
pDeaths
}
new PlayerInfo[MAX_PLAYERS][pInfo];

forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
INI_Int("Password",PlayerInfo[playerid][pPass]);
INI_Int("Cash",PlayerInfo[playerid][pCash]);
INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
INI_Int("Kills",PlayerInfo[playerid][pKills]);
INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
return 1;
}

stock UserPath(playerid)
{
new string[128],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playernam e));
format(string,sizeof(string),PATH,playername);
return string;
}

/*Credits to Dracoblue*/
stock udb_hash(buf[]) {
new length=strlen(buf);
new s1 = 1;
new s2 = 0;
new n;
for (n=0; n<length; n++)
{
s1 = (s1 + buf[n]) % 65521;
s2 = (s2 + s1) % 65521;
}
return (s2 << 16) + s1;
}



// Register system # y_ini //

Colors define:
Quote:

// Colors define //

#define COL_WHITE "{FFFFFF}"
#define COL_RED "{F81414}"
#define COL_GREEN "{00FF22}"
#define COL_LIGHTBLUE "{00CED1}"

// Colors define //

Reply
#2

Don't use #define for DIALOG ID to avoid ID collusion,
instead, I suggest that you use
PHP код:
enum {
    
DIALOG_REGISTER,
    
DIALOG_LOGIN ,
    
DIALOG_SUCCESS_1
    
DIALOG_SUCCESS_2

you typed this
PHP код:
stock UserPath(playerid)
{
new 
string[128],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playernam e));
format(string,sizeof(string),PATH,playername);
return 
string;

*please remove that and change it to
PHP код:
UserPath(playerid)
{
new 
string[128],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playername));
format(string,sizeof(string),PATH,playername);
return 
string;

also change this
PHP код:
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra true, .extra playerid); 
to this
PHP код:
INI_ParseFile(UserPath(playerid), "LoadUser_data", .bExtra true, .extra playerid); 
finally if you want to set a tag to the data-holding file use this

PHP код:
INI_SetTag(File"data"): 
Reply
#3

Quote:
Originally Posted by Eoussama
Посмотреть сообщение
Don't use #define for DIALOG ID to avoid ID collusion,
instead, I suggest that you use
PHP код:
enum {
    
DIALOG_REGISTER,
    
DIALOG_LOGIN ,
    
DIALOG_SUCCESS_1
    
DIALOG_SUCCESS_2

you typed this
PHP код:
stock UserPath(playerid)
{
new 
string[128],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playernam e));
format(string,sizeof(string),PATH,playername);
return 
string;

*please remove that and change it to
PHP код:
UserPath(playerid)
{
new 
string[128],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playername));
format(string,sizeof(string),PATH,playername);
return 
string;

also change this
PHP код:
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra true, .extra playerid); 
to this
PHP код:
INI_ParseFile(UserPath(playerid), "LoadUser_data", .bExtra true, .extra playerid); 
finally if you want to set a tag to the data-holding file use this

PHP код:
INI_SetTag(File"data"): 
You're wrong, there's nothing to do with UserPath, like there's no difference if you use stock keyword. It won't change anything if you'll remove it, stock keyword just tells the compiler to ignore the unused function warnings, but the function stays the same. Stock keyword is not needed here though.

Also you were wrong with INI_ParseFile, you can't replace player's id with "data", it won't work.

By the way, are you sure you've got the things defined on the top of the gamemode? You could've forgot to define them.
Reply
#4

Quote:

#define DIALOG_REGISTER 1
#define DIALOG_LOGIN 2
#define DIALOG_SUCCESS_1 3
#define DIALOG_SUCCESS_2 4

#define PATH "/users/%s.ini"


// Colors define //

#define COL_WHITE "{FFFFFF}"
#define COL_RED "{F81414}"
#define COL_GREEN "{00FF22}"
#define COL_LIGHTBLUE "{00CED1}"

// Colors define //

Thats all my defines. It is my first "script" on my gamemode, nothing else. I don't know why it could be wrong.
Reply
#5

Quote:
Originally Posted by Valleh
Посмотреть сообщение
Thats all my defines. It is my first "script" on my gamemode, nothing else. I don't know why it could be wrong.
Do you have UserPath function created? The code seems to be OK, are you sure you are compiling the correct gamemode? Like sometimes I compile something and I realize I opened a wrong file. Can you show the whole gamemode?
Reply
#6

The gamemode:
Quote:

// INCLUDES //

#include <a_samp>
#include <a_mysql>
#include <streamer>
#include <crashdetect>
#include <sscanf2>
#include <zcmd>
#include <YSI\y_ini>
#include <YSI\y_timers>
#include <foreach>

#pragma tabsize 0 // lose identation error


// ~~~~ //

main( ) { }

// Connection //

#undef MAX_PLAYERS
#define MAX_PLAYERS 15
#if defined FILTERSCRIPT

// Connection //


// Colors Define //

#define COL_WHITE "{FFFFFF}"
#define COL_RED "{F81414}"
#define COL_GREEN "{00FF22}"
#define COL_LIGHTBLUE "{00CED1}"

// Colors Define //

// Register system //

#define DIALOG_REGISTER 1
#define DIALOG_LOGIN 2
#define DIALOG_SUCCESS_1 3
#define DIALOG_SUCCESS_2 4

#define PATH "/Users/%s.ini"

enum pInfo
{
pPass,
pCash,
pAdmin,
pKills,
pDeaths
}
new PlayerInfo[MAX_PLAYERS][pInfo];

forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
INI_Int("Password",PlayerInfo[playerid][pPass]);
INI_Int("Cash",PlayerInfo[playerid][pCash]);
INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
INI_Int("Kills",PlayerInfo[playerid][pKills]);
INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
return 1;
}

stock UserPath(playerid)
{
new string[128],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playernam e));
format(string,sizeof(string),PATH,playername);
return string;
}

/*Credits to Dracoblue*/
stock udb_hash(buf[]) {
new length=strlen(buf);
new s1 = 1;
new s2 = 0;
new n;
for (n=0; n<length; n++)
{
s1 = (s1 + buf[n]) % 65521;
s2 = (s2 + s1) % 65521;
}
return (s2 << 16) + s1;
}

// Register system # y_ini //

public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Successfull!");
print("--------------------------------------\n");
return 1;
}

public OnFilterScriptExit()
{
return 1;
}

#else


#endif

public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("TEST VLH");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}

public OnGameModeExit()
{
return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
SpawnPlayer(playerid); //Here skip this buttons
SetPlayerPos(playerid, 1683.3362,-2326.4019,13.5469);
SetPlayerFacingAngle(playerid, 357.8167);
return 1;
}

public OnPlayerConnect(playerid)
{
if(fexist(UserPath(playerid)))
{
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_WHITE" Type your password below to login.","Login","Quit");
}
else
{
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,""COL_WHITE"Registering...",""C OL_WHITE"Type your password below to register a new account.","Register","Quit");
}
return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
return 1;
}

public OnPlayerSpawn(playerid)
{
return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}

public OnVehicleSpawn(vehicleid)
{
return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}

public OnPlayerText(playerid, text[])
{
return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
// Do something here
return 1;
}
return 0;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
return 1;
}

public OnRconCommand(cmd[])
{
return 1;
}

public OnPlayerRequestSpawn(playerid)
{
SetPlayerSkin(playerid,0); //Here when someone spawn, it will give him random skin from 0 to 305
return 1;
}

public OnObjectMoved(objectid)
{
return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}

public OnVehicleMod(playerid, vehicleid, componentid)
{
return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
return 1;
}

public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}

public OnPlayerExitedMenu(playerid)
{
return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}

public OnPlayerUpdate(playerid)
{
return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
return 1;
}


public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}

New warnings: I don't know why happend this.. just reopened tried to copile and got 2 more errors:
Quote:

D:\Server\samp037_svr_R2-1-1_win32\gamemodes\Untitled.pwn(133) : error 017: undefined symbol "UserPath"
D:\Server\samp037_svr_R2-1-1_win32\gamemodes\Untitled.pwn(135) : error 017: undefined symbol "UserPath"
D:\Server\samp037_svr_R2-1-1_win32\gamemodes\Untitled.pwn(136) : error 017: undefined symbol "DIALOG_LOGIN"
D:\Server\samp037_svr_R2-1-1_win32\gamemodes\Untitled.pwn(136) : error 017: undefined symbol "COL_WHITE"
D:\Server\samp037_svr_R2-1-1_win32\gamemodes\Untitled.pwn(136) : warning 215: expression has no effect
D:\Server\samp037_svr_R2-1-1_win32\gamemodes\Untitled.pwn(136) : error 001: expected token: "-string end-", but found "-identifier-"
D:\Server\samp037_svr_R2-1-1_win32\gamemodes\Untitled.pwn(136) : fatal error 107: too many error messages on one line

Reply
#7

Quote:
Originally Posted by GoldenLion
Посмотреть сообщение
Do you have UserPath function created? The code seems to be OK, are you sure you are compiling the correct gamemode? Like sometimes I compile something and I realize I opened a wrong file. Can you show the whole gamemode?
well I had the same problem when I was making a login system,
and It worked once I changed those things
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)