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

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

Sukursiu pamoką, kaip pasidaryti kioską serveryje. Gal ir yra ši pamoka, bet kažkas nerado ir paprašė sukurti. Taigi pradėkim :)

Pirmiausia mums reikės susikurti pickup'ą. Kuriant pickup'ą, reikia kordinačių. Tad einame į serverį, norimoje vietoje, kur bus pickup'as, rašome: /save pickupas

Tada išeiname iš žaidimo. Atsidarome: savedpositions.txt failą.

Jį galite rasti:

C:\Documents and Settings\Vartotojas\My Documents\GTA San Andreas User Files\SAMP

Atsidarę jį turėtumėte rasti pickup'o kordinates:

AddPlayerClass(26,-1611.0391,715.5099,12.9695,65.1907,0,0,0,0,0,0); // pickupas

Mums reikės tik X, Y ir Z kordinačių:

-1611.0391,715.5099,12.9695

Nukopijuojame jas ir uždarome failą. Dabar einame į serverio failus gamemodes/data/pickups.txt

Po

enum pdata{

Rašome:

kioskas,

Paskui tame pačiame pickups.txt susirandame:

stock LoadPickups()
{

Ir po juo rašome:

pickups[0][kioskas]=CreatePickupA(1274,2,-1680.1782,413.0242,7.1797);

1274 - Tai pickup'o modelis. Šiuo atveju pinigo ženklas ($).

2 - Pickup'o atsiradimo tipas. Šiuo atveju užlipus atsiranda kas kažkiek laiko.

-1680.1782,413.0242,7.1797 - Tai sukurtos kordinatės: X, Y ir Z

Na surašę visą informaciją, uždarome failą ir išsaugome.

Dabar atsidarome gamemodes/***.pwn failą

Sukursime funkcijas, kad jos vyktų užlipus ant pickup'o.

Susirandame callback'ą:

public OnPlayerPickUpPickup(playerid, pickupid)
{

Ten po juo gali būti eilutės:

printf("Imam pickupa: %i",pickupid);
if(playerDB[playerid][vedelogin] == false){SendClientMessage(playerid,GREY,"* Pirmiausia prisijunkite"); return 1;}
if(!playerDB[playerid][pickup]) return 1;

FIX_PICKUPS

Jei jos yra, script'ą rašysite po jom, jei jų nėra, tai rašykite iškart po callback'u.

Taigi rašome:

if(pickupid == pickups[0][kioskas]) // tikrina, ant kokio pickup'o užlipo
{
ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,"Kioskas","Telefonas 100LT\nSąskaitos papildymas\nLaikrodis 50LT","Pirkti","Išeiti"); // Parodo GUI langą
return 1; // baigia funkciją
}

Sukūrėme funkciją, kuri vyks, kai žaidėjas užlips ant pickup'o.

Dabar susirandame callback'ą:

public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
{

Ir po juo rašome:

if(dialogid == 1) // Tikrina, ar dialogid lygus mūsų sukurtajam
{
if(response) // Jei paspaudė Pirkti, tęsiam funkciją
{
if(listitem == 0) // Jei pasirinkimas 1, t.y. telefonas, nuperkam, jei turi pakankamai pinigų.
{
if(playerDB[playerid][telefonas]=true) // Tikrina, ar žaidėjas turi telefoną, jei taip, neparduodam.
{
SendClientMessage(playerid,RED," Jūs jau turite telefoną."); // Parašo tekstą
return 1; // Baigia funkciją
}
if(GetPlayerMoneyA(playerid) < 100) // Tikrina, ar žaidėjas turi pakankamai pinigų, šiuo atveju 100LT
{
SendClientMessage(playerid,RED," Jūs neturite pakankamai pinigų."); // Jei neturi pakankamai pinigų, parašo tekstą
return 1; // Baigia funkciją
}
SendClientMessage(playerid,RED," Sėkmingai nusipirkote telefoną."); // Jei viskas gerai, parašo tekstą, kad nusipirko telefoną.
playerDB[playerid][telefonas]=true; // Duoda telefoną
}
else if(listitem == 1) // Jei pasirinkimas 2, t.y. sąskaitos papildymas.
{
ShowPlayerDialog(playerid,2, DIALOG_STYLE_INPUT,"Papildyti sąskaitą","Įrašykite sumą, už kurią norite papildyti sąskaitą","Pildyti","Išeiti");
}
else if(listitem == 2) // Jei pasirinkimas 3, t.y. laikrodis, nuperkam, jei turi pakankamai pinigų.
{
if(playerDB[playerid][laikrodis]=true) // Tikrina, ar žaidėjas turi laikrodį, jei taip, neparduodam.
{
SendClientMessage(playerid,RED," Jūs jau turite laikrodį."); // Parašo tekstą
return 1; // Baigia funkciją
}
if(GetPlayerMoneyA(playerid) < 50) // Tikrina, ar žaidėjas turi pakankamai pinigų, šiuo atveju 50LT
{
SendClientMessage(playerid,RED," Jūs neturite pakankamai pinigų."); // Jei neturi pakankamai pinigų, parašo tekstą
return 1; // Baigia funkciją
}
SendClientMessage(playerid,RED," Sėkmingai nusipirkote laikrodį."); // Jei viskas gerai, parašo tekstą, kad nusipirko laikrodį.
playerDB[playerid][laikrodis]=true; // Duoda laikrodį
}
}
}

Na sukūrėme beveik viską. Dabar atsirado GM laikrodis ir telefonas, tad gali mesti warning, kad neatpažįsta simbolių. Tad eikime, juos sukurkime. Einame gamemodes/data/playerDB.txt

Ir po:

enum item{

Rašome:

laikrodis,
telefonas,

Taip pat pažiūrėkite, ar yra playerDB.txt faile žodis mobsas, jei nėra, tai rašykite:

laikrodis,
telefonas,
mobsas,

Išsaugome failą. Einame vėl į gamemodes/***.pwn failą.

Dabar reikia užbaigti, kad pasipildytų sąskaita.

Po callback'u:

public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
{

Rašome:

if(dialogid == 2) // Tikrina, ar dialogid lygus mūsų sukurtajam
{
if(response) // Jei paspaudė mygtuką Pildyti, tęsiam funkciją.
{
new kiek = StringToInt(inputtext);

if(GetPlayerMoneyA(playerid) < kiek) // Tikrinam, ar žaidėjas turi tiek pinigų, už kiek nori pildytis sąskaitą
{
SendClientMessage(playerid,RED," Jūs neturite pakankamai pinigų."); // Jei neturi pakankamai pinigų, parašo tekstą
return 1; // Baigia funkciją
}

if(!IsNumeric(inputtext)) // Tikrina, ar žaidėjas įvedė, kiek nori pasipildyti sąskaitos, skaičiais.
{
ShowPlayerDialog(playerid,2, DIALOG_STYLE_INPUT,"Papildyti sąskaitą","Suma turi būti įvesta skaičiais\
\nĮrašykite sumą, už kurią norite papildyti sąskaitą","Pildyti","Išeiti"); // Jei ne skaičiais, parašome tekstą
return 1;
}

new msg[ 36 ]; // Sukuriame kintamąjį
format(msg,sizeof(msg)," Jūsų sąskaita papildyti %iLT",kiek); // Formatuoja tekstą
SendClientMessage(playerid,RED,msg); // Siunčiame suformatuotą tekstą
playerDB[playerid][mobsas]+=kiek; // Mobsas - tai sąskaitos kintamasis, kurį galėsite naudoti telefonų sistemoje. Šioje eilutėje papildome sąskaitą
GivePlayerMoneyA(playerid, -kiek); // Atima iš žaidėjo tiek pinigų, už kiek jis pildė sąskaitą.
}
}

Viską surašę, spaudžiame F5.

Štai ir viskas, pamoka baigta. Pamoką kūriau aš, norėdami kopijuoti, parašykite kreditus.

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