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

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 5020 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, šiandien padarysiu jums pamoką, kaip sukurti automobilio registracijos punktą jūsų serveriui.

Naudosime callbackus ir funkcijas:

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{

Create3DTextLabel

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

i

f(!IsPlayerInAnyVehicle(playerid))
{

SetVehicleNumberPlate

Paaiškinimas: Sukursimę tokia sistemėlę automobilio registracijos. Pirmiausia galite susimapinti kurnorite, arba šiaip kokiame garaže daryti automobilio registracijos punktą. Tuomet pagal OnPlayerKeyStateChange callbacką, padarysime jog paspaudus tam tikrose koordinatėse SPRINT mygtuką (SHIFT arba SPACE), jums išmes GUI lentelę su teksto įvedimo laukeliu, kur įrašysite norimus automobilio numerius (ne ilgesnius kaip 8 simboliai), ir tuomet jūsų mašina atsiras jūsų pasirinktose koordinatėse.

Pradedame daryti. Pirmiausia išsisaugome koordinates, kur reikės paspausti SHIFT arba SPACE, kad išmestų GUI langą. Aš savo atveju naudosiu koordinates -2461.9146,99.3551,37.3040. Atsidarome gamemodą ir susirandame callbacką OnPlayerKeyStateChange, ir po šiuo callbacku rašome šį scriptą:

if( newkeys == KEY_SPRINT ) // Patikrinam, ar žmogus nuspaudė sprintą.
{
if( IsPlayerInRangeOfPoint( playerid, 3.0, -2461.9146,99.3551,37.3040 ) )
{
      if(!IsPlayerInAnyVehicle(playerid))
       {
       SendClientMessage(playerid, COLOR_WHITE,"Jūs neesate jokiame automobilyje");
       return 0;
     }

       ShowPlayerDialog(playerid,220,DIALOG_STYLE_INPUT,"Numerių registracija","Iveskite norimus numerius ant jūsų automobilio\nPo numerių registracijos jūsų automobilis atsiras šalia garažo\nPo numerių registracijos nuo automobilio dings tuningas","Gerai","Atsaukti");
       return 1;
       }
     }

Paaiškinimas: šis scriptas, nustatys ar jūs paspaudėte SPRINT (SHIFT,SPACE) mygtuką, ir ar jūs esate netoliau nei 3.0 atspumu nuo -2461.9146,99.3551,37.3040 koordinačių. Jeigu esate tinkamoje vietoje, scriptas tikrins ar jūs esate automobilyje, ir jeigu neesate - neleis naudotis registracijos punktu. Jeigu esate automobilyje, jums išmes GUI lentelę su teksto įvedimo laukeliu (DIALOG_STYLE_INPUT), kur jūsų prašys įrašyti norimus numerius.

Tuomet susirandame callbacką OnPlayerDialogResponse ir po juo rašome šį kodą:

if(dialogid == 220)
  {
  if(response)
  {
  if(GetPlayerMoneyA(playerid) < 2000)
  {
  SendClientMessage(playerid, COLOR_WHITE, " Neturite tiek pinigu, kiek reikia norint registruoti masina (2000 lt)");
  return 1;
  }

  GivePlayerMoneyA(playerid,-2000);
  new vehicleid = playerDB[playerid][rid][1];
  SetVehicleNumberPlate(vehicleid,inputtext);
  RemovePlayerFromVehicle(playerid);
  SetVehicleToRespawn(vehicleid);
  vehicleDB[vehicleid][parduodama]=true;
  SetVehiclePos(vehicleid,-2435.0725,105.7316,34.7970);
  }
     return 1;
  }

Paaiškinimas: šis kodas pirmiausia tikrins, ar jūs paspaudėte mygtuką, jog registruoti numerius. Jeigu paspaudėte - tikrins ar jūs turite 2000 litų rankose, jeigu neturite - registraciją bus nutraukta. Sumą, kurios reikia registracijai, galite pasikeisti pagal save. Tuomet, jeigu turite 2000 litų rankose, automobilio numeriai bus registruoti, ir jie atsiras ant žaidėjo automobilio. Jums nuims 2000 litų, išmes jus iš automobilio, nukels automobilį į respawną*, bei atkels į jusų pasirinktas koordinates automobilį su tinkamais numeriais. Šiuo atveju aš automobilio atsiradimą naudoju šalia registracijos punkto, -2435.0725,105.7316,34.7970 koordinatėse. Taip pat kodas nustatys jog automobilis nebus parduodamas, jog žaidėjui nereikėtų jo per naujo pirkti.

* Ši funkcija SetVehicleNumberPlate sukurta tik nuo 0.3c samp versijos, ir norint, kad numeriai užsidėtų, automobilis privalo būti nurespawnintas į pradžią funkcijos SetVehicleToRespawn(vehicleid);.

Kai sukuriame visą scriptą, sukursime 3D text labelį, jog žaidėjai galėtų orientuotis, kur registruoti automobilį. Imame pirmąsias koordinates, kurias naudojome OnPlayerKeyStateChange callbacke, mano atveju: -2461.9146,99.3551,37.3040.

Tuomet sukuriame 3D texto labelį:

Pirmiausia, kas nežinote 3D text labelio funkcijos, paaiškinsiu:

Create3DTextLabel("Tekstas, kurį matys žaidėjai", spalva,x,y,z, a, s,d);

spalva - tai jūsų norima spalva, kad rašytų tekstą.

x,y,z - koordinatės, kuriose bus 3D text labelis.

a - matymo distancija

s - virtual world (dažniausiai naudojama 0)

d - matymas per sienas ir objektus

Taigi mano atveju aš kuriu tokį 3D labelį:

Create3DTextLabel("Numerių registracija\nNorėdami registruoti spasukite SHIFT", COLOR_LIGHTBLUE, ,-2461.9146,99.3551,37.3040, 40, 0, 0);

Na štai ir viskas, turime automobilių registracijos punktą. Tą vietą galime pažymėti /gps komandoje, jeigu turite, bei galite daryti pagal šitą dalyką savus išvedžiojimus, kaip jums patogiau.

Padėjau? - Nepagailėk +R3P.



Pirmas tikslas

Surinkti 100 postų [-]

Surinkti 5 +R3P = [-]

Surinkti 100 FLT = [+]

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

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