Peršokti į turinį

Vartu atidarymas su migtuku:)


The_Propy

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3099 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Įžanga

 

Taigi manau daugelis susidūrė su tokia problema kad sukūrus vartus su mygtuku jie atsidaro su keliais ir mašinoje ir ne mašinoje su skirtingais, taigi šioje pamokoje paaiškinsiu kaip padaryti kad mašinoje ir ne mašinoje atsidarytu su tokiu pačiu mygtuku.

 

Vartų kūrimas

 

1. Sumapiname uždarytus ir atidarytus vartus.

2. Išsiimame failą iš čia: GTA San Andreas\server\mods\deathmatch\resources

3. Konvertuojame šioje svetainėje http://gtamap.delux-....com/converter/, aš konvertuoju į PAWN Code for SA:MP. Jūs pasirinksite koki jus norite.

4. Tada einame į gamemodes\data spaudžiame į vartai failiuką ir prie new prirašome savo pasirinkta pavadinimą, tarkim "Vartai"

5. Einame į gamemodes\data init failiuką ir apačioje prirašome Vartai = (Vartų kordinatės kuriuos konvertavome. BŪTINAI UŽDARYTU, skliaustu nereikai)

6. Einame į savo gamemode, susirandame: 

"public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)"

Ir po juo rašome:

if(IsPlayerInAnyVehicle(playerid) && newkeys & KEY_HANDBRAKE || !IsPlayerInAnyVehicle(playerid) && newkeys & KEY_SPRINT) // Space klavisas

{

if(IsPlayerInRangeOfPoint(playerid, 10.0 , Kordinatės))

{

{

 

if(GetPVarInt(playerid, "Vartai") == 0) //Jei vartai uždaryti

{

MoveObject(Vartai, Kordinatės, 2); // Atidaryti

SetPVarInt(playerid, "Vartai", 1); //Padarom vartus atidarytus

GameTextForPlayer(playerid, "~G~ Atidarote vartus!", 2000, 5);

}

else if(GetPVarInt(playerid, "Vartai") == 1) //Jei vartai atidaryti

{

MoveObject(Vartai, Kordinatės, 2); //Uždaryti

SetPVarInt(playerid, "Vartai", 0); //Padarom vartus uždarytus

GameTextForPlayer(playerid, "~R~ Uzdarote vartus!", 2000, 5);

}

}

return 1;

}

}

Ką padariau kad vartai atsidarytu su space ir mašinoje ir ne mašinoje? Parašiau šitaip:

 

if(IsPlayerInAnyVehicle(playerid) && newkeys & KEY_HANDBRAKE || !IsPlayerInAnyVehicle(playerid) && newkeys & KEY_SPRINT)

Keli paaiškinimai:

Vartai - Čia įrašome pavadinimą kuri rašėme vartai failiuke prie new

Kordinatės - Čia rašome X, Y, Z kordinates (Būtinai konvertoutu)

Greitis - Čia vartų atsidarymo greiti, geriausias manau greitis yra 2

MoveObject(Vartai, Kordinatės, Greitis);

iIsPlayerInAnyVehicle(playerid) && newkeys & KEY_HANDBRAKE - Su šiuo kodu vartai atsidarys mašinoje tik su space

!IsPlayerInAnyVehicle(playerid) && newkeys & KEY_SPRINT - Su šiuo kodu vartai atsdarys ne mašinoje tik su space klavišu

if(IsPlayerInAnyVehicle(playerid) && newkeys & KEY_HANDBRAKE || !IsPlayerInAnyVehicle(playerid) && newkeys & KEY_SPRINT)

10.0 - Atstumas nuo objekto per kuri galima ji pajudinti

Kordinatės - Uždarytu vartų kordinatės

if(IsPlayerInRangeOfPoint(playerid, 10.0 , Kordinatės))

Kodėl tai vadinati BETA pamoka?

Todėl kad yra vienas bugas, mašinoje vartai atsidaro su space ir dešiniu CTRL, kai išsiaiškinsiu kaip ištaisyti parašysiu šioje temoje

 

Jeigu yra kokiu klausimų rašykite šioje temoje, pasistengsiu atsakyti. Pamoka kūriau aš, visu 100%, nei trupučio nuo niekur nekopijavau...

 

 

+Rep jai negaila  Jia patvarkytas ne buvo nekaip isdeliota:)

Redaguota , nario The_Propy
Nuoroda į komentarą
Dalintis per kitą puslapį

Kam nesuprantama :D :

Po :

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)

Dedam :

if(IsPlayerInAnyVehicle(playerid) && newkeys & KEY_HANDBRAKE || !IsPlayerInAnyVehicle(playerid) && newkeys & KEY_SPRINT) // tikrinam ar Žaide.jas mašinoje bei ar paspaude. SPACE
{
	if(IsPlayerInRangeOfPoint(playerid, 10.0 , Kordinate.s)) // Nustatom spinduli; ta prasme nuo ju-su; kordinac(iu; gale.s paspausite ir toliau esantis 
	{
		if(GetPVarInt(playerid, "Vartai") == 0) // Jei vartai uždaryti
		{
			MoveObject(Vartai, Kordinate.s, 2); // Atidarom vartus
			SetPVarInt(playerid, "Vartai", 1); //Padarom vartus atidarytus
			GameTextForPlayer(playerid, "~G~ Atidarote vartus!", 2000, 5); // Parodom žaide.jui žinute; kad vartai atidaryti
		}
		else if(GetPVarInt(playerid, "Vartai") == 1) //Jei vartai atidaryti
		{
			MoveObject(Vartai, Kordinate.s, 2); // Uždarom vartus
			SetPVarInt(playerid, "Vartai", 0); //Padarom vartus uždarytus
			GameTextForPlayer(playerid, "~R~ Uzdarote vartus!", 2000, 5); // Parodom žaide.jui žinute; kad vartai atidaryti
		}
	}
	return 1;
}
Nuoroda į komentarą
Dalintis per kitą puslapį

  • Parašė po 1 metų...

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3099 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...