Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: Ciger poslato Novembar 25, 2021, 18:32:24 POSLE PODNE

Naslov: OnPlayerKeyStateChange
Poruka od: Ciger poslato Novembar 25, 2021, 18:32:24 POSLE PODNE
Problem(error/warning):radim posao cistaca ulica i sada mi je potrebno kada dodjem do objekta postavljenog i pritisnem ctrl da pokupi tj obrise objekat ali se nista ne desava
Deo skripte: [pawn]   if(newkeys & KEY_ACTION)
   {
       if(PlayerInfo[playerid][pPosao] == POSAO_CISTAC)
      {
          new Float:Pos[3];
            new ocisceno = 0;
            for(new i = 0; i < sizeof(Smece); i++)
            {
                GetPlayerObjectPos(playerid, Smece, Pos[0], Pos[1], Pos[2]);
                if(IsPlayerInRangeOfPoint(playerid, 2.2, Pos[0], Pos[1], Pos[2]) && VoziloCistac(GetPlayerVehicleID(playerid)))
                {
                    DestroyDynamicObject(Smece);
                    Smece = 999;
                }
                if(Smece == 999)
                {
                    ocisceno++;
                    new string[24];
                    format(string, sizeof(string), "%d/30", ocisceno);
                    SCM(playerid,zuta2,string);
                }
            }
            if(ocisceno == 30)
            {
                SCM(playerid, zuta2, "Uspesno ste ispunili normu, vratite vozilo u krug firme!");
            }
        }
}[/pawn]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log):
Vaš odgovor
Naslov: Odg: OnPlayerKeyStateChange
Poruka od: rane poslato Novembar 25, 2021, 18:45:19 POSLE PODNE
Kako su ti kreirani smece objekti
Naslov: Odg: OnPlayerKeyStateChange
Poruka od: Bit Frosty poslato Novembar 25, 2021, 19:00:23 POSLE PODNE
Prvo proveri da li ti se poziva key kada pritisnes (da nema kakav return ili nesto da prekida kod pre nego sto dodje do tog dela).
mozes odmah unutar if(newkeys & KEY_ACTION), samo print ili SendClientMessage

Drugo, ako ti se poziva to, onda daj VoziloCistac funkciju. Takodje predlazem da load kao prvi plugin (ispred svih ostallih) CrashDetect i da probas onda pa vidis u log da li ti izbacuje nesto mozda (nece me cuditi ako budes imao kakav overflow...)
Naslov: Odg: OnPlayerKeyStateChange
Poruka od: Ciger poslato Novembar 25, 2021, 20:26:12 POSLE PODNE
if(newkeys & KEY_ACTION)
{
SCM(playerid, zuta2, "NECE NISTA");
    if(PlayerInfo[playerid][pPosao] == POSAO_CISTAC)
{
SCM(playerid, zuta2, "NECE NISTA 1");
new Float:Pos[3];
        new pokupljeno = 0;
        for(new i = 0; i < sizeof(Smece); i++)
        {
        SCM(playerid, zuta2, "NECE NISTA 2");
            GetPlayerObjectPos(playerid, Smece[i], Pos[0], Pos[1], Pos[2]);
            if(IsPlayerInRangeOfPoint(playerid, 2.2, Pos[0], Pos[1], Pos[2]) && VoziloCistac(GetPlayerVehicleID(playerid)))
            {
            SCM(playerid, zuta2, "NECE NISTA 3");
                DestroyDynamicObject(Smece[i]);
                Smece[i] = 999;
            }
            if(Smece[i] == 999)
            {
                pokupljeno++;
                new string[512];
                SCM(playerid, zuta2, "NECE NISTA 4");
                format(string, sizeof(string), "%d/30", pokupljeno);
                PlayerTextDrawSetString(playerid, CistacTD[playerid][4], string);
            }
        }
        if(pokupljeno == 30)
        {
            SCM(playerid, zuta2, "Uspesno ste ispunili normu, vratite vozilo u krug firme!");
            SetPlayerCheckpoint(playerid, 1004.9808,-1095.3148,23.8281, 3.0);
        }
        }

Ovde gde pise nece nista 2 tu zapuca posalje jednno 10 poruka, moze pomoc ?
Naslov: Odg: OnPlayerKeyStateChange
Poruka od: noddy_ poslato Novembar 25, 2021, 20:57:42 POSLE PODNE
Citat: Ciger poslato Novembar 25, 2021, 20:26:12 POSLE PODNE
if(newkeys & KEY_ACTION)
{
SCM(playerid, zuta2, "NECE NISTA");
    if(PlayerInfo[playerid][pPosao] == POSAO_CISTAC)
{
SCM(playerid, zuta2, "NECE NISTA 1");
new Float:Pos[3];
        new pokupljeno = 0;
        for(new i = 0; i < sizeof(Smece); i++)
        {
        SCM(playerid, zuta2, "NECE NISTA 2");
            GetPlayerObjectPos(playerid, Smece[i], Pos[0], Pos[1], Pos[2]);
            if(IsPlayerInRangeOfPoint(playerid, 2.2, Pos[0], Pos[1], Pos[2]) && VoziloCistac(GetPlayerVehicleID(playerid)))
            {
            SCM(playerid, zuta2, "NECE NISTA 3");
                DestroyDynamicObject(Smece[i]);
                Smece[i] = 999;
            }
            if(Smece[i] == 999)
            {
                pokupljeno++;
                new string[512];
                SCM(playerid, zuta2, "NECE NISTA 4");
                format(string, sizeof(string), "%d/30", pokupljeno);
                PlayerTextDrawSetString(playerid, CistacTD[playerid][4], string);
            }
        }
        if(pokupljeno == 30)
        {
            SCM(playerid, zuta2, "Uspesno ste ispunili normu, vratite vozilo u krug firme!");
            SetPlayerCheckpoint(playerid, 1004.9808,-1095.3148,23.8281, 3.0);
        }
        }

Ovde gde pise nece nista 2 tu zapuca posalje jednno 10 poruka, moze pomoc ?

Zapuca ti 10 poruka jer ti je to u loopu...
Naslov: Odg: OnPlayerKeyStateChange
Poruka od: Ciger poslato Novembar 25, 2021, 21:04:20 POSLE PODNE
Pa da ali sto ne izvrsava dalje funkciju, sto ne proveri poziciju objekta i da li je igrac u toj poziciji?
Naslov: Odg: OnPlayerKeyStateChange
Poruka od: rane poslato Novembar 25, 2021, 21:06:29 POSLE PODNE
Ocigledno pogresno kreiras objekte, zato sam ti na pocetku trazio da posaljes smece objekt kako kreiras ali tebe boli kurac za mojim komentarom. Provjeravas poziciju igracevog objekta i onda brises dinamican objekat. Jasno je gdje je greska ali ti ne trazis rjesenje nego samo povrsno ispitujes.
Naslov: Odg: OnPlayerKeyStateChange
Poruka od: Ciger poslato Novembar 25, 2021, 21:10:36 POSLE PODNE
Prvo sam pokusa sa komandom da stvorim objekte CreatePlayerObject ali nisu se stvarali pa sam ih pod ongamemodeinit kreirao
Smece[0] = CreateDynamicObject(2840, 1335.57166, -1157.28027, 22.79760,0,0,0); ima ih dvadesetak da ih sve ne postavljam
Naslov: Odg: OnPlayerKeyStateChange
Poruka od: _tayloR poslato Novembar 25, 2021, 21:14:42 POSLE PODNE
Objekat kreiras kao dynamic a getujes ga kao GetPlayerObjectPos
Naslov: Odg: OnPlayerKeyStateChange
Poruka od: rane poslato Novembar 25, 2021, 21:33:45 POSLE PODNE
Citat: Ciger poslato Novembar 25, 2021, 21:10:36 POSLE PODNE
Prvo sam pokusa sa komandom da stvorim objekte CreatePlayerObject ali nisu se stvarali pa sam ih pod ongamemodeinit kreirao
Smece[0] = CreateDynamicObject(2840, 1335.57166, -1157.28027, 22.79760,0,0,0); ima ih dvadesetak da ih sve ne postavljam
da si mi to odma rekao do sada bi rijesili problem
GetDynamicObjectPos umjesto getplayerobjectpos i rijesen problem
Naslov: Odg: OnPlayerKeyStateChange
Poruka od: Ciger poslato Novembar 25, 2021, 22:00:42 POSLE PODNE
Hvala, reseno