Hiba a scriptemben, de miért?

Indította .:Secur:., 2011. november 16. - 15:40:58

Előző téma - Következő téma

.:Secur:.

Üdvözletem!
Cole megmutatta, hogy hogyan kell csinálni ezt, hogy egy parancs beírására lemegy a víz alá az object x másodpercenként 1db.
Ez eddig szép és jó, sikerült de:
Fogalmam nincsen miért, de az object nem lefele indul el hanem szinte vízszintesen elmegy elõre felé, kicsit süllyed de elõrefelé elmegy ::|
Itt van, mi lehet a hiba?
[pawn]#include <a_samp>
#include <streamer>
new o1, o2; //itt van rengeteg, de most ennyit másolok be
forward objectleesik1();
forward objectleesik2();
public OnFilterScriptInit()
{
o1=CreateObject(3458,2705.39990234,483.20001221,0.00000000,0.00000000,0.00000000,82.00000000);
o2=CreateObject(3458,2710.50000000,482.50000000,0.00000000,0.00000000,0.00000000,81.99645996); //stb...
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp(\"/indul\", cmdtext, true, 10) == 0)
{
   SetTimer(\"objectleesik1\", 2500, false);
   return 1;
}
return 0;
}
public objectleesik1()
{
new Float: x, Float: y, Float:z;
GetObjectPos(o1, x, y, z);
MoveDynamicObject(o1, x, y, z-20, 6);
SetTimer(\"objectleesik2\", 1300, false);
}
public objectleesik2()
{
new Float: x, Float: y, Float:z;
GetObjectPos(o2, x, y, z);
MoveDynamicObject(o2, x, y, z-20, 6);
SetTimer(\"objectleesik3\", 1300, false);
}[/pawn]
ésígytovább...!!! következõnél    SetTimer(\"objectleesik4\", 1300, false);    mindig a következõnek számolja a timert...
Ja és amúgy 69 objectröl van szó.
Köszi elõre is a segítséget.

Sheet

esetleg:
SetTimer(\"objectleesik1\", 2500, true);
+ nem kell return itt: public objectleesik1()
Bár nem biztos hogy ettõl jó lesz

.:Secur:.

nem jó megoldás, de azt vettem észre, hogy a -20-as koordinátáig megy el, tehát... lehet tudom hogyan kell megcsinálni.

Zsolesszka

Próbáld GetDynamicObjectPos -al.

.:Secur:.


staubka

Ez a CreateDynamicObject miatt van. Csináld az egészet CreateObject-el, MoveObject-el, stb. Nemtom miért csinálja ezt, de nekem is ezt csinálta a dynamicobject-es megoldással (hasonló script mint ez (Don\'t Get Wet FS))

Zsolesszka

Talán azért mert alap objectek id sorszáma nem egyezhet a dynamic objectekével.
Mivel a dyanmic objectek száma elég sok lehet, míg a samp objecteké 0.3d esetében 1000 maximum.
Ezért object függvényeket nem kell keverni egymással.
Ha dynamic objectrõl van szó akkor azokat az eljárásokat kell használni amik a streamer.inc-ben szerepelnek. (nem kell keverni az alap samp object függvényeivel.)
Másik része a dolognak hogy a CreateDynamicObject az a CreatePlayerObject native funkcióval hozza létre az objecteket ezért azoknak az objecteknek adatainak lekérdezése a CreatePlayerObjectPos eljárással kérdezhetõ le.
Vedd úgy ezeket a függvényeket hogy párosítva vannak. CreatePlayer  Create és CreateDynamic (streamer plugin).
[pawn]CreatePlayerObject(...
GetPlayerObjectPos(...[/pawn]
[pawn]CreateDynamicObject(...
GetDynamicObjectPos(...[/pawn]
[pawn]CreateObject(..
GetObjectPos(...[/pawn]

.:Secur:.

#7
Ez valószínûleg megoldja a problémám!
Köszönöm...

Dupla hozzászólás automatikusan összefûzve. ( 2011. november 17. - 15:09:46 )

Hát, mostmár nem mozdulnak sehova az objectek...  :\'(
Raktam még pár objectet hozzá, meg frissítettem!
A fõpostban van az új kód...

Zsolesszka

Hiába ír neked az ember bármit is?
[pawn]#include <a_samp>
#include <streamer>
new
o[2];
forward objectleesik1();
forward objectleesik2();
public OnFilterScriptInit()
{
o[0]=CreateDynamicObject(3458,2705.39990234,483.20001221,0.00000000,0.00000000,0.00000000,82.00000000);
o[1]=CreateDynamicObject(3458,2710.50000000,482.50000000,0.00000000,0.00000000,0.00000000,81.99645996); //stb...
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp(\"/indul\", cmdtext, true) == 0)
{
   SendClientMessage(playerid, -1, \"Objectek mozgatása elindítva\");
   SetTimer(\"objectleesik1\", 2500, false);
   return 1;
}
if(strcmp(\"/vissza\", cmdtext, true) == 0)
{
   SendClientMessage(playerid, -1, \"Objectek visszaállítása.\");
   MoveDynamicObject(o[0], 2705.39990234,483.20001221,0.00000000, 10);
   MoveDynamicObject(o[1], 2710.50000000,482.50000000,0.00000000, 10);
   return 1;
}
return 0;
}
public objectleesik1()
{
new Float: x, Float: y, Float:z;
GetDynamicObjectPos(o[0], x, y, z);
MoveDynamicObject(o[0], x, y, z-20, 6);
SetTimer(\"objectleesik2\", 1300, false);
}
public objectleesik2()
{
new Float: x, Float: y, Float:z;
GetDynamicObjectPos(o[1], x, y, z);
MoveDynamicObject(o[1], x, y, z-20, 6);
SetTimer(\"objectleesik3\", 1300, false);
}[/pawn]

.:Secur:.

1. CreateObject-be van rakva!
2. ezzel mivel lesz jobb? [] semmivel.

Zsolesszka

#10
Idézetet írta: .:Secur:. date=1321561673\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"13445\" data-ipsquote-contentclass=\"forums_Topic1. CreateObject-be van rakva!
2. ezzel mivel lesz jobb? [] semmivel.
 
Esetleg kipróbálnád úgy ahogy átírtam az egészet és nem kritizálnál lehet többre jutnál, nem csak annyi benne a változás amit te észrevettél.
Ha CreateObjectbe rakod az objecteket akkor meg használd a MoveObject funkciót és ne a MoveDynamicObjectet.

g_szColumnData

#11
http://koncznorbert.sampforum.hu/night-fallout.pwn\" rel=\"external nofollow\">night-fallout.pwn ( 36,0 KB )