NPC´s Connecten nicht?

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
  • Hallou, hab ein Problem und zwar Connecten meine NPC´s nicht laut Log aber schon?


    Hier erstmal die LOG:


    Wie man sieht sie connecten und werden sofort ins auto geportet. So doch es ist kein einziger Bot Online?
    Ich weis nicht ob ihr mir Helfen könnt da ich etwas anders Scripte, aber ich würde mich freuen, wenn ihr mir Helfen könnt.
    Hier mal der Code:


    // Config


    #define MAX_NPC_MULTIRECS 10// Number of recordings asigned to a MultiRec NPC
    #define NPC_SCRIPTNAME "recording"


    // OnGameModeInit


    ReconnectNPCs();
    ReloadVehicleModels();
    ReloadVehicles(true);
    Keine Sorge da ist schon mehr Drin in OnGameModeInit ich habe jetzt nur das was mit NPC zu tun hat raus gesucht.



    // ReconnectNPCs


    ReconnectNPCs(playerID = INVALID_PLAYER_ID)
    {
    AdminPrint(playerID, COLOR_INFO, "* Kicking NPCs...");
    PlayerLoop(npcPlayerID)
    {
    if (IsPlayerNPC(npcPlayerID))
    {
    Kick(npcPlayerID);
    }
    }
    AdminPrint(playerID, COLOR_INFO, "* Connecting NPCs...");
    new count;
    mysql_query("SELECT * FROM `npcs` WHERE `autoConnect`");
    mysql_store_result();
    while (FetchMySQLRow())
    {
    ConnectNPC(GetMySQLField("name"), NPC_SCRIPTNAME);
    count++;
    }
    mysql_free_result();
    AdminPrint(playerID, COLOR_INFO, "* NPC %s was connected ID: %d on position %f,%f,%f", GetMySQLField("name"), GetMySQLField("id"), GetMySQLField("spawnPosX"), GetMySQLField("spawnPosY"), GetMySQLField("spawnPosZ"));
    AdminPrint(playerID, COLOR_INFO, "* %d NPCs connected", count);
    }


    // OnPlayerConnect


    if (IsPlayerNPC(playerid))
    {
    new ip[16];
    GetPlayerIp(playerid, ip, sizeof(ip));
    if (strcmp(ip, "127.0.0.1", true))
    {
    MySQLBan(INVALID_PLAYER_ID, playerid, "External NPC connection", true);
    return false;
    }
    SetSpawnInfo(playerid, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);// Always spawn NPCs in a not visible area (At position 0 x 0 x 0)
    return true;
    }


    // OnGameModeExit


    if (IsPlayerNPC(playerID))
    {
    Kick(playerID);
    }


    // OnPlayerDisconnect


    if (IsPlayerNPC(playerid))
    {
    return true;
    }
    PlayerLoop(playerID)
    {
    if (!IsPlayerNPC(playerID) && playerID != playerid)
    {
    SendClientMessageEx(playerID, COLOR_JOINLEAVE, 161, playerid, reasonString);
    }
    }


    // OnPlayerEnteredVehicle


    if (IsPlayerNPC(playerID))
    {
    return true;
    }
    if (modelID == 420)
    {
    new npcPlayerID;
    MySQLQuery("SELECT * FROM `npcs` WHERE `vehicleId` = '%d'", VehicleProperty:vehicleID[SAVEID]);
    mysql_store_result();
    if (mysql_num_rows())
    {
    npcPlayerID = GetPlayerID(GetMySQLField("name"));
    }
    mysql_free_result();
    if (npcPlayerID != INVALID_PLAYER_ID)
    {
    if (isPassenger)
    {
    SendNPCCommand(npcPlayerID, "start");
    return true;
    }
    else
    {
    return false;
    }
    }
    }


    // OnPlayerSpawn


    if (IsPlayerNPC(playerid))// The player is a NPC
    {
    MySQLQuery("SELECT * FROM `npcs` WHERE `name` = '%s'", MySQLEscapeString(GetPlayerNameEx(playerid)));
    mysql_store_result();
    SetPlayerSkin(playerid, strval(GetMySQLField("skin")));
    new vehicleID = GetVehicleBySaveID(strval(GetMySQLField("vehicleId")));
    if (vehicleID)
    {
    PVar:playerid[NPC_RECORDINGTYPE] = PLAYER_RECORDING_TYPE_DRIVER;
    PutPlayerInVehicle(playerid, vehicleID, 0);
    SetVehicleEngineState(vehicleID, true);
    }
    else
    {
    PVar:playerid[NPC_RECORDINGTYPE] = PLAYER_RECORDING_TYPE_ONFOOT;
    }
    new tryMultiRecForID;
    new startOnConnect = strval(GetMySQLField("startOnConnect"));
    PVar:playerid[NPC_AUTOREPEAT] = strval(GetMySQLField("autoRepeat"));
    if (floatstr(GetMySQLField("spawnPosX")) || floatstr(GetMySQLField("spawnPosY")) || floatstr(GetMySQLField("spawnPosZ")))
    {
    FormatNew:command[100]("teleport %s %s %s %s", GetMySQLField("spawnPosX"), GetMySQLField("spawnPosY"), GetMySQLField("spawnPosZ"), GetMySQLField("spawnAngle"));
    SendNPCCommand(playerid, command);
    tryMultiRecForID = 0;
    }
    if (strlen(GetMySQLField("recording")))
    {
    FormatNew:command[40]("setrec %s %d %d %d %d", GetMySQLField("recording"), PVar:playerid[NPC_RECORDINGTYPE], PVar:playerid[NPC_AUTOREPEAT], startOnConnect, strval(GetMySQLField("startDelay")));
    SendNPCCommand(playerid, command);
    }
    else
    {
    tryMultiRecForID = strval(GetMySQLField("id"));
    }
    mysql_free_result();
    if (tryMultiRecForID)
    {
    new slot;
    MySQLQuery("SELECT * FROM `npcmultirecs` WHERE `npcId` = '%d'", tryMultiRecForID);
    mysql_store_result();
    while (FetchMySQLRow())
    {
    PVar:playerid[NPC_RECORDINGS][slot] = strval(GetMySQLField("id"));
    slot++;
    }
    mysql_free_result();
    if (slot)
    {
    if (startOnConnect)
    {
    PlayNextNPCRecording(playerid);
    }
    }
    }
    return true;
    }


    So ich hoffe ihr könnt mir Helfen. Ich verzweifle langsam echt daran ?( Ich sitzt jetzt Glaube schon fast 4 Stunden an diesen Schmarn und komm einfach nicht darauf, was es sein könnte. Komischerweise, seit dem ich auf 0.3x Geupdatet hab funkionieren die NPC´s nimmer? Liegt es vielleicht daran? Bei 0.3e haben se noch Funkioniert.
    Ist vielleicht eins meiner Script Weise falsch? Muss was geändert werden Bezüglich der NPC´s wegen dem Update auf 0.3x`?


    Schon mal ein Danke im Vorraus.


    Mit Freundlichen Grüssen
    Tobi 8)

    Der Server: [GRG]Grand Racing Game wurde 2014 Eingestampft.
    Weitere Infos: Klick Mich

  • Du musst, da SA:MP 0.3x einige Veränderungen auch in einer Art Sicherheit hatte deine Bots mit einem Timer connecten lassen, es dürfen NICHT alle mit einmal connecten. Andernfals werden sie automatisch von SA:MP 0.3x geblockt.


    Zitat

    Many important changes to SA-MP's networking system which reduces network overhead and improves security for server owners.


    Hat damit zu tun.

  • Den Führerschein haben die Bots.
    Sie überspringen sogar das Loggin. Sprich sie sind gleich eingeloggt.


    Das mit dem Timer Check ich nicht ganz, da ich meine Bots als MySQL habe weis ich jetzt nicht so richtig, wie ich jeden einzelnen Bot aufrufe. Ich hab halt alle auf einmal Aufgerufen war das einfachste. Kann man mir dort helfen eventuel?


    //Edit
    Habe nun mal alle NPC´s auser einen Raus gehauen. Ich stelle Fest, dass nicht mal der Eine NPC im Spiel ist.


    //Edit
    Neues Fest gestellt und Zwar steht das in der LOG:

    Code
    [2013-04-08 22:28:28] * Put NPCs in vehicles...
    [2013-04-08 22:28:28] NPC ÿÜ with the ID: 49 is in car 220
    [2013-04-08 22:28:28]   1 NPCs put in vehicles


    Obwohl der NPC die id 1 hat und nicht die 49 und auch nicht so komische heist sondern SFTram ..
    Code:
    AdminPrint(playerID, COLOR_INFO, "* Put NPCs in vehicles...");
    mysql_query("SELECT * FROM `npcs` WHERE `vehicleId`");
    mysql_store_result();
    while (FetchMySQLRow())
    {
    new vehicleID = GetVehicleBySaveID(strval(GetMySQLField("vehicleId")));
    if (vehicleID)
    {
    new npcPlayerID = GetPlayerID(GetMySQLField("name"));
    if (npcPlayerID)
    {
    PutPlayerInVehicle(npcPlayerID, vehicleID, 0);
    printf("NPC %s with the ID: %d is in car %d",npcPlayerID, GetMySQLField("id"), vehicleID);
    count++;
    }
    }
    }
    mysql_free_result();
    AdminPrint(playerID, COLOR_INFO, " %d NPCs put in vehicles", count);


    PS: NPC sind auch nicht am Noob Spawn und nicht an Punkt zero...

    Der Server: [GRG]Grand Racing Game wurde 2014 Eingestampft.
    Weitere Infos: Klick Mich

    3 Mal editiert, zuletzt von AeroxTobi ()