Problem mit Animationen

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
  • Hi,


    ich bin am Verzweifeln. Ich habe Probleme mit Animationen.


    1.


    Bei mir sind SPECIAL_ACTION_DANCE1 - SPECIAL_ACTION_DANCE3 irgendwie die selben. (SetPlayerSpecialAction)
    Wenn ich z.B. /dance 1 eingebe kommt der erste Tanz. Gebe ich /dance 3 ein ist das genau der selbe wie der erste. Erst wenn ich dann /dance 4 eingebe ist es ein anderer.
    Woran liegt das?


    2.


    Manche Animationen werden komischerweise nicht gestoppt.
    Ich mache z.B. ApplyAnimation(playerid,"PED","WALK_DRUNK",4.1,1,1,1,1,1,0);
    Dann wird ein Timer gestartet der nach 10 Sec alles beenden soll:


    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_NONE);
    ClearAnimations(playerid);


    Aber der Spieler geht immer noch so weiter :/ (Ich bin mir sicher das der Timer aufgerufen wird da andere Aktionen in dem Timer ausgeführt werden)


    Hat einer Lösungen?


  • Zu 1. , ich glaube , dass 1 und 3 auch die gleichen sind. Denn auf jedem Server wo ich bis jetzt gespielt habe , und wo man /dance [1-4] machen konnte , sind 1 und 3 die gleichen ;)


    2. , ich habe mich zwar noch nicht so mit Animationen beschäftig , aber versuch mal in zu freezen und wieder unfreezen ^^

  • 1. Das ist aber sehr komisch. Ich kenne wiederum einen Server wo das verschiedene Stile sind.
    2. Das mit dem freezen hat leider nicht funktioniert.

  • if (strcmp("/dance 1",cmdtext,true, 9) == 0) {
    ClearAnimations(playerid);
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_NONE);
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE1);
    return 1;
    }
    if (strcmp("/dance 2",cmdtext,true, 9) == 0) {
    ClearAnimations(playerid);
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_NONE);
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE2);
    return 1;
    }
    if (strcmp("/dance 3",cmdtext,true, 9) == 0) {
    ClearAnimations(playerid);
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_NONE);
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE3);
    return 1;
    }
    if (strcmp("/dance 4",cmdtext,true, 9) == 0) {
    ClearAnimations(playerid);
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_NONE);
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE4);
    return 1;
    }


    Und in dem Timer der ClearAnimations ausführt steht:


    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_NONE);
    SetPlayerDrunkLevel (playerid, 0);
    ClearAnimations(playerid);

  • Zu 1.: die Tänze 1-3 unterscheiden sich nicht im Anfang, sondern in den Bewegungen, die du als Spieler selbst tun kannst.
    Probier es mal aus: verwende /dance 1 und benutze dann die Tasten "W", "A", "S", "D" und "Leertaste". Probiere dasselbe mit den anderen Tänzen,
    du wirst feststellen, dass sie alle andere Bewegungen bieten.


    Zu 2.: so sollte es funktionieren:


    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_NONE);
    SetPlayerDrunkLevel (playerid, 0);
    ClearAnimations(playerid);
    ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.0, 0, 0, 0, 0, 0, 0);//Es wird einfach eine kurze Animation ausgeführt, die zwar nicht zu sehen ist, die vorherige Animation aber ausser Kraft setzt, diese MUSS nach "ClearAnimations" aufgerufen werden.


    Hoffe ich konnte dir damit helfen.


    BlackLegend


    (e): Code korrigiert.