2 retardirana buga, glavu sam razbio i lud sam vise!

Započeo Kora, Maj 28, 2009, 15:25:50 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 2 gostiju pregledaju ovu temu.

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  ;)

Poslednja Izmena: Jun 01, 2009, 19:49:08 POSLE PODNE od zerocoolos

kako koristis GodFader valjda je greska u ovom djelu...

Kod (Tako izgleda na normalnome GF za LOGIN REGISTER poruku...) [Izaberi]
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...

matejdz

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;
}

zerocoolos

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...
Poslednja Izmena: Maj 28, 2009, 18:01:26 POSLE PODNE od zerocoolos

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 ...

zerocoolos

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!?
Poslednja Izmena: Maj 28, 2009, 19:11:21 POSLE PODNE od zerocoolos

zerocoolos

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...  :)
Poslednja Izmena: Maj 28, 2009, 19:46:53 POSLE PODNE od [CH]matejdz

zerocoolos

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 ?

zerocoolos

hm, ajd mi napisi kod od f-je public OnPlayerRegister - mozda je tamo greska

zerocoolos

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;

zerocoolos