[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
  • Wieso wird mir die Nachricht beim sterben nicht gesendet?


    Weil dein Code vorher einen Run Time Error bekommt, da killerid nicht online ist, somit einen Wert von 0xFFFF hat...und da das größer als MAX_PLAYERS ist..schlägt das alles fail :D


    Schreib es so:


    public OnPlayerDeath(playerid, killerid, reason)
    {
    SpielerInfo[playerid][pTode] +=1;
    if(killerid != INVALID_PLAYER_ID) SpielerInfo[killerid][pKills] +=1;
    SpielerInfo[playerid][pDuty] = 0;
    //if(SpielerInfo[playerid][pTot] != 1) {
    SpielerInfo[playerid][pTot] = 1;
    SendClientMessage(playerid, info, "Du bist nun tot"); //}
    TextDrawHideForPlayer(playerid,txtTimeDisp);
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Hab folgendes Problem das er keine Float Speichert.:
    Float:TankVolumen,
    self_mysql_get_field("AH_TankVolumen", data); Carlist[playerid][h][TankVolumen] = floatstr( data );
    Carlist[playerid][CarKey[playerid]][TankVolumen] = vehTank[GetVehicleModel(VID)-400];

  • Beitrag von ENEF ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Wäre für hilfe dankbar.


    1. Lässt du die Animation Preloaden? :huh:


    Wenn nicht schreibe mal unter OnPlayerRequestClass (ganz nach oben in die 1. Zeile:)


    ApplyAnimation(playerid,"MEDIC","null",0.0,0,0,0,0,0);


    2. Schreibe das mal so:


    ocmd:wiederbeleben(playerid)
    {
    if(!IsPlayerInRangeOfPoint(playerid,5,tx[i],ty[i],tz[i]))return SendClientMessage(playerid,error,"Du bist nicht in der Nähe einer Leiche!");
    if(GetPlayerAnimationIndex(playerid) != 0) return SendClientMessage(playerid,error,"Du reanimierst bereits eine Person!");
    for(new i; i<MAX_PLAYERS; i++) {
    if(!IsPlayerConnected(i))continue;
    if(SpielerInfo[i][pTot] == 0)continue;
    new string[MAX_PLAYER_NAME + 34];
    format(string,sizeof(string),"'%s' begint mit deiner Reanimation.",SpielerName(playerid));
    SendClientMessage(i,hinweis,string);
    ApplyAnimation(playerid,"MEDIC","CPR",4.1,1,1,1,0,888*10,1);
    SetTimerEx("reanimation",888*10,false,"i",playerid);
    break;
    }
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Hallöchen.


    Ich habe ein kleines Problem und zwar habe ich nun eine SetPlayerWordBounds Zone in mein Script eingebaut für die Toten damit sie auf dem Friedhof bleiben.
    Diese funktion wird nur ausgeführt wenn pTot auf 1 ist.
    Nachdem man seine Zeit auf dem Friedhof abgessen hat wird man entweder wenn man reanimiert wurde an seinen alten Positionen gespawnt, oder am Krankenhaus wenn nicht.


    Bloß wenn ich bei einem von beiden Spawne zieht es mich wieder zum Friedhof obwohl die Variable auf 0 ist.


    Spoiler anzeigen
    public tottimer(playerid)
    {
    if(SpielerInfo[playerid][pTot] == 0)return KillTimer(tott[playerid]);
    tzeit[playerid] --;
    if(tzeit[playerid] == 0)
    {
    SetPlayerPos(playerid,-2655.4741,636.9430,14.4531);
    SetPlayerVirtualWorld(playerid,0);
    KillTimer(tott[playerid]);
    SetPlayerHealth(playerid, 100);
    DestroyPickup(toticon[playerid]);
    Delete3DTextLabel(totlabel);
    TogglePlayerControllable(playerid,1);
    SpielerInfo[playerid][pTot] = 0;
    tzeit[playerid] = -1;
    SetPlayerSkin(playerid,oskin[playerid]);
    SendClientMessage(playerid, erfolg, "Die Ärzte haben zulange gebraucht. Du wurdest nun im Krankenhaus wiederbelebt.");
    }
    return 1;
    }

    Spoiler anzeigen
    public reanimation(playerid)
    {
    new Float:x,Float:y,Float:z,string[144];
    GetPlayerPos(playerid,x,y,z);
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(SpielerInfo[i][pTot] == 0)continue;
    if(!IsPlayerInRangeOfPoint(playerid,5,tx[i],ty[i],tz[i]))continue;
    format(string,144,"Du hast den Spieler '%s' erfolgreich reanimiert.",SpielerName(i));
    SendClientMessage(playerid,erfolg,string);
    format(string,144,"'%s' hat dich erfolgreich reanimiert.",SpielerName(playerid));
    SendClientMessage(i,erfolg,string);
    SetPlayerHealth(i, 100);
    SetPlayerPos(i,x,y,z);
    KillTimer(tott[i]);
    DestroyPickup(toticon[playerid]);
    Delete3DTextLabel(totlabel);
    tzeit[i] = -1;
    SpielerInfo[i][pTot] = 0;
    SetPlayerVirtualWorld(i,0);
    TogglePlayerControllable(i,1);
    SetPlayerSkin(i,oskin[playerid]);
    }
    return 1;
    }


    Wie man sehen kann wird es auf 0 gestellt, hier mal meine Funktion mit dem Bounds


    public OnPlayerLeaveDynamicArea(playerid, areaid) {
    //_________Tot-System___________________//
    if(areaid == Totzone[1]) {
    if(SpielerInfo[playerid][pTot] == 1) {
    SetPlayerWorldBounds(playerid, -2692.109, -2784.814, -218.6009, -360.6196);
    SetPlayerVirtualWorld(playerid, 1);}
    return 1; }


    Eigentlich dürfte der Spieler ja dann nicht mehr zurück gezogen werden da die Variable auf 0 ist.



    Mit freundlichen Grüßen



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Perfekt, funktioniert.


    Und wie ändere ich das Wetter dauerhaft zb. in der Virtuellen Welt 100?
    Und lasse Objecte nur in dieser Welt anzeigen bzw Removen?


    Mit freundlichen Grüßen



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Kleines Problem ^^(schon wieder)


    Irgendwie will er nicht richtig funktionieren der Command.
    Ich heile mich ja selbst zum testen, bekomme jedoch nur die Nachricht das ich geheilt habe und nicht geheilt wurde.
    Wenn ich die Schleife hinzufüge bekomme ich zwar beide Nachrichten aber dann 100 mal auf einmal ^^


    Spoiler anzeigen

    new heiler[MAX_PLAYERS];
    new heilerp;
    //_______________//
    ocmd:heilen(playerid,params[])
    {
    new string[128], pID;
    pID = heiler[playerid];
    if(SpielerInfo[playerid][pTeam] != 2) return SendClientMessage(playerid,error,"Diesen Befehl kannst du nicht nutzen. Benötigter Beruf: {medic}Sanitäter"); {
    if(sscanf(params,"ud",pID,heilerp))return SendClientMessage(playerid,Color_Green,"/Heilen ID Preis");
    format(string, sizeof(string), "%s hat dir ein Angebot gemacht, dich für %d$ zu heilen!",SpielerName(playerid),heilerp);
    ShowPlayerDialog(pID,DIALOG_MEDIC,DIALOG_STYLE_MSGBOX,"%s möchte dich Heilen",string,"Bestätigen","Abbrechen"); }
    return 1;
    }
    //________________//
    if(dialogid == DIALOG_MEDIC)
    {
    new string[128];
    if(response == 1)
    {
    //for(new i=0; i<MAX_PLAYERS; i++)
    //{
    GetPlayerName(playerid, heiler[playerid], MAX_PLAYER_NAME);
    format(string, sizeof(string), "Du hast %s für %d$ geheilt",heiler[playerid],heilerp);
    SendClientMessage(playerid, erfolg, string);
    format(string, sizeof(string), "Du wurdest von %s für %d$ geheilt",SpielerName(playerid),heilerp);
    SendClientMessage(heiler[playerid], info, string);
    GivePlayerMoney(playerid, -heilerp); }
    //}
    if(response == 0)
    {
    SendClientMessage(playerid,Color_Red ,"Du hast den Vorgang abgebrochen!");
    }
    }
    return


    Danke im vorraus :)


    MfG



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

    Einmal editiert, zuletzt von ENEF ()

  • new heiler[MAX_PLAYERS];
    new heilerp[MAX_PLAYERS];
    //_______________//
    ocmd:heilen(playerid,params[])
    {
    new string[128], pID;
    if(SpielerInfo[playerid][pTeam] != 2) return SendClientMessage(playerid,error,"Diesen Befehl kannst du nicht nutzen. Benötigter Beruf: {medic}Sanitäter");
    {
    if(sscanf(params,"ud",pID,heilerp[playerid]))return SendClientMessage(playerid,Color_Green,"/Heilen ID Preis");
    format(string, sizeof(string), "%s hat dir ein Angebot gemacht, dich für %d$ zu heilen!",SpielerName(playerid),heilerp[playerid]);
    ShowPlayerDialog(pID,DIALOG_MEDIC,DIALOG_STYLE_MSGBOX,"%s möchte dich Heilen",string,"Bestätigen","Abbrechen");
    heiler[pID] = playerid;
    }
    return 1;
    }
    //________________//
    if(dialogid == DIALOG_MEDIC)
    {
    if(response == 1)
    {
    new string[128];
    format(string, sizeof(string), "Du hast %s für %d$ geheilt",SpielerName(heiler[playerid]),heilerp[heiler[playerid]]);
    SendClientMessage(heiler[playerid], info, string);
    format(string, sizeof(string), "Du wurdest von %s für %d$ geheilt",SpielerName(heiler[playerid]),heilerp[heiler[playerid]]);
    SendClientMessage(playerid, erfolg, string);
    GivePlayerMoney(playerid, -heilerp[heiler[playerid]]);
    }
    else if(response == 0)
    {
    SendClientMessage(playerid,Color_Red ,"Du hast den Vorgang abgebrochen!");
    }
    return 1;
    }

  • Sie werden halt dann wenn ich wieder in das Auto einsteige was ich kaufen möchte angezeigt.
    Oder eben wenn man in ein anderes Auto einsteigt gelöscht.


    Oder ich mache es so, die Textdraws die sich nicht verändern create ich bei OnGameModeInit und die 2 die sich verändern,
    also Fahrzeugname und Preis wenn man ins Auto einsteigt und wenn man es gekauft hat oder nicht werden sie gelöscht.


    Ist das sinnvollste oder ?

  • Huhu,


    ich wollte mal fragen ob es irgendwie möglich ist eine Deagle und eine SD Pistole gleichzeitig zu besitzen?



    Mit freunlichen Grüßen
    TV^^



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

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