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

[Vivix#1]Dviraciu sistema


ViVix

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3896 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, siandien padarysiu issamia pamoka, kaip sukurti dviraciu sistema, lengva bet pakankamai gera sistema :)

Gerai pradekim.

Pirmiausia susikuriame folderi scriptfiles/saves/dviraciai

Tada einam i savo gamemoda, susikursime enumus.

enum dviratis
{
Float:posx,
Float:posy,
Float:posz,
dviracioid,
}
new dviratisDB[MAX_PLAYERS][dviratis];
enum dvirat
{
owner_name[MAX_PLAYER_NAME],
locked
}
new dviratDB[MAX_VEHICLES][dvirat];

sie kintamieji bus skirti saugoti i juos informacija.

Pvz gautas dviracio koordinates x'o saugosime i kintamaji dviratisDB[vehicleid][posx] == x koordinates;

Gerai judam toliau.

pradesim daryti dviracio pirkima, ji galesite tobulinti, darau paprasta.

po

OnPlayerCommandText

dedame koda:

if(!strcmp(cmdtext, "/dpirkti", true,8)) // komandos pavadinimas
{
if(dviratisDB[playerid][dviracioid] >=1) // tikrins ar zaidejas jau turi dvirati
{
SendClientMessage(playerid,GREEN,"Jus jau turite dvirati!");
return 1;
}
ShowPlayerDialog(playerid,665,DIALOG_STYLE_MSGBOX,"DVIRACIO PIRKIMAS","Ar norite pirkti dvirati?\nJis jums kainuos 2000LT","Taip","Ne"); // rodysim zaidejui dialoga
return 1;
}

toliau po

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

dedam koda:

if(dialogid == 665)
{
if(response)
{
 new file[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(file,sizeof(file),"saves/dviraciai/%s.ini",name);
dini_Create(file);
dini_FloatSet(file,"posx",irasyk masinos atsiradimo X koordinate); // irasysim duomenis i dini failiuka
dini_FloatSet(file,"posy",irasyk masinos atsiradimo Y koordinate);
dini_FloatSet(file,"posz",irasyk masinos atsiradimo Z koordinate);
dviratisDB[playerid][dviracioid] = CreateVehicle(510,IRASYK CIA x,y,z,0,2,3,-1); // sukursim dvirati
GivePlayerMoney(playerid,-2000); // nuimsim pinigus
}
return 1;
}

Na jau ipusejome, dabar reikia padaryti SAVE/LOAD

pradesim:

gm gale dedame :

forward SaugomDvirati(playerid,bool:simple);
public SaugomDvirati(playerid,bool:simple)
{
if(!simple) GameTextForPlayer(playerid,"~r~] Tavo tavo dviratis saugojamas]",5000,5);
new file[128],Float:x,Float:y,Float:z,name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name)); // gaunam zaidejo varda
format(file,sizeof(file),"saves/dviraciai/%s.ini",name);
GetVehiclePos(dviratisDB[playerid][dviracioid],x,y,z); // gaunam dviracio pozicija
dini_IntSet(file,"locked", dviratDB[dviratisDB[playerid][dviracioid]][locked]);
dini_FloatSet(file,"posx",x); // gautos koordinates bus irasytos i ini failiuka
dini_FloatSet(file,"posy",y);
dini_FloatSet(file,"posz",z);
}

dabar po:

public OnPlayerDisconnect(playerid, reason)
{

dedam:

new file[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(file,sizeof(file),"saves/dviraciai/%s.ini",name);
if(fexist(file))
{
SaugomDvirati(playerid,false); // isaugosim dvirati
DestroyVehicle(dviratisDB[playerid][dviracioid]); // ir sunaikinsim, nes kam jo reikia jeigu tu atsijunges?
}

Saugojimas padarytas, dabar reikia padaryti loadinima.

po

OnPlayerConnect

dedame:

new file[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(file,sizeof(file),"saves/dviraciai/%s.ini",name);
if(fexist(file))
{
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
dviratisDB[playerid][dviracioid] = CreateVehicle(410,dini_Float(file,"posx"),dini_Float(file,"posy"),dini_Float(file,"posz"),0,-1,-1,-1);
strmid(dviratDB[dviratisDB[playerid][dviracioid]][owner_name],name,0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
dviratDB[dviratisDB[playerid][dviracioid]][locked]=true;
}

stai ir loadinimas.

Dabar padarysime kad neitu isesti i uzrakinta dvirati:

Po:

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{

dedame:

if(dviratDB[vehicleid][locked])
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
 if(strcmp(name,dviratDB[vehicleid][owner_name],true))
 {
	 new msg[128];
format(msg,sizeof(msg),"Dviratis yra uzrakinta. Ji priklauso %s",dviratDB[vehicleid][owner_name]);
SendClientMessage(playerid,GREEN,msg);
Stop(playerid);
return 1;
}

Na gerai, dabar keletas komandu siai sistemai.

Po

OnPlayerCommandText

dedame:

if(!strcmp(cmdtext, "/tpb", true,4))
{
new file[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(file,sizeof(file),"saves/dviraciai/%s.ini",name); //
if(!fexist(file))
{
SendClientMessage(playerid,GREEN,"[sERVERIS]: Jus neturite dviracio!");
return 1;
}
new Float:coo[3];
GetVehiclePos(dviratisDB[playerid][dviracioid],coo[0],coo[1],coo[2]); // gaunam dviracio koordinates
SetPlayerPos(playerid,coo[0],coo[1],coo[2]); // teleportuojam prie dviracio
SendClientMessage(playerid,GREEN,"[sERVERIS]: Jus buvote nuteleportuotas prie dviracio!");
return 1;
}

if(!strcmp(cmdtext, "/uzrakinti", true,10))
{
if(dviratisDB[playerid][dviracioid]==0)
{
SendClientMessage(playerid,GREEN,"[sERVERIS]: Jus neturite dviracio!");
return 1;
}
dviratDB[dviratisDB[playerid][dviracioid]][locked]=true;
SendClientMessage(playerid,"jusu dviratis uzrakintas!");
return 1;
}

if(!strcmp(cmdtext, "/atrakinti", true,10))
{
if(dviratisDB[playerid][dviracioid]==0)
{
SendClientMessage(playerid,GREEN,"[sERVERIS]: Jus neturite dviracio!");
return 1;
}
dviratDB[dviratisDB[playerid][dviracioid]][locked]=false;
SendClientMessage(playerid,"Jusu dviratis atrakintas!");
return 1;
}

Pamoka baigta. Ji kurta mano, prasau neripinti, tada bus ir daugiau pamoku.

Jei kas neaisku skype: Auriuks17

Gero naudojimo :)

  • Teigiamai 5
Nuoroda į komentarą
Dalintis per kitą puslapį

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

Okeei.... Nesupratau kodėl saugojimo funkcija public ir kam tas antras parametras ?Koks jo tikslas.. Ta žinutė bereikšmė...

Float:posx,
Float:posy,
Float:posz,

Šita enum dalis apskritai nenaudojama. Perkant tu į ją neįrašai, kraunant į ją nekrauni...

"Locked" kuri kaip paprasta integer, naudoji kaip boolean:

dviratDB[dviratisDB[playerid][dviracioid]][locked]=false;

irasyk masinos atsiradimo Z koordinate
Tai verčia galvoti kad kopijuota iš kažkokios mašinų sistemos.
Nuoroda į komentarą
Dalintis per kitą puslapį

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