Beiträge von Quetai

    Hey Leute.
    Ich hab' ein "Waffenskill-System" gemacht.
    Nun möchte ich dazu ein Befehl machen, bei der man dann per Textdraws die jetzigen Skills angezeigt bekommt.


    So sieht z.B. der Textdraw zur Deagle aus:
    Waffenskill3 = TextDrawCreate(40.000000, 260.000000, "Deagle: %d");
    TextDrawBackgroundColor(Waffenskill3, 255);
    TextDrawFont(Waffenskill3, 1);
    TextDrawLetterSize(Waffenskill3, 0.310000, 1.299999);
    TextDrawColor(Waffenskill3, -1);
    TextDrawSetOutline(Waffenskill3, 0);
    TextDrawSetProportional(Waffenskill3, 1);
    TextDrawSetShadow(Waffenskill3, 1);




    //Deagle
    if(PlayerInfo[playerid][pDeagleskill] == 167)
    {
    new Vstr[32]; format(Vstr, sizeof Vstr, "1");
    TextDrawSetString(Waffenskill3, Vstr);
    }
    else if(PlayerInfo[playerid][pDeagleskill] == 334)
    {
    new Vstr[32]; format(Vstr, sizeof Vstr, "2");
    TextDrawSetString(Waffenskill3, Vstr);
    }
    else if(PlayerInfo[playerid][pDeagleskill] == 501)
    {
    new Vstr[32]; format(Vstr, sizeof Vstr, "3");
    TextDrawSetString(Waffenskill3, Vstr);
    }
    else if(PlayerInfo[playerid][pDeagleskill] == 668)
    {
    new Vstr[32]; format(Vstr, sizeof Vstr, "4");
    TextDrawSetString(Waffenskill3, Vstr);
    }
    else if(PlayerInfo[playerid][pDeagleskill] == 836)
    {
    new Vstr[32]; format(Vstr, sizeof Vstr, "5");
    TextDrawSetString(Waffenskill3, Vstr);
    }
    else if(PlayerInfo[playerid][pDeagleskill] == 1002)
    {
    new Vstr[32]; format(Vstr, sizeof Vstr, "6");
    TextDrawSetString(Waffenskill3, Vstr);
    }


    Wäre das so möglich?

    Hey Leute.
    Vor dem Tutorial möchte ich sowas wie eine kurze Story machen...
    Eigentlich klappt auch alles wunderbar, nur wie schaff ich das, dass jeder seine "eigene Story hat"...
    Ich hab' das so gemacht, dass wenn ein Spieler neu ist und kein Account hat eine Variable auf 2 gesetzt wird.


    Unter setplayerspawn dann das:
    if(PlayerInfo[playerid][pTut] == 2)
    {
    gOoc[playerid] = 1; gNews[playerid] = 1; gFam[playerid] = 1;
    AtRegestration[playerid] = 1;
    PlayerInfo[playerid][pInt] = 0;
    SetCameraBehindPlayer(playerid);
    SetPlayerPos(playerid,651.68, -3455.69, 27.94);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,2);
    SetPlayerHealth(playerid,100);
    TimerPlane = SetTimer("MovePlane",1,1);
    SetPlayerCheckpoint(playerid, 538.0032,-3797.8035,12.1613, 5.0);
    return 1;
    }


    Moveplane sieht so aus:
    public MovePlane(playerid)
    {
    new Float:X,Float:Y,Float:Z;
    GetObjectPos(plane,X,Y,Z);
    if(X == 651.68 && Y == -3462.69 && Z == 26.94)//1
    {
    MoveObject(plane,651.68, -3455.69, 26.94,20.0);
    }
    ...
    if(X == 651.68 && Y == -3309.69 && Z == 26.94)//1
    {
    CreateExplosion(648.3234, -3254.7407, 15.5000,7,50);
    KillTimer(TimerPlane);
    DestroyObject(plane);
    DestroyObject(inplane);
    plane = CreateObject(14553, 651.68, -3462.69, 26.94, 10.00, 0.00, 180.00);
    inplane = CreateObject(14548, 651.78, -3482.06, 31.33, 10.00, 0.00, 180.00);
    }
    return 1;
    }


    So...
    Sagen wir Spieler A ist neu, kommt auf den Server...Bei dem klappt alles wunderbar...
    Sobald aber dann auch Spieler B kommt, ist der "in der Welt von Spieler A"...Das heißt..das Objekt bewegt sich die ganze zeit...
    Aber ich möchte das so haben, dass wenn Spieler B auch neu ist, bei dem das auch "von Anfang" an ist...
    Ich hoffe ihr versteht mein Problem.^^

    GivePlayerMoney(playerid, - payout);
    new myobject = CreateObject(4238, 1195.74, -867.77, 53.74, 0.00, 0.00, 39.98);
    SetObjectMaterialText(myobject,result, 0, OBJECT_MATERIAL_SIZE_256x128,\
    "Arial", 28, 0, 0xFFFF8200, 0xFF000000, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
    SetTimer("AddsOn", addtimer, 0);
    adds = 0;


    So sieht das ganze jetzt bei meinem Befehl aus.
    Klappt auch alles wunderbar, nur der Text, bzw. "result" kommt, wie schon in der Überschrift steht, mal auf der linken Seite des Objektes und mal auf der rechten Seite des Objektes...
    Aber es soll nur einmal kommen...

    Probiert, leider wieder... <.<
    Ich glaub' ich lass's einfach sein.


    Edit: Wie kann ich das schaffen, dass public OnPlayerRequestClass(playerid, classid) erst nachdem man auf "betreten" geklickt hat kommt?


    Und nicht, dass beides gleichzeitig abläuft...


    Würde das mit 'ner Variable gehen?
    In etwa so:
    public OnPlayerClickTextDraw(playerid, Text:clickedid)
    {
    if(clickedid != Text:INVALID_TEXT_DRAW) //Sagt das wenn der Player ein falsches TD anklickt nichts passieren soll.
    {
    if(clickedid == Textdraw1) //Wir fangen indem Fall bei 1 an weil wir ja nicht wollen das 0 anklickbar ist.
    {
    Showing[playerid] = 1; //Teleportet den Spieler nach LV wenn er auf das erste TD klickt.
    PlayerPlaySound(playerid,1056,0.0,0.0,0.0);
    }...


    public OnPlayerRequestClass(playerid, classid)
    {
    if(IsPlayerNPC(playerid))
    {
    SpawnPlayer(playerid);
    return 1;
    }
    if(gPlayerAccount[playerid] == 1 && Showing[playerid] == 1 && gPlayerLogged[playerid] == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde erfolgreich gefunden!\nGib jetzt deinen Passwort ein,\num dich einloggen zu können.","Login","Abbrechen");
    }

    Vorher war das ja so, dass wenn man auf den Server connected die Register & Login Dialoge erschienen.
    Da hab' ich das versucht mit 'ner Variable zu lösen...


    Halt, wenn man auf "betreten" klickt, wird "Willkommen" auf 1 gesetzt.
    Und wenn das auf 1 ist, erscheinen die die Dialoge...


    Und wenn man auf "verlassen" klickt wird man halt gekickt..


    public OnPlayerClickTextDraw(playerid, Text:clickedid)
    {
    if(clickedid != Text:INVALID_TEXT_DRAW) //Sagt das wenn der Player ein falsches TD anklickt nichts passieren soll.
    {
    if(clickedid == Textdraw5) //Wir fangen indem Fall bei 1 an weil wir ja nicht wollen das 0 anklickbar ist.
    {
    Willkommen[playerid] = 1;
    CancelSelectTextDraw(playerid);
    }
    else if(clickedid == Textdraw6)
    {
    CancelSelectTextDraw(playerid); //Schließt den TD (Abbrechen) CancelSelectTextDraw = zu deutsch SchließeAusgewähltenTextdraw
    Kick(playerid); //Teleportet den Spieler nach SF wenn er auf das zweite TD klickt.
    }
    TextDrawHideForPlayer(playerid,Textdraw1);
    TextDrawDestroy(Textdraw1);
    TextDrawHideForPlayer(playerid,Textdraw3);
    TextDrawDestroy(Textdraw3);
    TextDrawHideForPlayer(playerid,Textdraw4);
    TextDrawDestroy(Textdraw4);
    TextDrawHideForPlayer(playerid,Textdraw5);
    TextDrawDestroy(Textdraw5);
    TextDrawHideForPlayer(playerid,Textdraw6);
    TextDrawDestroy(Textdraw6);
    TextDrawHideForPlayer(playerid,Textdraw7);
    TextDrawDestroy(Textdraw7);
    TextDrawHideForPlayer(playerid,Textdraw8);
    TextDrawDestroy(Textdraw8);
    CancelSelectTextDraw(playerid); //Schleißt alle TD´s wenn eine Sache ausgewählt wurde.
    }
    return 1;
    }

    Hey Leute.
    Wenn man auf den Server connected, erscheint der Textdraw. Da kann man dann auswählen, ob man den Server betreten oder verlassen möchte.


    Klappt auch alles wunderbar.
    Nur, wenn Spieler A das schon gemacht hat, und dann Spieler B auf den Server connected, passiert bei Spieler B garnichts mehr.
    Bzw. der Textdraw kommt nicht.
    Unter OnPlayerConnect hab ich das so:
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    Willkommen[i] = 0;
    TextDrawShowForPlayer(i, Textdraw1);
    TextDrawShowForPlayer(i, Textdraw3);
    TextDrawShowForPlayer(i, Textdraw4);
    TextDrawShowForPlayer(i, Textdraw5);
    TextDrawShowForPlayer(i, Textdraw6);
    TextDrawShowForPlayer(i, Textdraw7);
    TextDrawShowForPlayer(i, Textdraw8);
    SelectTextDraw(i, 0xA3B4C5FF); // Bedeutet das folgende Farbe angezeigt wird 0xA3B4C5FF wenn man mit der Maus rüber geht, könnt ihr natürlich in eure Farbe ändern.
    }


    public OnPlayerRequestClass(playerid, classid)
    {
    if(IsPlayerNPC(playerid))
    {
    SpawnPlayer(playerid);
    return 1;
    }
    if(gPlayerAccount[playerid] == 1 && Willkommen[playerid] == 1 && gPlayerLogged[playerid] == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde erfolgreich gefunden!\nGib jetzt deinen Passwort ein,\num dich einloggen zu können.","Login","Abbrechen");
    }
    else if(gPlayerAccount[playerid] == 0 && Willkommen[playerid] == 1 && gPlayerLogged[playerid] == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_REG,DIALOG_STYLE_MSGBOX,"Account","Dein Account wurde nicht gefunden!\nDu benötigst einen, wenn du auf diesem Server\nspielen möchtest!","Erstellen","Abbrechen");
    }
    return 1;
    }

    Ich versuchs schon die ganze Zeit, nur die Objekte sind nicht am Maverick. :cursing:
    Zuerst habe ich:
    new objectid1, objectid2, objectid3, objectid4;


    Unter GameModeInit hab' ich das:
    objectid1 = CreateObject(2937, 0,0,0, 0.00, 0.00, 0.00);
    objectid2 = CreateObject(2937, 0,0,0, 0.00, 0.00, 0.00);
    objectid3 = CreateObject(2937, 0,0,0, 0.00, 0.00, 0.00);
    objectid4 = CreateObject(2937, 0,0,0, 0.00, 0.00, 0.00);


    Unter OnPlayerEnterVehicle
    new Mav = GetVehicleModel(vehicleid);
    if(Mav==487)
    {
    AttachObjectToVehicle(objectid1, Mav, 1.09, 1.88, -1.0, 0.0, 0.0, 0.0);
    AttachObjectToVehicle(objectid2, Mav, 1.09, -0.60, -1.0, 0.0, 0.0, 0.0);
    AttachObjectToVehicle(objectid3, Mav, -1.12, 1.88, -1.0, 0.0, 0.0, 0.0);
    AttachObjectToVehicle(objectid4, Mav, -1.12, -0.60, -1.0, 0.0, 0.0, 0.0);
    }


    Kann mir da einer weiterhelfen?

    Das habe ich unter OnPlayerDeath:
    //Paintball
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(PlayerInfo[i][pPaintball] == 5 || PlayerInfo[i][pPaintball] != 0)
    {
    new killss = GetPlayerScore(killerid);
    if(killerid != INVALID_PLAYER_ID) SetPlayerScore(killerid, GetPlayerScore(killerid) + 1);
    SetPlayerScore(i,0);
    //////////////////////////////////////
    GetPlayerName(killerid, pbname, sizeof(pbname));
    GetPlayerName(i, kname, sizeof(kname));
    //////////////////////////////////////
    switch(killss)
    {
    case 3:
    {
    format(string, sizeof(string), "~r~%s ~y~- Dominating with %d kills", pbname, killss);
    TextDrawSetString(Textdraw0, string);
    }
    case 4:
    {
    format(string, sizeof(string), "~r~%s ~y~- Rampage with %d kills", pbname, killss);
    TextDrawSetString(Textdraw0, string);
    }
    case 5:
    {
    format(string, sizeof(string), "~r~%s ~y~- Killing Spree with %d kills", pbname, killss);
    TextDrawSetString(Textdraw0, string);
    }
    case 6:
    {
    format(string, sizeof(string), "~r~%s ~y~- Monster Kill with %d Kills", pbname, killss);
    TextDrawSetString(Textdraw0, string);
    }
    case 7:
    {
    format(string, sizeof(string), "~r~%s ~y~- Unstoppable with %d kills", pbname, killss);
    TextDrawSetString(Textdraw0, string);
    }
    case 8:
    {
    format(string, sizeof(string), "~r~%s ~y~- Ultra Kill with %d kills", pbname, killss);
    TextDrawSetString(Textdraw0, string);
    }
    case 9:
    {
    format(string, sizeof(string), "~r~%s ~y~- Godlike with %d kills", pbname, killss);
    TextDrawSetString(Textdraw0, string);
    }
    case 10:
    {
    format(string, sizeof(string), "~r~%s ~y~- Wicked Sick with %d kills", pbname, killss);
    TextDrawSetString(Textdraw0, string);
    }
    case 11:
    {
    format(string, sizeof(string), "~r~%s ~y~- Ludacriss Kill with %d kills", pbname, killss);
    TextDrawSetString(Textdraw0, string);
    }
    case 12:
    {
    format(string, sizeof(string), "~r~%s ~y~- Holy Shit with %d kills", pbname, killss);
    TextDrawSetString(Textdraw0, string);
    }
    case 13:
    {
    format(string, sizeof(string), "~r~%s ~y~- Huge Killing Script with %d kills", pbname, killss);
    TextDrawSetString(Textdraw0, string);
    }
    case 14:
    {
    format(string, sizeof(string), "~r~%s ~y~- Huge Killing Script with %d kills", pbname, killss);
    TextDrawSetString(Textdraw0, string);
    }
    case 15:
    {
    format(string, sizeof(string), "~r~%s ~y~- Huge Killing Script with %d kills", pbname, killss);
    TextDrawSetString(Textdraw0, string);
    }
    case 16:
    {
    format(string, sizeof(string), "~r~%s ~y~- Huge Killing Script with %d kills", pbname, killss);
    TextDrawSetString(Textdraw0, string);
    }
    case 17:
    {
    format(string, sizeof(string), "~r~%s ~y~- Huge Killing Script with %d kills", pbname, killss);
    TextDrawSetString(Textdraw0, string);
    }
    case 18:
    {
    format(string, sizeof(string), "~r~%s ~y~- Huge Killing Script with %d kills", pbname, killss);
    TextDrawSetString(Textdraw0, string);
    }
    case 19:
    {
    format(string, sizeof(string), "~r~%s ~y~- Huge Killing Script with %d kills", pbname, killss);
    TextDrawSetString(Textdraw0, string);
    }
    case 20:
    {
    format(string, sizeof(string), "~r~%s ~y~- Huge Killing Script with %d kills", pbname, killss);
    TextDrawSetString(Textdraw0, string);
    }
    }
    if(killss >=3)
    {
    TextDrawHideForAll(Textdraw0);
    KillTimer(aaa);
    aaa = SetTimer("blablabla", 5000, false);
    TextDrawShowForAll(Textdraw0);
    return 1;
    }
    }
    }


    Aber das klappt irgendwie nur für einen Spieler.
    Sagen wir Spieler A killt Spieler B 3x. Dann kommt der Textdraw.
    Aber wenn dann Spieler B Spieler A 3x killt passiert nichts.

    Hey Leute.
    Ich möchte an jedes Maverick so Metallstege anhängen.
    Jedoch brauch ich Hilfe..


    Bisjetzt waren meine Ideen so:
    new mavobject;
    mavobject = GetPlayerVehicleID(playerid);
    if(mavobject == 487)
    {
    new Float:mavobX,Float:mavobY,Float:mavobZ;
    GetVehiclePos(mavobject, mavobX, mavobY, mavobZ);
    new mavobject1 = CreateObject(2937, mavobX,mavobY,mavobZ,0.0,0.0,0.0);
    AttachObjectToVehicle(mavobject1, mavobject, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0);
    }


    Aber ich bin mir da nicht so sicher.
    Und wie kriege ich das hin, dass die Metallstege an den Seiten am Maverick ist. Ich hoffe ihr wisst, was ich mit "Seiten" meine...
    Woher kriege ich besser gesagt die Koordinaten her?

    killss[killerid]++;
    killss[playerid] = 0;
    format(szString,sizeof(szString),"Killserie :%d",killss[killerid]);
    TextDrawSetString(Kill_Streak[killerid],szString);


    1.
    So ist das nun bei OnPlayerDeath.
    Ich will das so machen, dass wenn man jemanden killt immer eins dazu kommt. Klappt auch.
    Aber wenn man stirbt soll das auf 0 gesetzt werden. Es passiert aber nichts. Es wird nicht auf 0 gesetzt..


    2.
    Und.
    Irgendwie kriege immer nur ich neue Waffen. Andere Spieler nicht.
    Wieso?


    SetPlayerScore(killerid, GetPlayerScore(killerid) + 1);
    SetPlayerScore(playerid,0);
    if(GetPlayerScore(killerid) == 2)
    {
    SetPlayerHealth(killerid,100);
    SetPlayerArmour(killerid,100);
    GivePlayerWeapon(killerid,23,999);
    GameTextForPlayer(killerid, "~r~Weiter so", 3500, 5);
    }
    else if(GetPlayerScore(killerid) == 3)
    {
    GameTextForPlayer(killerid, "~r~Weiter so", 3500, 5);
    }
    else if(GetPlayerScore(killerid) == 4)
    {
    SetPlayerHealth(killerid,100);
    SetPlayerArmour(killerid,100);
    GivePlayerWeapon(killerid,24,999);
    GameTextForPlayer(killerid, "~r~Weiter so", 3500, 5);
    }
    else if(GetPlayerScore(killerid) == 5)
    {
    GameTextForPlayer(killerid, "~r~Weiter so", 3500, 5);
    }
    else if(GetPlayerScore(killerid) == 6)
    {
    SetPlayerHealth(killerid,100);
    SetPlayerArmour(killerid,100);
    GivePlayerWeapon(killerid,27,999);
    GameTextForPlayer(killerid, "~r~Weiter so", 3500, 5);
    }
    else if(GetPlayerScore(killerid) == 7)
    {
    GameTextForPlayer(killerid, "~r~Weiter so", 3500, 5);
    }
    else if(GetPlayerScore(killerid) == 8)
    {
    SetPlayerHealth(killerid,100);
    SetPlayerArmour(killerid,100);
    GivePlayerWeapon(killerid,31,999);
    GameTextForPlayer(killerid, "~r~Weiter so", 3500, 5);
    }
    else if(GetPlayerScore(killerid) == 9)
    {
    GameTextForPlayer(killerid, "~r~Weiter so", 3500, 5);
    }
    else if(GetPlayerScore(killerid) == 10)
    {
    GivePlayerWeapon(killerid,34,999);
    SetPlayerHealth(killerid, 100);
    SetPlayerArmour(killerid, 100);
    GameTextForPlayer(killerid, "~r~Weiter so", 3500, 5);
    }