Szerző Téma: szám beirása fileba+kiolvasása és +- müvelet  (Megtekintve 894 alkalommal)

szám beirása fileba+kiolvasása és +- müvelet
« Dátum: 2013. november 28. - 17:22:50 »
0 Show voters
helló az lenne a kérdésem h ha például van egy ilyenem h
 

new JMAX_JATEKOS;
new MAX_JATEKOS;
public OnPlayerConnect(playerid)
{
   JMAX_JATEKOS+=1;
   if(JMAX_JATEKOS>MAX_JATEKOS)
   {
       MAX_JATEKOS=JMAX_JATEKOS;
   }
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
JMAX_JATEKOS-=1;
return 1;
}

 
akkor ezekkel hogy tudom azt megcsinálni, hogy a MAX_JATEKOS-t amikor leál a szerver elmentsem egy file-ba amikor pedig elinditom akkor kiolvasa azt onan és a MAX_JATEKOS egyenlõ legyen a kiolvasott értékkel?
(ezzel egy szerver statisztikát szeretnék csinálni ami azt jelenitené meg nekem, hogy menyi volt a maximális játékos létszám egyszerre )

Nem elérhető BoOy

  • 3209
  • 2013-as év szkriptere
    • Profil megtekintése
szám beirása fileba+kiolvasása és +- müvelet
« Válasz #1 Dátum: 2013. november 28. - 23:38:57 »
+1 Show voters
A beolvasáshoz használj sscanf-ot:
(Nincs tesztelve)
 
#include <a_samp>
#include <sscanf2>
new JMAX_JATEKOS;
new MAX_JATEKOS;
public OnFilterScriptExit()
{
new File:filen = fopen(\"filename.txt\", io_write);
new string[128];
if(!fexist(\"filename.txt\"))return printf(\"Fájl nem található!\");
else
{
    format(string,sizeof(string),\"MAX_JATEKOS=%d\",MAX_JATEKOS);
    fwrite(filen,string);
         fclose(filen);
}
return 1;
}
public OnFilterScriptInit()
{
    new File:filen = fopen(\"filename.txt\", io_read);
    new str[128],strin[16],value;
while(fread(filen, str))if(sscanf(str, \"p<=>s[16]d\", strin, value))if(!strcmp(strin, \"MAX_JATEKOS\", true))return MAX_JATEKOS = value;
return 1;
}
public OnPlayerConnect(playerid)
{
JMAX_JATEKOS++;
if(JMAX_JATEKOS>MAX_JATEKOS)
{
MAX_JATEKOS=JMAX_JATEKOS;
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
    JMAX_JATEKOS--;
    return 1;
}

szám beirása fileba+kiolvasása és +- müvelet
« Válasz #2 Dátum: 2013. november 29. - 11:26:05 »
0 Show voters
nem jó :/ nem olvassa ki
ezt onnan tudom h felcsatlakozta így a második indításnál 1 nek kéne lennie de 0 h lássam csináltam egy ilyet:
 

   format(lol,sizeof(lol),\"MAX_JATEKOS=%d\",MAX_JATEKOS);
   print(lol);

 
de inditásnál 0-át mutat vagyis nem olvassa ki :/

Nem elérhető BoOy

  • 3209
  • 2013-as év szkriptere
    • Profil megtekintése
szám beirása fileba+kiolvasása és +- müvelet
« Válasz #3 Dátum: 2013. november 29. - 11:32:52 »
+1 Show voters
#include 
#include
new JMAX_JATEKOS;
new MAX_JATEKOS;
public OnFilterScriptExit()
{
       new File:filen = fopen(\"filename.txt\", io_write);
       new string[128];
       if(!fexist(\"filename.txt\"))return printf(\"Fájl nem található!\");
       else
       {
           format(string,sizeof(string),\"MAX_JATEKOS=%d\",MAX_JATEKOS);
           fwrite(filen,string);
          fclose(filen);
       }
       return 1;
}
public OnFilterScriptInit()
{
   new File:filen = fopen(\"filename.txt\", io_read);
   new str[128],strin[16],value;
   while(fread(filen, str))
{
if(sscanf(str, \"p<=>s[16]d\", strin, value))
{
if(!strcmp(strin, \"MAX_JATEKOS\", true))
{
    printf(\"A valós szám betöltve!\");
   return MAX_JATEKOS = value;
}
}
return 1;
}
public OnPlayerConnect(playerid)
{
       JMAX_JATEKOS++;
       if(JMAX_JATEKOS>MAX_JATEKOS)
       {
               MAX_JATEKOS=JMAX_JATEKOS;
       }
       return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
   JMAX_JATEKOS--;
   return 1;
}

 
Ha a konzolba kiírja azt hogy: \"Valós szám betöltve!\" akkor jónak kéne lennie.

szám beirása fileba+kiolvasása és +- müvelet
« Válasz #4 Dátum: 2013. november 29. - 11:43:01 »
0 Show voters
nem irja ki
 

----------
Loaded log file: \"server_log.txt\".
----------
SA-MP Dedicated Server
----------------------
v0.3x, (C)2005-2013 SA-MP Team
[11:44:26]
[11:44:26] Server Plugins
[11:44:26] --------------
[11:44:26]  Loading plugin: streamer.dll
[11:44:26]
*** Streamer Plugin v2.5 by Incognito loaded ***
[11:44:26]   Loaded.
[11:44:26]  Loading plugin: sscanf.dll
[11:44:26]
[11:44:26]  ===============================
[11:44:26]       sscanf plugin loaded.    
[11:44:26]    (c) 2009 Alex \"Y_Less\" Cole
[11:44:26]  ===============================
[11:44:26]   Loaded.
[11:44:26]  Loaded 2 plugins.
[11:44:26]
[11:44:26] Ban list
[11:44:26] --------
[11:44:26]  Loaded: samp.ban
[11:44:26]
[11:44:26]
[11:44:26] Filterscripts
[11:44:26] ---------------
[11:44:26]   Loading filterscript \'jat.amx\'...
[11:44:26]   Loaded 1 filterscripts.
[11:44:26]  
[11:44:26]  
[11:44:26]  
[11:44:26]  =======================================
[11:44:26]  |                                     |
[11:44:26]  |        YSI version 1.06.0002        |
[11:44:26]  |        By Alex \"Y_Less\" Cole        |
[11:44:26]  |                                     |
[11:44:26]  =======================================
[11:44:26]  
[11:44:26]  
[11:44:26]  
[11:44:26]   Filterscript \'anticheat.amx\' loaded.
[11:44:26]
--------------------------------------
[11:44:26] |           _p]L[Game$_WarMode       |
[11:44:26] |                   by               |
[11:44:26] |            _p]L[Game$_WaR         |
[11:44:26] |   ------------------------------   |
[11:44:26] |=========[War mód betöltve!]=======|
[11:44:26] |   ------------------------------   |
[11:44:26] --------------------------------------
[11:44:26] Number of vehicle models: 0
[11:44:27] __________________________________________________
[11:44:27]
[11:44:27] ** Your Whitetiger\'s Anti-Cheat API include is out of date, your old version may not continue to work.
[11:44:27] A new version is available at: https://sixtytiger.com/tiger/script/sampac_api.inc
[11:44:27]
[11:44:27] __________________________________________________
« Utoljára szerkesztve: 2013. november 29. - 11:45:31 írta solyom1992 »

Nem elérhető Pedró

  • 3341
  • 2014 © Az év Szkriptere
    • Profil megtekintése
szám beirása fileba+kiolvasása és +- müvelet
« Válasz #5 Dátum: 2013. november 29. - 12:12:38 »
+1 Show voters
Megírom neked, stipistopi, párperc és módosítom ezt a hozzászólást!


Bocs a késésért, de nem tudom leellenõrizni, hogy van-e hiba benne, mivel a fordítóm hibát ír ki, és most próbálom megoldani a hibát..
 
#define FILTERSCRIPT
#include
new playercount = 0, playerrecord = 0;
public OnFilterScriptInit() {
new File:file = fopen(\"Rekord.txt\", io_append), str[32];
if(file) {
    fread(file, str, sizeof(str), false);
    playerrecord = strval(str);
}else fwrite(file, \"0\");
fclose(file);
printf(\"[DEBUG] Jelenlegi játékos rekord: %i.\", playerrecord);
return 1;
}
public OnFilterScriptExit() {
new File:file = fopen(\"Rekord.txt\", io_write), str[32];
format(str, sizeof(str), \"%i\", playerrecord);
write(file, str);
fclose(file);
printf(\"[DEBUG] Jelenlegi játékos rekord elmentve! A rekord: %i.\", playerrecord);
return 1;
}
public OnPlayerConnect(playerid) {
playercount++;
if(playercount > playerrecord) {
new string[144];
format(string, sizeof(string), \"Játékos-rekord dõlt! Jelenleg %i játékos online!\", playercount);
SendClientMessageToAll(0xFFBB00FF, string);
playerrecord = playercount;
printf(\"[DEBUG] Megdõlt a játékos rekord! Új rekord: %i.\", playercount);
}
return 1;
}
public OnPlayerDisconnect(playerid, reason) {
playercount--;
return 1;
}

 

Dupla hozzászólás automatikusan összefûzve. ( 2013. november 29. - 13:18:43 )

21. sorban a write-t írd át fwrite-re. :)
« Utoljára szerkesztve: 2013. november 29. - 13:18:43 írta Pedró »

szám beirása fileba+kiolvasása és +- müvelet
« Válasz #6 Dátum: 2013. november 29. - 13:24:00 »
0 Show voters
maga a script jó 1 hiba volt benne csak h kimaradt egy f betû
és olyan szinten mûködik is h beírja a fileba a számot, de kiolvasni sajnos most se tudja :/
azaz mikor leállítom a szervert beírja a számot de mikor elindítom akkor a rekord ismét 0

Nem elérhető Pedró

  • 3341
  • 2014 © Az év Szkriptere
    • Profil megtekintése
szám beirása fileba+kiolvasása és +- müvelet
« Válasz #7 Dátum: 2013. november 29. - 13:27:54 »
+1 Show voters
Orvoslom a problémát, pillanat!


Hát íme..
 
#define FILTERSCRIPT
#include
new playercount = 0, playerrecord = 0;
public OnFilterScriptInit() {
new File:file = fopen(\"Rekord.txt\", io_read), str[32];
if(file) {
    fread(file, str, sizeof(str), false);
    playerrecord = strval(str);
}
fclose(file);
printf(\"[DEBUG] Jelenlegi játékos rekord: %i.\", playerrecord);
return 1;
}
public OnFilterScriptExit() {
new File:file = fopen(\"Rekord.txt\", io_write), str[32];
format(str, sizeof(str), \"%i\", playerrecord);
fwrite(file, str);
fclose(file);
printf(\"[DEBUG] Jelenlegi játékos rekord elmentve! A rekord: %i.\", playerrecord);
return 1;
}
public OnPlayerConnect(playerid) {
playercount++;
if(playercount > playerrecord) {
new string[144];
format(string, sizeof(string), \"Játékos-rekord dõlt! Jelenleg %i játékos online!\", playercount);
SendClientMessageToAll(0xFFBB00FF, string);
playerrecord = playercount;
printf(\"[DEBUG] Megdõlt a játékos rekord! Új rekord: %i.\", playercount);
}
return 1;
}
public OnPlayerDisconnect(playerid, reason) {
playercount--;
return 1;
}

 

Dupla hozzászólás automatikusan összefûzve. ( 2013. november 29. - 13:33:51 )

Még ne zárd a témát, tesztelek valamit, lehet lesz benne hiányosság!
« Utoljára szerkesztve: 2013. november 29. - 13:33:51 írta Pedró »

szám beirása fileba+kiolvasása és +- müvelet
« Válasz #8 Dátum: 2013. november 29. - 13:44:00 »
0 Show voters
Köszönöm a segítséget mindenkinek :D a megoldás jó menti+ ki is tudja olvasni köszi a segítséget!
ui.: szólj ha minden oké általad és zárhatok :)

Nem elérhető Pedró

  • 3341
  • 2014 © Az év Szkriptere
    • Profil megtekintése
szám beirása fileba+kiolvasása és +- müvelet
« Válasz #9 Dátum: 2013. november 29. - 13:45:54 »
+1 Show voters
Na itt a végleges verzió!


#define FILTERSCRIPT
#include
new playercount = 0, playerrecord = 0;
public OnFilterScriptInit() {
LoadRecord();
printf(\"[DEBUG] Jelenlegi játékos rekord: %i.\", playerrecord);
return 1;
}
public OnFilterScriptExit() {
SaveRecord();
printf(\"[DEBUG] Jelenlegi játékos rekord elmentve! A rekord: %i.\", playerrecord);
return 1;
}
public OnPlayerConnect(playerid) {
playercount++;
if(playercount > playerrecord) {
playerrecord = playercount;
new string[144];
format(string, sizeof(string), \"Játékos-rekord dõlt! Jelenleg %i játékos online!\", playercount);
SendClientMessageToAll(0xFFBB00FF, string);
SaveRecord();
printf(\"[DEBUG] Megdõlt a játékos rekord! Új rekord: %i. (Elmentve!)\", playercount);
}
return 1;
}
public OnPlayerDisconnect(playerid, reason) {
playercount--;
return 1;
}
stock LoadRecord() {
CheckRecordFile();
new File:file, str[32];
file = fopen(\"Rekord.txt\", io_read);
if(file) {
    fread(file, str, sizeof(str), false);
    playerrecord = strval(str);
}
fclose(file);
}
stock SaveRecord() {
CheckRecordFile();
new File:file = fopen(\"Rekord.txt\", io_write), str[32];
format(str, sizeof(str), \"%i\", playerrecord);
fwrite(file, str);
fclose(file);
}
stock CheckRecordFile() {
   if(!fexist(\"Rekord.txt\")) {
new File:file = fopen(\"Rekord.txt\", io_append);
fwrite(file, \"0\");
fclose(file);
print(\"[DEBUG] A Rekord.txt fájl hiányzott, ezért létre lett hozva \'0\' értékkel!\");
}
}

 


Használd egészséggel! :)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal