[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Fail xD
    if(strcmp(cmd, "/engine",true) == 0 || strcmp(cmd, "/motor",true) == 0)
    {
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return 1;
    new vid = GetPlayerVehicleID(playerid);
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
    GetPlayerName(playerid, sendername, sizeof(sendername));
    if(vid != INVALID_VEHICLE_ID)
    {
    if(engine == VEHICLE_PARAMS_ON)
    {
    StopEngine(playerid,vid);
    SendClientMessage(playerid,COLOR_GRAD2," Motor abgeschaltet.");
    }
    else
    {
    if(Gas[vid] > 0){
    if(Maske[playerid] == 0) {
    SetPlayerChatBubble(playerid, string, COLOR_PURPLE, 30.0, 2000); SetTimerEx("StartEngineSleep",800,0,"i",playerid);
    }
    else {
    SetPlayerChatBubble(playerid, "* jemand startet einen Motor", COLOR_PURPLE, 30.0, 2000); SetTimerEx("StartEngineSleep",800,0,"i",playerid);
    }
    SendClientMessage(playerid,COLOR_GRAD2," Motor wird gestartet.");
    if(SpawnKillAktiv[playerid] == 1) { SpawnSkillSchutz(playerid);
    return 1;
    }
    new typ = IsAutohausCar(vid);
    new GATyp = IsGangAutohausCar(vid);
    if(typ != -1 || GATyp != -1){
    SendClientMessage(playerid,COLOR_GRAD2," Du hast keinen Schlüssel für das Fahrzeug.");
    return 1;
    }
    if(IsAMedicCar(vid)){
    if(PlayerInfo[playerid][pMember] == 4 || PlayerInfo[playerid][pLeader] == 4) { }
    else { SendClientMessage(playerid, COLOR_ERRORTEXT, " Du bist nicht bei den Medics !"); return 1; }
    }
    if(IsAFahrschulCar(vid)){
    if(PlayerInfo[playerid][pMember] == 11 || PlayerInfo[playerid][pLeader] == 11 || TakingLesson[playerid] == 1){}
    else{
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Du bist nicht bei der Fahrschule oder in einer Fahrstunde.");
    return 1;
    }}
    if(IsAFahrschulCar(vid)){
    if(PlayerInfo[playerid][pMember] == 11 || PlayerInfo[playerid][pLeader] == 11 || TakingLesson[playerid] == 2){}
    CP[playerid] = 24;
    return 1;
    }
    if(IsATruckerCar(vid)){
    if(PlayerInfo[playerid][pJob] == 16){}
    else{
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Du bist kein Trucker !");
    return 1;
    }}
    if(IsANewsCar(vid)){
    if(PlayerInfo[playerid][pMember] == 9 || PlayerInfo[playerid][pLeader] == 9){}
    else{
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Du bist nicht bei den News Reportern !");
    return 1;
    }}
    if(IsAOAmtCar(vid)){
    if(!IsAOrdnungsbeamter(playerid)){
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Du bist nicht beim Ordnungsamt !");
    return 1;
    }}
    if(IsACopCar(vid)){
    if(IsACop(playerid) && OnDuty[playerid] == 1){}
    else{
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Du bist kein Cop oder nicht OnDuty !");
    return 1;
    }}
    for(new h = 0; h < sizeof(PilotFlug); h++){
    if(GetPlayerVehicleID(playerid) == PilotFlug[h]){
    if(PlayerInfo[playerid][pJob] == 18)
    {
    }
    else
    {
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Du hast keinen Schlüssel für das Fahrzeug!");
    return 1;
    }}}
    for(new h = 0; h < sizeof(buscars); h++){
    if(GetPlayerVehicleID(playerid) == buscars[h]){
    if(PlayerInfo[playerid][pJob] == 19)
    {
    }
    else
    {
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Du hast keinen Schlüssel für das Fahrzeug!");
    return 1;
    }}}
    for(new h = 0; h < sizeof(RobTransporter); h++){
    if(GetPlayerVehicleID(playerid) == RobTransporter[h]){
    if(TransporterRobberID == playerid || IsACop(playerid) && OnDuty[playerid] == 1){}
    else {
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Du hast keinen Schlüssel für das Fahrzeug!");
    return 1;
    }}}
    for(new h = 0; h < sizeof(GangAutoInfo); h++){
    if(vid == GangAutoInfo[h][cID]){
    if(PlayerInfo[playerid][pMember] == GangAutoInfo[h][cOwner] || PlayerInfo[playerid][pLeader] == GangAutoInfo[h][cOwner] || TakingLesson[playerid] == 1 && GangAutoInfo[h][cOwner] == 1 || GangAutoInfo[h][cOwner] == 11 || (GangAutoInfo[h][cOwner] == 7 || GangAutoInfo[h][cOwner] == 14 || GangAutoInfo[h][cOwner] == 16) && IsACop(playerid)) { }
    else {
    SendClientMessage(playerid, COLOR_ERRORTEXT, "Du hast keinen Schlüssel für das Fahrzeug!"); return 1; }
    break;
    }}
    for(new h = 0; h < sizeof(MechanikerWagenCars); h++) {
    if(vid == MechanikerWagenCars[h]) {
    if(PlayerInfo[playerid][pJob] == 7) { }
    else { SendClientMessage(playerid, COLOR_ERRORTEXT, " Du hast keinen Schlüssel für das Fahrzeug! !"); return 1; }
    }}
    for(new h = 0; h < sizeof(Drescher); h++) {
    if(vid == Drescher[h]) {
    if(PlayerInfo[playerid][pJob] == 10) {
    if(CP[playerid] == 50) { }
    else { SendClientMessage(playerid, COLOR_ERRORTEXT, " Du musst erst mit /harvest die Ernte bestätiegen um den Motor Starten zu können!"); return 1; } }
    else { SendClientMessage(playerid, COLOR_ERRORTEXT, " Du hast keinen Schlüssel für das Fahrzeug!"); return 1; }
    }}
    for(new car = 0; car < sizeof(MulmanInfo); car++){
    if(vid == MulmanInfo[car][MmCarID]){
    if(MulmanInfo[car][MmLeiher] != playerid){
    if(PlayerInfo[playerid][pJob] == 20) { SendClientMessage(playerid, COLOR_GRAD4, " Du musst das Fahrzeug erst Mieten, dies kannst du mit /reservecar machen."); }
    else { SendClientMessage(playerid, COLOR_ERRORTEXT, " Du hast keinen Schlüssel für das Fahrzeug!"); }
    return 1;
    }}}
    if(Maske[playerid] == 0) { format(string, sizeof(string), "* %s startet den Motor",sendername); SetPlayerChatBubble(playerid, string, COLOR_PURPLE, 30.0, 2000); }
    else { SetPlayerChatBubble(playerid, "* jemand startet einen Motor", COLOR_PURPLE, 30.0, 2000); }
    SetTimerEx("StartEngineSleep",1300,0,"i",playerid);
    format(string,sizeof(string),"%s macht de motor an/aus.", sendername);
    Entertolog("motor",string);
    if(SpawnKillAktiv[playerid] == 1) { SpawnSkillSchutz(playerid);}
    }
    else { SendClientMessage(playerid,COLOR_GRAD2," Tank leer..."); return 1; }
    }
    }
    return 1;
    }

  • Das hier muss weg:
    if(Maske[playerid] == 0) {
    SetPlayerChatBubble(playerid, string, COLOR_PURPLE, 30.0, 2000); SetTimerEx("StartEngineSleep",800,0,"i",playerid);
    }
    else {
    SetPlayerChatBubble(playerid, "* jemand startet einen Motor", COLOR_PURPLE, 30.0, 2000); SetTimerEx("StartEngineSleep",800,0,"i",playerid);
    }


    Das hast du oben stehen, und dann unten nochmal. Es darf nur unten stehen.

  • Beitrag von Eddy ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Ich weiß zwar nicht ob es hier rein kommt aber naja . ( Sollte es falsch sein pls löschen oder verschieben )



    Gibt es eine Möglichkeit eine Overview Map von meiner Map zu bekommen die ich auf dem Wasser gemappt habe? ( Das es so aussieht wie auf der normalen Map )


    //Edit:
    So wie die hier:
    http://master-pic.de/bild.php/38957,unbenanntTF9R4.png

    MfG kleinkiko

    Lust auf ein Rust Server? Dann schau doch mal HIER vorbei :)

    2 Mal editiert, zuletzt von kleinkiko ()

  • Hey, hab da ein Problem und zwar habe ich nun für jeden Rank einen Namen erstellt und habe dazu einen Chat erstellt ( Ansage Befehl an alle Spieler '/announce' ).


    Der Befehl funktioniert auch, jedoch ließt er den Ranknamen nicht richtig aus und gibt bspw. statt "Projektleiter", "Supporter" wieder.



    stock GetAdminRank(rank){
    new rankname[40];
    switch(rank){
    case 0: format(rankname, sizeof(rankname), "User");
    case 1: format(rankname, sizeof(rankname), "Supporter");
    case 2: format(rankname, sizeof(rankname), "Trial Admin");
    case 3: format(rankname, sizeof(rankname), "Admin");
    case 4: format(rankname, sizeof(rankname), "Head Admin");
    }
    return rankname;
    }



    ocmd@2:aa,announce(playerid,params[])
    {
    if(!isAdmin(playerid,1))return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin.");
    new string[128], pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pName,sizeof(pName));
    if(sscanf(params,"s",string))return SendClientMessage(playerid,COLOR_GREY,"** /announce [Text] **");
    format(string,sizeof(string),"%s: %s : %s",GetAdminRank(playerid),pName, string);
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(isAdmin(playerid,1))
    {
    SendClientMessage(i,COLOR_RED,string);
    }
    }
    }
    return 1;
    }


    Danke im voraus! :)
    ( Bin noch Anfänger :p )

  • Beitrag von AirM4X ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • @Aviero:
    stock GetAdminRank(playerid){
    new rankname[40];
    switch(SpielerInfo[playerid][AdminLevel]){ //Hier die Variable an deine Admin Level Variable anpassen
    case 0: format(rankname, sizeof(rankname), "User");
    case 1: format(rankname, sizeof(rankname), "Supporter");
    case 2: format(rankname, sizeof(rankname), "Trial Admin");
    case 3: format(rankname, sizeof(rankname), "Admin");
    case 4: format(rankname, sizeof(rankname), "Head Admin");
    }
    return rankname;
    }


    Rayan:
    Nutze dazu: http://wiki.sa-mp.com/wiki/SetPlayerAttachedObject

  • Hay, ich bin mir sicher, dass das Thema schon einige male durchgekaut wurde, ich habe jedoch nichts gefunden wo es für mich eine richtige Antwort gibt.


    Problem
    Meine gemappten Objekte(CreateDynamicObject) spawnen erst sehr spät, ich möchte es so einstellen, dass die Objekte schon von einer größeren Distanz gestreamt werden und nicht erst wenn man fast davor steht.
    Zudem bräuchte ich noch eine Seite auf der man immer die neusten Streamer findet und wie man diese einstellt (Drawdistance undso..)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Beitrag von Cassius ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Jumpin:
    Schau mal hier, da haben wir das mal ausführlich besprochen: Streamer Plugin Streamrate
    Allerdings sei anzumerken: Mehr als 1000 Objekte können nicht gleichzeitig geladen sein, wenn du also ganz viele Objekte auf einem kleinen Platz hast kann es schon sein, dass sie sehr spät laden.


    @Aviero:
    Such mal nach "[playerInfo]" (ohne die " ") und poste die Zeile. Hast es hinbekommen. :)


    kleinkiko: Mir wäre keine SA-MP seitige Lösung bekannt. Meistens werden solche Karten aus vielen Einzelbildern mit Photoshop (o.ä.) zusammengesetzt. Vielleicht fragst du mal in der Mapping Base, vielleicht weiß da jemand mehr drüber.

  • Jeffry:


    Bekomme zwar nun keine Fehler mehr, jedoch liest er immer noch nicht den richtigen Rank aus.



    ocmd@2:aa,announce(playerid,params[])
    {
    if(!isAdmin(playerid,1))return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin.");
    new string[128], pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pName,sizeof(pName));
    if(sscanf(params,"s",string))return SendClientMessage(playerid,COLOR_GREY,"** /announce [Text] **");
    format(string,sizeof(string),"%s: %s : %s",GetAdminRank(playerid),pName, string);
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(isAdmin(playerid,1))
    {
    SendClientMessage(i,COLOR_RED,string);
    }
    }
    }
    return 1;
    }



    stock GetAdminRank(playerid){
    new rankname[40];
    switch(sInfo[playerid][alevel]){ //Hier die Variable an deine Admin Level Variable anpassen
    case 0: format(rankname, sizeof(rankname), "User");
    case 1: format(rankname, sizeof(rankname), "Supporter");
    case 2: format(rankname, sizeof(rankname), "Trial Admin");
    case 3: format(rankname, sizeof(rankname), "Admin");
    case 4: format(rankname, sizeof(rankname), "Head Admin");
    }
    return rankname;
    }

  • @Jeffry.
    Kannst du mir das nochmal genau erklären?

    CreateDynamicObject...//alle hier oben...
    for(new i=0; i<SO_VIELE_OBJEKTE_WIE_DU_HAST; i++) Streamer_SetFloatData(STREAMER_TYPE_OBJECT, i,E_STREAMER_DRAW_DISTANCE, 500.0);


    Beispiel:



    CreateDynamicObject(19377, 1579.54602, -1750.09839, 6.48330, 0.00000, 0.00000, 0.00000);
    CreateDynamicObject(19377, 1579.54578, -1759.72888, 6.48330, 0.00000, 0.00000, 0.00000);
    CreateDynamicObject(19313, 1410.28198, -1715.27917, 7.91662, 0.00000, 0.00000, 83.90988);
    CreateDynamicObject(8661, 1515.13806, -1707.89490, 12.37220, 0.00000, 0.00000, 90.00000);
    CreateDynamicObject(8661, 1515.13806, -1667.89771, 12.37220, 0.00000, 0.00000, 90.00000);
    CreateDynamicObject(8661, 1515.13806, -1627.90161, 12.37220, 0.00000, 0.00000, 90.00000);
    CreaetDynamicObject(8661, 1454.35925, -1597.93555, 12.37220, 0.00000, 0.00000, 0.00000);
    CreateDynamicObject(8661, 1435.20654, -1707.89490, 12.37220, 0.00000, 0.00000, 90.00000);
    CreateDynamicObject(8661, 1443.56909, -1667.91370, 12.37220, 0.00000, 0.00000, 90.00000);
    CreateDynamicObject(8661, 1443.56909, -1627.91760, 12.37220, 0.00000, 0.00000, 90.00000);
    CreateDynamicObject(19377, 1487.26233, -1722.04797, 12.29220, 0.00000, 90.00000, 90.00000);
    CreateDynamicObject(19377, 1477.62805, -1722.04797, 12.29220, 0.00000, 90.00000, 90.00000);
    CreateDynamicObject(19377, 1467.99622, -1722.04797, 12.29220, 0.00000, 90.00000, 90.00000);
    CreateDynamicObject(19377, 1461.03821, -1723.59229, 12.28820, 0.00000, 90.00000, 30.00000);
    CreateDynamicObject(19377, 1451.96240, -1728.83118, 12.28820, 0.00000, 90.00000, 30.00000);
    CreateDynamicObject(19377, 1494.21448, -1723.59387, 12.28820, 0.00000, 90.00000, 150.00000);
    CreateDynamicObject(19377, 1503.30615, -1728.84265, 12.28820, 0.00000, 90.00000, 150.00000);
    CreateDynamicObject(8661, 1455.19238, -1707.89490, 12.37220, 0.00000, 0.00000, 90.00000);
    CreateDynamicObject(8661, 1495.15344, -1707.89490, 12.37220, 0.00000, 0.00000, 90.00000);
    CreateDynamicObject(8661, 1475.17285, -1707.89490, 12.37220, 0.00000, 0.00000, 90.00000);
    CreateDynamicObject(8661, 1494.35864, -1597.93555, 12.37220, 0.00000, 0.00000, 0.00000);
    CreateDynamicObject(8661, 1534.35596, -1597.93555, 12.37220, 0.00000, 0.00000, 0.00000);
    CreateDynamicObject(19377, 1437.04077, -1690.62891, 12.28820, 0.00000, 90.00000, 90.00000);
    CreateDynamicObject(19377, 1437.04077, -1638.12439, 12.28820, 0.00000, 90.00000, 90.00000);
    CreateDynamicObject(19377, 1437.04077, -1680.12781, 12.28820, 0.00000, 90.00000, 90.00000);
    CreateDynamicObject(19377, 1437.04077, -1669.62952, 12.28820, 0.00000, 90.00000, 90.00000);
    CreateDynamicObject(19377, 1437.04077, -1659.12830, 12.28820, 0.00000, 90.00000, 90.00000);
    CreateDynamicObject(19377, 1437.04077, -1648.62622, 12.28820, 0.00000, 90.00000, 90.00000);
    for(new i=0; i<28; i++) Streamer_SetFloatData(STREAMER_TYPE_OBJECT, i,E_STREAMER_DRAW_DISTANCE, 500.0);


    Wäre das so richtig oder was muss ich da noch einstellen?

  • @Aviero: Was wird ausgelesen und was sollte ausgelesen werden? Wird bei allen der gleiche Rang ausgelesen?


    kleinkiko: Ich würde es mit dem Map Editor versuchen, von oben Screenshots machen und diese entsprechend verkleinern. Es gibt auch für GTA einen Weitsicht-Mod, mit entsprechendem Wetter könnte es damit auch klappen, in Verbindung mit cem CamHack oder einer sonstigen freien Kamera, damit du senkrecht nach unten schauen kannst. Was anderes fällt mir nicht ein.


    Jumpin: Ja so. Du darfst nicht vergessen die streamdistance in der server.cfg anzupassen. Möglicherweise musst du auch die CellSize anpassen.

  • Was von beidem müsste ich nehmen?


    V1

    //LSPD
    CreateDynamicObject(19377, 1579.54602, -1750.09839, 6.48330, 0.00000, 0.00000, 0.00000);
    CreateDynamicObject(19377, 1579.54578, -1759.72888, 6.48330, 0.00000, 0.00000, 0.00000);
    CreateDynamicObject(19313, 1410.28198, -1715.27917, 7.91662, 0.00000, 0.00000, 83.90988);
    CreateDynamicObject(8661, 1515.13806, -1707.89490, 12.37220, 0.00000, 0.00000, 90.00000);
    for(new i=0; i<4; i++) Streamer_SetFloatData(STREAMER_TYPE_OBJECT, i,E_STREAMER_DRAW_DISTANCE, 500.0);


    andere sachen vom Script (befehl etc..)


    //LVPD
    CreateDynamicObject(19377, 1579.54602, -1750.09839, 6.48330, 0.00000, 0.00000, 0.00000);
    CreateDynamicObject(19377, 1579.54578, -1759.72888, 6.48330, 0.00000, 0.00000, 0.00000);
    CreateDynamicObject(19313, 1410.28198, -1715.27917, 7.91662, 0.00000, 0.00000, 83.90988);
    CreateDynamicObject(8661, 1515.13806, -1707.89490, 12.37220, 0.00000, 0.00000, 90.00000);
    for(new i=0; i<4; i++) Streamer_SetFloatData(STREAMER_TYPE_OBJECT, i,E_STREAMER_DRAW_DISTANCE, 500.0);


    v2

    //LSPD
    CreateDynamicObject(19377, 1579.54602, -1750.09839, 6.48330, 0.00000, 0.00000, 0.00000);
    CreateDynamicObject(19377, 1579.54578, -1759.72888, 6.48330, 0.00000, 0.00000, 0.00000);
    CreateDynamicObject(19313, 1410.28198, -1715.27917, 7.91662, 0.00000, 0.00000, 83.90988);
    CreateDynamicObject(8661, 1515.13806, -1707.89490, 12.37220, 0.00000, 0.00000, 90.00000);


    andere sachen vom Script (befehl etc..)


    //LVPD
    CreateDynamicObject(19377, 1579.54602, -1750.09839, 6.48330, 0.00000, 0.00000, 0.00000);
    CreateDynamicObject(19377, 1579.54578, -1759.72888, 6.48330, 0.00000, 0.00000, 0.00000);
    CreateDynamicObject(19313, 1410.28198, -1715.27917, 7.91662, 0.00000, 0.00000, 83.90988);
    CreateDynamicObject(8661, 1515.13806, -1707.89490, 12.37220, 0.00000, 0.00000, 90.00000);
    for(new i=0; i<8; i++) Streamer_SetFloatData(STREAMER_TYPE_OBJECT, i,E_STREAMER_DRAW_DISTANCE, 500.0);

  • @Aviero: Was wird ausgelesen und was sollte ausgelesen werden? Wird bei allen der gleiche Rang ausgelesen?

    Aktuell liest das System nur den Ranknamen "User" aus.
    Jedoch möchte ich es ja so haben, dass wenn der Spieler bspw Head Admin ist das es dann auch Ingame so steht:


    "Head Admin Aviero: TEXT"


    Aktuell ist es jedoch so:
    "User Aviero: TEXT"

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen