Tazer für mehrere Fraktionen

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 liebe Community,


    Ich habe ein kleiner Problemchen..
    Also, ich habe vor zwei Tagen nach einem Filterscript gesucht, in dem die SD Pistol als Tazer genutzt werden kann. Das habe ich zum Schluss dann auch gefunden, da ich aber so gut wie keine Erfahrung im Scripten habe, tauchten einige kleine Probleme auf, auf die mir der Ersteller des FS bis jetzt noch nicht antworten konnte.


    - Es kommen keine Errors ;)


    Problem Nummer 1:
    Ich habe die FraktionsID eingetragen, gehe dann aber Ingame probiere aus ob es geht. Es geht aber leide nicht, es kommt jedes mal die Meldung "Du bist kein Bulle". Ich weiss halt nicht woran das liegt..



    Problem Nummer 2:
    Ich wollte die Tazerfunktion halt für das LSPD,LVPD und die Army haben, (FrakID 1,2,3) ich weiss aber nicht wo ich die eintragen soll, weill jedes mal Warnings kommen, wenn ich die Frakids einfach nach einander aufliste/schreibe.



    Hier ist das FS



    //Ein Tazer Script von Piet_Meier
    //mit 15sek Tazer
    //15 sek anti schuss
    //und AntiTazerHack
    #include <a_samp>
    #define F 0xFFFFFFFF



    #if defined FILTERSCRIPT


    public OnFilterScriptInit()
    {
    print("\nTazer Special by Piet_Meier\n");
    SetTimer("AntiHack", 1000, 1);
    return 1;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }


    #endif


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/tazer", cmdtext, true) == 0)
    {
    if(!isPlayerInFrakt(playerid, 1))return SendClientMessage(playerid, F, "Du bist kein Bulle");
    if(GetPVarInt(playerid, "Waffehabe")==1)return SendClientMessage(playerid, F, "Warte 15 sek");
    GivePlayerWeapon(playerid, 23, 1);
    SetPVarInt(playerid, "Tizer", 1);
    return 1;
    }
    return 0;
    }


    public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
    {
    if(issuerid!=INVALID_PLAYER_ID)//ist der betroffende nicht du
    {
    if(weaponid==23)//welche waffe also jetzt die 23 Silencer
    {
    if(isPlayerInFrakt(playerid, 1))//Deine Fraktionsvariable hier eintragen
    {
    if(GetPVarInt(playerid, "Tizer")==1)
    {
    TazerTake(playerid, issuerid);//gehe zu stock TazerTake
    }
    }
    }
    }
    return 1;
    }


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys==KEY_FIRE)
    {
    if(GetPVarInt(playerid, "Tizer")==1)
    {
    SetPVarInt(playerid, "Tizer", 0);
    SetTimerEx("Waffe", 15000, 0, "i", playerid);
    }
    }
    return 1;
    }


    forward Waffe(i);
    public Waffe(i)
    {
    SetPVarInt(i, "Tizer", 1);
    GivePlayerWeapon(i, 23, 1);
    SetPVarInt(i, "Waffehabe", 0);
    return 1;
    }


    forward AntiHack();
    public AntiHack()
    {
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(GetPVarInt(i, "Tazered")==1)
    {
    TogglePlayerControllable(i, 0);
    }
    }
    }
    return 1;
    }


    stock TazerTake(playerid, id)//hier der TazerTake Stock
    {
    new P[128], T[128];
    format(P, 128, "Du Tazerst %s für 15 sek", SpielerName(id));
    format(T, 128, "%s Tazert dich für 15 sek", SpielerName(playerid));
    SendClientMessage(playerid, F, P);
    SendClientMessage(id, F, T);
    SetPVarInt(id, "Tazered", 1);
    TogglePlayerControllable(id, 0);
    SetTimerEx("Tazer", 15000, 0, "i", id);
    return 1;
    }


    forward Tazer(i);
    public Tazer(i)
    {
    SetPVarInt(i, "Tazered", 0);
    TogglePlayerControllable(i, 1);
    return 1;
    }


    stock SpielerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }


    stock isPlayerInFrakt(playerid,fraktid)
    {
    if(GetPVarInt(playerid,"Fraktion")==fraktid)return 1;
    return 0;
    }



    Ich bedanke mich bereits jetzt für hilfreiche Antworten! :)



    Mit freundlichen Grüßen
    Jumpin


    Einmal editiert, zuletzt von Jumpin ()

  • //Ein Tazer Script von Piet_Meier//mit 15sek Tazer//15 sek anti schuss//und AntiTazerHack#include <a_samp>#define F 0xFFFFFFFF


    #if defined FILTERSCRIPT
    public OnFilterScriptInit(){ print("\nTazer Special by Piet_Meier\n"); SetTimer("AntiHack", 1000, 1); return 1;}
    public OnFilterScriptExit(){ return 1;}
    #endif
    public OnPlayerCommandText(playerid, cmdtext[]){ if (strcmp("/tazer", cmdtext, true) == 0) { if(!isPlayerInFrakt(playerid, 1))return SendClientMessage(playerid, F, "Du bist kein Bulle"); if(GetPVarInt(playerid, "Waffehabe")==1)return SendClientMessage(playerid, F, "Warte 15 sek"); GivePlayerWeapon(playerid, 23, 1); SetPVarInt(playerid, "Tizer", 1); return 1; } return 0;}
    public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid){ if(issuerid!=INVALID_PLAYER_ID)//ist der betroffende nicht du { if(weaponid==23)//welche waffe also jetzt die 23 Silencer { if(isPlayerInFrakt(playerid, 1))//Deine Fraktionsvariable hier eintragen { if(GetPVarInt(playerid, "Tizer")==1) { TazerTake(playerid, issuerid);//gehe zu stock TazerTake } } } } return 1;}
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys){ if(newkeys==KEY_FIRE) { if(GetPVarInt(playerid, "Tizer")==1) { SetPVarInt(playerid, "Tizer", 0); SetTimerEx("Waffe", 15000, 0, "i", playerid); } } return 1;}
    forward Waffe(i);public Waffe(i){ SetPVarInt(i, "Tizer", 1); GivePlayerWeapon(i, 23, 1); SetPVarInt(i, "Waffehabe", 0); return 1;}
    forward AntiHack();public AntiHack(){ for(new i=0; i<GetMaxPlayers(); i++) { if(IsPlayerConnected(i)) { if(GetPVarInt(i, "Tazered")==1) { TogglePlayerControllable(i, 0); } } } return 1;}
    stock TazerTake(playerid, id)//hier der TazerTake Stock{ new P[128], T[128]; format(P, 128, "Du Tazerst %s für 15 sek", SpielerName(id)); format(T, 128, "%s Tazert dich für 15 sek", SpielerName(playerid)); SendClientMessage(playerid, F, P); SendClientMessage(id, F, T); SetPVarInt(id, "Tazered", 1); TogglePlayerControllable(id, 0); SetTimerEx("Tazer", 15000, 0, "i", id); return 1;}
    forward Tazer(i);public Tazer(i){ SetPVarInt(i, "Tazered", 0); TogglePlayerControllable(i, 1); return 1;}
    stock SpielerName(playerid){ new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); return name;}
    stock isPlayerInFrakt(playerid,fraktid){ if(GetPVarInt(playerid,"Fraktion")==fraktid)return 1; return 0;}



    Irgentwie schaut es bei den anderen immer anders aus :<

  • Tut mir leid dass ich mich nicht zurück gemeldet habe (hatte gestern zu tun).
    Das Problem liegt daran dass dein Script alles per Enumerator speichert und nicht per PVar.
    Also müsstest du diesen FIlterscript in deine Gamemode einbinden und die isPlayerInFrakt abändern.

  • Probiers mal so
    if(strcmp(cmd, "/tazer", true) ==0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(gTeam[playerid] == 2 || IsACop(playerid) || PlayerInfo[playerid][pLeader] == 24 || PlayerInfo[playerid][pMember] == 24 || PlayerInfo[playerid][pLeader] == 7)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    SendClientMessage(playerid, COLOR_GREY, " In einem Auto kann der Befehl nicht benutzt werden!");
    return 1;
    }
    new suspect = GetClosestPlayer(playerid);
    if(IsPlayerConnected(suspect))
    {
    if(PlayerCuffed[suspect] > 0)
    {
    SendClientMessage(playerid, COLOR_GREY, " Spieler ist schon gefesselt !");
    return 1;
    }
    if(GetDistanceBetweenPlayers(playerid,suspect) < 5)
    {
    if(gTeam[suspect] == 2)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du kannst keinen Beamten Tazern! !");
    return 1;
    }
    if(IsPlayerInAnyVehicle(suspect))
    {
    SendClientMessage(playerid, COLOR_GREY, " Der Betroffene ist in einem Fahrzeug !");
    return 1;
    }
    if(TazerBereit[playerid] == 0)
    {
    SendClientMessage(playerid, COLOR_GREY, " Dein Tazer ist noch nicht aufgeladen! (ca. 30 Sekunden)");
    return 1;
    }
    if(random(3) == 0)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du hast ihn nicht getroffen!");
    return 1;
    }
    GetPlayerName(suspect, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "* %s hat dich mit einem Stromschocker niedergestreckt.", sendername);
    SendClientMessage(suspect, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), "Du hast %s mit einem Stromschocker niedergestreckt.", giveplayer);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), "* %s holt seinen Stromschocker raus und streckt %s nieder.", sendername ,giveplayer);
    ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
    GameTextForPlayer(suspect, "~r~Geschockt", 2500, 3);
    ApplyAnimation(suspect, "WUZI", "CS_Dead_Guy", 1.0, 0, 0, 0, 0, 0);
    FreezePlayer(suspect);
    PlayerCuffed[suspect] = 1;
    PlayerCuffedTime[suspect] = 20 + random(10);
    TazerBereit[playerid] = 0;
    SetTimerEx("TazerBereitForPlayer",30000,0,"i",playerid);
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Spieler ist nicht in deiner Nähe!");
    return 1;
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Du bist kein Beamter !");
    }
    }
    return 1;
    }

  • @Mareck Ich suche ein Filterscript, bei dem die Silenced Pistol als Tazer benutzt wird. Deine Version ist leider keine mit einer SD Pistol.


    @Piet_Meier du hast mittlerweile ja mitbekommen, dass ich so gut wie keine Ahnung vom Scripten habe, könntest du eventuell eine für mich angepasste Version machen?


    - IsPlayerCop ist im Script vorhanden


    Falls du noch die Fraktionsids benötigst, die auf den Tazer zugriff haben sollen: FrakID 1,2 und 3



    Hoffentlich klappt das, freue mich schon! :)


    Mit freundlichen Grüßen
    Jumpin


    Einmal editiert, zuletzt von Jumpin ()