Jein, der Backslash escaped, er löst also die Anführungszeichen danach auf. Probiers mit nem Doppelbackslash, ggf noch ne andere Font, wird vllt nicht von allen unterstützt. Also kurz: Textdraw1[playerid] = CreatePlayerTextDraw(playerid,341.000000, 179.000000, "\\");
Wenn du beispielsweise Anführungszeichen ausgeben willst, müsstest du es mit nem Backslash machen: Textdraw1[playerid] = CreatePlayerTextDraw(playerid,341.000000, 179.000000, "\"");
Für die, die das Plugin auch weiterhin unter SAMP 0.3.7 nutzen wollen, habe mir mal die Memory Adressen gehackt: SAMP_IP_OFFSET_037 = 0x21986D; //ip SAMP_PORT_OFFSET_037 = 0x21996E; //port
Habe bis gestern SAMPPlus verwendet, aber dieses Projekt scheint neuer, besser dokumentiert und aufgeräumter zu sein Ich setze mich gerade damit auseinander und mir ist aufgefallen, dass sich das Projekt ausschließlich auf Natives bezieht, nicht auf Callbacks. Ich werde mal mein Glück zversuchen und nen DirectX Hook und anderes installieren, ich hoffe das geht klar Gefällt mir sehr gut und mal was neues für mich, C#
Hab zwar erst vor 2 Wochen mit C++ angefangen, aber ich werd das auch probieren in GCC zu implementieren, das mit GCC ist sehr notwendig, denn Linux Server sind einfach besser
Hier eine Anleitung, wie man den Client auf die Version für SAMP 0.3.7 updated:
Das fügt ihr bei den anderen Definitionen ein (in Form1.cs) private static int SAMP_IP_OFFSET_037 = 0x21986D; private static int SAMP_PORT_OFFSET_037 = 0x21996E;
Außerdem fügt ihr dann bei der VersionDetection, also ab Zeile 210, den else-if Block ein (also vor dem letzten else Block und nach dem letzten else-if Block): else if (str == "0.3.7") { samp_ip_addr = SAMP_IP_OFFSET_037; samp_port_addr = SAMP_PORT_OFFSET_037; }
Dann noch Rechtsklick beim Designer von Form1.cs auf den VersionSelector und Properties (Eigenschaften anzeigen). Zu guter Letzt geht ihr da beim Abschnitt Data auf Items, wo so etwas wie "(Collection)" daneben stehen müsste. Daneben sind nochmal 3 Punkte auf einem Button. Da klickt ihr rauf und drückt [ENTER] und fügt "0.3.7" hinzu. Fertig
Könnte es vllt sein dass dein Computer nicht so ganz sauber läuft bzw. die Datenbank ein paar Fehleroutputs hat? Könnte mir vorstellen, dass die Verbindung bzw. die Abfragen zur Datenbank so lange dauern. Ggf mal ne andere Datenbank ausprobieren, aber der Localhost müsste sowieso schneller als irgendein externer Hoster sein. Von daher vllt mal die Verbindung checken
Okay nur noch so zur Optimierung, du hast 2x PlayerTextDrawSetShadow drin, brauchst es aber nur einmal Und dann einfach ne Boolean noch hinzufügen (für jeden Spieler) und dann kannst du mit /handy das handy anzeigen und verstecken lassen (PlayerTextDrawHide)
Soweit ich das weiß, wurde es mit Absicht gemacht und man muss sich einen HostedTab kaufen, damit Geld reinkommt (für die Website und den MasterServer).
Heute möchte ich mein Event System releasen (Source ganz unten in diesem Post). Es basiert wieder einmal auf dem Shoebill Plugin und hat sehr viele Zeilen Ich habe vor einem halben Jahr aufgehört, daran zu schreiben und bin heute mal über den Code rüber gegangen, um den Code etwas zu bereinigen und dachte mir, dass es vllt. jmd. braucht. Ich werde sicher später daran weiterarbeiten.
Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.
(altes Video ^^) (weitere Videos folgen)
Was sind die Besonderheiten?
Es ist einfach erweiterbar (von Java allein aus)
Es beinhaltet schon 2 Events: TTT (Trouble in Terrorist Town) und Catching (Fangespiel)
Es ist auf Englisch und Deutsch ! (Multilanguage Support!)
Es ist mit Java 8 geschrieben.
Es gibt ein Grundsystem, das immer arbeitet, sodass für zusätzliche Events einfach nur die Features implementiert werden müssen (zusätzlich einfach erweiterbar)
Viele Maps
Standard-Textdraws
Game/Event Timer
Standard-Timer
Gewinnerliste
viele Einstellungen wie z.B.
Autospawn
automatisches Beenden, wenn z.B. keine Spieler mehr zu fangen sind oder das Event fertig ist bzw. jmd geleavt ist
Freeze von Spielern
automatisches reseten von Stats nach dem Event
Teleport zum Event (Admin!)
uvm... (siehe Tab Liste unten).
Es unterstützt das Spielen auf freier Welt und auf Maps (eingegrenzte Flächen!)
Es hat ein implementiertes Missionssystem, mit dem man einfach Missionen in Events und auch außerhalb erstellen kann.
Ein implementiertes NPC System ist auch enthalten, jedoch noch nicht so ausgeklügelt
Was brauche ich dafür?
Shoebill Plugin
Localhost (also eigenen Computer) oder Root Server
Java
[tabmenu]
[tab='Standardaktionen','']
Event erstellen
Event zerstören
Event beitreten (alle Events werden mit Namen und benutzer aufgelistet)
Event verlassen
Event starten
Event beenden
Event vorbereiten
Eventvorbereitung beenden
Eventvorbereitung überspringen
Spieler einladen
Letzte Eventergebnisse einsehen
Liste der Member eines Events einsehen
Liste der Member, welche noch nicht beim Treffpunkt sind, einsehen
Spielstatus einsehen
Sprache ändern
[tab='TODO']
Traitorshop
NPC AI System
Singleplayer / Multiplayer Missions
Actorsystem
neue Eventtypes
Maps autoloader (einfaches importieren von PAWN Maps)
Bugfixes
[tab='Startbedingungen',''] Falls die Bedingungen für ein Event nicht erfüllt sind (durch die Einstellungen), kann das Event nicht gestartet werden. Zudem werden immer min. 2 Spieler benötigt, eine höhere Spielerzahl ist vom Event abhängig. [tab='Updates',''] Update 0.4e R1: - changed Key to open Dialogs and Gates from [ Y ] to [ H ] - added a lot of new maps - added EventMapDescription to easily describe a map - improved EventMap / map handling with a global map loader, now you can easily add new maps - fixed some maps with improved extern map converter - added Gates from virtuality-roleplay project + improved it - fixed eventId counter (calculated with value of events) to autoincrement with local eventIndex Integer - improved + fixed Dialoges - added map informations / details (because of the credits) - changed auto respawn system on leaving the map - added destroy() to EventMap for special handling, e.g. creating Gates on a map
Update 0.4e: - improved event handling (eg. instead of remove(Player) and leave(Player) -> onPlayerExit(Player) - fixed Textdraws - increased range of radius functions - minor performance improvement - added GPS and RangeLabel - fixed getWinner for Catching and TTT - improved map handling and added a parent map class to easy handle maps - fixed TTTDeadBody - added save datas for players before event start and reset datas at end of event / onPlayerExit / on destroy - added TTTShop - added globalTimer and onGlobalTimer - added command to test maps ('/eventsdb', ...) - added maps
Update 0.4c R6: - some performance improvement - removed random color reset in Catching event and added global reset color on EventBase - added global EventTextdraw handling for better programming - added onPlayerPause, but currently not used and needs to be programmed and to undo / resend packets because of packetloss - added score timer to linear increase event score or check if event score need to increase - global stats added (eventScore) - added timer to sort the EventTextdraws (1. eventScore, 2. playername) - optimized the multiplicator (hunter only deals half damage for vehicle) - minor improvement because of color defines - fixed colors in event to hide players - removed mapTextdraw and added GangZone to give the map a better look and to use PickUps and Checkpoints / GPS - global timer added - fixed gametimer - added updateTextdraws to better update Textdraws for specific player after remove or ordered with eventTextdraw.move(int) - some minor bugfixes and checks
Update 0.4c R5: - added some Gametextes for better gameplay - fixed Textdraw - added NoTeamDamage - added global min player Amount - added preparation countdown - fixed timers - fixed TTTDeadBoy with Worlds and Interiors - fixed distance check and get dropWeapon - added global DropGun pickup - added more get DropWeapon with move above
Update 0.4c R4: - minor bugfixes - added some test commands - event maps new enviroment - added weapondata to deadBodys - added DropWeapons - added global gametimer - added deadBodyDialog - added mapfixes
Update 0.4c R3: - fixed dialog and map enviroment - fixed Textdraws - other minor bugfixes - added some test commands - added available maps which can select in an event which does not depends on maps
... [tab='Credits','']
123marvin123: Weiterentwicklung des Shoebill Plugins und Support
FCNPC Plugin: Unterstützung mit der Arbeit mit NPCs (jedoch noch nicht so gut ausgebaut)
Streamer Plugin und Wrapper (123marvin123's Wrapper) -> Maps Support
MapAndreas (FCNPC Plugin)
Fynn630: Video!
alle anderen kleineren Funktionen und Maps, Credits sind in dem Script und beim Aufruf von Events, z.B.
Sieht richtig gut fürn Anfang aus, hübsch Vllt die Texturen der Straßen bei dem Kreisverkehr ändern, aber k.a. ob das noch zu schwer ist, aber wäre halt ne Idee, denn so sieht der Kreisverkehr nur reingesetzt aus, die Straßen müssten rumgehen.... Sowas müsste meines Wissens nach gehen
Schöne Vorstellung und klingt sehr interessant. Vllt melde ich mich mal als Helfer / PluginDeveloper, die Minecraft Plugins müssten sich meiner Meinung nach mit Java erstellen lassen, wäre mein Hauptfach
Von eurer Organisation habt ihr meiner Meinung auch alles richtig gemacht, denn er wirbt für seine Seite, ist sich sicher dass ihr das auch einhaltet, bekommt in der Zeit ggf durch die Werbung Geld und mehr Aufrufe und kann das Geld dann zur Verfügung stellen (was er laut Vertrag sowieso machen muss). Also liegt das Problem eindeutig bei .e#.
Das merk ich. In deinen verlinkten Posts steht's auch genau drin. Du gibst es nur falsch wieder.
Nirgends steht, das der Dev von SA:MP bei JC2MP mit gewirkt hat. Da steht nur drin, das einer der Devs von JC2MP was für SA:Mp gemacht hat.
Trotzdem gibt es SA:MP deutlich länger als JC2(MP) - somit kann der Dev von SA:MP nicht aufgrund von JC2MP SA:MP gegründet bzw begonnen haben.
Alles anzeigen
du hast Recht, ich will mich hier aber auch nicht so darstellen lassen, lese einfach die letzten Posts oder diese Zitate genau und du bekommst mit, dass ich darin geschrieben habe, dass von ihm die Rede war und ich mich somit verbessert ind informiert habe. Und Wie gesagt, du hast Recht dass JC2 jünger als SAMP ist, aber hier gehts eindeutig nicht darum, was zuerst war sondern es geht um den Entwickler, falls du noch weiter darauf behaaren willst
Haha dann wäre SAMP weitaus weiter und besser entwickelt
Aber falls du dich noch mehr für Kalcor interessierst, in ein paar Ecken kann man mit dem Namen 'Kye' oder 'Kyeman' gucken, er hat soweit ich weiß auch bei JustCause2 mitentwickelt und daraufhin SAMP gestartet. Manchmal ist er noch in einem externen Forum aktiv - meines Erachtens nach aktiver als in seinem eigenen Forum
Falls du versuchst an ihn ranzukommen, kein gelingen. Außer du hast im englischen Forum ein gutes Ansehen, dann besteht eine kleine Chance... Nicht mal die BetaTester haben Einfluss auf Kalcor. Aber er hat auch ein Leben, das darf man nicht vergessen
Warum nicht die Instance des TextLabel bekommen, sobald ein Spieler in den TLW einsteigt, dann Update3DTextLabelText (https://wiki.sa-mp.com/wiki/Update3DTextLabelText) nutzen und fertig?^^ Du musst den Text gar nicht bekommen, lege dir einfach nen festen String an, der immer da steht und wenn du was dran hängen willst, nutzt du Update3DTextLabelText() und updatest den Text wieder mit deinem festen String und dem, was du hinzufügen möchtest?
Und sobald jemand aussteigt, wieder Instance des TextLabels über die VehicleID bekommen, aus dem Vehicle, aus dem man gestiegen ist und dann den Text wieder nur mit dem festen String updaten
Hallo Sourcreme, endlich mal wieder jmd der nicht nur Copy&Paste benutzt, sondern auch ma hinter die Kulissen schauen will
Generell kann ich dir sagen: Wenn du das Programmieren auch später noch beibehalten willst, ist PAWN absolut keine gute Computersprache für dich. Sie zeigt viele Verbindungen mit C aber das nur oberflächlich sag ich mal.
Ich habe mit einer einfachen Computersprache vor 2Jahren angefangen, welche nur für den Browser ist (HTML). Danach CSS (für besseres Design) und habe langsam verstanden, wie Computersprachen arbeiten (Attribute, Argumente, Selectoren usw.). Dann rüber zu JavaScript und jQuery um eine Verbindung darzustellen und nebenbei PHP. Danach eine Userverwaltung, um mit Datenbanken zu arbeiten (MySQL = Datenbank-Management-System). Nun bin ich dabei, mich von Java zu lösen und zu C++ zu gehen(+Assembler, Bash, SCM). Und das würde ich dir auch empfehlen. Es ist ein langer Weg, aber man versteht es so sehr genau.
Um dich aber nicht zu vergrauen, ich habe in der 8.Klasse alleine damit angefangen, es nach Lust und Laune mir selbst beigebracht und durch die kleinen Schritte auch alles verstanden. Nun um dir den Weg zu verkürzen, hier meine private Meinung und Erfahrung: Fange mit Java an (Shoebill Plugin nutzen, hat TOP Support). So lernst du sehr gut übersichtlich zu arbeiten. Besonders objektorientiert. Danach gelingt dir sicher ein guter Übergang zu C++, da du dich dann nur noch mit Zeigern auseinandersetzen musst (falls du C++ brauchst). Danach gerne noch zu Swift, aber wie gesagt, wenn du später noch was planst: Warum nicht Java, damit ganz einfach SAMP Gamemodes / Plugins entwickeln und später von profitieren? PAWN wird außer noch bei irgendeinem Counter Strike Reihe nirgends weiter benutzt (soweit ich weiß)!
Generell sollte es dein Hobby sein oder du Interesse zeigen, sonst ists nen ziemlich trockenes Brot und macht keinen Spaß. Viel Erfolg und wenn du Hilfe brauchst, PM
Ist halt nen Fehler mit den Arrays, du greifst auf einen Index zu, den es nicht gibt. Zudem nicht vergessen, dass du den Wert auf die Anzahl der maximalen Spieler deines Servers anpassen musst.
Wie groß ist dieser Array? Kilometer[vehicleid] += final_speed*0.0008; -> Kilometer[] ? Ich denke er sollte 2000 groß sein (https://wiki.sa-mp.com/wiki/Limits), bin mir aber nicht sicher, daran könnte es liegen.
@IPrototypeI Danke für die Antwort und gut, dass du nachfragst!
Wie der Name schon sagt, ist das eine GUI Library. Sie vereinfacht also den Umgang mit Textdraws und nimmt einem viel Arbeit ab. Es gibt z.B. extra Berechnungen und Umrechnungen, Anordnungen, Layouts, Styles, vorgefertigte Dialoge und auch die Möglichkeit, selbst einen Dialog aus vielen verfügbaren Komponenten zusammenzustellen. Außerdem behebt das System einige Fehler, die momentan bei den Textdraws vorhanden sind und erleichtert das Handling mit den Textdraws, sodass man Code-optimiert arbeiten kann. Die Textdraws speichern auch automatisch im Hintergrund, damit man diese zerstören kann (um sie zu entfernen, da es ein Limit an Textdraws gibt) und damit man diese mit Textdraw.recreate(); ganz einfach wiederherstellen kann. Somit hilft es einem mit dem Umgang der Textdraws wegen dem Limit.
Alles in allem ist es aber nicht nur auf Dialoge begrenzt, sondern man könnte damit auch einfach ein Tacho oder sonstiges bauen.
Zu den Komponenten kann man auch ganz einfach Attachments hinzufügen, die dann sozusagen an den Komponenten haften. So kann man beispielsweise eine Box an einen Text anhängen, welche sich mit dem Text mit vergrößert bzw. verkleinert.
neues Update: (Ich habe gestern den List-Komponenten implementiert)
Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.
//Erstelle einen Passwort-Input-Komponenten:
Input input3 = Input.create(panel.getContent(), panel.getLayout().getSlot(panel.getContent(), 3, 2), "password"); //arbeitet mit Layout Positionen
input3.attachLabel("Enter a Password"); //Setzt den LabelText
input3.setInputTypes(InputType.PASSWORD); //Setzt den InputType
input3.toggleRequired(true); //Setzt den Input-Komponenten als 'benötigt', d.h. man kann erst fortfahren, sobald man diesen ausgefüllt hat
//erstelle eine Seite:
Page page4 = Page.create();
//erstelle eine Liste:
List list = List.create(panel.getContent(), new Vector2D(126.0f, 147.0f), 388, 139, "list"); //mit fester Position und den Namen 'list'
list.addListItem("Click me", new ListItemInterface() {
@Override
public void onClick(List list, ListItem listItem) {
list.getPlayer().sendMessage("Clicked");
}
}); //füge ein Listen-Item hinzu mit dem Text 'Click me' und führe beim Klick auf dieses List-Item die Methode onDoubleClick aus (sendet dem Spieler die Nachricht 'Clicked')
list.addListItem("Double Click me", new ListItemInterface() {
@Override
public void onDoubleClick(List list, ListItem listItem) {
list.getPlayer().sendMessage("Double clicked");
}
}); //füge ein Listen-Item hinzu mit dem Text 'Double Click me' und führe beim Doppelklick auf dieses List-Item die Methode onDoubleClick aus (sendet dem Spieler die Nachricht 'Double clicked')
list.addListItem("Test 1", new ListItemInterface() {});
list.addListItem("Test 2", new ListItemInterface() {});
//... usw.
//füge den Komponenten zu einer Seite hinzu
page4.getComponents().add(list);
Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen.Weitere InformationenSchließen