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

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 4814 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, daug kas rašo, kad nėra išsamių vartų kūrimo pamokų. Taigi pabandysiu sukurti išsamią. Taigi pradėkime.

Pirmiausia mums reikės atidarytų ir uždarytų vartų kordinačių. Atsidarome MTA ir padarome atidarytus ir uždarytus vartus ir juos išsaugome.

Jeigu jūs naudojate MTA SA - 1.0.5, tai ***.map failą rasite:

C:\Program Files\MTA San Andreas\server\mods\deathmatch\resources

Atsidarome svetainę: http://gtamap.delux-host.com/converter/

Aš naudosiu šį kordinačių konverterį, Jūs galite kitą. Spauskite mygtuką Choose file ir atsidarykite savo ***.map failą

Užrašą per vidurį, kur rašo IPL File format, išskleiskite ir pasirinkite PAWN Code for SA:MP ir gausite tokios formos kordinates:

CreateObject(objektoID, x, y, z, 0, 0, 0);

Kordinates turime, dar neišjunkite svetainės. Dabar reikėtų sukurti vartus.

Atsidarome serverio failus ir einame: gamemodes\data\vartai.txt

Pirmoje eilutėje rašome: new vartai;

Toliau tame pačiame faile po:

stock InitVartai()
{

Rašome:

vartai = CreateObject(980, -2250.5900878906, 554.13818359375, 36.945266723633, 0, 0, 0); // uždaryti vartai

CreateObject - tai svetainėje gautos kordinatės. Jas nukopijuokite ir įklijuokite vietoj:

CreateObject(980, -2250.5900878906, 554.13818359375, 36.945266723633, 0, 0, 0);

BŪTINAI UŽDARYTŲ VARTŲ

Išsaugokite failą. Toliau atsidarome init.txt failą, kuris yra gamemodes\data\init.txt

Atsidarykite vėl vartai.txt failą, ir iš jo nukopijuokite šį kodą:

[code]vartai = CreateObject(980, -2250.5900878906, 554.13818359375, 36.945266723633, 0, 0, 0); // uždaryti vartai

[/code]

Ir uždarykite vartai.txt

Init.txt faile po:

public OnGameModeInit()
{

Įklijuokite tą kodą:

vartai = CreateObject(980, -2250.5900878906, 554.13818359375, 36.945266723633, 0, 0, 0); // uždaryti vartai

Ir failą išsaugokite. Štai vartai sukurti. Dabar reikės sukurti komandą, kad juos atidarytų. Naudosime 3 būdus.

1. Vartus atidarysime su komanda, o po tam tikro laiko, jie užsidarys automatiškai, t.y. naudosime timerį.

2. Darysime taip, kad timeris tikrintų kas 1 sekundę, ar kas yra prie vartų, jei yra, vartai atsidaro.

3. Vartus atidarysime ir uždarysime su komanda

Taigi pradėkime.

1 BŪDAS

Einame gamemodes\***.pwn ir atsidarome pawno failą. Jame susirandame callback'ą:

public OnPlayerCommandText(playerid, cmdtext[])
{

Ir po juo sukuriame vartų komandą:

if (!strcmp("/avartai", cmdtext, true)) // vartų komanda
{
MoveObject(vartai, -2242.3120117188, 554.15612792969, 36.945266723633, 2); // atidaro vartus
SendClientMessage(playerid,JūsųSpalva," Vartai atsidaro. Vartai užsidarys už (Jūsų_Laikas) sekundžių/minučių."); // siunčia tekstą
SetTimer("timeris", 1000, false); // 1000 - laikas mili sekundėmis. 1000 milisekundžių - 1 sekundė. Nustato timerį
return 1; // baigia funkciją
}

Timeris - tai timerio pavadinimas.

-2242.3120117188, 554.15612792969, 36.945266723633 - tai kordinates iš svetainės. Šios kordinatės atidarytų, o ne uždarytų vartų.

Gerai sukūrėme komanda. Dabar sukurkime funkciją, kad uždarytų vartus praėjus tam tikram laiko tarpui.

Viršuje gamemode rašome:

forward timeris();

Paskui susirandame:

public Zaidimas(playerid)
{

Ir prieš šį užrašą rašome:

public timeris()
{
MoveObject(vartai, -2250.5900878906, 554.13818359375, 36.945266723633, 2); // uždaro vartus. Kordinatės turi būti uždarytų vartų
SendClientMessage(playerid,JūsųSpalva," Vartai užsidaro."); // siunčia tekstą
return 1; // baigia funkciją
}

Spaudžiame F5. Vartai sukurti, komanda sukurta. Baigta.

2 BŪDAS

Atsidarome: gamemodes\data\init.txt ir susirandame:

print("GRP4: Loading data completed. Starting the server...");
print("GRP4: Initialising timers...");

Jei nėra, tai susiraskite visus timerius, turėtų būti bent vienas. Ir prie visų rašome:

SetTimer("timeris",1000,true); // nustato timerį, kad vykdytų funkciją kas 1 sekundę. Funkciją nustatysime vėliau.

Išsaugome failą. Dabar einame gamemodes\***.pwn ir atsidarome pawno failą.

Viršuje gamemode rašome:

forward timeris();

Paskui susirandame:

public Zaidimas(playerid)
{

Ir prieš jį rašome:

public timeris()
{
if(IsPlayerInRangeOfPoint(playerid, 2.0, -2250.5900878906, 554.13818359375, 36.945266723633 ) ) // Tikrina ar žaidėjas yra prie vartų.
{
MoveObject(vartai, -2242.3120117188, 554.15612792969, 36.945266723633, 2); // atidaro vartus. Kordinatės turi būti atidarytų vartų
SendClientMessage(playerid,JūsųSpalva," Vartai atsidaro."); // siunčia tekstą
SetTimer("utimeris", 1000, false); // 1000 - laikas mili sekundėmis. 1000 milisekundžių - 1 sekundė. Nustato timerį
return 1; // baigia funkciją
}
public utimeris()
{
MoveObject(vartai, -2250.5900878906, 554.13818359375, 36.945266723633, 2); // uždaro vartus. Kordinatės turi būti uždarytų vartų
SendClientMessage(playerid,JūsųSpalva," Vartai užsidaro."); // siunčia tekstą
return 1; // baigia funkciją
}

if(IsPlayerInRangeOfPoint(playerid, 2.0, -2250.5900878906, 554.13818359375, 36.945266723633 ) ) - čia turi būti uždarytų vartų kordinatės.

Viskas sukūrėme, kad tikrintų ar kas yra prie vartų, jei taip atidaro juos ir už kažkiek laiko uždaro. Spaudžiame F5.

3 BŪDAS

Tai paprasčiausias būdas. Atsidarome gamemodes\***.pwn failą ir susirandame:

public OnPlayerCommandText(playerid, cmdtext[])
{

Po juo dedame:

if (!strcmp("/avartai", cmdtext, true)) // komanda
{
MoveObject(vartai, -2242.3120117188, 554.15612792969, 36.945266723633, 3); // atidaro vartus
return 1; // baigia funkcija
}
if (!strcmp("/uvartai", cmdtext, true)) // komanda
{
MoveObject(vartai, -2250.5900878906, 554.13818359375, 36.945266723633, 3); // uzdaro vartus
return 1; // baigia funkcija
}

/avartai - čia kordinatės turi būti atidarytų vartų.

/uvartai - čia kordinatės turi būti uždarytų vartų.

Komandos sukurtos. Spaudžiame F5.

=========================================================================================

Pamoką kūriau aš. Jeigu norėsite kopijuoti ir kelti kitur, palikite kreditus.

Jei kas neišeis, mes error, ko nesuprasite ar panašiai, prašykite pagalbos, stengsiuosi padėti kuo tik galėsiu.

  • Parašė po 2 mėnesių...
  • Parašė po 2 mėnesių...

Nesupratau kdl man meta ?????

data/menu.txt(631) : error 017: undefined symbol "Modinimas"

data/menu.txt(674) : error 017: undefined symbol "Modinimas"

data/menu.txt(701) : error 017: undefined symbol "Modinimas"

data/menu.txt(721) : error 017: undefined symbol "Modinimas"

data/menu.txt(753) : error 017: undefined symbol "Modinimas"

data/menu.txt(755) : error 017: undefined symbol "Modinimas"

data/menu.txt(788) : error 017: undefined symbol "Modinimas"

data/menu.txt(790) : error 017: undefined symbol "Modinimas"

data/menu.txt(823) : error 017: undefined symbol "Modinimas"

data/menu.txt(855) : error 017: undefined symbol "Modinimas"

data/menu.txt(878) : error 017: undefined symbol "Modinimas"

data/menu.txt(899) : error 017: undefined symbol "Modinimas"

data/menu.txt(919) : error 017: undefined symbol "Modinimas"

data/menu.txt(939) : error 017: undefined symbol "Modinimas"

data/menu.txt(941) : error 017: undefined symbol "Modinimas"

data/menu.txt(980) : error 017: undefined symbol "Modinimas"

data/menu.txt(1008) : error 017: undefined symbol "Modinimas"

data/menu.txt(1010) : error 017: undefined symbol "Modinimas"

data/menu.txt(1036) : error 017: undefined symbol "Modinimas"

data/menu.txt(1060) : error 017: undefined symbol "Modinimas"

data/menu.txt(1062) : error 017: undefined symbol "Modinimas"

data/menu.txt(1087) : error 017: undefined symbol "Modinimas"

data/menu.txt(1110) : error 017: undefined symbol "Modinimas"

data/menu.txt(1112) : error 017: undefined symbol "Modinimas"

data/menu.txt(1141) : error 017: undefined symbol "Modinimas"

data/menu.txt(1165) : error 017: undefined symbol "Modinimas"

Compilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

26 Errors.

Nors as net nieko nekeliau i menu.txt

Kas pads tamp +REP

:koman:

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

Svečias
Ši tema yra užrakinta.
  • Šiame puslapyje naršo:   0 nariai

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

Skelbimai


×
×
  • Sukurti naują...