Beiträge von KornChief

    Hier weißt du der Integervariable "t" einen string " ... " zu.
    new t="GangZoneLS"


    Versuch stattdessen mal new t = GangZoneLS,
    da du wahrscheinlich GangZoneLS = GangZoneCreate(...) hast.

    Unter OnPlayerConnect oder OnPlayerRequestSpawn

    new string[100];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name, sizeof name);
    format(string,sizeof string,"%s.ini",name);
    if(fexist(string))
    {
    ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Logge in, please!", "Welcome Back, please log in!", "Login", "Cancel");
    }
    else
    {
    ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Register, please!", "It's your first vist. Register please", "Register", "Cancel");
    }



    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    new string[24];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name, sizeof name);
    format(string,sizeof string,"%s.ini",name);
    if(dialogid == 1)
    {
    if(!response)
    {
    ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Logge in, please!", "Welcome Back, please log in!", "Login", "Cancel");
    SendClientMessage(playerid,0xAA3333AA,"*** Account Exists. Login to continue!");
    return 1;
    }
    new File: User = fopen(string,io_read);
    new search[100];
    while(fread(User,search,sizeof search))
    {
    if(strcmp("Password=",search,false,9) == 0)
    {
    new pw[100];
    strmid(pw,search,9,strlen(search));

    if(strcmp(pw,inputtext,false)==0)
    {
    SendClientMessage(playerid,0xAA3333AA,"Logged in!");
    Logged[playerid] = true;
    }
    else
    {
    SendClientMessage(playerid,0xAA3333AA," Bad Password!");
    ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Logge in, please!", "Welcome Back, please log in!", "Login", "Cancel");
    }
    }
    }
    }
    else if(dialogid == 2)
    {
    if(!response) return SendClientMessage(playerid,0xAA3333AA,"Dont forget to register befor you leave :)");
    new File: User = fopen(string,io_write);
    new save[100];
    format(save,sizeof save,"Password=%s",inputtext);
    fwrite(User,save);
    fclose(User);
    SendClientMessage(playerid,0xAA3333AA," Registered!");
    }
    return 1;
    }

    // Ungetestet :)



    Meinst du soetwas?

    Weed kannst du als ganz einfache Variable deklarieren,wie

    new WEEDGramm[MAX_PLAYERS];


    // Im Command, wo mans haben soll:
    WEEDGramm[playerid]++;
    //bzw.
    WEEDGramm[playerid] += x;


    Was mir aufgefallen ist, deine Variabeln, wie WEEDgepflanzt sind einmalig und keine Arrys. D.h. wenn jemand /weedpflanzen macht, wäre das WEEDgepflanzt für alle auf 1 gesetzt.
    Benutzt daher new WEEDgeplfanzt[MAX_PLAYERS] (= für jeden Spieler existiert diese Variabel nun...). Verwendung dann mit WEEDgepflanzt[playerid]; . Nebenbei: Da du sowieso nur zwischen "1" und "0" unterscheidest, reicht true und false => bool.



    // Ganz Oben
    enum AcceptInfo
    {
    gewicht,
    preis,
    dealer
    }
    new Accept[MAX_PLAYERS][AcceptInfo];
    new WEEDgramm[MAX_PLAYERS];



    // Unter das OnPlayerCommandText


    new cmd[128];
    new tmp[128];
    new giveplayerid, moneys, idx;


    cmd = strtok(cmdtext, idx);
    if(!strcmp(cmd,"/accept",true))
    {
    if(Accept[playerid][gewicht] <= 0 || Accept[playerid][preis] <= 0) return SendClientMessage(playerid,COLOR_GREEN,"*** Du hast kein Angebot!");
    if(GetPlayerMoney(playerid) < Accept[playerid][preis]) return SendClientMessage(playerid,COLOR_GREEN,"*** Du hast kein Geld dafür im Moment!");
    WEEDgramm[playerid] += Accept[playerid][gewicht];
    GivePlayerMoney(playerid, -Accept[playerid][preis]);
    SendClientMessage(playerid,COLOR_GREEN,"*** Weed angenommen. Viel Spaß damit !");
    GivePlayerMoney(Accept[playerid][dealer],Accept[playerid][preis]);
    Accept[playerid][gewicht] = 0;
    Accept[playerid][preis] = 0;
    Accept[playerid][dealer] = 0;
    // Was auch immer
    return 1;
    }
    if(!strcmp(cmd,"/weedsell",true))
    {
    if(WEEDgramm[playerid] == 0) return SendClientMessage(playerid,COLOR_GREEN,"*** Du hast kein Weed (0 Gramm)");
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid,COLOR_GREEN,"USE: /weedsell [ID] [GRAMM] [PREIS]!");
    giveplayerid = ReturnUser(tmp);
    if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid,COLOR_GREEN,"*** Angegebener User nicht online!");
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid,COLOR_GREEN,"USE: /weedsell [ID] [GRAMM] [PREIS]!");
    new gramm = strval(tmp);
    if(gramm <= 0 || gramm >= 1000) return SendClientMessage(playerid,COLOR_GREEN,"*** Gramm muss zwischen 1 und 999 sein!");
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid,COLOR_GREEN,"USE: /weedsell [ID] [GRAMM] [PREIS]!");
    moneys = strval(tmp);
    if(moneys <= 0) return SendClientMessage(playerid,COLOR_GREEN,"*** Preis muss über 0 sein!");
    SendClientMessage(playerid,COLOR_GREEN,"*** Weedangebot abgegeben!");
    Accept[giveplayerid][gewicht] = gramm;
    Accept[giveplayerid][preis] = moneys;
    Accept[giveplayerid][dealer] = playerid;
    return 1;
    }



    // ReturnUser Code falls du ihn nicht hast. Ist von mir gibts aber bestimmt von irgendwem anders besser
    stock ReturnUser(strings[])
    {
    new count = 0;
    new len = strlen(strings);
    if(len > 3)
    {
    for(new i = 0; i < MAX_PLAYERS;i++)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(i,name,sizeof(name));
    if(!strcmp(name,strings,false,MAX_PLAYER_NAME))
    {
    return i;
    }
    else
    {
    count = 1;
    }
    }
    }
    else
    {
    return strval(strings);
    }
    return (count == 1) ? (INVALID_PLAYER_ID) : (strval(strings));
    }

    Es ist spät, ich bin müde und hab den Code ungetestet aus dem Kopf geschrieben. Hoffe daher, dass es klappt, sonst mach ich es dir heute (später) richtig. :)
    Für Neulinge empfiehlt sich aber dcmd & sscanf
    [ SCRIPTING ] Commands mit Parametern
    by Goldkiller.

    Scripter:
    1. DMA
    2. Blackfox
    3. Sebi
    4. KeksofDeath | Goldkiller
    5. Bright


    ..nach Wissensstand und nicht Realeses.


    Mapper:
    1. Antonio (Aldi Server war einer der besten Stunt Server :) )
    2. DaNNy


    Designer:
    1. HappyMeal
    2. Armenia

    Also ich sehe kein "case" (denke es fehlt bei dir..) und "};" sollte eh nicht klappen. Stock heißt, wenn du es nicht benutzt,liest er es sich gar nicht erst durch...daher keine Errors

    Ich erkläre es dir, den Rest musst du selber machen:


    Dann mach folgendes (baut auf den eben gennanten "Grundkenntnissen" auf):



    // Oben
    new belegt;


    // im Command
    SetPlayerPos(playerid,spawns[belegt][x],spawns[belegt][y],spawns[belegt][z]);
    belegt++;


    // Wir wissen ja bereits, dass die erste "[ ]" die ZEILE angibt und die zweite "[ ]" die einzelnen Spalten.
    // Am Anfang ist "belegt" 0. D.h. er setzt den User auf die Koords der Zeile 0. Nun addieren wir 1 dazu.
    // D.h. beim 2. Durchgang (wenn jemand wieder /derby macht) wird es auf 1 sein. Daher wird er auf die Koords der Zeile 1 gesetzt.



    http://wiki.sa-mp.com/wiki/PutPlayerInVehicle


    Bsp:

    public OnPlayerEnterVehicle(playerid,vehicleid,ispassanger)
    {
    PutPlayerInVehicle(playerid, vehicleid, 0);
    return 1;
    }

    2 Sachen:


    1. Du hast /register PASSWORT, d.h. einen Command mit einem Parameter. Diese funktionieren anders, im Gegensatz zu "/help" oder "/enter" zB.
    Dazu gibt es ganz viele Varianten (strtok,strget,ycmd,zcmd,dcmd,sscanf,explode,...). Am einfachsten ist dcmd & sscanf.
    Tutorial von Goldkiller dazu: [ SCRIPTING ] Commands mit Parametern
    ( Für die anderen gibt es kein Tutorial,....)


    2. du hast kein "return", daher wird nichts zurückgegeben...

    1. Bitte nächstes mal nur die Zeilenabschnitte verwenden, denn das gescrolle nervt...


    2. in Zeile 36 das "," am Ende entfernen.


    3.
    SetPlayerPos(playerid, spawns[ex], spawns[ey], spawns[ez]);
    new spawns[][espawn] = {
    {CODE}
    };


    Das "spawns" ist ein Arry, am besten merkst du es dir so:
    new spawns[ZEILE][SPALTE]
    Nun gibst du nur an "spawns[X-Spalte]" - als Beispiel. Woher soll das Script wissen welche Zeile?
    Daher spawns[4][ex] zB.


    Random Variante:
    new rand = random(sizeof(spawns)); -> Random der größe des ersten Indexes ( sprich erste eckige Klammer ). Wolltest du das 2. : new rand = random(sizeof(spawns[]));
    spawns[rand][ex],spawns[rand][ey],....


    Hoffe es klappt :)