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: Thomas_Jonson - 2014. augusztus 03. - 12:35:12

Cím: Login Kamera
Írta: Thomas_Jonson - 2014. augusztus 03. - 12:35:12
Sziasztok!
Az a gondom, hogy egyszerûen nem jó a loginolós mozgó kamera.
Így van megoldva:
 

new kamerak[3]
public OnPlayerConnect(playerid)
{
    kamerak[0] = SetTimerEx(\"mozgok\", 1000, 0, \"i\", playerid);
    return 1
}
public OnPlayerRequestClass(playerid, classid)
{
    KillTimer(kamerak[0]);
    KillTimer(kamerak[1]);
    KillTimer(kamerak[2]);
    return 1;
}
public mozgok(playerid);
public mozgok(playerid)
{
//SetTimerEx(\"loginreg\",3000, 0, \"d\", playerid);
SetPlayerCameraPos(playerid, 218.2873+10,-228.8469,8.8987, 1);
SetPlayerCameraLookAt(playerid, 264.3181,-204.8240,3.6943, 1);
    kamerak[1] = SetTimerEx(\"mozgok2\",3000, 0, \"i\", playerid);
return 1;
}
public mozgok2(playerid);
public mozgok2(playerid)
{
//SetTimerEx(\"loginreg\",3000, 0, \"d\", playerid);
SetPlayerCameraPos(playerid, 218.2873+10,-228.8469,8.8987, 1);
SetPlayerCameraLookAt(playerid, 264.3181,-204.8240,3.6943, 1);
    kamerak[2] = SetTimerEx(\"mozgok\",3000, 0, \"i\", playerid);
return 1;
}

 
Egyenlõre így néz ki...ha true akkor mindig elindul, még ha lespawnolok akkor is...ha meg false akkor csak 1x megy...
Ezt úgy kéne, hogyha csatlakozok induljon el, és bizonyos idõ után mennyen át a másik kamerára!
Válaszokat köszönöm elõre is!
Cím: Login Kamera
Írta: rayle - 2014. augusztus 03. - 20:36:30
Idézetet írta: Thomas_Jonson date=1407062112\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"49827\" data-ipsquote-contentclass=\"forums_Topic
ha true akkor mindig elindul, még ha lespawnolok akkor is...ha meg false akkor csak 1x megy...
 
Az idõ utáni paraméter az ismétlõdés, ha true(1) akkor ismétlõdik, tehát addig fog menni a timer ameddig nem KillTimer -ezed, ha false(0), akkor csak egyszer fut le.
Egyébként találtam pár hibát a kódodban, javítottam is. Próbáld meg így.
 
public OnPlayerRequestClass(playerid, classid)
{
    SetTimerEx(\"mozgok\", 1000, 0, \"dd\", playerid, 1);
    return 1
}
forward mozgok(playerid, lepes);
public mozgok(playerid, lepes)
{
//SetTimerEx(\"loginreg\",3000, 0, \"d\", playerid);
        if(lepes == 1)
        {
SetPlayerCameraPos(playerid, 218.2873+10,-228.8469,8.8987, 1);
SetPlayerCameraLookAt(playerid, 264.3181,-204.8240,3.6943, 1);
SetTimerEx(\"mozgok\",3000, 0, \"dd\", playerid, 2);
}
else if(lepes == 2)
{
SetPlayerCameraPos(playerid, 218.2873+10,-228.8469,8.8987, 1);
SetPlayerCameraLookAt(playerid, 264.3181,-204.8240,3.6943, 1);
}
return 1;
}
Cím: Login Kamera
Írta: Thomas_Jonson - 2014. augusztus 04. - 00:07:23
Ugyan úgy csak egyszer fut végig.
Cím: Login Kamera
Írta: Cube. - 2014. augusztus 04. - 01:45:37
parancsolj. szerintem erre gondoltál.
a koordinátákat majd te megadod.
99%-ban mennie kell.
 

#include <a_samp>
#define moving_speed 50
#define X 0.0
#define Y 0.0
#define Z 0.0
#define camx 0.0
#define camy 0.0
#define camz 0.0
#define Anglez 180
new Float:PAngle[MAX_PLAYERS], Camera[MAX_PLAYERS];
public OnPlayerRequestClass(playerid, classid)
{
    SetPlayerPos(playerid, X,Y,Z);
SetPlayerFacingAngle(playerid, Anglez);
SetPlayerCameraPos(playerid, camx,camy,camz);
SetPlayerCameraLookAt(playerid, X,Y,Z);
Camera[playerid] = SetTimerEx(\"MoveCamera\", moving_speed, true, \"i\", playerid);
return 1;
}
forward MoveCamera(playerid);
public MoveCamera(playerid)
{
    SetPlayerCameraPos(playerid, X - 2 * floatsin(-PAngle[playerid], degrees), Y - 10 * floatcos(-PAngle[playerid], degrees), Z + 3);
    SetPlayerCameraLookAt(playerid, X, Y, Z + 0.5);
 
    PAngle[playerid] += 0.5;
    if (PAngle[playerid] >= 360.0)
        PAngle[playerid] = 0.0;
}
public OnPlayerSpawn(playerid)
{
KillTimer(Camera[playerid]);
return 1;
}
Cím: Login Kamera
Írta: Thomas_Jonson - 2014. augusztus 04. - 02:09:52
Ez így nem teljesen jó, mert a Skin választóba mozog a kamera. Nekem valójába olyan kéne, hogy mikor loginolunk (Írjuk be a jelszót) akkor a háttérbe a kamera elmegy A-tól B-be. És ismétlõdik randomba.
Cím: Login Kamera
Írta: Cube. - 2014. augusztus 04. - 02:24:02
Idézetet írta: Thomas_Jonson date=1407110992\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"49827\" data-ipsquote-contentclass=\"forums_Topic
Ez így nem teljesen jó, mert a Skin választóba mozog a kamera. Nekem valójába olyan kéne, hogy mikor loginolunk (Írjuk be a jelszót) akkor a háttérbe a kamera elmegy A-tól B-be. És ismétlõdik randomba.
 
akkor..
a koordinátákat majd te megadod, hogy hova menjen.
ha pedig randomba szeretnéd, akkor
 

switch(pos[playerid])
//helyett
switch(random(3))

 


#include <a_samp>
new Camera[MAX_PLAYERS], pos[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
Camera[playerid] = SetTimerEx(\"Change\", 3000, true, \"i\", playerid);
pos[playerid] = 0;
return 1;
}
forward Change(playerid);
public Change(playerid)
{
    TogglePlayerSpectating(playerid, 1);
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
switch(pos[playerid])
{
   case 0:InterpolateCameraLookAt(playerid, x, y, z, ide X, ide Y, ide Z, 2900, CAMERA_MOVE),pos[playerid] = 1;
case 1:InterpolateCameraLookAt(playerid, x, y, z, ide X, ide Y, ide Z, 2900, CAMERA_MOVE),pos[playerid] = 2;
case 2:InterpolateCameraLookAt(playerid, x, y, z, ide X, ide Y, ide Z, 2900, CAMERA_MOVE),pos[playerid] = 0;
}
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
KillTimer(Camera[playerid]);
return 1;
}
Cím: Login Kamera
Írta: Thomas_Jonson - 2014. augusztus 04. - 16:45:42
Idézetet írta: Cube. date=1407111842\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"49827\" data-ipsquote-contentclass=\"forums_Topic


Ez így nem teljesen jó, mert a Skin választóba mozog a kamera. Nekem valójába olyan kéne, hogy mikor loginolunk (Írjuk be a jelszót) akkor a háttérbe a kamera elmegy A-tól B-be. És ismétlõdik randomba.
 
akkor..
a koordinátákat majd te megadod, hogy hova menjen.
ha pedig randomba szeretnéd, akkor
 

switch(pos[playerid])
//helyett
switch(random(3))

 


#include <a_samp>
new Camera[MAX_PLAYERS], pos[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
Camera[playerid] = SetTimerEx(\"Change\", 3000, true, \"i\", playerid);
pos[playerid] = 0;
return 1;
}
forward Change(playerid);
public Change(playerid)
{
    TogglePlayerSpectating(playerid, 1);
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
switch(pos[playerid])
{
   case 0:InterpolateCameraLookAt(playerid, x, y, z, ide X, ide Y, ide Z, 2900, CAMERA_MOVE),pos[playerid] = 1;
case 1:InterpolateCameraLookAt(playerid, x, y, z, ide X, ide Y, ide Z, 2900, CAMERA_MOVE),pos[playerid] = 2;
case 2:InterpolateCameraLookAt(playerid, x, y, z, ide X, ide Y, ide Z, 2900, CAMERA_MOVE),pos[playerid] = 0;
}
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
KillTimer(Camera[playerid]);
return 1;
}

 

[/quote]
Jó lett köszi.:)
Cím: Login Kamera
Írta: Flash - 2014. augusztus 04. - 17:53:56
[mod]Zártam![/mod]