Tazer System per Deagle

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
  • Hey :love:


    Wollte fragen da ich momentan keinen zum Testen habe ob dieser Code denn gehen würde


    if(newkeys == KEY_YES && IsACop(playerid) && sStats[playerid][sDuty] != 0)
    {
    new tid, Float:Distance;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(i==INVALID_PLAYER_ID || sStats[i][Eingeloggt] == 0 || IsACop(i), GetPVarInt(i, "Tazed") != 0)continue;
    GetPlayerPos(i, ipX[i], ipY[i], ipZ[i]);
    if(!IsPlayerAimingAt(playerid, ipX[i], ipY[i], ipZ[i], 1.4))continue;
    Distance = GetPlayerDistanceFromPoint(playerid, ipX[i], ipY[i], ipZ[i]);
    tid = i;
    }
    if(Distance > 4)return SendClientMessage(playerid, Rot, "Fehler: Du bist zu weit vom Spieler entfernt!");
    Tazer(tid, GetName(playerid));
    return 1;
    }


    //DistanceCameraTargetToLocation
    stock Float:DistanceCameraTargetToLocation(Float:CamX, Float:CamY, Float:CamZ, Float:ObjX, Float:ObjY, Float:ObjZ, Float:FrX, Float:FrY, Float:FrZ)
    {
    new Float:TGTDistance;


    TGTDistance = floatsqroot((CamX - ObjX) * (CamX - ObjX) + (CamY - ObjY) * (CamY - ObjY) + (CamZ - ObjZ) * (CamZ - ObjZ));


    new Float:tmpX, Float:tmpY, Float:tmpZ;


    tmpX = FrX * TGTDistance + CamX;
    tmpY = FrY * TGTDistance + CamY;
    tmpZ = FrZ * TGTDistance + CamZ;


    return floatsqroot((tmpX - ObjX) * (tmpX - ObjX) + (tmpY - ObjY) * (tmpY - ObjY) + (tmpZ - ObjZ) * (tmpZ - ObjZ));
    }
    //Abfragen ob er auf eine Bestimme stelle geschossen hat
    stock IsPlayerAimingAt(playerid, Float:pXx, Float:pYy, Float:pZz, Float:radius)
    {
    new Float:cx,Float:cy,Float:cz,Float:fx,Float:fy,Float:fz;
    GetPlayerCameraPos(playerid, cx, cy, cz);
    GetPlayerCameraFrontVector(playerid, fx, fy, fz);
    return (radius >= DistanceCameraTargetToLocation(cx, cy, cz, pXx, pYy, pZz, fx, fy, fz));
    }

  • Wieso so kompliziert? Mach es einfach so das du OnPlayerGivePlayerDamage nutzt ?


    Er soll ja nicht draufschiesen sondern nur drauf zielen und dann z drücken


    //Edit:


    if(newkeys == KEY_YES && IsACop(playerid) && sStats[playerid][sDuty] != 0 && GetPlayerWeapon(playerid) == 24 && HOLDING(KEY_HANDBRAKE))
    {
    new tid, Float:Distance;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(i==INVALID_PLAYER_ID || sStats[i][Eingeloggt] == 0 || IsACop(i), GetPVarInt(i, "Tazed") != 0)continue;
    GetPlayerPos(i, ipX[i], ipY[i], ipZ[i]);
    if(!IsPlayerAimingAt(playerid, ipX[i], ipY[i], ipZ[i], 1.4))continue;
    Distance = GetPlayerDistanceFromPoint(playerid, ipX[i], ipY[i], ipZ[i]);
    tid = i;
    }
    if(Distance > 4)return SendClientMessage(playerid, Rot, "Fehler: Du bist zu weit vom Spieler entfernt!");
    Tazer(tid, GetName(playerid));
    return 1;
    }

  • Diese Aussagen verstehe ich indirekt nicht , ich sollte doch lieber continue verwenden da es den jeweiligen spileler überspringt und zum nächsten übergeht ?


    Ja, falls du jedoch den Spieler gefunden hast, brauchst du ja nicht die nächsten Spieler abzufragen, deswegen solltest du ein Break benutzen.

  • public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
    {
    if(issuerid != INVALID_PLAYER_ID)
    {
    if(weaponid == 24)return TogglePlayerControllable(playerid,1); //Wenn Deagle -> Freezen
    }
    return 1;
    }

  • er will aber nicht das der Spieler leben verliert, wobei man das Leben des Spielers abfragen kann und nach dem Schuss direkt wieder geben kann.

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