Position Bug

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Tag
    sobald ich die postion änderen möchte, wird er zu den koordinaten 50.0 und 50.0 gesetzt und kurze Zeit später auf seine alte position gesetzt..
    Man registriert sich und wird in ein Zug gesteckt, nachdem man dort Fragen beantwortet hat, soll man gespawnt werden.
    Es ist egal ob ich ihn spawnen lasse, nur die Position verändere oder hinterher durch irgentwelche Befehle die Position ändern möchte, es passiert das was ich im 1. Satz gesagt habe.
    Er wird an die 50.0 50.0 koordinaten gesetzt und 2-5 Sekunen später wieder in den Zug.
    Der Code wird ganz normal ausgeführt, nur die Position wird nicht gesetzt..


    Ich hoffe ihr könnt mir helfen. Ich habe den Fehler seit 0.3e, ärgerlich ist das ich gleichzeitig auf mysql umgeschrieben habe und nicht weiß obs nur an 0.3e liegt.
    Mein Code habe ich schon öfters überprüft und umgeschrieben, probiert und versucht jedoch immer das selbe Problem.


    Liebe Grüße
    Simon

  • Wer wird zurück gestezt ?
    Spieler oder Bot ?


    Wenn Spieler und dieser Spieler sitzt in dem Zug, dann schau mal ob du es vielleicht vor dem Port mit RemovePlayerFromVehicle(playerid); hin bekommst :)

  • hmm, das ist komisch.


    Vielleicht kannst du es ja nochmal in der 0.3d Version testen, wenn du nicht all zu viel 0.3e Funktionen drin hast :)
    Wenn es dann immernoch ned geht weist du wenigstens das es wirklich nicht an der VErsion liegt

  • stimmt mach ich mal


    //edit: Es liegt nicht an der Version


    Ich benutze die Spawninfo und habe sie ein wenig erweitert. Hier mal meine Spawninfo:
    enum spInfo
    {
    Inter,
    Virt,
    Float:spHp,
    Float:spArm,
    bool:Parachute
    }
    new SpawnInfo[MAX_PLAYERS][spInfo];
    public OnPlayerSpawn(playerid)
    {
    if(IsPlayerNPC(playerid))
    {
    StopAudioStreamForPlayer(playerid);
    if(!strcmp(PlayerName(playerid), "Intro", true))
    {
    SetPlayerSkin(playerid,255);
    SetPlayerVirtualWorld(playerid,100);
    return PutPlayerInVehicle(playerid, Botcar, 0);
    }
    if(!strcmp(PlayerName(playerid), "GodMode_Tester", true))
    {
    SetPlayerSkin(playerid,217);
    SetPlayerVirtualWorld(playerid,100);
    SetPlayerInterior(playerid,1);
    GivePlayerWeapon(playerid, 38, 99999);
    return SetPlayerArmedWeapon(playerid,38);
    }
    }

    if(pregister[playerid]) //dort wird er in den Zug gesteckt
    {
    PutPlayerInVehicle(playerid, Botcar, 1);
    p_TogglePlayerControllable(playerid,0);
    tuttimer[playerid] = SetTimerEx("tutorial", 5000, 0, "i", playerid);
    return CreateIntroBox(playerid);
    }

    if(!login[playerid])
    {
    SetPlayerPos(playerid, 0.0, 0.0, 0.0);
    SetPlayerFacingAngle(playerid, 0.0);
    TogglePlayerControllable(playerid,0);
    return SetPlayerVirtualWorld(playerid,100);
    }

    SetPlayerInterior(playerid, SpawnInfo[playerid][Inter]);
    SetPlayerVirtualWorld(playerid, SpawnInfo[playerid][Virt]);
    SetPlayerHealth(playerid, SpawnInfo[playerid][spHp]);
    SetPlayerArmour(playerid, SpawnInfo[playerid][spArm]);
    if(SpawnInfo[playerid][Parachute]) GivePlayerWeapon(playerid, 46, 1);
    return 1;
    }
    public tutorial(playerid)
    {
    if(Spieler[playerid][Intro] > 0)
    {
    Spieler[playerid][Intro]--;
    if(Spieler[playerid][Intro] == 10)
    {
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText1]);
    TextDrawShowForPlayer(playerid,gTextDraw[IntroText2]);
    tuttimer[playerid] = SetTimerEx("tutorial", 7000, 0, "i", playerid);
    }
    else if(Spieler[playerid][Intro] == 9)
    {
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText1]);
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText2]);
    TextDrawShowForPlayer(playerid,gTextDraw[IntroText3]);
    tuttimer[playerid] = SetTimerEx("tutorial", 4500, 0, "i", playerid);
    }
    else if(Spieler[playerid][Intro] == 8)
    {
    ShowPlayerDialog(playerid, Dialog_Zugbot,DIALOG_STYLE_LIST,"{0000FF}Neue Heimatstadt?","Los Santos\nSan Fierro\nLas Venturas", "Weiter", "");
    }
    else if(Spieler[playerid][Intro] == 7)
    {
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText1]);
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText2]);
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText3]);
    TextDrawShowForPlayer(playerid,gTextDraw[IntroText4]);
    tuttimer[playerid] = SetTimerEx("tutorial", 5000, 0, "i", playerid);
    }
    else if(Spieler[playerid][Intro] == 6) ShowPlayerDialog(playerid,Dialog_Sex,DIALOG_STYLE_MSGBOX,"{0000FF}Geschlecht","Sind Sie Männlich oder Weiblich?","Männlich","Weiblich");
    else if(Spieler[playerid][Intro] == 5)
    {
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText1]);
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText2]);
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText3]);
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText4]);
    TextDrawShowForPlayer(playerid,gTextDraw[IntroText5]);
    tuttimer[playerid] = SetTimerEx("tutorial", 4500, 0, "i", playerid);
    }
    else if(Spieler[playerid][Intro] == 4)
    {
    ShowPlayerDialog(playerid,Dialog_Alter,DIALOG_STYLE_INPUT,"{0000FF}Alter","Wie alt sind Sie eigentlich?\nBitte geben Sie Ihr Geburtsdatum ein\n\nFormat: dd.mm.jjjjj","Weiter","Zurück");
    }
    else if(Spieler[playerid][Intro] == 3)
    {
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText1]);
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText2]);
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText3]);
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText4]);
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText5]);
    TextDrawShowForPlayer(playerid,gTextDraw[IntroText6]);
    tuttimer[playerid] = SetTimerEx("tutorial", 5000, 0, "i", playerid);
    }
    else if(Spieler[playerid][Intro] == 2)
    {
    for(new i = 0; i < 30; i++) SendClientMessage(playerid,0x000000FF,"");
    new Float:vx, Float:vy, Float:vz;
    GetVehiclePos(Botcar,vx,vy,vz);
    SetPlayerCameraPos(playerid,vx,vy,vz);
    SetPlayerCameraLookAt(playerid,vx,vy,vz, CAMERA_MOVE);
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText1]);
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText2]);
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText3]);
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText4]);
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText5]);
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText6]);
    TextDrawShowForPlayer(playerid,gTextDraw[blackscreen]);
    tuttimer[playerid] = SetTimerEx("tutorial", 7500, 0, "i", playerid);
    SendClientMessage(playerid,0xFFFFFFFF,"Einige Stunden später.....");
    for(new i = 0; i < 9; i++) SendClientMessage(playerid,0x000000FF,"");
    }
    else
    {
    RemovePlayerFromVehicle(playerid);
    tutCP[playerid][0] = p_CreateDynamicCP(Stadthallen[Spieler[playerid][Stadt]-1][posx],Stadthallen[Spieler[playerid][Stadt]-1][posy],Stadthallen[Spieler[playerid][Stadt]-1][posz],3.0,-1, -1, playerid, 10000);
    Spieler[playerid][Intro] = 0;
    pregister[playerid] = false; //HIer wird die Variable auf false gestellt, sie OnPlayerSpawn > Damit er nicht in den Zug gesteckt wird
    firstspawn[playerid] = false; //Ist nicht mehr der erste spawn
    Spieler[playerid][pregistriert] = true; //er ist registriert
    Spieler[playerid][Tutorial] = 1; //Tutorial
    p_ChangeSpawnInfo(playerid); //Hier wird die Spawninfo gesetzt
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText1]);
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText2]);
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText3]);
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText4]);
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText5]);
    TextDrawHideForPlayer(playerid,gTextDraw[IntroText6]); //Textdraws gesetzt
    SpawnPlayer(playerid); //er wird gespawnt > siehe OnPlayerSpawn
    SendClientMessage(playerid,0xFFFFFFFF,"Willkommen auf {FF0000}BLUBB{FFFFFF}.");
    }
    }
    return 1;
    }
    stock p_ChangeSpawnInfo(playerid)
    {
    //Es wird geschaut obs 1. spawn ist, wenn ja dann wird geguckt ob er nen relogg gemacht hat (15 Minuten nach logout)
    new day,month,year,second,minute,hour, spSkin;
    if(firstspawn[playerid])
    {
    new bool:relogtimer = false;
    getdate(year,month,day);
    gettime(hour,minute,second);
    if(month == Spieler[playerid][LastMonth] && day == Spieler[playerid][LastDay] && year == Spieler[playerid][LastYear])
    {
    if(hour-Spieler[playerid][LastHour] == 0)
    {
    if(minute - Spieler[playerid][LastMinute] <= 15 || Spieler[playerid][LastMinute] == minute) relogtimer = true; //Er hat relog gemacht
    }
    else if(hour-Spieler[playerid][LastHour] == 1)
    {
    if(Spieler[playerid][LastMinute] > 45)
    {
    if(minute-Spieler[playerid][LastMinute] >= -59 && minute-Spieler[playerid][LastMinute] <= -45) relogtimer = true;
    }
    }
    }
    else if(month == Spieler[playerid][LastMonth] && year == Spieler[playerid][LastYear])
    {
    if(CheckDateDifference(Spieler[playerid][LastDay],Spieler[playerid][LastMonth],Spieler[playerid][LastYear],day,month,year,0) == 1)
    {
    if(Spieler[playerid][LastHour] == 23 && hour == 0 && Spieler[playerid][LastMinute] > 45 && minute < 15)
    {
    if(minute-Spieler[playerid][LastMinute] >= -59 && minute-Spieler[playerid][LastMinute] <= -45) relogtimer = true;
    }
    }
    }
    if(relogtimer) //wenn er relog gemacht hat
    {
    new bool:needpara = false;
    if(Spieler[playerid][Duty] == 1) spSkin = Spieler[playerid][Fraktionsskin];
    else if(Spieler[playerid][Duty] == 2 && Spieler[playerid][Ziviljob] > 0) spSkin = Nebenjobs[Spieler[playerid][Ziviljob]][jSkin];
    else if(Spieler[playerid][Duty] == 2 && Spieler[playerid][Fraktionsjob] > 0) spSkin = Nebenjobs[Spieler[playerid][Fraktionsjob]][jSkin];
    else spSkin = Spieler[playerid][Zivilskin];
    if(Spieler[playerid][ZPos] >= 75.0) needpara = true;
    return p_SetSpawnInfo(playerid, spSkin, Spieler[playerid][XPos],Spieler[playerid][YPos],Spieler[playerid][ZPos], Spieler[playerid][APos], Spieler[playerid][Interior],Spieler[playerid][Virtualworld], Spieler[playerid][PlayerHealth], Spieler[playerid][PlayerArmour], needpara); //Spawninfo wird gesetzt
    }
    else
    {
    Spieler[playerid][Duty] = 0;
    Spieler[playerid][Spawnchange] = -1;
    }
    }
    if(IsAGang(GetPlayerFrak(playerid)) && Spieler[playerid][Duty] <= 1) Spieler[playerid][Duty] = 1;
    if(Spieler[playerid][Duty] == 1) spSkin = Spieler[playerid][Fraktionsskin];
    else if(Spieler[playerid][Duty] == 2 && Spieler[playerid][Ziviljob] > 0) spSkin = Nebenjobs[Spieler[playerid][Ziviljob]][jSkin];
    else if(Spieler[playerid][Duty] == 2 && Spieler[playerid][Fraktionsjob] > 0) spSkin = Nebenjobs[Spieler[playerid][Fraktionsjob]][jSkin];
    else spSkin = Spieler[playerid][Zivilskin];
    if(Spieler[playerid][Spawnchange] >= 0) return p_SetSpawnInfo(playerid, spSkin, Fraktionen[Spieler[playerid][Spawnchange]][pickx],Fraktionen[Spieler[playerid][Spawnchange]][picky],Fraktionen[Spieler[playerid][Spawnchange]][pickz],Fraktionen[Spieler[playerid][Spawnchange]][picka],Fraktionen[Spieler[playerid][Spawnchange]][pickinter], Fraktionen[Spieler[playerid][Spawnchange]][pickvirt]);
    if(Spieler[playerid][Hotelzimmer] >= 0) return p_SetSpawnInfo(playerid,spSkin, pHotelzimmer[Spieler[playerid][Hotelzimmer]][hzx2],pHotelzimmer[Spieler[playerid][Hotelzimmer]][hzy2],pHotelzimmer[Spieler[playerid][Hotelzimmer]][hzz2],pHotelzimmer[Spieler[playerid][Hotelzimmer]][hza2],pHotelzimmer[Spieler[playerid][Hotelzimmer]][inter2],pHotelzimmer[Spieler[playerid][Hotelzimmer]][virt2]);
    if(Spieler[playerid][Haus] >= 0) return p_SetSpawnInfo(playerid, spSkin, Haeuser[Spieler[playerid][Haus]][pick2x],Haeuser[Spieler[playerid][Haus]][pick2y],Haeuser[Spieler[playerid][Haus]][pick2z],Haeuser[Spieler[playerid][Haus]][pick2a],Haeuser[Spieler[playerid][Haus]][inter],Haeuser[Spieler[playerid][Haus]][virt]);
    if(Spieler[playerid][Stadt] == 1) p_SetSpawnInfo(playerid, spSkin, 823.9938,-1361.9373,-0.5078, 314.8367);
    else if(Spieler[playerid][Stadt] == 2) p_SetSpawnInfo(playerid, spSkin, -1964.9036,137.8082,27.6875,89.5713);
    else if(Spieler[playerid][Stadt] == 3) p_SetSpawnInfo(playerid, spSkin, 1433.6573,2620.4934,11.3926, 180.1021);
    else p_SetSpawnInfo(playerid, spSkin, 823.9938,-1361.9373,-0.5078, 314.8367);
    return 1;
    }
    stock p_SetSpawnInfo(playerid, skin, Float:x, Float:y, Float:z, Float:a, interior = 0, virtualworld = 0, Float:spHealth = 100.0, Float:spArmour = 0.0, bool:spPara = false)
    {
    SetSpawnInfo(playerid, 0, skin, x, y, z, a, 0, 0, 0, 0, 0, 0);
    SpawnInfo[playerid][Inter] = interior;
    SpawnInfo[playerid][Virt] = virtualworld;
    SpawnInfo[playerid][spHp] = spHealth;
    SpawnInfo[playerid][spArm] = spArmour;
    SpawnInfo[playerid][Parachute] = spPara;
    return 1;
    }


    Ich weiß nicht ob ihr dort etwas erkennt..

    Einmal editiert, zuletzt von Simon ()