-
Hy all!
Elakadtam a lassú fejlesztésemben.
Elkezdtem egy olyan kis scriptet össze állítani, ami abból állna, hogy az utcára lespawnolna idõközönként szemét objecteket, majd azokat fel lehessen venni ha mellette vagy, majd kitörli az objectet.
Eddig erre jutottam, eddig minden rendben, csak nem törli ki az objectet.
new szemetobj[50];
public OnGameModeInit()
{
SetTimer(\"Szemetek\", 60000, true); //6 percenként spawnoljon
}
forward Szemetek();
public Szemetek()
{
for(new i;i<MAX_SLOT;i++)
{
switch(random(3))
{
case 0: szemetobj[0] = CreateObject(2838,125.36540, -107.04950, 0.61040,0,0,0);
case 1: szemetobj[1] = CreateObject(2838,125.45841, -112.04668, 0.61040,0,0,0);
case 2: szemetobj[2] = CreateObject(2838,125.54805, -101.97482, 0.61040,0,0,0);
}
}
return 1;
}
CMD:szemetszed(playerid,params[])
{
new Counter=0;
new Float:Pos[3];
for(new i = 0; i < sizeof(szemetobj); i++)
{
GetObjectPos(szemetobj, Pos[0], Pos[1], Pos[2]);
if(IsPlayerInRangeOfPoint(playerid, 1.5, Pos[0], Pos[1], Pos[2]))
{
Counter++;
if(Counter>= sizeof(szemetobj))
{
SendClientMessage(playerid,COLOR_RED,\"Nem vagy szemét közelében!\");
return 0;
}
DestroyObject(szemetobj);
SendClientMessage(playerid, NARANCS, \"Izéne, kikéne törölni\");
}
}
return 1;
}
Mi lehet a hiba? :hmmm:
Aki segít, és elõrébb is jutok annak +!
ui.: Rájöttem hogy rossz helyre nyitottam, megkérhetnék egy moderátort hogy átrakja? Köszönöm :)
-
Elvileg mûködik.
new szemetobj[3];
public OnGameModeInit()
{
SetTimer(\"Szemetek\", 60*1000*6, true); //6 percenként spawnoljon
}
forward Szemetek();
public Szemetek()
{
switch(random(3))
{
case 0: szemetobj[0] = CreateObject(2838,125.36540, -107.04950, 0.61040,0,0,0);
case 1: szemetobj[1] = CreateObject(2838,125.45841, -112.04668, 0.61040,0,0,0);
case 2: szemetobj[2] = CreateObject(2838,125.54805, -101.97482, 0.61040,0,0,0);
}
return 1;
}
CMD:szemetszed(playerid,params[])
{
new kozel = false;
new Float:Pos[3];
for(new i = 0; i < sizeof(szemetobj); i++)
{
GetObjectPos(szemetobj, Pos[0], Pos[1], Pos[2]);
if(IsPlayerInRangeOfPoint(playerid, 1.5, Pos[0], Pos[1], Pos[2]))
{
kozel = true;
DestroyObject(szemetobj);
SendClientMessage(playerid, NARANCS, \"Izéne, kikéne törölni\");
break;
}
}
if(!kozel) SendClientMessage(playerid,COLOR_RED,\"Nem vagy szemét közelében!\");
return 1;
}
-
Kiváló, mûködik, már csak egy baj van.
Az elsõ objectet lerakja egybõl, mikor elindul, és azt nem lehet felvenni, de a másik 2-õt igen, miért ? : :hmmm:
ui.: Rendben, megoldottam, köszönöm <3
de még egy gond fenn akadt, ha egy koordinátára lespawnol még egy object, és felveszem, de akkor a másik ami elõtte ott volt azt nem lehet kitörölni, ezt hogy lehetne megoldani?
-
Akár úgy is meglehet oldani, hogy egy helyre több szemét nem spawnolhat.
forward Szemetek();
public Szemetek()
{
switch(random(3))
{
case 0: if(!IsValidObject(szemetobj[0])) szemetobj[0] = CreateObject(2838,125.36540, -107.04950, 0.61040,0,0,0);
case 1: if(!IsValidObject(szemetobj[1])) szemetobj[1] = CreateObject(2838,125.45841, -112.04668, 0.61040,0,0,0);
case 2: if(!IsValidObject(szemetobj[2])) szemetobj[2] = CreateObject(2838,125.54805, -101.97482, 0.61040,0,0,0);
}
return 1;
}
-
Igen, erre gondoltam :)
Köszönöm mester, nagyon hálás vagyok :DD!