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 !!!!
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 :)
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
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 ???
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;
}
@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 ?
Jesi li stavio pod OnGameModeInit da cita iz tog fajla? Poslacu ti na PM sta da ubacis.Pozdrav
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
Vladimire hoces poslati ?
Ne radi DP,rekao sam ti sta da uradis. I ne spamaj.
Vladimire nisam te uopste razumeo sta ti je to loop (petlja) ???
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!