Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

[PAMOKA] Įėjimai/Išėjimai su ENTER


K1NGAS

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3152 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

Sveiki. Kuriu savo pirmąją pamoką - Įėjimai/išėjimai su enter. Nors tai yra išties gan lengva, bet kai nemokėjau man tai buvo sunku. Ši pamoka labiau naujokams.


 


Visų pirma sukuriam 3d textą. Dedam po OnGameModeInit.



Create3DTextLabel("{FF8000}SuperGames.LT\n{FFFFFF}Spauskite ENTER", 0xFFD400FF, -325.0497,1175.2161,20.5833,10, 0, 0); // supergames.lt įėjimo 3d text
Create3DTextLabel("{FF8000}Išėjimas\n{FFFFFF}Spauskite ENTER", 0xFFD400FF, 319.8586,1625.0088,-59.0830,10, 0, 0); // supergames.lt išėjimo 3d text


Dabar po OnPlayerKeyStateChange dedame, kad paspaudus ENTER jį nuteleportuotų į interierą/išteleportuotų iš interiero.



if (newkeys & KEY_SECONDARY_ATTACK)
{

// iėjimas

if(IsPlayerInRangeOfPoint(playerid, 1.0, -325.0497,1175.2161,20.5833)) // supergames.lt įėjimas. Tikrinam ar žaidėjas yra reikiamoj pozicijoj.
{
SetPlayerPos(playerid, 319.8586,1625.0088,-59.0830); // Nustatom žaidėjo poziciją paspaudus ENTER
SetPlayerInterior(playerid, 10); // Nustatom žaidėjo interierą.
}

// išėjimas

else if(IsPlayerInRangeOfPoint(playerid, 1.0, 319.8586,1625.0088,-59.0830)) // supergames.lt įėjimas. Tikrinam ar žaidėjas yra reikiamoj pozicijoj.
{
SetPlayerPos(playerid, -325.0497,1175.2161,20.5833);// Nustatom žaidėjo poziciją paspaudus ENTER
SetPlayerInterior(playerid, 0); // Nustatom žaidėjo interierą.
}

return 1;
}


Na, pamoka lyg ir baigta. Neprašau +rep, tik jeigu rasit klaidų būtinai praneškit, pataisysiu. Esu dar nelabai patyręs ant Pawno, ir tai yra mano pirmoji pamoka. Tikiuosi padėsiu naujokam :)


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

O tai tiesiog pasijungi pawno ir iškart viską sudedi šituos tekstus? :D kaip padaryt jog butent į tavo sumapinta pastata galima butu ieit su enter? man visiškai nesuprantama čia.. galėjo ir detaliau paaiškint.

Jeigu jau nemoki skaityt, nes yra parašyta, kur kelti tai geriau jau nesijunk tu to pawno :D. Į gm įkeli savo pastatą, įklijuoji mano textus kur parašyta kur po kuo dėti ir pakeiti textus/kordinates/

Nuoroda į komentarą
Dalintis per kitą puslapį

  • Parašė po 3 savaičių...

Kaip atrodys kodas tavo variantu, jei bus ~200 įėjimų/išėjimų?..

Įėjimo koordinatės: 0, 0, 0;

Išėjimo koordinatės: 1, 1, 1;

enum entry { Float:x, Float:y, Float:z, Float:xx, Float:yy, Float:zz }
new
    entries[][entry] =
    {
        { 0, 0, 0, 1, 1, 1 }
    }
;

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(newkeys == KEY_SECONDARY_ATTACK)
    {
        for(new i; i < sizeof entries; i++)
        {
            if(IsPlayerInRangeOfPoint(playerid, 5, entries[i][x], entries[i][y], entries[i][z]) { SetPlayerPos(playerid, entries[i][xx], entries[i][yy], entries[i][zz]); break; }
            if(IsPlayerInRangeOfPoint(playerid, 5, entries[i][xx], entries[i][yy], entries[i][zz]) { SetPlayerPos(pl ayerid, entries[i][x], entries[i][y], entries[i][z]); break; }
        }
    }
    return 1;
}
Rašiau per telefoną, tai kol suformatavo normaliai.. Redaguota , nario Matas F.
Nuoroda į komentarą
Dalintis per kitą puslapį

Kaip atrodys kodas tavo variantu, jei bus ~200 įėjimų/išėjimų?..

Įėjimo koordinatės: 0, 0, 0;

Išėjimo koordinatės: 1, 1, 1;

 

enum entry { Float:x, Float:y, Float:z, Float:xx, Float:yy, Float:zz }
new
    entries[][entry] =
    {
        { 0, 0, 0, 1, 1, 1 }
    }
;

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(newkeys == KEY_SECONDARY_ATTACK)
    {
        for(new i; i < sizeof entries; i++)
        {
            if(IsPlayerInRangeOfPoint(playerid, 5, entries[i][x], entries[i][y], entries[i][z]) { SetPlayerPos(playerid, entries[i][xx], entries[i][yy], entries[i][zz]); break; }
            if(IsPlayerInRangeOfPoint(playerid, 5, entries[i][xx], entries[i][yy], entries[i][zz]) { SetPlayerPos(pl ayerid, entries[i][x], entries[i][y], entries[i][z]); break; }
        }
    }
    return 1;
}
Rašiau per telefoną, tai kol suformatavo normaliai..

 

Tuo pačiu galit ir interior, ir virtual world pridėt prie enumo ir naudot.

Nuoroda į komentarą
Dalintis per kitą puslapį

Viešpatie... susikurkit dinaminę sistemą, su kuria galėsite pridėti įėjimą su išėjimu viena eilute..

O žiūriu tu dar bandai vierchaut forume, koks buvau grybas ant PAWNO toks ir likai karoč. Aš rimtai, visa laiką gali tik kažką parašyti, o pats parodyti žmogui kaip turi atrodyti normali, dinaminė sistema negali. :))

Nuoroda į komentarą
Dalintis per kitą puslapį

Tuo pačiu galit ir interior, ir virtual world pridėt prie enumo ir naudot.

 

Nu ka zinau as nemoku galbut arba nesusigaudau nes pasidariau  interior prirasiau pr enum ir kaip bandau si koda teleportas suveikia bet interior nenustato nors esu kodo gale parases interior skaiciu

enum entry
{
Float:x,
Float:y,
Float:z,
Float:xx,
Float:yy,
Float:zz,
interior
}
new
    entries[][entry] =
    {
        { -2719.9006,-328.1076,7.1899, 384.808624,173.804992,1008.382812, 3 }, // vyriausybes iejimas
        { 389.1730,173.7276,1008.3828, -2719.9006,-328.1076,7.1899, 0 } // vyriausybes isejimas
    }
;
if(newkeys == KEY_SECONDARY_ATTACK)
{
	for(new i; i < sizeof entries; i++)
	{
		if(IsPlayerInRangeOfPoint(playerid, 2.0, entries[i][x], entries[i][y], entries[i][z]))
		{
			SetPlayerPos(playerid, entries[i][xx], entries[i][yy], entries[i][zz]);
			SetPlayerInterior(playerid,entries[i][interior]);
			printf("interior yra %d ",entries[i][interior]);
		}
		if(IsPlayerInRangeOfPoint(playerid, 2.0, entries[i][xx], entries[i][yy], entries[i][zz]))
		{
			SetPlayerPos(playerid, entries[i][x], entries[i][y], entries[i][z]);
			SetPlayerInterior(playerid,entries[i][interior]);
		}
	}
	return 1;
}

printas 

[12:52:11] interior yra 3 
Redaguota , nario dzeronimo
Nuoroda į komentarą
Dalintis per kitą puslapį

Iškart ir su 3D Text label'iais ir įėjimas. Mano šiokia tokia sistemelė. 

#define MAX_ENTER   2


enum        entrances
{
   Float:laukX,
   Float:laukY,
   Float:laukZ,
   interior,
   Float:exitXs,
   Float:exitYs,
   Float:exitZs
};


new entrInf[ MAX_ENTER ][ entrances ];
if(newkeys & KEY_SECONDARY_ATTACK)
{
  for(new i; i < MAX_ENTER; i++ )
  {
     if(IsPlayerInRangeOfPoint(playerid, 5.0, entrInf[ i ][ laukX ],entrInf[ i ][ laukY ],entrInf[ i ][ laukZ ]))
     {
        SetPlayerInterior(playerid, entrInf[ i ][ interior ]);
        SetPlayerPos(playerid,entrInf[ i ][ exitXs ],entrInf[ i ][ exitYs ], entrInf[ i ][ exitZs ]);
     }
     if(IsPlayerInRangeOfPoint(playerid, 5.0, entrInf[ i ][ exitXs ],entrInf[ i ][ exitYs ], entrInf[ i ][ exitZs ] ) )
     {
        SetPlayerInterior(playerid, 0);
        SetPlayerPos(playerid, entrInf[ i ][ laukX ],entrInf[ i ][ laukY ],entrInf[ i ][ laukZ ] );
     }
   }
   return 1;
}
stock createEntrance( Float:enterX, Float:enterY, Float:enterZ, interiors, Float:exitX, Float:exitY, Float:exitZ )
{

    entrInf[sk][laukX] = enterX;
    entrInf[sk][laukY] = enterY;
    entrInf[sk][laukZ] = enterZ;
    entrInf[sk][interior] = interiors;
    entrInf[sk][exitXs] = exitX;
    entrInf[sk][exitYs] = exitY;
    entrInf[sk][exitZs] = exitZ;

	Create3DTextLabel("{ffffff}Iejimo tekstas spausk\n{ff0000}ENTER\n", 0x008080FF, entrInf[sk][laukX], entrInf[sk][laukY], entrInf[sk][laukZ], 30.0, 0,0);
	Create3DTextLabel("{ffffff}Isejimo tekstas spausk\n{ff0000}ENTER\n", 0x008080FF, entrInf[sk][exitXs], entrInf[sk][exitYs], entrInf[sk][exitZs], 30.0, 0, 0);
 	

 	return 1;
}
 

Po GameMOdeInit

 

allEntrances();
Šita dedam kur nors gamemode pwn faile apačioje, nes sukuriam nauja funkcija. Šiuo atvėju CreateEntrance
stock allEntrances()
{
    // Pvz createEntrance( x, y, z, int, isx, isy, isz ) ;
}
Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3152 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ą...