Beiträge von Manniac

    Wenn du einen Stock erstellst und ihn nicht irgendwo aufrufst, sondern ihn einfach nur da stehen hast, kommt kein Error.
    Solltest du den Stock aber irgendwo aufrufen, bekommst du einen Error.

    Wird nur angzeigt wenn der Stock aufgerufen wird.


    bsp
    stock Baum(playerid)
    {
    ladebaum(playerid);
    return 1;
    }
    Kein Error


    stock Baum(playerid)
    {
    ladebaum(playerid);
    return 1;
    }
    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    Baum(playerid);
    return 1;
    }#
    Error

    if(response == 1)
    {
    SendClientMessage(playerid,WEIß,"Du hast den Betrag %d gezahlt!");
    return 1;
    }


    Speicher den Wert des Tickets in einer Variable.
    bsp:
    new fine[MAX_PLAYERS];
    bei deinem befehl
    ocmd..
    ..
    ..
    ..
    fine[pID] = betrag;


    Dann bei deinem Response
    new str[128];
    format(str,sizeof(str)," Du hast den Betrag von %d gezahlt",fine[playerid]);
    SendClientMessage(playerid, -1, str);
    //alternativ kannst du hier noch "fine" resetten

    Achja, schreibe deinen Befehl so
    ocmd:ticket(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,WEIß,"Du bist kein agestellter bei der Polizei");
    if(DutyPD[playerid] == 0)return SendClientMessage(playerid,WEIß,"Du bist nicht im Dienst");
    new pID, grund[265], betrag;
    if(sscanf(params,"us[128]d",pID,grund,betrag)) return SendClientMessage(playerid,HELLBLAU,"Benutze: /Ticket [PLAYERID] [GRUND] [STRAFE]");
    format(grund,sizeof(grund),"Du hast ein Ticket bekommen GRUND: %s \nDu musst eine Betrag von %d zahlen", grund, betrag);
    ShowPlayerDialog(pID, DIALOG_TICKET, DIALOG_STYLE_MSGBOX, "TICKET", grund, "Bezahlen", "Flüchten");
    return 1;
    }


    if(IsPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,ROT,"*((%s %s: %s))",GetRang(playerid),Spielername(playerid,text);


    Füge einfach dann noch meinen stock hinzu

    stock GetRank(playerid)
    {
    new str[31];
    switch(SpielerInfo[playerid][pAdminlevel])//ich nehme mal an, du speicherst so deine adminlevel
    {
    case 0:
    {
    strcat(str,"Spieler");
    }
    case 1:
    {
    strcat(str,"Probesupporter");
    }
    case 2:
    {
    strcat(str,"Supporter");
    }
    case 3:
    {
    strcat(str,"Moderator");
    }
    case 4:
    {
    strcat(str,"Administrator");
    }
    case 5:
    {
    strcat(str,"Teamleiter");
    }
    case 6:
    {
    strcat(str,"Projektleiter");
    }
    case 7:
    {
    strcat(str,"Scripter");
    }
    }
    return str;
    }

    Dein Code ist total sinnlos. Sind Fehler enthalten etc.


    Um einen OOC zu gestalten, musst du dir erst ein paar Fragen stellen.
    -Wer soll schreiben können
    -Wer soll das lesen können
    -Kann man ihn aktivieren/deaktivieren?


    Hier mal ein kleiner Code mit erklärung für dich
    stock SpielerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }
    Hiermit bekommen wir den Namen des Spielers


    Ich arbeite hier mal mit ocmd &sscanf
    new gc = 0;
    Ganz oben erstellen, damit wir wissen, ob der chat an oder aus ist.
    ocmd@2:gc,globalerchat(playerid,params[])
    {
    new text[128];//neuer string
    if(gc == 0)return SendClientMessage(playerid, -1, "Der Globale Chat wurde deaktiviert!");//wenn der chat aus ist
    if(sscanf(params,"s[128]", text))return SendClientMessage(playerid, -1, " /gc <text>");//sollten keine parameter angegeben worden sein
    new string[128];//neuer string zum formatieeren
    format(string,sizeof(string)," %s: %s",SpielerName(playerid),text);//wir formatieren den string, da wir %s bei der native SendClientMessageToAll nicht verwenden können
    SendClientMessageToAll(-1, string);//wir senden den string an alle Spieler
    return 1;
    }
    ocmd:gca(playerid,params[])
    {
    new status;//neue variable
    if(sscanf(params, "i", status))return SendClientMessage(playerid, -1, " /gca < 1 = ja > < 2 = nein >");//wir können den chat mit /gca 1 anschalten, mit /gca 2 ausschalten
    if(status > 2 || status < 1)return SendClientMessage(playerid,-1," Nur 1 oder 2 möglich!");//man kann nur 1 oder 2 eingeben
    if(status == 1 && gc != 1)//falls wir 1 eingegeben haben und der chat nicht an ist
    {
    gc = 1;//globale var auf 1 gesetzt
    SendClientMessageToAll( -1, "Globaler Chat aktiviert!");
    }
    else if(status == 2 && gc !=2)//falls wir 2 (nein) angegeben haben und der chat nicht aus ist
    {
    gc =0;//var wird auf 0 gesetzt
    SendClientMessageToAll( -1, " Globaler Chat deaktiviert!");
    }
    return 1;
    }

    Ich würde das via Enum lösen. So kannst du ganz einfach Variablen hinzufügen


    enum e_Vehicleinfo//name des nums
    {
    vid,
    f1,//farbe1
    f2,//farbe2
    mzustand//wenn es ein Float sein soll -> Float:mzustand
    }
    new Vdata[MAX_VEHICLES][e_Vehicleinfo];//deklarierung
    ocmd:veh(playerid,params[])//befehl um auto zu erstellen
    {
    new vid,f1,f2,Float:pos[3];
    if(sscanf(params,"ddd", vid,f1,f2))return SendClientMessage(playerid, 1-, " /veh <vid> <farbe1> <farbe2>");
    GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
    new vehicle = CreateVehicle(vid,pos[0],pos[1],pos[2],0,f1,f2,50);
    PutPlayerInVehicle(playerid,vehicle,0);
    Vdata[vehicle][mzustand] = 100;//var wird geändert
    Vdata[vehicle][vid] = vi;//var wird geändert
    return 1;
    }
    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER)
    {
    new s[64];
    new vehiclei = GetPlayerVehicleID(playerid);
    format(s,sizeof(s)," Modelid: %d, Zustand: %d", Vdata[vehiclei][vid],Vdata[vehiclei][mzustand]);//daten aus der var werden übergeben bzw ausgelesen
    SendClientMessage(playerid, -1, s);
    }
    return 1;
    }


    Ungetestet, sollte vom Prinzip her so funktionieren