Pickup und Explosion erstellen

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
  • Hallo Leute,
    ich wollte für meinen Server ein Befehl erstellen, womit man eine Bombe legen kann, die dann explodiert.
    Das habe ich zurzeit so versucht:


    if(strcmp(cmdtext,"/bomb",true)==0){
    if(gTeam[playerid]==TEAM_TERRORIST)
    {
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    SetPlayerWantedLevel(playerid,2);
    CreatePickup(1252,12,X,Y,Z,0);
    }
    else
    {
    SendClientMessage(playerid,0xFF0000FF,"Du bist nicht bei den Terroristen!");
    }
    return 1;
    }


    Die Probleme sind allerdings:

    • Alle Teams können Bomben legen
    • Bombe wird zwar gelegt, allerdings sollte sie nach meiner Quelle: Type: 12 Blows up a few seconds after being created. Dieses passiert allerdings nicht, ich kann Ewigkeiten warten und es explodiert nicht!
    • Das Pickup wird scheinbar gelegt(Animation sieht man), allerdings sieht man das Pickup nicht :-o Es liegt nichts auf dem Boden.
    • Wanted Level wird auch nicht vergeben(sehe keine Sterne oben bei der Lebensleiste)

    Ich hoffe Ihr könnt mir helfen ;)


    Gruß,
    Nicorotom


    //EDIT:
    Das komische ist, wenn ich das ganze per Dialogmenü mache, dann funktioniert das Prima. Allerdings will ich das per Command haben :-/

    2 Mal editiert, zuletzt von Nicorotom ()

  • Es liegt am gl_actions, mach die /bomb animation raus, oder lösch da filterscript. die commands überschneiden sich, bei dem code würde nie eine animation kommen!

  • Ok soweit klappt das, nun will ich, wenn das Pickup erstellt ist, dass nach 5 Sekunden die Bombe explodiert. Dies würde ich dann mit CreateExplosion machen.
    Allerdings finde ich keinen Befehl, die Position eines Pickups abzufragen :-/
    Könnt ihr mir bitte den Code sagen?
    Kriege das mit dem Timer nicht so wirklich hin.

  • oben new bombpickup[MAX_PLAYERS];
    beim befehl bombpickup[playerid] = CreatePickup...


    und dann irgendein timer wo ne explosion da gemacht wird
    um die bombe wegzumachen nach der explosion einfach DestroyObject(bombpickup[playerid]);

  • Folgende Fehler:
    D:\gta server\0.3\gamemodes\udm.pwn(269) : error 029: invalid expression, assumed zero
    D:\gta server\0.3\gamemodes\udm.pwn(269) : error 029: invalid expression, assumed zero
    D:\gta server\0.3\gamemodes\udm.pwn(269) : warning 215: expression has no effect
    D:\gta server\0.3\gamemodes\udm.pwn(269) : error 001: expected token: ";", but found "]"
    D:\gta server\0.3\gamemodes\udm.pwn(269) : fatal error 107: too many error messages on one line


    Zeile:
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    SetPlayerWantedLevel(playerid,GetPlayerWantedLevel(playerid)+2);
    bombe[playerid] = CreatePickup(1252,1,X,Y,Z,0);


    Kannste mir denn erklären, wie ich die Position des Pickups abfrage? Weil ich ja keine Koordinate angebe.


    //EDIT:
    Ok, die Position habe ich schonmal abgefragt.
    Allerdings tauchen immernoch die Errors von oben auf!
    Sonst funktioniert alles soweit, würden diese Errors nicht auftreten :-/

    Einmal editiert, zuletzt von Nicorotom ()

  • Kann mir keiner bei den Fehlern helfen?


    //EDIT:


    Hier nochmal die Fehler:
    D:\gta server\0.3\gamemodes\udm.pwn(270) : error 029: invalid expression, assumed zero
    D:\gta server\0.3\gamemodes\udm.pwn(270) : error 029: invalid expression, assumed zero
    D:\gta server\0.3\gamemodes\udm.pwn(270) : warning 215: expression has no effect
    D:\gta server\0.3\gamemodes\udm.pwn(270) : error 001: expected token: ";", but found "]"
    D:\gta server\0.3\gamemodes\udm.pwn(270) : fatal error 107: too many error messages on one line


    Und die Zeilen:
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    SetPlayerWantedLevel(playerid,GetPlayerWantedLevel(playerid)+2);
    bombe[playerid] = CreatePickup(1252,1,X,Y,Z,0);
    bombetimer = SetTimer("bombe",5000,0);


    //EDIT2:
    Brauche wirklich dringend Hilfe!
    Will es heute endlich schaffen!

    5 Mal editiert, zuletzt von Nicorotom ()

  • Doch,
    new bombpickup[MAX_PLAYERS]; das habe ich als new bombe[MAX_PLAYERS]; reingeschrieben und bombetimer, so heißt mein timer denn ich einsetze um nach 5 sekunden eine explosion beim pickup erscheinen zu lassen.
    bombe[playerid] = CreatePickup... habe ich auch eingefügt, wie du sehen kannst.
    Also ich weiß einfach nicht woran es liegen könnte :-/
    Das Timer Public zeigt auch keine Fehler an. Nur die Zeile mit bombe[playerid] = CreatePickup...

    Einmal editiert, zuletzt von Nicorotom ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Könntest du mir die Volle Klasse zeigen sprich auch den ganzen Code für dieses Bomben zeugs, ich besser dann mal aus was ich finde ( Kannst es mir per PM zukommen lassen wenn du es nicht Öffentlich zur Show stellen möchtest )

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Ok habe dir mein Script gesendet.


    //EDIT:
    Oben steht:
    new bombe[MAX_PLAYERS];
    new bombetimer;
    #define bombemenu 0


    Ok nun habe ich einen neuen Fehler:
    D:\gta server\0.3\gamemodes\udm.pwn(442) : warning 235: public function lacks forward declaration (symbol "bombeexplodiert")


    Betroffene Zeile:
    public bombeexplodiert(playerid)

    2 Mal editiert, zuletzt von Nicorotom ()

  • Ich weiß nicht, warum MAX_PLAYERS und eine Variable...
    Zum einen: Man kann die Position eine Pickups nicht per Funktion herausfinden
    Ich vermute mal, dass nur eine Bombe gelegt wird...
    Du könntest:
    //ganz nach oben:
    new Float:bombex, Float:bombey, Float:bombez;
    //dann in deim Code:
    GetPlayerPos(playerid,X,Y,Z);
    bombex=X;
    bombey=Y;
    bombez=Z;
    usw.
    Sollten mehrer Bomben gelegt werden, musst du halt am besten noch mit Arrays ([ ]) arbeiten

  • Ok danke Leute, funktioniert nun alles ;)
    Ich habe das nun wiefolgt:
    if(strcmp(cmdtext,"/bombe",true)==0){
    if(gTeam[playerid]==TEAM_TERRORIST)
    {
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    bombe = CreateObject(1252,X,Y,Z,0,0,0);
    bombetimer = SetTimer("bombeexplodiert",5000,0);
    }
    else
    {
    SendClientMessage(playerid,0xFF0000FF,"Du bist nicht bei den Terroristen!");
    }
    return 1;
    }


    Timer:
    public bombeexplodiert(playerid)
    {
    new Float:XX,Float:YX,Float:ZX;
    GetObjectPos(bombe,XX,YX,ZX);
    CreateExplosion(XX,YX,ZX,10,5);
    DestroyObject(bombe);
    KillTimer(bombetimer);
    return 1;
    }


    Funktioniert Prima ;)
    Danke euch allen :D