Elsõként ajánlom átnézni (ha még nem ismered) kurta mysql regisztrációs rendszerét, tanulhatsz belõle.
Másodrészt pedig, másold be ezeket a funkcióidhoz, viszont elõtte hozz létre egy globális queryd változót (mi legalábbis úgy használjuk):
stock GetPlayerData( playerid, dataline[] ) {
new esced[ 24 + 1 ];
mysql_real_escape_string( PlayerName(playerid), esced );
format( queryd, sizeof(queryd), \"SELECT * FROM `players` WHERE `Név` = \'%s\'\", esced );
mysql_query( queryd );
mysql_store_result( );
mysql_fetch_row_format( dataline, \"|\" );
mysql_free_result( );
return true;
}
Majd amikor bejelentkezik( nálam jelen esetben Belepes(playerid), illetve hozz létre egy globális line változót. ):
stock Belepes(playerid)
{
new SetVarThing[sZAMUK][32]; // jelen esetben 2
GetPlayerData(playerid, line);
split( line, PVarSet, \'|\' );
sscanf(line, \"p<|>s[32]d\", SetVarThing[0], SetVarThing[1]);
if(mysql_num_rows() != 0)
{
pInfo[playerid][AdminLevel] = strval(SetVarThing[2]); // itt sima változót használtam, de ha akarod lehet pvarban is
}
return 1;
}
Elsõként ajánlom átnézni (ha még nem ismered) kurta mysql regisztrációs rendszerét, tanulhatsz belõle.
Másodrészt pedig, másold be ezeket a funkcióidhoz, viszont elõtte hozz létre egy globális queryd változót (mi legalábbis úgy használjuk):
stock GetPlayerData( playerid, dataline[] ) {
new esced[ 24 + 1 ];
mysql_real_escape_string( PlayerName(playerid), esced );
format( queryd, sizeof(queryd), \"SELECT * FROM `players` WHERE `Név` = \'%s\'\", esced );
mysql_query( queryd );
mysql_store_result( );
mysql_fetch_row_format( dataline, \"|\" );
mysql_free_result( );
return true;
}
Majd amikor bejelentkezik( nálam jelen esetben Belepes(playerid), illetve hozz létre egy globális line változót. ):
stock Belepes(playerid)
{
new SetVarThing[sZAMUK][32]; // jelen esetben 2
GetPlayerData(playerid, line);
split( line, PVarSet, \'|\' );
sscanf(line, \"p<|>s[32]d\", SetVarThing[0], SetVarThing[1]);
if(mysql_num_rows() != 0)
{
pInfo[playerid][AdminLevel] = strval(SetVarThing[2]); // itt sima változót használtam, de ha akarod lehet pvarban is
}
return 1;
}
Köszi, ez hibátlan ahogy van :)
Meg van még 1 baj a makeadmin parancsommal.
parancs:
CMD:makeadmin(playerid,params[])
{
if(IsPlayerAdmin(playerid) || PlayerInfo[playerid][pAdminLevel] == 6)
{
new targetid, szint, msg[128];
if(sscanf(params,\"ui\",targetid,szint)) return SendClientMessage(playerid, COLOR_SERVER, \"/makeadmin [iD / Név] [AdminSzint]\");
{
if(szint < 0 || szint > 6) return SendClientMessage(playerid, COLOR_SERVER, \"Admin szintek: 0 | 1 | 2 | 3 | 4 | 5 | 6\");
PlayerInfo[playerid][pAdminLevel] = szint;
format(msg,sizeof(msg),\"Gratulálunk az új adminunknak!! Neve: %s || Adta neki: %s || Admin rang: %s\",TargetName(playerid),PlayerName(playerid),Admin_Szintek[szint]);
SendClientMessageToAll(COLOR_LIGHTBLUE,msg);
}
new Query[256];
format(Query, sizeof(Query), \"SELECT * FROM `playerek` WHERE `name` = \'%s\'\", PlayerName(playerid));
mysql_query(Query);
mysql_store_result();
if(mysql_num_rows() != 0) // Ha a sorok száma nem 0 ( nem üres )
{
new Query1[256];
format(Query1, sizeof(Query1), \"UPDATE `samp`.`playerek` SET `AdminSzint` = \'%i\' WHERE `Név` = %s\", szint,PlayerName(playerid));
mysql_query(Query1);
}
else
{
new Query2[256];
format(Query2,sizeof(Query2),\"INSERT INTO `samp`.`playerek` (`Név` ,`AdminSzint`)VALUES (\'%s\', \'%i\'\",PlayerName(playerid),szint);
mysql_query(Query2);
}
mysql_free_result();
}
return 1;
}
Az vele a baj, hogy hiába 0 -ra van téve a num rows akkor sem csinálja (insert és update) de ha megfordítom, akkor mindíg létrehozza ha adok magamnak admint (insert)
Ha ezt megoldod, erre is adok pluszt, (akárkinek)
A mostanira megy a + :)
köszi!!
Dexter
E: Még sem hibátlan :O
Amikor az OnPlayerConnect alá beírtam a Belepes(playerid); -t hibákat hozott rá.
Hibák:
D:\\samp scripting\\gamemodes\\mysql.pwn(305) : error 017: undefined symbol \"SZAMUK\"
D:\\samp scripting\\gamemodes\\mysql.pwn(305) : error 036: empty statement
D:\\samp scripting\\gamemodes\\mysql.pwn(306) : error 017: undefined symbol \"line\"
D:\\samp scripting\\gamemodes\\mysql.pwn(307) : error 017: undefined symbol \"split\"
D:\\samp scripting\\gamemodes\\mysql.pwn(308) : error 017: undefined symbol \"line\"
D:\\samp scripting\\gamemodes\\mysql.pwn(308) : warning 215: expression has no effect
D:\\samp scripting\\gamemodes\\mysql.pwn(308) : error 001: expected token: \";\", but found \"]\"
D:\\samp scripting\\gamemodes\\mysql.pwn(308) : error 029: invalid expression, assumed zero
D:\\samp scripting\\gamemodes\\mysql.pwn(308) : fatal error 107: too many error messages on one line
Kurta rendszerét ismerem, csak az nem olyan mert én parancsokat csinálok :D
stock Belepes(playerid)
{
new line[ 64 + 1 ];
new SetVarThing[2][32]; // jelen esetben 2
GetPlayerData(playerid, line);
split( line, PVarSet, \'|\' );
sscanf(line, \"p<|>s[32]d\", SetVarThing[0], SetVarThing[1]);
if(mysql_num_rows() != 0)
{
pInfo[playerid][AdminLevel] = strval(SetVarThing[2]); // itt sima változót használtam, de ha akarod lehet pvarban is
}
return 1;
}
szükséges hozzá a \"split(..)\" is.
(google a barátod)
Ez nem az én GetPlayerData-m? :D
Igen a tied, lusta voltam sajátot írni:D
stock Belepes(playerid)
{
new line[ 64 + 1 ];
new SetVarThing[2][32]; // jelen esetben 2
GetPlayerData(playerid, line);
split( line, PVarSet, \'|\' );
sscanf(line, \"p<|>s[32]d\", SetVarThing[0], SetVarThing[1]);
if(mysql_num_rows() != 0)
{
pInfo[playerid][AdminLevel] = strval(SetVarThing[2]); // itt sima változót használtam, de ha akarod lehet pvarban is
}
return 1;
}
szükséges hozzá a \"split(..)\" is.
(google a barátod)
Ez nem az én GetPlayerData-m? :D
Köszi Taylor neked is ment + , de még mindíg nem hibátlan XD
Errors: [2]
D:\\samp scripting\\gamemodes\\mysql.pwn(308) : error 017: undefined symbol \"PVarSet\"
D:\\samp scripting\\gamemodes\\mysql.pwn(312) : error 032: array index out of bounds (variable \"SetVarThing\")
Köszi elõre is! :)
Dexter
stock Belepes(playerid)
{
new line[ 64 + 1 ];
new SetVarThing[2][32]; // jelen esetben 2
GetPlayerData(playerid, line);
split( line, SetVarThing, \'|\' );
sscanf(line, \"p<|>s[32]d\", SetVarThing[0], SetVarThing[1]);
if(mysql_num_rows() != 0)
{
pInfo[playerid][AdminLevel] = strval(SetVarThing[1]); // itt sima változót használtam, de ha akarod lehet pvarban is
}
return 1;
}
stock Belepes(playerid)
{
new line[ 64 + 1 ];
new SetVarThing[2][32]; // jelen esetben 2
GetPlayerData(playerid, line);
split( line, SetVarThing, \'|\' );
sscanf(line, \"p<|>s[32]d\", SetVarThing[0], SetVarThing[1]);
if(mysql_num_rows() != 0)
{
pInfo[playerid][AdminLevel] = strval(SetVarThing[1]); // itt sima változót használtam, de ha akarod lehet pvarban is
}
return 1;
}
Így már jó is! :)
Köszönöm, letestelem :)
+ ment!
Dupla hozzászólás automatikusan összefûzve. ( 2012. szeptember 22. - 19:49:04 )
Arra még tudtok választ hogyan tudnám kimenteni ha kap admint valaki?
Például adok magamnak 6-os admint és mentse ki ebbe a táblába: playerek ebbe vannak: Név, AdminSzint
Köszi :D
[+ erre is érvényes]
Dexter