NPC - Skin ist immer CJ

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,


    ich habe momentan ein Problem mit meinem Bot.


    Ich möchte diesen in die Stadthalle mit dem angegebenen Skin setzen. Bevor ich meinen neuen PC bekommen habe hat alles funktioniert.
    Plötzlich hab ich nurnoch den CJ Skin.


    Der Bot connected auch ganz normal, und erscheint auch dort, allerdings wird OnPlayerSpawn nicht aufgerufen.



    public OnPlayerSpawn(playerid)
    {
    if(IsPlayerNPC(playerid))
    {
    if(!strcmp(GetName(playerid),"BOT_Emma",true))
    {
    SetPlayerSkin(playerid,141);
    SetPlayerInterior(playerid,3);
    SetPlayerVirtualWorld(playerid,0);
    SetPlayerPos(playerid, 359.7139,173.6362,1008.3893);
    SetPlayerFacingAngle(playerid, 270.7383);
    NPCText = CreateDynamic3DTextLabel("Sekretärin Emma", COLOR_WHITE, 50.0, 60.0, 110.0, 20.0, playerid, INVALID_VEHICLE_ID, 0, -1, -1, -1, 100.0);
    SetPlayerColor(playerid,COLOR_WHITE);
    }
    return 1;
    }


    Wäre nett wenn mir dabei jemand helfen würde. :)


    (PS: Nichtmal der NPCText funktioniert (3DTextLabel) )


    // Edit
    OnGameModeInit:

    ConnectNPC("BOT_Emma", "stadthallenbot");


    // Edit
    bei OnPlayerRequestSpawn und Class ist eine NPC Abfrage und return 1;.

    if(IsPlayerNPC(playerid))return 1;


    // Edit
    Nachdem ich bereits alles mögliche Versucht habe bleibt der CJ Skin weiterhin.

    2 Mal editiert, zuletzt von hav0K~ ()

  • public OnPlayerSpawn(playerid)
    {
    if(IsPlayerNPC(playerid))
    {
    if(!strcmp(GetName(playerid),"BOT_Emma",true))
    {
    SetPlayerSkin(playerid,141);
    SetPlayerInterior(playerid,3);
    SetPlayerVirtualWorld(playerid,0);
    SetPlayerPos(playerid, 359.7139,173.6362,1008.3893);
    SetPlayerFacingAngle(playerid, 270.7383);
    NPCText = CreateDynamic3DTextLabel("Sekretärin Emma", COLOR_WHITE, 50.0, 60.0, 110.0, 20.0, playerid, INVALID_VEHICLE_ID, 0, -1, -1, -1, 100.0);
    SetPlayerColor(playerid,COLOR_WHITE);
    return 1;
    }
    }

  • public OnPlayerSpawn(playerid)
    {
    if(IsPlayerNPC(playerid))
    {
    if(strcmp(GetName(playerid),"BOT_Emma",true))
    {
    SetPlayerSkin(playerid,141);
    SetPlayerInterior(playerid,3);
    SetPlayerVirtualWorld(playerid,0);
    SetPlayerPos(playerid, 359.7139,173.6362,1008.3893);
    SetPlayerFacingAngle(playerid, 270.7383);
    NPCText = CreateDynamic3DTextLabel("Sekretärin Emma", COLOR_WHITE, 50.0, 60.0, 110.0, 20.0, playerid, INVALID_VEHICLE_ID, 0, -1, -1, -1, 100.0);
    SetPlayerColor(playerid,COLOR_WHITE);
    return 1;
    }
    }


  • public OnPlayerSpawn(playerid)
    {
    if(IsPlayerNPC(playerid))
    {
    printf(" Test 1 ");
    if(!strcmp(GetName(playerid),"BOT_Emma",true))
    {
    printf(" Test 2 ");
    SetPlayerSkin(playerid,141);
    SetPlayerInterior(playerid,3);
    SetPlayerVirtualWorld(playerid,0);
    SetPlayerPos(playerid, 359.7139,173.6362,1008.3893);
    SetPlayerFacingAngle(playerid, 270.7383);
    NPCText = CreateDynamic3DTextLabel("Sekretärin Emma", COLOR_WHITE, 50.0, 60.0, 110.0, 20.0, playerid, INVALID_VEHICLE_ID, 0, -1, -1, -1, 100.0);
    SetPlayerColor(playerid,COLOR_WHITE);
    }
    return 1;
    }


    So ist es momentan.
    Allerdings wird nichtmal der erste Print nach der NPC-Abfrage aufgerufen. Es kommt nur dass der Bot connected ist.
    Er steht auch am gewünschten Ort (bestimmt weil es so in der NPC-Record Datei steht) aber er hat keinen 3D Text, den CJ Skin, ...

  • Mach es doch so
    public OnPlayerSpawn(playerid)
    {
    if(IsPlayerNPC(playerid))
    {
    printf(" Test 1 ");
    if(strcmp(GetName(playerid),"BOT_Emma",true))
    {
    printf(" Test 2 ");
    SetPlayerSkin(playerid,141);
    SetPlayerInterior(playerid,3);
    SetPlayerVirtualWorld(playerid,0);
    SetPlayerPos(playerid, 359.7139,173.6362,1008.3893);
    SetPlayerFacingAngle(playerid, 270.7383);
    NPCText = CreateDynamic3DTextLabel("Sekretärin Emma", COLOR_WHITE, 50.0, 60.0, 110.0, 20.0, playerid, INVALID_VEHICLE_ID, 0, -1, -1, -1, 100.0);
    SetPlayerColor(playerid,COLOR_WHITE);
    }
    return 1;
    }

  • Um nochmal alles zusammenzufassen:

    • Du hast die recording Datei im richtigen Ordner?
    • Du hast den NPC unter OnGameModeInit connecten lassen?
    • Du hast in der server.cfg die Max_NPCs angepasst?


    Kontrollier am Besten nochmal alles Schritt für Schritt.

  • "stadthallenbot" ist compiled und die Datei sieht folgendermaßen aus:

    #include <a_npc>
    main(){}
    #define RECORDING "test"


    #define RECORDING_TYPE 2


    public OnRecordingPlaybackEnd()
    StartRecordingPlayback(RECORDING_TYPE, RECORDING);


    public OnNPCEnterVehicle(vehicleid, seatid)
    StartRecordingPlayback(RECORDING_TYPE, RECORDING);


    public OnNPCExitVehicle()
    StopRecordingPlayback();


    public OnNPCSpawn()
    {
    StartRecordingPlayback(RECORDING_TYPE, RECORDING);
    }


    Und die Datei "test" befindet sich unter "recordings".


    Also da sollte schon alles richtig sein.


    // Edit
    maxnpc 5

  • Ich verstehe irgendwie nicht warum nichtmal die Funktion aufgerufen wird, dass abgefragt wird ob der Spieler überhaupt ein NPC ist.
    Du sagst ja das er auf der richtigen Position steht etc, aber warum werden die anderen Funktionen nicht aufgerufen?


    Versuch eventuell nochmal die Recording Datei neu zu erstellen bzw. den Namen eventuell nochmal überprüfen.

  • if(strcmp(GetName(playerid),"BOT_Emma",true))


    Schreib es so:


    if(!strcmp(GetName(playerid),"BOT_Emma"))


    Erklärung
    Nur wenn strcmp 0 returnt, stimmen die Namen überein. Zudem solltest du das true wegmachen, da sonst normale Spieler sich als Bot einloggen könnten.


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Der fehler könnte auch hier liegen:


    #define RECORDING "test"


    Oben heißt es ja:
    stadthallenbot


    Benenne das von test zu stadthallenbot


    Und SAMP Designs


    Bei strcmp ist es umgekehrt


    Wenn du das ! vor dem strcmp weglässt , bedeuted es im normalfall , dass die 2 strings die man eingetragen nicht übereinstimmen deswegen


    if(!strcmp(const string1[], const string2[], bool:ignorecase);


    Hoffe ich konnte helfen :thumbup:

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen