Szerző Téma: Kapus kérdés.  (Megtekintve 1536 alkalommal)

Kapus kérdés.
« Dátum: 2012. október 16. - 23:10:45 »
0 Show voters
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;
}

Kapus kérdés.
« Válasz #1 Dátum: 2012. október 17. - 00:58:47 »
0 Show voters
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);
« Utoljára szerkesztve: 2012. október 17. - 01:02:01 írta Johnies00 »

Kapus kérdés.
« Válasz #2 Dátum: 2012. október 17. - 16:16:16 »
0 Show voters
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?

Kapus kérdés.
« Válasz #3 Dátum: 2012. október 18. - 13:38:21 »
0 Show voters
Hátha nem egyszere inditanád a Timert akkor jó lenne

Kapus kérdés.
« Válasz #4 Dátum: 2012. október 18. - 19:34:03 »
0 Show voters
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?

Kapus kérdés.
« Válasz #5 Dátum: 2012. október 18. - 20:57:00 »
0 Show voters
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. :)

Kapus kérdés.
« Válasz #6 Dátum: 2012. október 19. - 16:29:51 »
0 Show voters

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

Kapus kérdés.
« Válasz #7 Dátum: 2012. október 24. - 10:10:16 »
0 Show voters
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\"

Kapus kérdés.
« Válasz #8 Dátum: 2012. október 24. - 17:36:50 »
0 Show voters
Ellenõrizd a pozíciókat, ha jók akkor másold be a 2 parancsot.

Kapus kérdés.
« Válasz #9 Dátum: 2012. október 24. - 19:22:19 »
0 Show voters
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;
}

Kapus kérdés.
« Válasz #10 Dátum: 2012. október 24. - 22:37:33 »
0 Show voters
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.)

Kapus kérdés.
« Válasz #11 Dátum: 2012. október 24. - 23:13:53 »
0 Show voters
Na returnok kiszedve. Sugár 2 es re véve de megint azt írja nem állok kapu közelében. :D

Kapus kérdés.
« Válasz #12 Dátum: 2012. október 24. - 23:30:35 »
+1 Show voters

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
« Utoljára szerkesztve: 2012. október 24. - 23:32:28 írta Johnies00 »

Kapus kérdés.
« Válasz #13 Dátum: 2012. október 25. - 16:35:31 »
0 Show voters
Oké sikerült! Köszönöm! :)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal