Beiträge von Akino Kiritani

    //Edit hast du was unter OnPlayerUpdate?
    Wenn ja ganz schnell raus damit


    Es könnte rein Theoretisch an dem hier liegen
    Audio_Play(playerid, 18, false, false, false);
    Kanns aber nicht genau sagen.


    Du hast warscheinlich das Audioplugin drin nimm das mal raus und meld dich dann nochmal vielleicht liegst ja auch dadran, das Plugin spackt gerne ma ab geauso wie es gerne mal in den User dateien rumpfuscht
    (Böse erinnerungen werden Wach :o)

    Wenn du GMX machst wird zuerst OnGameModeExit und dann wieder OnGameModeInit aufgerufen.


    Außerdem versteh ich dein Problem nicht ganz...
    Du machst ein GMX und sagst das ein Tor oben bleibt und das andere wieder runter fährt?
    Wenn ja, dann frage ich dich ist das vor dem GMX auch schon so gewesen oder hast du einen Befehl genutzt der das Tor runterfährt?
    Oder hast du das Tor runterfahren lassen?

    OMG du versuchst nicht mal an deine Funktionen die du mit den Timer aufrufst werte/variablen zu übergeben, das geht nur mit SetTimerEx


    Ein Beispiel
    wenn du so versuchst SetTimer("SetPayDay",SETPAYDAY,1); diese Funktion aufzurufen public SetPayDay(i) kann das zwar funktionieren, aber alle Abfragen, die du mit der Variable i machst werden 0 returnen da in 'i' nix steht bzw 'i' 0 ist


    Du müsstest es dann so machen SetTimerEx("SetPayDay",SETPAYDAY,1,"i",deinevariable); amsinnvollsten wäre das einzusetzen in OnPlayerConnect

    erstellen solltest du deinen Textdraw bei OnPlayerConnect



    //oben sollte das so aussehen
    new textdrawtimer;
    forward Anzeige();
    new killsvonplayer[MAX_PLAYERS],
    Money[MAX_PLAYERS],
    Ping[MAX_PLAYERS];
    new Text:anzeige[MAX_PLAYERS];


    //Bei OnPlayerConnect(playerid)
    //solltest du hier deinen Textdraw vollständig erstellen
    //in etwa so
    anzeige[i] = TextDrawCreate(491.000000,292.000000, string);
    TextDrawLetterSize(anzeige[i], 0.5, 2.5);
    Der Rest kann so bleiben



    Hier:
    new string[256]; //Hier oder ??
    format(string, sizeof(string),"Ping:~r~ %d ~n~~w~Score:~r~ %d ~n~~w~Geld:~r~ %d ~n~~w~Leben:~r~ %.0f",Ping[i],killsvonplayer[i],Money[i],lebenvonplayer);
    TextDrawSetString(anzeige[i], string); //bis hier ?
    Erstellt du ihn nicht, sondern du Updatest ihn nur, erstellen tust du ihn wenn er Connected


    BTW:
    Du solltest bei OnPlayerDisconnect noch das einfügen
    TextDrawDestory(anzeige[playerid]);


    und bei OnGameModeExit()
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    TextDrawDestory(anzeige[i]);
    }

    AC/DC biste des Wahnsinns?


    Du erstellt einfach nen Textdraw ohne ihn löschen?
    Willst du schon anfangen unschuldige Server zu vernichten?


    Besser wäre so


    new Text:anzeige[MAX_PLAYERS];


    public Anzeige()
    {
    for new (i = 0; i < MAX_PLAYERS, i++)
    {
    if(IsPlayerConnected(i))
    {
    new Float:lebenvonplayer;
    killsvonplayer[i] = GetPlayerScore(i);
    Money[i] = GetPlayerMoney(i);
    Ping[i] = GetPlayerPing(i);
    GetPlayerHealth(i,lebenvonplayer);


    new string[256];
    format(string, sizeof(string),"Ping:~r~ %d ~n~~w~Score:~r~ %d ~n~~w~Geld:~r~ %d ~n~~w~Leben:~r~ %.0f",Ping[i],killsvonplayer[i],Money[i],lebenvonplayer);
    TextDrawSetSting(anzeige[i], string);
    }
    }

    AC/DC unser beides ist nicht ganz richtig.
    Ich hab übersehen, das er den Textdraw nicht für alle Spieler einzeln erstellt und du hast über sehen, dass er seine Arrays im TextDrawSetString vergessen hat, also packen wir beides zusammen und schon stimmt ;)
    //oben
    new Text:anzeige[MAX_PLAYERS];


    public Anzeige()
    {
    for new (i = 0; i < MAX_PLAYERS, i++)
    {
    if(IsPlayerConnected(i))
    {
    new Float:lebenvonplayer;
    killsvonplayer[i] = GetPlayerScore(i);
    Money[i] = GetPlayerMoney(i);
    Ping[i] = GetPlayerPing(i);
    GetPlayerHealth(i,lebenvonplayer);


    new string[256];
    format(string, sizeof(string),"Ping:~r~ %d ~n~~w~Score:~r~ %d ~n~~w~Geld:~r~ %d ~n~~w~Leben:~r~ %.1f",Ping[i],killsvonplayer[i],Money[i],lebenvonplayer);
    anzeige[i] = TextDrawCreate(491.000000,292.000000, string);
    TextDrawLetterSize(anzeige[i], 0.5, 2.5);
    TextDrawShowForPlayer(i,anzeige[i]);
    }
    }
    }

    Das mit TextDrawShowForAll wird nix da er ja schon angezeigt wird desweiteren wird er das gleiche Problem weiterhaben


    Denn er hat seine Arrays vergessen


    format(string, sizeof(string),"Ping:~r~ %d ~n~~w~Score:~r~ %d ~n~~w~Geld:~r~ %d ~n~~w~Leben:~r~ %.1f",Ping[i],killsvonplayer[i],Money[i],lebenvonplayer);


    So sollte das funktionerien

    Mhm das geht leider auch nicht.


    Sieht jetzt genauso aus wie das sagtest


    new Float:x,Float:y,Float:z;
    GetVehiclePos(vehicleid,x,y,z);
    sirene[0][vehicleid] = CreateDynamicObject(19288,x,y+vm,z,0,0,0,vehicleid,-1,-1,-1);
    sirene[1][vehicleid] = CreateDynamicObject(18646,x+ds1,y,z+ds2,0,0,0,vehicleid,-1,-1,-1);
    sirene[2][vehicleid] = CreateDynamicObject(19288,x+vlb1,y+vlb2,z,0,0,0,vehicleid,-1,-1,-1);
    sirene[3][vehicleid] = CreateDynamicObject(19288,x+vlf1,y+vlf2,z,0,0,0,vehicleid,-1,-1,-1);


    Aber irgendwie kann ich das immer noch nicht glauben dass das so funktionieren soll, wenn ich mir die Include so angucke
    native CreateDynamicObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, worldid = -1, interiorid = -1, playerid = -1, Float:distance = 350.0);

    //oben
    new alarm[MAX_VEHICLES], alarm2[MAX_VEHICLES];
    new bool:LightOn[MAX_VEHICLES];


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    new Float:x,Float:y,Float:z;
    if(newkeys & KEY_CROUCH)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    if(LightOn[vehicleid] == false)
    {
    alarm[vehicleid] = CreateObject(18646,x,y,z,0,0,0,283); //die 1. neonröhre
    alarm2[vehicleid] = CreateObject(18646,x,y,z,0,0,0,283); //die 2. neoröhre
    AttachObjectToVehicle(alarm, GetPlayerVehicleID(playerid), 0.77,-0.2,1.4,0,0,0); //das ist die eine seite
    AttachObjectToVehicle(alarm2, GetPlayerVehicleID(playerid), -0.77,-0.2,1.4,0,0,0); //das die andere seite unter dem auto
    SendClientMessage(playerid, COLOR_GREEN, "Licht montiert.");
    LightOn[vehicleid] = true;
    }
    else if(LightOn[vehicleid] == true)
    {
    DestroyObject(alarm[vehicleid]);
    DestroyObject(alarm2[vehicleid]);
    SendClientMessage(playerid, COLOR_GREEN, "Licht demontiert.");
    LightOn[vehicleid] = false;
    }
    }
    }
    return 1;
    }


    Sorry hab den Theard eig nur überflogen sonst hätt ich die Fehler sofort gesehn :D


    Machs am besten so mit Arrays -> speicherst das für jedes Auto

    Sorry das blick ich jetzt nicht.


    Ich habs einfach ma probiert und es hat nicht geklappt
    new Float:x,Float:y,Float:z;
    GetVehiclePos(vehicleid,x,y,z);
    sirene[0][vehicleid] = CreateDynamicObject(19288,x,y+vm,z,0,0,0,vehicleid);
    sirene[1][vehicleid] = CreateDynamicObject(18646,x+ds1,y,z+ds2,0,0,0,vehicleid);
    sirene[2][vehicleid] = CreateDynamicObject(19288,x+vlb1,y+vlb2,z,0,0,0,vehicleid);
    sirene[3][vehicleid] = CreateDynamicObject(19288,x+vlf1,y+vlf2,z,0,0,0,vehicleid);


    Ich hab extra noch ma in der Include geguckt und nichts dergleichen gefunden.


    Sollte ich mir nen neuen/anderen besorgen?


    PS: Ja es ist der Streamer von Icognito


    //Edit wenn ich das ohne vehicleid mache erstellt er das Object auf dem Auto drauf, es ist aber nicht Attached ^^
    Achja in vm, ds1, ds2, vlb1, vlb2, vlf1 und vlf2 stehen nur kordinaten für das Attachen drin