Beiträge von Rastla

    Ich sagte auch nicht dass C# nur für Spieleprogrammieren verwendet wird, und natürlich meine ich es im Zusammenhang mit XNA.
    Ich habe auch nie geschrieben dass das eine niedriger oder höher ist, dass C++ eine Erweiterung von C ist habe ich auch geschrieben, also warum schnautzt du mich so an? 8|


    ps:
    Zitat von Wikipedia:
    Zahlreiche Sprachen, wie C++, Objective-C, C#, Java, PHP oder Perl orientieren sich an der Syntax und anderen Eigenschaften von C.
    Also ist C# quasi ein "Dialekt" von C.
    Ich hab es ja auch aus Absich unter Anführungszeichen gesetzt..

    Was genau ist denn der Unterschied zwischen C, C++ und C# ?

    Naja, C ist eigentlich ca. so wie Pawn, C++ hab ich noch nie gemacht, dürfte aber das gleiche sein wie C
    C# ist mit lauter Punkten^^
    Beispiel
    Pawn: format(string1,sizeof(string1),"Der String heißt: %s",kA);
    C#: string1=string.format("Der String heißt: {0}",kA);


    ps: MTA verwendet Lua


    //edit: MTA ist einfach ne andere "Firma" als SAMP^^

    Hallo, irgendwie schaffe ich es nicht im Script den Namen zu vergleichen


    rcmd("/befehl")
    {
    new DaAdmin3[MAX_PLAYER_NAME];
    GetPlayerName(playerid,DaAdmin3,sizeof(DaAdmin3));
    if(DaAdmin3=="Rastla")
    {
    //Befehl halt.
    }
    return 1;
    }
    Error:

    Code
    error 033: array must be indexed (variable "DaAdmin3")


    :S

    //Edit: Pack ma den Pastebin link in den ersten Post, sonst wird der leicht übersehen
    //Edit2: Downloadink geht nicht mehr Pastebin geht noch :huh:

    Hab ich in den ersten Post getan, hatte ich eigentlich gestern schon, da hatte ich die Datei auf dem Hoster gelöscht, sodass sie nur auf Pastebin ist. Jedoch wurde heute ja ein Backup vom Forum eingespielt, zumindest was die Beiträge betrifft, und deshalb war nur der alte Link im ersten Post^^

    Hallo!
    Ich hätte einen Verbesserungsvorschlag für das Hauptmenü bzw. die Topleiste, oder wie man dazu sagt.
    Jedenfalls meine ich das wo die ganzen Links sind: Forum, Suche, Wiki, Chat, Mitglieder, Premium


    Mein Vorschlag wäre dass das nicht mit nach unten geht, also ich möchte nicht dass das so fix da oben bleibt.
    Denn Beiträge lesen ist da oft eine Qual. Da muss ich jetzt so oft scrollen weil ich einen 16:9 Bildschirm habe.

    Anscheinend wurde das Forum ja geupdated (leider)
    Deshalb hier nochmal Pastebin Link mit aktueller Version 1.0.1: http://pastebin.com/sn0mM58B


    //edit:Nochmal Fragen an meinen Vorposter:

    Zitat
    • Pastebin is ein MUSS !
    • Sowas kann jeder newbie Scripten.
    • Falls du das den leuten UNBEDINGT zeigen musst, Nützliche Codeschnipsel bereich benutzen. ;)

    1. Link jetzt da
    2. Ich konnte es als Scriptnoob nicht
    3. Ein Tutorial dort würde sofort untergehen.


    Außerdem ist es für Anfänger oder auch STRCMP-Nutzer, also Shut-Up mit deinem DCMD oder ZCMD oder was du auch gerne magst. Musst nicht alle anderen Befehlsarten niedermachen.
    OCMD ist z.B. schneller als DCMD und ca. gleich schnell wie ZCMD, du sagst trotzdem es ist scheiße. :thumbdown:

    Servus!
    Hiermit präsentiere ich RCMD.


    Es soll das Erstellen von Commands vereinfachen, bzw. den Vorgang schneller machen.


    Was tut RCMD?
    Es ersetzt den ganzen strcmp Teil mit einem einfachen rcmd.
    Beispiel:
    rcmd("/testcommand")
    {
    SendClientMessage(playerid,COLOR_WHITE,"TIPP: /testcmd [Text]");
    return 1;
    }
    Man kann auch 2er Commands damit erstellen:
    rcmd2("/testcommand","/testcmd")
    {
    SendClientMessage(playerid,COLOR_WHITE,"TIPP: /testcmd [Text]");
    return 1;
    }
    Es werden auch noch 2 zusätzliche Funktionen eingebunden.
    rcmd_getvalue und rcmd_getstring
    Diese kann man z.B. so verwenden:
    Beispiel rcmd_getvalue:
    rcmd2("/testcommand","/testcmd")
    {
    new Wert=rcmd_getvalue(cmdtext,1);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))return SendClientMessage(playerid,COLOR_WHITE,"/testcommand [Zahl]");
    format(string,sizeof(string),"Test erfolgreich! Anhang: %i",Wert);
    SendClientMessage(playerid,COLOR_WHITE,string);
    return 1;
    }
    Gibt die Zahl aus die man nach /testcommand, bzw. /testcmd eingegeben hat.


    Beispiel rcmd_getstring:
    rcmd("/testcmd2")
    {
    new Wert[256];
    Wert=rcmd_getstring(cmdtext,50);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))return SendClientMessage(playerid,COLOR_WHITE,"TIPP: /testcmd2 [Text]");
    format(string,sizeof(string),"Test erfolgreich! Anhang: %s",Wert);
    SendClientMessage(playerid,COLOR_WHITE,string);
    return 1;
    }


    Die Installation:
    Die Include: http://pastebin.com/sn0mM58B
    Die Datei runterladen und ins Verzeichnis Pawno/include reinkopieren.


    Danach beim Gamemode oben folgende Zeile einfügen:
    #include <rcmd>


    Dann bei OnPlayerCommandText das einfügen:
    new rcmd_cmd[256];
    new rcmd_idx;
    rcmd_cmd = strtok(cmdtext, rcmd_idx);


    Das war's eigentlich schon ;)



    ps: Dieses Include ist besonders für Anfänger gedacht.


    Mfg,
    Firefox

    Hmm... ne doch nicht X(


    Hab das jetzt so:
    new File: gUserFile = fopen("rFraktionen/Aztecas.ini", io_read);
    new key[256] , val[256];
    new Data[256];
    while ( fread( gUserFile , Data , sizeof( Data ) ) )
    {
    key = ini_GetKey( Data );
    if( strcmp( key , "RankN1" , true ) == 0 ) { val = ini_GetValue( Data ); strmid(GangInfo[1][RankN1] ,val, 0, 256, 256);}
    if( strcmp( key , "RankN2" , true ) == 0 ) { val = ini_GetValue( Data ); strmid(GangInfo[1][RankN2] ,val, 0, 256, 256);}
    if( strcmp( key , "RankN3" , true ) == 0 ) { val = ini_GetValue( Data ); strmid(GangInfo[1][RankN3] ,val, 0, 256, 256);}
    if( strcmp( key , "RankN4" , true ) == 0 ) { val = ini_GetValue( Data ); strmid(GangInfo[1][RankN4] ,val, 0, 256, 256);}
    if( strcmp( key , "RankN5" , true ) == 0 ) { val = ini_GetValue( Data ); strmid(GangInfo[1][RankN5] ,val, 0, 256, 256);}
    if( strcmp( key , "RankN6" , true ) == 0 ) { val = ini_GetValue( Data ); strmid(GangInfo[1][RankN6] ,val, 0, 256, 256);}
    if( strcmp( key , "RankNL" , true ) == 0 ) { val = ini_GetValue( Data ); strmid(GangInfo[1][RankNL] ,val, 0, 256, 256);}
    }
    fclose(gUserFile);
    Aber er liest das nicht aus, wenn ich anstatt von "val" "Data" nehme, dann schreibt er mir ingame RankN1= rein, also das mit strmid passt würde ich sagen.


    /*edit: Wenn ich anstatt von val z.B.: "123Test" nehme, dann wird ingame 123Test ausgegeben, also kanns nur am ini_GetValue oder so liegen /edit*/
    Irgendwas mit der val stimmt nicht :/
    Was soll ich statt ini_GetValue nehmen?


    stock ini_GetValue( line[] )
    {
    new valRes[256];
    valRes[0]=0;
    if ( strfind( line , "=" , true ) == -1 ) return valRes;
    strmid( valRes , line , strfind( line , "=" , true )+1 , strlen( line ) , sizeof( valRes ) );
    return valRes;
    }

    Vielleicht weil du TextDrawShowForPlayer(playerid); auskommentiert hast :D

    Ok, Danke erstemal :)
    Der Befehl klappt mal:
    if(strcmp(cmd, "/setrankname", true) == 0)
    {
    if(AccountInfo[playerid][leader] >= 1)
    {
    if(!strlen(strget(cmdtext,1)))
    return
    SendClientMessage(playerid,COLOR_GREY,"Benutze: /setrankname [Rank-ID] [Rankname]");
    new rankid = strval(strget(cmdtext,1));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[21];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(result[idx]>21){SendClientMessage(playerid,COLOR_RED,"Maximal 20 Zeichen!");}
    else{
    new PlayerGangID = AccountInfo[playerid][leader];
    if(rankid==1){strmid(GangInfo[PlayerGangID][RankN1], result, 0, strlen(result), 32);}
    else if(rankid==2){strmid(GangInfo[PlayerGangID][RankN2], result, 0, strlen(result), 32);}
    else if(rankid==3){strmid(GangInfo[PlayerGangID][RankN3], result, 0, strlen(result), 32);}
    else if(rankid==4){strmid(GangInfo[PlayerGangID][RankN4], result, 0, strlen(result), 32);}
    else if(rankid==5){strmid(GangInfo[PlayerGangID][RankN5], result, 0, strlen(result), 32);}
    else if(rankid==6){strmid(GangInfo[PlayerGangID][RankN6], result, 0, strlen(result), 32);}
    else if(rankid==7){strmid(GangInfo[PlayerGangID][RankNL], result, 0, strlen(result), 32);}
    else{SendClientMessage(playerid,COLOR_RED,"Ungültige Rank-ID!");}
    format(string,sizeof(string),"Du hast den Namen von Rang %d auf '%s' geändert!",rankid,result);
    SendClientMessage(playerid,LIGHTBLUE,string);
    }


    }
    else
    {
    SendClientMessage(playerid, COLOR_LIGHTRED,"Du darfst diesen Befehl nicht benutzen !");
    }
    return 1;
    }


    Mein Problem ist jetzt, dass wenn ich "/setrankname 1 Blubb" eingebe, dann ist der Rankname "1 Blubb"
    Wie kann ich denn das jetzt machen..


    Also mein Problem ist halt, ich will nur den 2. Teil den man eingibt abfragen, aber mir ist noch immer ein Rätsel wie ich das anstellen soll.

    Hallo!
    Ich kenn wieder mal meinen Fehler nicht^^
    if(strcmp(cmd, "/setrankname", true) == 0)
    {
    if(AccountInfo[playerid][leader] >= 1)
    {
    if(!strlen(strget(cmdtext,1)))
    return
    SendClientMessage(playerid,COLOR_GREY,"Benutze: /setrankname [Rank-ID] [Rankname]");
    new rankid = strval(strget(cmdtext,1));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[21];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(result[idx]>21){SendClientMessage(playerid,COLOR_RED,"Maximal 20 Zeichen!");}
    else{
    new PlayerGangID = AccountInfo[playerid][leader];
    if(rankid==1){GangInfo[PlayerGangID][RankN1]=result;} //Zeile 2797
    else if(rankid==2){GangInfo[PlayerGangID][RankN2]=result;}//Zeile 2798
    else if(rankid==3){GangInfo[PlayerGangID][RankN3]=result;}//Zeile 2799
    else if(rankid==4){GangInfo[PlayerGangID][RankN4]=result;}//Zeile 2800
    else if(rankid==5){GangInfo[PlayerGangID][RankN5]=result;}//Zeile 2801
    else if(rankid==6){GangInfo[PlayerGangID][RankN6]=result;}//Zeile 2802
    else if(rankid==7){GangInfo[PlayerGangID][RankNL]=result;}//Zeile 2803
    else{SendClientMessage(playerid,COLOR_RED,"Ungültige Rank-ID!");}
    }


    }
    else
    {
    SendClientMessage(playerid, COLOR_LIGHTRED,"Du darfst diesen Befehl nicht benutzen !");
    }
    return 1;
    }


    Errors: