Skripta koju koristim: Od nule, ali to ja se Äim tako da sam uzeo neki tutorijal za Reg/Log system, i imam nekih errora
Detaljan opis problema: Errore koje dobivam
Dio skripte: Dobro to sredim. I sada mi izbacuje slijedeće errore
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(32) : error 029: invalid expression, assumed zero
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(32) : warning 215: expression has no effect
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(32) : error 001: expected token: ";", but found "]"
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(32) : error 029: invalid expression, assumed zero
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(32) : fatal error 107: too many error messages on one line
29 forward LoadUser_data(playerid,name[],value[]);
30 public LoadUser_data(playerid,name[],value[])
31 {
32 INI_Int("Lozinka",PlayerInfo[playerid][pLozinka]);
33 INI_Int("Novac",PlayerInfo[playerid][pNovac]);
34 INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
35 INI_Int("Ubojstva",PlayerInfo[playerid][pUbojstva]);
36 INI_Int("Smrti",PlayerInfo[playerid][pSmrti]);
37 return 1;
38 }
Neke slike/video za lakse dobivanje pomoci(neobavezno):
INI_String ti ide na lozinku, ne INI_Int..
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(32) : error 017: undefined symbol "INI_String"
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(32) : warning 215: expression has no effect
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(32) : error 001: expected token: ";", but found "]"
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(32) : error 029: invalid expression, assumed zero
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(32) : fatal error 107: too many error messages on one line
Evo sada errora..
evo cijela skripta..
//#includovi
#include <a_samp>
#include <YSI\y_ini>
#include <YSI\y_commands>
//#definicije
#define PlayerInfo
#define DIALOG_REGISTRACIJA 1
#define DIALOG_LOGIN 2
#define DIALOG_USPJESNOA 3
#define DIALOG_USPJESNOB 4
#define PATH "/Korisnici/%s.ini"
//Regyster i Login System
enum pInfo
{
pLozinka,
pNovac,
pAdmin,
pUbojstva,
pSmrti
}
forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
INI_String("Lozinka",PlayerInfo[playerid][pLozinka]);
INI_Int("Novac",PlayerInfo[playerid][pNovac]);
INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
INI_Int("Ubojstva",PlayerInfo[playerid][pUbojstva]);
INI_Int("Smrti",PlayerInfo[playerid][pSmrti]);
return 1;
}
stock UserPath(playerid)
{
new string[32],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playername));
format(string,sizeof(string),PATH,playername);
return string;
}
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;
}
new PlayerInfo[MAX_PLAYERS][pInfo];
public OnPlayerConnect(playerid)
{
if(fexist(UserPath(playerid)))
{
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"{FF9000}Login","{FF9000}Upisi svoju lozinku za ulazak u igru.","Login","Odustani");
}
else
{
ShowPlayerDialog(playerid, DIALOG_REGISTRACIJA, DIALOG_STYLE_INPUT,"{FF9000}Registracija",{FF9000}Upisi lozinku koju ces koristiti za pristup accountu.","Registracija","Odustani");
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
INI_WriteInt(File,"Novac",GetPlayerMoney(playerid));
INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
INI_WriteInt(File,"Ubojstva",PlayerInfo[playerid][pUbojstva]);
INI_WriteInt(File,"Smrti",PlayerInfo[playerid][pSmrti]);
INI_Close(File);
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
PlayerInfo[killerid][pUbojstva]++;
PlayerInfo[playerid][pSmrti]++;
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch( dialogid )
{
case DIALOG_REGISTRACIJA:
{
if (!response) return Kick(playerid);
if(response)
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTRACIJA, DIALOG_STYLE_INPUT, "{FF9000}Registracija","{FF9000}[!]Upisao si pogresnu lozinku.\n"{FF9000}Upisi lozinku koju ces koristiti za pristup accountu.","Registracija","Odustani");
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
INI_WriteInt(File,"Lozinka",udb_hash(inputtext));
INI_WriteInt(File,"Novac",0);
INI_WriteInt(File,"Admin",0);
INI_WriteInt(File,"Ubojstva",0);
INI_WriteInt(File,"Smrti",0);
INI_Close(File);
SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
ShowPlayerDialog(playerid, DIALOG_USPJESNOA, DIALOG_STYLE_MSGBOX,"{FF9000}Registracija uspjesna!","{FF9000}Registracija uspjesna, otidite relog da se vas account spremi!","Uredu","");
}
}
case DIALOG_LOGIN:
{
if ( !response ) return Kick ( playerid );
if( response )
{
if(udb_hash(inputtext) == PlayerInfo[playerid][pPass])
{
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
GivePlayerMoney(playerid, PlayerInfo[playerid][pNovac]);
ShowPlayerDialog(playerid, DIALOG_USPJESNOB, DIALOG_STYLE_MSGBOX,"{FF9000}Uspjesno ste se logirali u vas account!","Uredu","");
}
else
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"{FF9000}Login","{FF9000}[!]Upisao si pogresnu lozinku..\n"{FF9000}Upisi svoju lozinku za pristup accountu.","Login","Odustani");
}
return 1;
}
}
}
return 1;
}
Citat: Drobnjak poslato Septembar 04, 2014, 13:53:08 POSLE PODNE
INI_String ti ide na lozinku, ne INI_Int..
Ne ide string, ide integer jer koristi udb_hash on sve pretvara u brojcane podatke..
Gdje ti je greska?
Ti si stavio #define PlayerInfo, ne, ne trebas tako nego ovako:
new PlayerInfo[MAX_PLAYERS][pInfo];
Citat: Lenon poslato Septembar 04, 2014, 14:08:47 POSLE PODNE
new PlayerInfo[MAX_PLAYERS][pInfo];
Gdje ovo da stavim ? Jer ako stavim izmeÄ'u //definicija i //Reg/Log systema onda mi izbacuje ove errore
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(17) : error 017: undefined symbol "pInfo"
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(17) : error 009: invalid array size (negative, zero or out of bounds)
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(34) : error 017: undefined symbol "INI_String"
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(60) : error 021: symbol already defined: "PlayerInfo"
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(120) : error 017: undefined symbol "FF9000"
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(120) : error 017: undefined symbol "Upisi"
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(120) : error 017: undefined symbol "lozinku"
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(120) : fatal error 107: too many error messages on one line
Ako ga stavim poslije enum izbacuje slijedeće, ali u redu je ovo new PlayerInfo.. imam slijedeće errore kada stavim to
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(31) : error 017: undefined symbol "INI_String"
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(57) : error 021: symbol already defined: "PlayerInfo"
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(117) : error 017: undefined symbol "FF9000"
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(117) : error 017: undefined symbol "Upisi"
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(117) : error 017: undefined symbol "lozinku"
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(117) : fatal error 107: too many error messages on one line
Evo ispravio sam ti sve:
//#includovi
#include <a_samp>
#include <YSI\y_ini>
#include <YSI\y_commands>
//#definicije
#define DIALOG_REGISTRACIJA 1
#define DIALOG_LOGIN 2
#define DIALOG_USPJESNOA 3
#define DIALOG_USPJESNOB 4
#define PATH "/Korisnici/%s.ini"
//Regyster i Login System
enum pInfo
{
pLozinka,
pNovac,
pAdmin,
pUbojstva,
pSmrti
}
new PlayerInfo[MAX_PLAYERS][pInfo];
forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
INI_Int("Lozinka",PlayerInfo[playerid][pLozinka]);
INI_Int("Novac",PlayerInfo[playerid][pNovac]);
INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
INI_Int("Ubojstva",PlayerInfo[playerid][pUbojstva]);
INI_Int("Smrti",PlayerInfo[playerid][pSmrti]);
return 1;
}
stock UserPath(playerid)
{
new string[32],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playername));
format(string,sizeof(string),PATH,playername);
return string;
}
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;
}
public OnPlayerConnect(playerid)
{
if(fexist(UserPath(playerid)))
{
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"{FF9000}Login","{FF9000}Upisi svoju lozinku za ulazak u igru.","Login","Odustani");
}
else
{
ShowPlayerDialog(playerid, DIALOG_REGISTRACIJA, DIALOG_STYLE_INPUT,"{FF9000}Registracija","{FF9000}Upisi lozinku koju ces koristiti za pristup accountu.","Registracija","Odustani");
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
INI_WriteInt(File,"Novac",GetPlayerMoney(playerid));
INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
INI_WriteInt(File,"Ubojstva",PlayerInfo[playerid][pUbojstva]);
INI_WriteInt(File,"Smrti",PlayerInfo[playerid][pSmrti]);
INI_Close(File);
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
PlayerInfo[killerid][pUbojstva]++;
PlayerInfo[playerid][pSmrti]++;
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch( dialogid )
{
case DIALOG_REGISTRACIJA:
{
if (!response) return Kick(playerid);
if(response)
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTRACIJA, DIALOG_STYLE_INPUT, "{FF9000}Registracija","{FF9000}[!]Upisao si pogresnu lozinku.\n{FF9000}Upisi lozinku koju ces koristiti za pristup accountu.","Registracija","Odustani");
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
INI_WriteInt(File,"Lozinka",udb_hash(inputtext));
INI_WriteInt(File,"Novac",0);
INI_WriteInt(File,"Admin",0);
INI_WriteInt(File,"Ubojstva",0);
INI_WriteInt(File,"Smrti",0);
INI_Close(File);
SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
ShowPlayerDialog(playerid, DIALOG_USPJESNOA, DIALOG_STYLE_MSGBOX,"{FF9000}Registracija uspjesna!","{FF9000}Registracija uspjesna, otidite relog da se vas account spremi!","Uredu","");
}
}
case DIALOG_LOGIN:
{
if ( !response ) return Kick ( playerid );
if( response )
{
if(udb_hash(inputtext) == PlayerInfo[playerid][pLozinka])
{
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
GivePlayerMoney(playerid, PlayerInfo[playerid][pNovac]);
ShowPlayerDialog(playerid, DIALOG_USPJESNOB, DIALOG_STYLE_MSGBOX,"{FF9000}Login uspjesan!","{FF9000}Uspjesno ste se logirali u vas account!","Uredu","");
}
else
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"{FF9000}Login","{FF9000}[!]Upisao si pogresnu lozinku..\n{FF9000}Upisi svoju lozinku za pristup accountu.","Login","Odustani");
}
return 1;
}
}
}
return 1;
}
Citat: Lenon poslato Septembar 04, 2014, 14:17:36 POSLE PODNE
samo sec
Sada imam ove errore
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(58) : error 021: symbol already defined: "PlayerInfo"
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(304) : error 001: expected token: "-string end-", but found "-identifier-"
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(304) : error 017: undefined symbol "FF9000"
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(304) : warning 217: loose indentation
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(304) : error 017: undefined symbol "Upisi"
D:\DINO\SAMP\Norton RolePlay\gamemodes\NRP.pwn(304) : fatal error 107: too many error messages on one line
Ispravio sam ti sve:
//#includovi
#include <a_samp>
#include <YSI\y_ini>
#include <YSI\y_commands>
//#definicije
#define DIALOG_REGISTRACIJA 1
#define DIALOG_LOGIN 2
#define DIALOG_USPJESNOA 3
#define DIALOG_USPJESNOB 4
#define PATH "/Korisnici/%s.ini"
//Regyster i Login System
enum pInfo
{
pLozinka,
pNovac,
pAdmin,
pUbojstva,
pSmrti
}
new PlayerInfo[MAX_PLAYERS][pInfo];
forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
INI_Int("Lozinka",PlayerInfo[playerid][pLozinka]);
INI_Int("Novac",PlayerInfo[playerid][pNovac]);
INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
INI_Int("Ubojstva",PlayerInfo[playerid][pUbojstva]);
INI_Int("Smrti",PlayerInfo[playerid][pSmrti]);
return 1;
}
stock UserPath(playerid)
{
new string[32],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playername));
format(string,sizeof(string),PATH,playername);
return string;
}
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;
}
public OnPlayerConnect(playerid)
{
if(fexist(UserPath(playerid)))
{
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"{FF9000}Login","{FF9000}Upisi svoju lozinku za ulazak u igru.","Login","Odustani");
}
else
{
ShowPlayerDialog(playerid, DIALOG_REGISTRACIJA, DIALOG_STYLE_INPUT,"{FF9000}Registracija","{FF9000}Upisi lozinku koju ces koristiti za pristup accountu.","Registracija","Odustani");
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
INI_WriteInt(File,"Novac",GetPlayerMoney(playerid));
INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
INI_WriteInt(File,"Ubojstva",PlayerInfo[playerid][pUbojstva]);
INI_WriteInt(File,"Smrti",PlayerInfo[playerid][pSmrti]);
INI_Close(File);
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
PlayerInfo[killerid][pUbojstva]++;
PlayerInfo[playerid][pSmrti]++;
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch( dialogid )
{
case DIALOG_REGISTRACIJA:
{
if (!response) return Kick(playerid);
if(response)
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTRACIJA, DIALOG_STYLE_INPUT, "{FF9000}Registracija","{FF9000}[!]Upisao si pogresnu lozinku.\n{FF9000}Upisi lozinku koju ces koristiti za pristup accountu.","Registracija","Odustani");
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
INI_WriteInt(File,"Lozinka",udb_hash(inputtext));
INI_WriteInt(File,"Novac",0);
INI_WriteInt(File,"Admin",0);
INI_WriteInt(File,"Ubojstva",0);
INI_WriteInt(File,"Smrti",0);
INI_Close(File);
SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
ShowPlayerDialog(playerid, DIALOG_USPJESNOA, DIALOG_STYLE_MSGBOX,"{FF9000}Registracija uspjesna!","{FF9000}Registracija uspjesna, otidite relog da se vas account spremi!","Uredu","");
}
}
case DIALOG_LOGIN:
{
if ( !response ) return Kick ( playerid );
if( response )
{
if(udb_hash(inputtext) == PlayerInfo[playerid][pLozinka])
{
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
GivePlayerMoney(playerid, PlayerInfo[playerid][pNovac]);
ShowPlayerDialog(playerid, DIALOG_USPJESNOB, DIALOG_STYLE_MSGBOX,"{FF9000}Login uspjesan!","{FF9000}Uspjesno ste se logirali u vas account!","Uredu","");
}
else
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"{FF9000}Login","{FF9000}[!]Upisao si pogresnu lozinku..\n{FF9000}Upisi svoju lozinku za pristup accountu.","Login","Odustani");
}
return 1;
}
}
}
return 1;
}
Riješeno je. Hvala vam ;)