Beiträge von KeksOfDeath

    Ausführlicher geschrieben:
    if(strcmp(cmdtext,"/lv",true)==0) {
    if(GetPlayerState(playerid)==2) {
    new aid=GetPlayerVehicleID(playerid);
    SetVehiclePos(aid,x,y,z);
    SetPlayerPos(playerid,x,y,z);
    PutPlayerInVehicle(playerid,aid,0); }
    else { SetPlayerPos(playerid,x,y,z); }
    return 1;
    }

    Bei /getip kommen bei ihm Errors... beim anderne weiß ich nciht, ob er strget definiert hat... der /getip kann auch so aussehen:
    if(!strcmp(strget(cmdtext,0)),"/getip") {
    if(strlen(strget(cmdtext,1))) {
    new typ=strval(strget(cmdtext,1));
    if(IsPlayerConnected(typ)) {
    new name[MAX_PLAYER_NAME], ip[15], s[50];
    GetPlayerName(typ,name,sizeof(name));
    GetPlayerIp(typ,ip,sizeof(ip));
    format(s,sizeof(s),"%ss Ip: %s",name,ip);
    SendClientMessage(playerid,FARBE,s); }}
    return 1;
    }
    Oder so:
    if(strcmp(cmdtext,"/getip",true,6)==0) {
    if(strlen(cmdtext[7])) {
    new typ=strval(cmdtext[7]);
    if(IsPlayerConnected(typ)) {
    new name[MAX_PLAYER_NAME], ip[15], s[50];
    GetPlayerName(typ,name,sizeof(name));
    GetPlayerIp(typ,ip,sizeof(ip));
    format(s,sizeof(s),"%ss Ip: %s",name,ip);
    SendClientMessage(playerid,FARBE,s); }}
    return 1;
    }

    if(strcmp(cmdtext,"/settime",true,8)==0) {
    if(strlen(cmdtext[9])) {
    new zeit=strval(cmdtext[9]);
    if(GetPlayerLevel(playerid) < 1) return SendClientMessage(playerid, red, "Dein Level ist für diesen Command nicht hoch genug !!");
    if(zeit>=0 && zeit<=23) {
    new name[MAX_PLAYER_NAME], s[80];
    GetPlayerName(playerid,name,sizeof(name));
    format(s,sizeof(s),"%s hat die Uhr auf %d gestellt",name,zeit);
    SendClientMessageToAll(FARBE,s);
    SetWorldTime(zeit);}}
    return 1;

    if (minute < 10)
    {
    format(string, sizeof string, " ~r~ Homepage:~w~ fbserever.ath.cx~r~ DM1:~w~ %d Spieler ~r~ DM2:~w~ %d Spieler ~r~Time:~w~ %d:0%d",playerdm1,playerdm2,hour, minute);
    }
    else {
    format(string, sizeof string, " ~r~ Homepage:~w~ fbserever.ath.cx~r~ DM1:~w~ %d Spieler ~r~ DM2:~w~ %d Spieler ~r~Time:~w~ %d:%d",playerdm1,playerdm2,hour, minute); }

    Verdoppeln:
    if(PlayerToPoint(....) || PlayerToPoint(...) || PlayerTo...(...)) {
    Das || heißt oder und && heißt und


    Und zu dem anderne Problem... kann ich hellsehen? Du musst schon den Code posten, wie du es jetzt eingefügt ahst (nicht den ganzen GM)

    Erstmal danke Jason, es ist auch so, wie du es gesagt hast, ich habe den GameText entfernt (Textdraw war ja nciht vorhanden) und es funktioniert... zumindest beim ersten mal...
    Man kann das Menu genau 1 mal aufrufen udn es erscheint normal, danach kann man warten, wie man will, man bekommt imemr wieder das verrückte Menu

    Ops, hast recht, hab die Tankstelle vergessen xD
    if(strcmp(cmdtext,"/tanken",true)==0) {
    if(PlayerToPoint(10.0,playerid,x,y,z)) {//bei x,y und z die Koordinaten eintragen
    if(GetPlayerState(playerid)==2) {
    new aid=GetPlayerVehicleID(playerid);
    if(GetPlayerMoney(playerid)>=100-benzin[aid]*[hier musst du den Preis für 1 Liter Benzin eintragen]) {
    GameTextForPlayer(playerid,"Tank ist wieder voll",5000,1);
    benzin[aid]=100; }
    else {
    new s[50], lit=GetPlayerMoney(playerid)/[Hier den Preis für 1 Liter Benzin eintragen];
    format(s,sizeof(s),"%d Liter Benzin getankt",lit);
    GameTextForPlayer(playerid,s,5000,1);
    benzin[aid]+=lit; }}}
    return 1;
    }
    Sollte PlayerToPoint bei dir nicht deklariert sein, dann klick mich


    //EDIT: Zu deinem EDIT5: Das ist mir unerklärlich... es wird nur 1 mal pro Minute was ausm Tank entfernt

    Zu dem Tor:
    Gans nach oben:
    new torname;
    OnGameModeInit:
    torname=CreateObject(.....);//die Positionen vom GESCHLOSSENEN Tor
    OnPlayerCommandText:
    if(strcmp(cmdtext,"/pd",true)==0) {
    MoveObject(torname,x,y,z,geschwindigkeit);//die x, y und zFloats vom OFFENEN Tor eintragen, bei Geschwindigkeit... trag da einfach ne Zahl zwischen 0.1 und 20 ein (je dichter die Zah lan 20 dran ist, desto schneller bewegt ich das Tor)
    return 1;
    }
    Um es wieder zu schließen musst du einfach nur bei MoveObject die x,y und z Floats austauschen


    PayDay:
    Ganz nach oben:
    forward payd(); new zahler=0;
    OnGameModeInit:
    SetTimer("payd",60000,1);//die 60000 sind 1 Minuten in Millisekunden gerechnet und die 1 am Ende heißt, dass der Timer wiederhohlt werden soll
    Normalerweise würde man da gleich 360000 eintragen, weil das 5 Minuten wären, aber wir zeihen dort gleich des Tanken mit ein :)
    Dann ganz nach unten:
    public payd() {
    for(new i=0; i<MAX_PLAYERS; i++) {
    if(IsPlayerConnected(i)) {
    if(zahler>=5) {
    GivePlayerMoney(i,5000);
    zahler=0;
    SendClientMessage(i,FARBE,"PayDay, du bekommst 5000$"); }
    tanken(i); }}
    zahler++; }
    Das "tanken(i)" nur mit einfügen, wenn du auch das Tanksystem reinmachst


    Zum tanken:
    Ganz nach oben:
    forward tanken(playerid); new benzin[MAX_VEHICLES];
    OnGameModeInit:
    for(new v=0; v<MAX_VEHICLES; v++) {
    benzin[v]=100; }
    Ganz nach unten:
    public tanken(playerid) {
    if(GetPlayerState(playerid)==2) {
    new aid=GetPlayerVehicleID(playerid);
    if(benzin[aid]>=1) {
    new s[30];
    benzin[aid]--;
    format(s,sizeof(s),"Tank: %d/100 Liter",benzin[aid]);
    GameTextForPlayer(playerid,s,10000,1); }
    else {
    SendClientMessage(playerid,FARBE,"Dein Tank ist leer");
    //jetzt müsste man ihn entweder freezen, damit er nicht weiterfährt...
    //TogglePlayerControllable(playerid,0);
    //oder man kann ich auch töten, dann fährt er auch nciht weiter...
    //SetPlayerHealth(playerid,0);
    }}}
    Falls du dich für das freezen entscheidest, dann bruachst du auch nochn unfreeze cmd:
    OnPlayerCommandText:
    if(strcmp(cmdtext,"/aussteigen",true)==0) {
    if(GetPlayerState(playerid)==2) {
    TogglePlayerControllable(playerid,1);
    RemovePlayerFromVehicle(playerid); }
    return 1;
    }
    Und damit dann da niemand mehr einsteigen kann:
    OnPlayerStateChange:
    if(newstate==2) {
    if(benzin[GetPlayerVehicleID(playerid)]==0) {
    RemovePlayerFromVehicle(playerid);
    TogglePlayerControllable(playerid,1); }}
    So, das wars dann auch schon ;)

    t ist ein public wie jeder andere auch, d.h. man kann auch mit "if" arbeiten, ohne einen cmd zu haben:
    public OnPlayerCommandText(...) {
    if(imdm[playerid]==0) {
    if(strcmp(cmdtext,"/cmd1",true)==0) {
    //joa^^
    return 1;
    }
    if(strcmp(cmdtext,"/cmd2",true)==0) {
    //joa^^
    return 1;
    }
    }
    if(strcmp(cmdtext,"/cmd3",true)==0) {
    //joa^^
    return 1;
    }
    cmd 1 und 2 kann er jetzt nur verwenden, wenn er nicht im DM ist, cmd 3 kann er immer verwenden (das imdm[playerid] war jetzt mal ausgedacht, das musst du natürlich noch deklarieren)

    Deine Funktion

    Zitat

    stock WP(playerid,weaponid,ammo)
    {
    return GiveWeapon(playerid,weaponid,ammo);
    }


    würde eigentlich funktionieren... nur wird ein Error kommen, weil es "GivePlayerWeapon" heißt

    Man könnte jetzt bestimmen, wie viele Leute in einem Fahrzeug sitzen...
    if(strcmp(cmdtext,"/wieviele",true)==0) {
    if(IsPlayerInAnyVehicle(playerid)) {
    new aid=GetPlayerVehicleID(playerid), i, anzahl, s[100], f, fs[15];
    for(i=0; <MAX_PLAYERS; i++) {
    if(IsPlayerConnected(i)) {
    if(IsPlayerInAnyVehicle(i)) {
    if(GetPlayerVehicleID(i)==aid) {
    if(GetPlayerState(i)==2) { f=1; }
    anzahl++; }}}}
    if(f==1) { format(fs,sizeof(fs),"besetzt"); }
    else if(f==0) { format(fs,sizeof(fs),"frei"); }
    format(s,sizeof(s),"In deinem Auto sitzen %d Leute und der Fahrersitz ist %s",anzahl,fs);
    SendClientMessage(playerid,FARBE,s); }
    return 1;
    }
    Man kann jetzt nur sagen, wie viele Leute in dem Fahrzeug sitzen und, ob der Fahrersitz belegt ist, über die anderen kann man nichts sagen (dami ist gemeint, dass man z.B nciht sagen kann, dass der Sitz nummer 2 frei ist oder nicht)