-
Az lenne a kérdésem hogy valaki definiálni a vehicle modelt?
úgy értem hogy:
[pawn]carid == 66 || carid == 67 || carid == 91 || carid == 92 || carid == 93[/pawn]
Azt szeretném hogy ne a kocsi id-jét,vegye alapul hanem a modeljét.Pl.: zsaru kocsik ne a 68-as stb kocsik legyenek hanem az összes ami 440-es model id-jû (csak példa nem tudom fejbõl az id-jét :D)
Köszönöm elõre is.
-
Sajnos nem értelek,de ha definálásra gondolsz:
[pawn]#define .....[/pawn]
-
Nekem is jól jönne.
A gf-be rendszám alapján sorolja be az autókat (( pl 15-ös kocsitól a 30-asig rendõr )) és ,hogy ne ezeket a rendszámokat vegye a rendszer hanem a kocsi modell ID-jét
Pont ezért nem tudok több kocsit hozzá adni....
-
http://wiki.sa-mp.com/wiki/GetVehicleModel
-
áá :D
[pawn]#define kocsimodel GetVehicleModel;[/pawn]
Vagy new-al kell megcsinálni?
Ment a +1
-
Félre érted nem kell semmit definiálni de ha akarod akkor úgy csinálod nem tudom pontosan hol szeretnél modelid-re valamit alkalmazni de azt így tudod:
[pawn] if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 411) // 411 is the infernus model
{
SendClientMessage(playerid, 0xFFFFFFFF, \"Nice Infernus!\");
}[/pawn]
Vagyis elsõnek meg kell állapítani a játékos melyik sorszámú autóban van (vehicleid) majd ezután megállapítjuk a modelid számát (GetVehicleModel) és ha az 411 jelen esetben infernus akkor kap egy üzenetet.
-
[pawn]
public IsACopCar(carid)
{
if((carid >= 35) && (carid <= 60) || carid == 66 || carid == 67 || carid == 91 || carid == 92 || carid == 93 || carid == 36)
{
if(carid == 45 || carid == 46 || carid == 55 || carid == 59) { return 0; }
return 1;
}
return 0;
}[/pawn]
-
[pawn]
public IsACopCar(carid)
{
if((carid >= 35) && (carid <= 60) || carid == 66 || carid == 67 || carid == 91 || carid == 92 || carid == 93 || carid == 36)
{
if(carid == 45 || carid == 46 || carid == 55 || carid == 59) { return 0; }
return 1;
}
return 0;
}[/pawn]
Ezzel te el se tudod képzelni mennyit segítettél nekem :o :o +++ ;)
-
Erre rengeteg megoldás van de talán az alap bevált módszert próbálnám leírni, (most nem akarok kitérni itt az egyéb adat tömörített változatokra amik kevesebb memória terület lefoglalása mellett gyorsabban is végrehajtják a feladatot):
Elsõnek kellenek azok a modelid-k amik rendõr jármûvek:
http://wiki.sa-mp.com/wiki/Vehicles:All
[pawn]stock
IsaCopCar(playerid)
{
new
vehid = GetPlayerVehicleID(playerid); // lekérdezzük hogy a játékos melyik sorszámú autóban van
if(vehid) // Ellõnrízzük hogy ezaz érték nagyobb-e nullánál mert ha nulla akkor a játékos nincs jármûben.
{
switch(GetVehicleModel(vehid)) //Itt egy if hez hasonló szerkezet csak ez valamivel szebb lényegében a jármû azonosító számából lekérdezzük a modelid-t
{
case 427, 497, 528, 596, 597, 598, 599, 601: return true; // A rendõr jármûvek modelidje majd a visszatéréseket megváltoztatod olyanra amelyik neked kell meg a modelidket is írd át, ha van benn olyan aminek nem kellene.
}
}
return false; // false (0) visszatérési érték ha nem rendõr jármûben van és nem tartózkodik jármûben a játékos.
}[/pawn]
-
Akkor a régit ki is törölhetem nem de?
És ide jön az is hogy \"Nem vagy rendõr stb?\" Mert akkor azt is törölni kell a mod-ból,mert egyszer már benne van csak másképp. +1
-
Akkor a régit ki is törölhetem nem de?
És ide jön az is hogy \"Nem vagy rendõr stb?\" Mert akkor azt is törölni kell a mod-ból,mert egyszer már benne van csak másképp. +1
Így van kitörölheted, mivel a régi módszereddel te megadtad azokat a jármû sorszámokat amik rendõr jármûvek a szerveren, így nem módosíthatod õket meg kell tartanod az eredeti sorrendet, ennél a változatnál meg teljesen mindegy milyen sorrendben vannak a jármûvek, mindig az adott játékos állapotától függ (jármû elfoglalás) a mûködése.
-
Köszönöm mégegyszer,ennek alapjára már megtudom csinálni a többit is.
+1 mégegyszer
de van egy kis probléma.mentõsöknek is van helikopterük de az csak 1 sima maverick.Akkor gondolom a veh id-jét kell megnéznem.De hogy?
-
A maverick-nek is van modelid-je ugyanúgy lehet rá hivatkozni. 487
-
nem érted.Van rendõrségnek külön polie maverickje,de kórháznak nincs így piros,fehér mavericket kell csinálni.De hogy ha annak a modelid-jét írom be akkor az összes maverick mentõs lesz.
-
forward RendorKocsi(carid);
public RendorKocsi(carid)
{
new model = GetVehicleModel(carid);
if(model == 427 || model == 490 || model == 523 || model == 596 || model == 597 || model == 598 || model == 599);
{
return 1;
}
return 0;
}
Igazából végig sem olvastam az elöttem posztolókat,erre van szükséged?
-
D:\\SZERVER\\gamemodes\\legujabbkorhaz.pwn(1800) : error 036: empty statement
D:\\SZERVER\\gamemodes\\legujabbkorhaz.pwn(1804) : warning 225: unreachable code
1800
[pawn]if(model == 427 || model == 490 || model == 523 || model == 596 || model == 597 || model == 598 || model == 599);[/pawn]
1804
return 0-s
-
forward RendorKocsi(carid);
public RendorKocsi(carid)
{
new model = GetVehicleModel(carid);
if(model == 427 || model == 490 || model == 523 || model == 596 || model == 597 || model == 598 || model == 599)
{
return 1;
}
return 0;
}
A javított verzió,siettem,ezért az elöbbit elírtam
-
Azt az egy jármûvet megjelõlöd egy változóval és azt az egyet kihagyod az ellenõrzésbõl.
[pawn]new mento; // A mód tetejére global változóként.[/pawn]
majd az OnGameModeInit alatt megkeresed azt a jármûvet amelyik a mentõsöké.
mento = AddStaticVehicle(......
és ezt a változót beilleszted valamelyik kódba hogy kihagyja az egész folyamatból.
[pawn]stock
IsaCopCar(playerid)
{
new
vehid = GetPlayerVehicleID(playerid); // lekérdezzük hogy a játékos melyik sorszámú autóban van
if(vehid == mento) return false;
if(vehid) // Ellõnrízzük hogy ezaz érték nagyobb-e nullánál mert ha nulla akkor a játékos nincs jármûben.
{
switch(GetVehicleModel(vehid)) //Itt egy if hez hasonló szerkezet csak ez valamivel szebb lényegében a jármû azonosító számából lekérdezzük a modelid-t
{
case 427, 497, 528, 596, 597, 598, 599, 601: return true; // A rendõr jármûvek modelidje majd a visszatéréseket megváltoztatod olyanra amelyik neked kell meg a modelidket is írd át, ha van benn olyan aminek nem kellene.
}
}
return false; // false (0) visszatérési érték ha nem rendõr jármûben van és nem tartózkodik jármûben a játékos.
}[/pawn]
-
Köszi mentek a +1-ek.
[pawn]
public IsAnAmbulance(carid)
{
new vehid = GetPlayerVehicleID(playerid);
if(vehid == mento) return false;
return 0;
}[/pawn]
undefined symbol playerid
valaki ?:D
-
Köszi mentek a +1-ek.
[pawn]
public IsAnAmbulance(carid)
{
new vehid = GetPlayerVehicleID(playerid);
if(vehid == mento) return false;
return 0;
}[/pawn]
undefined symbol playerid
valaki ?:D
GetPlayerVehicleID(playerid);
nincs definálva a Playerid :)
ezt ird át a GM be :
forward IsAnAmbulance(carid);
Erre :
forward IsAnAmbulance(carid,playerid);
És ezt is változtasd :
public IsAnAmbulance(carid)
Erre :
public IsAnAmbulance(carid,playerid)
Elméletileg jó lesz :)
-
D:\\SZERVER\\gamemodes\\legujabbkorhaz.pwn(1603) : warning 202: number of arguments does not match definition
D:\\SZERVER\\gamemodes\\legujabbkorhaz.pwn(3776) : warning 202: number of arguments does not match definition
D:\\SZERVER\\gamemodes\\legujabbkorhaz.pwn(13876) : warning 202: number of arguments does not match definition
1603
[pawn]if (IsAnAmbulance(vehicleid) && !ispassenger)[/pawn]
3776
[pawn]else if(IsAnAmbulance(newcar))[/pawn]
13876
[pawn]if (IsAnAmbulance(playambu) && playambu == giveambu)[/pawn]
-
Most ne keverd az azonosító sorszámokat vehicleid playerid mert az elõzõ az jármû sorszámozást takar míg az utóbbi az játékos sorszámozást jelöl.
Most a funkciót annak alapján írod meg amelyiket használni akarod ha a vehicleid sorszámozást használod akkor több helyen így kellene használnod:
[pawn]stock IsAnAmbulance(vehicleid) return vehicleid == mento; // Egyetlen egy jármûért amúgy felesleges egy ilyent létrehozni, de tapasztalat szerzésnek nem rossz az ilyen se.[/pawn]
majd ahol használod pl.:
[pawn]public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(IsAnAmbulance(vehicleid))
{[/pawn]
van vehicleid paraméter a callback funkcióban ott azt használod ahol meg nincs:
pl.:
[pawn]public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(IsAnAmbulance(GetPlayerVehicleID(playerid)))
{[/pawn]
-
Ezt nem értem :D
-
Ezt nem értem :D
Pedig ennél érthetõbben nem lehet leírni olvasd el többször próbálgasd szkriptben, mást nem tudok javasolni.
-
Nos szerettem volna megoldani azt hogy bizonyos kocsik amik elõtt ott van hogy \"mento =\" azok mentõskocsinak számítsanak és ne tudjon beleszállni normál player.De ezeket a warnokat kaptam.
Ez a fõ kód,és ebben van az 1601-es sor.
[pawn]
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if (IsACopCar(vehicleid) && !ispassenger)
{
if(PlayerInfo[playerid][pLeader]==1||PlayerInfo[playerid][pLeader]==2||PlayerInfo[playerid][pLeader]==3) {}
else
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid, COLOR_RED, \"Nem vagy a tagja!\");
}
if (IsAnAmbulance(vehicleid) && !ispassenger) //1601
{
if(PlayerInfo[playerid][pMember]==4||PlayerInfo[playerid][pLeader]==4) { }
else
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid, COLOR_RED, \"Nem vagy a mentõszolgálat tagja!\");
}
return 1;
}[/pawn]
Warnok:
D:\\SZERVER\\gamemodes\\legujabbkorhaz.pwn(1601) : warning 202: number of arguments does not match definition
D:\\SZERVER\\gamemodes\\legujabbkorhaz.pwn(3773) : warning 202: number of arguments does not match definition
D:\\SZERVER\\gamemodes\\legujabbkorhaz.pwn(13880) : warning 202: number of arguments does not match definition
[pawn]else if(IsAnAmbulance(newcar)) //3773[/pawn]
[pawn]if (IsAnAmbulance(playambu) && playambu == giveambu) //13880[/pawn]
Elõre is köszönöm minden hozzászóló segítségét.
[mod]Ne nyiss feleslegesen még egy témát ez ügyben, tökéletesen megfelel a régi is erre a célra ha ebben írsz új hozzá szólást az is elõre fog kerülni. Témák össze vonva.[/mod]
-
\"number of arguments does not match definition\"
(nem szó szerinti fordítás!)
Azt jelenti hogy a használt függvény paraméterinek száma nem egyezik meg a tényleges függvény paramétereivel.
[pawn]IsAnAmbulance(param1, param2, param3)[/pawn]
Itt 3 paramétere van az adott függvénynek így mikor használod ott is 3-mat kell megadni.
Ez nem minden esetben így van, vannak egyéb megoldások, de ezzel most nem akarlak össze zavarni.
[pawn]if(IsAnAmbulance( 4, 6, playerid))[/pawn]
És mint a hozzászólásodban olvastam
amik elõtt ott van hogy \"mento =\"[/quote]
Már eleve rosszul alkalmazod a mento kifejezés/változó csak egy darab jármû azonosító számát tudja tárolni jelen formájában és nem az összesét.
Ahhoz hogy te több jármû vehicleid értékét tudd tárolni több változót vagy ennek a változónak kell adni egy plusz dimenziós/array értéket.
[pawn]new mento, mento1, mento2, mento3;
mento = AddStaticVehicle(...
mento1 = AddStaticVehicle(...
mento2 = AddStaticVehicle(...
mento3 = AddStaticVehicle(...[/pawn]
Vagy másképp:
[pawn]
new mento[4];
mento[0] = AddStaticVehicle(...
mento[1] = AddStaticVehicle(...
mento[2] = AddStaticVehicle(...
mento[3] = AddStaticVehicle(...[/pawn]