Vrata banke


Započeo Agent 47, April 15, 2020, 20:15:30 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Problem(error/warning): Dodao sam u skripti kordinate kada su vrata zatvorena i kada su otvorena kad se dinamit stavi na njih. Kad udjem na server vrata su otvorena a preko komande /namestibvrata sam stavio takodje kordinate zatvorenih vrata i kad ukucam vrata su i dalje otvorena
Dio skripte: [ pawn ]vaš odgovor[ /pawn ]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): //
Slika/video ingame problema(obavezno ako je ingame problem): //

if( VrataBankeSrusena == true ) {
	
	    if( IsValidDynamicObject( VrataSefaBanke_1 ) )
	    	DestroyDynamicObject( VrataSefaBanke_1 );

        VrataSefaBanke_1 = CreateDynamicObject( 2634, 1452.080810, -994.826416, 37.143939, 0.000000, 0.000000, -2.100140 );
		
		VrataBankeSrusena = false;
	}


forward PukoDinamit( );
public PukoDinamit( ) {
	if( SekundDinamita == 0 ) {
		if( IsValidDynamicObject( DinamitObjekt ) ) DestroyDynamicObject( DinamitObjekt );
		CreateExplosion( -1761.46912, 790.05151, 140.91470, 0, 4 );
	    Delete3DTextLabel( Dinamit3D );
	    SekundDinamita = 10;
	    VrataBankeSrusena = true;
	    if( IsValidDynamicObject( VrataSefaBanke_1 ) ) DestroyDynamicObject( VrataSefaBanke_1 );
	    VrataSefaBanke_1 = CreateDynamicObject( 2634, 1452.080810, -994.826416, 37.143939, 0.000000, 0.000000, -2.100140 );
	    return true;
	}
	SekundDinamita--;
	SetTimer( "PukoDinamit", 1000, false );
	Delete3DTextLabel( Dinamit3D );
	new string[ 128 ];
	format( string, sizeof( string ), ""col_red"Eksplozija dinamita\nPomerite se od dinamita\n"col_white"%d", SekundDinamita );
    Dinamit3D = Create3DTextLabel( string, BELA, -1761.46912, 790.05151, 140.91470, 30.0, -1, 0);
    return true;
}



Es ist nicht alles Gold, was glänzt

Ja koliko vidim koordinate su iste xDDD

VrataSefaBanke_1 = CreateDynamicObject( 2634, 1452.080810, -994.826416, 37.143939, 0.000000, 0.000000, -2.100140 );


VrataSefaBanke_1 = CreateDynamicObject( 2634, 1452.080810, -994.826416, 37.143939, 0.000000, 0.000000, -2.100140 );


Ovo je iz prvog PAWN koda i iz drugog, nakon sto je pukao dinamit

Btw zar nije logicnije da se uniste vrata ako ih dinamit pukne xD? Al aj..

Udjes u map editor i postavis vrata na novu poziciju da budu otvorena, zatim te nove koordinate postavis u drugom PAWN kodu, tacnije kad dinamit pukne

@V01D Sredio sam brate sad mi uopste nema vrata kada udjem na server
Es ist nicht alles Gold, was glänzt

Ehhh, ajmo polako:

Na vrhu :

new BankaVrataSrusena;
new BankEksplozija[MAX_PLAYERS];
new VrataBanka;


Sada kada smo napravili varijable koje na trebaju, dodas pod OnGameModeInit objekat vrata:

VrataBanka = CreateObject(19302, -1699.5692, 355.7017, 1438.7931, 0.000000, 0.000000, 0.000000);


Sada napravimo komandu da se dinamit postavi i srusi vrata:

CMD:postavidinamit(playerid, params[]) //IMA I EKSPLOZIJAAA MNOGOOO COOL IZGLEDAAA
{
	if(!IsPlayerInRangeOfPoint(playerid, 3.0, -1699.4025,354.6178,1438.5709)) return SendErrorMessage(playerid, "Nisi kod vrata sefa!"); //Koordinate vrata
	if(BankaVrataSrusena == 1) return SendErrorMessage(playerid, "Vrata su vec srusena!"); //Ako su vrata vec srusena
	if( GetFactionType( playerid ) == ORG_TIP_PD ) { //Ako je igrac PD/FBI ili CIA
		SendErrorMessage( playerid, "PD/FBI/CIA nema razloga koristiti ovo!");
		return 1;
	}
	if(PlayerInfo[playerid][xDinamit] == 0) return SendErrorMessage(playerid, "Nemas dinamit!"); //Ako nema dinamit
	defer Eksplozija(playerid); //Timer
	BankEksplozija[playerid] = 10; //Timer do eksplozije (varijabla za odbrojavanje)
	PlayerInfo[playerid][xDinamit] = 0; //Igracu se oduzme dinamit
	SendInfoMessage(playerid, "Postavio si dinamit, odmakni se!");
	return 1;
}


Kada smo to uradili napravimo timer nakon koga ce se vrata srusiti :

timer Eksplozija[1000](playerid) 
{
	if(BankEksplozija[playerid] != 0) //Ovo je za odbrojavanje varijable, da bi se prikazao GameTextForPlayer do pucanja vrata
	{
		BankEksplozija[playerid]--; //Smanjujemo je i prikazemo
		va_GameTextForPlayer(playerid, "%d sekundi", 1000, 3, BankEksplozija[playerid]);
		defer Eksplozija(playerid); //Zatim pokrecemo opet timer
	}
	else
	{
		BankEksplozija[playerid] = 0; //Kada stignemo do kraja, srusimo vrata, stavimo BankaVrataSrusena na 1
		BankaVrataSrusena = 1;
		CreateExplosion(-1699.4025,354.6178,1438.5709, 12, 2.0); //Kreiramo eksploziju na tu lokaciju ( jako je cool )
		DestroyObject(VrataBanka); //Unistimo objekat vrata, ili ga mozes i pomeriti preko MoveObject
		SendInfoMessage(playerid, "Uspesno si razneo vrata banke!"); //Izbacimo cool porukicu da se igrac razneo vrata
	}
}


Takodje mozemo dodati neki timer da sve vrati na normalno stanje nakon nekog vremena:

timer DoSledecegRoba[3600000]() 
{
	BankaVrataSrusena = 0;
	VrataBanka = CreateObject(19302, -1699.5692, 355.7017, 1438.7931, 0.000000, 0.000000, 0.000000);
	return 1;
}


Mozes i radi testiranja napraviti komandu da vrati vrata u pocetno stanje:

CMD:resetujrob(playerid, params[]) 
{
	BankaVrataSrusena = 0;
	VrataBanka = CreateObject(19302, -1699.5692, 355.7017, 1438.7931, 0.000000, 0.000000, 0.000000);
	SendInfoMessage(playerid, "Uspesno si resetovao rob!");
	return 1;
}


Kada bi hteo da pomeris vrata, samo bi iskoristio MoveObject umesto DestroyObject :D