-
Üdv fórumozók!
Azt szeretném megvalósítani, hogy a szerverem minden 1 percben adjon a playernek +1 pontot.
El is kezdtem, de abba a problémába ütköztem, hogy nem 1 percenként adja a pontot, hanem valamivel kevesebb és 499 ad mindíg.
Mi lehet a gond?
Így néz ki a dolog:
forward Pont(playerid);
SetTimer(\"Pont\",1000*60*1,true);
public Pont(playerid)
{
for(new i=1;i<MAX_PLAYERS;i++)
{
SetPlayerScore(playerid, GetPlayerScore(playerid)+1);
}
}
-
Set Timert- 60.000-rel próbáltad? Szozat nélkül talán jóbb.
-
\"Kicsit\" hibás :D
forward Pont(playerid);
public OnFilterScriptInit()
{
SetTimer(\"Pont\", 60000, 1);
return 1;
}
public Pont(playerid)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
SetPlayerScore(playerid, GetPlayerScore(playerid)+1);
}
}
-
Mondjuk igaz :D
-
mostmár jó az idõ, de most viszont az a gond hogy 1 percenként ad 2x500pontot
azaz 1 percenként 1000pontot, pedig 1et kellene
-
\"Kicsit\" hibás :D
forward Pont(playerid);
public OnFilterScriptInit()
{
SetTimer(\"Pont\", 60000, 1);
return 1;
}
public Pont(playerid)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
SetPlayerScore(playerid, GetPlayerScore(playerid)+1);
}
}
ez se volt annyival jobb xD mondjuk egy kicsivel azért már jobb volt de figyelmetlen xD
forward Pont(playerid);
public OnFilterScriptInit()
{
SetTimer(\"Pont\", 60000, 1);
return 1;
}
public Pont(playerid)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
SetPlayerScore(i, GetPlayerScore(i)+1);
}
}
aki ügyes meglátja mit írtam át xD
-
\"Kicsit\" hibás :D
forward Pont(playerid);
public OnFilterScriptInit()
{
SetTimer(\"Pont\", 60000, 1);
return 1;
}
public Pont(playerid)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
SetPlayerScore(playerid, GetPlayerScore(playerid)+1);
}
}
Ez is hibás mert csak az ID 0 -nak adja majd a pontot oda.. :)
-
Zyzu késtél ezzel a kijelentéseddel egy pöpet xD
-
Akkor is hibás nem az i de az is hiba volt hanem a SeTimer helyett én inkább SeTimerEx -et használnék mivel csak az ID: 0 -nak adja..
-
Ez már jó lett, de még mindíg hibás, mert 2 perc alatt kaptam 4 pontot, holott percenként csak 1 pontot kellene hogy adjon
-
forward Pont(playerid);
public OnFilterScriptInit()
{
SetTimer(\"Pont\", 60000, true);
return 1;
}
public Pont(playerid)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
SetPlayerScore(i, GetPlayerScore(i)+1);
}
}
utsó kommim ide,de ha ebben te látsz olyan hibát ami kihat a mûködésére szólj, és még ha tegyük fel a Pont eljárás playerid-ként csak 0-át kapna folyton akkor se befolyásolja a for ciklust mivel az a saját egyedi i változójával baromkodik és az i változik emiatt nem szükséges mégcsak az se hogy a eljárás megkapja a playerid-t, szóvaaal... :whistle:
sry a féloffért mindenkinek,csak van amit nem bírok elviselni xD
na vissza témához, rögtön letesztelem mennyire rossz is ez a verzió.
addig meg byebi :smokin:
-
forward Pont(playerid);
public OnFilterScriptInit()
{
SetTimer(\"Pont\", 60000, true);
return 1;
}
public Pont(playerid)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
SetPlayerScore(i, GetPlayerScore(i)+1);
}
}
utsó kommim ide,de ha ebben te látsz olyan hibát ami kihat a mûködésére szólj, és még ha tegyük fel a Pont eljárás playerid-ként csak 0-át kapna folyton akkor se befolyásolja a for ciklust mivel az a saját egyedi i változójával baromkodik és az i változik emiatt nem szükséges mégcsak az se hogy a eljárás megkapja a playerid-t, szóvaaal... :whistle:
sry a féloffért mindenkinek,csak van amit nem bírok elviselni xD
na vissza témához, rögtön letesztelem mennyire rossz is ez a verzió.
addig meg byebi :smokin:
Ezer bocs, már megoldottam. Én rontottam el azzal, hogy benthagytam az elõzõ settimer-t is és így ezért adott 2 pontot percenként.
-
Ha müxik akkor oksa ;D valszeg nem sokat segítettem, de ha mégis akkor szívesen ^-^
-
Mostmár csak az kellene, hogy mentse is egy fájlba mindenki pontját dinivel.
Aztán meg betöltse. (dinihez egyáltalán nem értek :S)
-
#include <a_samp>
#include <dini>
enum pAdat
{
score
}
new nev[MAX_PLAYER_NAME];
new loc[100];
new PlayerAdat[MAX_PLAYERS][pAdat];
public OnFilterScriptInit()
{
print(\"\\n--------------------------------------\");
print(\" Score Saver 4 Chansee by RedDEV (founded by Red-Eye)\");
print(\"--------------------------------------\\n\");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid, nev, sizeof(nev));
format(loc, sizeof(loc), \"/scores/%s.ini\",nev);
if(!dini_Exists(loc))
{
dini_Create(loc);
dini_IntSet(loc, \"Score\", 0);
PlayerAdat[playerid][score] = dini_Int(loc, \"Score\");
}
else
{
PlayerAdat[playerid][score] = dini_Int(loc, \"Score\");
SetPlayerScore(playerid,PlayerAdat[playerid][score]);
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
PlayerAdat[playerid][score] = GetPlayerScore(playerid); // <--- OTT xD
GetPlayerName(playerid,nev,sizeof(nev));
format(loc,sizeof(loc),\"/scores/%s.ini\",nev);
if(!dini_Exists(loc))
{
dini_Create(loc);
dini_IntSet(loc, \"Score\", 0);
}
else
{
dini_IntSet(loc,\"Score\",PlayerAdat[playerid][score]);
}
return 1;
}
másnak írtam de lehet hogy neked is jó lesz akkor de azért nézd át már régebben volt akkor mondjuk leteszteltem de akkor is xD jah meg ne felejts el scriptfiles-ban létrehozni egy scores nevû mappát
ha nem értesz rajta valamit szólj 8)
-
Akkor is hibás nem az i de az is hiba volt hanem a SeTimer helyett én inkább SeTimerEx -et használnék mivel csak az ID: 0 -nak adja..
na ezzel a hsz-el, kicsit besültél :DDDd
-
Minden tökéletesen mûködik. Köszönök midnent.
Témát zárom!