SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Archive

 
 
Thread Tools Display Modes
Old 12/02/2012, 01:12 PM   #1
weper
Little Clucker
 
Join Date: Jul 2009
Location: Hungary
Posts: 20
Reputation: 0
Question Jármű Rendszer [Kérdés]

Valaki nem tudja, hogy ennél mi lehet a hiba?

public OnPlayerStateChange(playerid, newstate, oldstate)
{
for(new i = 0; i < MAX_VEHICLES; i++)
{

if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER && JarmuInfo[i][JarmuSzam] > 0)
{

ShowPlayerDialog(playerid,JarmuDialog1,DIALOG_STYL E_LIST,"Jármű","Elindít\nMegvesz\nElad\nJármű Száma\nKiszáll/Leszáll","OK", "BEZÁR");

}
}
return 1;
}


Azt szeretném megcsinálni, hogy csak akkor listázza ki a dialogot, ha a bescriptelt (megvehető) járművekbe ülök be.
Mert akármelyik járműbe ülök be mindegyiknél kilistázza.


A Jármű többi adatai:


stock JarmuBetoltes()
{
new str[256];
for(new i = 0; i < MAX_VEHICLES; i++)
{
format(str, sizeof str, "/Jarmuvek/Jarmu%d.ini", i);
if(!dini_Exists(str))
{

}
else
{
//CarBetolt(i);
printf("kocsi %d betöltve", i);
new Float, Float:y, Float:z, Float:face;

new Model = dini_Int(str, "Model");
x = dini_Float(str, "PosX");
y = dini_Float(str, "PosY");
z = dini_Float(str, "PosZ");
face = dini_Float(str, "PosFace");
new Color1 = dini_Int(str, "Color1");
new Color2 = dini_Int(str, "Color2");
JarmuInfo[i][JarmuSzam] = dini_Int(str, "JarmuSzam");
JarmuInfo[i][JarmuAr] = dini_Int(str, "JarmuAr");

CreateVehicle(Model,x,y,z,face,Color1,Color2, 60);
}
}
return 1;
}
weper is offline  
Old 17/02/2012, 04:20 PM   #2
Nonameman
Huge Clucker
 
Nonameman's Avatar
 
Join Date: Jun 2009
Location: Hungary
Posts: 319
Reputation: 18
Default Re: Jármű Rendszer [Kérdés]

A megvehető járműveket tároló tömb és lekérdezés hozzá:
pawn Code:
new BuyableVehicles[MAX_VEHICLES];

stock IsBuyableVehicle(vehicleid) {
    for (new v = 0; v < MAX_VEHICLES; v++) {
        if (vehicleid == BuyableVehicles[v]) return true;
    }
    return false;
}
OnPlayerStateChange() callback az előbb említett lekérdezéssel, hogy csak a megadott járművekbe ülve jelenjen meg a dialog:
pawn Code:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    for(new i = 0; i < MAX_VEHICLES; i++)
    {
        if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER && JarmuInfo[i][JarmuSzam] > 0) // a 2. feltételt nem értettem mire használod
        {
            if (IsBuyableVehicle(GetPlayerVehicleID(playerid))) {
                ShowPlayerDialog(playerid,JarmuDialog1,DIALOG_STYLE_LIST,"Jármű","Elindít\nMegvesz\nElad\nJármű Száma\nKiszáll/Leszáll","OK", "BEZÁR");
            }
        }
    }
    return 1;
}
És végül a JarmuBetoltes() funkció (inkább forward-oltam):
pawn Code:
forward JarmuBetoltes();
public JarmuBetoltes()
{
    new str[256];
    for(new i = 0; i < MAX_VEHICLES; i++)
    {
        format(str, sizeof str, "Jarmuvek/Jarmu%d.ini", i);
        if(dini_Exists(str))
        {
            //CarBetolt(i);
            printf("kocsi %d betöltve", i);
            new Float, Float:y, Float:z, Float:face;

            new Model = dini_Int(str, "Model");
            x = dini_Float(str, "PosX");
            y = dini_Float(str, "PosY");
            z = dini_Float(str, "PosZ");
            face = dini_Float(str, "PosFace");
            new Color1 = dini_Int(str, "Color1");
            new Color2 = dini_Int(str, "Color2");
            JarmuInfo[i][JarmuSzam] = dini_Int(str, "JarmuSzam");
            JarmuInfo[i][JarmuAr] = dini_Int(str, "JarmuAr");

            BuyableVehicles[i] = CreateVehicle(Model,x,y,z,face,Color1,Color2, 60);
        }
    }
    return 1;
}
Láttam hogy a sizeof()-ról lemaradtak a zárójelek, és a fájl elérési útvonalában az első mappa neve elé felesleg '/'-t tettél, ezekre figyelj oda!
Nonameman is offline  
Old 17/02/2012, 05:14 PM   #3
weper
Little Clucker
 
Join Date: Jul 2009
Location: Hungary
Posts: 20
Reputation: 0
Default Re: Jármű Rendszer [Kérdés]

Oks kösz
Lehetne még 1 kérdésem? Azt hogy tudom megcsinálni, hogy ellenőrizze a jármű árát és ha abban a járműben ülök, akkor azt vegye meg?




public JarmuRendszer(playerid, dialogid, response, listitem)
{
//----------------------------------------------------------------------------------------------//
//--------------------------------------[Jármű Rendszer]----------------------------------------//




if(dialogid == JarmuDialog1)
{
for(new i = 0; i < MAX_VEHICLES; i++)
{
new jarmufile[256];
format(jarmufile, sizeof jarmufile, "/Jarmuvek/Jarmu%d.ini", i);
new jarmuszam[512];
if(response)
{
if(listitem == 0)
{
if(IsBuyableVehicle(GetPlayerVehicleID(playerid)) == JarmuID[playerid]) //Ha a jármű ID-je megegyezik a felhasználó fájljában lévő jármű id-vel
{
ShowPlayerDialog(playerid,HELPDIALOG,DIALOG_STYLE_ MSGBOX,"Infó","Elindítottad a járművet.","OK","BEZÁR");

}
else
{
ShowPlayerDialog(playerid,HELPDIALOG,DIALOG_STYLE_ MSGBOX,"Infó","Ez nem a te járműved! Nem bírod elindítani!","OK","BEZÁR");
RemovePlayerFromVehicle(playerid);
}

}
if(listitem == 1)
{
if(Jarmu[playerid] == 0)
{
if(JarmuInfo[i][JarmuMegveve] <= 0) //ha a jármű nincs megvéve
{
if(Penz[playerid] >= JarmuInfo[i][JarmuAr])
{
Penz[playerid] -= JarmuInfo[i][JarmuAr];
JarmuID[playerid] = IsBuyableVehicle(GetPlayerVehicleID(playerid));
Jarmu[playerid] = 1;
dUserSetINT(PlayerName(playerid)).("Jarmu",Jarmu[playerid]);
dUserSetINT(PlayerName(playerid)).("JarmuID",Jarmu ID[playerid]);
ShowPlayerDialog(playerid,HELPDIALOG,DIALOG_STYLE_ MSGBOX,"Infó","Sikeresen megvetted a járművedet!","OK","KILÉP");
}
else
{
ShowPlayerDialog(playerid,HELPDIALOG,DIALOG_STYLE_ MSGBOX,"Infó","Nincs elég pénzed megvenni ezt a járművet!","OK","KILÉP");
RemovePlayerFromVehicle(playerid);
}
}
else
{
ShowPlayerDialog(playerid,HELPDIALOG,DIALOG_STYLE_ MSGBOX,"Infó","Ezt a járművet már megvették!","OK","KILÉP");
RemovePlayerFromVehicle(playerid);
}
}
else
{
ShowPlayerDialog(playerid,HELPDIALOG,DIALOG_STYLE_ MSGBOX,"Infó","Már van járműved!","OK","KILÉP");
RemovePlayerFromVehicle(playerid);
}
}
if(listitem == 2)
{
if(Jarmu[playerid] == 1)
{
if(JarmuID[playerid] == IsBuyableVehicle(GetPlayerVehicleID(playerid)))
{
ShowPlayerDialog(playerid,HELPDIALOG,DIALOG_STYLE_ MSGBOX,"Infó","Sikeresen eladtad a járművedet! Megkaptad a jármű összegét!","OK","KILÉP");
Penz[playerid] += JarmuInfo[i][JarmuAr];
JarmuID[playerid] = 0;
Jarmu[playerid] = 0;
dUserSetINT(PlayerName(playerid)).("Jarmu",Jarmu[playerid]);
dUserSetINT(PlayerName(playerid)).("JarmuID",Jarmu ID[playerid]);
RemovePlayerFromVehicle(playerid);
}
else
{
ShowPlayerDialog(playerid,HELPDIALOG,DIALOG_STYLE_ MSGBOX,"Infó","Nem adhatod el ezt a járművet, mert nem a tiéd!","OK","KILÉP");
RemovePlayerFromVehicle(playerid);
}
}
else
{
ShowPlayerDialog(playerid,HELPDIALOG,DIALOG_STYLE_ MSGBOX,"Infó","Nincs járműved, amit eladhatnál!","OK","KILÉP");
RemovePlayerFromVehicle(playerid);
}
}
if(listitem == 3)
{
if(JarmuID[playerid] == IsBuyableVehicle(GetPlayerVehicleID(playerid)))
{
format(jarmuszam, sizeof(jarmuszam), "Jármű Száma: %i", IsBuyableVehicle(GetPlayerVehicleID(playerid)));
ShowPlayerDialog(playerid,841,DIALOG_STYLE_MSGBOX, "Infó",jarmuszam,"Oké","Kilép");
}
else
{
format(jarmuszam, sizeof(jarmuszam), "Jármű Száma: %i", IsBuyableVehicle(GetPlayerVehicleID(playerid)));
ShowPlayerDialog(playerid,841,DIALOG_STYLE_MSGBOX, "Infó",jarmuszam,"Oké","Kilép");
RemovePlayerFromVehicle(playerid);
}
}
if(listitem == 4)
{
RemovePlayerFromVehicle(playerid);
}
}
else
{
ShowPlayerDialog(playerid,JarmuDialog1,DIALOG_STYL E_LIST,"Jármű","Elindít\nMegvesz\nElad\nJármű Száma\nKiszáll/Leszáll","OK", "BEZÁR");
}
}
return 1;
}
return 1;
}
weper is offline  
Old 17/02/2012, 05:40 PM   #4
Nonameman
Huge Clucker
 
Nonameman's Avatar
 
Join Date: Jun 2009
Location: Hungary
Posts: 319
Reputation: 18
Default Re: Jármű Rendszer [Kérdés]

Ezt kérlek töltsd fel a http://pastebin.com/ -ra, mert így átláthatatlan.
Nonameman is offline  
Old 17/02/2012, 06:12 PM   #5
weper
Little Clucker
 
Join Date: Jul 2009
Location: Hungary
Posts: 20
Reputation: 0
Default Re: Jármű Rendszer [Kérdés]

http://pastebin.com/VinKiatW
weper is offline  
Old 17/02/2012, 08:39 PM   #6
Nonameman
Huge Clucker
 
Nonameman's Avatar
 
Join Date: Jun 2009
Location: Hungary
Posts: 319
Reputation: 18
Default Re: Jármű Rendszer [Kérdés]

Huh, itt nagy kavarodás van. Nem igazán látom át hogy milyen változót mire és hogyan használsz, csak azt tudom, hogy sokat feleslegesen deklarálsz. Az IsBuyableVehicle() funkciót arra használd, hogy megtudd melyik jármű megvehető, ne arra, hogy a jármű ID-jét kapd vissza.

Egyébként jó úton haladsz, mikor a játékos kiválasztja a jármű vásárlása menüpontot, a response részben vedd fel a jármű azonosítóját, tehát:
pawn Code:
new vID = GetPlayerVehicleID(playerid);
és a vID-t írd be a JarmuInfo első kapcsos zárójelébe, amikor ellenőrzöd az értékeit.
A for ciklust pedig szedd ki az egész JarmuRendszer funkcióból, nem kell külön keresgélned a jármű azonosítóját, ha egyszerűen csak azt keresed, amiben a játékos ül. Arra ott van az előbb említett deklaráció.
Nonameman is offline  
Old 17/02/2012, 09:00 PM   #7
weper
Little Clucker
 
Join Date: Jul 2009
Location: Hungary
Posts: 20
Reputation: 0
Default Re: Jármű Rendszer [Kérdés]

Kösz, most már működik
weper is offline  
Old 17/02/2012, 10:57 PM   #8
Nonameman
Huge Clucker
 
Nonameman's Avatar
 
Join Date: Jun 2009
Location: Hungary
Posts: 319
Reputation: 18
Default Re: Jármű Rendszer [Kérdés]

Örülök hogy segíthettem, remélem érted mit miért kellett változtatni.
Nonameman is offline  
 

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[FilterScript] [FS] Vehicle Spawner || Jármű Spawnoló (ENG / HUN) antus Filterscripts 6 17/10/2012 10:24 AM
Mysql reg rendszer Game94 Archive 1 06/06/2012 08:44 AM
[FS]Laptop Rendszer [DrM]spatrik Archive 8 20/07/2011 04:26 PM
Pár kérdés:D azzeroth Archive 1 15/01/2011 07:45 AM
[SEGÍTSÉG] Ház rendszer antus Archive 7 02/03/2010 12:00 PM


All times are GMT. The time now is 01:51 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.