1. znaci prvi je bug sa bizom, a radi se o tome da vlasnici bizzeva uvijek imaju pare na nuli...
znaci imaju neke pare na bizzu i nestanu....
2. drugi bug je sa login, a stvar je u tome sta kada imas regg acc pojavljuje se ona poruka kao da acc nije regan, a odes /login <pass> i sve normalno... nije stvar u poruci ni nista nego nesto nevalja
recite koji dio scripte da vam posaljem pa da pogledate...
ako netko kuzi ili mozda zna u cemu je stvar neka kaze jer sam lud vise, razbijam glavu a mozda je u pitanju samo neka glupost ;)
kako koristis GodFader valjda je greska u ovom djelu...
if(fexist(string))
{
gPlayerAccount[playerid] = 1;
SendClientMessage(playerid, COLOR_YELLOW, "SERVER: That nick is registered, please login");
SendClientMessage(playerid, COLOR_WHITE, "HINT: You can now login by typing /login <password>");
return 1;
}
else
{
gPlayerAccount[playerid] = 0;
SendClientMessage(playerid,COLOR_YELLOW,"You dont have an account. Please register by using /register [password]");
return 1;
}
}
(nemogu jamciti 100 posto da je to to... za text)
pogledaj ako nije na oba dvojem isti text.....
ili ako ne fali nesto
nisam toliko dobar skripter da bi znao kaj je problem ali moguce je da je kod update podataka..
lol pa nisam noob nije stvar u tome, da je vec bi to bilo sredjeno... hh ;)
nesto drugo je...
A postaj nam tu cijeli svoj login i register da vidimo :D
to nebi trebalo imat veze sa loginom i register ali ajde...
//-------------------------------[Login]--------------------------------------------------------------------------
if (strcmp(cmd, "/login", true) ==0 )
{
if(IsPlayerConnected(playerid))
{
new tmppass[64];
if(gPlayerLogged[playerid] == 1)
{
SendClientMessage(playerid, COLOR_RED, "~°~Balkan-SF~°~® RP server: Vec ste logirani.");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD1, "Koristite: /login <lozinka>");
return 1;
}
strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
OnPlayerLogin(playerid,tmppass);
}
return 1;
}
if (strcmp(cmd, "/register", true) ==0 )
{
if(IsPlayerConnected(playerid))
{
if(gPlayerLogged[playerid] == 1)
{
SendClientMessage(playerid, COLOR_WHITE, " * SERVER: Vec ste ulogirani.");
return 1;
}
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "/accounts/%s.ini", sendername);
new File: hFile = fopen(string, io_read);
if (hFile)
{
SendClientMessage(playerid, COLOR_YELLOW, "To ime vec postoji, molimo uzmite drugo ime.");
fclose(hFile);
return 1;
}
if(strlen(sendername) >= 16) {
SendClientMessage(playerid, COLOR_YELLOW, "Vase ime mora imati manje od 16 slova!");
}
if(CheckRPName(playerid, sendername) == 1)
{
new tmppass[64];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD3, "Koristite: /register <lozinka>");
strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
return OnPlayerRegister(playerid,tmppass);
}
new tmppass[64];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD3, "Koristite: /register <lozinka>");
return 1;
}
strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
OnPlayerRegister(playerid,tmppass);
}
return 1;
}
evo i ovo ali sumnjam da je i u tome stvar...
if(fexist(string))
{
gPlayerAccount[playerid] = 1;
SendClientMessage(playerid, COLOR_GREEN, "Dobro dosli na ~°~Balkan-SF~°~ RolePlay Server");
SendClientMessage(playerid, COLOR_GREEN, "SERVER: Vas nick je registriran, molimo da se logirate");
SendClientMessage(playerid, COLOR_WHITE, "SERVER: Da bi ste se logirali upisite /login <lozinka>");
return 1;
}
else
{
gPlayerAccount[playerid] = 0;
SendClientMessage(playerid,COLOR_GREEN, "Dobro dosli na ~°~Balkan-SF~°~ RolePlay Server");
SendClientMessage(playerid,COLOR_RED, "SERVER: Vas nick nije registriran. Za registraciju upisite /register <lozinka>");
SendClientMessage(playerid,COLOR_WHITE, " ** Morate imati nick u ovom formatu Ime_Prezime npr. Ivan_Babic. **");
SendClientMessage(playerid,COLOR_WHITE, " ** Nesmijete imati slova sa kvacicama i morate imati velika pocetna slova. **");
SendClientMessage(playerid,COLOR_WHITE, " ** Vase ime u igri smije sadrzavati maksimalno 16 znakova.");
return 1;
}
naravno da ti ne radi, zasto si kombinirao registracijsku i login komandu sa dva razliÄita gamemoda.
/register ti pravi acc u mapi "/accounts/"
format(string, sizeof(string), "/accounts/%s.ini", sendername);
dok ti /login uzima fileove iz /scriptfiles jer trazi "%s.ini"(pogledaj u public OnPlayerLogin, kad ne pises iz koje mape da uzima acc samp uzima iz scriptfilesa) umjesto da trazi gdje sprema acc(root/accounts/%s.ini - tu ti sprema)
Mozes rijesiti problem na dva naÄina:
1. makni kad pravis acc na /register to da pravi u mapi /accounts
ili 2.ostavi da pravi u toj mapi acc al onda u OnPlayerLogin dodaj "/accounts/%s.ini" umjesto "%s.ini"
Ah da zasto ti je naslov 2 retardirana buga? nema tu bugova, to je iskljucivo tvoje nepoznavanje C-koda. Svatko moze logicno skontat da editira neke dijelove, al tesko je kad ne kontas osnovnu sintaksu programskog jezika C, sto ti ovdje treba, skontat zasto neki dio koda bas to radi sto radi...
public OnPlayerLogin(playerid,password[])
{
new tmp2[256];
new string2[64];
new playername2[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername2, sizeof(playername2));
format(string2, sizeof(string2), "/accounts/%s.ini", playername2);
new File: UserFile = fopen(string2, io_read);
if ( UserFile )
{
new PassData[256];
new keytmp[256], valtmp[256];
fread( UserFile , PassData , sizeof( PassData ) );
keytmp = ini_GetKey( PassData );
if( strcmp( keytmp , "Key" , true ) == 0 )
{
valtmp = ini_GetValue( PassData );
strmid(PlayerInfo[playerid][pKey], valtmp, 0, strlen(valtmp)-1, 255);
}
if(strcmp(PlayerInfo[playerid][pKey],password, true ) == 0 )
{
new key[ 256 ] , val[ 256 ];
new Data[ 256 ];
while ( fread( UserFile , Data , sizeof( Data ) ) )
{ .......
evo ovo je i bilo u OnPlayerLogin... znaci bilo je /accounts/%s.ini
ili sam krivo skuzio ?
kako da onda rijesim ovo ?
i znas li sta je to sa bizom ?
uvijek resetira pare u bizu na 0 ...
ma ok je onda sve, samo napravi onda mapu u root-u "/accounts/"
A sto se tice biza, moras pogledat dali ti snima statse bizova u gm!?
onda maknite tu mapu i radite kao i svi samo: format(string2, sizeof(string2), "%s.ini", playername2);
i rijesit ce te problem
neki drugi nacin da se ne mice jer nisam uzeo pravi FTP BEZ PSOVANJA ;)... =S
inace Zorane hvala ti sta pomazes... :)
OnPropUpdate i Loadsbizz usporedi. moras imat isto varijabli koliko ucitavas i koliko spremas da bi sve stimalo... a sbTill - varijabla ti je za novac bizza...
npr kod mene bizz ima ove varijable:
BizzInfo[idx][bOwned],
BizzInfo[idx][bOwner],
BizzInfo[idx][bMessage],
BizzInfo[idx][bExtortion],
BizzInfo[idx][bEntranceX],
BizzInfo[idx][bEntranceY],
BizzInfo[idx][bEntranceZ],
BizzInfo[idx][bExitX],
BizzInfo[idx][bExitY],
BizzInfo[idx][bExitZ],
BizzInfo[idx][bLevelNeeded],
BizzInfo[idx][bBuyPrice],
BizzInfo[idx][bEntranceCost],
BizzInfo[idx][bTill],
BizzInfo[idx][bLocked],
BizzInfo[idx][bInterior],
BizzInfo[idx][bProducts],
BizzInfo[idx][bMaxProducts],
BizzInfo[idx][bPriceProd]);
al jos ti se mozda nesta drugo desilo, a to je da si mozda nesta mijenjao u biz.cfg i da si tamo slucajno u bilo kojem redu obrisao zarez ili dodao jedan vise pa se sad sve zbugalo(to se moze desit kad mijenjas koordinate ulaza u biz)... to mozes popravit tako da uzmes file biz.cfg ili sbiz.cfg prije nego si ga mijenjao i ponovno to napravis ali sad opreznije.
nesto je bullet oko toga govorio da se mnozi sa nulom nesto pa zato nema novaca na bizzu...
znas sta o tome ?
i ima li koji nacin da sredimo login i register problem a da ostane mapa accounts ?
hm, ajd mi napisi kod od f-je public OnPlayerRegister - mozda je tamo greska
hm, onda nije u tome greska...
od u public OnPlayerLogin i nadji ovo:
if(PlayerInfo[playerid][pReg] == 0)
{
moras pod tim imat ovo:
PlayerInfo[playerid][pReg] = 1;
a nez vise... moze sad biti jos sto gluposti...
public OnPlayerConnect(playerid) - odi tamo
i nadji ovo(ovako treba bit)
GetPlayerName(playerid, plname, sizeof(plname));
format(string, sizeof(string), "/accounts/%s.ini", plname); <---------------------- tu obrati pozornost
if(fexist(string))
{
gPlayerAccount[playerid] = 1;
kada sam rekao da sam razbijao glavu ispao sam kreten i nesnalazljiv u scriptanju ili sta vise...
biti ce da je ovo malo duzi postupak ;) ;)