Reset Every Two Weeks help +rep
#1

sup all, i want to make a command that resets player cars if he stopped playing for two weeks (its a satdm server).
like it will count from last seen at server untill two weeks his cars will get resets

here is a hint :P
pawn Код:
stock ResetOfflinePlayerFileV(pname[],vehicleid){
    new intname[128];
    format(intname,sizeof(intname),"%s",pname);
    if(dUserINT(intname).("vowned") == vehicleid) {
        dUserSetINT(intname).("vowned",0);
        dUserSetINT(intname).("vowner",0);}
    if(dUserINT(intname).("vowned2") == vehicleid) {
        dUserSetINT(intname).("vowned2",0);
        dUserSetINT(intname).("vowner2",0);}
    if(dUserINT(intname).("vowned3") == vehicleid) {
        dUserSetINT(intname).("vowned3",0);
        dUserSetINT(intname).("vowner3",0);}
    if(dUserINT(intname).("vowned4") == vehicleid) {
        dUserSetINT(intname).("vowned4",0);
        dUserSetINT(intname).("vowner4",0);}
    if(dUserINT(intname).("vowned5") == vehicleid) {
        dUserSetINT(intname).("vowned5",0);
        dUserSetINT(intname).("vowner5",0);}
    if(dini_Int(intname,"vowned6") == vehicleid) {
        dini_IntSet(intname, "vowned6",0);
        dini_IntSet(intname, "vowner6",0);}
    if(dini_Int(intname,"vowned7") == vehicleid) {
        dini_IntSet(intname, "vowned7",0);
        dini_IntSet(intname, "vowner7",0);}
    if(dini_Int(intname,"vowned8") == vehicleid) {
        dini_IntSet(intname, "vowned8",0);
        dini_IntSet(intname, "vowner8",0);}
    SetVehicleToRespawn(vehicleid);
    SetVehicleVirtualWorld(vehicleid,10);
    SetTimerEx("EraseVehicle",5000,0,"i",vehicleid);

    VehicleInfo[vehicleid][bought] = 0;
    VehicleInfo[vehicleid][secure] = 0;
    VehicleInfo[vehicleid][asecure] = 0;
    strmid(VehicleInfo[vehicleid][owner], DEFAULT_OWNER, 0, strlen(DEFAULT_OWNER), 255);
    #if defined TEMP_PARK
    VehicleInfo[vehicleid][x_spawn] = VehicleInfo[vehicleid][ox_spawn];
    VehicleInfo[vehicleid][y_spawn] = VehicleInfo[vehicleid][oy_spawn];
    VehicleInfo[vehicleid][z_spawn] = VehicleInfo[vehicleid][oz_spawn];
    VehicleInfo[vehicleid][za_spawn] = VehicleInfo[vehicleid][oza_spawn];
    #endif
        }
Reply
#2

Store his last connected time by using gettime(); function ( Its the seconds passed since 1st January 1970 ) no need for timers or such those things. and later check if the variable where you stored the last connection, if(gettime()-variablehere < 1209600) .. reset his vehicles. 1209600 = two weeks (seconds).

pawn Код:
enum pInfo
{
    lastconnection
}
new PlayerInfo[MAX_PLAYERS][pInfo];

public OnPlayerDisconnect(playerid)
{
    PlayerInfo[playerid][lastconnection] = gettime();
    return 1;
}
/////////later however way you'll use to check the inactive players its recommended to use them OnGameModeint
if(gettime() - PlayerInfo[playerid][lastconnection] < 1209600)
{
    ResetOfflinePlayerFileV...
}
Reply
#3

bro, thanks for everything i got it but a question i did as you said but i use the timer under stock reset... like that
pawn Код:
if(gettime() - PlayerInfo[pname][lastconnection] < 1209600 && PlayerInfo[pname][Level] < 1)
{
am i okey?
Reply
#4

Yea that's fine! just don't use timers for such those things who needs to be checked every 2 weeks or something that's just a waste of memory just loop through players when you start the game mode just once and check the inactive players.
Reply
#5

better use string for it i used same way the integer goes more that its limit if u add for 2 days even only 1 day works so use string for it... and then when u load the data convert it into integer
so here is what i mean.
1) Get As An String.
2) Save As An String.
3) Load As An Integer. (coz it was not loading fine as an string.)
Reply
#6

Quote:
Originally Posted by AroseKhanNaizi
Посмотреть сообщение
better use string for it i used same way the integer goes more that its limit if u add for 2 days even only 1 day works so use string for it... and then when u load the data convert it into integer
so here is what i mean.
1) Get As An String.
2) Save As An String.
3) Load As An Integer. (coz it was not loading fine as an string.)
I can't understand what you mean, may you give me an example, how the integer goes more than its limit? we are checking the current stamp time ( seconds passed since 1970 ) it cannot go higher than its limit because its constant, maybe you made something wrong while loading your variable, if not please provide example!
Reply
#7

https://sampforum.blast.hk/showthread.php?tid=535701 Check This
Reply
#8

You will reach the limit in pawn (32 bit cells) if you use a timestamp from 2038 and that isn't the case if you add to our current time (2014) only two days...
Reply
#9

Quote:
Originally Posted by Nero_3D
Посмотреть сообщение
You will reach the limit in pawn (32 bit cells) if you use a timestamp from 2038 and that isn't the case if you add to our current time (2014) only two days...
btw that what i ment
Reply
#10

lol, i got some errors in ma pawn
pawn Код:
stock ResetOfflinePlayerFileV(pname[],vehicleid)
{
    if(gettime() - PlayerInfo[pname][lastconnection] < 1209600 && PlayerInfo[pname][Level] < 1)
    {
        new intname[128];
        format(intname,sizeof(intname),"%s",pname);
        if(dUserINT(intname).("vowned") == vehicleid) {
            dUserSetINT(intname).("vowned",0);
            dUserSetINT(intname).("vowner",0);}
        if(dUserINT(intname).("vowned2") == vehicleid) {
            dUserSetINT(intname).("vowned2",0);
            dUserSetINT(intname).("vowner2",0);}
        if(dUserINT(intname).("vowned3") == vehicleid) {
            dUserSetINT(intname).("vowned3",0);
            dUserSetINT(intname).("vowner3",0);}
        if(dUserINT(intname).("vowned4") == vehicleid) {
            dUserSetINT(intname).("vowned4",0);
            dUserSetINT(intname).("vowner4",0);}
        if(dUserINT(intname).("vowned5") == vehicleid) {
            dUserSetINT(intname).("vowned5",0);
            dUserSetINT(intname).("vowner5",0);}
        if(dini_Int(intname,"vowned6") == vehicleid) {
            dini_IntSet(intname, "vowned6",0);
            dini_IntSet(intname, "vowner6",0);}
        if(dini_Int(intname,"vowned7") == vehicleid) {
            dini_IntSet(intname, "vowned7",0);
            dini_IntSet(intname, "vowner7",0);}
        if(dini_Int(intname,"vowned8") == vehicleid) {
            dini_IntSet(intname, "vowned8",0);
            dini_IntSet(intname, "vowner8",0);}
        SetVehicleToRespawn(vehicleid);
        SetVehicleVirtualWorld(vehicleid,10);
        SetTimerEx("EraseVehicle",5000,0,"i",vehicleid);

        VehicleInfo[vehicleid][bought] = 0;
        VehicleInfo[vehicleid][secure] = 0;
        VehicleInfo[vehicleid][asecure] = 0;
        strmid(VehicleInfo[vehicleid][owner], DEFAULT_OWNER, 0, strlen(DEFAULT_OWNER), 255);
        #if defined TEMP_PARK
        VehicleInfo[vehicleid][x_spawn] = VehicleInfo[vehicleid][ox_spawn];
        VehicleInfo[vehicleid][y_spawn] = VehicleInfo[vehicleid][oy_spawn];
        VehicleInfo[vehicleid][z_spawn] = VehicleInfo[vehicleid][oz_spawn];
        VehicleInfo[vehicleid][za_spawn] = VehicleInfo[vehicleid][oza_spawn];
        #endif
    }
}

stock ResetOfflinePlayerFileB(pname[],bizid)
{
    if(gettime() - PlayerInfo[pname][lastconnection] < 1209600 && [Level] < 1)
    {
        new intname[128];
        format(intname,sizeof(intname),"%s",pname);
        new cbmon = BizInfo[bizid][cashbox];
        new bmon = dUserINT(intname).("bank");
        dUserSetINT(intname).("Bank",cbmon+bmon);
        dUserSetINT(intname).("bowner",0);
        dUserSetINT(intname).("bowned",0);
    }
}
PHP код:
C:\Users\Kamal_Abdelnoor\Desktop\3x-Rc1-2 Server\Gamemodes\KSTDM.pwn(3404) : error 033: array must be indexed (variable "pname")
C:\Users\Kamal_Abdelnoor\Desktop\3x-Rc1-2 Server\Gamemodes\KSTDM.pwn(3451) : error 033: array must be indexed (variable "pname")
C:\Users\Kamal_Abdelnoor\Desktop\3x-Rc1-2 Server\Gamemodes\KSTDM.pwn(3451) : warning 215expression has no effect
C
:\Users\Kamal_Abdelnoor\Desktop\3x-Rc1-2 Server\Gamemodes\KSTDM.pwn(3451) : error 001expected token";"but found "]"
C:\Users\Kamal_Abdelnoor\Desktop\3x-Rc1-2 Server\Gamemodes\KSTDM.pwn(3451) : error 029invalid expressionassumed zero
C
:\Users\Kamal_Abdelnoor\Desktop\3x-Rc1-2 Server\Gamemodes\KSTDM.pwn(3451) : fatal error 107too many error messages on one line
Compilation aborted
.Pawn compiler 3.2.3664              Copyright (c1997-2006ITB CompuPhase
5 Errors

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)