suche OnPlayerReceiveHit public die man ganz einfach im script verwenden kann, danke
Beiträge von Anti.
-
-
Die genannte API verwendet ebenfalls den Zwischenschritt über PHP um die Sicherheit zu erhöhen und den Endbenutzern nicht direkt die Zugangsdaten zu servieren
Wie funktioniert das denn im PhP, muss ich das über über ne eigene kleine Website machen? Kenne mich 0 mit PHP aus
-
Du kannst die improv3d api nutzen, das ist direkt eine MySQL API für AHK.
wenn mysql in ahk unsicher ist würde ich das lieber nicht
-
Auf gar keinen Fall die MySQL-Daten per AHK verarbeiten!!!!
Das ist die schlechteste Idee, glaube mir. AHK ist viel zu einfach "decompile-bar" (eher gesagt auslesbar).Sende Queries nur über PHP und gib per echo ein Rückgabewert aus; verarbeite den dann zu deinem gewünschten Ergebnis.
Das hilft dir dabei:
Code
Alles anzeigenDownloadToString(url, encoding="utf-8") { static a := "AutoHotkey/" A_AhkVersion if (!DllCall("LoadLibrary", "str", "wininet") || !(h := DllCall("wininet\InternetOpen", "str", a, "uint", 1, "ptr", 0, "ptr", 0, "uint", 0, "ptr"))) return 0 c := s := 0, o := "" if (f := DllCall("wininet\InternetOpenUrl", "ptr", h, "str", url, "ptr", 0, "uint", 0, "uint", 0x80003000, "ptr", 0, "ptr")) { while (DllCall("wininet\InternetQueryDataAvailable", "ptr", f, "uint*", s, "uint", 0, "ptr", 0) && s>0) { VarSetCapacity(b, s, 0) DllCall("wininet\InternetReadFile", "ptr", f, "ptr", &b, "uint", s, "uint*", r) o .= StrGet(&b, r>>(encoding="utf-16"||encoding="cp1200"), encoding) } DllCall("wininet\InternetCloseHandle", "ptr", f) } DllCall("wininet\InternetCloseHandle", "ptr", h) return o }
Dann bräuchte ich halt Hilfe mit PHP und so wie ich mich mit PHP / MySQL in AHK auskenne habe ich keine Ahnung wie ich das anstellen soll
-
Moin,
da ich immer wieder sehe, wie viele Leute an den Basics von AutoHotkey scheitern, habe ich mir überlegt kurze Tutorials in Form von den klassischen "HowTo YouTube-Style", oder ausführlich in einem Beitrag mit Bildern etc. dokumentiert.
Wenn es aber nur zwei oder drei Leute interessiert würde es sich eigentlich nicht lohnen, deswegen verknüpfe ich das Ganze mal mit einer Umfrage.
Sollten es ~10+ Ja Stimmen bekommen, werde ich mir mal ein Format überlegen.Frohes Abstimmen und danke fürs Lesen!
MfG
Ist doch eine nette Idee aber es gibt doch schon eins mit ca. 31 Unterthemen?
@Renz, an deinem MySQL Tutorial wäre ich sehr interessiert, da ich hier noch keins finden konnte zu AHK und dringend damit Hilfe brauche
-
Hey,
ich habe vor einen Keybinder zu machen der für eine kleine Gruppe von Nutzern alles universal abspeichern muss.
Da ist mir eingefallen: MySQL!Also, mir geht es darum, dass ich z.B. Daten die über Befehle vom Keybinder eingegeben wurden, mit in eine MySQL-Datenbank gespeichert werden, sodass ich / der 2. Besitzer des Keybinders immer angucken kann. (Kein Keylogger oder sonstiges damit ich SA:MP-Accounts hacken kann).
Es ist privat für mich und ein paar Freunde damit wir so ingame besser untereinander kommunizieren können.
Dazu noch: Einen eigenen Keybinder-Chat, der es direkt an alle anderen Nutzer des Keybinders schickt sofern: Sie im Keybinder eingeloggt sind, GTA:SA:MP offen haben.
Könnte mir da jemand behilflich sein?
-
How to: Login Musik abspielen
Hallo, ich würde beim Login eine .mp3 Datei abspielen als Login-Musik, wie genau stelle ich das an? -
Das ist aber nicht der Parameter für die virtuelle Welt. Damit kann man einstellen, das sich das Fahrzeug nicht von alleine respawnt.
Achja stimmt, hab ich (glaub ich?) mit AddStaticVehicleEx verwechselt..
-
Eventuell bist du in einer anderen Virtuellen Welt?
Kann ja nicht sein da er beim Vehicle -1 angegeben hat ^^.
Da bin ich mir nicht 100% sicher: Sicher dass du keine argumente vergessen hast bei deinem create vehicle? Addsiren, respawntime kann ich nicht sehen, weiß nicht ob das bei PAWN bzw vehicles relevant ist
Edit: http://imgur.com/a/NWZXw
Code
Alles anzeigenocmd:v(playerid, params[]) { new vehicleid, color1, color2, str[128]; if(sscanf(params, "ddd", vehicleid, color1, color2)) SendClientMessage(playerid, 0xFF0019FF, "/v [Modelid] [Color1] [Color2]"); if(vehicleid == INVALID_VEHICLE_ID) return SendClientMessage(playerid, 0xFF0019FF, "Modelid gibts nicht"); new Float: curX, Float: curY, Float: curZ, Float: curR; GetPlayerPos(playerid, curX, curY, curZ); GetPlayerFacingAngle(playerid, curR); new makecar = CreateVehicle(vehicleid, curX+1, curY+1, curZ, curR, color1, color2, -1); PutPlayerInVehicle(playerid, makecar, 0); format(str,sizeof(str),"CAR: %d success!",makecar); SendClientMessage(playerid,COLOR_RED,str); return 1; }
Sicher, dass du kompiliert hast? Dass du auch CMD: richtig verwendest? Ich benutze es mit OCMD und es funktioniert super.
-
@Mar.cel mach mal ein /setint Befehl und teste verschiedene Interior ids aus
-
sieht gut aus, hab da noch ne frage zu SEtVehicleParams,
Wenn ich jetzt den motor an mache, muss ich dann jedes mal fragen, damit ich beim /motor den Lichstatus nicht beeinflusse:
Codeif(GetVehicleParamsEx(vehicleid, false, true, false, false, false, false, false)) { SetVehicleParamsEx(vehicleid, true, true, false, false, false, false, false)) } if(GetVehicleParamsEx(vehicleid, false, false, false, false, false, false, false)) { SetVehicleParamsEx(vehicleid, true, false, false, false, false, false, false)) }
-
Beispiel:
befehl: /motor (bla bla unwichtig)
if(HasKeys)
SetEngineState(true) oder was auch immer ^^.
Problem ist, durch den Array [î] was eigentlich die Row nummer ist bei dem LoadVehs, funktioniert das natürlich so nicht.Code
Alles anzeigenforward HasKeys(playerid, vehicleid); public HasKeys(playerid, vehicleid) { if(Vehicle[î][fFrak] == PlayerInfo[playerid][pFrak]) { return 1; } else if(Vehicle[î][fOwner] == PlayerInfo[playerid][pName]) { return 1; } else if(Vehicle[î][fSecond_Owner] == PlayerInfo[playerid][pName]) { return 1; } return 0; }
-
Falls du mir schon vorher geantwortet hast, tut mir leid, muss ich wohl übersehen haben. Bins eigentlicht gewohnt eine Nachricht wegen "Zitat" oder Markierung zu kriegen..
Ich verstehe aber nicht ganz wie ich das später anwenden soll, ich habe ja verstanden wie du es meinst, aber um an Ende dann mit dem Array [î] auch einstimmig zu sein, muss ich ja jedes mal eine Schleife machen die die rows aufzählt und dann von jeder Car ID die carSID überprüft, dies habe ich versucht aber es kamen mehrere Errors, könntest du mir ein Beispiel zeigen wie ich das anwende?
-
@N1co es wird ja geladen aber nicht auf dem richtigen array gespeichert, @Jeffry könntest du mir vielleicht helfen? Würde gerne Fahrzeuge aus der Datenbank laden und dann ganz einfach bei befehlen abfragen, ich weiß aber nicht wie:
Code
Alles anzeigenstock LoadVehs() { new rows,fields; new Cache:Vehs = mysql_query(handle, "SELECT * FROM `fahrzeuge`",true); cache_get_data(rows,fields); for(new i=0;i<rows;i++) { Vehicle[i][VID] = cache_get_field_content_int(i, "id"); Vehicle[i][fModel] = cache_get_field_content_int(i, "modelid"); Vehicle[i][fSposX] = cache_get_field_content_float(i, "sPos-X"); Vehicle[i][fSposY] = cache_get_field_content_float(i, "sPos-Y"); Vehicle[i][fSposZ] = cache_get_field_content_float(i, "sPos-Z"); Vehicle[i][fSposO] = cache_get_field_content_float(i, "sPos-O"); Vehicle[i][fColor1] = cache_get_field_content_int(i, "color_1"); Vehicle[i][fColor2] = cache_get_field_content_int(i, "color_2"); Vehicle[i][fSirene] = cache_get_field_content_int(i, "sirene"); Vehicle[i][fFrak] = cache_get_field_content_int(i, "fraktion_id"); Vehicle[i][fFuel] = cache_get_field_content_int(i, "tank"); cache_get_field_content(i,"besitzer", Vehicle[i][fOwner],handle,64); cache_get_field_content(i,"lastdriver", Vehicle[i][fLastDriver],handle,64); cache_get_field_content(i,"2besitzer", Vehicle[i][fSecond_Owner],handle,64); cache_get_field_content(i,"plate", Vehicle[i][fPlate],handle,32); SetVehicleParamsEx(i, false, false, false, false, false, false, false); new cCarID = CreateVehicle(Vehicle[i][fModel],Vehicle[i][fSposX],Vehicle[i][fSposY],Vehicle[i][fSposZ],Vehicle[i][fSposO],Vehicle[i][fColor1],Vehicle[i][fColor2], CAR_RESPAWN_TIME,Vehicle[i][fSirene]); new numberplate[256]; format(numberplate, sizeof (numberplate), "%s %d", Vehicle[i][fPlate], Vehicle[i][VID]); SetVehicleNumberPlate(cCarID, numberplate); if (Vehicle[i][fFrak] == 3) { if (Vehicle[i][fModel] == 560) { SireneSAMD[i] = CreateObject(19419, 0.00, 0.20, 0.85, 0.00, 0.00, 0.00, 50.0); AttachObjectToVehicle(SireneSAMD[i], cCarID, 0.00, 0.00, 0.81, 0, 0, 0); } } } cache_delete(Vehs); print("Vehicles Spawned"); return 1; }
-
Verstehe nicht was du meinst.Es wird abgefragt, ob die VehicleID zu der FraktionID gehört.
Wenn ja, dann soll abgefragt werden, ob der Spieler nicht zur FraktionID gehört.
Oder denk ich falsch?Ja aber ich denke du hast mich von Anfang an misverstanden, ich würde gerne bei LoadVehs eine Funktion haben die den jeweiligen vehicle IDs halt diese Infos hinzufügt bzw jedes Auto wird mit der Vehicle ID geladen oder halt eine Lösung wie ich das am besten regeln kann
-
Ich kann das leider nicht testen aber ich würde das ganz einfach so machen:
Code
Alles anzeigenif(strcmp(cmd, "/motor", true) == 0) { new car = GetPlayerVehicleID(playerid); if(Vehicle[car][fFrak] == FRAKID ) //Die ID der Fraktion eintragen. { if(!(pInfo[playerid][frak] == FRAKID)) //Die ID der Fraktion eintragen, die das Fahrzeug benutzen darf. { SendClientMessage(playerid, FARBE, "Du hast keine Schlüssel!"); return 1; } } }
Schön wärs wenn es so einfach wäre, aber der Array ist ja der "row count" bei meinem LoadVehs, also wird das nicht funktionieren, da der row count und die vehicle ID nicht identisch sind
-
@N1co sowas habe ich ja noch gar nicht, mir gehts erstmal um die Frakcars, privatcars finde ich schon ne einfache Lösung
-
@N1co ich weiß jetzt nicht wie das mit meinem Vehicle Load System zusammenarbeiten könnte
-
hey habe letztens ein MySQL load vehicle system von jemandem bekommen, nun frage ich mich wie kann ich da am besten sachen abfragen wie z.B:
Spieler steigt in ein Fahrzeug und möchte /motor oder /lock eingeben, überprüfe ob: Der Spieler der Besitzer ist oder zu der Fraktion des Fahrzeuges gehört.
Load code:
Code
Alles anzeigenstock LoadVehs() { new rows,fields; new Cache:Vehs = mysql_query(handle, "SELECT * FROM `fahrzeuge`",true); cache_get_data(rows,fields); for(new i=0;i<rows;i++) { Vehicle[i][VID] = cache_get_field_content_int(i, "id"); Vehicle[i][fModel] = cache_get_field_content_int(i, "modelid"); Vehicle[i][fSposX] = cache_get_field_content_float(i, "sPos-X"); Vehicle[i][fSposY] = cache_get_field_content_float(i, "sPos-Y"); Vehicle[i][fSposZ] = cache_get_field_content_float(i, "sPos-Z"); Vehicle[i][fSposO] = cache_get_field_content_float(i, "sPos-O"); Vehicle[i][fColor1] = cache_get_field_content_int(i, "color_1"); Vehicle[i][fColor2] = cache_get_field_content_int(i, "color_2"); Vehicle[i][fSirene] = cache_get_field_content_int(i, "sirene"); Vehicle[i][fFrak] = cache_get_field_content_int(i, "fraktion_id"); Vehicle[i][fFuel] = cache_get_field_content_int(i, "tank"); cache_get_field_content(i,"besitzer", Vehicle[i][fOwner],handle,64); cache_get_field_content(i,"lastdriver", Vehicle[i][fLastDriver],handle,64); cache_get_field_content(i,"2besitzer", Vehicle[i][fSecond_Owner],handle,64); cache_get_field_content(i,"plate", Vehicle[i][fPlate],handle,32); SetVehicleParamsEx(i, false, false, false, false, false, false, false); new cCarID = CreateVehicle(Vehicle[i][fModel],Vehicle[i][fSposX],Vehicle[i][fSposY],Vehicle[i][fSposZ],Vehicle[i][fSposO],Vehicle[i][fColor1],Vehicle[i][fColor2], CAR_RESPAWN_TIME,Vehicle[i][fSirene]); new numberplate[256]; format(numberplate, sizeof (numberplate), "%s %d", Vehicle[i][fPlate], Vehicle[i][VID]); SetVehicleNumberPlate(cCarID, numberplate); if (Vehicle[i][fFrak] == 3) { if (Vehicle[i][fModel] == 560) { SireneSAMD[i] = CreateObject(19419, 0.00, 0.20, 0.85, 0.00, 0.00, 0.00, 50.0); AttachObjectToVehicle(SireneSAMD[i], cCarID, 0.00, 0.00, 0.81, 0, 0, 0); } } } cache_delete(Vehs); print("Vehicles Spawned"); return 1; }
-
Edit: (Einfach Frage): Wie mache ich am besten ein Befehl wo man Part of Name und/oder ID verwenden kann, habe ich nie verstanden.