Beiträge von Jeffry

    Das kann auch hin und wieder während des spielens vorkommen, an sich ist das nichts schlimmes. Soweit ich weiß liegt das, wenn es sporadisch auftritt, nicht an einem eigenen Code.

    Ok, gut!

    Lag dies vielleicht, dass der Skin quasi gesetzt wurde, bevor der NPC tatsächlich gespawnt wurde?

    Das weiß ich nicht genau, bzw. das kann ich nur raten. Ich gehe davon aus, dass du irgendwo drunter nochmal einen Skin setzt, zu dem was aus den Spielerstatistiken geladen wird (oder ähnliches). Der NPC hat dies nicht und bekommt Skin 0. Daher der Versuch es mit einem Timer zu umgehen.
    Du kannst natürlich versuchen diese Stelle ausfindig zu machen, die das Problem verursacht, wenn du willst.



    Und funktioniert dies auch, wenn ich trotzdem die Namens-Abfrage mache?

    Das sollte klappen, sofern die Namensabfrage korrekt ist. Versuche es mal.

    Dann versuche es so:

    C
    public OnPlayerSpawn(playerid)
    {
    	printf("OnPlayerSpawn");
    	if(IsPlayerNPC(playerid))
    	{
    		printf("Setze Skin für NPC %d", playerid);
    		SetPlayerSkin(playerid,287);
    		SetTimerEx("SetNPCSkin", 2000, 0, "dd", playerid, 287);
    	}
    	//...


    Und das hier ganz unten im Gamemode:

    C
    forward SetNPCSkin(playerid, skin);
    public SetNPCSkin(playerid, skin)
    {
    	printf("Setze Skin für NPC %d (%d)", playerid, skin);
    	return SetPlayerSkin(playerid,skin);
    }

    Du musst das mit einer Schleife durch alle Taxifahrer lösen.


    Gegebenenfalls musst du das mit der TaxiCall-Zuweisung aber anders machen, weil wenn so ein zweiter Spieler auch ein Taxi anfordert, dann "vergisst" der Server den ersten Spieler.
    Dazu müsste aber auch der /accept taxi Befehl angepasst werden.

    Dann mache es bitte mal so und poste dann, was im Server Log steht, wenn der NPC spawnt:

    C
    public OnPlayerSpawn(playerid)
    {
    	printf("OnPlayerSpawn");
    	if(IsPlayerNPC(playerid))
    	{
    		printf("Setze Skin für NPC %d", playerid);
    		SetPlayerSkin(playerid,287);
    	}
    	//...

    Fehler müssen auf jeden Fall ausgegeben worden sein, im MySQL Log.
    Außerdem hattest du jedes Query ohne eine WHERE Angabe geschrieben, zudem hast du Unmengen an query-Variablen genutzt.


    Fasse alles zu einem Query zusammen und schicke das eine dann ab:

    Ich habe die WHERE Angabe mit "id" ganz hinten im letzten mysql_format eingebaut. Dazu die Angabe db_id in PlayerInfo. Gegebenenfalls musst du das abändern, ich weiß ja nicht wie es bei dir heißt.


    Ich war außerdem so frei und habe die ganzen Kommentarzeilen entfernt.

    Solange du keine Paltzhalter (%d, %s,...) im Pfad nutzt musst du format nicht nutzen. format ist nur für die Platzhalter notwendig.