Pomoc za dodavanje neaktivnosti

Započeo Nidza
pre 7 godina
739
pregleda
14
postova
Nidza
Shot Caller
pre 7 godina
Problem(error/warning): Ovako zanima me kako da napravim da se na svakih 1h odnosno svaki put kad stigne plata da se neaktivnost na kuci i firmi poveca za 1
Dio skripte: [ pawn ]dacu sta treba[ /pawn ]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): [ code ]vaš odgovor[ /code ]
Slika/video ingame problema(obavezno ako je ingame problem): link slike
James_SmithXDl
OG Legend
pre 7 godina

#include

#define MAX_KUCA 6
#define KUCE_FILE "/Kuce/%d.ini"

enum kucee { kVlasnik,kVlasnikIG,kNeaktivnost };
new KucaInfo;

public OnFilterScriptInit()
{
SetTimer("NeaktivnostTimer",60*1000*60,true);
return 1;
}

forward NeaktivnostTimer();
public NeaktivnostTimer()
{
new kuceprovj;
for(new id = 0; id < MAX_KUCA; id++)
{
    format(kuceprovj,sizeof(kuceprovj),KUCE_FILE,id);
    if(!fexist(kuceprovj)) continue;
    if(KucaInfo==0)
    {
        KucaInfo+=1;
        printf("HTest -> Kuca ID:%d, Neaktivnost %d sati",id,KucaInfo);
    }
}
return 1;
}

evo ti primjer za toga s tim da sam ja napravio timer svakih 60min ( 1 sat ) da se pokrece i da pregledava primjer za neaktivnost kuca,ti samo postavi ovo kad se logira igrac

if(PlayerInfo!=-1)
{
if(KucaInfo!=0)
{
KucaInfo[PlayerInfo] = 0;
}
KucaInfo[PlayerInfo] = 1;
}

te u public OnPlayerDisconnect
if(PlayerInfo!=-1)
{
KucaInfo[PlayerInfo] = 0;
}
Nidza
Shot Caller
pre 7 godina
jel je moguce nekako da se to izvede da kad god dodje plata i neaktivnost se poveca za 1
expressoboy123
Godfather
pre 7 godina
Ne pravis tajmer nego jednostavno pozoves funkciju ako ces na platu (predpostavljam da je plata napravljena u nekoj funkciji).
Nidza
Shot Caller
pre 7 godina
forward PayDay(i);
public PayDay(i)
{
        if(!IsPlayerConnected(i) || UlogovanProvera == 0) return 1;
        new stariiznos = PlayerInfo;
        if(PlayerInfo != -1)
        {
                if(PlayerInfo < KucaInfo[PlayerInfo])
                {
                        PlayerInfo = -1;
                        PlayerInfo = SPAWN_NORMAL;
                        SCM(i, -1, ""SIVA"Niste imali da platiti kiriju za kucu, iseljeni ste!");
                }
                PlayerInfo -= KucaInfo[PlayerInfo];
        }
    if(PlayerInfo < 40)
        {
                new string;
            strcat(string, "Niste igrali dovoljno dugo da biste dobili platu!(Minimum 40min od 60min)", sizeof(string));
SPD(i, AH_DIALOG, DIALOG_STYLE_MSGBOX, "Obavestenje:", string, "U redu", "");
                DobioPay = 1;
                return 1;
        }
Nidza
Shot Caller
pre 7 godina
i ja sad zelim ovde kad stigne plata da se na svim firmama doda neaktivnost za 1 a ukoliko imaju neaktivnost vecu ili jednaku 750 da se firma proda odnosno da joj se skine vlasnik.
Nidza
Shot Caller
pre 7 godina
ja sam pokusavao nesto i napravio sam ovo:
forward NeaktivnostFirme(i);
public NeaktivnostFirme(i)
{
new gFile[ 50 ];
    format(gFile, sizeof(gFile), FIRMA_FILE, i);

if(fexist(gFile))
{

if(FirmaInfo == 1 )
{

FirmaInfo++;
if(FirmaInfo >= 750 )
{

new string1;
format(string1, sizeof(string1), ""RCRVENA" Firma ID: %d je prodata zbog neaktivnosti !", i);
SCMTA(-1, string1);

    FirmaInfo = 0;
    FirmaInfo = 0;
strmid(FirmaInfo, "Niko", 0, strlen("Niko"), 32);
// KuceLP( i );

}
SacuvajFirmu(i);
// FirmeLP(i);
}
}

if( i+1 < MAX_FIRMI) SetTimerEx( "NeaktivnostFirme", 10, false, "d", i+1 );
    return 1;
}
James_SmithXDl
OG Legend
pre 7 godina
Nidza wrote on December 16, 2018, 3:08 pm:
jel je moguce nekako da se to izvede da kad god dodje plata i neaktivnost se poveca za 1
a buraz samo dodaj gore provjeru u funkciji neaktivnosttimeru ako nije kupljena da prebacuje na nar id
to jest
if(KucaInfo == 0)  continue;

i
NeaktivnostTimer();
dodas tu gdje je funkcija plate ... i tjt onda ne koristi SetTimer
Nidza wrote on December 16, 2018, 3:16 pm:
forward PayDay(i);
public PayDay(i)
{
        if(!IsPlayerConnected(i) || UlogovanProvera == 0) return 1;
        new stariiznos = PlayerInfo;
        if(PlayerInfo != -1)
        {
                if(PlayerInfo < KucaInfo[PlayerInfo])
                {
                        PlayerInfo = -1;
                        PlayerInfo = SPAWN_NORMAL;
                        SCM(i, -1, ""SIVA"Niste imali da platiti kiriju za kucu, iseljeni ste!");
                }
                PlayerInfo -= KucaInfo[PlayerInfo];
        }
    if(PlayerInfo < 40)
        {
                new string;
            strcat(string, "Niste igrali dovoljno dugo da biste dobili platu!(Minimum 40min od 60min)", sizeof(string));
SPD(i, AH_DIALOG, DIALOG_STYLE_MSGBOX, "Obavestenje:", string, "U redu", "");
                DobioPay = 1;
                return 1;
        }
e tu dodas
NeaktivnostTimer();
gdje ispise da je dobio platu sto znaci da je to ispod posto vidim ovo da ti ima niste igrali dovoljno dugo da biste dobili platu ... ako zelis i tak da ti racuna onda ispod  if(!IsPlayerConnected(i) || UlogovanProvera == 0) return 1;
dodas NeaktivnostTimer(); , a ako ne ako samo kad se dobije plata
onda dodas ispod teksta tu u PayDay funkciji gdje ispise da je dobio platu
NeaktivnostTimer();
expressoboy123
Godfather
pre 7 godina
Pogledaj funkciju gore koju ti je decko poslao. Mnogo je jednostavnija nego ta tvoja dole. I ako hoces u plati to da dodas samo upises NeaktivnostTimer(); (pozivas najobicniju funkciju).

Preduhitrio me🤣
Nidza
Shot Caller
pre 7 godina
ako mozete samo da mi pojasnite gde tacno sta da stavim
Nidza
Shot Caller
pre 7 godina
ja sam dodao NeaktivnostTimer(); u funkciji PayDay
James_SmithXDl
OG Legend
pre 7 godina
#include 

#define MAX_KUCA 6
#define KUCE_FILE "/Kuce/%d.ini"

enum kucee { kKupljena,kVlasnik,kVlasnikIG,kNeaktivnost };
new KucaInfo;

forward NeaktivnostTimer();
public NeaktivnostTimer()
{
new kuceprovj; new string1;
for(new id = 0; id < MAX_KUCA; id++)
{
    format(kuceprovj,sizeof(kuceprovj),KUCE_FILE,id);
    if(!fexist(kuceprovj)) continue;
    if(KucaInfo==0) continue;
    if(KucaInfo==0)
    {
        KucaInfo+=1;
        printf("HTest -> Kuca ID:%d, Neaktivnost %d sati",id,KucaInfo);
if(KucaInfo==750)
{
    KucaInfo = 0;
    KucaInfo = 0;
    format(KucaInfo,24,"Niko");
  SacuvajKucu(id); KuceLP(id);
    format(string1, sizeof(string1), ""RCRVENA" Kuca ID: %d je prodata zbog neaktivnosti !",id);
SCMTA(-1, string1);
}
}
}
return 1;
}

//----------------------------------------------------------
if(PlayerInfo!=-1) // kad se logira dodas ovo
{
if(KucaInfo!=0)
{
KucaInfo[PlayerInfo] = 0;
}
KucaInfo[PlayerInfo] = 1;
}

    if(PlayerInfo!=-1) // u OnPlayerDisconnect
{
KucaInfo[PlayerInfo] = 0;
}


// dodas u PayDay funkciju ovo:
//--------------------------------------
NeaktivnostTimer();
//--------------------------------------
evo ti primjer i samo primijenis svojoj skripti to
sve sto ti treba jest da dodas u enum od Kuca
kVlasnikIG
i da spojis to sto sam ti poslao / napisao / ispravio malo prema tvojoj skripti
i da stavis da kod kupovine kuce stavlja da je vlasnik IG
KucaInfo[PlayerInfo] = 1;

i kad se proda kuca -- prije setanja igracu kuce na id -1 (prodan)
KucaInfo[PlayerInfo] = 0;

i tako isto napravis i za firme npr..
Nidza
Shot Caller
pre 7 godina
uspeo sam ovo da sredim ali se javio neki problem vlasniku se i dalje vodi ta kuca a ona je prodata
kako sad da napravim da se i njemu kuca podesi na -1
James_SmithXDl
OG Legend
pre 7 godina
Napravis kad se logira preko strcmp provjere da provjeraje jel vlasnikk kuce kojoj posjeduje id ak nije da mu stavi na -1

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava