Beiträge von IceWave

    hi, ich habe mal eine Frage zu Variablen.
    Kann ich z.b bei einem Fahrzeugverleih wenn ich das Car dann nach 10 Min löschen will,
    das Fahrzeug beim erstellen einfach in einer Variable speichern?
    Z.b. new verleih = AddStatic.....
    Oder muss man dass spezifisch für den Spieler machen? Weil so kann man ja nur 1 Fahrzeug darin speichern oder ?

    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 ?

    Ich bins leider nochmal, habe das jetzt mit den Case probiert:
    GetPlayerRangName(playerid)
    {
    new rName[32]="Co Leader des SFPD";
    switch(sInfo[playerid][fraktion])
    {
    case 1:
    {
    switch(sInfo[playerid][frang])
    {
    case 1: rName="Azubi des LSPD";
    case 2: rName="Polizist I";
    case 3: rName="Polizist II";
    case 4: rName="Polizist III";
    case 5: rName="Co Leader des LSPD";
    case 6: rName="Leader des LSPD";
    }
    }
    case 2:
    {
    switch(sInfo[playerid][frang])
    {
    case 1: rName="Azubi des SFPD";
    case 2: rName="Polizist I";
    case 3: rName="Polizist II";
    case 4: rName="Polizist III";
    case 5: rName="Co Leader des SFPD";
    case 6: rName="Leader des SFPD";
    }
    }
    }
    return 1;
    }


    ocmd:f(playerid,params[])
    {
    new name[MAX_PLAYER_NAME], text[128];
    if(isPlayerInFrakt(playerid,0))return SendClientMessage(playerid,ROT,"Du bist in keiner Fraktion!");
    if(sscanf(params,"s[128]",text))return SendClientMessage(playerid,ROT,"Befehl: /f 'Nachricht'");
    new fID = sInfo[playerid][fraktion];
    GetPlayerName(playerid,name,sizeof(name));
    format(text,sizeof(text),"**((%s %s: %s ))**",GetPlayerRangName(playerid),name,text);
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(!isPlayerInFrakt(i,fID))continue;
    SendClientMessage(i,HELLBLAU,text);
    }
    return 1;
    }



    Habe aber jetzt einen komischen Fehler.
    Wenn ich mir z.b einen Rang gebe mit /giverang meineID 3


    Dann steht wenn ich als nächsten Befehl /f test schreibe in der Zeile: **((meineID 3 Kontrax: test))**



    Ich hoffe ihr könnt mir weiterhelfen, verstehe dass gerade gar nicht:D

    Wenn du nichts dahinter schreibst (so wie du es hattest), dann wird automatisch die nächste Zeile genommen.
    Es ist also immer besser es direkt dahinter zu schreiben, oder die geschweiften Klammern zu verwenden.


    Also ist die if Abfrage dann eigentlich wirkungslos wenn nichts dahinter steht oder?


    und wenn man return 0 dahinter schreibt? Oder muss return 1 hin?






    Und ist es besser mit case zu arbeiten?
    Noch was kleines, in den Tutorials habe ich immer gesehen dass Funktionen ohne stock erstellt werden? Für was braucht man diese dann überhaupt?




    Danke schonmal! :thumbup:

    Ok, Danke aber hätte es mit dieser Abfrage trotzdem funktioniert?
    if(sInfo[playerid][frang] > 0)
    Oder muss man wenn man es so macht immer reinschreiben was dann passieren soll?
    Also so:
    if(sInfo[playerid][frang] > 0)
    {
    Rang größer 0
    }
    else
    {
    Rang kleiner gleich 0
    }







    und nochwas dazu, kann ich statt der Nachricht nach dem return auch einfach return 0; schreiben? Das sagt ja dass die Funktion abgebrochen wird oder?

    ocmd:f(playerid,params[])
    {
    new name[MAX_PLAYER_NAME], text[128];
    if(isPlayerInFrakt(playerid,0))return SendClientMessage(playerid,ROT,"Du bist in keiner Fraktion!");
    if(sscanf(params,"s[128]",text))return SendClientMessage(playerid,ROT,"Befehl: /f 'Nachricht'");
    new fID = sInfo[playerid][fraktion];
    GetPlayerName(playerid,name,sizeof(name));
    if(isPlayerInFrakt(playerid,1))
    if(sInfo[playerid][frang] > 0)

    {
    format(text,sizeof(text),"**((%s %s: %s ))**",LSPDRangName[sInfo[playerid][frang]-1],name,text);
    }
    else if(isPlayerInFrakt(playerid,2))
    {
    format(text,sizeof(text),"**((%s %s: %s ))**",MedicRangName[sInfo[playerid][frang]-1],name,text);
    }
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(!isPlayerInFrakt(i,fID))continue;
    SendClientMessage(i,BLAU,text);
    }
    return 1;
    }


    So, Problem ist jetzt wenn ich in Fraktion 1 mit /f hallo schreibe steht das richtig da: **((Rangname Kontrax: Hallo))**
    Bei Fraktion 2 siehts so aus im Chat: Hallo

    Jetzt gehts, Fehler war ich arbeite mit 6 Rängen und hatte oben erst 2 Rangnamen hinzugefügt
    Hab aber trotzdem die Abfrage noch eingefügt.


    else if(isPlayerInFrakt(playerid,2)) habe ich hier was falsch gemacht?
    Die Rangnamen werden jetzt nur in Fraktion 1 angezeigt, bei Fraktion 2 wird nur der eingegebene Text geschrieben.
    Genauso wenn ich mir Rang 0 gebe wird auch nur der eingegebene Text geschrieben, ohne Rangname

    Hi, bekomme den Fehler dass der Befehl nicht existiert


    ocmd:f(playerid,params[])
    {
    new name[MAX_PLAYER_NAME], text[128];
    if(isPlayerInFrakt(playerid,0))return SendClientMessage(playerid,ROT,"Du bist in keiner Fraktion!");
    if(sscanf(params,"s[128]",text))return SendClientMessage(playerid,ROT,"Befehl: /f 'Nachricht'");
    new fID = sInfo[playerid][fraktion];
    GetPlayerName(playerid,name,sizeof(name));
    if(isPlayerInFrakt(playerid,1))
    {
    format(text,sizeof(text),"**((%s %s: %s ))**",LSPDRangName[sInfo[playerid][frang]-1],name,text);
    }
    else if(isPlayerInFrakt(playerid,2))
    {
    format(text,sizeof(text),"**((%s %s: %s ))**",MedicRangName[sInfo[playerid][frang]-1],name,text);
    }
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(!isPlayerInFrakt(i,fID))continue;
    SendClientMessage(i,BLAU,text);
    }
    return 1;
    }
    Liegt dass dran dass ich die Schleife an der falschen Stelle habe?

    Ok, also gar nicht mit case arbeiten`?



    Und Pawn fängt doch immer bei 0 zu zählen an oder?
    Also wäre Supporter dann = Adminrank 0

    Danke, dann noch eine Frage:
    Kann man das auch Global oder so machen, oder muss ich die jedes mal wenn ich sie
    verwenden möchte extra erstellen?



    Genau so bei den Fraktionen, muss ich dass ja genau so machen, wenn ich bei jeder Frak verschiedene Namen will oder?

    Funktioniert schon, so:
    if(sInfo[playerid][adminlevel] == 1)
    {
    Rangnameadmin = "Supporter";
    }
    else if(sInfo[playerid][adminlevel] == 2)
    {
    Rangnameadmin = "Moderator";
    }
    else if(sInfo[playerid][adminlevel] == 3)
    {
    Rangnameadmin = "Super Moderator";
    }
    else if(sInfo[playerid][adminlevel] == 4)
    {
    Rangnameadmin = "Administrator";
    }
    else if(sInfo[playerid][adminlevel] == 5)
    {
    Rangnameadmin = "Projektleiter";
    }




    Aber ich hab mal gehört dass es besser ist case zu verwenden, darum immer noch die Frage, ob jemand weiss was falsch ist daran