Pickup 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
  • Hi,
    ich wollte frage ob mir jemand helfen kann ein Pickup zu erstellen.
    Das Pickup soll ein Herz sein wenn man reinrennt soll man auf 100 geheilt werden.
    Wenn man dann auf 100 geheilt wurden ist soll ein Textdraw gezeigt werden was von 5 Minuten auf 0 runterläuft.
    Wenn es wieder auf 0 ist kann man sich wieder heilen. Das heißt man kan nsich nru alle 5 Minuten heilen.


    Textdraw-Coords:


    x: 312
    y: 465


    Pickup-Coords:


    füge ich selber ein


    MfG ~Luka~

  • //ganz nach oben:
    new Float:altesleben[MAX_PLAYERS], wartezeit[MAX_PLAYERS], Text:wartetext[MAX_PLAYERS], lebenspickup warteding[MAX_PLAYERS];
    forward wartetimer(playerid);
    //OnGameModeInit:
    lebenspickup=CreatePickup(bla bla bla);
    for(new i=0; i<MAX_PLAYERS; i++) {
    wartetext[i]=TextDrawCreate(312,465," "); }
    //OnPlayerPickupPickup:
    if(pickupid==lebenspickup) {
    if(wartezeit[playerid]==0) {
    wartezeit[playerid]=300;
    warteding[playerid]=SetTimerEx("wartetimer",1000,1,"d",playerid); }
    else {
    SetPlayerHealth(playerid,altesleben[playerid]); }}
    //ganz anch unten:
    public wartetimer(playerid) {
    if(wartezeit[playerid]>=1) {
    new s[20];
    format(s,sizeof(s),"Wartezeit: %d",wartezeit[playerid]);
    TextDrawSetString(wartetext[playerid],s); }
    else {
    KillTimer(warteding[playerid]);
    TextDrawSetString(wartetext[playerid]," "); }
    return 1;
    }
    //am besten in einen timer, der sekündlich er oder alle 2 sekunden läuft und alle abzählt, oder so ähnlich:
    new Float:leben;
    GetPlayerHealth(playerid/*oder i*/,leben);
    if(leben!=altesleben[playerid]) {
    altesleben[playerid]=leben; }
    //OnPlayerConnect:
    TextDrawShowForPlayer(playerid,wartetext[playerid]);
    Wenn ich jetzt nichts vergessen habe, müsste es gehen...
    Werd aber das Gefühl nicht los, dass ich was vergessen habe... wird sich ja zeigen

  • Hi,
    ich habe 5 Errors:



    pwn(49) : error 001: expected token: ";", but found "-identifier-"
    pwn(296) : warning 217: loose indentation
    pwn(298) : warning 217: loose indentation
    pwn(823) : error 017: undefined symbol "warteding"
    pwn(823) : warning 215: expression has no effect
    pwn(823) : error 001: expected token: ";", but found "]"
    pwn(823) : error 029: invalid expression, assumed zero
    pwn(823) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    5 Errors.



    Ehm und wo muss das hin???:



    new Float:leben;
    GetPlayerHealth(playerid/*oder i*/,leben);
    if(leben!=altesleben[playerid]) {
    altesleben[playerid]=leben; }


    MfG

    Einmal editiert, zuletzt von Markus ()

  • //ongamemodeinit
    SetTimer("Check",120,1)
    //oben
    forward Check();
    //unten
    public Check(){
    new Float:leben;
    GetPlayerHealth(playerid/*oder i*/,leben);
    if(leben!=altesleben[playerid]) {
    altesleben[playerid]=leben; }
    return 1;}

  • Jetzt sind es 3 Errors:



    pwn(1043) : error 017: undefined symbol "playerid"
    pwn(1044) : error 017: undefined symbol "playerid"
    pwn(1045) : error 017: undefined symbol "playerid"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


    3 Errors.


    Die Zeilen wo die Erros sind:



    public Check(){
    new Float:leben;
    GetPlayerHealth(playerid/*oder i*/,leben); //|||||||||||||||||||||| HIER
    if(leben!=altesleben[playerid]) { //|||||||||||||||||||||| HIER
    altesleben[playerid]=leben; } //|||||||||||||||||||||| UND HIER
    return 1;}

  • Pardon, das hatte ich vergessen :S


    //ongamemodeinit
    SetTimer("Check",120,1)
    //oben
    forward Check();
    //unten
    public Check(){
    for(new i=0;i<MAX_PLAYERS;i++){
    new Float:leben;
    GetPlayerHealth(i,leben);
    if(leben!=altesleben[i]) {
    altesleben[i]=leben; }
    return 1;}}


    so sollte es gehen

  • Zitat

    //ganz nach oben:
    new Float:altesleben[MAX_PLAYERS], wartezeit[MAX_PLAYERS], Text:wartetext[MAX_PLAYERS], lebenspickup warteding[MAX_PLAYERS];


    Hatte ein "," vergessen, muss so aussehen:
    //ganz nach oben:
    new Float:altesleben[MAX_PLAYERS], wartezeit[MAX_PLAYERS], Text:wartetext[MAX_PLAYERS], lebenspickup, warteding[MAX_PLAYERS];
    Und ich würde kein 120 MS Timer machen

  • mmh das jetzige Problem ist wenn ich in das pickup gehe komtm ja wartezeit 300 aber es geht nicht runter.
    Und ich habe alles eingetragen bei ongamemodeinit habe ich 300 eingetragen und beim public wartetimer habe ich 300 eingetragen.
    Es geht nicht. Die zeit lüäuft nicht runter


    edit: jetzt gehts das hier hat gefhelt: wartezeit[playerid]--;


    danke


    MfG ~Luka~

    2 Mal editiert, zuletzt von Markus ()