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): //
[pawn]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;
}[/pawn]
[pawn]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;
}[/pawn]
Ja koliko vidim koordinate su iste xDDD
[pawn] VrataSefaBanke_1 = CreateDynamicObject( 2634, 1452.080810, -994.826416, 37.143939, 0.000000, 0.000000, -2.100140 );[/pawn]
[pawn] VrataSefaBanke_1 = CreateDynamicObject( 2634, 1452.080810, -994.826416, 37.143939, 0.000000, 0.000000, -2.100140 );[/pawn]
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
Ehhh, ajmo polako:
Na vrhu :
[pawn]new BankaVrataSrusena;
new BankEksplozija[MAX_PLAYERS];
new VrataBanka;[/pawn]
Sada kada smo napravili varijable koje na trebaju, dodas pod OnGameModeInit objekat vrata:
[pawn]VrataBanka = CreateObject(19302, -1699.5692, 355.7017, 1438.7931, 0.000000, 0.000000, 0.000000);[/pawn]
Sada napravimo komandu da se dinamit postavi i srusi vrata:
[pawn]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;
}[/pawn]
Kada smo to uradili napravimo timer nakon koga ce se vrata srusiti :
[pawn]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
}
}[/pawn]
Takodje mozemo dodati neki timer da sve vrati na normalno stanje nakon nekog vremena:
[pawn]timer DoSledecegRoba[3600000]()
{
BankaVrataSrusena = 0;
VrataBanka = CreateObject(19302, -1699.5692, 355.7017, 1438.7931, 0.000000, 0.000000, 0.000000);
return 1;
}[/pawn]
Mozes i radi testiranja napraviti komandu da vrati vrata u pocetno stanje:
[pawn]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;
}[/pawn]
Kada bi hteo da pomeris vrata, samo bi iskoristio MoveObject umesto DestroyObject :D