Beiträge von IPrototypeI

    hier so geht dies

    new vehicleid = GetPlayerVehicleID(playerid),vehmodel = GetVehicleModel(vehicleid);
    if(!(vehmodel == 456 || vehmodel == 524 || vehmodel == 455 || vehmodel == 514))return SendClientMessage(playerid, FARBE_ROT, "Error: Du bist in keinem Truck!");


    das Ausrufezeichen gehört vor GetVehicleModel in dem sinne und das ganze als Klammer so nimmt er alles das was du machst geht nicht


    Ich war bis vor kurzem Inaktiv und entschuldige mich für die späte Antwort. Ich habe das Skinchange System rausgenommen, weil es nie Funktionieren konnte. Aus zeitlichen Gründen konnte ich es früher auch nicht Fixxen und jetzt muss ich erstmal wieder reinfinden. Vielleicht im nächsten Tutorial.


    Zu dem Tutorial muss man sagen gibt es einige nachteile, welche dann für hacker sehr interessant sind so fern man in der lage ist dementsprechend
    das potenzial von sobeit auszunutzen. Zwar wirst du gespawnt und da ist auch der kleine Fehler sieht man auch zum beispiel an purerp
    da man die möglichkeit hat das login/Register zu umgehen und sollte man dann noch eine abfrage im gamemode haben das die anticheatsystem nur
    leute bannt die eingeloggt sind also dennen ein bestimmter wert zugeordnet wird , wenn sie sich einloggen. Ist so was natürlich fatal für das anticheatsystem.
    Daher gibts noch eine andere möglichkeit die ich vorziehe und zwar TogglePlayerSpectating dann kann man natürlich auch noch die camera perspektive
    ändern was jedoch nur mit einem timer dann möglich ist warum genau das nicht danach aufgerufen wird keine Ahnung.
    Jedoch zurück zu dem punkt das wenn ein spieler versucht das ganze zu umgehen und nicht gespant wird bevor ihm die spawninformationen gesetzt werden
    bekommt er einen crash.

    http://forum.sa-mp.com/showthread.php?t=56564


    Die ist doch hier und du kannst die selbe include verwenden wie bei dem windows plugin auch sollte dies auch dabei sein

    Linux: (x86 (32-bit) version is cross compatible)


    R7: Ubuntu, x86 (compiled on Ubuntu)


    Zu dem ist die x86 (32-bit) version cross kompatibel das heißt sie sollte eigentlich unter den meisten Linux Betriebssystemen funktionieren
    //edit zu dem kann man es noch selbst kompilen wenn man den link nicht mehr findet
    source ist unter dem namen zu finden
    plugin-R7-src_f­inal.rar

    Die richtig verwendung ist eigentlich folgende
    nun gut das returnen der Nachricht bei beiden ist nicht notwenig


    new tmp[25], b_Speed,b_Strafgeld;
    if(sscanf(params,"s[25]",tmp)) && if(sscanf(params,"s[25]dd",b_Speed,b_Strafgeld))return SCM(playerid, Weiss, "Benutze: /blitzer abbauen/aufstellen [Geschwindigkeit] [Strafgeld]");
    if(!strcmp(tmp,"abbauen",true)){
    ...
    }
    if(!sscanf(params,"s[25]dd",b_Speed,b_Strafgeld)){
    if(!strcmp(tmp,"aufstellen",true)){

    ocmd:auf(playerid,params[])
    {
    if(!IsPlayerInRangeOfPoint(playerid,10,1027.1999512,1163.5000000,12.3999996))return SendClientMessage(playerid,ROT,"Nicht in der Nähe von einem Tor.");
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,2)||IsPlayerInFrakt(playerid,3))MoveObject(fbitor[0],1027.1999512,1163.5000000,12.3999996-10,5);
    return 1;
    }


    Der || Operator bedeutet schon "oder" jedoch fängt man dabei keine neue if abfrage an
    zu dem schreibt man keine mehrere if abfrage in eine reihe wenn dan untereinander das ist hier jedoch nicht nötig

    Beides ... UKNOWN COMMAND


    Dann würde ich mir mal an deiner stelle gedanken darüber machen die .amx zu löschen bevor du diese kompilst oder dir dne windows ordner neu runter zu laden sollte nix per print ausgeben werden, wenn du dies auch mal getestet hast innerhalb deine commands. Da UNKNOWN COMMAND nur zurück gegeben wird wenn bei OnPlayerCommandText
    kein return 1; verwendet wird bei commands. Dies passiert, wenn man ein return 1; vergessen hat am ende des befehls oder der command nicht existiert.
    Wie schon oben erwähnt kann es auch an pawno liegen dies war bei mir auch mal so das die .amx nicht ersetzt wurde. Wie solch ein fehler bei pawno zustande kommt
    kann ich dir nicht genau sagen die ursachen sind mir auch unbekannt.

    Denk mal an deine if abfrage wenn du dies testest werden überhaupt alle bedingungen erfüllt vor allem was dies angeht


    PlayerInfo[playerid][pDeathTime] >= 1


    Bei einem Godfather kannst du dies auch ganz vereinfachen


    GetPlayerName(playerid, name, MAX_PLAYER_NAME);



    new PlayerName[MAX_PLAYERS][MAX_PLAYER_NAME];
    und dies halt bei OnPlayerConnect verwenden
    GetPlayerName(playerid,PlayerName[playerid],MAX_PLAYER_NAME);


    Mit den ganzen returns solltest du dir auch nochmal durch den kopf gehen lassen


    if(strcmp("/aufladen", cmdtext, true,9) ==0){
    new bool:no;
    if(PlayerInfo[playerid][JobTrash] != 1)return SendClientMessage(playerid,COLOR_GRAD2,"Du hast nicht den richtigen Job dafür!");
    for(new k; k < sizeof(Trashcar); k++){
    if(IsPlayerInVehicle(playerid,Trashcar[k])){
    if(isfull[Trashcar[k]] < 3){
    for(new i; i < 49; i++){
    if(IsPlayerInRangeOfDynamicObject(playerid,trash[i],5.0)){
    DestroyDynamicObject(trash[i]);
    isfull[Trashcar[k]] += 1;
    SendClientMessage(playerid,COLOR_WHITE,"Müll wird aufgeladen");
    TogglePlayerControllable(playerid,0);
    no=false;
    Muelltimer[playerid] = SetTimerEx("Unfreeze", 2500, false,"i",playerid);
    break;
    }else no=true;
    }
    }
    }
    }
    if(no)return SendClientMessage(playerid,-1,"Du bist nicht in der nähe eines Müllsackes");
    return 1;
    }


    ich hab dir mal noch eine abfrage rein gebastelt , das eine nachricht kommt sollte der spieler nicht in der nähe sein.
    Ahja sollte dies nicht gehen zeig mal was IsPlayerInRangeOfDynamicObject wiedergibt

    In dem du bei dem drücken einer taste mit hilfe einer for-schleife durch die deklarierten rc-cars gehst ihre momentane position ausließt und sollte dies so sein
    setzet du den spieler in das auto.



    new veh[2];


    veh[0] = AddStaticVehicleEx...
    veh[0] = AddStaticVehicleEx..


    new i, Float:Pos[3];
    for(; i < 2; ++i){
    GetVehiclePos(veh[i],Pos[0],Pos[1],Pos[2]);
    if(IsPlayerInRangeOfPoint(playerid,5.0,Pos[0],Pos[1],Pos[2])){
    PutPlayerInVehicle(playerid,veh[i],0);
    break;
    }


    }

    Ja du musst es einbinden in dein gamemode
    mit
    #include <tuning>


    jedoch ist es wichtig das du zum einen das streamer plugin auch noch verwendest und

    #define Accept über der include stehen hast besser gesagt über


    #include <tuning>


    was hier noch zu beachten ist das du bei MAX_PLAYERS bitte die zahl deiner Slots einträgst und bei MAX_VEHICLES die anzahl der fahrzeuge du kannst dies jedoch auch raus nehmen.
    es sind nur unnötig verschwendete ressourcen dies auf 2000 zu lassen.


    Du kannst es ja auch nochmal hier nachlesen
    http://gtawerk.de/Datenbank/index.php?page=Entry&entryID=3


    //edit
    jedoch gedenke ich mal die include upzudaten aus dem grund das der server crashet sollte der OnPlayerDialogResponse Hook eine negative zahl über CallLocalFunction weiter geben


    Ganz einfach ein Dialog aufrufen wo man zum einen mal erst die id eingibt diese musst du jedoch zwischen speichern in einer globalen variabel und einmal
    die fraktion das geht jedoch auch alles auch auf einmal mit sscanf und dies ist auch nicht anders als bei einem command nur wird dann der string inputtext gesplittet
    ahja zum Dialog styles benutzet du DIALOG_STYLE_INPUT




    Ja musst du auch beim streamer da die daten des objectes beim zerstören verworfen werden. Daher ist es ja auch klar das wenn du das Object x mit der objectid des skriptes
    40 mit DestroyObject löscht ist dieser Slot nun frei und wird vom nächsten erstellten Object ersetzt.



    Brauch ich bei einem Linux Server außer dem MySQL auch die libmysqlclient.so.15 ?


    Ja du brauchst die Mysql Library bei Linux als auch bei Windows.

    Zum einen lässt du überhaupt TankInfo[id][fExist] für das erstellte biz überhaupt auf 1 setzen, da ich nix davon sehe.
    zu dem bringt dir das hier nix
    mysql_query("INSERT INTO `tankstellen`(`besetzt`) VALUES (1)");
    mysql_query("SELECT max(id) FROM `tankstellen`");
    mysql_store_result();
    mysql_fetch_row_format(string);
    da du den string nicht weiter verwendest und man muss nicht gleich alles speichern es reicht zum disconnect und zum restart du kannst auch solange das alles temporär
    speichern in deiner array,