Probleme beim Scripten.

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
  • Hallo Community,


    Ich habe Gestern mit einem kompletten Selfmade Script begonnen. Da ich leider noch sehr wenig Erfahrung im Bereich Pawno Scripting besitze komme ich nicht immer von alleine weiter.
    Ich habe mir jetzt überlegt dass ich hier einfach ein kleines "Thema" nur für mich aufmache. Hier werde ich immer wieder kleine Script Fragen an euch stellen wen ich mal nicht weiter kommen sollte.
    Natürlich versuche ich so viel wie möglich alleine zu schaffen (damit ich es auch lernen kann).
    Dennoch wäre es schon wen ein paar von euch mir bei meinen Problemen helfen könnten.



    Momentan habe ich 2 Probleme bei denen ich nicht mehr weiter komme.


    Problem 1:
    Ich will das man einen Befehl ("/Geschichte") nur an einem bestimmten Punkt machen kann. Also so dass der Befehl nur an der einen Stelle funktioniert und sonst nirgends... Wie muss ich das Scripten damit das funktioniert ?


    Problem 2:
    Ich habe mir einen Dialog erstellt mit -> ("DIALOG_STYLE_MSGBOX") da habe ich jetzt eingestellt dass wen man auf "OK" drückt automatisch dem Spieler eine Position (Checkpoint) angezeigt wird, damit er weis wohin er laufen / fahren muss.
    Leider weis ich nicht wie ich es machen muss damit der Checkpoint automatisch wieder verschwindet sobald man in die nähe kommt oder durchläuft.


    Kann mir bei diesen 2 Problemen irgendjemand helfen ? würde mich wirklich sehr darüber freuen.


    Mit freundlichen Grüßen:
    Matthias -> TropicalMonster



  • Problem 1:
    if(IsPlayerInRangeOfPoint(playerid,posX,posY,posZ))


    Oder
    IsPlayerInRangeOfPoint(playerid,posX,posY,posZ);


    Bei Problem 2 werde ich mal Schauen :D


    PS: Mit Handy Verfasst ;)

    Man soll weder annehmen noch besitzen, was man nicht wirklich zum Leben braucht.



  • Problem 1:


    Du gehst im Ingame an den Punkt und gibts "/save Geschichte" ein! Danach kannst du SA:MP wieder schließen. Anschließend gehst du unter GTA San Andreas User Files - samp - savedpositions


    Danach nimmst du von der Position "Geschichte" die X - Y - Z Koordinate!


    Beispiel:


    AddPlayerClass(79,240.5059,78.7708,1005.0391,358.7232,0,0,0,0,0,0); // duty
    Davon sind 240.5059,78.7708,1005.0391 die X-Y-Z:


    X = ROT
    Y = GELB
    Z = BLAU


    Danach erstellst du den Befehl:


    Beispiel
    ocmd:geschichte(playerid,params[])
    {
    if(IsPlayerInRangeOfPoint(playerid,2.0,240.5059,78.7708,1005.0391))
    {
    //hier was passieren solll
    }
    return 1;
    }


    Problem 2:


    Damit der Checkpoint wieder verschwindet:


    DisablePlayerCheckpoint(playerid); -> Unter OnPlayerEnterCheckpoint


    Bei weiteren Fragen helfe ich dir gerne :D


    Mit freundlichen Grüßen,
    [SoA]TheBester


  • Was zum Teufel meinst du mit Geiler ? :D


    Na und ?
    Das 1 dafür war richtig :)
    War mir Grade nur unsicher da ich am Handy bin :)


    Mfg

    Man soll weder annehmen noch besitzen, was man nicht wirklich zum Leben braucht.




  • Nö wars auch nicht


    if(IsPlayerInRangeOfPoint(playerid,posX,posY,posZ))
    so sollte es
    if(IsPlayerInRangeOfPoint(playerid,radius,posX,posY,posZ))


    Was stört mich der Radius ?
    Is ja wohl klar :)
    Aber kommen wir zum Thema zurück!

    Man soll weder annehmen noch besitzen, was man nicht wirklich zum Leben braucht.



  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Zu den 2. problem auch ganz easy


    public OnPlayerEnterCheckpoint(playerid)
    {
    //code etc
    DisablePlayerCheckpoint(playerid);
    return 1;
    }


    einfach den Disable über den letzten return bei den Callback einfügen

    All in all it's just another brick in the wall

  • Vielen Dank an alle die mir dabei geholfen haben.


    Ich hab es jetzt schon so hinbekommen wie ich es haben wollte :) Dankeschön an alle (Ich dachte nicht das so viele Antworten kommen).


    Die Erklärung von "Music4You" hat schon gereicht. Ein bisschen was kann ich zwar nicht sehr viel aber ein bisschen was schon...



    Also sobald ich wieder ein Problem bei irgendwas haben sollte melde ich mich wieder bei euch.


    DANKESCHÖN



    PS: so sieht es jetzt momentan aus.





    public OnPlayerCommandText(playerid, cmdtext[])


    if(strcmp("/Geschichte",cmdtext,true,10)==0)
    {
    if(IsPlayerInRangeOfPoint(playerid,1.0,292.9664,-1768.5336,4.5481))
    {
    ShowPlayerDialog(playerid,Dialog_Geschichte,DIALOG_STYLE_MSGBOX,"Vorgeschichte","Hier kommt die Geschichte hin !","Weiter","Abbrechen");
    }
    return 1;
    }


    public OnPlayerEnterCheckpoint(playerid)


    {
    SendClientMessage(playerid,Gelb,"Geh zur Information in der Stadthalle, und such das Einwohnermeldeamt.");
    DisablePlayerCheckpoint(playerid);
    return 1;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])


    {
    if(dialogid==Dialog_Geschichte)
    {
    if(response==1)
    {
    ShowPlayerDialog(playerid,Dialog_Stadthalle,DIALOG_STYLE_MSGBOX,"Personalien","Um in der Stadt bleiben zu können, und um dich auszuweisen\nbrauchst du einen Personalausweis.\n Fahre zur Stadthalle und besorge dir dort einen.\nDamit es schneller geht kannst du dir vor dem Haus\nein Fahrrad mieten.","OK","Abbrechen");
    }
    if(response==0)
    {
    SendClientMessage(playerid,Rot,"Du hast die Aufgabe abgebrochen.\n Versuche es bitte noch einmal.");
    }
    }
    if(dialogid==Dialog_Stadthalle)
    {
    if(response==1)
    {
    SetPlayerCheckpoint(playerid,1481.4243,-1738.6479,13.5469,1);
    SendClientMessage(playerid,Gelb,"Fahre zur Stadthalle");
    }
    if(response==0)
    {
    SendClientMessage(playerid,Rot,"Du hast die Aufgabe abgebrochen.\n Bitte versuche es noch einmal.");
    }
    }
    return 1;
    }




    Also Fehler bekomme ich keine. Aber so ist es auch richtig oder ?

  • Bin mir nicht sicher aber beim public OnPlayerEnterCheckpoint(playerid), muss dan icht noch eine Positions abfrage vom Checkpoint rein?
    Ich meine woher soll das System wissen, welchen Checkpoint du meinst.


    Er will doch eh, dass alle Checkpoints verschwinden wenn man reingeht,
    man muss doch CP´s nicht noch definieren um diesen dann zu "Disablen"..