Skin ID rausfinden bei Schuss

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
  • Wie mache ich das?
    Sagen wir wenn Player A schießt auf Skin ID 11 wie frage ich das ab ob spieler A auf eine Skin ID 11 schießt?


    Z.B. Sowas
    if(newstate == KEY_FIRE)
    {
    if(GetPlayerSkin(giveplayerid))
    {
    SendClientMessage(playerid,COLOR_GREEN,"Du darfst nicht dein Team anschießen");
    SetPlayerHealth(playerid,Denschaden,den er bekommen hat);
    }
    else
    {
    //nichts
    }
    }

    Einmal editiert, zuletzt von Blood. ()

  • if(newstate == KEY_FIRE)
    {
    if(GetPlayerTeam == 1)
    {
    SendClientMessage(playerid,COLOR_GREEN,"Du darfst nicht dein Team anschießen");
    SetPlayerHealth(playerid,Denschaden,den er bekommen hat);
    }
    else
    {
    //nichts
    }
    }
    würde das so gehen?

  • Nein, du weißt ja nicht, auf wen er schiesst.
    Der der neuen Callback in 0.3d ist es jedoch möglich.
    public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid)

    Kalcor: "... it makes the game look like it's not GTA. This mod is called San Andreas Multiplayer. It's not a custom game engine which you can script..."

  • auf wen er schiesst.


    Das will ich ja abfragen.
    Ich möchte nicht auf 0.3d umsteigen.. bis die Final Version rauskommt


    new tmp[256];
    if(newstate == KEY_FIRE)
    {
    new giveplayerid = ReturnUser(tmp);
    if(GetPlayerTeam(playerid) == 1)
    {
    if(GetPlayerTeam(giveplayerid) == 1)
    {
    SendClientMessage(playerid,0x008000AA,"Du darfst nicht den Teammitglied beschießen");
    }
    }
    }
    dieser Code?
    edit: Total falsch der code Fail ;D

  • Das ist totaler Müll. Du kannst mit 0.3c nur mit Vektoren arbeiten, google da am besten.

    Kalcor: "... it makes the game look like it's not GTA. This mod is called San Andreas Multiplayer. It's not a custom game engine which you can script..."

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

  • Ya ich wollte auch mit gTeam arbeiten..
    Aber wie frage ich ab ob TEAM_GW1 auf TEAM_GW1 schießt
    und nicht auf TEAM_GW2?

  • Kannst auch wie gesagt die Spieler in Teams packen dann nehmen sie keinen Schaden, es kommt dann zwar keine Nachricht aber bevor du dich da mit vektorenrechnungen umbringst wäre das eine gute alternative...


    das was du schreibst hört sich gut an aber wie mach ich das den das er dan kein leben verlirt und wo mach mal code als beispiel plse

  • Ich würd sagen wenn du einen Befehl machst, das er kein Leben verliert, verliert er nie leben. Deswegen sollte man eher mit SetHealt bzw. GiveHealt oder wie das heißt ^^ arbeiten.



    Die Frage ist, wer ist wer. Also, rein theoretisch, müsste er bei einem Treffer Prüfen in welchem Team er ist.
    Ist es Team A SetHealth, ist es Team B dann passiert nichts bzw. zieht es HP ab.


    Die Frage ist eher wie man das Scriptet. Allerdings bin ich da überfragt. Am besten du Fragst mal wiki. oder "weiße" User ^^


    Und wenn du eine Art DM Server machen willst, dann arbeitest du ja wahrscheinlich eh mit gTeam oder?


    Lg byBSE

  • Die entsprechenden Antworten wurden bereits geliefert. Ich zähls hier nochmal auf:


    Das Problem ist nicht die Hp wieder hochzusetzen oder eine Message zu schicken. Das Problem liegt darin, dass man um einen Teamvergleich anstellen zu können den Schützen, dessen ID, wissen muss.
    In 0.3d Soll dies dann ja möglich werden mit dem Callback "OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid) ", wodurch man dann den Spieler issuerid (Schützen) herausbekommt.


    Ohne auf 0.3d zu wechseln muss man mit Vektoren, also verschiedenen Blickwinkeln und Winkeln rechnen und so den Schützen über Positionen herausfinden. Das ist aber an sich schon mal echt nicht leicht.


    Die beste und einfachste Alternative ohne auf 0.3d zu wechseln liegt da wirklich in den Teams, welche serverbasiert keinen Schaden nehmen können.


    Dazu kann parallel auch ein gTeam System laufen.
    Man muss lediglich zur Teamzuweisung des gTeams auch ein entsprechendes ServerTeam zuweisen.


    Also etwa so:



    gTeam[playerid] = 0;
    SetPlayerTeam(playerid,0); // alternativ: SetPlayerTeam(playerid,gTeam[playerid]);


    // oder


    gTeam[playerid] = 1;
    SetPlayerTeam(playerid,1); // alternativ: SetPlayerTeam(playerid,gTeam[playerid]);


    Wichtig ist, dass man vorher die Anzahl der Teams per



    SetTeamCount(amount) // z.B. SetTeamCount(2);


    festlegt.



    Also das sind so die möglichkeiten die man momentan hat.


    MFG
    Hagi

  • Und sowas?


    if(NoDM_HOLDING(KEY_FIRE))
    {
    for(new gg=0;gg!=MAX_PLAYERS;gg++)
    {
    if(IsPlayerAimingAtPlayer(playerid,gg))
    {
    if(GetPlayerTeam(playerid) == GetPlayerTeam(gg))
    {
    SendClientMessage(playerid,ROT,"Du darfst deinen Kameraden nicht anschießen.");
    }
    }
    break;
    }
    }