GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: FL1P - 2010. Október 10. - 21:50:29

Cím: Paranccsal lerakott Objectek törlése
Írta: FL1P - 2010. Október 10. - 21:50:29
Csá all!

Valaki tudna nekem segíteni:


Hogy, van egy parancsom amit ha beírunk akkor lerak 1 objectet...  :)


Annyi a baj, hogy nem tudom hogy kéne kitörölni az összes olyan objectet amit paranccsal raktunk le.


Pl: Ha beirtjuk 10x akkor azok ott maradnak és nem tudok velük mit kezdeni. xD :dead:


Elõre is thx.
Cím: Paranccsal lerakott Objectek törlése
Írta: TengeriMalac - 2010. Október 10. - 22:36:52
new Object;
if(strcmp(cmdtext, \"/spawn\", true) == 0)
{
    Object = CreateObject(...);
    return 1;
}
if(strcmp(cmdtext, \"/delete\", true) == 0)
{
    DestroyObject(Object);
    return 1;
}

 
Röviden..
Vagy ugyanez, timerrel.
Cím: Paranccsal lerakott Objectek törlése
Írta: FL1P - 2010. Október 11. - 17:23:03
Thx, kipróbáltam és ezzel annyi a baj, hogy valamiért csak az utóljára lerakott objectet törli ki :(
Cím: Paranccsal lerakott Objectek törlése
Írta: ZeRo - 2010. Október 11. - 17:46:45

public OnPlayerCommandText( playerid, cmdtext[  ] ) {
    if( !strcmp( cmdtext, \"/delete\", true ) ) {
        for( new x = 0; x < MAX_OBJECTS; ++x ) {
            if( !IsValidObject( x ) ) continue;
            DestroyObject( x );
        }
        return 1;
    }
    return 0;
}
Cím: Paranccsal lerakott Objectek törlése
Írta: FL1P - 2010. Október 11. - 18:18:57
Köszi, de van egy kis bajom. xD
Pl: Egy egyszerû parancs ilyen.
 
if(strcmp(cmdtext,\"/ao\", true) == 0)
{
new Float:X, Float:Y, Float:Z, Float:rZ;
GetPlayerPos(playerid, X, Y, Z);
GetPlayerFacingAngle(playerid, rZ);
x = CreateObject(18553, X+3, Y, Z, 0.000, 0.000, rZ);
return 1;
}

 
És gondolom mind a két parancsban az obect [id-nek] kell szerepelnie  az \"x\"-nek, hogy azt törölje ki.
 
 if( !strcmp( cmdtext, \"/del\", true ) ) {
        for( new x = 0; x < MAX_OBJECTS; ++x ) {
            if( !IsValidObject( x ) ) continue;
            DestroyObject( x );
        }
        return 1;
    }

 
Erre ezt irja:
 
 warning 219: local variable \"hehe\" shadows a variable at a preceding level 

 
Vagyis, hogy a  változó \"beárnyékolja\" a másik változót.
Cím: Paranccsal lerakott Objectek törlése
Írta: ZeRo - 2010. Október 11. - 18:25:08
Az mindegy, hogy hogyan hozod létre, de ez az eljárás törölni fogja õket, mivel a ciklus segítségével az összes azonosítón végigmegy.
Az a warning pedig nem az én kódomból van, mivel én nem írtam bele \'hehe\' nevû változót. :D De szúrd be azt a sort, amire kiírja a warningot.
Cím: Paranccsal lerakott Objectek törlése
Írta: FL1P - 2010. Október 12. - 19:43:05
Amúgy valamit félrenézhettem amikor beszúrtam a warning-et, xD
Igen a \"hehe\" az enyém  ;D
Nah szóval, a delete parancsban és az object lerakó parancsban is az \"x\" változó szerepel... Azért irja ezt:
Warn.:
 
 (1693) : warning 219: local variable \"x\" shadows a variable at a preceding level 

 
Itt van a sor:
 
 for(new x = 0; x < MAX_OBJECTS; ++x) 

 
És gondolom, hogy ezt a sort az elöbb említett miatt irja warning-nek.
Cím: Paranccsal lerakott Objectek törlése
Írta: ZeRo - 2010. Október 12. - 19:49:29
Akkor írd át o-ra, vagy y-ra, tökmindegy, csak a DestroyObject függvényben is azt használd. ;)
Cím: Paranccsal lerakott Objectek törlése
Írta: FL1P - 2010. Október 12. - 20:14:00
Oks, kössz a segítséget :D
      A témát még nem zárom. xD
Cím: Paranccsal lerakott Objectek törlése
Írta: ptlevi - 2010. Október 12. - 21:09:59
Szerintem az a baj evvel, hogy az utolsó x-nél nem elõtte kell legyen a két + hanem utána:
 
for(new x = 0; x < MAX_OBJECTS; x++)

 
Vagy az mind1? Ha tévedek akkor szóljatok.
Cím: Paranccsal lerakott Objectek törlése
Írta: GroX - 2010. Október 12. - 21:19:07
Idézetet írta: ptlevi date=1286910599\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"3746\" data-ipsquote-contentclass=\"forums_Topic
Szerintem az a baj evvel, hogy az utolsó x-nél nem elõtte kell legyen a két + hanem utána:
 
for(new x = 0; x < MAX_OBJECTS; x++)

 
Vagy az mind1? Ha tévedek akkor szóljatok.
 
Nem mindegy, de nem hibás.
Csak annyi a hibája ennek a kódnak hogy lokálisan gyakorlatilag 2 ugyanolyan nevû változónk van.
Cím: Paranccsal lerakott Objectek törlése
Írta: FL1P - 2010. Október 13. - 21:32:00
Rendesen mûködik.
Nah, thx a segítségért midenkinek ^^
Zárom a  témát.