Szerző Téma: Paranccsal lerakott Objectek törlése  (Megtekintve 1673 alkalommal)

Nem elérhető FL1P

Paranccsal lerakott Objectek törlése
« Dátum: 2010. október 10. - 21:50:29 »
0 Show voters
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.

Paranccsal lerakott Objectek törlése
« Válasz #1 Dátum: 2010. október 10. - 22:36:52 »
0 Show voters
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.

Nem elérhető FL1P

Paranccsal lerakott Objectek törlése
« Válasz #2 Dátum: 2010. október 11. - 17:23:03 »
0 Show voters
Thx, kipróbáltam és ezzel annyi a baj, hogy valamiért csak az utóljára lerakott objectet törli ki :(

Nem elérhető ZeRo

  • 4620
  • Ex Globális Moderátor
    • Profil megtekintése
Paranccsal lerakott Objectek törlése
« Válasz #3 Dátum: 2010. október 11. - 17:46:45 »
0 Show voters

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;
}

Nem elérhető FL1P

Paranccsal lerakott Objectek törlése
« Válasz #4 Dátum: 2010. október 11. - 18:18:57 »
0 Show voters
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.

Nem elérhető ZeRo

  • 4620
  • Ex Globális Moderátor
    • Profil megtekintése
Paranccsal lerakott Objectek törlése
« Válasz #5 Dátum: 2010. október 11. - 18:25:08 »
0 Show voters
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.

Nem elérhető FL1P

Paranccsal lerakott Objectek törlése
« Válasz #6 Dátum: 2010. október 12. - 19:43:05 »
0 Show voters
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.

Nem elérhető ZeRo

  • 4620
  • Ex Globális Moderátor
    • Profil megtekintése
Paranccsal lerakott Objectek törlése
« Válasz #7 Dátum: 2010. október 12. - 19:49:29 »
0 Show voters
Akkor írd át o-ra, vagy y-ra, tökmindegy, csak a DestroyObject függvényben is azt használd. ;)

Nem elérhető FL1P

Paranccsal lerakott Objectek törlése
« Válasz #8 Dátum: 2010. október 12. - 20:14:00 »
0 Show voters
Oks, kössz a segítséget :D
      A témát még nem zárom. xD

Nem elérhető ptlevi

  • 235
    • Profil megtekintése
Paranccsal lerakott Objectek törlése
« Válasz #9 Dátum: 2010. október 12. - 21:09:59 »
0 Show voters
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.

GroX

  • Vendég
Paranccsal lerakott Objectek törlése
« Válasz #10 Dátum: 2010. október 12. - 21:19:07 »
0 Show voters
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.

Nem elérhető FL1P

Paranccsal lerakott Objectek törlése
« Válasz #11 Dátum: 2010. október 13. - 21:32:00 »
0 Show voters
Rendesen mûködik.
Nah, thx a segítségért midenkinek ^^
Zárom a  témát.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal