-
Sziasztok ismét egy problémába ütköztem. Azt akarom megoldani, hogy a /nyit parancsra ne csak egy kapu nyíljon, tehát valami frakciós kapu rendszerre volna szükségem de nem tudom megoldani, már próbáltam minden, hogyan de egyre csak növeltem az errorokat. Nekem így van az egyik kapu megcsinálva és ez szuperül megy is. Látszik, hogy a gateclose alatt próbáltam megírni a másik kaput is de nem ment. Ha tudtok benne segíteni azt nagyon megköszönném! :)
Itt van a new az elején:
new kapu1;
new kapu2;
Itt van az object:
kapu1= CreateObject(968,1065.50000000,-1776.29980469,13.10000038,0.00000000,270.00000000,269.99993896);//object(barrierturn) (1)
kapu2= CreateObject(968,1066.50000000,-1755.89941406,13.19999981,0.00000000,90.00000000,270.00000000); //object(barrierturn)(2)
Itt van a parancs:
forward GateClose();
public GateClose()
{
SetObjectRot(kapu2,0.00000000,90.00000000,270.00000000);
SetObjectRot(kapu1,0.00000000,270.00000000,269.99993896);
return 1;
}
CMD:nyit(playerid,params[])
{
if (IsPlayerInRangeOfPoint(playerid,8,1065.4315,-1759.4772,13.4035))
{
SetObjectRot(kapu2,0.00000000,10.00000000,269.99996948);
SetTimer(\"GateClose\", 6000, 0);
SendClientMessage(playerid, ZOLD,\"A sorompó kinyitva! Hamarosan bezárodik (6mp).\");
}else{
SendClientMessage(playerid,PIROS,\"Nem állsz kapu közelében!\");
}
return 1;
}
-
CMD:nyit(playerid,params[])
{
if (IsPlayerInRangeOfPoint(playerid,8,1065.4315,-1759.4772,13.4035))
{
SetObjectRot(kapu2,0.00000000,10.00000000,269.99996948);
SetObjectRot(kapu1, rotx, roty, rotz);
SetTimer(\"GateClose\", 6000, 0);
SendClientMessage(playerid, ZOLD,\"A sorompó kinyitva! Hamarosan bezárodik (6mp).\");
}else{
SendClientMessage(playerid,PIROS,\"Nem állsz kapu közelében!\");
}
return 1;
}
Egy sor hiányzott, a rotx y és z helyére írd be a kapu1 nek a pozicióit (amikor el van mozdulva)
U.I.:
kapu1= CreateObject(968,1065.50000000,-1776.29980469,13.10000038,0.00000000,270.00000000,269.99993896);
kapu2= CreateObject(968,1066.50000000,-1755.89941406,13.19999981,0.00000000,90.00000000,270.00000000);
helyett
kapu1 = CreateObject(968,1065.50000000,-1776.29980469,13.10000038,0.00000000,270.00000000,269.99993896);
kapu2 = CreateObject(968,1066.50000000,-1755.89941406,13.19999981,0.00000000,90.00000000,270.00000000);
-
Ez zsír mûköidik csak egy gondom van még vele, hogy egyszerre nyitja mind a kettõt. :D Azt valahogyan meglehet oldani?
-
Hátha nem egyszere inditanád a Timert akkor jó lenne
-
Lehet félreértettem. ;D
Úgy akarod hogy amelyik kapuhoz közelebb van azt nyissa a /nyit, vagy ha egyikhez se vagy elég közel akkor semmit?
-
Pontosan azt szeretném megcsinálni, hogy pl van több kapu de mindegyik egy parancs nyissa, és csak akkor nyissa ha közel vagy ahhoz a kapuhoz. :)
-
CMD:nyit(playerid, params[])
{
if(IsPlayerInRangeOfPoint(playerid, sugár, X1, Y1, Z1)) // Ha itt vagy || Kapu 1 pozíciója és sugara
{
SetObjectRot(kapu1, Xrot1, Yrot1, Zrot1); // Megadjuk kapu 1 rotációját (nyitott állapotban)
SetTimer(\"GateClose\", 6000, false); // Elindítja a GateClose timert
SendClientMessage(playerid, ZOLD, \"1es kapu kinyitva, 6 mp és záródik\");
}
else if(IsPlayerInRangeOfPoint(playerid, sugár, X2, Y2, Z2)) // Vagy ha itt vagy || Kapu 2 pozíciója és sugara
{
SetObjectRot(kapu2, Xrot2, Yrot2, Zrot2); // Megadjuk kapu 2 rotációját (nyitott állapotban)
SetTimer(\"GateClose\", 6000, false); // Elindítja a GateClose timert
SendClientMessage(playerid, ZOLD, \"2es kapu kinyitva, 6 mp és záródik\");
}
else // Ha egyik helyen se vagy
{
SendClientMessage(playerid, ZOLD, \"Nem vagy 1 kapu közelébe se!\");
}
return 1;
}
public GateClose()
{
SetObjectRot(kapu1, Xrot1alap, Yrot1alap, Zrot1alap); // Kapu 1 rotációja (Zárt állapotban)
SetObjectRot(kapu2, Xrot2alap, Yrot2alap, Zrot2alap); // Kapu 2 rotációja (Zárt állapotban)
}
-
Köszönöm a válaszod. Most sikerült a teszthez jutni. :D Azonban nem jó mert ha a másik kapu elé állok és beírom, hogy /nyit akkor valamiért a \"Nem állsz kapu közelébent írja ki\"
-
Ellenõrizd a pozíciókat, ha jók akkor másold be a 2 parancsot.
-
Szia a pozíciók biztosan jók megnéztem. :) Itt a kód ahogyan összeraktam
forward GateClose();
public GateClose()
{
SetObjectRot(kapu2,0.00000000,90.00000000,270.00000000);
SetObjectRot(kapu1,0.00000000,270.00000000,269.99993896);
return 1;
}
CMD:nyit(playerid,params[])
{
if (IsPlayerInRangeOfPoint(playerid,8,1065.4315,-1759.4772,13.4035))
{
SetObjectRot(kapu2,0.00000000,10.00000000,269.99996948);
SetTimer(\"GateClose\", 6000, 0);
SendClientMessage(playerid, ZOLD,\"A sorompó kinyitva! Hamarosan bezárodik (6mp).\");
return 1;
}
else if(IsPlayerInRangeOfPoint(playerid,8,1089.4406,-1773.0548,13.3462)) // Vagy ha itt vagy.
{
SetObjectRot(kapu1,0,351,269.99); // Megadjuk kapu 2 rotációját (nyitott állapotban)
SetTimer(\"GateClose\", 6000, false); // Elindítja a GateClose timert
SendClientMessage(playerid, ZOLD, \"A sorompó kinyitva! Hamarosan bezárodik (6mp).\");
return 1;
}
else
{
SendClientMessage(playerid,PIROS,\"Nem állsz kapu közelében!\");
}
return 1;
}
-
A return-okat az utolsó kivételével vedd ki, az nem kell oda. (Az idõzítõ által meghívott függvénybõl is, felesleges.)
Viszont ha sorompóról van szó akkor az a 8 as sugár sok lesz.. (Mivel mind2 pozícióban benne leszel és bugolhat.)
-
Na returnok kiszedve. Sugár 2 es re véve de megint azt írja nem állok kapu közelében. :D
-
CMD:nyit(playerid,params[])
{
if(IsPlayerInRangeOfPoint(playerid,2,1065.4315,-1759.4772,13.4035))
{
SetObjectRot(kapu2,0.00000000,10.00000000,269.99996948);
SetTimer(\"GateClose\", 6000, 0);
SendClientMessage(playerid, ZOLD,\"A sorompó kinyitva! Hamarosan bezárodik (6mp).\");
}
else if(IsPlayerInRangeOfPoint(playerid,2,1089.4406,-1773.0548,13.3462))
{
SetObjectRot(kapu1,0,351,269.99);
SetTimer(\"GateClose\", 6000, false);
SendClientMessage(playerid, ZOLD, \"A sorompó kinyitva! Hamarosan bezárodik (6mp).\");
}
else
{
SendClientMessage(playerid,PIROS,\"Nem állsz kapu közelében!\");
}
return 1;
}
Ha így nem jó akkor 100% hogy valami a koordinátákkal van.. (Teszteltem)
Viszont ha a pozíciók is stimmelnek nem tudom mi lehet.. Ez esetben úgy tudok segíteni ha elküldöd PM ben a módot/szkriptet
-
Oké sikerült! Köszönöm! :)