Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: vlada966 poslato Jun 04, 2012, 15:27:26 POSLE PODNE

Naslov: [Pomoc] Cuvanje
Poruka od: vlada966 poslato Jun 04, 2012, 15:27:26 POSLE PODNE
Skripta koju koristim:TechLand Xperia
Detaljan opis problema:Imam FS za tablice,ali kako da napravim da trajno cuva broj ili slova na tablicama,na primer kada izadjem iz servera pa opet udjem pisu oni isti znakovi sto sam ja stavio
Dio skripte:    #include a_samp
    #include zcmd
    #include sscanf2
     
    /* ==== */
    /* FS:Plate is a filterscript made by Marricio. */
    /* ==== */
     
    new v_Plate[MAX_VEHICLES][32];
     
    CMD:plate( playerid, params[] )
    {
            if( isnull( params ) )
                return SendClientMessage( playerid, -1, "Kucaj: /plate [plate(1-32 letters)]" );
     
            if( strlen( params ) > 32 )
                return SendClientMessage( playerid, -1, "Kucaj: /plate [plate(1-32 letters)]" );
     
            if( !IsPlayerInAnyVehicle( playerid ) )
                return SendClientMessage( playerid, -1, "Greska: Morate biti u autu." );
     
     
            new szString[128], pVeh, Float:vPos[4];
            pVeh = GetPlayerVehicleID( playerid );
     
            format( v_Plate[pVeh], 32, "%s", params );
            SetVehicleNumberPlate( pVeh, params );
     
            GetPlayerPos( playerid, vPos[0], vPos[1], vPos[2] );
            GetVehicleZAngle( pVeh, vPos[3] );
            SetVehicleToRespawn( pVeh );
            SetVehiclePos( pVeh, vPos[0], vPos[1], vPos[2] );
            SetVehicleZAngle( pVeh, vPos[3] );
            PutPlayerInVehicle( playerid, pVeh, 0 );
     
            format( szString, 128, "Tablice vaseg vozila su uspesno promenjene u %s.", params );
            SendClientMessage( playerid, -1, szString );
     
            return 1;
    }
     
    CMD:setplate( playerid, params[] )
    {
            new iVictim, szPlate[32];
            if( sscanf( params, "us[32]", iVictim, szPlate ) )
                return SendClientMessage( playerid, -1, "Kucaj: /plate [playerid][plate(1-32 letters)]" );
     
            if( strlen( szPlate ) > 32 )
                return SendClientMessage( playerid, -1, "Kucaj: /plate [playerid][plate(1-32 letters)]" );
     
            if( !IsPlayerAdmin( playerid ) )
                return SendClientMessage( playerid, -1, "Greska: Ti nis admin." );
     
            if( !IsPlayerConnected( iVictim ) )
                return SendClientMessage( playerid, -1, "Greska: Taj igrac nije na serveru." );
     
            if( !IsPlayerInAnyVehicle( iVictim ) )
                return SendClientMessage( playerid, -1, "Greska:Taj igrac nije u vozilu." );
     
            new szString[128], pVeh, Float:vPos[4];
            pVeh = GetPlayerVehicleID( iVictim );
     
            format( v_Plate[pVeh], 32, "%s", szPlate );
            SetVehicleNumberPlate( pVeh, szPlate );
     
            GetPlayerPos( iVictim, vPos[0], vPos[1], vPos[2] );
            GetVehicleZAngle( pVeh, vPos[3] );
            SetVehicleToRespawn( pVeh );
            SetVehiclePos( pVeh, vPos[0], vPos[1], vPos[2] );
            SetVehicleZAngle( pVeh, vPos[3] );
            PutPlayerInVehicle( iVictim, pVeh, 0 );
     
            format( szString, 128, "Admin ti je podesio tablice na %s.", szPlate );
            SendClientMessage( playerid, -1, szString );
     
            return 1;
    }
     
    CMD:getplate( playerid, params[] )
    {
            if( isnull( params ) )
                    return SendClientMessage( playerid, -1, "Kucaj: /getplate [ID vozila]" );
     
            new szString[128];
            format( szString, 128, "[ VEHICLE ID: %d | PLATE: %s ]", strval( params ), v_Plate[strval( params )] );
            SendClientMessage( playerid, -1, szString );
     
            return 1;
    }

ovo je cela FS .
Neke slike/video za lakse dobivanje pomoci(neobavezno): /
POMOC !!!!

Naslov: Odg: [Pomoc] Cuvanje
Poruka od: vlado_plavsic poslato Jun 04, 2012, 19:35:44 POSLE PODNE
Mozda ako napravis enum za tablice i sa tim enumom napravis da mu cuva podatke u ini fajl ? Ako me ne bude mrzelo ovih dana cu napraviti takav sistem :)
Naslov: Odg: [Pomoc] Cuvanje
Poruka od: Kopra poslato Jun 05, 2012, 16:39:59 POSLE PODNE
Joj majko zar opet ove tablice...

Komanda :

CMD:regv(playerid, params[])
{
new tablica[8];
if(sscanf(params, "s[8]", tablica)) return SendClientMessage(playerid,COLOR_GRAD1,"[ Komanda ]: /registracija ( TEXT - NAJVISE 8 ZNAKOVA / SLOVA )");
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,COLOR_GRAD1,"[ GRESKA ]: Moras biti u vozilu .");
if(IsPlayerInRangeOfPoint(playerid,5,-1990.6874,137.4902,27.5391))
{
    new vozilo, Float:vP[4];
        vozilo = GetPlayerVehicleID( playerid );

    SetVehicleNumberPlate(vozilo, tablica );
    new string[40];
    format(string, 40, "Vozilo: %d\nText tablice: %s", vozilo, tablica);
    SacuvajTablicu(string);

    GetPlayerPos(playerid, vP[0], vP[1], vP[2] );
    GetVehicleZAngle(vozilo, vP[3] );
    SetVehicleToRespawn(vozilo);
    SetVehiclePos(vozilo, vP[0], vP[1], vP[2] );
    SetVehicleZAngle(vozilo, vP[3] );
    PutPlayerInVehicle(playerid, vozilo, 0);
}
    return 1;
}


Negde na dno moda dodaj :

stock SacuvajTablicu(string[])
{
new entry[40];
format(entry, sizeof(entry), "%s\r\n",string);
new File:hFile;
hFile = fopen("Vozila/tablice.ini", io_append);
fwrite(hFile, entry);
fclose(hFile);
}

stock UcitajTablice()
{
    new arrCoords[20][64];
    new strFromFile2[256];
    new cplate[512];
    new cid[512];
    new File:file = fopen("Vozila/tablice.ini", io_read);
    if (file)
    {
        new idx;
        while (idx < 256)
        {
            fread(file, strFromFile2);
            split(strFromFile2, arrCoords, ',');
            strmid(cid[idx], arrCoords[0], 0, strlen(arrCoords[0]),255);
            strmid(cplate[idx], arrCoords[1], 0, strlen(arrCoords[1]),255);
            SetVehicleNumberPlate(cid[idx],cplate[idx]);
            idx++;
        }
        fclose(file);
    }
    return 1;
}

stock split(const strsrc[], strdest[][], delimiter)
{
new i, li;
new aNum;
new len;
while(i <= strlen(strsrc)){
    if(strsrc[i]==delimiter || i==strlen(strsrc)){
        len = strmid(strdest[aNum], strsrc, li, i, 128);
        strdest[aNum][len] = 0;
        li = i+1;
        aNum++;
}
i++;
}
return 1;
}


i pod OnGameModeInit : UcitajTablice();

I sad u Scriptfiles napravi folder Vozila ,udji u njega i napravi fajl tablice.ini
Naslov: Odg: [Pomoc] Cuvanje
Poruka od: Markinjoâ„¢ poslato Jun 05, 2012, 17:16:12 POSLE PODNE
Citat: ''KopriVa' poslato Jun 05, 2012, 16:39:59 POSLE PODNE
Joj majko zar opet ove tablice...

Komanda :

CMD:regv(playerid, params[])
{
new tablica[8];
if(sscanf(params, "s[8]", tablica)) return SendClientMessage(playerid,COLOR_GRAD1,"[ Komanda ]: /registracija ( TEXT - NAJVISE 8 ZNAKOVA / SLOVA )");
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,COLOR_GRAD1,"[ GRESKA ]: Moras biti u vozilu .");
if(IsPlayerInRangeOfPoint(playerid,5,-1990.6874,137.4902,27.5391))
{
    new vozilo, Float:vP[4];
        vozilo = GetPlayerVehicleID( playerid );

    SetVehicleNumberPlate(vozilo, tablica );
    new string[40];
    format(string, 40, "Vozilo: %d\nText tablice: %s", vozilo, tablica);
    SacuvajTablicu(string);

    GetPlayerPos(playerid, vP[0], vP[1], vP[2] );
    GetVehicleZAngle(vozilo, vP[3] );
    SetVehicleToRespawn(vozilo);
    SetVehiclePos(vozilo, vP[0], vP[1], vP[2] );
    SetVehicleZAngle(vozilo, vP[3] );
    PutPlayerInVehicle(playerid, vozilo, 0);
}
    return 1;
}


Negde na dno moda dodaj :

stock SacuvajTablicu(string[])
{
new entry[40];
format(entry, sizeof(entry), "%s\r\n",string);
new File:hFile;
hFile = fopen("Vozila/tablice.ini", io_append);
fwrite(hFile, entry);
fclose(hFile);
}

stock UcitajTablice()
{
    new arrCoords[20][64];
    new strFromFile2[256];
    new cplate[512];
    new cid[512];
    new File:file = fopen("Vozila/tablice.ini", io_read);
    if (file)
    {
        new idx;
        while (idx < 256)
        {
            fread(file, strFromFile2);
            split(strFromFile2, arrCoords, ',');
            strmid(cid[idx], arrCoords[0], 0, strlen(arrCoords[0]),255);
            strmid(cplate[idx], arrCoords[1], 0, strlen(arrCoords[1]),255);
            SetVehicleNumberPlate(cid[idx],cplate[idx]);
            idx++;
        }
        fclose(file);
    }
    return 1;
}

stock split(const strsrc[], strdest[][], delimiter)
{
new i, li;
new aNum;
new len;
while(i <= strlen(strsrc)){
    if(strsrc[i]==delimiter || i==strlen(strsrc)){
        len = strmid(strdest[aNum], strsrc, li, i, 128);
        strdest[aNum][len] = 0;
        li = i+1;
        aNum++;
}
i++;
}
return 1;
}


i pod OnGameModeInit : UcitajTablice();

I sad u Scriptfiles napravi folder Vozila ,udji u njega i napravi fajl tablice.ini
KopriVa brate ono sve sacuva i kada restartujes server nece da ucita tablice ??? STO TO ???
Naslov: Odg: [Pomoc] Cuvanje
Poruka od: vlado_plavsic poslato Jun 05, 2012, 19:30:28 POSLE PODNE
Jesi li napravio folder "Vozila" u scriptfiles? Ako nisi napravi ili jednostavno stavi da cuva odmah u scriptfiles :

stock SacuvajTablicu(string[])
{
new entry[40];
format(entry, sizeof(entry), "%s\r\n",string);
new File:hFile;
hFile = fopen("tablice.ini", io_append);
fwrite(hFile, entry);
fclose(hFile);
}

stock UcitajTablice()
{
    new arrCoords[20][64];
    new strFromFile2[256];
    new cplate[512];
    new cid[512];
    new File:file = fopen("tablice.ini", io_read);
    if (file)
    {
        new idx;
        while (idx < 256)
        {
            fread(file, strFromFile2);
            split(strFromFile2, arrCoords, ',');
            strmid(cid[idx], arrCoords[0], 0, strlen(arrCoords[0]),255);
            strmid(cplate[idx], arrCoords[1], 0, strlen(arrCoords[1]),255);
            SetVehicleNumberPlate(cid[idx],cplate[idx]);
            idx++;
        }
        fclose(file);
    }
    return 1;
}
Naslov: Odg: [Pomoc] Cuvanje
Poruka od: Markinjoâ„¢ poslato Jun 05, 2012, 20:42:47 POSLE PODNE
@Vladimire napravio sam sve i sve uradio kako je on rekao i sacuva ono u tablice.ini ali kad ponovo pokrenem server nece da ucita ... Da li me razumes ?
Naslov: Odg: [Pomoc] Cuvanje
Poruka od: vlado_plavsic poslato Jun 05, 2012, 20:44:25 POSLE PODNE
Jesi li stavio pod OnGameModeInit da cita iz tog fajla? Poslacu ti na PM sta da ubacis.Pozdrav
Naslov: Odg: [Pomoc] Cuvanje
Poruka od: Markinjoâ„¢ poslato Jun 05, 2012, 20:50:14 POSLE PODNE
Citat: Ð'ладимир Плавшић aka PlavÅ¡a poslato Jun 05, 2012, 20:44:25 POSLE PODNE
Jesi li stavio pod OnGameModeInit da cita iz tog fajla? Poslacu ti na PM sta da ubacis.Pozdrav
Ubacio sam pod OnGameModeInit UcitajTablice(); kao sto je KopriVa rekao ali nece
Naslov: Odg: [Pomoc] Cuvanje
Poruka od: Markinjoâ„¢ poslato Jun 05, 2012, 21:52:00 POSLE PODNE
Vladimire hoces poslati ?
Naslov: Odg: [Pomoc] Cuvanje
Poruka od: vlado_plavsic poslato Jun 05, 2012, 21:54:35 POSLE PODNE
Ne radi DP,rekao sam ti sta da uradis. I ne spamaj.
Naslov: Odg: [Pomoc] Cuvanje
Poruka od: Markinjoâ„¢ poslato Jun 05, 2012, 22:02:36 POSLE PODNE
Vladimire nisam te uopste razumeo sta ti je to loop (petlja)   ???
Naslov: Odg: [Pomoc] Cuvanje
Poruka od: Danijel96.pwn poslato Jun 06, 2012, 09:10:31 PRE PODNE
ovo ti je loop(petlja)

for(new i = 0; i < MAX_PLAYERS; i++)
ili
foreach(Player, i)

to ti je loop za sve igrace

nz kakav tebi loop treba!