Im Gegensatz zu den meisten Bobs habe ich von Anfang an selbst einen Gamemode gescriptet und immer Beispiel angeschaut, und dann versucht, selbst was nach dem Konzept der Beispiele zu machen.
Beiträge von Double-O-Seven
-
-
Neuste Version: JunkBuster 11
-
So wie oben ist falsch.
So geht es:
new Float:health;
GetPlayerHealth(playerid, health);
health += 50.0; // Oder wie auch immer du es erhöhen willst.
if (health > 100.0)
health = 100.0;
SetPlayerHealth(playerid, health); -
#if !defined SPRINTF_BUFFER_LINES
#define SPRINTF_BUFFER_LINES (8)
#endif#if !defined SPRINTF_BUFFER_SIZE
#define SPRINTF_BUFFER_SIZE (1024)
#endifnew stock
sprintf_buf[SPRINTF_BUFFER_LINES][SPRINTF_BUFFER_SIZE],
sprintf_bufidx; // Ohne diesen Index, kann man sprintf jeweils nur einmal als Argument einer Funktion verwenden.
#define sprintf(%0) \
(sprintf_bufidx = (sprintf_bufidx + 1) % sizeof sprintf_buf, format(sprintf_buf[sprintf_bufidx], sizeof sprintf_buf[], %0), sprintf_buf[sprintf_bufidx])Diese Funktion ist unglaublich nützlich!
Nie mehr unzählige nervige Lines mit new string[...]; format(...) und all dem schreiben!Einfach wie folgt anwenden:
SendClientMessage(playerid, COLOR_RED, sprintf("Hallo %s, deine ID ist %d!", PlayerName[playerid], playerid)); -
Wann es jemand knackt, wär es nett, wenn er mir per PM oder so schreibt, was er genau gemacht hat.
Was man bekommt?
Das gute Gefühl, dass man es drauf hat.@iFeet:
Und das wäre wie? -
Hi.
Da ich ein wenig gegen Geld scripten möchte, aber gleichzeitig nicht betrogen werden möchte und auch zeigen möchte, dass ich meine Arbeit erledige, habe ich mir ein kleines Anti-Diebstahlscript gebastelt.
Dieses Script liest jeweils eine 8.00 Kilobyte grosse Datei, verifiziert sie und updatet diese.
Die Datei ist für Menschen einfach ein sehr langer Hexadezimalstring.Ich nenne die generierte Datei Signatur.
Informationen:
- Der darin enthaltene String wurde mehrfach encodiert.
- Die Datei ist gleichzeitig Schlüssel und Tor: Das heisst, sie enthält die Anleitung dafür, wie man sie lesen muss, um sie zu verifizieren. Nur wenn sie richtig gelesen wird und das gelesen auch Sinn macht, wird das Tor geöffnet, bzw. bleibt offen. Wobei das Tor eine Metapher für den Server ist.
- Der Script enthält eine einzige public-Funktion. Ruft man diese auf, schiesst man sich selbst ins Bein, denn diese ist nur dazu da, um die aktuelle Signatur zu verifizieren und dann entweder Server schliessen, oder weiterlaufen zu lassen.
- Wird an der Datei herumgespielt, wird sie sehr wahrscheinlich ungültig.
- Die Signatur läuft am 30.1.2012 um etwa 20:00 ab! Danach ist sie für immer ungültig.
- Der Script nimmt keinen Kontakt zur Aussenwelt auf. Also kein Gebrauch von HTTP(...).
- Verwendung von Unix-Timestamps.
Wieso poste ich das nun hier?
Nun, mich würde es interessieren, ob irgendjemand einen Weg findet, das ganze zu umgehen.
Wie? Das ist jedem überlassen, der es versuchen möchte.
(Respekt, wenn jemand das FS dekompiliert (in PAWN-Assembly zurückverwandelt und danach auch noch kapiert, was 2000 Zeilen Assembly-Code genau machen... sofern das möglich ist, sollte eigentlich...)
Wichtig:
Da dies nicht wirklich ein Release ist, sehe ich keinen Sinn darin, den Source Code bereitzustellen, dann wär das ganze sowieso sinnlos.
Download:
http://www.sendspace.com/file/7tihwv
Einfach in die entsprechenden Ordner entpacken und Filterscript laden.Brauch es so einen Aufwand?
kA, man weiss ja nie wie dreist die Diebe in der SA-MP-Szene sind... je nach Script braucht man ja nichtmal eine .PWN...Vielleicht wünschen sich gewisse Leute sogar einen solchen Schutz!
Ich habe hier schon vermehrt von Leuten gelesen, welche eine .amx vor Erhalt des Geldes weitergegeben haben und dann von "Käufer" nie mehr was gehört haben.Womöglich könnte ich eine Open Source Public Version davon erstellen, welche selbst dann ewig brauchen würde, bis ein Computer sie nach Plan decodiert hat.
Interesse? Testet es, melde euch hier oder schreibt mir eine PM.
~dos
-
Eigentlich ist es ressourcenfreundlicher wenn er den Zeitquatsch rausmacht.
Bitte, solch ein simpler Timer verbraucht vielleicht 1 / 10'000 Sekunden...Timer werden überbewertet...
-
Er will es ja verzögert haben...^^
-
BSN(playerid, cost, Float:health);
public BSN(playerid, cost, Float:health)
{
new Float:oldhealth;
SendClientMessage(playerid, 0x0037FFFF, "Guten Appetit!");
GetPlayerHealth(playerid, oldhealth);
oldhealth += health;
if (oldhealth > 100.0)
oldhealth = 100.0;
SetPlayerHealth(playerid, oldhealth);
GivePlayerMoney(playerid, -1 * cost);
}SetTimerEx("BSN", 1000 * 2, false, "iif", playerid, 10, 15.0);
-
stock GetHausData(id, p_HausInteriors:data)
{
return _:int[id][data];
}Für X, Y und Z benutzt du es so:
new Float:x = Float:GetHausData(id, i_x);
new Float:y = Float:GetHausData(id, i_y);
new Float:z = Float:GetHausData(id, i_z);
new interior = GetHausData(id, i_int);Du brauchst also nur eine Funktion (wobei die eigentlich garnicht notwendig wäre... du könntest einfach direkt auf den Array zugreifen...).
-
Hört auf hier rein zu schreiben. Es ist genau diese Aufmerksamkeit, die er so nötig hat!
-
Lass dir ein P*mmel wachsen du Pfe*fe.
Ernsthaft, hast du in deinem Leben nichts besseres zu tun, als anderen auf den Sack zu gehen?
Was für Komplexe hast du?
Und du glaubst ernsthaft, dass du eine Entbannung irgendwo erzwingen kannst? -
#define global%0(%1) \
forward %0(%1); \
public %0(%1)//UpdatePVarInt(playerid, varname[], value)
#define UpdatePVarInt(%0,%1,%2) \
SetPVarInt((%0), (%1), GetPVarInt((%0), (%1)) + (%2))Anstatt immer forward und public schreiben zu müssen, einfach global.
Und wenn man UpdatePVarInt(playerid, "Tode", 1) schreibt, wird 1 dazu gezählt. -
SetPVarInt(playerid, "Tode", GetPVarInt(playerid, "Tode") + 1);
//EDiT: War einer schneller.
-
Du bist wohl ein gieriger Kerl. Erst einen Tag verlängern, dann Auktion abbrechen weil dir die 50 Euro wohl nicht genug sind...
Wer zahlt bitteschön 40 Euro für ein 12k Zeilen Script, wenns nichtmal exklusiv ist? -
Du meinst dynamisch erstellbare Fraktionen?^^
-
Zugegeben:
Das "unmöglich" ist natürlich hauptsächlich Werbung.
Und ich will auch nicht überheblich klingen, ich bin mir sicher, dass jeder mit Ahnung von Mathematik und guten Programmierkenntnisse, dass Zeug was ich schon gemacht habe, auch hinkriegen würde.Was das "unmöglich" aber bedeuten soll, ist, dass ich Aufträge suche, welche einen relativ grossen Aufwand an Programmierarbeit geben, und zwar nicht im Bezug auf Anzahl der Zeilen, sondern im Bezug auf Entwurf der dafür notwendigen Algorithmen.
Das Beste Beispiel dafür ist schon oben angegeben:
Double-O-Ship, welches entstanden ist, bevor man Objekte an Objekte anhängen und auf Objekten surfen konnte.
Ein anderes Beispiel ist Double-O-Files 2, ebenfalls oben angegeben. Es mag für die meisten langweilig und stinknormal aussehen.
Doch der Algorithmus, der dahinter steckt, macht es zu einem der schnellsten Dateisystem, welches in der SA-MP-Szene gibt.Ich habe diesen Thread jetzt mal gestartet, um Inspiration zu finden. Vielleicht kommt ja irgendjemand, mit einer verrückten Idee, aber hat absolut keine Ahnung, wie er das umsetzen soll.
Nein, ich habe nicht vor, eure Ideen zu klauen, ich habe nichtmal einen Server.Mitte Februar, werde ich vielleicht mal einen kleinen Konzeptgamemode vorstellen, der (technische) Features beinhaltet, welche so noch nicht wirklich zu sehen waren (meines Wissensstandes nach zumindest).
Aber das ist spielt jetzt keine Rolle. -
007 gehört zu den besten Scripter Deutschlands...
Das stimmt so nicht. Ich bin Schweizer. -
Ist die CPU-Auslastung für Bots, welche per Playback abgespielt werden eigentlich signifikant höher als bei Bots, welche einfach nur rumstehen?
-
Nehmen wir mal an, man möchte 100 Slots für Spieler, aber man braucht noch eine unbestimmte, sich in der Laufzeit ändernde NPC-Zahl.
Wenn man dem Server ja maxplayers 100 angibt, was wohl der Fall wäre, wenn man einen 100 Spielerserver kauft, verringert sich die Anzahl der verfügbaren Slots für richtige Spieler ja, also mit 50 NPCs gehts runter auf 50 Slots für normale Spieler.
Wenn man also immer 100 Slots haben möchte für normale Spieler und dann noch 50 NPCs, muss man dann bei euch einen Server mit 150 Slots kaufen?