NPC mit Befehl Kicken

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
  • Also wieder ich ;)
    Nun ich habe mal eine Frage: Wie kann ich neinen NPC kicken wenn ich neben im stehe und /(t)erminate also /t eingebe
    also wenn ich mich neben einen NPC stelle der nehmen wir mal an "James" heiß und /t eingebe soll er verschwinden (er wird gekickt)
    Also ich habe mal das hier Probiert aber es werden dann alle Spieler auf dem server gekickt :S


    -------------------------------------------------------------------------------------------------------------------------



    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/t", cmdtext, true, 10) == 0)
    {
    for(new i = 0; i <MAX_PLAYERS; i++)
    {
    new name[32];
    GetPlayerName(i,name,32);


    new Float:x,Float:y,Float:z;
    GetPlayerPos(i,x,y,z);


    if(IsPlayerInRangeOfPoint(i,30,x,y,z))
    {
    Kick(i);
    }
    }
    }
    return 0;
    }


    -------------------------------------------------------------------------------------------------------------------------



    Könnt ihr mir da Weiter helfen?
    Danke für hilfreiche Antworten

  • benutze doch den schönene Tag:

    Code
    [pwn][/pwn]


    Ansonsten Rate ich dir:
    for(new i = 0; i < MAX_PLAYERS; i++){
    if(IsPlayerNPC(i)){
    Kick(i);
    }
    }


    //Edit neben dir:
    for(new i = 0; i < MAX_PLAYERS; i++){
    new Float:x, Float:y, Float:z;
    GetPlayerPos(i, x, y, z);
    If(IsPlayerInRangeOfPoint(playerid, 30.0, x, y, z) && IsPlayerNPC(i)){
    Kick(i);
    }
    }

  • Nope hab 5 gemacht und alle Kriegs helikopter die von NPCs gesteuert wurden sind runtergefallen :(


    //Edit
    Wenn das Wichtig ist, meine NPCs heißen:



    ConnectNPC("James_Becker","James2"); ConnectNPC("Tim","tim"); ConnectNPC("James","James"); ConnectNPC("James_Braun","James3"); ConnectNPC("James_kapital","James4"); ConnectNPC("James_luwies","James5"); ConnectNPC("James_Gitschar","James6"); ConnectNPC("James_lewi","James7");

  • Ist zwar nicht wichtig aber man könnte es so lösen:
    defines:
    #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1


    Bei OnPlayerCommand:
    dcmd(terminate, 4, cmdtext);


    Nirgenswo, sondern irgendwo im Skript:
    dcmd_terminate(playerid,params[])
    {
    new name[MAX_PLAYER_NAME], Float:x, Float:y, Float:z;
    if(sscanf(params, "s", name))
    {
    return SendClientMessage(playerid,0xfffffff,"Nutze: /terminate [name]");
    }
    else{//Optionale Admin Definition mit else if(AdminDefinition(playerid)){
    for(new i = 0; i < MAX_PLAYERS; i++){
    new psname[MAX_PLAYER_NAME];
    GetPlayerName(i, psname, sizeof psname);
    if(strcmp(name, psname)==0){
    Kick(i);
    }
    }
    return 1;
    }

  • ERROR:



    C:\Users\peter\Desktop\GTA SA\gamemodes\GhostMatch(2).pwn(236) : error 017: undefined symbol "dcmd_terminate"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    Geht das denn nicht auch mit dem Include: ocmd?

  • Ist zwar nicht wichtig aber man könnte es so lösen:
    defines:
    #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1


    Bei OnPlayerCommand:
    dcmd(terminate, 9, cmdtext);


    Nirgenswo, sondern irgendwo im Skript:
    dcmd_terminate(playerid,params[])
    {
    new name[MAX_PLAYER_NAME], Float:x, Float:y, Float:z;
    if(sscanf(params, "s", name))
    {
    return SendClientMessage(playerid,0xfffffff,"Nutze: /terminate [name]");
    }
    else{//Optionale Admin Definition mit else if(AdminDefinition(playerid)){
    for(new i = 0; i < MAX_PLAYERS; i++){
    new psname[MAX_PLAYER_NAME];
    GetPlayerName(i, psname, sizeof psname);
    if(strcmp(name, psname)==0){
    Kick(i);
    }
    }
    return 1;
    }

  • hab das Problem jetzt selbst hinbekommen :D
    für alle die wissen wollen wie:




    public OnPlayerCommandText(playerid, cmdtext[])
    {


    if (strcmp("/t", cmdtext, true, 10) == 0)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {


    new Float:x,Float:y,Float:z;
    new Float:x2,Float:y2,Float:z2;


    GetPlayerPos(i,x,y,z);
    GetPlayerPos(playerid,x2,y2,z2);


    if(IsPlayerInRangeOfPoint(playerid,5,x,y,z)&& IsPlayerNPC(i)&& IsPlayerInRangeOfPoint(i,5,x2,y2,z2))
    {
    Kick(i);
    }
    }


    return 1;
    }
    }

    Einmal editiert, zuletzt von Timtrucker ()