Lift

_.Xavi._ Započeo _.Xavi._
pre 2 godine
2,212
pregleda
23
postova
Ova tema je zaključana. Samo moderatori i administratori mogu odgovarati.
_.Xavi._
Hustler
pre 2 godine
Pitanje/savjet: Treba mi lift koji ide od jedne do druge lokacije, i ceka 5 sekundi kad dodje do lokacije, i onda se vraca nazad i opet ceka 5 sec i tako iznova ( nikad ne staje, uvek ide od jedne do druge lokacije i ceka 5 sec )
Opširnije: Objašnjeno sve gore
Dodatno: ostaviti samo prazno mesto gde su kordinate za te 2 lokacije, dodacu ja kasnije
realnaith
Crime Lord
pre 2 godine
Ovo je pitanje/savet ? Il je ispuni mi zelju ?

Nauci osnove, tek onda se javi, ah da nece biti potrebe jer ces znati sam napraviti...
_.Xavi._
Hustler
pre 2 godine
hvala, eto ja tebe cekao da mi kazes da naucim osnove, sam se ne bih setio nikad
Garadooo
Forum Don
pre 2 godine
Objasnit cu ti logicki sve to, nadam se da ces se uspjeti sam snaci i napisat kod, trenutno nisam u mogucnosti pisati kod.

Uglavnom, trebat ce ti jedan timer kojeg ce se vrtjeti konstantno u intervalu od 5 sekundi, mozes napraviti jednu varijablu pomocu koje ces provjeravati poziciju lifta i na osnovu toga joj mijenjati vrijednost i u zavisnosti od uslova pomjerati na zeljeno mjesto.

https://www.open.mp/docs/scripting/functions/SetTimer
https://www.open.mp/docs/scripting/functions/MoveObject

Ne bi ti trebalo biti tesko za snaci se.
_.Xavi._
Hustler
pre 2 godine
probao sam ranije sa onim chatgpt, evo koda koji sam dobio
// Kreiraj objekat
new lvlift = CreateDynamicObject(19447, 1957.717041, 1902.649047, 26.410770, -0.299999, 90.299980, -117.099967, 0.0, 0.0, 0.0, -1, -1, -1, 300.0, 300.0);

// Postavi objekat u kretanje ka drugoj lokaciji
MoveDynamicObject(lvlift, 1957.383300, 1902.464843, 129.890335, 5.0, 0.0, 0.0);
new isMoving = true;

// Funkcija koja ce se pozivati svakih 5 sekundi nakon što objekt stigne na ciljnu lokaciju
forward OnObjectMoveEnd(lvlift);

public OnObjectMoveEnd(new lvlift)
{
    // Provjeri da li se objekt trenutno krece
    if (isMoving)
    {
        // Ako se objekt krece, postavi zastavicu na false i pricekaj 5 sekundi
        isMoving = false;
        SetTimer(5000, true, "OnTimerFinished", "i", objid);
    }
    else
    {
        // Ako se objekt ne krece, postavi zastavicu na true i pošalji ga natrag na pocetnu lokaciju
        isMoving = true;
        MoveDynamicObject(lvlift, 1957.717041, 1902.649047, 26.410770, 5.0, 0.0, 0.0);
    }
    return 1;
}

// Funkcija koja se poziva kada istekne vrijeme cekanja od 5 sekundi
public OnTimerFinished(timerid, new lvlift)
{
    // Postavi zastavicu na true i pošalji objekt natrag na pocetnu lokaciju
    isMoving = true;
    MoveDynamicObject(lvlift, 1957.717041, 1902.649047, 26.410770, 5.0, 0.0, 0.0);
    return 1;
}
  al kad kompajlujem izlazi ono pawn library has stopped working
Rax_King
Godfather
pre 2 godine

forward MoveElevator();

const Float:ELEVATOR_SPEED = 3.0;

static g_sElevatorObject;
static g_sElevatorLevel;
static bool:g_sElevatorGoingUp;
static const g_sElevatorLevelPos[] = {
3.0,
5.0,
7.0,
10.0
};

public OnGameModeInit() {
g_sElevatorObject = CreateObject(x, y, g_sElevatorLevelPos, rx, ry, rz);
g_sElevatorLevel = 0;
g_sElevatorGoingUp = true;

SetTimer("MoveElevator", 5000, false);
return 1;
}

public MoveElevator() {
if (g_sElevatorGoingUp && ++ g_sElevatorLevel == sizeof g_sElevatorLevelPos) {
g_sElevatorLevel = sizeof g_sElevatorLevelPos - 2;
g_sElevatorGoingUp = false;
} else if (!g_sElevatorGoingUp && -- g_sElevatorLevel == -1) {
g_sElevatorLevel = 2;
g_sElevatorGoingUp = true;
}

MoveObject(g_sElevatorObject, x, y, g_sElevatorLevelPos, ELEVATOR_SPEED);
}

public OnObjectMoved(objectid) {
if (objectid == g_sElevatorObject) {
SetTimer("MoveElevator", 5000, false);
}
return 1;
}
Mihailo573
Street Runner
pre 2 godine
// xunder wrote on March 10, 2023, 11:39 pm:

forward MoveElevator();

const Float:ELEVATOR_SPEED = 3.0;

static g_sElevatorObject;
static g_sElevatorLevel;
static bool:g_sElevatorGoingUp;
static const g_sElevatorLevelPos[] = {
3.0,
5.0,
7.0,
10.0
};

public OnGameModeInit() {
g_sElevatorObject = CreateObject(x, y, g_sElevatorLevelPos, rx, ry, rz);
g_sElevatorLevel = 0;
g_sElevatorGoingUp = true;

SetTimer("MoveElevator", 5000, false);
return 1;
}

public MoveElevator() {
if (g_sElevatorGoingUp && ++ g_sElevatorLevel == sizeof g_sElevatorLevelPos) {
g_sElevatorLevel = sizeof g_sElevatorLevelPos - 2;
g_sElevatorGoingUp = false;
} else if (!g_sElevatorGoingUp && -- g_sElevatorLevel == -1) {
g_sElevatorLevel = 2;
g_sElevatorGoingUp = true;
}

MoveObject(g_sElevatorObject, x, y, g_sElevatorLevelPos, ELEVATOR_SPEED);
}

public OnObjectMoved(objectid) {
if (objectid == g_sElevatorObject) {
SetTimer("MoveElevator", 5000, false);
}
return 1;
}
sta si ti ovde ispisao Boze sačuvaj.. moglo je mnogo kraće i lepse
_.Xavi._
Hustler
pre 2 godine
Iv0 Dev wrote on March 11, 2023, 1:13 pm:
sta si ti ovde ispisao Boze sačuvaj.. moglo je mnogo kraće i lepse


daj mi kraci ako znas, ako ne nema veze posluzice i ovo ako radi, nisam jos probao
riiki.exe
Shot Caller
pre 2 godine
_.Xavi._ wrote on March 11, 2023, 1:18 pm:
daj mi kraci ako znas, ako ne nema veze posluzice i ovo ako radi, nisam jos probao


pise ti xunder, ne neki lijevi haha, uzmi to i probaj...
Rax_King
Godfather
pre 2 godine
Iv0 Dev wrote on March 11, 2023, 1:13 pm:
sta si ti ovde ispisao Boze sačuvaj.. moglo je mnogo kraće i lepse


Napisano je tacno ono sto je autor teme trazio da skripta radi.

Krace? Da, moglo je. Mogao sam koristiti jednu varijablu umjesto Level i GoingUp (Level bi mogao u tom slucaju ici samo do 1073741823 jer bi se radio masking prvih 30 bitova za level, poslednji 31. bit za GoingUp). Da li je to ono sto bi autor teme mogao da razumije bez da pisem velike komentare? Sumnjam.

Ljepse? Ljepota koda je subjektivna ali kod koji sam napisao je lako razumljiv svakome ko prati moderne prakse programiranja. Ne znam sta tacno ovdje moze da bude ljepse, definicije i varijable su self-descriptive, koristi se K&R koji je jedan od (ako ne i) najkoriscenijih stilova indentacije i skripta je sama po sebi jako kratka da bi mogao reci da je nerazumna.

Elem, vjerovatno si mladji i pojma nemas cemu sluzi forum ali evo tldr. da ti dam, ako vec znas bolji nacin ili hoces da ispravis moj odgovor onda uradi to. Svojim komentarom nikome nisi pomogao.

PS. Znam da je tebi interesantna zamisao da me mozes ispraviti i volio bih da pokazes svima nama koji nacin je bolji od mog. Cekam.
Garadooo
Forum Don
pre 2 godine
// xunder wrote on March 12, 2023, 5:27 am:
Napisano je tacno ono sto je autor teme trazio da skripta radi.

Krace? Da, moglo je. Mogao sam koristiti jednu varijablu umjesto Level i GoingUp (Level bi mogao u tom slucaju ici samo do 1073741823 jer bi se radio masking prvih 30 bitova za level, poslednji 31. bit za GoingUp). Da li je to ono sto bi autor teme mogao da razumije bez da pisem velike komentare? Sumnjam.

Ljepse? Ljepota koda je subjektivna ali kod koji sam napisao je lako razumljiv svakome ko prati moderne prakse programiranja. Ne znam sta tacno ovdje moze da bude ljepse, definicije i varijable su self-descriptive, koristi se K&R koji je jedan od (ako ne i) najkoriscenijih stilova indentacije i skripta je sama po sebi jako kratka da bi mogao reci da je nerazumna.

Elem, vjerovatno si mladji i pojma nemas cemu sluzi forum ali evo tldr. da ti dam, ako vec znas bolji nacin ili hoces da ispravis moj odgovor onda uradi to. Svojim komentarom nikome nisi pomogao.

PS. Znam da je tebi interesantna zamisao da me mozes ispraviti i volio bih da pokazes svima nama koji nacin je bolji od mog. Cekam.

Zasto si se ti drug upecao na ove mongolide?
Rax_King
Godfather
pre 2 godine
Galardo wrote on March 12, 2023, 11:42 am:
Zasto si se ti drug upecao na ove mongolide?


Jer bih volio da naucim nesto novo, logicno.
_.Xavi._
Hustler
pre 2 godine
evo samo sam dodao kordinate ali nema lifta gde treba da bude? (portam se sa komandom do lokacije i ispravna je),
forward MoveElevator();

const Float:ELEVATOR_SPEED = 3.0;

static g_sElevatorObject;
static g_sElevatorLevel;
static bool:g_sElevatorGoingUp;
static const g_sElevatorLevelPos[] = {
3.0,
5.0,
7.0,
10.0
};

public MoveElevator() {
if (g_sElevatorGoingUp && ++ g_sElevatorLevel == sizeof g_sElevatorLevelPos) {
g_sElevatorLevel = sizeof g_sElevatorLevelPos - 2;
g_sElevatorGoingUp = false;
} else if (!g_sElevatorGoingUp && -- g_sElevatorLevel == -1) {
g_sElevatorLevel = 2;
g_sElevatorGoingUp = true;
}

MoveObject(g_sElevatorObject, 1957.717041, 1902.649047, 26.410770, g_sElevatorLevelPos, ELEVATOR_SPEED);
}
  i pod ongamemodeinit
	g_sElevatorObject = CreateObject(19447, 1957.717041, 1902.649047, 26.410770, -0.299999, 90.299980, -117.099967, -1, -1, -1, 300.00, 300.00);
g_sElevatorLevel = 0;
g_sElevatorGoingUp = true;

SetTimer( "MoveElevator", 5000, false );
return 1;
}
return true;
}
Rax_King
Godfather
pre 2 godine

g_sElevatorObject = CreateObject(19447, 1957.717041, 1902.649047, 26.410770, -0.299999, 90.299980, -117.099967, -1, -1, -1, 300.00, 300.00);


Nemoguce da si ovo uspio compile (sem ako nisi redefinisao CreateObject - sumnjam).
"g_sElevatorLevelPos" je Z koordinata svakog sprata za lift (visina).

U OnGameModeInit "g_sElevatorLevelPos" bi trebalo biti mjesto gdje kreiras lift (prvi sprat/prizemlje, svejedno).
NegativeIQ
Kingpin
pre 2 godine
// xunder wrote on March 14, 2023, 10:04 pm:

g_sElevatorObject = CreateObject(19447, 1957.717041, 1902.649047, 26.410770, -0.299999, 90.299980, -117.099967, -1, -1, -1, 300.00, 300.00);


Nemoguce da si ovo uspio compile (sem ako nisi redefinisao CreateObject - sumnjam).
"g_sElevatorLevelPos" je Z koordinata svakog sprata za lift (visina).

U OnGameModeInit "g_sElevatorLevelPos" bi trebalo biti mjesto gdje kreiras lift (prvi sprat/prizemlje, svejedno).

Ti si programer, ti ne mozes to da uspes, on je skripter pa mu se moze. Jbg takav ti je access control u pawn.  😳

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava