Beiträge von luckyguy

    Zitat

    public OnPlayerSpawn(playerid)
    {
    ShowPlayerDialog(playerid, 5, DIALOG_STYLE_LIST, "Spawn", "Cop\nTerror\nSwat\nGangster\nFrei\nFrei 2", "Auswählen", "Abbrechen");
    return 1;
    }


    Das machste nicht unter "OnPlayerSpawn" sondern unter "OnPlayerConnect"


    Also so:
    public OnPlayerConnect(playerid)
    {
    ShowPlayerDialog(playerid, 5, DIALOG_STYLE_LIST, "Spawn", "Cop\nTerror\nSwat\nGangster\nFrei\nFrei 2", "Auswählen", "Abbrechen");
    return 1;
    }


    Das ganze sollte am besten schlussendlich so aussehen:


    Unter OnPlayerConnect nicht unter OnPlayerSpawn:
    public OnPlayerConnect(playerid)
    {
    ShowPlayerDialog(playerid, 5, DIALOG_STYLE_LIST, "Spawn", "Cop\nTerror\nSwat\nGangster\nFrei\nFrei 2", "Auswählen", "Abbrechen");
    return 1;
    }


    und das unter OnDialogResponse sollte so aussehen:
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == 5)
    {
    if(response)
    {
    if(listitem == 0)
    {
    // SetSpawnInfo(playerid,Team,Skin,X,Y,Z,A,Waffe1,Ammo1,Waffe2,Ammo2,Waffe3,Ammo3);
    SetSpawnInfo(playerid,1,285,218.4359,1905.2633,17.7016,0,0,0,0,0,0,0);
    SpawnPlayer(playerid);
    }
    if(listitem == 1)
    {
    SetSpawnInfo(playerid,2,250,-228.9177,2602.8569,62.7031,0,0,0,0,0,0,0);
    SpawnPlayer(playerid);
    }
    if(listitem == 2)
    {
    SetSpawnInfo(playerid,3,186,-312.4494,1534.5494,75.5625,0,0,0,0,0,0,0);
    SpawnPlayer(playerid);
    }
    if(listitem == 3)
    {
    SetSpawnInfo(playerid,4,221,-297.8937,1099.0570,19.5938,0,0,0,0,0,0,0);
    SpawnPlayer(playerid);
    }
    if(listitem == 4)
    {
    SetSpawnInfo(playerid,5,113,-786.1680,1440.1334,13.7891,0,0,0,0,0,0,0);
    SpawnPlayer(playerid);
    }
    if(listitem == 5)
    {
    SetSpawnInfo(playerid,6,73,-1497.3909,2666.0513,55.6875,0,0,0,0,0,0,0);
    SpawnPlayer(playerid);
    }
    }
    else
    {
    Kick(playerid); // Einfach die Abfrage mit "else" wegnehmen, wenn du nicht möchtest dass er gekickt wird
    }
    }
    return 1;
    }


    hoffe konnte helfen!


    MFG luckyguy

    Ganz einfach so:


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    new Float:x, Float:y, Float: z;
    if(dialogid == DIE_DIALOGID)
    {
    GetPlayerPos(playerid,x,y,z);
    if(response)
    {
    switch(listitem)
    {
    case 0: CreateVehicle(1.AUTOMODELL,x,y,z,0,-1,-1,-1);
    case 1: CreateVehicle(2.AUTOMODELL,x,y,z,0,-1,-1,-1);
    case 3: CreateVehicle(1.AUTOMODELL,x,y,z,0,-1,-1,-1);
    }
    }
    }
    }


    Hoffe konnte helfen


    MFG luckyguy

    Jop, hab R7.


    Zitat aus dem Include "a_vehicles"

    Zitat

    native GetVehicleDamageStatus(vehicleid, &panels, &doors, &lights, &tires);
    native UpdateVehicleDamageStatus(vehicleid, panels, doors, lights, tires);


    // Edit by me:
    Auf dem Root gehts auch nicht :(, aber habe 100% R7


    //Edit by me:
    Also wenn ich im Script i-wo
    GetVehicleDamageStatus(vehicleid, &panels, &doors, &lights, &tires);
    UpdateVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
    einbaue, dann geht es nicht, aber wenn ich genau diese Sachen rausnehme, dann funzt es einwandfrei


    //Edit by me:
    So... habe es geschafft, und gerausgefunden, warum es nicht von der INC lesen konnte, jedoch geht es jetzt. Aber wenn ich jetzt mit der Include im Script den Server starte, kommt folgendes:
    Script[gamemodes/test.amx]: Run time error 19: "File or function is not found"

    D:\gta.sa\Downtown-Reallife\Script\Windows\gamemodes\test.pwn(10) : fatal error 100: cannot read from file: "nb_rb"


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    Und der Dateipfad vom Include: D:\gta.sa\Downtown-Reallife\Script\Windows\pawno\include


    Pls help


    //Edit by me:
    Ich habe mal den Include rauskopiert(mit Credits) und habe es mal in meinen GameMode eingebaut. Wenn ich im Script alles rund um das Zeug mit UpdateVehicleDamage, etc habe, dann steht wenn ich den Server starte:
    [19:02:48] Script[gamemodes/test.amx]: Run time error 19: "File or function is not found"
    Ich werde es mal auf meinen Root drauf spielen, um dort zu testen

    also, versuchs mal so:


    Ganz oben im Script mit andern "new"s:
    new pickup;
    new auto[MAX_PLAYERS];


    Unter OnFilterScriptInit() oder OnGameModeInit:
    pickup = CreatePickup(1276,23,x,y,z);


    Danach bei OnPlayerPickUpPickup:
    if(pickupid == pickup)
    {
    if(auto[playerid] == 0)
    {
    new Float:x, Float:y, Float:z, Float:r;
    GetPlayerPos(playerid,x,y,z);
    GetPlayerFacingAngle(playerid,r);
    auto[playerid] = CreateVehicle(560,x,y,z,r,-1,-1,-1);
    PutPlayerInVehicle(playerid,auto[playerid],0);
    }
    else
    {
    return SendClientMessage(playerid,0xAFAFAFAA,"Du hast bereits ein Auto!");
    }
    }


    das fügste unter public OnPlayerExitVehicle(playerid, vehicleid), falls nicht vorhanden neu ganz unten im Script machen:
    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    if(auto[playerid] != 0)
    {
    DestroyVehicle(auto[playerid]);
    auto[playerid] = 0;
    }
    return 0;
    }


    hoffe konnte helfen.


    MFG luckyguy

    Ne, geht auch i-wie nit :(


    aber hab mal das FS vom server.cfg entfernt un im GameMode diesen Befehl gemacht:


    if(!strcmp("/lichter",cmd,true))
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new x_nr[256];
    x_nr = strtok(cmdtext, idx);
    if(!strlen(x_nr))
    {
    SendClientMessage(playerid, Weiss, "Benutze: /lichter [Name]");
    SendClientMessage(playerid, Weiss, "Namen: an aus");
    return 1;
    }
    if(!strcmp("an",x_nr,true))
    {
    new panels, doors, lights, tires;
    GetVehicleDamageStatus(GetPlayerVehicleID(playerid),panels,doors,lights,tires);
    UpdateVehicleDamageStatus(GetPlayerVehicleID(playerid),panels,doors,0,tires);
    return 1;
    }
    else if(!strcmp("aus",x_nr,true))
    {
    new panels, doors, lights, tires;
    GetVehicleDamageStatus(GetPlayerVehicleID(playerid),panels,doors,lights,tires);
    UpdateVehicleDamageStatus(GetPlayerVehicleID(playerid),panels,doors,5,tires);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, Weiss, "Namen: an aus");
    }
    }
    }


    Wenn ich es so Compile gehts, jedoch wenn ich den server starte, kommts so:
    [17:26:04] Filter Scripts
    [17:26:04] ---------------
    [17:26:04] Loaded 0 filter scripts.


    [17:26:04] Script[gamemodes/test.amx]: Run time error 19: "File or function is not found"
    [17:26:04] Number of vehicle models: 0


    Aber wenn ich das ganze so mache:
    if(!strcmp("/lichter",cmd,true))
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new x_nr[256];
    x_nr = strtok(cmdtext, idx);
    if(!strlen(x_nr))
    {
    SendClientMessage(playerid, Weiss, "Benutze: /lichter [Name]");
    SendClientMessage(playerid, Weiss, "Namen: an aus");
    return 1;
    }
    if(!strcmp("an",x_nr,true))
    {
    //new panels, doors, lights, tires;
    //GetVehicleDamageStatus(GetPlayerVehicleID(playerid),panels,doors,lights,tires);
    //UpdateVehicleDamageStatus(GetPlayerVehicleID(playerid),panels,doors,0,tires);
    return 1;
    }
    else if(!strcmp("aus",x_nr,true))
    {
    //new panels, doors, lights, tires;
    //GetVehicleDamageStatus(GetPlayerVehicleID(playerid),panels,doors,lights,tires);
    //UpdateVehicleDamageStatus(GetPlayerVehicleID(playerid),panels,doors,5,tires);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, Weiss, "Namen: an aus");
    }
    }
    }


    Dann startet der Server und funzt ganz normal :(, habe aber den Server R7


    //Edit: hab gedacht, liegt vllt an meine PC und habs auf einem Server probiert, geht auch nit

    Also 1. Ich habe das FS so hergestellt: Pastebin alles kopiert und ins pawno eingefügt, danach compilt.


    Das mit main geht auch nicht, und ausserdem hasste es falsch hingeschrieben:

    Zitat

    main {
    print("Blinker-System by m33p4r3al") }

    was eigentlich so ausschauen sollte:
    main()
    {
    print("...");
    }


    // Edit: Ich hab mal ein altes anderes FS von mir geladen und "print" gemacht, hat gefunnzt, danach hab ich dort alles von diesem FS rauskopiert und reingetan und compilt, danach als ich den Servergestartet habe, hat es nicht mehr "geprintet".

    Es sieht folgendermassen aus:
    SA-MP Dedicated Server
    ----------------------
    v0.3a R3, (C)2005-2009 SA-MP Team


    [16:35:19]
    [16:35:19] Server Plugins
    [16:35:19] --------------
    [16:35:19] Loaded 0 plugins.


    [16:35:19]
    [16:35:19] Filter Scripts
    [16:35:19] ---------------
    [16:35:19] Loading filter script 'Blinker.amx'...
    [16:35:19] Loaded 1 filter scripts.


    [16:35:19]
    [16:35:19]
    [16:35:19] >>Downtown-Reallife<<
    [16:35:19] _____________________
    [16:35:19] © Copyright by luckyguy
    [16:35:19]
    [16:35:19]


    [16:35:19]


    [16:35:19] Number of vehicle models: 102


    aber es steht nix von:
    Blinker-System by m33p4r3al

    Ich habe folgendes Problem:


    Wenn ich das als FS lade, dann steht im Server Log es lädt, doch es lädt es eigentlich nicht, oder es funktioniert nicht.
    Als ich das in meinen GameMode eingebaut hatte, kam folgender error:
    [15:51:18] Script[gamemodes/test.amx]: Run time error 19: "File or function is not found"
    [15:51:18] Number of vehicle models: 0


    Und wenn ich es als FS lade steht folgendes:
    [15:51:18] Filter Scripts
    [15:51:18] ---------------
    [15:51:18] Loading filter script 'Blinker.amx'...


    Aber mehr auch nicht. eigentlich steht doch bei OnFilterScriptInit, dass noch was printen soll, doch das machts auch nicht, pls Help :(

    also das stimmt gar nicht, und so würdest du warscheinlich alles bisschen kompliziert für dich selber machen, versuchs doch so:


    ganz oben in deinem Script wo alle Forwards sind, machst du folgendes:
    forward CloseGate();


    Danach gehste zu deinem Befehl (OnPlayerCommandText):
    if(!strcmp("/yopen1",cmdtext,true))
    {
    if(PlayerInfo[playerid][pMember] == 6 || PlayerInfo[playerid][pLeader] == 6)
    {
    MoveObject(yakuzator1,358.18548583984,-1474.9178466797,32.182922363281,4);
    SetTimer("CloseGate",5000,0);
    SendClientMessage(playerid,0x33CCFFAA,"Das Tor schliesst sich automatisch in 5 Sekunden.");
    }
    else
    {
    return SendClientMessage(playerid,0xAFAFAFAA,"Du bist nicht in der Fraktion 6");
    }
    }


    Hier die Erklärung für den Timer:
    SetTimer("CloseGate",5000,0);
    //SetTimer => Funktion: ruft einen Puplic in einer bestimmten Zeit auf
    //"CloseGate" => Funktion: Name des Publics das aufgerufen werden soll in ""
    //5000 => Die Zeit nach dem der Public aufgerufen werden soll(in Millisekunden)
    //0 => Der Timer soll sich nicht wiederholen | 1 würde heissen, sobald das Tor einmal aufmacht würde es die ganze Zeit alle 5 Sekunden das Tor öffnen bzw. schliessen.


    Nun gehst du ganz runter in dein Script und machst einen neuen Public:
    public CloseGate()
    {
    MoveObject(yakuzator1,363.9782409668,-1470.4066162109,32.064594268799,4);
    return 1;
    }


    Erklärung:
    //public CloseGate() => Wenn der Public aufgerufen wird
    // MoveObject(..); => Das soll passieren, wenn der Public aufgerufen wird. Also das Object sollte sich zu den Koordinaten bewegen, wo es dann zu ist.
    // return 1; => es returnt, gibt nicht mehr dazu zu sagen


    Das wars, zusammen sollte das so aussehen:
    // das kommt zu den andern forwards im script rein ;)
    forward CloseGate();


    // das unter "OnPlayerCommandText"
    if(!strcmp("/yopen1",cmdtext,true))
    {
    if(PlayerInfo[playerid][pMember] == 6 || PlayerInfo[playerid][pLeader] == 6)
    {
    MoveObject(yakuzator1,358.18548583984,-1474.9178466797,32.182922363281,4);
    SetTimer("CloseGate",5000,0);
    SendClientMessage(playerid,0x33CCFFAA,"Das Tor schliesst sich automatisch in 5 Sekunden.");
    }
    else
    {
    return SendClientMessage(playerid,0xAFAFAFAA,"Du bist nicht in der Fraktion 6");
    }
    }



    // das ganz unten im Script
    public CloseGate()
    {
    MoveObject(yakuzator1,363.9782409668,-1470.4066162109,32.064594268799,4);
    return 1;
    }


    Hoffe konnte helfen.


    MFG luckyguy

    Vllt anstatt "AddStaticVehicle" "CreateVehicle". Der unterschied:


    AddStaticVehicle(model,x,y,z,a,Farbe1,Farbe2);
    CreateVehicle(model,x,y,z,a,Farbe1,Farbe2,Respawnzeit);


    Respawnzeit: Sobald der Spieler das Autoverlässt wird eine Art "Timer" ausgelöst, sodass wenn er nicht in einem bestimmten Zeit wieder das Auto einsteigt, dann respawnt das auto. Die Zeit kannste dort eingeben, allerdings weiss ich nicht ob das in Sekunden oder in welcher Einheit das ist.

    Also zu Problem 1:


    Da musst du ein Textdraw machen. Erkundige dich dazu im "Tutorial" Forumabteil.


    Zu Problem 2:


    Willste das man das sieht, oder nicht sieht?


    MFG


    luckyguy

    Eigentlich sind wir im Scriptwüsche Forum, also gehört dass glaub nicht hier rein:

    Zitat

    Scripte dir das doch selber

    Nun zu deinem Wunsch:


    Bei den anderen "new"s kommt jetzt ein neues new:
    new istAFK[MAX_PLAYERS];


    Dann gehst du zu "OnPlayerCommandText":
    new tmp[256],cmd[256],string[128],idx; // falls schon vorhanden, nicht doppelt einfügen
    new sendername[MAX_PLAYER_NAME]; // falls schon vorhanden, nicht doppelt einfügen
    cmd = strtok(cmdtext,idx); // falls schon vorhanden, nicht doppelt einfügen


    if(!strcmp("/afk", cmd, true))
    {
    if(istAFK[playerid] == 0)
    {
    GetPlayerName(playerid,sendername,sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    return SCM(playerid,GREY,"Benutze: /afk [Grund]");
    }
    format(string,128,"%s ist AFK, Grund: %s",sendername,(result));
    SendClientMessageToAll(0xFF9900AA,string); // '0xFF9900AA' ist die Farbe Orange, kannste dann selber auch umändern
    istAFK[playerid] = 1
    }
    else
    {
    return SendClientMessage(playerid,0xAFAFAFAA,"Du bist schon AFK!"); // '0xAFAFAFAA' ist die Farbe Grau, kannste ja dann selber ändern
    }
    return 1;
    }
    if(!strcmp("/back",cmdtext,true))
    {
    if(istAFK[playerid] == 1)
    {
    GetPlayerName(playerid,sendername,sizeof(sendername));
    format(string,128,"%s ist Back",sendername);
    SendClientMessageToAll(0xFF9900AA,string); // '0xFF9900AA' ist die Farbe Orange, kannste dann selber auch umändern
    }
    else
    {
    return SendClientMessage(playerid,0xAFAFAFAA,"Du bist nicht AFK!"); // '0xAFAFAFAA' ist die Farbe Grau, kannste beliebig ändern
    }
    }


    MFG luckyguy


    // Edit: Falls du strtok nicht hast, kommt das ganz unten in deinem Script:
    strtok(const string[], &index)
    {
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
    index++;
    }


    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
    result[index - offset] = string[index];
    index++;
    }
    result[index - offset] = EOS;
    return result;
    }

    Das sollte glaub gar nicht so schwer sein,


    also unter OnPlayerCommandText folgendes:


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new tmp[256],cmd[256],idx; // das nur einfügen, wenn es nicht schon vorhanden ist
    cmd = strtok(cmdtext, idx); // das nur einfügen, wenn es nicht schon vorhanden ist

    if(!strcmp("/savecar", cmd, true))
    {
    new preis;
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, GREY, "Benutze: /savecar [preis] [Name vom 3D Text über Vehicle]");
    return 1;
    }
    preis = strval(tmp);
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, GREY, "Benutze: /savecar [preis] [Name vom 3D Text über Vehicle]");
    return 1;
    }
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, GREY, "Benutze: /savecar [preis] [Name vom 3D Text über Vehicle]");
    return 1;
    }
    if(IsPlayerInAnyVehicle(playerid))
    {
    new Float:vx,Float:vy,Float:vz,Float:va;
    new string[128];
    GetVehiclePos(vx,vy,vz);
    GetVehicleZAngle(va);
    new File:autohaus=fopen("Autohaus Autos.txt", io_append);
    format(string,"{'%s',0,%d,-1,%d,%d,%f,%f,%f,%f},\n",(result),GetVehicleModel(GetPlayerVehicleID(playerid)),preis,preis/10,vx,vy,vz,va);
    fwrite(autohaus, string);
    fclose(autohaus);
    }
    else
    {
    return SCM(playerid,/*DEINE FARBE*/,"Du bist in keinem Fahrzeug! Du musst dich in einem Fahrzeug befinden!");
    }
    }
    return 0;
    }


    So würde aber das auto immer andem Autohaus 0 spawnen, wenn du z. B. möchtest, dass man das auch noch aussuchen kann, kannste es so machen:


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new tmp[256],cmd[256],idx; // das nur einfügen, wenn es nicht schon vorhanden ist
    cmd = strtok(cmdtext, idx); // das nur einfügen, wenn es nicht schon vorhanden ist

    if(!strcmp("/savecar", cmd, true))
    {
    new preis, autohaus;
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, GREY, "Benutze: /savecar [preis] [Autohaus] [Name vom 3D Text über Vehicle]");
    return 1;
    }
    preis = strval(tmp);
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, GREY, "Benutze: /savecar [preis] [Autohaus] [Name vom 3D Text über Vehicle]");
    return 1;
    }
    autohaus = strval(tmp);
    if(autohaus < 0 || autohaus > 2)
    {
    return SCM(playerid,/*DEINE FARBE*/,"Du kannst nur zwischen Autohaus 0 bis 2 entscheiden!"); // wenn du willst, dass es nur z. B. 1 bis 3 Autohäuser gibt, dann mach oben aus der 2 eine 3. (autohaus > 2) zu (autohaus > 3)
    }
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, GREY, "Benutze: /savecar [preis] [Autohaus] [Name vom 3D Text über Vehicle]");
    return 1;
    }
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, GREY, "Benutze: /savecar [preis] [Autohaus] [Name vom 3D Text über Vehicle]");
    return 1;
    }
    if(IsPlayerInAnyVehicle(playerid))
    {
    new Float:vx,Float:vy,Float:vz,Float:va;
    new string[128];
    GetVehiclePos(vx,vy,vz);
    GetVehicleZAngle(va);
    new File:autohaus=fopen("Autohaus Autos.txt", io_append);
    format(string,"{'%s',%d,%d,-1,%d,%d,%f,%f,%f,%f},\n",(result),autohaus,GetVehicleModel(GetPlayerVehicleID(playerid)),preis,preis/10,vx,vy,vz,va);
    fwrite(autohaus, string);
    fclose(autohaus);
    }
    else
    {
    return SCM(playerid,/*DEINE FARBE*/,"Du bist in keinem Fahrzeug! Du musst dich in einem Fahrzeug befinden!");
    }
    }
    return 0;
    }


    MFG luckyguy

    Dann mach es so:


    OnPlayerCommandText sieht gewöhnlich wie folgt aus:


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(!strcmp("/bla",cmdtext,true)) //.... und solche weiteren codes
    {


    } // und natürlich solche codes und dann am schluss
    return 0;
    }


    Jetzt musst du das 'return 0;' zu 'return 1;' wechseln:
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(!strcmp("/bla",cmdtext,true)) //.... und solche weiteren codes
    {


    } // und natürlich solche codes und dann am schluss
    return 1; // <== Hier die änderung
    }


    MFG luckyguy

    Unter OnPlayerCommandText


    falls nicht vorhanden, dass einfügen:
    new idx,tmp[256],cmd[256];
    cmd = strtok(cmdtext, idx);


    danach:
    if(!strcmp("/f",cmd,true) || !strcmp("/g",cmd,true))
    {
    new sendername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, GREY, "Benutzung: /f [Nachricht] oder /g [Nachricht]");
    return 1;
    }
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(gTeam[playerid] == gTeam[i])
    {
    new name[MAX_PLAYER_NAME],string[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(string,128,"%s: %s",name,(result));
    SendClientMessage(i,HIER DEINE FARBE,string);
    }
    }
    }


    Oder so:

    forward SendPlayerTeamMessage(playerid,color,const string[]); // dorthin, wo alle anderen forwards sind


    // das unten folgende ganz unten im Script
    public SendPlayerTeamMessage(playerid,color,const string[])
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(gTeam[i] == gTeam[playerid])
    {
    SendClientMessage(i,color,string);
    }
    }
    return 1;
    }


    // jetzt kannste beim Befehl /f /g dieses machen:
    if(!strcmp("/f",cmd,true) || !strcmp("/g",cmd,true))
    {
    new sendername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, GREY, "Benutzung: /f [Nachricht] oder /g [Nachricht]");
    return 1;
    }
    new name[MAX_PLAYER_NAME],string[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(string,128,"%s: %s",name,(result));
    SendPlayerTeamMessage(playerid,HIER DEINE FARBE,string);
    }


    Ist ungetestet, aber bin mir 99,9% sicher, dass die erste Variante funktioniert. ;)


    MFG luckyguy

    Versuchs mal so:

    Zitat

    new Float:X,Float:Y,Float:Z,Float:Angle, carid;

    Hier das carid entfernen, so dass es so aussieht:
    new Float:X,Float:Y,Float:Z,Float:Angle;


    Ganz oben im Script, wo du die anderen 'new' s hast, machst du folgendes:
    new carid[MAX_PLAYERS];
    new hatauto[MAX_PLAYERS];


    Danach bei deinen Abfragen machst du von das:

    zu dass:
    case 1:
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    HideMenuForPlayer(autospawn, playerid);
    SendClientMessage(playerid,0xFFFFFFAA, "Du musst das Auto verlassen, wenn du ein Auto spawnen willst!");
    TogglePlayerControllable(playerid, true);
    }
    else
    {
    if(hatauto[playerid] == 0)
    {
    new Float:X,Float:Y,Float:Z,Float:Angle;
    GetPlayerPos(playerid,X,Y,Z);
    GetPlayerFacingAngle(playerid,Angle);
    carid[playerid] = CreateVehicle(541,X,Y,Z,Angle,-1,-1,600);
    PutPlayerInVehicle(playerid,carid[playerid],0);
    TogglePlayerControllable(playerid, true);
    SendClientMessage(playerid, 0xFFFFFFAA, "Auto [Bullet] wurde erfolgreich gespawnt!");
    hatauto[playerid] = 1;
    return 1;
    }
    else if(hatauto[playerid] == 1)
    {
    DestroyVehicle(carid[playerid]);
    hatauto[playerid] = 0;
    SendClientMessage(playerid, 0xFFFFFFAA, "Auto [Bullet] ist verschwunden!");
    }
    }
    }


    Ist ungetestet, ich hoffe es funktioniert.


    MFG luckyguy

    #define Speiseuntermenu 2
    #define Getränkeuntermenu 3


    if(dialogid == menurest)
    {
    if(response)
    {
    if(listitem == 0) // Speisen
    { // einfach hier nochmal 'ShowPlayerDialog'
    ShowPlayerDialog(playerid,Speiseuntermenu,DIALOG_STYLE_LIST, "Speisen","Spaghetti\nPizza\nKebab\nblabla\nbla123", "Essen", "Abbrechen");
    }
    if(listitem == 1) // Getränke
    { // einfach hier nochmal 'ShowPlayerDialog'
    ShowPlayerDialog(playerid,Getränkeuntermenu,DIALOG_STYLE_LIST, "Getränke","Eistee\nCola\nFanta\bla\blabla", "Trinken", "Abbrechen");
    }
    }
    }


    if(dialgid == Speiseuntermenu)
    {
    if(response)
    {
    switch(listitem)
    {
    case 0:
    {
    SendClientMessage(playerid,*FARBE*,"Spaghetti gekauft, BLABLA Preis");
    GivePlayerMoney(playerid,-BLABLA);
    }
    case 1:
    {
    SendClientMessage(playerid,*FARBE*,"Pizza gekauft, BLABLA Preis");
    GivePlayerMoney(playerid,-BLABLA);
    }
    case 2:
    {
    SendClientMessage(playerid,*FARBE*,"Kebab gekauft, BLABLA Preis");
    GivePlayerMoney(playerid,-BLABLA);
    }
    // und so weiter
    }
    }
    }


    if(dialogid == Getränkeuntermenu)
    {
    if(response)
    {
    switch(listitem)
    {
    case 0:
    {
    SendClientMessage(playerid,*FARBE*,"Eistee gekauft, BLABLA Preis");
    GivePlayerMoney(playerid,-BLABLA);
    }
    case 1:
    {
    SendClientMessage(playerid,*FARBE*,"Cola gekauft, BLABLA Preis");
    GivePlayerMoney(playerid,-BLABLA);
    }
    case 2:
    {
    SendClientMessage(playerid,*FARBE*,"Fanta gekauft, BLABLA Preis");
    GivePlayerMoney(playerid,-BLABLA);
    }
    // und so weiter
    }
    }
    }