Beiträge von ...

    Hi,


    ich bin gerade dabei einen kleinen Map Editor zu scripten mit dem man sich für kleine Events eine kleinere Map zusammenbauen kann.


    Leider bekomme ich ein paar Errors:
    Hier die Errors:


    ***\gamemodes\MapEditor.pwn(87) : error 033: array must be indexed (variable "object")
    ***\gamemodes\MapEditor.pwn(88) : error 033: array must be indexed (variable "object")
    ***\gamemodes\MapEditor.pwn(88) : warning 215: expression has no effect
    ***\Scripting 2\gamemodes\MapEditor.pwn(88) : error 001: expected token: ";", but found ")"
    ***\Scripting 2\gamemodes\MapEditor.pwn(88) : error 029: invalid expression, assumed zero
    ***\Scripting 2\gamemodes\MapEditor.pwn(88) : fatal error 107: too many error messages on one line


    Hier die Zeile(n) der Fehlermeldungen:


    new idx;
    new cmd[128];
    new tmp[128];
    new object[6];
    cmd = strtok(cmdtext, idx);

    if (strcmp("/createobject", cmdtext, true, 10) == 0)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, RED, "Benutze /createobject [Object ID]");
    return 1;
    }
    object = strval(tmp);
    if(object > 1 && < 18112)
    {
    SendClientMessage(playerid, RED, "Es gibt nicht mehr als 18112 Objects!");
    return 1;
    }

    Es geht mir eig. mehr darum dass man beschreibt was das Problem ist wenn man die Lösung will.
    Ich könnte dir ja auch ohne jeden Kommentar ein GF vorsetzen und fragen wo der Fehler ist.

    Buuuh, würde es euch gefallen wenn ihr ein mehr als 25k Zeilen langes Script codet und euch dann jeder sagt dass es "scheisse" ist? Der Grund warum das GF so weit verbreitet ist ist der dass es eigentlich ein sehr gutes RP Script ist.

    Dann füg das auch noch irgendwo bei OnPlayerCommandText dazu.


    Edit: Der tote Keks war schneller. ^^


    Nochmal der /add Cmd bei mir im Script (Er funktioniert bei mir perfekt)
    if(strcmp(cmd,"/add", true) == 0)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, 0xFF0000FF, "Benutze /add [Waffenname]"); //Bei dem Hexadezimalen Code die Farbe einfügen
    return 1;
    }
    new pickup;
    pickup = strval(tmp);
    if (PlayerInfo[playerid][pAdmin] >= 4) //Die 4 durch das jeweilige Adm Level ersetzen
    {
    new Float:x ,Float:y ,Float:z;
    GetPlayerPos(playerid, x, y, z);
    CreatePickup(pickup, 2, x+3, y, z);
    }
    return 1;
    }

    Du Genie sollst ja auch ned das "OnPlayerCommandText" mitkopieren.



    if(strcmp(cmd,"/add", true) == 0)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, 0xFF0000FF, "Benutze /add [Waffenname]"); //Bei dem Hexadezimalen Code die Farbe einfügen
    return 1;
    }
    new pickup;
    pickup = strval(tmp);
    if (PlayerInfo[playerid][pAdmin] >= 4) //Die 4 durch das jeweilige Adm Level ersetzen
    {
    new Float:x ,Float:y ,Float:z;
    GetPlayerPos(playerid, x, y, z);
    CreatePickup(pickup, 2, x, y+3, z);
    }
    return 1;
    }

    Kann ja gar ned stimmen. Warum 2 Mal return 1; ?


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp("/explodeme", cmdtext, true, 10) ==0){
    new auto = GetPlayerVehicleID(playerid);
    DestroyVehicle(auto);
    return 1;
    }
    return 0;
    }


    Edit: Klammer übersehen :|

    PlayerToPoint:


    forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);


    Dann:
    public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
    {
    if(IsPlayerConnected(playerid))
    {
    new Float:oldposx, Float:oldposy, Float:oldposz;
    new Float:tempposx, Float:tempposy, Float:tempposz;
    GetPlayerPos(playerid, oldposx, oldposy, oldposz);
    tempposx = (oldposx -x);
    tempposy = (oldposy -y);
    tempposz = (oldposz -z);
    if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
    {
    return 1;
    }
    }
    return 0;
    }


    Wenn du das drin hast funktionieren deine 3 Tore. :)

    Soo, ich probier mal dir zu helfen TGA ^^


    EDIT: Habs getestet, funktioniert.


    EDIT 2: Ganz hart klicken für die Pickup IDs


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    {
    if(strcmp(cmd,"/add", true) == 0)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, 0xFF0000FF, "Benutze /add [Waffenname]"); //Bei dem Hexadezimalen Code die Farbe einfügen
    return 1;
    }
    new pickup;
    pickup = strval(tmp);
    if (PlayerInfo[playerid][pAdmin] >= 4) //Die 4 durch das jeweilige Adm Level ersetzen
    {
    new Float:x ,Float:y ,Float:z;
    GetPlayerPos(playerid, x, y, z);
    CreatePickup(pickup, 2, x, y+3, z);
    }
    }
    return 1;
    }

    Man kann hier im Forum die Codes nicht allzu gut einrücken.


    Der Code sollte funktionieren, du wirst vllt ein paar "Loose Indentation" Warnings bekommen wenn du ihn nicht richtig einrückst.

    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp("/explodeme", cmdtext, true, 10) ==0){
    new auto = GetPlayerVehicleID(playerid);
    DestroyVehicle(auto);
    return 1;
    }
    return 0;
    }


    Edit: Mhm, des lässt sich ned allzu gut einrücken :|

    Zur ersten Frage:


    Öffne mal die .inc und schau sie dir an, dann hast du die Antwort.


    Zur zweiten Frage:


    Er wird immer instabiler umso näher man an den 150 dran ist. Bzw. ab 150 SOLLTE Schluss sein, muss aber nicht.

    Ich frag mich ob da nicht noch eine Jungle Map Big kommt. *erwartungsvoll zu satan schiel* :D


    Du bist echt der beste Mapper von denen die ich kenne und von denen die ich nicht kenne. Respekt. :thumbup: