Is der Streamer von Icognito, der is soweit ich weiss am meisten verbreitet. Einfach alle Variablen ersetzen und es dürfte kein Fehler auftauchen, so solltest du es auch mit allen Callbacks machen. Und du kannst es ja ma ausprobieren Variablen wegzulassen, vllt habe ich was von PAWN nicht mitbekommen, dass man Variablen doch in der Syntax des Callbacks definieren kann, kannat ja dann schreiben ob es auch ohne DrawDistance und ohne StreamDistance klappt
@Pinguin: Du musst die Variablen auch ersetzen und Callback hat niemals als Syntax "1,)", das Komma ist auch falsch, wenn müsste dahinter etwas folgen mach es zB so:
also muss man jeden Wert in diesem Callback ersetzen außer die letzten beiden, da diese Standartwerte haben (glaube ich, habe nicht viel mit PAWN am Hut).
format(query,sizeof(query),"%s,Tode='%i",query,SpielerInfo[playerid][pTode]); Zu format(query,sizeof(query),"%s,Tode='%i'",query,SpielerInfo[playerid][pTode]);
Auch hier ist noch einmal der Fehler:
format(query,sizeof(query),"%s,ALevel='%i",query,SpielerInfo[playerid][pALevel]); Zu format(query,sizeof(query),"%s,ALevel='%i'",query,SpielerInfo[playerid][pALevel]);
Deine Textdraws gefallen mir sehr gut, also dass du mal was neues ausprobierst Ich finde die Farbauswahl zwar nicht so schön bzw. bei dem 'Waiting for players...' ist das Popup zum Hintergrund mit der Farbwahl nicht so gut ausgesucht aber da du ja auf Star Wars Like gehst und die DUNKLE Macht halt die Farbe Schwarz hat, ist das verständlich.
Ja genau das aus dem Filterscript suche ich, wie man die Objekte einfach richtig ausgerichtet an ein anderes Objekt zu attachen, damit man so "ein Haus" zu moven, also in ein Objekt, was alle anderen Objekte an sich attached hat, sodass es so aussieht, als würde man das ganze Haus verschieben Danke, mal gucken obs klappt :))
Ich attache sie aneinander, um den GUI der EditObject Funktion zu nutzen, um die Objekte beliebig zu verschieben und dann, wenn man speichert die Position zu speichern. Das ist also zum Verschieben gedacht (http://wiki.sa-mp.com/wiki/EditObject)
(Davor habe ich die Objekte zum Objekt hinzuberechnet, aber so ists einfacher mit der Rotation und bessere Performance, da nicht immer noch extra was berechnet wird, sondern nur über den GUI)
IPrototypeI : Danke, mal gucken was ich brauche :), Gerade da es ein Hausbausystem ist, muss ich es so machen :p Damit ich es nutzen kann, zB zum platzieren des Hauses? Es soll ja dynamisch sein, bis jetzt kann jeder Spieler ein Haus erstellen, das wird auch gebaut und ist immer da, man kann auch ein kaufbar machen, nur das Problem ist, dass ich die Rotationsberechnung brauche, nicht die Koordinaten der Location Die habe ich, indem ich von jeder Achse (x,y,z) den Mittelpunkt ausrechne, den Unterschied von jedem Objekt berechne (einfache Subtraktion) und dann den Unterschied zu dem Objekt hinzufüge :o
Danke schonmal 123marvin123 und IPrototypeI Aber wie soll ich das anlegen? Ich lade die Objekte dynamisch, das ist ein Haussystem. Das heißt ich habe Dateien, in denen Objekte angegeben sind, die ich dynamisch lade und so initialisiere, dann habe ich ja die Daten in einem Array. Platzieren, speichern und laden geht ja, nun will ich aber die Rotation noch angeben... Damit es benutzerfreundlich ist, habe ich den GUI von editObject genommen, nun muss ich aber halt die Rotationsänderung iwie angeben, wenn ich die Objekte so an einen anderen Ort platziere, muss ich das nicht. Das wundert mich nämlich und da es dynamisch ist: wie kann ich das dynamisch machen und wie berechne ich das ?
Wenn ich nun jedes Objekt zu einem anderen Objekt attache ( mit der gleichen Rotation ), dann gibts diesen Fehler:
Ich denke, das passiert, da man bei AttachObject den Unterschied zwischen den Rotationen angeben muss, also zwischen Objekt 1 und Objekt 2. Doch ich habe dem Mittelobjekt (hier Objekt 2) die Rotation (0, 0, 0) gegeben, dann dürfte dort kein Unterschied sein, warum wird es dennoch falsch dargestellt?
Halt Fragen, die du aus keinem Forum oder Bericht entnehmen kannst, zB Erfahrungen der Einzelnen oder sich Tipps an Land ziehen, zB zu den Aufstiegschancen, wie / womit man vielleicht am besten anfängt und wie man am schnellsten zu seinem Ziel kommt (soweit ich weiß gibt es gehobenen Dienst usw...). Das heißt man sollte schon richtig anfangen damit man auch das Zeil erreichen kann, bei den Sachen würde ich mich beraten lassen.
Sonst so was man noch können sollte, was vielleicht so in Bremen los ist, was da die meisten Vorfälle sind usw. Halt auf die Erfahrungen in der Region bezogen (was dich ggf. erwartet)
Jeffry: Ja, damit muss man rechnen, wenn man mit solchen Sachen arbeitet, er hat ja nur gefragt, wie man es machen kann :p Man könnte ja einen maximal Betrag machen und checken ob der Spieler im Auto ist und maximales Geld eintragen, das man verdienen kann und dem Admin ne Nachricht senden, der es erlauben muss, dass der Spieler das Geld bekommt usw. aber frisst alles Performance und so, am besten wäre wirklich ein eigenes System
//edit Außerdem kann man auch mit einem AntiCheat der Sache vorbeugen, halt immer checken, ob sie die x/y/z Koordinaten schnell verändern -> Hohe Geschwindigkeit und dann halt kein Geld geben wegen Cheat oder so, falls die Geschwindigkeit halt unmöglich ist, normal zu erreichen.
if(PI[playerid][job] == 16)
{
//Geld in eine globale Variable geben, die vom Spieler abhängig ist, wie in einem Enum für einen Spieler
EnableStuntBonusForPlayer(playerid, 1);
//Dann onPlayerUpdate, falls sich das Geld (der Wert der Variable) ändert (ein Unterschied zwischen dem Geld das man hat und dem Geld in dem Enum besteht) und isStuntBonusEnabled -> Den Geldunterschied bekommen und das Geld wieder abziehen und über den Server bearbeiten
}
Musst aber aufpassen, sobald der StuntBonus aktiviert ist und du dem Spieler iwie anders Geld gibst, berechnet er es als Standbonus, also mache sowas wie ein PlayerState und setze ihn/frage ihn ab, um Konflikten aus den Weg zu gehen
Die Normale Munition hat halt nichts Spezielles, macht aber generell nur 50% des normalen Schadens, also wenn sie normalerweise 36Schaden macht, macht sie mit dem System nur 18 Schaden
Brandmunition gibt den Gegner über 7sek jede Sekunde 2Schaden. Explosivmunition, denke das ist klar Panzerbrechende durchdringt den Panzer / den Armour des Gegners und ignoriert so die Rüstung. Spezialmunition macht 120% Schaden. Diese habe ich eingefügt, falls jmd bzw ich noch ein Eventsystem einbaue, wo die Munition ganz andere Sachen bewirken kann, halt als Füllmittel. Und damit man es auch nutzen kann, habe ich der Munition 120% Schaden gegeben. -----------------------------
Nemesus: Danke ! Würdet ihr es denn überhaupt benutzen, da es auf Shoebill ist?
Dieses Waffensystem ist sehr speziell, da man bei jeder Pistole 5 Munitionsarten zur Auswahl hat. Munitionsarten:
Munitionsnamen
Normale Munition
Brandmunitionent
Explosivmunition
panzerbrechende Munition
Spezialmunition
Kleines Intro:
Man kann die Munition in jeder Pistole mit der Taste [N] (kurz gedrückt) wechseln. Sobald man die Taste [N] ungefähr 1sek gedrückt hält, gelangt man in das Waffeninventar bzw. den integrierten Waffenshop. Dort kann man alle Waffen auswählen bzw. kaufen und auch die Munition nachladen / kaufen. Die gekauften Waffen muss man nicht mehr bezahlen, nur noch die Munition. Zudem gibt es Animationen beim Nachladen oder wechseln der Waffen, sodass man eine kleine Nachladedauer hat und nicht iwie SAMP Bugs ausnutzen kann.
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.
Andere Infos: Speicherart: MySQL (wird selbst erstellt) Programmiersprache: Java (Shoebill) Art des Systems: Plugin für das Shoebill Plugin -> Warum Shoebill / Java?
Shoebill bzw. Java hat bessere Performance, da es Daten schneller verarbeitet als Pawn. Das war mir sehr wichtig, da nach / bei jedem Schuss etwas berechnet wird!
Java ist "kommende" Programmiersprache, zB Android Applikationen (Apps) sind auf Java geschrieben.
Java bietet für mich mehr Möglichkeiten und besseren Support
Und ich kann meine Lieblings-IDE / meinen Lieblings-Editor Eclipse nutzen, schöne Autovervollständigung
Der Schaden der Explosionen, die durch Waffen mit Explosivmunition ausgelöst wurden, wurde auch angepasst. Zudem ist der Schaden / Preis jeder Munitionsart unterschiedlich
GitHub: https://github.com/Alf21/weapon-system.git Ein Dank an @123marvin123 (für die Hilfe, einen bösen Fehler zu finden, für bessere Struktur und Performance und für die Bereitsstellung der repo) und an BloodAngelHD (für das Video)!
Installation: Entweder von GitHub selbst downloaden und mit Maven builden oder folgendes in eure pom.xml einfügen (in den dependencies):
Achtung!: Keine Neuveröffentlichungen oder ändern der Credits. Ausnahme: Falls jemand den Code braucht um das als Filterscript / Include zu schreiben (Verweis auf diesen Beitrag)
//Um Waffen zu gebengivePlayerWeapon(player, weaponId, ammo) //Um eine Waffe komplett neu zu ladengivePlayerNewWeapon(player, weaponId, ammo) //Um eine Waffe mit den alten Munitionsdaten usw. zu laden//Um Muni zu bekommen:getWeaponAmmo(player, weaponId)getFireWeaponAmmo(player, weaponId)getExplosiveWeaponAmmo(player, weaponId)getHeavyWeaponAmmo(player, weaponId)getSpecialWeaponAmmo(player, weaponId)//Um Muni zu setzensetWeaponAmmo(player, weaponId, ammo)setFireWeaponAmmo(player, weaponId, ammo)setExplosiveWeaponAmmo(player, weaponId, ammo)setHeavyWeaponAmmo(player, weaponId, ammo)setSpecialWeaponAmmo(player, weaponId, ammo)//Um die geladene Munitionsart zu bekommen:getAmmoState(player, weaponId)//Um die geladene Munitionsart zu setzen (Achtung, sicher sein, dass man auch die jeweilige Munition besitzt)setAmmoState(player, weaponId, ammoState)//Um zu checken, ob eine Waffe ausgewählt ist / getragen wirdisSelectedWeapon(player, weaponId)//Um Waffe ausgewählt / getragen zu setzensetSelectedWeapon(player, weaponId, bool)//Um zu checken, ob eine Waffe verfügbar / gekauft wurdeisAbleWeapon(player, weaponId)//Um Waffe gekauft / verfügbar zu setzensetAbleWeapon(player, weaponId, bool)//Um alle Waffen eines Slots als nicht selected bzw nicht getragen / ausgewählt zu markierenunselectWeapons(player, slot)
Es tut mir leid, falls welche meckern, dass es kein professioneller Code ist. Es ist mein erstes Plugin in Java und ich "lerne" noch nicht so lange Java, aber ich hatte eine Idee und wollte diese verwirklichen. Updates werden kommen. Tipps oder Verbesserungen sind immer erwünscht.
die Berechnung des Schadens bei einer Explosion ist nur auf die x-Koordinaten belegt -> man schießt in die Höhe und bekommt Schaden, egal welche Distanz (es muss ein Aufprall geben, zB an einem Objekt, sonst gibts keine Explosion ^^)
- bessere Performance- neues Video -> Weaponshop + Schadensdemonstration- Anticheat- mehr Animationen- kleines Fixes, falls es noch Bugs gibt, bitte reporten !- vllt. als Filterscript für Pawn- Spezialmunition mit bestimmten Effekt- Eventsystem- andere Ideen- Updater
Mir gefällt die Farbabstimmung auch überhaupt nicht bzw. die Wände, das sieht sehr langweilig oder zu krass aus, kann mich nicht entscheiden, jeden Falls sticht das Lila in die Augen, da wäre ne bessere Textur und Abwechslung gut
Generelle Frage: Ich arbeite an nem Waffensystem, habe Animationen beim Waffenwechseln als Ausweg reingepackt, aber hatte eigentlich was anderes vor: Ich habe bei Mauzen gesehen, dass er es ohne Texdraws geschafft hat, die geladene Munitio / Ammo auf einen bestimmten Wert zu setzen... Wie kann ich das realisieren? Es gibt keine Funktion / Möglichkeit nach meinem Wissen, die geladene Munition / Ammo zu setzen ?? Damit meine ich nicht die gesamte Munition, sondern halt wie gesagt, die geladene, bei der es, wenn diese alle ist, automatisch eine Nachladeanimation gibt -> zB: 200 / 30 -> 30 geladene Muni von 230 (200 vorrätige Muni).
Hoffe ich konnte mich richtig ausdrücken (Brauche das, um die alte Muni wieder zu setzen, sobald ich auf die alte Waffe wechsle).
Achso, naja habe halt nur den einen Text gelesen in der Präsentation, worauf man verzichten muss, sorry, bin an meinem kleinem Handy mit schlechtem Internet und da will ich mir nicht den Quellcode antun Dann danke für die Info/Ergänzung @BlackAce :p