Beiträge von Templer

    Den zweiten, also wenn du willst, dass sie nach 20Sekunden Unbenützung respawnen sollen einfach so abändern:


    //Scroll bissl nach Rechts ^^
    Kaufliste[i][Carid]=CreateVehicle(Kaufliste[i][Modelid],Kaufliste[i][X],Kaufliste[i][Y],Kaufliste[i][Z],Kaufliste[i][Rotation],-1,-1,20);

    Suche nach:


    [Carid]=


    oder


    [Carid] =


    also mit Leerzeichen und dann einfach dort wo CreateVehicle steht am Ende das -1 zu deiner Wunschzeit in Sekunden einstellen, ansonsten Zeilen posten^^


    p.S.: Vor diesem CarID sollte dann sowas wie


    Kaufliste
    stehen!

    Dein Rank ergibt sich durch das:
    new rank = PlayerInfo[i][pRank] * 100;
    also bei deinem Beispiel wäre es so:
    new rank = 6 * 100; //Deshalb auch 600 ^^


    Ansonsten bitte den folgenden Code Austauschen...


    //Member
    if(PlayerInfo[i][pMember] != 0)
    {
    new frak = PlayerInfo[i][pMember];
    JB_GivePlayerMoney(i, FrakGeld[frak][0]-1);
    format(str,sizeof(str),"Fraktions Member: $%d", FrakGeld[frak][0]-1 );
    SendClientMessage(i, COLOR_WHITE, str);
    }
    //Leader
    if(PlayerInfo[i][pLeader] != 0)
    {
    new frak = PlayerInfo[i][pLeader];
    JB_GivePlayerMoney(i, (FrakGeld[frak][1])-1);
    format(str,sizeof(str),"Fraktions Leader: $%d", FrakGeld[frak][1]-1 );
    SendClientMessage(i, COLOR_WHITE, str);
    }


    warum bei Member 16 rauskommt sieht man an dem Code nicht, vl irgendein Fehler woanders und den Code was ich ned versteh ist:


    //Rank
    if(PlayerInfo[i][pMember] != 1)
    {
    JB_GivePlayerMoney(i, rank);
    format(str,sizeof(str),"Fraktions Rank: $%d",rank);
    SendClientMessage(i, COLOR_WHITE, str);
    }


    Wozu dient das, wenn du ihm nachher eh gehalt gibst ^^

    Einfach bei AddStaticVehicleEx und CreateVehicle am Ende die Respawnzeit in Sekunden angeben, siehst doch eh oben.


    z.B.:
    AddStaticVehicleEx(560, 0.0, 0.0, 0.0, 0.0, 1, 1, 50); //Respawnt Sultan bei Nichtbenützung in 50 Sekunden

    Sollte funktionieren und kapierbar sein:


    //Folgendes oben in dein Script...
    enum carinfoenum
    {
    ciBesitzer[MAX_PLAYER_NAME],
    ciKennzeichen[8],
    Text3D:ci3DTextID
    };
    new CarInfo[MAX_VEHICLES][carinfoenum];


    //-------------------------//


    //Dann das folgende mit deinem ersetzen.. (Ka wo der Code von dir ist, in welchem Callback ^^
    case 0:
    {
    new tmpcar;
    for(tmpcar= 1; tmpcar <= MAX_VEHICLES;)
    {
    new str[256];
    new name[MAX_PLAYER_NAME];
    format(str, sizeof(str), "/cars/%d.car",tmpcar);
    if(!fexist(str) && CarInfo[tmpcar][cMaxGas]==0)
    {
    CarInfo[tmpcar][cID] = tmpcar;
    CarInfo[tmpcar][cModel] = 411; // INFERNUS
    //format(ownerstr, sizeof(ownerstr), "Kevin");
    new playrname[MAX_PLAYER_NAME];
    //new connect[128];
    strdel(playrname, 0, MAX_PLAYER_NAME);
    GetPlayerName(playerid, playrname, sizeof(playrname));
    CarInfo[tmpcar][cOwner] =playrname;
    CarInfo[tmpcar][cHP] = 1000;
    CarInfo[tmpcar][cColor1] = 1;
    CarInfo[tmpcar][cColor2] = 1;
    for(new j = 0; j < MAX_PLAYERS; j++)
    {
    CarInfo[tmpcar][cLocked][j] = false;
    SetVehicleParamsForPlayer(tmpcar, j, 0,0);
    }
    CarInfo[tmpcar][cX] = 2083.3113;
    CarInfo[tmpcar][cY] = 2168.0898;
    CarInfo[tmpcar][cZ] = 10.8203;
    CarInfo[tmpcar][cAngle] = 238.9028;
    CarInfo[tmpcar][cRespawnX] = 2083.3113;
    CarInfo[tmpcar][cRespawnY] = 2168.0898;
    CarInfo[tmpcar][cRespawnZ] = 10.8203;
    CarInfo[tmpcar][cRespawnAngle] = 238.9028;
    CarInfo[tmpcar][cMaxGas] = 75;
    CarInfo[tmpcar][cGas] = 5;
    CreateVehicle(CarInfo[tmpcar][cModel], CarInfo[tmpcar][cX], CarInfo[tmpcar][cY], CarInfo[tmpcar][cZ], CarInfo[tmpcar][cAngle], CarInfo[tmpcar][cColor1], CarInfo[tmpcar][cColor2], -1);
    format(str, sizeof(str), "car %d hergestellt von %s.",tmpcar, name);
    print(str);
    format(str, sizeof(str), "car %d hergestellt.",tmpcar);
    SendClientMessage(playerid, COLOR_BLUE,str);
    SaveCar(tmpcar);
    PlayerInfo[playerid][pCash]-=228000;
    GivePlayerMoney(playerid, -228000);
    SendClientMessage(playerid, COLOR_YELLOW, "Das Fahrzeug steht nun am San Fierro Hafen!");
    Produkte[proOTTO]--;

    //3D Kennzeichen
    format(CarInfo[tmpcar][ciKennzeichen], 8, "SA%d", 100000+random(999999)); //Zufälliges Kennzeichen
    format(CarInfo[tmpcar][ciBesitzer], MAX_PLAYER_NAME, CarInfo[tmpcar][cOwner]); //Name vom Besitzer
    format(str, sizeof(str), "%s\nBesitzer: %s", CarInfo[tmpcar][ciKennzeichen], CarInfo[tmpcar][ciBesitzer]); //Text vom 3DText
    CarInfo[tmpcar][ci3DTextID] = Create3DTextLabel(str, 0xFF0000AA, 0.0, 0.0, 0.0, 50.0, 0, 1 ); //3DText erstellen
    Attach3DTextLabelToVehicle(CarInfo[tmpcar][ci3DTextID], tmpcar, 0.0, 0.0, 2.0); //3D Text anhängen

    //PutPlayerInVehicle(playerid, tmpcar, 0);
    return 1;
    }
    tmpcar++;
    }
    }

    Zitat

    Zitat von NeoPhoenix aka ArgonX5
    Zeig mal die Zeilen unter OnDialogResponse und die definierungen von LoginDialog und RegisterDialog

    Hör nicht auf NeoPhoenix, er sieht genauso schlecht wie die meisten hier ^^


    Hier die Richtige Abfrage, einfach abändern:


    if (gPlayerAccount[playerid] == 1)
    {
    new loginstring[128];
    format(loginstring,sizeof(loginstring),"Willkommen, %s\nDieser Account ist registriert.\nDu kannst dich jetzt einloggen:",plname);
    ShowPlayerDialog(playerid,LoginDialog,DIALOG_STYLE_INPUT,"Los Angeles Reallife 0.3a",loginstring,"Login","Exit");
    }
    else
    {
    gPlayerAccount[playerid] = 0;
    new regstring[128];
    format(regstring,sizeof(regstring),"Willkommen, %s\nDu hast noch keinen Account.\nBitte registriere dich:",plname);
    ShowPlayerDialog(playerid,RegisterDialog,DIALOG_STYLE_INPUT,"Los Angeles Reallife 0.3a",regstring,"Register","Exit");
    }
    //PlayerPlaySound(playerid, 1187, 0.0, 0.0, 0.0);
    PlayerInfo[playerid][pModel] = Peds[classid][0];
    SetPlayerTeamFromClass(playerid,classid);
    }
    new string[128];
    PlayerPlaySound(playerid, 1187, 0.0, 0.0, 0.0);
    PlayerInfo[playerid][pModel] = Peds[classid][0];
    if (classid == 1)


    Edit: Zitat..

    Bitte, dass sollte helfen:


    new Menu:JobMenu;
    new JobPickup;


    public OnGameModeInit()
    {
    JobMenu = CreateMenu("JobMenu", 1, 220.0, 350.0, 200.0);
    AddMenuItem(JobMenu, 0, "Job 1");
    AddMenuItem(JobMenu, 0, "Job 2");
    AddMenuItem(JobMenu, 0, "Job 3");
    AddMenuItem(JobMenu, 0, "Job 4");
    JobPickup = CreatePickup(Blah Blah...);
    }


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(pickupid == JobPickup) ShowMenuForPlayer(JobMenu, playerid);
    return 1;
    }


    public OnPlayerSelectedMenuRow(playerid, row)
    {
    if(GetPlayerMenu(playerid) == JobMenu)
    {
    if(row == 0)
    {
    //Wenn er den ersten Job auswählt..
    }
    else if(row == 2)
    {
    //Wenn er den zweiten Job auswählt (Wenn Vorhanden)..
    }
    else if(row == 3)
    {
    //Wenn er den dritten Job auswählt (Wenn Vorhanden)..
    }
    else if(row == 4)
    {
    //Wenn er den vierten Job auswählt (Wenn Vorhanden)..
    }
    }
    }

    Kein grober Unterschied Eugen, die Standart Version davon wäre


    if(strcmp(cmd, "/pee", true) == 0)
    {
    SetPlayerSpecialAction(playerid, SPECIAL_ACTION_PISSING);
    return 1;
    }
    Bedeutet, dass er den Befehl positiv (also die Nummer 1) beendet. Jedoch kann man auch den Wert von einer Funktion hernehmen, da
    SetPlayerSpecialAction(playerid, SPECIAL_ACTION_PISSING);
    den Wert 1 (also Wahr/richtig) auspuckt und sich somit Zeilen spart, dann könnte man entweder den Code so wie Pixel machen:

    if(strcmp(cmd, "/pee", true) == 0)
    {
    return SetPlayerSpecialAction(playerid, SPECIAL_ACTION_PISSING);
    }


    oder gleich noch kürzer ohne { } ^^, da nur ein Funktionsaufruf bei dem /pee Befehl ist:


    if(strcmp(cmd, "/pee", true) == 0)
    return SetPlayerSpecialAction(playerid, SPECIAL_ACTION_PISSING);

    Nein [FG]Julian, du schaust auch nichtmehr genau hin oder? ^^ Er benützt den String s für die Dateiöffnung und zum Text senden ^^ Das blöde ist, er speichert die Variable nach den Text, somit ist es ein Fail. Hier das richtige.. Deine Antwort war also nur Halbrichtig.


    dcmd_annehmen(playerid,params[])
    {
    new name[MAX_PLAYER_NAME], s[128], sn[128];
    new id = strval(strget(params, 0));
    GetPlayerName(playerid,name,sizeof(name));
    GetPlayerName(id,sname,sizeof(sname));
    format(s,sizeof(s),"acc/%s.ini",name);
    format(sn,sizeof(sn),"acc/%s.ini",sname);
    if(!strlen(params)) return SendClientMessage(playerid,Gelb,"/anehmen [playerid]");
    if(id == playerid) { SendClientMessage(playerid, Rot, "Du kannst dir nicht selbst eine anfrange akzeptieren!"); return 1; }
    if(GetPlayerMoney(playerid) < 20) { return SendClientMessage(playerid, Rot, "Du hast zu wenig geld!"); }
    new Float:x,Float:y,Float:z,Float:health;
    GetPlayerPos(id,x,y,z);
    GetPlayerHealth(playerid, health);
    if(PlayerToPoint(5.0,playerid,x,y,z))
    {
    if(dini_Int(s,"Pizza") == 1)
    {
    dini_IntSet(s,"Pizza",0); //War zu weit unten..
    SetPlayerHealth(playerid, health + 10.0);
    GivePlayerMoney(playerid, -10);
    GivePlayerMoney(id, 10);
    format(s, sizeof(s), "%s Hat deine Pizza anfrage angenommen du erhälst 10$.", name);
    SendClientMessage(id, Grün, s);
    format(s, sizeof(s), "Du hast die Pizza anfrage von %s angenommen!", sname);
    SendClientMessage(playerid, Grün, s);
    }
    else if(dini_Int(s,"Wurst") == 1)
    {
    dini_IntSet(s,"Wurst",0); //War zu weit unten..
    SetPlayerHealth(playerid, health + 10.0);
    GivePlayerMoney(playerid, -10);
    GivePlayerMoney(id, 10);
    format(s, sizeof(s), "%s Hat deine Wurst anfrage angenommen du erhälst 10$.", name);
    SendClientMessage(id, Grün, s);
    format(s, sizeof(s), "Du hast die Wurst anfrage von %s angenommen!", sname);
    SendClientMessage(playerid, Grün, s);
    }
    else
    {
    SendClientMessage(playerid, Rot, "Du hast keine Würstchen/Pizza Anfrage bekommen!");
    }
    }
    return 1;
    }

    So, aber anstatt zu kicken würde ich einfach seinen Namen ändern lassen ^^ Nebenbei 8D, wenn du den Text direkt in die Definition eingibst wie du, kannst du auch den Array vom Kompiler "zählen" lassen, also einfach leer lassen.


    new Badnames[][] = { //Namen die verboten sind
    {"Arschkrampe"},
    {"Hater"},
    {"Kobold"}
    };


    new RandomNames[][] = { //Beispiel Namen für Spieler, die mit falschen Namen hereinkommen
    {"Jürgen"},
    {"Hannes"},
    {"Thorsten"},
    {"Leopold"},
    {"Wasabi"},
    {"Aldiman"},
    {"Termifaker"}
    };


    public OnPlayerConnect(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    for(new i = 0; i < sizeof(Badnames); i++)
    {
    if(!strcmp(name,Badnames[i],true))
    {
    new rand = random(sizeof(RandomNames)), string[128];
    SetPlayerName(playerid, RandomNames[rand]);
    format(string, sizeof(string), "Da du mit einem unangebrachtem Namen auf den Server gekommen bist, wurde dein Name zu %s verändert!", RandomNames[rand]);
    SendClientMessage(playerid, 0xFFFFFF00, string);
    break;
    }
    }
    return 1;
    }

    So Odin, da ich kb hab bis 8Uhr zu warten hier hasse deinen Code:


    forward Werbung(playerid);


    new gWerbungCount[MAX_PLAYERS];
    new gWerbungTimer[MAX_PLAYERS];


    public OnPlayerConnect(playerid)
    {
    gWerbungCount[playerid] = 0:
    return 1;
    }


    public OnPlayerDisconnect(playerid)
    {
    if(gWerbungCount[playerid] != 0) KillTimer(gWerbungTimer[playerid]);
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(!strcmp(cmdtext, "/text", false))
    {
    if(!IsPlayerConnected(playerid)) return 1;
    if(gWerbungCount[playerid] != 0) return SendClientMessage(playerid, 0xFFFFFF00, "Du siehst dir gerade den Text an!");
    gWerbungCount[playerid] = 1;
    gWerbungTimer[playerid] = SetTimerEx("Werbung", 1000, 1, "d", playerid); //Jede Sekunde erscheint ein neuer Text!
    return 1;
    }
    return 0;
    }


    public Werbung(playerid)
    {
    switch(gWerbungCount[playerid])
    {
    case 1: //Text #1
    {
    //Deine Texte für Spieler
    SendClientMessage(playerid, 0xFFFFFF00, "Text #2");
    }
    case 2: //Text#2
    {
    //Deine Texte für Spieler
    SendClientMessage(playerid, 0xFFFFFF00, "Text #2");
    }
    case 3: //Text#3
    {
    //Deine Texte für Spieler
    SendClientMessage(playerid, 0xFFFFFF00, "Text #3");
    }
    //Wenn du mehr Texte einfügen willst, dann einfach weiterzählen, also:
    // case 4:
    // case 5:
    // case 6:
    // case 7:
    // usw...
    default: //Letzer Text
    {
    gWerbungCount[playerid] = 0; //Setzt Wert wieder auf 0 und es wird kein Text mehr angezeigt...
    //Dein letzter Text für den Spieler
    SendClientMessage(playerid, 0xFFFFFF00, "Letzter Text...");
    }
    }
    gWerbungCount[playerid]++; //Zählt eins rauf
    }


    Hab die Definitionen von vorher gelassen, damit du siehst was anders is...

    Danke Eugen, einmal nicht aufgepasst ^^


    Nebenbei gemerkt, funktioniert meine Variante auch als Tut. Ich gebe dir bis morgen 8Uhr die Chance es selbst herauszufinden und dieses Thema zu schließen. Ansonsten wird es dir wer anderer, oder Ich, ab 8Uhr schreiben. Somit bitte ich dich Odin nicht hierher reinzuschauen sofern es doch jemand geschrieben hat.. Den du sollst Scripten können!

    //Ganz oben im Script
    new gPlayerLogged[MAX_PLAYERS];


    //Und dort wo der Spieler sich einloggt einfach
    gPlayerLogged[playerid] = 1;


    //Und wenn er sich ausloggt in OnPlayerDisconnect einfügen:
    public OnPlayerDisconnect(playerid)
    {
    gPlayerLogged[playerid] = 0;
    return 1;
    }