Train & Tram NPCs

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 Abend, breadifsh'ler!
    Habe eben mal mein altes Zug und Tram System rausgekramt um es mal in meinem Gamemode einzubinden und
    hab da etwas Probleme.


    Die NPCs connecten auf den Server und befinden sich an ihren Fahrzeugen (/goto 0 spawnt mich zum Fahrzeug), aber sie sind unsichtbar
    und fahren tut auch nix.
    Habt ihr irgendwelche Ideen oder Vorschläge, was man da machen kann?


    Greetz SoulMan

  • *Edit*:


    Hab mir das eben nochmal angeschaut und
    im Script sieht das jetzt so aus:


    Bei OnPlayerRequestClass wird man als NPC direkt zu OnPlayerSpawn geschickt
    if(IsPlayerNPC(playerid))return SpawnPlayer(playerid);


    Bei OnPlayerSpawn findet man dann folgende Zeile:
    if(IsPlayerNPC(playerid))return NPCVehicleLink(playerid);


    Und die Funktion dazu sieht so aus:


    stock NPCVehicleLink(playerid)
    {
    if(IsPlayerNPC(playerid))
    {
    for(new i;i<MAX_NPCS;i++)
    {
    if(!strcmp(SpielerName[playerid], npc_data[i][npc_name], true))
    {
    SetPlayerVirtualWorld(playerid,0);
    SetPlayerInterior(playerid,0);
    PutPlayerInVehicle(playerid, npc_data[i][npc_veh_var], 0);
    print("Wird ausgeführt!");
    }
    }
    }
    return 1;
    }


    Die print Zeile erscheint 2x, daher wird die Funktion auch ausgeführt und die Abfragen nach dem connecten
    sollten funktionieren.
    Trotzdem werden die Bots nicht in ihr Fahrzeug gepackt.


    Bitte helft mir :D

  • Warum machst du in der Schleife alles mit playerid?
    Das kann doch nie funktionieren..


    Code
    if(!strcmp(SpielerName[playerid], npc_data[i][npc_name], true))
    			{
    			    SetPlayerVirtualWorld(playerid,0);
    			    SetPlayerInterior(playerid,0);
    	 			PutPlayerInVehicle(playerid, npc_data[i][npc_veh_var], 0);
    	 			print("Wird ausgeführt!");
    	  		}


    alle "playerid"'s mit "i" ersetzen.

    Zitat von Sharpadox

    Echt fantastisch, dieses "Google" ^^



  • Das playerid bezieht sich auf die playerid, für die die public ausgeführt wird.
    Die Schleife ist nur da, um den SpielerName mit allen aus der Liste (MAX_NPCS) zu vergleichen und wenn es den
    Namen gibt, wird derjenige in das Fahrzeug gesetzt, das die ID "i" aus der Schleife hat.


    *Edit*


    Versteht zumindest irgendjemand das System?
    Hab bis jetzt noch nirgends eine Lösung für dieses Problem gefunden, irgendjemand muss sich doch gut
    mit Bots auskennen..


    Aussehen tut das ganze so, vielleicht besser zur Verständlichkeit mit MAX_NPCS


    enum server_bots
    {
    Float:npc_x,
    Float:npc_y,
    Float:npc_z,
    npc_name[MAX_PLAYER_NAME],
    npc_script_name[32],
    npc_veh_var,
    npc_veh_id
    }
    new npc_data[MAX_NPCS][server_bots] = {
    {1731.0669,-1951.1475,14.1172,"NPC_Zug","Zug",npc_train,538},
    {-2006.5000,137.9100,27.9973,"NPC_Tram","Tram",npc_tram,449}
    };


    stock CreateNPCVehicles(){for(new i;i<MAX_NPCS;i++){npc_data[i][npc_veh_var] = AddStaticVehicleEx(npc_data[i][npc_veh_id],npc_data[i][npc_x],npc_data[i][npc_y],npc_data[i][npc_z],0,-1,-1,-1);}}
    stock NPCConnect(){for(new i;i<MAX_NPCS;i++){ConnectNPC(npc_data[i][npc_name],npc_data[i][npc_script_name]);}}