Teamkill kann nicht verhindert werden !??!? HILFE!

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
  • Ich dreh am Rad!


    Ich habe ein großes Problem: Unsere Entwicklergruppe kommt nicht mehr weiter!
    Wir sind 7 Leute. Ich und noch ein anderer sind für die Abteilung Server-Programmierung
    zuständig.
    Folgende Situation:


    Zwei Leute im SELBEN TEAM beschiessen sich.
    Einer verliert Health, der andere nicht.


    Ich dachte, zwei Leute im selben Team können sich nicht killen. ?!?!?
    Bisher kann ich dieses gravierende Problem nut mit einem Kick(); bei OnPlayerDeath(...); lösen.
    Aber auf Dauer wird das KEINE Lösung sein.


    Was ist das Problem ??? Was mache ich falsch ?



    // Spieler spawnt
    public OnPlayerRequestClass ( playerid, classid )
    {
    switch(classid)
    {
    case 0:
    {
    // National Guard
    SetPlayerPos(playerid,-1313.4744,506.2922,11.1953);
    SetPlayerCameraPos(playerid,-1305.4744,506.2922,13.0);
    SetPlayerCameraLookAt(playerid,-1313.4744,506.2922,11.1953);


    /* HIER liegt das Problem. Das Team wird beim selectieren der Teams gesetzt */
    SetPlayerTeam(playerid, ARMY);


    // Alte Texte Zerstören
    CleanUpPlayer(playerid);



    // Neuen Text zeichnen
    TextDrawShowForPlayer(playerid, Teams[0]);
    TextDrawShowForPlayer(playerid, Desc[0]);
    TextDrawShowForPlayer(playerid, Weapons[0]);
    TextDrawShowForPlayer(playerid, WeapDesc[0]);
    }

    "Mathematik ist dein FEIND! Also solltest du so viel wie möglich über ihn wissen !! !"

  • Das musst du unter OnPlayerDeath selber abfragen , Team Variable mit einer Nummer für ein bestimmtes Team belegen natürlich Spieler Variable & abfragen
    ob killerid & spielerid das gleiche Team haben

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Ich.. verstehe nicht ganz ?
    Uhh... Das Callback public OnPlayerDeath(playerid, killerid, reason); wird ja nur gestartet, wenn ein Spieler bereits Tot ist.
    Wenn ich im Callback return false; einbaue, beeinflusst das nicht den Tod des Spielers. Der ist ja schon geschehen.
    Mit OnPlayerDeath() kann ich kills nicht kontrollieren.


    Noch jemand eine Idee, warum dieser Blöde Teamkillbug auftritt :(

    "Mathematik ist dein FEIND! Also solltest du so viel wie möglich über ihn wissen !! !"

  • Ich habs.


    Ich habe das Problem mit einem einfachen Trick gelöst:


    Code
    public OnPlayerStreamIn(playerid,forplayerid)
    {
    	if(GetPlayerTeam(playerid)==GetPlayerTeam(forplayerid) 
    	{
        	SetPlayerTeam(playerid,GetPlayerTeam(forplayerid));
         	SetPlayerTeam(forplayerid,GetPlayerTeam(playerid));
    	}
    	return 1;
    }


    Informatisch gesehn ist das wohlmöglich ein Verbrechen, aber egal.
    (Es funktioniert :)

    "Mathematik ist dein FEIND! Also solltest du so viel wie möglich über ihn wissen !! !"