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: .:Secur:. - 2011. november 16. - 15:40:58
-
Ü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.
-
esetleg:
SetTimer(\"objectleesik1\", 2500, true);
+ nem kell return itt: public objectleesik1()
Bár nem biztos hogy ettõl jó lesz
-
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.
-
Próbáld GetDynamicObjectPos -al.
-
Ez hogy függ össze?
-
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))
-
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]
-
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...
-
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]
-
1. CreateObject-be van rakva!
2. ezzel mivel lesz jobb? [] semmivel.
-
1. 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.
-
night-fallout.pwn ( 36,0 KB )