-
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 )
-
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;
}
-
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 :/
-
#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.
-
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] __________________________________________________
-
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. :)
-
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
-
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!
-
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 :)
-
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! :)