[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
  • if(!isPlayerInFrakt(playerid,0) && sInfo[playerid][spawnchange]==1)
    {
    new fID;
    fID = sInfo[playerid][fraktion];
    SetSpawnInfo(playerid,0,sInfo[playerid][skinid],fInfo[fID][f_x],fInfo[fID][f_y],fInfo[fID][f_z],fInfo[fID][f_r],0,0,0,0,0,0);
    }
    else if(isPlayerInFrakt(playerid,0) || sInfo[playerid][spawnchange]==0)
    {
    SetSpawnInfo(playerid,0,sInfo[playerid][skinid], fInfo[0][f_x],fInfo[0][f_y],fInfo[0][f_z],fInfo[0][f_r], 0, 0, 0, 0, 0, 0);
    }
    else if(sInfo[playerid][spawnchange]==2)
    {
    SetSpawnInfo(playerid,0,sInfo[playerid][skinid], hInfo[0][h_ix],hInfo[0][h_iy],hInfo[0][h_iz],0.0, 0, 0, 0, 0, 0, 0);
    }


    Kann man hier irgendwie auch den Interior mit reinsetzen bei SpawnInfo? Oder wie könnte ich das Problem lösen.. ?

  • Ja das Problem ist ich will ja den Interior des Spielers nicht bei SetSpawnInfo setzen.
    Weil wenn ich jetzt zum Beispiel spawnchange eingebe und bei der Fraktion spawnen will, möchte ich ja
    erst beim nächsten Spawn in dem Gebäude spawnen.
    Wenn ich jetzt da SetPlayerInterior reinmache würde er ja gleich den Interior ändern

  • die Variable muss ich aber dann eigentlich bei OnPlayerSpawn setzen oder? dass da der Interior gesetzt wird,
    auch wenn ich sterbe oder sowas.


    Wenn ich das ja nur z.b. bei dem Befehl /spawnplayer hinmache würde der Interior ja nur dann gesetzt werden.

  • Hallo,


    irgendwie buggt mein OnPlayerDeath seit heute.
    Ich habe nichts verändert, jedoch egal ob ich Wanteds habe oder nicht, ich sterbe einfach ganz normal und komme dann an die Position an der ich mich ausgeloggt habe.
    Eigentlich soll es ja so sein, dass wenn ich in der Nähe eines Cops Sterbe mit Wanteds ich in den Knast komme, falls ich keine habe oder kein Cop in der Nähe ist ich dann am Friedhof spawne.



    Mein OnPlayerDeath


    Spoiler anzeigen
    public OnPlayerDeath(playerid, killerid, reason)
    {
    //________________ Definierungen ______________________
    new stringz[128],die[128],wtd[128],string[128];
    SpielerInfo[playerid][pTode] +=1;
    if(killerid != INVALID_PLAYER_ID) SpielerInfo[killerid][pKills] +=1;
    SpielerInfo[playerid][pDuty] = 0;
    //________________ Wanted-System ______________________
    if(SpielerInfo[playerid][pTeam] == 1 && SpielerInfo[killerid][pTeam] != 1)
    {
    SpielerInfo[killerid][pWanteds] += 5;
    SetPlayerWantedLevel(killerid, (SpielerInfo[killerid][pWanteds]/5) + 1);
    SpielerInfo[killerid][pSterne] = SpielerInfo[killerid][pWanteds]/5 + 1;
    SpielerInfo[killerid][pVerbrechen] += 5;
    format(wtd,sizeof(wtd),"%s hat ein Verbrechen begangen: Polizeimord. Anzahl: 5 | Zeuge: %s.",SpielerName(killerid),SpielerName(playerid));
    SendFraktionMessage(1, cop, wtd);
    format(string,sizeof(string),"Du hast ein Verbrechen begangen: Polizeimord. Anzahl: 5 | Zeuge: %s.",SpielerName(playerid));
    SendClientMessage(killerid,info,string);
    format(string,sizeof(string), "Aktuelles Wanted: %i",SpielerInfo[killerid][pWanteds]);
    SendClientMessage(killerid,info,string);
    }
    else if(SpielerInfo[playerid][pTeam] != 1 && SpielerInfo[killerid][pTeam] != 1)
    {
    SpielerInfo[killerid][pWanteds] += 3;
    SetPlayerWantedLevel(killerid, (SpielerInfo[killerid][pWanteds]/5) + 1);
    SpielerInfo[killerid][pSterne] = SpielerInfo[killerid][pWanteds]/5 + 1;
    SpielerInfo[killerid][pVerbrechen] += 3;
    format(wtd,sizeof(wtd),"%s hat ein Verbrechen begangen: Zivimord. Anzahl: 3 | Zeuge: %s.",SpielerName(killerid),SpielerName(playerid));
    SendFraktionMessage(1, cop, wtd);
    format(string,sizeof(string),"Du hast ein Verbrechen begangen: Zivimord. Anzahl: 3 | Zeuge: %s.",SpielerName(playerid));
    SendClientMessage(killerid,info,string);
    format(string,sizeof(string), "Aktuelles Wanted: %i",SpielerInfo[killerid][pWanteds]);
    SendClientMessage(killerid,info,string);
    }
    //________________ Tot_System ______________________
    if(SpielerInfo[playerid][pWanteds] > 0 && teaminrangeofpoint(playerid, 1))
    {
    new wstring[128];
    format(wstring, sizeof(wstring), "%s wurde Verhaftet! Grund: Tot.",SpielerName(playerid));
    SendClientMessageToAll(info, wstring);
    print(wstring);
    new time = SpielerInfo[playerid][pWanteds] * 120;
    SpielerInfo[playerid][pKnastzeitBis] = gettime() + time;
    SpielerInfo[playerid][pKnastzeit] = time;
    SpielerInfo[playerid][pKnast] = 1;
    SpielerInfo[playerid][wTot] += 1;
    SpielerInfo[playerid][pInhaftiert] += 1;
    SpielerInfo[playerid][pWanteds] = 0;
    SpielerInfo[playerid][pSterne] = 0;
    SpielerInfo[playerid][kSkin] = 62;
    SetPlayerWantedLevel(playerid, 0);
    }
    else if(SpielerInfo[playerid][pTot] == 0) {
    SpielerInfo[playerid][pTot] = 1;
    tzeit[playerid] = 120;
    GetPlayerPos(playerid,tx[playerid],ty[playerid],tz[playerid]);
    toticon[playerid] = CreatePickup(1254,1,tx[playerid],ty[playerid],tz[playerid],-1);
    format(stringz, sizeof(stringz), "%s", SpielerName(playerid));
    totlabel = Create3DTextLabel(stringz,0xFF0000FF, tx[playerid], ty[playerid], tz[playerid], 32.0, 0);
    format(die,sizeof(die),"%s ist gestorben! Er braucht dringend einen Arzt.",SpielerName(playerid));
    SendFraktionMessage(2, medic, die);
    SpielerInfo[playerid][pTotskin] = 162;
    }
    //________________ Tot-Ende ______________________
    TextDrawHideForPlayer(playerid,txtTimeDisp);
    return 1;
    }


    OnPlayerSpawn


    Spoiler anzeigen
    public OnPlayerSpawn(playerid)
    {
    //________________ Knast-Tot-Spawn ______________________
    if(SpielerInfo[playerid][pKnast] == 1)
    {
    SpielerInfo[playerid][pKnastzeitBis] = gettime() + SpielerInfo[playerid][pKnastzeit]; //Damit die 500 Sekunden wieder drauf sind.
    SetPlayerSkin(playerid, SpielerInfo[playerid][kSkin]);
    SetPlayerWantedLevel(playerid, 0);
    SpielerInfo[playerid][pSterne] = 0;
    SetPlayerInterior(playerid, 3);
    SetPlayerPos(playerid,198.0428,161.8516,1003.0300);
    SendClientMessage(playerid, info, "Du musst zurück in den Knast!");
    }
    else if(SpielerInfo[playerid][pTot] == 1)
    {
    SetPlayerPos(playerid,-2719.6924,-318.3633,7.8438);
    SetPlayerVirtualWorld(playerid,playerid+1);
    SetPlayerHealth(playerid,10000000000);
    SetPlayerSkin(playerid, SpielerInfo[playerid][pTotskin]);
    SetPlayerWeather(playerid, 8);
    tzeit[playerid] = 180;
    SendClientMessage(playerid,info,"Du bist gestorben. Warte 2 Minuten oder warte, bis ein Arzt dich reanimiert.");
    timer[playerid] = SetTimerEx("tottimer",888,true,"i",playerid);
    SetPlayerWantedLevel(playerid, SpielerInfo[playerid][pSterne]);
    }
    else {
    SetPlayerSkin(playerid, SpielerInfo[playerid][pSkin]);
    SetPlayerPos(playerid,SpielerInfo[playerid][xKord],SpielerInfo[playerid][yKord],SpielerInfo[playerid][zKord]);
    SetPlayerInterior(playerid,SpielerInfo[playerid][pInterior]);
    SetPlayerWantedLevel(playerid, SpielerInfo[playerid][pSterne]); }



    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)

  • @Kontrax:
    Das kommt darauf an, wo du es setzen willst. Die Variable kannst du eigentlich überall setzen, wenn du SetPlayerInterior nur dann bei OnPlayerSpawn hast. Am besten du probierst es mal aus wie du es dir vorstellst und fragst bei Problemen nochmal nach, mit Code.


    @_iPit_: Dieser Thread ist für kleine Fragen, nicht für ewige Codes, das macht keinen Sinn die hier zu lösen, da ständig was dazwischen steht. Mache bitte einen Thread auf.


    Haze1730: Lade dir das herunter:
    http://www.microsoft.com/en-us…oad/details.aspx?id=40784

  • @Kontrax:
    Das kommt darauf an, wo du es setzen willst. Die Variable kannst du eigentlich überall setzen, wenn du SetPlayerInterior nur dann bei OnPlayerSpawn hast. Am besten du probierst es mal aus wie du es dir vorstellst und fragst bei Problemen nochmal nach, mit Code.


    @_iPit_: Dieser Thread ist für kleine Fragen, nicht für ewige Codes, das macht keinen Sinn die hier zu lösen, da ständig was dazwischen steht. Mache bitte einen Thread auf.


    Haze1730: Lade dir das herunter:
    http://www.microsoft.com/en-us…oad/details.aspx?id=40784


    Habe ich schon, gab das gleiche Problem.
    Man muss ALLE Visual C++ teile Installieren, habe es mit einem Packet von Chip gemacht nun klappt es.


    MfG. Haze :thumbup:

  • Mein Problem ist eigentlich dass ich wenn ich den Spawn bei OnPlayerSpawn mit SetPlayerPos gemacht habe,
    ist er jedes mal wenn ich ihn spawnen lasse kurz an einem anderen Ort gewesen.


    Sieht dann immer doof aus..



    Kann man das umgehen? Oder soll ichs einfach nochmal versuchen.






    @Sunrizez


    mein Befehl:
    ocmd:setskin(playerid,params[])
    {
    new pID, skin, text[2][60];
    new sendename[MAX_PLAYER_NAME];
    new empfangname[MAX_PLAYER_NAME];
    if(!IsPlayerAnAdmin(playerid,3))return SendClientMessage(playerid, ROT, "Du bist kein Admin oder dein Rang ist zu niedrig!");
    if(sscanf(params,"ui",pID,skin))return SendClientMessage(playerid,ROT,"Befehl: /setskin [ID] [SKINID]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Der Spieler ist nicht online!");
    if(skin<=0||skin>299)return SendClientMessage(playerid,ROT,"Skin ID muss zwischen 0 und 299 liegen!");
    GetPlayerName(playerid, sendename, MAX_PLAYER_NAME);
    GetPlayerName(pID, empfangname, MAX_PLAYER_NAME);
    format(text[0], sizeof(text[]), "%s hat dir deine Skin ID auf %i gesetzt!",sendename, skin);
    format(text[1], sizeof(text[]), "Du hast %s die Skin ID auf %i gesetzt!",empfangname, skin);
    SendClientMessage(pID,GOLD,text[0]);
    SendClientMessage(playerid,GOLD,text[1]);
    SetPlayerSkin(pID,skin);
    sInfo[pID][skinid] = skin;
    return 1;
    }


    sInfo[pID][skinid] = skin;

  • kann bitte jemand meine frage beantworten? kontrax' antwort hilft nicht

  • klingt logisch danke
    aber
    C:\Users\xRampage\Desktop\samp03z_svr_R1_win32\include\buyskin.inc(20) : error 010: invalid function or declaration
    C:\Users\xRampage\Desktop\samp03z_svr_R1_win32\include\buyskin.inc(40) : error 017: undefined symbol "exskin"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Errors.


    habs so geschrieben wie du meintest

  • #include <a_samp>
    #include <ocmd>
    #include <sscanf2>


    #define DIALOG_BUYSKIN 284649


    #define DIALOG_SKIN_1 101251
    #define DIALOG_SKIN_2 102262
    #define DIALOG_SKIN_3 103283
    #define DIALOG_SKIN_4 104294
    #define DIALOG_SKIN_5 105256
    #define DIALOG_SKIN_6 106243
    #define DIALOG_SKIN_7 107246
    #define DIALOG_SKIN_8 108228
    #define DIALOG_SKIN_9 109219
    #define DIALOG_SKIN_10 110230


    forward skin1(playerid);




    ocmd:buyskin(playerid,params[])
    {
    ShowPlayerDialog(playerid,DIALOG_BUYSKIN,DIALOG_STYLE_LIST,"Skinauswahl","The Truth\nAndre\nSkin 3\nSkin 4\nSkin 5\nSkin 6\nSkin 7\nSkin 8\nSkin9\nSkin10","Anschauen","Abbrechen");
    return 1;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid==DIALOG_SKIN_1)
    {
    if(response)
    {
    SetPlayerSkin(playerid,1);
    GivePlayerMoney(playerid,-300);
    }
    else
    {
    SetPlayerSkin(playerid,exskin);
    }
    }


    if(dialogid==DIALOG_BUYSKIN)
    {
    if(response)
    {
    if(listitem==0)
    {
    SetPlayerSkin(playerid,1);
    SetTimer("skin1",10000,false);
    }
    if(listitem==1)
    {
    SetPlayerSkin(playerid,3);
    }
    if(listitem==2)
    {
    SetPlayerSkin(playerid,1);
    }
    if(listitem==3)
    {
    SetPlayerSkin(playerid,1);
    }
    if(listitem==4)
    {
    SetPlayerSkin(playerid,1);
    }
    if(listitem==5)
    {
    SetPlayerSkin(playerid,1);
    }
    if(listitem==6)
    {
    SetPlayerSkin(playerid,1);
    }
    if(listitem==7)
    {
    SetPlayerSkin(playerid,1);
    }
    if(listitem==8)
    {
    SetPlayerSkin(playerid,1);
    }
    if(listitem==9)
    {
    SetPlayerSkin(playerid,1);
    }
    }
    }
    return 1;
    }


    public skin1(playerid)
    {
    ShowPlayerDialog(playerid,DIALOG_SKIN_1,DIALOG_STYLE_MSGBOX,"Kauf bestätigen","Willst du den Skin kaufen?","Ja","Nein");
    return 1;
    }

  • Ist es möglich auf DINI fraktionsmember die offline sind anzeigen zu lassen per Befehl sowie sie zu kicken aus der Fraktion?

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