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

[PAMOKA/SCRIPTAS] Variklio sistema


ViVix

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

Variklio Sistemos pamoka

Pradėkime.

Gamemodo viršuje rašome :

new KAPOTAS[MAX_VEHICLES],VARIKLIS[MAX_VEHICLES],VEHID[MAX_PLAYERS],DUZO[MAX_VEHICLES]; // sukuriam kintamuosius

va tokius keturis dalykus (funkcijas) sukeliame į gamemodo galą :

stock ErrorMSG(playerid,zinute[])
{
new msg[250];
format(msg,sizeof(msg),"{22FC05}*~~~* %s",zinute);
SendClientMessage(playerid,-1,msg);
return 1;
}
stock M(playerid,zsx[]) // šita funkcija atliks tokią pačia funkciją kaip ir SendClientMessage tik kad jau bus nustatyta kokia spalva viską rašys, čia tik šeip pasigražinimui
{
new msgsz[200];
format(msgsz,200,"{E5FA02} %s",zsx); // 
SendClientMessage(playerid,-1,msgsz);
return 1;
}

stock VariklisStatus(vehicleid, bool:busenas)
{
new
param[7]
;
GetVehicleParamsEx(vehicleid, param[0], param[1], param[2], param[3], param[4], param[5], param[6]); // gaunam mašinos parametrus
 if(busenas)
{
VARIKLIS[vehicleid] = true; // nustatom kintamąji  į true reikšmę, nes vėliau reikės tikrinimam
SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_ON, param[1], param[2], param[3], param[4], param[5],  param[6]); // padarom variklį užkurtą
}
else
{
VARIKLIS[vehicleid] = false; // padarom į false.....
  SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_OFF, param[1], param[2], param[3], param[4], param[5],  param[6]); // užgesinam .......
}
}
stock Kapotasz(vehicleid,bool:busenaz)
{
new
param[7]
;
GetVehicleParamsEx(vehicleid, param[0], param[1], param[2], param[3], param[4], param[5], param[6]); // gaunam mašinos paramet...
 if(busenaz)
{
KAPOTAS[vehicleid] = true; // padarom true, nes reikės tikrinimam
SetVehicleParamsEx(vehicleid, param[0], param[1], param[2], param[3], VEHICLE_PARAMS_ON, param[5], param[6]); // atidarom kapotą
}
else
{
KAPOTAS[vehicleid] = false; // padarom false tikrinimam...
  SetVehicleParamsEx(vehicleid, param[0], param[1], param[2], param[3], VEHICLE_PARAMS_OFF, param[5], param[6]); // uždarom kapotą
}
}

Daug neaiškinsiu apie tai, "Kapotasz" funkcija, atidarys/uždarys mašinos kapotą, o "VariklisStatus" įjungs/išjungs mašinos variklį.

Toliau darome komandas. Aš naudoju ZCMD.

Dedame gamemodo gale:

CMD:kapotas(playerid,params[])
{
new Float:coo[3];
GetVehiclePos(VEHID[playerid],coo[0],coo[1],coo[2]); // gaunam mašinos poziciją kurioje sedėjome, čia bus vėliau.
if(!IsPlayerInRangeOfPoint(playerid,7.0,coo[0],coo[1],coo[2])) return ErrorMSG(playerid,"maðina yra per toli"); // tikrinam ar prie mašinos
if(IsPlayerInAnyVehicle(playerid)) return ErrorMSG(playerid,"Pirma iðlipkite ið maðinos"); // jei mašinoje parašykime žaidėjui kad išliptu
if(KAPOTAS[VEHID[playerid]]) // jei kapotas atidarytas tai uždarom
{
Kapotasz(VEHID[playerid],false); // uždarom kapotą
M(playerid,"Kapotas uzidarytas"); // siunčiam pranešimą
return 1;
}
if(!KAPOTAS[VEHID[playerid]]) // jei kapotas uždarytas tada atidarom
{
Kapotasz(VEHID[playerid],true); // atidarom kapotą
M(playerid,"Kapotas atidarytas"); // siunčiam pranešima
return 1;
}
return true;
}
// tas pats toliau su varikliu, jei variklis užgesintas tai užkuriam, jei užkurtas tai užgesinam
CMD:variklis(playerid,params[])
{
if(!KAPOTAS[VEHID[playerid]]) return ErrorMSG(playerid,"Maðinos kapotas yra uþdarytas, raðyk /kapotas"); // tikrinam ar kapotas atidarytas
if(!DUZO[VEHID[playerid]]) return ErrorMSG(playerid,"Jūsų mašiną yra sveika");
new Float:coo[3];
GetVehiclePos(VEHID[playerid],coo[0],coo[1],coo[2]); // gaunam mašinos poziciją
if(!IsPlayerInRangeOfPoint(playerid,7.0,coo[0],coo[1],coo[2])) return ErrorMSG(playerid,"maðina yra per toli"); // jei mašiną yra per toli siunčiam sms, ir sustabdom komandą
if(KAPOTAS[VEHID[playerid]])
{
DUZO[VEHID[playerid]] = false;
VariklisStatus(VEHID[playerid], true);
M(playerid,"Maðinos variklis uþvestas");
}
return true;
}

Toliau po OnPlayerExitVehicle dedame :

VEHID[playerid] = vehicleid; // išsaugosim paskutinės sėdėtos mašinos id į žaidėjo kintamaji

Toliau darome tikrinima, ilipsime į mašiną ir jei bus variklio kintamasis neigiamas, tada ir mašiną užgesinsime.

Po OnPlayerStateChange dedam :

if(newstate == PLAYER_STATE_DRIVER)
{
new vehicleid = GetPlayerVehicleID(playerid);
if(!VARIKLIS[vehicleid])
{
M(playerid,"Spausk {F70C37}N {E5FA02}raidæ, kad uþvestum variklá");
VariklisStatus(vehicleid,false);
}
}

Na ir darom mašinos užvedimą.

Po OnPlayerKeyStateChange dedam :

new vehicleid = GetPlayerVehicleID(playerid);
if(IsPlayerInAnyVehicle(playerid) && newkeys == KEY_NO) // jei žaidėjas mašinoje ir paspaude "N"
{
if(VARIKLIS[vehicleid]) return ErrorMSG(playerid,"Jûsø maðinos variklis jau uþvestas"); // jei variklis jau užvestas
if(!VARIKLIS[vehicleid])
{
VariklisStatus(vehicleid,true);
}
else
{
VariklisStatus(vehicleid,false);
}
return 1;
}

Toliau darom, kad atsitrenkus kur nors, kad užgesintų mašiną.

Parsisiunčiam include ir ją instaliuojam.

http://forum.sa-mp.com/showthread.php?t=276059

gale modo rašom :

public OnPlayerVehicleDamage(playerid,vehicleid,Float:Damage)
{
if(Damage >= 90) // jei nuims daugiau arba lygiai 90 gyvybių
{
DUZO[vehicleid] = true; // padarysim kintamaji true, reikės tikrinimam
VariklisStatus(vehicleid,false); // užgesinam mašiną
M(playerid,"Jûsø maðinos variklis uþgæso, raðyk /kapotas ir /variklis");
}
return 1;
}

Pamoka/Skriptas kaip pavadinsite nesvarbu yra kurta mano.

Jei kas nors neveiks, praneškit.

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

(1218) : error 017: undefined symbol "ZaidejoIssaugojimas"

(1286) : error 017: undefined symbol "M"

(1287) : error 017: undefined symbol "VariklisStatus"

(1425) : error 017: undefined symbol "amp"

(1425) : error 001: expected token: ")", but found ";"

(1425) : error 036: empty statement

(1425) : fatal error 107: too many error messages on one line

Eilutes:

----------------------------------------------------------1218
public OnPlayerDisconnect(playerid, reason)
{
ZaidejoIssaugojimas(playerid);
return 1;
}
--------------------------------------------------------------------1286
M(playerid,"Spausk {F70C37}N {E5FA02}raid¿, kad u?vestum varikl?");
--------------------------------------------------------------------1287
VariklisStatus(vehicleid,false);
--------------------------------------------------------------------1425
if(IsPlayerInAnyVehicle(playerid) && newkeys == KEY_NO)
--------------------------------------------------------------------

Kas blogai?

Nuoroda į komentarą
Dalintis per kitą puslapį

(1218) : error 017: undefined symbol "ZaidejoIssaugojimas"

(1286) : error 017: undefined symbol "M"

(1287) : error 017: undefined symbol "VariklisStatus"

(1425) : error 017: undefined symbol "amp"

(1425) : error 001: expected token: ")", but found ";"

(1425) : error 036: empty statement

(1425) : fatal error 107: too many error messages on one line

Eilutes:

----------------------------------------------------------1218
public OnPlayerDisconnect(playerid, reason)
{
ZaidejoIssaugojimas(playerid);
return 1;
}
--------------------------------------------------------------------1286
M(playerid,"Spausk {F70C37}N {E5FA02}raid¿, kad u?vestum varikl?");
--------------------------------------------------------------------1287
VariklisStatus(vehicleid,false);
--------------------------------------------------------------------1425
if(IsPlayerInAnyVehicle(playerid) && newkeys == KEY_NO)
--------------------------------------------------------------------

Kas blogai?

Nėra tokių dalykų kaip "ZaidejoIssaugojimas", "M", "VariklisStatus".

Dabar pastebėjau, kadangi tu kopinai nukopinai ir jo klaidą.

Ten turėtų būti "&&" o "&" HTML reiškia tą simbolį.

Kitas dalykas NIEKADA netikrink mygtukų taip "newkeys == KEY_NO)"

Nuoroda į komentarą
Dalintis per kitą puslapį

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