Beiträge von Sub Royal

    Das hier ist der Code zu folgendem Konstrukt


    kreis.png


    Ich habe einen Ortsvektor mit einem Punkt wo der Spieler hinschauen soll, bspw ein Gebaeude.
    Dann habe ich einen Ortsvektor mit den Koordinaten des Spielers von denen aus der Spieler auf den anderen schauen soll.
    Weiterhin soll sich der Spieler auf einer Kreisbahn um ein Objekt bewegen, dazu muss ich die fehlenden Ortsvektoren auf der Kreisbahn extrapolieren.
    Dazu habe ich einen Ortsvektor des Mittelpunkts angenommen,den Ortsvektor des Punktes auf der Kreisbahn vor der Rotation (also Spieler) und der neue Ortsvektor jener danach. θ sei der Winkel der Bewegung. n sei der normalisierte Normalenvektor der Ebene in der die Kreisbahn liegt.


    So nun bin ich jedoch am Raetseln wie ich es umsetzen soll dass der Spieler in speed/360 Zeit jeweils um eine Koordinate weiter geschoben wird, wie kriege ich das vernuenftig realisiert, bspw. durch Timer? Oder gibt es da clevere Loesungen?
    Jede speed/360 Sekunde eine Funktion durch einen Timer aufrufen oder so ist ja auch doof.

    Danke dir, leider klappt das irgendwie auch nicht, gibt auch einen Compilercrash der genau darauf zurueckzufuehren ist.
    Zu Fuss geht das auch nicht


    Code
    new Float:r=floatabs(floatsqroot(((playerPos[0][0]-circleCenter[0][0])*(playerPos[0][0]-circleCenter[0][0]))+((playerPos[0][1]-circleCenter[0][1])*(playerPos[0][1]-circleCenter[0][1]))+((playerPos[0][2]-circleCenter[0][2])*(cplayerPos[0][2]-circleCenter[0][2]))));

    Ist erstmal weiter nicht schlimm, komme die naechsten Minuten mit einer anderen Problematik.

    Habe folgendes Problem:


    Folgendes fuehrt irgendwie immer zum crash des compilers, wenn ich einem new Float: einen Wert von GetDistance zuweisen will.


    Code
    forward Float:GetDistance( Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2 );
    
    
    
    
    stock Float:GetDistance(Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2)
    {
        return VectorSize(x1-x2, y1-y2, z1-z2);
    }
    new Float:r=GetDistance(playerPos[0][0],playerPos[0][1],playerPos[0][2],circleCenter[0][0],circleCenter[0][1],circleCenter[0][2]);

    Kleine Frage.
    Habe OnPlayerClickPlayer drinnen.
    Jedoch wird das irgendwie nicht gecalled.
    Woran kann das liegen? Es wird einfach jarnichts davon ausgefuehrt.


    Ahoy habe folgendes Problem, und versuche das am cleversten zu loesen.


    Ich habe eine Datei mit dem Inhalt bspw:


    Code
    -11 11 3 453 3 5 65 22 -144

    Diese befinden sich alle in einer Zeile, und ich will jede einzelene Zahl in ein Array packen.
    Da habe ich erstmal an strtok gedacht, jedoch kann sscanf da vermutlich effizienter sein.
    Aber hat jemand ein Beispiel fuer ein Script, wie ich unabhaengig von der Anzahl der Elemente, jedes aus einer Datei auslesen kann, und in ein Array kriege?
    Da muesste ich ja irgendwas in Richtung while !=EOF haben wie in C.
    Das ganze soll in PAWN geloest werden.

    Also ich sehe SA-MP nicht als tot an.
    Ich bin ein Spieler der gerne alte Spiele wie Civilization 3,NFS MW etc. spielt und SA-MP wird mir auch mit Sicherheit noch gerne Freude machen.
    Ich denke es gibt auch andere Spieler wie mich weshalb SA-MP wohl immer gespielt werden wird.
    Sieht man ja auch an OpenTTD.
    Das Hautproblem bei SA-MP war meiner Ansicht nach der geschlossene Entwicklerkreis. Bei Open Source Projekten hat man eigentlich nur Vorteile.

    SA-MP spiele ich immernoch regelmäßig.
    Aber hier sehe ich extremes Potenzial, vorallem da das ganze Open Source ist! Sowas ist nicht zu unterschätzen.
    Werde mich da auch engagieren.

    So, habe festgestellt dass mein Gamemode leider nocht nicht so funktioniert :D
    Folgendes Problem:
    Wenn ein Spieler stirbt, bisher getestet mit 2 Spielern auf dem Server, in jeweils einem anderen Team, dann wird das Spiel direkt beendet.


    Das heißt: TeamRemaing() wird aufgerufen, jedoch weiß ich nicht warum da ich mit GetActiveTeamCount ja abfrage ob 2 Teams Spieler besitzen.
    Das passiert bspw. wenn ein Spieler runterfällt, sein Bett noch existiert, also er respawnen kann, also genau da soll es nicht aufgerufen werden.
    Wird der Spieler getötet und sein Bett ist weg kommt er in das TEAM_SPECTATOR, wodurch dann GetActiveTeamCount erkennt dass der Spieler nicht mehr im ursprünglichen Team ist, weshalb das Spiel dann beendet werden soll.




    Hier mal OnPlayerDeath




    TeamRemaining hier



    GetActiveTeamCount Funktion, und die GetTeamPlayerCount Funktion.



    Ich Grüße euch.



    Heute bin ich mal auf der Suche nach einer WBB 3 Lizenz, bzw. einem Account.
    Das ganze kann bezahlt werden via PayPal oder Überweisung.



    Weiterhin kann wenn gewünscht auch ein Mittelsmann eingesetzt werden.



    Für weitere Vorschläge, bzw. andere Versionen die jemand da hat, bin ich ebenfalls gerne offen.



    Max. Budget ist 20 Euro.

    Ich würde immernoch zum Diesel tendieren, habe ich auch gemacht und nicht bereut.
    Fahre nun einen 1.9er TDI, und das Ding ist extremst sparsam. Komme auch da auf die 4,0 Liter, jedoch bei 90 PS.
    Weiterhin ist das ding überaus robust.

    Gibt es eigentlich sinvolle Anwendungen fuer ein

    Code
    -->


    ?
    Ist ja eigentlich nur dekrement mit Vergleich ob irgendwas groesser irgendwas ist, kann man doch bspw. in while loops einsetzen, aber gibt es da evtl. sinvollere Anwendungen?
    oder sowas wie


    Code
    -x--<


    Ich gruesse euch liebe Community,



    Hiermit praesentiere ich mein aktuelles Miniprojekt Last Bed Standing,!



    Motivation:




    Idee und Ziel dieses Projekts war es das Bedwars Minigame welches es auf
    vielen Minecraft Servern gibt in SA-MP und im SA-MP Stil nachzubauen
    (Bett sprengen statt abbauen etc..), und mal ein andere Art von Servern
    erstellen, denn man sieht ja leider nur noch Reallife.
    Weiterhin programmiere ich im Rahmen meines Studiums viel in C, und
    warum nicht mal bisschen ueben durch Programmieren in einer C aehnlichne
    Sprache? Daraus ist dieses Projekt in nun ca. 2 Wochen entstanden, und
    was geht schon ueber ein Selfmade?


    sa-mp-005.png


    Letztlich ist das Projekt nur aus Spass, und etwas Uebung fuer das Studium entstanden, und wird in Zukunft noch geupdated.


    Der Hauptgrund ist außerdem die Entwicklung an diesem Gamemode voranzutreiben, da ich diesen ebenfalls als Open Source Projekt regelmäßig verbessern möchte.
    Aktuell befindet sich der Gamemode im Alpha Stadium und wird vorraussichtlich jede Woche geupdated.



    Das Fragment welches aus Grand Larceny ist, ist lediglich die Team bzw.
    Stadtauswahl, meiner Ansicht nach viel schoener als der Standardkram den
    man auf sovielen Servern sieht.



    Aktuell gibt es in der Bone County Map 3 Teams zur Auswahl aehnlich wie in Bedwars, wo es zu Beginn auch eine Teamauswahl gibt.
    Team ROT befindet sich am Sherman Staudamm, westlich von El Castillo del
    Diablo, Team GRAU bei Area 51 und Team BLAU bei Verdant Meadows, dem
    Flughafen.


    sa-mp-010.png


    sa-mp-007.png


    Zwischenzeitlich wurde auch eine Reihe an Maps eingebaut, einmal in Bone County, zweimal im Wald, einmal in Green Palms.


    Wie funktioniert das Spielprinzip?


    Jedes Team verfuegt ueber einen Shop mit einem "Villager" bei welchem
    man Waffen, Armour , Skills und eine Bombe kaufen kann die noetig ist um
    ein feindliches Bett zu zerstoeren.


    sa-mp-001.png


    gallery7.jpg


    sa-mp-002.png


    Alle Teams haben nahe Ihrer Base irgendein Fahrzeug wie z.B. Panzer oder
    Seasparrow um sich besser vor Feinden verteidigen zu koennen.



    Jedes Team besitzt einen "Bronzespawner" bzw. da ich das ganze im GTA
    Stil machen wollte, einen Geldspawner, welcher random Geldpickups
    generiert, welche noetig sind um sich Waffen und andere Dinge zu kaufen.


    gallery1.jpg


    Weiterhin gibt es noch einen großen Geldspawner ziemlich zentral, gekennzeichnet mit einem Dollarzeichen auf der Map.
    gallery6.jpg


    Dort spawnt deutlich mehr Geld, jedoch werden sich wohl auch die Spieler drum streiten, da man mit dem Geld interessante Dinge wie Bomben, Helme, Waffen, Warpkits etc. kaufen kann.
    Einige Dinge werden künftig auch aus Bedwars übernommen.


    sa-mp-008.png
    Momentan wird das Bett des Gegnerteams abgebaut indem man den Command "/blowup" nahe des gegnerischen Bettes eingibt, oder eine Bombe dort platziert und fernzündet.
    Weiterhin wurde nun das Warpkit eingefügt, welches dazu dient sich zurück zu seiner Base zu teleportieren indem man den Command "/warp" benutzt.


    Das Spiel ist beendet wenn das Bett des jeweiligen Teams zerstört ist (Da die Gegner dann nicht mehr respawnen können), und die Gegnerischen Spieler getötet wurden.


    Bisher sind noch nicht allzuviele Commands verfügbar, bspw.



    Ziel ist es das Bett des feindlichen Teams zu zerstoeren (wobei nach dem
    Zerstoeren eines Betts das jeweilige Team nicht mehr respawnen kann),
    und dann die restlichen Spieler zu eliminieren, und so das Spiel zu
    gewinnen, wie in Bedwars halt.
    Der Gamemode ist inzwischen im Vergleich zum Ursprungs Grand Larceny, nun mit insgesamt 4400 Zeilen ziemlich umfangreich.




    Das ganze habe ich inzwischen mit 4 Spielern insgesamt ausprobiert, und ein Spiel dauert durchschnittlich 10 Minuten.
    Der Spassfaktor ist trotz der Einfachheit des Gamemodes sehr gross!


    Momentan bleibt es jedoch herauszufinden ob ein Langzeitspaßfaktor vorhanden ist, und wie man eventuell Dinge verbessern kannt.



    Der Gamemode ist komplett in ENGLISCH geschrieben um auch Spieler aus anderen Laendern anzulocken!



    Aktuell laeuft das Script unter openknogle.eu als SA-MP Server mit 32 Slots unter Version 0.3.7.



    Weiterhin sind aktuell 4 verschiene Maps spielbar, und man kann
    problemlos weitere erstellen, dazu ist jeder gerne angehalten.


    Fragen und Anregungen können gerne auf meinem Teamspeak openknogle.eu geäußert werden, als auch per E-Mail an webmaster@knogleinsi.de


    Auch gerne hier im Thread, sagt einfach wenn euch irgendetwas ganz und garnicht passt.
    Schließlich ist das Projekt voll und ganz auf eure Mithilfe angewiesen.


    Start ist eigentlich für morgen 18 Uhr geplant, jedoch ist der Server jetzt schon zu besuchen, jedoch sollen eventuelle Bugs bis morgen ausgebügelt werden.

    Mag jemand mir mal die Tage helfen YSI aus meinem Script zu eliminieren?
    Habe nichts aus dem Script drin, aber wenn ich es streiche, schmiert der Compiler ab.
    Habe damals y_ini genutzt, nun komplett gestrichen, aber wenn ich es rausnehme schmiert das Ding einfach ab.


    Habe eine Funktion geschrieben zum Runden von Integern.
    Kann man diese auch mit Bitwise Verknuepfungen und Shifts darstellen?


    C
    stock round(num)
    {
    	new rem = num % 10;
    	return rem >= 5 ? (num - rem + 10) : (num - rem);
    }

    So , ich begebe mich jetzt ran an mein Projekt.



    Ich habe ein Team-Deathmatch worin es ebenfalls darum geht das Bett eines Gegnerteams zu vernichten.


    Das Hauptziel besteht darin das Bett als erstes zu vernichten, und dannach die Spieler des Gegnerteams zu vernichten.


    3 Bots sollen als Team fungieren, und jedes Team soll eine gewisse Rollenverteilung haben.
    Diese 3 Bots sollen zwischen verschiedenen Optionen abwägen, bspw. ob es wichtiger ist das Bett zu vernichten, oder die Spieler, oder ob das Team offensiv, oder defensiv sein soll.


    Gibt es da Tipps wie ich das scripttechnisch am besten angehe? :D Ich rechne da schon mit einem 10000 Zeilen Trümmer mit Schach-Engine ähnlichem Aufbau ( Werde ich mir mal von Stockfisch abkucken)


    Das hier habe ich mal gefunden was ich als Fundament nehme https://forum.sa-mp.com/showthread.php?t=504181


    Kaliber hat mir noch den Thread hier verlinkt, auch nochmal danke dafuer.


    https://forum.sa-mp.com/showthread.php?t=611925

    Alles klar, danke dir!


    Habe mal eine Frage:
    Ist es machbar NPC, bzw. Bots zu bauen, welche bspw. als annehmbare Gegner in einem Deathmatch dienen koennen?
    Die sich also auf den Spieler zu bewegen, man diese vernichten kann, und auch den Gegner angreifen?