Fehler ingame! Die Spieler können sich nicht untereinander sehen

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
  • Hallo,


    lolcooper und ich haben ein Problem. Wir haben heute erstmals Testweise unseren Script auf unserem Server online gestellt.


    Wir haben 2 schwerwiegende Fehler:
    1. Nach Server Start kommt der Login-Dialog ganz normal und man kann sich einloggen. Allerdings wenn man dann disconnected und wieder auf dem Server geht, erscheint zumeist erstmal der Login-Dialog bei den Spielern überhaupt nicht mehr.


    2. Die Spieler können sich untereinander NICHT sehen! Das heisst selbst wenn Spieler xy neben mir stehen würde, würde xy mich nicht sehen und ich ihn nicht. Dazu kommt noch das NUR ich mich selbst in der Spieler Tab-Liste sehe, aber andere Spieler die ebenfalls im Server on sind werden nicht aufgelistet. Ausser die "Players" Anzahl die in der Tab-Liste angezeigt wird, die stimmt.


    Wir haben keine Arnung woran es legen kann. Hoffe ihr könnt uns helfen ;(

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

    Einmal editiert, zuletzt von palwal () aus folgendem Grund: Unzureichender Threadtitel.

  • Zu Problem 1:
    Zeig uns dazu vielleicht einmal den Teil, wo der Spieler sich einloggt, bzw. wo der Teil erscheint, damit der Spieler sich einloggen kann.



    Zu Problem 2:
    Sind die Spieler vielleicht in verschiedenen Welten? Das kannst du durch einen Befehl ganz einfach herausfinden.
    if(!strcmp(cmdtext,"/welt",true)){
    new pID,string[128],name[MAX_PLAYER_NAME];
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,-1,"/welt [playerid]");
    GetPlayerName(pID,name,MAX_PLAYER_NAME);
    format(string,128,"Der Spieler %s hat die Virtuelle Welt: %d",name,GetPlayerVirtualWorld(pID));
    return SendClientMessage(playerid,-1,string);
    }


  • Ich bekomme immer die Virtuelle Welt 0 raus.



    Eventuell ein Timebug, der vom Server ausgeht?
    Hatte der Server, auf dem ich aktiv war, auch schon des öfteren.
    Die meisten allerdings wussten nicht, wie sie dies beheben - ich bin einer von ihnen.


    Diees denke ich ist eher das Problem.. Aber sobald ich "TimerFix" darauf installiere, spinnt der Server komplett...


    LG lolcooper


  • Irgendetwas an den Plugins, am Gamemode, an den Filterscripts oder an der Server.cfg gemacht?


    Nene.. Hab NICHTS gemacht.. So sieht meine Config aus:



    echo Executing Server Config...
    lanmode 0
    rcon_password test
    maxplayers 50
    port 7777
    hostname Selfmade
    gamemode0 selfmade
    filterscripts gl_actions gl_realtime gl_property gl_mapicon ls_mall ls_elevator attachments skinchanger vspawner text objekt
    plugins mysql.so sscanf.so streamer.so fixes2.so
    announce 0
    query 1
    chatlogging 0
    weburl www.sa-mp.com
    onfoot_rate 40
    incar_rate 40
    weapon_rate 40
    stream_distance 300.0
    stream_rate 1000
    maxnpc 0
    logtimeformat [%H:%M:%S]

  • Diees denke ich ist eher das Problem.. Aber sobald ich "TimerFix" darauf installiere, spinnt der Server komplett...


    Auf Anfrage in PN:


    Wenn du TimerFix raus nimmst geht alles normal?


    Also scripttechnisch ist das Problem mit der Tab Liste nicht zu erklären, daß Einzige ist, dass Deine Verbindung so schlecht ist, dass du nicht mehr synchronisiert wirst.
    Hast du einen Teleport Befehl? Wenn ja, dann teleportiere dich doch mal zu einem solchen Spieler den du nicht siehst. Was passiert?


  • Naja.. Ich denke, dass hängt alles mit dem Login Dialog zusammen, dass er nicht erscheinen will :wacko:


    LG lolcooper


    EDIT: Mir fällt auch noch auf, dass wenn der Login Dialog nicht kommt, seine Statistiken geladen werden. Sprich: Man kann als Admin, wenn man nicht eingeloggt ist die Admin Befehle nutzen?! Hier Teile zum OnPlayerConnect etc. :



    public OnPlayerConnect(playerid)
    {
    new query[128];
    RemoveObjects(playerid);

    SetPlayerColor(playerid, 0xDCDCDCFF);
    format(SpielerInfo[playerid][pName], 32, "%s", GetName(playerid));
    format(query,sizeof(query),"SELECT `id` FROM `accounts` WHERE `name`='%s'",GetName(playerid));
    mysql_query(query);
    mysql_store_result();
    TogglePlayerSpectating(playerid, 1);
    new account;
    if(mysql_num_rows()!=0)
    {
    account = 1;
    }
    else {
    account = 0;
    }
    mysql_free_result();


    if(account == 1 && SpielerInfo[playerid][pLogged] == 0)
    {
    new string[880];
    PlayerPlaySound(playerid, 1069, 0.0, 0.0, 0.0);
    PlayAudioStreamForPlayer(playerid, "http://www.ngl-roleplay.de/musik/loginmusik.mp3");
    format(string, sizeof(string), "Willkommen auf %s\n\nHier musst du dein Passwort eingeben.\n\n\n\nVergiss dein Passwort nicht, \nund achte darauf das keiner dein Passwort kennt.", SERVERNAME);
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{0087FF}Login", string, "Einloggen", "Abbrechen");
    }
    else if(account == 0 && SpielerInfo[playerid][pLogged] == 0)
    {
    PlayerPlaySound(playerid, 1069, 0.0, 0.0, 0.0);
    PlayAudioStreamForPlayer(playerid, "http://www.ngl-roleplay.de/musik/loginmusik.mp3");
    ShowPlayerDialog(playerid, DIALOG_REG, DIALOG_STYLE_PASSWORD, "Registration", "Du benötigst einen Account, um auf diesem Server zu spielen! \n\n Bitte suche dir ein neues Passwort aus!", "Registrieren", "Abbrechen");
    }
    timer[playerid] = SetTimerEx("Speedometer",1000, 1, "i",playerid);
    return 1;
    }


    Und nun der DIALOG_LOGIN:

    if(dialogid == DIALOG_LOGIN)
    {
    if(response && strlen(inputtext) > 0)
    {
    new string[512],name[32], val[300];
    GetPlayerName(playerid,SpielerInfo[playerid][Name],32);
    mysql_real_escape_string(SpielerInfo[playerid][Name],name);
    format(string,sizeof(string),"SELECT passwort FROM accounts WHERE name = '%s'",name);
    mysql_query(string);
    mysql_store_result();
    mysql_fetch_row(string);
    mysql_free_result();
    if(strcmp(inputtext,string,false)!=0)
    {
    format(string,sizeof(string),"Willkommen bei %s\n\nDein Passwort war nicht richtig!\nBitte Logge dich mit \ndein richtiges Passwort ein.",SERVERNAME);
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login",string,"Einloggen","Abbrechen");
    return 1;
    }
    format(string, sizeof(string), "SELECT * FROM `accounts` WHERE `name`='%s'",name);
    mysql_query(string);
    mysql_store_result();
    if(mysql_retrieve_row())
    {
    mysql_fetch_field_row(val,"banned");
    SpielerInfo[playerid][pGebannt] = strval(val);
    mysql_fetch_field_row(SpielerInfo[playerid][pKey],"passwort");
    mysql_fetch_field_row(val,"admin");
    SpielerInfo[playerid][pAdmin] = strval(val);
    mysql_fetch_field_row(val,"donater");
    SpielerInfo[playerid][pDonateRank] = strval(val);
    mysql_fetch_field_row(val,"upgradepoints");
    SpielerInfo[playerid][gPupgrade] = strval(val);
    ...... (usw.)

    new textdraw1[100], textdraw2[100], textdraw3[100], pa;
    if(SpielerInfo[playerid][pPrisonMinuten] == 1)
    {
    format(textdraw1, sizeof(textdraw1), "1 Minute");
    }
    else
    {
    format(textdraw1, sizeof(textdraw1), "%d Minuten", SpielerInfo[playerid][pPrisonMinuten]);
    }
    TextDrawSetString(PrisonText1[playerid], textdraw1);
    format(textdraw2, sizeof(textdraw2), "%s", SpielerInfo[playerid][pPrisonGrund]);
    TextDrawSetString(PrisonText3[playerid], textdraw2);
    if(!strfind(SpielerInfo[playerid][pPrisonAdmin],"Server-System",true))
    {
    format(textdraw3, sizeof(textdraw3), "Server-System");
    } else {
    pa = ReturnUser(SpielerInfo[playerid][pPrisonAdmin]);
    if(IsPlayerConnected(pa))
    {
    format(textdraw3, sizeof(textdraw3), "%s (Online)", GetName(pa));
    }
    else
    {
    format(textdraw3, sizeof(textdraw3), "%s (Offline)", GetName(pa));
    }
    }
    TextDrawSetString(PrisonText5[playerid], textdraw2);


    if(GetPlayerScore(playerid) == 0)
    {
    SetPlayerScore(playerid, 1);
    SpielerInfo[playerid][pExp]=0;
    SpielerInfo[playerid][pMaxExp]=4;
    SavePlayer(playerid);
    }

    if(SpielerInfo[playerid][pTut] == 0)
    {
    SetPVarInt(playerid, "TutorialStep", 0);
    StartTutorial(playerid);
    }


    SpielerInfo[playerid][pLogged] = 1;
    TogglePlayerSpectating(playerid, 0);
    SetSpawnInfo(playerid, SpielerInfo[playerid][pTeam], SpielerInfo[playerid][pChar], 1770.6027,-1779.4812,13.5500, 1.0, -1, -1, -1, -1, -1, -1);
    NGLSpawn(playerid);
    LoadPlayerCars(playerid);
    SetPlayerColor(playerid, 0x0F0000FF);
    SetPlayerSkin(playerid, SpielerInfo[playerid][pChar]);
    GivePlayerMoney(playerid, SpielerInfo[playerid][pCash]);
    StopAudioStreamForPlayer(playerid);
    SetPlayerScore(playerid, SpielerInfo[playerid][pAge]);
    }
    }
    }

    Einmal editiert, zuletzt von lolcooper ()


  • Auf Anfrage in PN:


    Wenn du TimerFix raus nimmst geht alles normal?


    Also scripttechnisch ist das Problem mit der Tab Liste nicht zu erklären, daß Einzige ist, dass Deine Verbindung so schlecht ist, dass du nicht mehr synchronisiert wirst.
    Hast du einen Teleport Befehl? Wenn ja, dann teleportiere dich doch mal zu einem solchen Spieler den du nicht siehst. Was passiert?

    Danke Jeffry, das du uns helfen möchtest.
    Ich habe den Spieler, indem Fall lolcooper zu mir teleportiert. Das Auto in das lolcooper saß, spawnte zu mir aber ich sah lolcooper nicht und er mich nicht. Allerdings der Umgebungschat funktioniert.

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • Hast du mal versucht einen leeren GameMode zu nehmen, komplett ohne Plugins und Zeugs. Am besten so einen der schon bei dem Server dabei ist?
    Bestehst das Problem hier ebenfalls?



    EDIT:
    lolcooper: Zu dem Problem mit der TAB Liste weiß ich leider nichts, sorry.

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • Ist der Callback "OnPlayerUpdate" bei dir im Gamemode enthalten?
    Wenn ja, poste den mal.
    Wenn nicht, füg ihn ein und teste ;)

    public OnPlayerUpdate(playerid)
    {
    if(FSpkwLeasson[playerid] == 1 || FSlkwLeasson[playerid] == 1 || FSmotorradLeasson[playerid] == 1) {
    new kmh;
    kmh = getKmh(playerid, true);
    if(FSpkwLeasson[playerid] == 1) {
    if(kmh > 105) {
    SpeedFSWarn[playerid] += 1;
    GameTextForPlayer(playerid, "~r~Zu schnell!", 2000, 0);
    }
    } else if(FSlkwLeasson[playerid] == 1) {
    if(kmh > 85) {
    SpeedFSWarn[playerid] += 1;
    GameTextForPlayer(playerid, "~r~Zu schnell!", 2000, 0);
    }
    } else if(FSmotorradLeasson[playerid] == 1) {
    if(kmh > 115) {
    SpeedFSWarn[playerid] += 1;
    GameTextForPlayer(playerid, "~r~Zu schnell!", 2000, 0);
    }
    }


    }

    return 1;
    }

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • Naja.. Wie auch immer.. Problem gelöst.. Aber jedoch werden die Spieler nicht in der "TAB Liste", also in der Online Liste angezeigt?! Jedoch kann man im Script auf die Spieler zugreifen und man kann die anderen Spieler auch sehen.
    Also.. Der Login Dialog funktioniert nun einwandfrei etc. aber wieso werden die Spieler nicht in der "TAB Liste" angezeigt?!?!?!


    LG lolcooper

  • Jeffry ?
    Wenn man sich ausgeloggt hat und man will wieder in den Server rein, dann erscheint der LOGIN-DIALOG nicht mehr (Immer ab den 2. Connecten) aber wenn man Server restartet hat funzt wieder es. Woran kann das liegen?

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.